Chromium Code Reviews| Index: webkit/browser/blob/blob_data_handle.h |
| diff --git a/webkit/browser/blob/blob_data_handle.h b/webkit/browser/blob/blob_data_handle.h |
| index 5f870f2731a21b9f456c99fc505e9c61a0a03bcd..bae65b0c5e3e24b0442c5eb36888eb94b8950637 100644 |
| --- a/webkit/browser/blob/blob_data_handle.h |
| +++ b/webkit/browser/blob/blob_data_handle.h |
| @@ -28,23 +28,43 @@ class BlobStorageContext; |
| class WEBKIT_STORAGE_BROWSER_EXPORT BlobDataHandle |
| : public base::SupportsUserData::Data { |
| public: |
| + BlobDataHandle(const BlobDataHandle& other); // May be copied on any thread. |
| virtual ~BlobDataHandle(); // Maybe be deleted on any thread. |
| BlobData* data() const; // May only be accessed on the IO thread. |
| + std::string uuid() const; // May be accessed on any thread. |
| + |
| private: |
| + class BlobDataHandleShared |
|
michaeln
2014/04/28 18:25:22
too bad this has to be in the .h file :(
|
| + : public base::RefCountedThreadSafe<BlobDataHandleShared> { |
| + public: |
| + BlobDataHandleShared(BlobData* blob_data, |
| + BlobStorageContext* context, |
| + base::SequencedTaskRunner* task_runner); |
| + |
| + BlobData* data() const; |
| + const std::string& uuid() const; |
| + |
| + private: |
| + friend class base::DeleteHelper<BlobDataHandleShared>; |
| + friend class base::RefCountedThreadSafe<BlobDataHandleShared>; |
| + friend class BlobDataHandle; |
| + |
| + virtual ~BlobDataHandleShared(); |
| + |
| + scoped_refptr<BlobData> blob_data_; |
| + base::WeakPtr<BlobStorageContext> context_; |
| + scoped_refptr<base::SequencedTaskRunner> io_task_runner_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(BlobDataHandleShared); |
| + }; |
| + |
| friend class BlobStorageContext; |
| BlobDataHandle(BlobData* blob_data, BlobStorageContext* context, |
| base::SequencedTaskRunner* task_runner); |
| - static void DeleteHelper( |
| - base::WeakPtr<BlobStorageContext> context, |
| - BlobData* blob_data); |
| - |
| - BlobData* blob_data_; // Intentionally a raw ptr to a non-thread-safe ref. |
| - base::WeakPtr<BlobStorageContext> context_; |
| scoped_refptr<base::SequencedTaskRunner> io_task_runner_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(BlobDataHandle); |
| + scoped_refptr<BlobDataHandleShared> shared_; |
| }; |
| } // namespace webkit_blob |