| Index: storage/browser/blob/blob_data_handle.cc
|
| diff --git a/storage/browser/blob/blob_data_handle.cc b/storage/browser/blob/blob_data_handle.cc
|
| index 3e864fa1cdf9bcdb0caba7096522b16a0c32193d..6900a76cc798885a081d01d13cad6fd824ae976d 100644
|
| --- a/storage/browser/blob/blob_data_handle.cc
|
| +++ b/storage/browser/blob/blob_data_handle.cc
|
| @@ -5,6 +5,7 @@
|
| #include "storage/browser/blob/blob_data_handle.h"
|
|
|
| #include "base/bind.h"
|
| +#include "base/callback.h"
|
| #include "base/location.h"
|
| #include "base/logging.h"
|
| #include "base/sequenced_task_runner.h"
|
| @@ -19,13 +20,14 @@
|
| #include "url/gurl.h"
|
|
|
| namespace storage {
|
| +using BlobState = BlobStorageRegistry::BlobState;
|
|
|
| namespace {
|
|
|
| class FileStreamReaderProviderImpl
|
| : public BlobReader::FileStreamReaderProvider {
|
| public:
|
| - FileStreamReaderProviderImpl(FileSystemContext* file_system_context)
|
| + explicit FileStreamReaderProviderImpl(FileSystemContext* file_system_context)
|
| : file_system_context_(file_system_context) {}
|
| ~FileStreamReaderProviderImpl() override {}
|
|
|
| @@ -71,6 +73,21 @@ BlobDataHandle::BlobDataHandleShared::BlobDataHandleShared(
|
| context_->IncrementBlobRefCount(uuid);
|
| }
|
|
|
| +bool BlobDataHandle::BlobDataHandleShared::IsAsyncConstructing() const {
|
| + if (!context_.get())
|
| + return false;
|
| + return context_->IsBeingBuilt(uuid_);
|
| +}
|
| +
|
| +void BlobDataHandle::BlobDataHandleShared::RunOnConstructionComplete(
|
| + const base::Callback<void(bool)>& done) {
|
| + if (!context_.get()) {
|
| + done.Run(false);
|
| + return;
|
| + }
|
| + context_->RunOnConstructionComplete(uuid_, done);
|
| +}
|
| +
|
| scoped_ptr<BlobReader> BlobDataHandle::CreateReader(
|
| FileSystemContext* file_system_context,
|
| base::SequencedTaskRunner* file_task_runner) const {
|
| @@ -82,6 +99,8 @@ scoped_ptr<BlobReader> BlobDataHandle::CreateReader(
|
|
|
| scoped_ptr<BlobDataSnapshot>
|
| BlobDataHandle::BlobDataHandleShared::CreateSnapshot() const {
|
| + if (!context_.get())
|
| + return nullptr;
|
| return context_->CreateSnapshot(uuid_).Pass();
|
| }
|
|
|
| @@ -116,6 +135,17 @@ BlobDataHandle::~BlobDataHandle() {
|
| io_task_runner_->ReleaseSoon(FROM_HERE, raw);
|
| }
|
|
|
| +bool BlobDataHandle::IsAsyncConstructing() const {
|
| + DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
|
| + return shared_->IsAsyncConstructing();
|
| +}
|
| +
|
| +void BlobDataHandle::RunOnConstructionComplete(
|
| + const base::Callback<void(bool)>& done) {
|
| + DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
|
| + shared_->RunOnConstructionComplete(done);
|
| +}
|
| +
|
| scoped_ptr<BlobDataSnapshot> BlobDataHandle::CreateSnapshot() const {
|
| DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
|
| return shared_->CreateSnapshot().Pass();
|
|
|