1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "content/public/test/mock_blob_url_request_context.h"
7 #include "base/thread_task_runner_handle.h"
8 #include "storage/browser/blob/blob_data_builder.h"
9 #include "storage/browser/blob/blob_storage_context.h"
10 #include "storage/browser/blob/blob_url_request_job.h"
11 #include "storage/browser/blob/blob_url_request_job_factory.h"
15 MockBlobURLRequestContext::MockBlobURLRequestContext(
16 storage::FileSystemContext
* file_system_context
)
17 : blob_storage_context_(new storage::BlobStorageContext
) {
18 // Job factory owns the protocol handler.
19 job_factory_
.SetProtocolHandler(
20 "blob", new storage::BlobProtocolHandler(
21 blob_storage_context_
.get(), file_system_context
,
22 base::ThreadTaskRunnerHandle::Get()));
23 set_job_factory(&job_factory_
);
26 MockBlobURLRequestContext::~MockBlobURLRequestContext() {
27 AssertNoURLRequests();
30 ScopedTextBlob::ScopedTextBlob(
31 const MockBlobURLRequestContext
& request_context
,
32 const std::string
& blob_id
,
33 const std::string
& data
)
35 context_(request_context
.blob_storage_context()) {
37 storage::BlobDataBuilder
blob_builder(blob_id_
);
39 blob_builder
.AppendData(data
);
40 handle_
= context_
->AddFinishedBlob(&blob_builder
);
43 ScopedTextBlob::~ScopedTextBlob() {
46 scoped_ptr
<storage::BlobDataHandle
> ScopedTextBlob::GetBlobDataHandle() {
47 return context_
->GetBlobDataFromUUID(blob_id_
);
50 } // namespace content