Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1741)

Unified Diff: storage/browser/blob/blob_data_handle.h

Issue 2055053003: [BlobAsync] Disk support for blob storage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments, simplifications Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: storage/browser/blob/blob_data_handle.h
diff --git a/storage/browser/blob/blob_data_handle.h b/storage/browser/blob/blob_data_handle.h
index 3f4529346b103cc0149d0a507494011e867153dc..38053b357f9b7b5e2d8c2d1527ecdfb20a3893c7 100644
--- a/storage/browser/blob/blob_data_handle.h
+++ b/storage/browser/blob/blob_data_handle.h
@@ -5,6 +5,7 @@
#ifndef STORAGE_BROWSER_BLOB_BLOB_DATA_HANDLE_H_
#define STORAGE_BROWSER_BLOB_BLOB_DATA_HANDLE_H_
+#include <limits>
#include <memory>
#include <string>
@@ -39,6 +40,8 @@ class FileSystemContext;
class STORAGE_EXPORT BlobDataHandle
: public base::SupportsUserData::Data {
public:
+ static constexpr uint64_t kUnknownSize = std::numeric_limits<uint64_t>::max();
+
// True means the blob was constructed successfully, and false means that
// there was an error, which is reported in the second argument.
using BlobConstructedCallback =
@@ -56,6 +59,10 @@ class STORAGE_EXPORT BlobDataHandle
// Must be called on IO thread.
bool IsBroken() const;
+ // Returns the broken reason if this blob is broken.
+ // Must be called on IO thread.
+ IPCBlobCreationCancelCode GetBrokenReason() const;
+
// The callback will be run on the IO thread when construction of the blob
// is complete. If construction is already complete, then the task is run
// immediately on the current message loop (i.e. IO thread).
@@ -77,6 +84,9 @@ class STORAGE_EXPORT BlobDataHandle
const std::string& content_type() const;
// May be accessed on any thread.
const std::string& content_disposition() const;
+ // May be accessed on any thread. In rare cases where the blob is created
+ // as a file from javascript, this will be kUnknownSize.
+ uint64_t size() const;
// This call and the destruction of the returned snapshot must be called
// on the IO thread. If the blob is broken, then we return a nullptr here.
@@ -94,6 +104,7 @@ class STORAGE_EXPORT BlobDataHandle
BlobDataHandleShared(const std::string& uuid,
const std::string& content_type,
const std::string& content_disposition,
+ uint64_t size,
BlobStorageContext* context);
private:
@@ -106,6 +117,7 @@ class STORAGE_EXPORT BlobDataHandle
const std::string uuid_;
const std::string content_type_;
const std::string content_disposition_;
+ const uint64_t size_;
base::WeakPtr<BlobStorageContext> context_;
DISALLOW_COPY_AND_ASSIGN(BlobDataHandleShared);
@@ -115,6 +127,7 @@ class STORAGE_EXPORT BlobDataHandle
BlobDataHandle(const std::string& uuid,
const std::string& content_type,
const std::string& content_disposition,
+ uint64_t size,
BlobStorageContext* context,
base::SequencedTaskRunner* io_task_runner);

Powered by Google App Engine
This is Rietveld 408576698