diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-18 16:08:51 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-18 16:08:51 +0000 |
commit | 97e6c4c6081444371405bb39c99b016a65a309b8 (patch) | |
tree | 01d5b996990212964f7a91ca5315ff41134bd317 | |
parent | a15fcb778a2c7d4c188ddbf44edcca8b6a526e16 (diff) | |
download | chromium_src-97e6c4c6081444371405bb39c99b016a65a309b8.zip chromium_src-97e6c4c6081444371405bb39c99b016a65a309b8.tar.gz chromium_src-97e6c4c6081444371405bb39c99b016a65a309b8.tar.bz2 |
Get rid of chrome dependencies from PluginProcessHost by moving dispatching of chrome specific messages to a chrome IPC filter.
Review URL: http://codereview.chromium.org/7036025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85767 0039d316-1c4b-4281-b951-d872f2087c98
18 files changed, 145 insertions, 90 deletions
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 9fe58e9..5030768 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc @@ -8,6 +8,7 @@ #include "chrome/app/breakpad_mac.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/character_encoding.h" +#include "chrome/browser/chrome_plugin_message_filter.h" #include "chrome/browser/chrome_worker_message_filter.h" #include "chrome/browser/content_settings/host_content_settings_map.h" #include "chrome/browser/content_settings/tab_specific_content_settings.h" @@ -33,6 +34,7 @@ #include "chrome/common/url_constants.h" #include "content/browser/browsing_instance.h" #include "content/browser/child_process_security_policy.h" +#include "content/browser/plugin_process_host.h" #include "content/browser/renderer_host/browser_render_process_host.h" #include "content/browser/renderer_host/render_view_host.h" #include "content/browser/resource_context.h" @@ -135,6 +137,11 @@ void ChromeContentBrowserClient::BrowserRenderProcessHostCreated( #endif } +void ChromeContentBrowserClient::PluginProcessHostCreated( + PluginProcessHost* host) { + host->AddFilter(new ChromePluginMessageFilter(host)); +} + void ChromeContentBrowserClient::WorkerProcessHostCreated( WorkerProcessHost* host) { host->AddFilter(new ChromeWorkerMessageFilter(host)); diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h index 2ba3e24..3a96dc2 100644 --- a/chrome/browser/chrome_content_browser_client.h +++ b/chrome/browser/chrome_content_browser_client.h @@ -14,6 +14,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { public: virtual void RenderViewHostCreated(RenderViewHost* render_view_host); virtual void BrowserRenderProcessHostCreated(BrowserRenderProcessHost* host); + virtual void PluginProcessHostCreated(PluginProcessHost* host); virtual void WorkerProcessHostCreated(WorkerProcessHost* host); virtual content::WebUIFactory* GetWebUIFactory(); virtual GURL GetEffectiveURL(Profile* profile, const GURL& url); diff --git a/chrome/browser/chrome_plugin_message_filter.cc b/chrome/browser/chrome_plugin_message_filter.cc new file mode 100644 index 0000000..8bea04b --- /dev/null +++ b/chrome/browser/chrome_plugin_message_filter.cc @@ -0,0 +1,63 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chrome_plugin_message_filter.h" + +#include "chrome/browser/browser_process.h" +#include "chrome/browser/plugin_download_helper.h" +#include "chrome/browser/profiles/profile.h" +#include "content/browser/plugin_process_host.h" +#include "content/common/plugin_messages.h" +#include "net/url_request/url_request_context_getter.h" + +static const char kDefaultPluginFinderURL[] = + "https://dl-ssl.google.com/edgedl/chrome/plugins/plugins2.xml"; + +ChromePluginMessageFilter::ChromePluginMessageFilter(PluginProcessHost* process) + : process_(process) { +} + +ChromePluginMessageFilter::~ChromePluginMessageFilter() { +} + +bool ChromePluginMessageFilter::OnMessageReceived(const IPC::Message& message) { + bool handled = true; + IPC_BEGIN_MESSAGE_MAP(ChromePluginMessageFilter, message) +#if defined(OS_WIN) + IPC_MESSAGE_HANDLER(PluginProcessHostMsg_DownloadUrl, OnDownloadUrl) +#endif + IPC_MESSAGE_HANDLER(PluginProcessHostMsg_GetPluginFinderUrl, + OnGetPluginFinderUrl) + IPC_MESSAGE_UNHANDLED(handled = false) + IPC_END_MESSAGE_MAP() + + return handled; +} + +bool ChromePluginMessageFilter::Send(IPC::Message* message) { + return process_->Send(message); +} + +#if defined(OS_WIN) +void ChromePluginMessageFilter::OnDownloadUrl(const std::string& url, + int source_pid, + gfx::NativeWindow caller_window) { + PluginDownloadUrlHelper* download_url_helper = + new PluginDownloadUrlHelper(url, source_pid, caller_window, NULL); + download_url_helper->InitiateDownload( + Profile::GetDefaultRequestContext()->GetURLRequestContext()); +} +#endif + +void ChromePluginMessageFilter::OnGetPluginFinderUrl( + std::string* plugin_finder_url) { + // TODO(bauerb): Move this method to MessageFilter. + if (!g_browser_process->plugin_finder_disabled()) { + // TODO(iyengar): Add the plumbing to retrieve the default + // plugin finder URL. + *plugin_finder_url = kDefaultPluginFinderURL; + } else { + plugin_finder_url->clear(); + } +} diff --git a/chrome/browser/chrome_plugin_message_filter.h b/chrome/browser/chrome_plugin_message_filter.h new file mode 100644 index 0000000..fc02479 --- /dev/null +++ b/chrome/browser/chrome_plugin_message_filter.h @@ -0,0 +1,42 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_CHROME_PLUGIN_MESSAGE_FILTER_H_ +#define CHROME_BROWSER_CHROME_PLUGIN_MESSAGE_FILTER_H_ +#pragma once + +#include "ipc/ipc_channel_proxy.h" +#include "ui/gfx/native_widget_types.h" + +class PluginProcessHost; + +// This class filters out incoming Chrome-specific IPC messages for the plugin +// process on the IPC thread. +class ChromePluginMessageFilter : public IPC::ChannelProxy::MessageFilter, + public IPC::Message::Sender { + public: + explicit ChromePluginMessageFilter(PluginProcessHost* process); + + // BrowserMessageFilter methods: + virtual bool OnMessageReceived(const IPC::Message& message); + + // IPC::Message::Sender methods: + virtual bool Send(IPC::Message* message); + + private: + virtual ~ChromePluginMessageFilter(); + +#if defined(OS_WIN) + void OnDownloadUrl(const std::string& url, + int source_child_unique_id, + gfx::NativeWindow caller_window); +#endif + void OnGetPluginFinderUrl(std::string* plugin_finder_url); + + PluginProcessHost* process_; + + DISALLOW_COPY_AND_ASSIGN(ChromePluginMessageFilter); +}; + +#endif // CHROME_BROWSER_CHROME_PLUGIN_MESSAGE_FILTER_H_ diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 4803e70..ee5baa0 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -348,6 +348,8 @@ 'browser/chrome_browser_application_mac.mm', 'browser/chrome_content_browser_client.cc', 'browser/chrome_content_browser_client.h', + 'browser/chrome_plugin_message_filter.cc', + 'browser/chrome_plugin_message_filter.h', 'browser/chrome_worker_message_filter.cc', 'browser/chrome_worker_message_filter.h', 'browser/chromeos/audio_handler.cc', @@ -1364,8 +1366,6 @@ 'browser/net/quoted_printable.h', 'browser/net/referrer.cc', 'browser/net/referrer.h', - 'browser/net/resolve_proxy_msg_helper.cc', - 'browser/net/resolve_proxy_msg_helper.h', 'browser/net/sdch_dictionary_fetcher.cc', 'browser/net/sdch_dictionary_fetcher.h', 'browser/net/service_providers_win.cc', diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index d3b1927..5a9b487 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -1435,7 +1435,6 @@ 'browser/net/predictor_unittest.cc', 'browser/net/pref_proxy_config_service_unittest.cc', 'browser/net/quoted_printable_unittest.cc', - 'browser/net/resolve_proxy_msg_helper_unittest.cc', 'browser/net/sqlite_persistent_cookie_store_unittest.cc', 'browser/net/url_fixer_upper_unittest.cc', 'browser/net/url_info_unittest.cc', @@ -1928,6 +1927,7 @@ '../content/browser/renderer_host/render_widget_host_unittest.cc', '../content/browser/renderer_host/resource_dispatcher_host_unittest.cc', '../content/browser/renderer_host/resource_queue_unittest.cc', + '../content/browser/resolve_proxy_msg_helper_unittest.cc', '../content/browser/site_instance_unittest.cc', '../content/browser/speech/endpointer/endpointer_unittest.cc', '../content/browser/speech/speech_recognition_request_unittest.cc', diff --git a/chrome/default_plugin/plugin_impl_win.cc b/chrome/default_plugin/plugin_impl_win.cc index 8a2f3e3..cec0063 100644 --- a/chrome/default_plugin/plugin_impl_win.cc +++ b/chrome/default_plugin/plugin_impl_win.cc @@ -22,30 +22,6 @@ static const int TOOLTIP_MAX_WIDTH = 500; -namespace { - -bool GetPluginFinderURL(std::string* plugin_finder_url) { - if (!plugin_finder_url) { - NOTREACHED(); - return false; - } - - ChildThread::current()->Send( - new PluginProcessHostMsg_GetPluginFinderUrl(plugin_finder_url)); - // If we get an empty string back this means the plugin finder has been - // disabled. - return true; -} - -bool DownloadUrl(const std::string& url, HWND caller_window) { - return ChildThread::current()->Send( - new PluginProcessHostMsg_DownloadUrl(MSG_ROUTING_NONE, url, - ::GetCurrentProcessId(), - caller_window)); -} - -} - PluginInstallerImpl::PluginInstallerImpl(int16 mode) : instance_(NULL), mode_(mode), @@ -94,11 +70,8 @@ bool PluginInstallerImpl::Initialize(HINSTANCE module_handle, NPP instance, instance_ = instance; mime_type_ = mime_type; - if (!GetPluginFinderURL(&plugin_finder_url_)) { - NOTREACHED() << __FUNCTION__ << " Failed to get the plugin finder URL"; - return false; - } - + ChildThread::current()->Send( + new PluginProcessHostMsg_GetPluginFinderUrl(&plugin_finder_url_)); if (plugin_finder_url_.empty()) disable_plugin_finder_ = true; @@ -368,7 +341,8 @@ void PluginInstallerImpl::DownloadPlugin() { DisplayStatus(IDS_DEFAULT_PLUGIN_DOWNLOADING_PLUGIN_MSG); if (!plugin_download_url_for_display_) { - DownloadUrl(plugin_download_url_, hwnd()); + ChildThread::current()->Send(new PluginProcessHostMsg_DownloadUrl( + plugin_download_url_, ::GetCurrentProcessId(), hwnd())); } else { default_plugin::g_browser->geturl(instance(), plugin_download_url_.c_str(), diff --git a/content/browser/DEPS b/content/browser/DEPS index 41ae24c..437eb28 100644 --- a/content/browser/DEPS +++ b/content/browser/DEPS @@ -46,7 +46,6 @@ include_rules = [ "+chrome/browser/net/load_timing_observer.h",
"+chrome/browser/net/predictor_api.h",
- "+chrome/browser/net/resolve_proxy_msg_helper.h",
"+chrome/browser/net/url_request_tracking.h",
"+chrome/browser/notifications/desktop_notification_service.h",
@@ -55,7 +54,6 @@ include_rules = [ "+chrome/browser/platform_util.h",
- "+chrome/browser/plugin_download_helper.h",
"+chrome/browser/plugin_observer.h",
"+chrome/common/default_plugin.h",
diff --git a/content/browser/content_browser_client.cc b/content/browser/content_browser_client.cc index 901097e..47d55e4 100644 --- a/content/browser/content_browser_client.cc +++ b/content/browser/content_browser_client.cc @@ -18,6 +18,9 @@ void ContentBrowserClient::BrowserRenderProcessHostCreated( BrowserRenderProcessHost* host) { } +void ContentBrowserClient::PluginProcessHostCreated(PluginProcessHost* host) { +} + void ContentBrowserClient::WorkerProcessHostCreated(WorkerProcessHost* host) { } diff --git a/content/browser/content_browser_client.h b/content/browser/content_browser_client.h index 6395d9a..70932b6 100644 --- a/content/browser/content_browser_client.h +++ b/content/browser/content_browser_client.h @@ -13,6 +13,7 @@ class BrowserRenderProcessHost; class CommandLine; class GURL; +class PluginProcessHost; class Profile; class RenderViewHost; class TabContents; @@ -39,6 +40,11 @@ class ContentBrowserClient { // embedder's IPC filters have priority. virtual void BrowserRenderProcessHostCreated(BrowserRenderProcessHost* host); + // Notifies that a PluginProcessHost has been created. This is called + // before the content layer adds its own message filters, so that the + // embedder's IPC filters have priority. + virtual void PluginProcessHostCreated(PluginProcessHost* host); + // Notifies that a WorkerProcessHost has been created. This is called // before the content layer adds its own message filters, so that the // embedder's IPC filters have priority. diff --git a/content/browser/plugin_process_host.cc b/content/browser/plugin_process_host.cc index a543200..2e72f31 100644 --- a/content/browser/plugin_process_host.cc +++ b/content/browser/plugin_process_host.cc @@ -19,26 +19,18 @@ #include "base/path_service.h" #include "base/string_util.h" #include "base/utf_string_conversions.h" -#include "chrome/browser/browser_process.h" -#include "chrome/browser/net/resolve_proxy_msg_helper.h" -#include "chrome/browser/net/url_request_tracking.h" -#include "chrome/browser/plugin_download_helper.h" -#include "chrome/browser/profiles/profile.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/logging_chrome.h" -#include "chrome/common/render_messages.h" #include "content/browser/browser_thread.h" +#include "content/browser/content_browser_client.h" +#include "content/browser/resolve_proxy_msg_helper.h" #include "content/browser/plugin_service.h" #include "content/browser/renderer_host/resource_dispatcher_host.h" #include "content/browser/renderer_host/resource_message_filter.h" #include "content/common/plugin_messages.h" #include "content/common/resource_messages.h" #include "ipc/ipc_switches.h" -#include "net/base/io_buffer.h" -#include "net/url_request/url_request.h" -#include "net/url_request/url_request_context.h" -#include "net/url_request/url_request_context_getter.h" #include "ui/base/ui_base_switches.h" #include "ui/gfx/native_widget_types.h" #include "ui/gfx/gl/gl_switches.h" @@ -53,9 +45,6 @@ #include "ui/gfx/rect.h" #endif -static const char kDefaultPluginFinderURL[] = - "https://dl-ssl.google.com/edgedl/chrome/plugins/plugins2.xml"; - #if defined(OS_WIN) void PluginProcessHost::OnPluginWindowDestroyed(HWND window, HWND parent) { // The window is destroyed at this point, we just care about its parent, which @@ -69,15 +58,6 @@ void PluginProcessHost::OnPluginWindowDestroyed(HWND window, HWND parent) { PostMessage(parent, WM_CLOSE, 0, 0); } -void PluginProcessHost::OnDownloadUrl(const std::string& url, - int source_pid, - gfx::NativeWindow caller_window) { - PluginDownloadUrlHelper* download_url_helper = - new PluginDownloadUrlHelper(url, source_pid, caller_window, NULL); - download_url_helper->InitiateDownload( - Profile::GetDefaultRequestContext()->GetURLRequestContext()); -} - void PluginProcessHost::AddWindow(HWND window) { plugin_parent_windows_set_.insert(window); } @@ -241,6 +221,7 @@ bool PluginProcessHost::Init(const webkit::npapi::WebPluginInfo& info, #endif cmd_line); + content::GetContentClient()->browser()->PluginProcessHostCreated(this); AddFilter(new ResolveProxyMsgHelper(NULL)); return true; @@ -256,12 +237,9 @@ bool PluginProcessHost::OnMessageReceived(const IPC::Message& msg) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(PluginProcessHost, msg) IPC_MESSAGE_HANDLER(PluginProcessHostMsg_ChannelCreated, OnChannelCreated) - IPC_MESSAGE_HANDLER(PluginProcessHostMsg_GetPluginFinderUrl, - OnGetPluginFinderUrl) #if defined(OS_WIN) IPC_MESSAGE_HANDLER(PluginProcessHostMsg_PluginWindowDestroyed, OnPluginWindowDestroyed) - IPC_MESSAGE_HANDLER(PluginProcessHostMsg_DownloadUrl, OnDownloadUrl) #endif #if defined(TOOLKIT_USES_GTK) IPC_MESSAGE_HANDLER(PluginProcessHostMsg_MapNativeViewId, @@ -350,19 +328,3 @@ void PluginProcessHost::OnChannelCreated( client->OnChannelOpened(channel_handle); sent_requests_.pop(); } - -void PluginProcessHost::OnGetPluginFinderUrl(std::string* plugin_finder_url) { - // TODO(bauerb): Move this method to MessageFilter. - if (!plugin_finder_url) { - NOTREACHED(); - return; - } - - if (!g_browser_process->plugin_finder_disabled()) { - // TODO(iyengar): Add the plumbing to retrieve the default - // plugin finder URL. - *plugin_finder_url = kDefaultPluginFinderURL; - } else { - plugin_finder_url->clear(); - } -} diff --git a/content/browser/plugin_process_host.h b/content/browser/plugin_process_host.h index 68cd738..f33027d 100644 --- a/content/browser/plugin_process_host.h +++ b/content/browser/plugin_process_host.h @@ -16,8 +16,8 @@ #include "base/basictypes.h" #include "base/memory/ref_counted.h" #include "content/browser/browser_child_process_host.h" -#include "ui/gfx/native_widget_types.h" #include "webkit/plugins/npapi/webplugininfo.h" +#include "ui/gfx/native_widget_types.h" namespace gfx { class Rect; @@ -99,12 +99,9 @@ class PluginProcessHost : public BrowserChildProcessHost { // Message handlers. void OnChannelCreated(const IPC::ChannelHandle& channel_handle); - void OnGetPluginFinderUrl(std::string* plugin_finder_url); #if defined(OS_WIN) void OnPluginWindowDestroyed(HWND window, HWND parent); - void OnDownloadUrl(const std::string& url, int source_child_unique_id, - gfx::NativeWindow caller_window); #endif #if defined(USE_X11) diff --git a/content/browser/renderer_host/browser_render_process_host.cc b/content/browser/renderer_host/browser_render_process_host.cc index ef8d040..282ef9a 100644 --- a/content/browser/renderer_host/browser_render_process_host.cc +++ b/content/browser/renderer_host/browser_render_process_host.cc @@ -28,7 +28,6 @@ #include "base/threading/thread_restrictions.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/history/history.h" -#include "chrome/browser/net/resolve_proxy_msg_helper.h" #include "chrome/browser/platform_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/renderer_host/web_cache_manager.h" @@ -48,6 +47,7 @@ #include "content/browser/in_process_webkit/indexed_db_dispatcher_host.h" #include "content/browser/file_system/file_system_dispatcher_host.h" #include "content/browser/mime_registry_message_filter.h" +#include "content/browser/resolve_proxy_msg_helper.h" #include "content/browser/plugin_service.h" #include "content/browser/renderer_host/audio_input_renderer_host.h" #include "content/browser/renderer_host/audio_renderer_host.h" diff --git a/chrome/browser/net/resolve_proxy_msg_helper.cc b/content/browser/resolve_proxy_msg_helper.cc index 49ce3e4..edacad9 100644 --- a/chrome/browser/net/resolve_proxy_msg_helper.cc +++ b/content/browser/resolve_proxy_msg_helper.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/net/resolve_proxy_msg_helper.h" +#include "content/browser/resolve_proxy_msg_helper.h" #include "base/compiler_specific.h" #include "chrome/browser/profiles/profile.h" diff --git a/chrome/browser/net/resolve_proxy_msg_helper.h b/content/browser/resolve_proxy_msg_helper.h index 95ebaf9..5032687 100644 --- a/chrome/browser/net/resolve_proxy_msg_helper.h +++ b/content/browser/resolve_proxy_msg_helper.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_NET_RESOLVE_PROXY_MSG_HELPER_H_ -#define CHROME_BROWSER_NET_RESOLVE_PROXY_MSG_HELPER_H_ +#ifndef CONTENT_BROWSER_RESOLVE_PROXY_MSG_HELPER_H_ +#define CONTENT_BROWSER_RESOLVE_PROXY_MSG_HELPER_H_ #pragma once #include <deque> @@ -82,4 +82,4 @@ class ResolveProxyMsgHelper : public BrowserMessageFilter { net::ProxyService* proxy_service_override_; }; -#endif // CHROME_BROWSER_NET_RESOLVE_PROXY_MSG_HELPER_H_ +#endif // CONTENT_BROWSER_RESOLVE_PROXY_MSG_HELPER_H_ diff --git a/chrome/browser/net/resolve_proxy_msg_helper_unittest.cc b/content/browser/resolve_proxy_msg_helper_unittest.cc index a32ab78..763736c 100644 --- a/chrome/browser/net/resolve_proxy_msg_helper_unittest.cc +++ b/content/browser/resolve_proxy_msg_helper_unittest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/net/resolve_proxy_msg_helper.h" +#include "content/browser/resolve_proxy_msg_helper.h" #include "content/common/child_process_messages.h" #include "ipc/ipc_test_sink.h" diff --git a/content/common/plugin_messages.h b/content/common/plugin_messages.h index 813d8bb..d34e0d1 100644 --- a/content/common/plugin_messages.h +++ b/content/common/plugin_messages.h @@ -98,10 +98,10 @@ IPC_MESSAGE_CONTROL2(PluginProcessHostMsg_PluginWindowDestroyed, HWND /* window */, HWND /* parent */) -IPC_MESSAGE_ROUTED3(PluginProcessHostMsg_DownloadUrl, - std::string /* URL */, - int /* process id */, - HWND /* caller window */) +IPC_MESSAGE_CONTROL3(PluginProcessHostMsg_DownloadUrl, + std::string /* URL */, + int /* process id */, + HWND /* caller window */) #endif #if defined(USE_X11) diff --git a/content/content_browser.gypi b/content/content_browser.gypi index 6ba0c08..0b26790 100644 --- a/content/content_browser.gypi +++ b/content/content_browser.gypi @@ -272,6 +272,8 @@ 'browser/renderer_host/sync_resource_handler.h', 'browser/renderer_host/x509_user_cert_resource_handler.cc', 'browser/renderer_host/x509_user_cert_resource_handler.h', + 'browser/resolve_proxy_msg_helper.cc', + 'browser/resolve_proxy_msg_helper.h', 'browser/resource_context.cc', 'browser/resource_context.h', 'browser/site_instance.cc', |