15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/browser/loader/resource_message_filter.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/appcache/chrome_appcache_service.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/fileapi/chrome_blob_storage_context.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/browser/loader/resource_dispatcher_host_impl.h" 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "content/browser/service_worker/service_worker_context_wrapper.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/common/resource_messages.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/resource_context.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/browser/fileapi/file_system_context.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ResourceMessageFilter::ResourceMessageFilter( 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int child_id, 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int process_type, 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeAppCacheService* appcache_service, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeBlobStorageContext* blob_storage_context, 2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) storage::FileSystemContext* file_system_context, 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ServiceWorkerContextWrapper* service_worker_context, 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const GetContextsCallback& get_contexts_callback) 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : BrowserMessageFilter(ResourceMsgStart), 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) child_id_(child_id), 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) process_type_(process_type), 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) appcache_service_(appcache_service), 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) blob_storage_context_(blob_storage_context), 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) file_system_context_(file_system_context), 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) service_worker_context_(service_worker_context), 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) get_contexts_callback_(get_contexts_callback), 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) weak_ptr_factory_(this) { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ResourceMessageFilter::~ResourceMessageFilter() { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ResourceMessageFilter::OnChannelClosing() { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Unhook us from all pending network requests so they don't get sent to a 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // deleted object. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResourceDispatcherHostImpl::Get()->CancelRequestsForProcess(child_id_); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& message) { 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return ResourceDispatcherHostImpl::Get()->OnMessageReceived(message, this); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void ResourceMessageFilter::GetContexts( 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const ResourceHostMsg_Request& request, 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ResourceContext** resource_context, 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) net::URLRequestContext** request_context) { 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return get_contexts_callback_.Run(request, resource_context, request_context); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)base::WeakPtr<ResourceMessageFilter> ResourceMessageFilter::GetWeakPtr() { 5768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return weak_ptr_factory_.GetWeakPtr(); 5868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 5968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 61