| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // Represents the browser side of the browser <--> renderer communication | 5 // Represents the browser side of the browser <--> renderer communication |
| 6 // channel. There will be one RenderProcessHost per renderer process. | 6 // channel. There will be one RenderProcessHost per renderer process. |
| 7 | 7 |
| 8 #include "content/browser/renderer_host/render_process_host_impl.h" | 8 #include "content/browser/renderer_host/render_process_host_impl.h" |
| 9 | 9 |
| 10 #if defined(OS_WIN) |
| 11 #include <objbase.h> // For CoInitialize/CoUninitialize. |
| 12 #endif |
| 13 |
| 10 #include <algorithm> | 14 #include <algorithm> |
| 11 #include <limits> | 15 #include <limits> |
| 12 #include <vector> | 16 #include <vector> |
| 13 | 17 |
| 14 #if defined(OS_POSIX) | 18 #if defined(OS_POSIX) |
| 15 #include <utility> // for pair<> | 19 #include <utility> // for pair<> |
| 16 #endif | 20 #endif |
| 17 | 21 |
| 18 #include "base/base_switches.h" | 22 #include "base/base_switches.h" |
| 19 #include "base/bind.h" | 23 #include "base/bind.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 #include "content/browser/renderer_host/quota_dispatcher_host.h" | 70 #include "content/browser/renderer_host/quota_dispatcher_host.h" |
| 67 #include "content/browser/renderer_host/render_message_filter.h" | 71 #include "content/browser/renderer_host/render_message_filter.h" |
| 68 #include "content/browser/renderer_host/render_view_host.h" | 72 #include "content/browser/renderer_host/render_view_host.h" |
| 69 #include "content/browser/renderer_host/render_view_host_delegate.h" | 73 #include "content/browser/renderer_host/render_view_host_delegate.h" |
| 70 #include "content/browser/renderer_host/render_widget_helper.h" | 74 #include "content/browser/renderer_host/render_widget_helper.h" |
| 71 #include "content/browser/renderer_host/render_widget_host.h" | 75 #include "content/browser/renderer_host/render_widget_host.h" |
| 72 #include "content/browser/renderer_host/resource_message_filter.h" | 76 #include "content/browser/renderer_host/resource_message_filter.h" |
| 73 #include "content/browser/renderer_host/socket_stream_dispatcher_host.h" | 77 #include "content/browser/renderer_host/socket_stream_dispatcher_host.h" |
| 74 #include "content/browser/renderer_host/text_input_client_message_filter.h" | 78 #include "content/browser/renderer_host/text_input_client_message_filter.h" |
| 75 #include "content/browser/resolve_proxy_msg_helper.h" | 79 #include "content/browser/resolve_proxy_msg_helper.h" |
| 80 #include "content/browser/resource_context.h" |
| 76 #include "content/browser/speech/speech_input_dispatcher_host.h" | 81 #include "content/browser/speech/speech_input_dispatcher_host.h" |
| 77 #include "content/browser/trace_message_filter.h" | 82 #include "content/browser/trace_message_filter.h" |
| 78 #include "content/browser/user_metrics.h" | 83 #include "content/browser/user_metrics.h" |
| 79 #include "content/browser/webui/web_ui_factory.h" | 84 #include "content/browser/webui/web_ui_factory.h" |
| 80 #include "content/browser/worker_host/worker_message_filter.h" | 85 #include "content/browser/worker_host/worker_message_filter.h" |
| 81 #include "content/common/child_process_host_impl.h" | 86 #include "content/common/child_process_host_impl.h" |
| 82 #include "content/common/child_process_messages.h" | 87 #include "content/common/child_process_messages.h" |
| 83 #include "content/common/gpu/gpu_messages.h" | 88 #include "content/common/gpu/gpu_messages.h" |
| 84 #include "content/public/browser/notification_service.h" | 89 #include "content/public/browser/notification_service.h" |
| 85 #include "content/common/resource_messages.h" | 90 #include "content/common/resource_messages.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 97 #include "media/base/media_switches.h" | 102 #include "media/base/media_switches.h" |
| 98 #include "net/url_request/url_request_context_getter.h" | 103 #include "net/url_request/url_request_context_getter.h" |
| 99 #include "ui/base/ui_base_switches.h" | 104 #include "ui/base/ui_base_switches.h" |
| 100 #include "ui/gfx/gl/gl_switches.h" | 105 #include "ui/gfx/gl/gl_switches.h" |
| 101 #include "webkit/fileapi/file_system_path_manager.h" | 106 #include "webkit/fileapi/file_system_path_manager.h" |
| 102 #include "webkit/fileapi/sandbox_mount_point_provider.h" | 107 #include "webkit/fileapi/sandbox_mount_point_provider.h" |
| 103 #include "webkit/glue/resource_type.h" | 108 #include "webkit/glue/resource_type.h" |
| 104 #include "webkit/plugins/plugin_switches.h" | 109 #include "webkit/plugins/plugin_switches.h" |
| 105 | 110 |
| 106 #if defined(OS_WIN) | 111 #if defined(OS_WIN) |
| 107 #include <objbase.h> | |
| 108 #include "base/synchronization/waitable_event.h" | 112 #include "base/synchronization/waitable_event.h" |
| 109 #include "content/common/font_cache_dispatcher_win.h" | 113 #include "content/common/font_cache_dispatcher_win.h" |
| 110 #endif | 114 #endif |
| 111 | 115 |
| 112 #include "third_party/skia/include/core/SkBitmap.h" | 116 #include "third_party/skia/include/core/SkBitmap.h" |
| 113 | 117 |
| 114 using content::BrowserThread; | 118 using content::BrowserThread; |
| 115 using content::ChildProcessHost; | 119 using content::ChildProcessHost; |
| 116 using content::ChildProcessHostImpl; | 120 using content::ChildProcessHostImpl; |
| 117 | 121 |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 453 | 457 |
| 454 void RenderProcessHostImpl::CreateMessageFilters() { | 458 void RenderProcessHostImpl::CreateMessageFilters() { |
| 455 scoped_refptr<RenderMessageFilter> render_message_filter( | 459 scoped_refptr<RenderMessageFilter> render_message_filter( |
| 456 new RenderMessageFilter( | 460 new RenderMessageFilter( |
| 457 GetID(), | 461 GetID(), |
| 458 PluginService::GetInstance(), | 462 PluginService::GetInstance(), |
| 459 GetBrowserContext(), | 463 GetBrowserContext(), |
| 460 GetBrowserContext()->GetRequestContextForRenderProcess(GetID()), | 464 GetBrowserContext()->GetRequestContextForRenderProcess(GetID()), |
| 461 widget_helper_)); | 465 widget_helper_)); |
| 462 channel_->AddFilter(render_message_filter); | 466 channel_->AddFilter(render_message_filter); |
| 467 content::BrowserContext* browser_context = GetBrowserContext(); |
| 468 const content::ResourceContext* resource_context = |
| 469 &browser_context->GetResourceContext(); |
| 463 | 470 |
| 464 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter( | 471 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter( |
| 465 GetID(), content::PROCESS_TYPE_RENDERER, | 472 GetID(), content::PROCESS_TYPE_RENDERER, |
| 466 &GetBrowserContext()->GetResourceContext(), | 473 resource_context, |
| 467 new RendererURLRequestContextSelector(GetBrowserContext(), GetID()), | 474 new RendererURLRequestContextSelector(browser_context, GetID()), |
| 468 content::GetContentClient()->browser()->GetResourceDispatcherHost()); | 475 content::GetContentClient()->browser()->GetResourceDispatcherHost()); |
| 469 | 476 |
| 470 channel_->AddFilter(resource_message_filter); | 477 channel_->AddFilter(resource_message_filter); |
| 471 channel_->AddFilter(new AudioInputRendererHost( | 478 channel_->AddFilter(new AudioInputRendererHost(resource_context)); |
| 472 &GetBrowserContext()->GetResourceContext())); | 479 channel_->AddFilter(new AudioRendererHost(resource_context)); |
| 473 channel_->AddFilter( | 480 channel_->AddFilter(new VideoCaptureHost(resource_context)); |
| 474 new AudioRendererHost(&GetBrowserContext()->GetResourceContext())); | 481 channel_->AddFilter(new AppCacheDispatcherHost( |
| 475 channel_->AddFilter( | 482 browser_context->GetAppCacheService(), GetID())); |
| 476 new VideoCaptureHost(&GetBrowserContext()->GetResourceContext())); | |
| 477 channel_->AddFilter( | |
| 478 new AppCacheDispatcherHost(GetBrowserContext()->GetAppCacheService(), | |
| 479 GetID())); | |
| 480 channel_->AddFilter(new ClipboardMessageFilter()); | 483 channel_->AddFilter(new ClipboardMessageFilter()); |
| 481 channel_->AddFilter( | 484 channel_->AddFilter(new DOMStorageMessageFilter(GetID(), |
| 482 new DOMStorageMessageFilter(GetID(), | 485 browser_context->GetWebKitContext())); |
| 483 GetBrowserContext()->GetWebKitContext())); | 486 channel_->AddFilter(new IndexedDBDispatcherHost(GetID(), |
| 484 channel_->AddFilter( | 487 browser_context->GetWebKitContext())); |
| 485 new IndexedDBDispatcherHost(GetID(), | 488 channel_->AddFilter(GeolocationDispatcherHost::New( |
| 486 GetBrowserContext()->GetWebKitContext())); | 489 GetID(), browser_context->GetGeolocationPermissionContext())); |
| 487 channel_->AddFilter( | |
| 488 GeolocationDispatcherHost::New( | |
| 489 GetID(), GetBrowserContext()->GetGeolocationPermissionContext())); | |
| 490 channel_->AddFilter(new GpuMessageFilter(GetID(), widget_helper_.get())); | 490 channel_->AddFilter(new GpuMessageFilter(GetID(), widget_helper_.get())); |
| 491 channel_->AddFilter(new media_stream::MediaStreamDispatcherHost( | 491 channel_->AddFilter(new media_stream::MediaStreamDispatcherHost( |
| 492 &GetBrowserContext()->GetResourceContext(), GetID())); | 492 resource_context, GetID())); |
| 493 channel_->AddFilter(new PepperFileMessageFilter(GetID(), | 493 channel_->AddFilter(new PepperFileMessageFilter(GetID(), browser_context)); |
| 494 GetBrowserContext())); | 494 channel_->AddFilter(new PepperMessageFilter(resource_context)); |
| 495 channel_->AddFilter( | |
| 496 new PepperMessageFilter(&GetBrowserContext()->GetResourceContext())); | |
| 497 channel_->AddFilter(new speech_input::SpeechInputDispatcherHost( | 495 channel_->AddFilter(new speech_input::SpeechInputDispatcherHost( |
| 498 GetID(), GetBrowserContext()->GetRequestContext(), | 496 GetID(), browser_context->GetRequestContext(), |
| 499 GetBrowserContext()->GetSpeechInputPreferences())); | 497 browser_context->GetSpeechInputPreferences(), resource_context)); |
| 500 channel_->AddFilter( | 498 channel_->AddFilter(new FileSystemDispatcherHost( |
| 501 new FileSystemDispatcherHost( | 499 browser_context->GetRequestContext(), |
| 502 GetBrowserContext()->GetRequestContext(), | 500 browser_context->GetFileSystemContext())); |
| 503 GetBrowserContext()->GetFileSystemContext())); | |
| 504 channel_->AddFilter(new device_orientation::MessageFilter()); | 501 channel_->AddFilter(new device_orientation::MessageFilter()); |
| 505 channel_->AddFilter( | 502 channel_->AddFilter(new BlobMessageFilter(GetID(), |
| 506 new BlobMessageFilter(GetID(), | 503 browser_context->GetBlobStorageContext())); |
| 507 GetBrowserContext()->GetBlobStorageContext())); | |
| 508 channel_->AddFilter(new FileUtilitiesMessageFilter(GetID())); | 504 channel_->AddFilter(new FileUtilitiesMessageFilter(GetID())); |
| 509 channel_->AddFilter(new MimeRegistryMessageFilter()); | 505 channel_->AddFilter(new MimeRegistryMessageFilter()); |
| 510 channel_->AddFilter(new DatabaseMessageFilter( | 506 channel_->AddFilter(new DatabaseMessageFilter( |
| 511 GetBrowserContext()->GetDatabaseTracker())); | 507 browser_context->GetDatabaseTracker())); |
| 512 #if defined(OS_MACOSX) | 508 #if defined(OS_MACOSX) |
| 513 channel_->AddFilter(new TextInputClientMessageFilter(GetID())); | 509 channel_->AddFilter(new TextInputClientMessageFilter(GetID())); |
| 514 #elif defined(OS_WIN) | 510 #elif defined(OS_WIN) |
| 515 channel_->AddFilter(new FontCacheDispatcher()); | 511 channel_->AddFilter(new FontCacheDispatcher()); |
| 516 #endif | 512 #endif |
| 517 | 513 |
| 518 SocketStreamDispatcherHost* socket_stream_dispatcher_host = | 514 SocketStreamDispatcherHost* socket_stream_dispatcher_host = |
| 519 new SocketStreamDispatcherHost( | 515 new SocketStreamDispatcherHost( |
| 520 new RendererURLRequestContextSelector(GetBrowserContext(), GetID()), | 516 new RendererURLRequestContextSelector(browser_context, GetID()), |
| 521 &GetBrowserContext()->GetResourceContext()); | 517 resource_context); |
| 522 channel_->AddFilter(socket_stream_dispatcher_host); | 518 channel_->AddFilter(socket_stream_dispatcher_host); |
| 523 | 519 |
| 524 channel_->AddFilter( | 520 channel_->AddFilter(new WorkerMessageFilter(GetID(), resource_context, |
| 525 new WorkerMessageFilter( | 521 content::GetContentClient()->browser()->GetResourceDispatcherHost(), |
| 526 GetID(), | 522 base::Bind(&RenderWidgetHelper::GetNextRoutingID, |
| 527 &GetBrowserContext()->GetResourceContext(), | 523 base::Unretained(widget_helper_.get())))); |
| 528 content::GetContentClient()->browser()->GetResourceDispatcherHost(), | |
| 529 base::Bind(&RenderWidgetHelper::GetNextRoutingID, | |
| 530 base::Unretained(widget_helper_.get())))); | |
| 531 | 524 |
| 532 #if defined(ENABLE_P2P_APIS) | 525 #if defined(ENABLE_P2P_APIS) |
| 533 channel_->AddFilter(new content::P2PSocketDispatcherHost( | 526 channel_->AddFilter(new content::P2PSocketDispatcherHost(resource_context)); |
| 534 &GetBrowserContext()->GetResourceContext())); | |
| 535 #endif | 527 #endif |
| 536 | 528 |
| 537 channel_->AddFilter(new TraceMessageFilter()); | 529 channel_->AddFilter(new TraceMessageFilter()); |
| 538 channel_->AddFilter(new ResolveProxyMsgHelper( | 530 channel_->AddFilter(new ResolveProxyMsgHelper( |
| 539 GetBrowserContext()->GetRequestContextForRenderProcess(GetID()))); | 531 browser_context->GetRequestContextForRenderProcess(GetID()))); |
| 540 channel_->AddFilter(new QuotaDispatcherHost( | 532 channel_->AddFilter(new QuotaDispatcherHost(GetID(), |
| 541 GetID(), GetBrowserContext()->GetQuotaManager(), | 533 browser_context->GetQuotaManager(), |
| 542 content::GetContentClient()->browser()->CreateQuotaPermissionContext())); | 534 content::GetContentClient()->browser()->CreateQuotaPermissionContext())); |
| 543 channel_->AddFilter(new content::GamepadBrowserMessageFilter(this)); | 535 channel_->AddFilter(new content::GamepadBrowserMessageFilter(this)); |
| 544 channel_->AddFilter(new ProfilerMessageFilter()); | 536 channel_->AddFilter(new ProfilerMessageFilter()); |
| 545 } | 537 } |
| 546 | 538 |
| 547 int RenderProcessHostImpl::GetNextRoutingID() { | 539 int RenderProcessHostImpl::GetNextRoutingID() { |
| 548 return widget_helper_->GetNextRoutingID(); | 540 return widget_helper_->GetNextRoutingID(); |
| 549 } | 541 } |
| 550 | 542 |
| 551 void RenderProcessHostImpl::UpdateAndSendMaxPageID(int32 page_id) { | 543 void RenderProcessHostImpl::UpdateAndSendMaxPageID(int32 page_id) { |
| (...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1322 void RenderProcessHostImpl::OnRevealFolderInOS(const FilePath& path) { | 1314 void RenderProcessHostImpl::OnRevealFolderInOS(const FilePath& path) { |
| 1323 // Only honor the request if appropriate persmissions are granted. | 1315 // Only honor the request if appropriate persmissions are granted. |
| 1324 if (ChildProcessSecurityPolicy::GetInstance()->CanReadFile(GetID(), path)) | 1316 if (ChildProcessSecurityPolicy::GetInstance()->CanReadFile(GetID(), path)) |
| 1325 content::GetContentClient()->browser()->OpenItem(path); | 1317 content::GetContentClient()->browser()->OpenItem(path); |
| 1326 } | 1318 } |
| 1327 | 1319 |
| 1328 void RenderProcessHostImpl::OnSavedPageAsMHTML(int job_id, int64 data_size) { | 1320 void RenderProcessHostImpl::OnSavedPageAsMHTML(int job_id, int64 data_size) { |
| 1329 content::GetContentClient()->browser()->GetMHTMLGenerationManager()-> | 1321 content::GetContentClient()->browser()->GetMHTMLGenerationManager()-> |
| 1330 MHTMLGenerated(job_id, data_size); | 1322 MHTMLGenerated(job_id, data_size); |
| 1331 } | 1323 } |
| OLD | NEW |