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/public/browser/resource_context.h"
11#include "webkit/browser/fileapi/file_system_context.h"
12
13namespace content {
14
15ResourceMessageFilter::ResourceMessageFilter(
16    int child_id,
17    int process_type,
18    ResourceContext* resource_context,
19    ChromeAppCacheService* appcache_service,
20    ChromeBlobStorageContext* blob_storage_context,
21    fileapi::FileSystemContext* file_system_context,
22    URLRequestContextSelector* url_request_context_selector)
23    : child_id_(child_id),
24      process_type_(process_type),
25      resource_context_(resource_context),
26      appcache_service_(appcache_service),
27      blob_storage_context_(blob_storage_context),
28      file_system_context_(file_system_context),
29      url_request_context_selector_(url_request_context_selector) {
30  DCHECK(resource_context);
31  DCHECK(url_request_context_selector);
32  // |appcache_service| and |blob_storage_context| may be NULL in unittests.
33}
34
35ResourceMessageFilter::~ResourceMessageFilter() {
36}
37
38void ResourceMessageFilter::OnChannelClosing() {
39  BrowserMessageFilter::OnChannelClosing();
40
41  // Unhook us from all pending network requests so they don't get sent to a
42  // deleted object.
43  ResourceDispatcherHostImpl::Get()->CancelRequestsForProcess(child_id_);
44}
45
46bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& message,
47                                              bool* message_was_ok) {
48  return ResourceDispatcherHostImpl::Get()->OnMessageReceived(
49      message, this, message_was_ok);
50}
51
52net::URLRequestContext* ResourceMessageFilter::GetURLRequestContext(
53    ResourceType::Type type) {
54  return url_request_context_selector_->GetRequestContext(type);
55}
56
57}  // namespace content
58