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); |