| 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 30412415f76e68fb019f81a29b99743b51f8dd47..8eba2c61fdaeb85f84ca1d6913450ad4d2158f28 100644
|
| --- a/storage/browser/blob/blob_data_handle.h
|
| +++ b/storage/browser/blob/blob_data_handle.h
|
| @@ -8,6 +8,7 @@
|
| #include <string>
|
|
|
| #include "base/memory/ref_counted.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/supports_user_data.h"
|
| #include "storage/browser/storage_browser_export.h"
|
| @@ -19,7 +20,9 @@ class SequencedTaskRunner;
|
| namespace storage {
|
|
|
| class BlobDataSnapshot;
|
| +class BlobReader;
|
| class BlobStorageContext;
|
| +class FileSystemContext;
|
|
|
| // BlobDataHandle ensures that the underlying blob (keyed by the uuid) remains
|
| // in the BlobStorageContext's collection while this object is alive. Anything
|
| @@ -36,15 +39,25 @@ class STORAGE_EXPORT BlobDataHandle
|
| BlobDataHandle(const BlobDataHandle& other); // May be copied on any thread.
|
| ~BlobDataHandle() override; // May be deleted on any thread.
|
|
|
| - // A BlobDataSnapshot is used to read the data from the blob. This object is
|
| + // 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
|
| // of time.
|
| + scoped_ptr<BlobReader> CreateReader(
|
| + FileSystemContext* file_system_context,
|
| + base::SequencedTaskRunner* file_task_runner) const;
|
| +
|
| + // May be accessed on any thread.
|
| + const std::string& uuid() const;
|
| + // May be accessed on any thread.
|
| + const std::string& content_type() const;
|
| + // May be accessed on any thread.
|
| + const std::string& content_disposition() const;
|
| +
|
| // This call and the destruction of the returned snapshot must be called
|
| // on the IO thread.
|
| + // TODO(dmurph): Make this protected, where only the BlobReader can call it.
|
| scoped_ptr<BlobDataSnapshot> CreateSnapshot() const;
|
|
|
| - const std::string& uuid() const; // May be accessed on any thread.
|
| -
|
| private:
|
| // Internal class whose destructor is guarenteed to be called on the IO
|
| // thread.
|
| @@ -52,11 +65,11 @@ class STORAGE_EXPORT BlobDataHandle
|
| : public base::RefCountedThreadSafe<BlobDataHandleShared> {
|
| public:
|
| BlobDataHandleShared(const std::string& uuid,
|
| - BlobStorageContext* context,
|
| - base::SequencedTaskRunner* task_runner);
|
| + const std::string& content_type,
|
| + const std::string& content_disposition,
|
| + BlobStorageContext* context);
|
|
|
| scoped_ptr<BlobDataSnapshot> CreateSnapshot() const;
|
| - const std::string& uuid() const;
|
|
|
| private:
|
| friend class base::DeleteHelper<BlobDataHandleShared>;
|
| @@ -66,6 +79,8 @@ class STORAGE_EXPORT BlobDataHandle
|
| virtual ~BlobDataHandleShared();
|
|
|
| const std::string uuid_;
|
| + const std::string content_type_;
|
| + const std::string content_disposition_;
|
| base::WeakPtr<BlobStorageContext> context_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(BlobDataHandleShared);
|
| @@ -73,8 +88,10 @@ class STORAGE_EXPORT BlobDataHandle
|
|
|
| friend class BlobStorageContext;
|
| BlobDataHandle(const std::string& uuid,
|
| + const std::string& content_type,
|
| + const std::string& content_disposition,
|
| BlobStorageContext* context,
|
| - base::SequencedTaskRunner* task_runner);
|
| + base::SequencedTaskRunner* io_task_runner);
|
|
|
| scoped_refptr<base::SequencedTaskRunner> io_task_runner_;
|
| scoped_refptr<BlobDataHandleShared> shared_;
|
|
|