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. 4 5 #include "content/public/test/mock_blob_url_request_context.h" 6 7 #include "webkit/browser/blob/blob_storage_context.h" 8 #include "webkit/browser/blob/blob_url_request_job.h" 9 #include "webkit/browser/blob/blob_url_request_job_factory.h" 10 #include "webkit/common/blob/blob_data.h" 11 12 13 namespace content { 14 15 MockBlobURLRequestContext::MockBlobURLRequestContext( 16 fileapi::FileSystemContext* file_system_context) 17 : blob_storage_context_(new webkit_blob::BlobStorageContext) { 18 // Job factory owns the protocol handler. 19 job_factory_.SetProtocolHandler( 20 "blob", new webkit_blob::BlobProtocolHandler(blob_storage_context_.get(), 21 file_system_context, 22 base::MessageLoopProxy::current())); 23 set_job_factory(&job_factory_); 24 } 25 26 MockBlobURLRequestContext::~MockBlobURLRequestContext() { 27 } 28 29 ScopedTextBlob::ScopedTextBlob( 30 const MockBlobURLRequestContext& request_context, 31 const std::string& blob_id, 32 const std::string& data) 33 : blob_id_(blob_id), 34 context_(request_context.blob_storage_context()) { 35 DCHECK(context_); 36 scoped_refptr<webkit_blob::BlobData> blob_data( 37 new webkit_blob::BlobData(blob_id_)); 38 if (!data.empty()) 39 blob_data->AppendData(data); 40 handle_ = context_->AddFinishedBlob(blob_data); 41 } 42 43 ScopedTextBlob::~ScopedTextBlob() { 44 } 45 46 scoped_ptr<webkit_blob::BlobDataHandle> ScopedTextBlob::GetBlobDataHandle() { 47 return context_->GetBlobDataFromUUID(blob_id_); 48 } 49 50 } // namespace content 51