| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/renderer_host/resource_message_filter.h" | 5 #include "chrome/browser/renderer_host/resource_message_filter.h" |
| 6 | 6 |
| 7 #include "app/clipboard/clipboard.h" | 7 #include "app/clipboard/clipboard.h" |
| 8 #include "app/gfx/native_widget_types.h" | 8 #include "app/gfx/native_widget_types.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| 11 #include "base/histogram.h" | 11 #include "base/histogram.h" |
| 12 #include "base/process_util.h" | 12 #include "base/process_util.h" |
| 13 #include "base/thread.h" | 13 #include "base/thread.h" |
| 14 #include "chrome/browser/browser_about_handler.h" | 14 #include "chrome/browser/browser_about_handler.h" |
| 15 #include "chrome/browser/child_process_security_policy.h" | 15 #include "chrome/browser/child_process_security_policy.h" |
| 16 #include "chrome/browser/chrome_plugin_browsing_context.h" | 16 #include "chrome/browser/chrome_plugin_browsing_context.h" |
| 17 #include "chrome/browser/chrome_thread.h" | 17 #include "chrome/browser/chrome_thread.h" |
| 18 #include "chrome/browser/extensions/extension_message_service.h" | 18 #include "chrome/browser/extensions/extension_message_service.h" |
| 19 #include "chrome/browser/host_zoom_map.h" |
| 19 #include "chrome/browser/in_process_webkit/dom_storage_dispatcher_host.h" | 20 #include "chrome/browser/in_process_webkit/dom_storage_dispatcher_host.h" |
| 20 #include "chrome/browser/nacl_process_host.h" | 21 #include "chrome/browser/nacl_process_host.h" |
| 21 #include "chrome/browser/net/chrome_url_request_context.h" | 22 #include "chrome/browser/net/chrome_url_request_context.h" |
| 22 #include "chrome/browser/net/dns_global.h" | 23 #include "chrome/browser/net/dns_global.h" |
| 23 #include "chrome/browser/notifications/desktop_notification_service.h" | 24 #include "chrome/browser/notifications/desktop_notification_service.h" |
| 24 #include "chrome/browser/notifications/notifications_prefs_cache.h" | 25 #include "chrome/browser/notifications/notifications_prefs_cache.h" |
| 25 #include "chrome/browser/plugin_service.h" | 26 #include "chrome/browser/plugin_service.h" |
| 26 #include "chrome/browser/profile.h" | |
| 27 #include "chrome/browser/privacy_blacklist/blacklist.h" | 27 #include "chrome/browser/privacy_blacklist/blacklist.h" |
| 28 #include "chrome/browser/privacy_blacklist/blacklist_ui.h" | 28 #include "chrome/browser/privacy_blacklist/blacklist_ui.h" |
| 29 #include "chrome/browser/profile.h" |
| 29 #include "chrome/browser/renderer_host/audio_renderer_host.h" | 30 #include "chrome/browser/renderer_host/audio_renderer_host.h" |
| 30 #include "chrome/browser/renderer_host/browser_render_process_host.h" | 31 #include "chrome/browser/renderer_host/browser_render_process_host.h" |
| 31 #include "chrome/browser/renderer_host/database_dispatcher_host.h" | 32 #include "chrome/browser/renderer_host/database_dispatcher_host.h" |
| 32 #include "chrome/browser/renderer_host/render_widget_helper.h" | 33 #include "chrome/browser/renderer_host/render_widget_helper.h" |
| 33 #include "chrome/browser/renderer_host/socket_stream_dispatcher_host.h" | 34 #include "chrome/browser/renderer_host/socket_stream_dispatcher_host.h" |
| 34 #include "chrome/browser/spellchecker_platform_engine.h" | 35 #include "chrome/browser/spellchecker_platform_engine.h" |
| 35 #include "chrome/browser/task_manager.h" | 36 #include "chrome/browser/task_manager.h" |
| 36 #include "chrome/browser/worker_host/message_port_dispatcher.h" | 37 #include "chrome/browser/worker_host/message_port_dispatcher.h" |
| 37 #include "chrome/browser/worker_host/worker_service.h" | 38 #include "chrome/browser/worker_host/worker_service.h" |
| 38 #include "chrome/common/appcache/appcache_dispatcher_host.h" | 39 #include "chrome/common/appcache/appcache_dispatcher_host.h" |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 PluginService* plugin_service, | 149 PluginService* plugin_service, |
| 149 printing::PrintJobManager* print_job_manager, | 150 printing::PrintJobManager* print_job_manager, |
| 150 Profile* profile, | 151 Profile* profile, |
| 151 RenderWidgetHelper* render_widget_helper, | 152 RenderWidgetHelper* render_widget_helper, |
| 152 URLRequestContextGetter* request_context) | 153 URLRequestContextGetter* request_context) |
| 153 : Receiver(RENDER_PROCESS, child_id), | 154 : Receiver(RENDER_PROCESS, child_id), |
| 154 channel_(NULL), | 155 channel_(NULL), |
| 155 resource_dispatcher_host_(resource_dispatcher_host), | 156 resource_dispatcher_host_(resource_dispatcher_host), |
| 156 plugin_service_(plugin_service), | 157 plugin_service_(plugin_service), |
| 157 print_job_manager_(print_job_manager), | 158 print_job_manager_(print_job_manager), |
| 159 profile_(profile), |
| 158 ALLOW_THIS_IN_INITIALIZER_LIST(resolve_proxy_msg_helper_(this, NULL)), | 160 ALLOW_THIS_IN_INITIALIZER_LIST(resolve_proxy_msg_helper_(this, NULL)), |
| 159 request_context_(request_context), | 161 request_context_(request_context), |
| 160 media_request_context_(profile->GetRequestContextForMedia()), | 162 media_request_context_(profile->GetRequestContextForMedia()), |
| 161 extensions_request_context_(profile->GetRequestContextForExtensions()), | 163 extensions_request_context_(profile->GetRequestContextForExtensions()), |
| 162 extensions_message_service_(profile->GetExtensionMessageService()), | 164 extensions_message_service_(profile->GetExtensionMessageService()), |
| 163 profile_(profile), | |
| 164 render_widget_helper_(render_widget_helper), | 165 render_widget_helper_(render_widget_helper), |
| 165 audio_renderer_host_(audio_renderer_host), | 166 audio_renderer_host_(audio_renderer_host), |
| 166 appcache_dispatcher_host_( | 167 appcache_dispatcher_host_( |
| 167 new AppCacheDispatcherHost(profile->GetRequestContext())), | 168 new AppCacheDispatcherHost(profile->GetRequestContext())), |
| 168 ALLOW_THIS_IN_INITIALIZER_LIST(dom_storage_dispatcher_host_( | 169 ALLOW_THIS_IN_INITIALIZER_LIST(dom_storage_dispatcher_host_( |
| 169 new DOMStorageDispatcherHost(this, profile->GetWebKitContext(), | 170 new DOMStorageDispatcherHost(this, profile->GetWebKitContext(), |
| 170 resource_dispatcher_host->webkit_thread()))), | 171 resource_dispatcher_host->webkit_thread()))), |
| 171 ALLOW_THIS_IN_INITIALIZER_LIST(db_dispatcher_host_( | 172 ALLOW_THIS_IN_INITIALIZER_LIST(db_dispatcher_host_( |
| 172 new DatabaseDispatcherHost(profile->GetDatabaseTracker(), this))), | 173 new DatabaseDispatcherHost(profile->GetDatabaseTracker(), this))), |
| 173 notification_prefs_( | 174 notification_prefs_( |
| 174 profile->GetDesktopNotificationService()->prefs_cache()), | 175 profile->GetDesktopNotificationService()->prefs_cache()), |
| 175 socket_stream_dispatcher_host_(new SocketStreamDispatcherHost), | 176 socket_stream_dispatcher_host_(new SocketStreamDispatcherHost), |
| 177 host_zoom_map_(profile->GetHostZoomMap()), |
| 176 off_the_record_(profile->IsOffTheRecord()), | 178 off_the_record_(profile->IsOffTheRecord()), |
| 177 next_route_id_callback_(NewCallbackWithReturnValue( | 179 next_route_id_callback_(NewCallbackWithReturnValue( |
| 178 render_widget_helper, &RenderWidgetHelper::GetNextRoutingID)) { | 180 render_widget_helper, &RenderWidgetHelper::GetNextRoutingID)) { |
| 179 DCHECK(request_context_); | 181 DCHECK(request_context_); |
| 180 DCHECK(media_request_context_); | 182 DCHECK(media_request_context_); |
| 181 DCHECK(audio_renderer_host_.get()); | 183 DCHECK(audio_renderer_host_.get()); |
| 182 DCHECK(appcache_dispatcher_host_.get()); | 184 DCHECK(appcache_dispatcher_host_.get()); |
| 183 DCHECK(dom_storage_dispatcher_host_.get()); | 185 DCHECK(dom_storage_dispatcher_host_.get()); |
| 184 DCHECK(socket_stream_dispatcher_host_.get()); | 186 DCHECK(socket_stream_dispatcher_host_.get()); |
| 185 | 187 |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 362 OnAllocateTempFileForPrinting) | 364 OnAllocateTempFileForPrinting) |
| 363 IPC_MESSAGE_HANDLER(ViewHostMsg_TempFileForPrintingWritten, | 365 IPC_MESSAGE_HANDLER(ViewHostMsg_TempFileForPrintingWritten, |
| 364 OnTempFileForPrintingWritten) | 366 OnTempFileForPrintingWritten) |
| 365 #endif | 367 #endif |
| 366 #if defined(OS_MACOSX) | 368 #if defined(OS_MACOSX) |
| 367 IPC_MESSAGE_HANDLER(ViewHostMsg_AllocatePDFTransport, | 369 IPC_MESSAGE_HANDLER(ViewHostMsg_AllocatePDFTransport, |
| 368 OnAllocatePDFTransport) | 370 OnAllocatePDFTransport) |
| 369 #endif | 371 #endif |
| 370 IPC_MESSAGE_HANDLER(ViewHostMsg_ResourceTypeStats, OnResourceTypeStats) | 372 IPC_MESSAGE_HANDLER(ViewHostMsg_ResourceTypeStats, OnResourceTypeStats) |
| 371 IPC_MESSAGE_HANDLER(ViewHostMsg_V8HeapStats, OnV8HeapStats) | 373 IPC_MESSAGE_HANDLER(ViewHostMsg_V8HeapStats, OnV8HeapStats) |
| 374 IPC_MESSAGE_HANDLER(ViewHostMsg_DidZoomHost, OnDidZoomHost) |
| 372 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_ResolveProxy, OnResolveProxy) | 375 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_ResolveProxy, OnResolveProxy) |
| 373 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_GetDefaultPrintSettings, | 376 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_GetDefaultPrintSettings, |
| 374 OnGetDefaultPrintSettings) | 377 OnGetDefaultPrintSettings) |
| 375 #if defined(OS_WIN) || defined(OS_MACOSX) | 378 #if defined(OS_WIN) || defined(OS_MACOSX) |
| 376 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_ScriptedPrint, | 379 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_ScriptedPrint, |
| 377 OnScriptedPrint) | 380 OnScriptedPrint) |
| 378 #endif | 381 #endif |
| 379 #if defined(OS_MACOSX) | 382 #if defined(OS_MACOSX) |
| 380 IPC_MESSAGE_HANDLER(ViewHostMsg_AllocTransportDIB, | 383 IPC_MESSAGE_HANDLER(ViewHostMsg_AllocTransportDIB, |
| 381 OnAllocTransportDIB) | 384 OnAllocTransportDIB) |
| (...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 836 // static | 839 // static |
| 837 void ResourceMessageFilter::OnV8HeapStatsOnUIThread( | 840 void ResourceMessageFilter::OnV8HeapStatsOnUIThread( |
| 838 int v8_memory_allocated, int v8_memory_used, base::ProcessId renderer_id) { | 841 int v8_memory_allocated, int v8_memory_used, base::ProcessId renderer_id) { |
| 839 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); | 842 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
| 840 TaskManager::GetInstance()->model()->NotifyV8HeapStats( | 843 TaskManager::GetInstance()->model()->NotifyV8HeapStats( |
| 841 renderer_id, | 844 renderer_id, |
| 842 static_cast<size_t>(v8_memory_allocated), | 845 static_cast<size_t>(v8_memory_allocated), |
| 843 static_cast<size_t>(v8_memory_used)); | 846 static_cast<size_t>(v8_memory_used)); |
| 844 } | 847 } |
| 845 | 848 |
| 849 void ResourceMessageFilter::OnDidZoomHost(const std::string& host, |
| 850 int zoom_level) { |
| 851 ChromeThread::PostTask(ChromeThread::UI, FROM_HERE, |
| 852 NewRunnableMethod(this, |
| 853 &ResourceMessageFilter::UpdateHostZoomLevelsOnUIThread, |
| 854 host, zoom_level)); |
| 855 } |
| 856 |
| 857 void ResourceMessageFilter::UpdateHostZoomLevelsOnUIThread( |
| 858 const std::string& host, |
| 859 int zoom_level) { |
| 860 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
| 861 host_zoom_map_->SetZoomLevel(host, zoom_level); |
| 862 |
| 863 // Notify renderers. |
| 864 for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); |
| 865 !i.IsAtEnd(); i.Advance()) { |
| 866 RenderProcessHost* render_process_host = i.GetCurrentValue(); |
| 867 if (render_process_host->profile() == profile_) { |
| 868 render_process_host->Send( |
| 869 new ViewMsg_SetZoomLevelForCurrentHost(host, zoom_level)); |
| 870 } |
| 871 } |
| 872 } |
| 873 |
| 846 void ResourceMessageFilter::OnResolveProxy(const GURL& url, | 874 void ResourceMessageFilter::OnResolveProxy(const GURL& url, |
| 847 IPC::Message* reply_msg) { | 875 IPC::Message* reply_msg) { |
| 848 resolve_proxy_msg_helper_.Start(url, reply_msg); | 876 resolve_proxy_msg_helper_.Start(url, reply_msg); |
| 849 } | 877 } |
| 850 | 878 |
| 851 void ResourceMessageFilter::OnResolveProxyCompleted( | 879 void ResourceMessageFilter::OnResolveProxyCompleted( |
| 852 IPC::Message* reply_msg, | 880 IPC::Message* reply_msg, |
| 853 int result, | 881 int result, |
| 854 const std::string& proxy_list) { | 882 const std::string& proxy_list) { |
| 855 ViewHostMsg_ResolveProxy::WriteReplyParams(reply_msg, result, proxy_list); | 883 ViewHostMsg_ResolveProxy::WriteReplyParams(reply_msg, result, proxy_list); |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 } | 1177 } |
| 1150 | 1178 |
| 1151 #if defined(USE_TCMALLOC) | 1179 #if defined(USE_TCMALLOC) |
| 1152 void ResourceMessageFilter::OnRendererTcmalloc(base::ProcessId pid, | 1180 void ResourceMessageFilter::OnRendererTcmalloc(base::ProcessId pid, |
| 1153 const std::string& output) { | 1181 const std::string& output) { |
| 1154 ChromeThread::PostTask( | 1182 ChromeThread::PostTask( |
| 1155 ChromeThread::UI, FROM_HERE, | 1183 ChromeThread::UI, FROM_HERE, |
| 1156 NewRunnableFunction(AboutTcmallocRendererCallback, pid, output)); | 1184 NewRunnableFunction(AboutTcmallocRendererCallback, pid, output)); |
| 1157 } | 1185 } |
| 1158 #endif | 1186 #endif |
| OLD | NEW |