1 // Copyright (c) 2011 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 "webkit/browser/blob/blob_url_request_job_factory.h" 6 7 #include "base/basictypes.h" 8 #include "base/compiler_specific.h" 9 #include "base/message_loop/message_loop_proxy.h" 10 #include "net/url_request/url_request.h" 11 #include "net/url_request/url_request_job_factory.h" 12 #include "webkit/browser/blob/blob_storage_controller.h" 13 #include "webkit/browser/blob/blob_url_request_job.h" 14 #include "webkit/browser/fileapi/file_system_context.h" 15 16 namespace webkit_blob { 17 18 BlobProtocolHandler::BlobProtocolHandler( 19 webkit_blob::BlobStorageController* blob_storage_controller, 20 fileapi::FileSystemContext* file_system_context, 21 base::MessageLoopProxy* loop_proxy) 22 : blob_storage_controller_(blob_storage_controller), 23 file_system_context_(file_system_context), 24 file_loop_proxy_(loop_proxy) { 25 DCHECK(blob_storage_controller_); 26 DCHECK(file_system_context_.get()); 27 DCHECK(file_loop_proxy_.get()); 28 } 29 30 BlobProtocolHandler::~BlobProtocolHandler() {} 31 32 net::URLRequestJob* BlobProtocolHandler::MaybeCreateJob( 33 net::URLRequest* request, net::NetworkDelegate* network_delegate) const { 34 scoped_refptr<webkit_blob::BlobData> data = LookupBlobData(request); 35 if (!data.get()) { 36 // This request is not coming through resource dispatcher host. 37 data = blob_storage_controller_->GetBlobDataFromUrl(request->url()); 38 } 39 return new webkit_blob::BlobURLRequestJob(request, 40 network_delegate, 41 data.get(), 42 file_system_context_.get(), 43 file_loop_proxy_.get()); 44 } 45 46 scoped_refptr<webkit_blob::BlobData> 47 BlobProtocolHandler::LookupBlobData(net::URLRequest* request) const { 48 return NULL; 49 } 50 51 } // namespace webkit_blob 52