| 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..04c2dbb6a334db6040ca579dc4ad137d0c0ba219 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,10 +40,7 @@ class FileSystemContext;
|
| class STORAGE_EXPORT BlobDataHandle
|
| : public base::SupportsUserData::Data {
|
| public:
|
| - // True means the blob was constructed successfully, and false means that
|
| - // there was an error, which is reported in the second argument.
|
| - using BlobConstructedCallback =
|
| - base::Callback<void(bool, IPCBlobCreationCancelCode)>;
|
| + static constexpr uint64_t kUnknownSize = std::numeric_limits<uint64_t>::max();
|
|
|
| BlobDataHandle(const BlobDataHandle& other); // May be copied on any thread.
|
| ~BlobDataHandle() override; // May be deleted on any thread.
|
| @@ -56,13 +54,17 @@ 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.
|
| + BlobStatus GetBlobStatus() 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).
|
| // Must be called on IO thread. Returns if construction successful.
|
| // Calling this multiple times results in registering multiple
|
| // completion callbacks.
|
| - void RunOnConstructionComplete(const BlobConstructedCallback& done);
|
| + void RunOnConstructionComplete(const BlobStatusCallback& done);
|
|
|
| // A BlobReader is used to read the data from the blob. This object is
|
| // intended to be transient and should not be stored for any extended period
|
| @@ -77,6 +79,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 +99,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 +112,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 +122,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);
|
|
|
|
|