Home | History | Annotate | Download | only in loader
      1 // Copyright (c) 2012 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/browser/loader/resource_message_filter.h"
      6 
      7 #include "content/browser/appcache/chrome_appcache_service.h"
      8 #include "content/browser/fileapi/chrome_blob_storage_context.h"
      9 #include "content/browser/loader/resource_dispatcher_host_impl.h"
     10 #include "content/browser/service_worker/service_worker_context_wrapper.h"
     11 #include "content/common/resource_messages.h"
     12 #include "content/public/browser/resource_context.h"
     13 #include "storage/browser/fileapi/file_system_context.h"
     14 
     15 namespace content {
     16 
     17 ResourceMessageFilter::ResourceMessageFilter(
     18     int child_id,
     19     int process_type,
     20     ChromeAppCacheService* appcache_service,
     21     ChromeBlobStorageContext* blob_storage_context,
     22     storage::FileSystemContext* file_system_context,
     23     ServiceWorkerContextWrapper* service_worker_context,
     24     const GetContextsCallback& get_contexts_callback)
     25     : BrowserMessageFilter(ResourceMsgStart),
     26       child_id_(child_id),
     27       process_type_(process_type),
     28       appcache_service_(appcache_service),
     29       blob_storage_context_(blob_storage_context),
     30       file_system_context_(file_system_context),
     31       service_worker_context_(service_worker_context),
     32       get_contexts_callback_(get_contexts_callback),
     33       weak_ptr_factory_(this) {
     34 }
     35 
     36 ResourceMessageFilter::~ResourceMessageFilter() {
     37 }
     38 
     39 void ResourceMessageFilter::OnChannelClosing() {
     40   // Unhook us from all pending network requests so they don't get sent to a
     41   // deleted object.
     42   ResourceDispatcherHostImpl::Get()->CancelRequestsForProcess(child_id_);
     43 }
     44 
     45 bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& message) {
     46   return ResourceDispatcherHostImpl::Get()->OnMessageReceived(message, this);
     47 }
     48 
     49 void ResourceMessageFilter::GetContexts(
     50     const ResourceHostMsg_Request& request,
     51     ResourceContext** resource_context,
     52     net::URLRequestContext** request_context) {
     53   return get_contexts_callback_.Run(request, resource_context, request_context);
     54 }
     55 
     56 base::WeakPtr<ResourceMessageFilter> ResourceMessageFilter::GetWeakPtr() {
     57   return weak_ptr_factory_.GetWeakPtr();
     58 }
     59 
     60 }  // namespace content
     61