Home | History | Annotate | Download | only in blob
      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