| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 namespace { | 157 namespace { |
| 158 | 158 |
| 159 void CacheShaderInfo(int32 id, base::FilePath path) { | 159 void CacheShaderInfo(int32 id, base::FilePath path) { |
| 160 ShaderCacheFactory::GetInstance()->SetCacheInfo(id, path); | 160 ShaderCacheFactory::GetInstance()->SetCacheInfo(id, path); |
| 161 } | 161 } |
| 162 | 162 |
| 163 void RemoveShaderInfo(int32 id) { | 163 void RemoveShaderInfo(int32 id) { |
| 164 ShaderCacheFactory::GetInstance()->RemoveCacheInfo(id); | 164 ShaderCacheFactory::GetInstance()->RemoveCacheInfo(id); |
| 165 } | 165 } |
| 166 | 166 |
| 167 // Helper class that we pass to ResourceMessageFilter so that it can find the | 167 net::URLRequestContext* GetRequestContext( |
| 168 // right net::URLRequestContext for a request. | 168 scoped_refptr<net::URLRequestContextGetter> request_context, |
| 169 class RendererURLRequestContextSelector | 169 scoped_refptr<net::URLRequestContextGetter> media_request_context, |
| 170 : public ResourceMessageFilter::URLRequestContextSelector { | 170 ResourceType::Type resource_type) { |
| 171 public: | 171 // If the request has resource type of ResourceType::MEDIA, we use a request |
| 172 RendererURLRequestContextSelector(BrowserContext* browser_context, | 172 // context specific to media for handling it because these resources have |
| 173 int render_child_id) | 173 // specific needs for caching. |
| 174 : request_context_(browser_context->GetRequestContextForRenderProcess( | 174 if (resource_type == ResourceType::MEDIA) |
| 175 render_child_id)), | 175 return media_request_context->GetURLRequestContext(); |
| 176 media_request_context_( | 176 return request_context->GetURLRequestContext(); |
| 177 browser_context->GetMediaRequestContextForRenderProcess( | 177 } |
| 178 render_child_id)) { | |
| 179 } | |
| 180 | 178 |
| 181 virtual net::URLRequestContext* GetRequestContext( | 179 void GetContexts( |
| 182 ResourceType::Type resource_type) OVERRIDE { | 180 ResourceContext* resource_context, |
| 183 net::URLRequestContextGetter* request_context = request_context_.get(); | 181 scoped_refptr<net::URLRequestContextGetter> request_context, |
| 184 // If the request has resource type of ResourceType::MEDIA, we use a request | 182 scoped_refptr<net::URLRequestContextGetter> media_request_context, |
| 185 // context specific to media for handling it because these resources have | 183 const ResourceHostMsg_Request& request, |
| 186 // specific needs for caching. | 184 ResourceContext** resource_context_out, |
| 187 if (resource_type == ResourceType::MEDIA) | 185 net::URLRequestContext** request_context_out) { |
| 188 request_context = media_request_context_.get(); | 186 *resource_context_out = resource_context; |
| 189 return request_context->GetURLRequestContext(); | 187 *request_context_out = |
| 190 } | 188 GetRequestContext(request_context, media_request_context, |
| 191 | 189 request.resource_type); |
| 192 private: | 190 } |
| 193 virtual ~RendererURLRequestContextSelector() {} | |
| 194 | |
| 195 scoped_refptr<net::URLRequestContextGetter> request_context_; | |
| 196 scoped_refptr<net::URLRequestContextGetter> media_request_context_; | |
| 197 }; | |
| 198 | 191 |
| 199 // the global list of all renderer processes | 192 // the global list of all renderer processes |
| 200 base::LazyInstance<IDMap<RenderProcessHost> >::Leaky | 193 base::LazyInstance<IDMap<RenderProcessHost> >::Leaky |
| 201 g_all_hosts = LAZY_INSTANCE_INITIALIZER; | 194 g_all_hosts = LAZY_INSTANCE_INITIALIZER; |
| 202 | 195 |
| 203 base::LazyInstance<scoped_refptr<BrowserPluginGeolocationPermissionContext> > | 196 base::LazyInstance<scoped_refptr<BrowserPluginGeolocationPermissionContext> > |
| 204 g_browser_plugin_geolocation_context = LAZY_INSTANCE_INITIALIZER; | 197 g_browser_plugin_geolocation_context = LAZY_INSTANCE_INITIALIZER; |
| 205 | 198 |
| 206 // Map of site to process, to ensure we only have one RenderProcessHost per | 199 // Map of site to process, to ensure we only have one RenderProcessHost per |
| 207 // site in process-per-site mode. Each map is specific to a BrowserContext. | 200 // site in process-per-site mode. Each map is specific to a BrowserContext. |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 556 GetBrowserContext(), | 549 GetBrowserContext(), |
| 557 GetBrowserContext()->GetRequestContextForRenderProcess(GetID()), | 550 GetBrowserContext()->GetRequestContextForRenderProcess(GetID()), |
| 558 widget_helper_.get(), | 551 widget_helper_.get(), |
| 559 audio_manager, | 552 audio_manager, |
| 560 media_internals, | 553 media_internals, |
| 561 storage_partition_impl_->GetDOMStorageContext())); | 554 storage_partition_impl_->GetDOMStorageContext())); |
| 562 channel_->AddFilter(render_message_filter.get()); | 555 channel_->AddFilter(render_message_filter.get()); |
| 563 BrowserContext* browser_context = GetBrowserContext(); | 556 BrowserContext* browser_context = GetBrowserContext(); |
| 564 ResourceContext* resource_context = browser_context->GetResourceContext(); | 557 ResourceContext* resource_context = browser_context->GetResourceContext(); |
| 565 | 558 |
| 559 scoped_refptr<net::URLRequestContextGetter> request_context( |
| 560 browser_context->GetRequestContextForRenderProcess(GetID())); |
| 561 scoped_refptr<net::URLRequestContextGetter> media_request_context( |
| 562 browser_context->GetMediaRequestContextForRenderProcess(GetID())); |
| 563 |
| 564 ResourceMessageFilter::GetContextsCallback get_contexts_callback( |
| 565 base::Bind(&GetContexts, browser_context->GetResourceContext(), |
| 566 request_context, media_request_context)); |
| 567 |
| 566 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter( | 568 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter( |
| 567 GetID(), PROCESS_TYPE_RENDERER, resource_context, | 569 GetID(), PROCESS_TYPE_RENDERER, |
| 568 storage_partition_impl_->GetAppCacheService(), | 570 storage_partition_impl_->GetAppCacheService(), |
| 569 ChromeBlobStorageContext::GetFor(browser_context), | 571 ChromeBlobStorageContext::GetFor(browser_context), |
| 570 storage_partition_impl_->GetFileSystemContext(), | 572 storage_partition_impl_->GetFileSystemContext(), |
| 571 new RendererURLRequestContextSelector(browser_context, GetID())); | 573 get_contexts_callback); |
| 572 | 574 |
| 573 channel_->AddFilter(resource_message_filter); | 575 channel_->AddFilter(resource_message_filter); |
| 574 MediaStreamManager* media_stream_manager = | 576 MediaStreamManager* media_stream_manager = |
| 575 BrowserMainLoop::GetInstance()->media_stream_manager(); | 577 BrowserMainLoop::GetInstance()->media_stream_manager(); |
| 576 channel_->AddFilter(new AudioInputRendererHost( | 578 channel_->AddFilter(new AudioInputRendererHost( |
| 577 audio_manager, | 579 audio_manager, |
| 578 media_stream_manager, | 580 media_stream_manager, |
| 579 BrowserMainLoop::GetInstance()->audio_mirroring_manager(), | 581 BrowserMainLoop::GetInstance()->audio_mirroring_manager(), |
| 580 BrowserMainLoop::GetInstance()->user_input_monitor())); | 582 BrowserMainLoop::GetInstance()->user_input_monitor())); |
| 581 channel_->AddFilter(new AudioRendererHost( | 583 channel_->AddFilter(new AudioRendererHost( |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 channel_->AddFilter(new FileUtilitiesMessageFilter(GetID())); | 642 channel_->AddFilter(new FileUtilitiesMessageFilter(GetID())); |
| 641 channel_->AddFilter(new MimeRegistryMessageFilter()); | 643 channel_->AddFilter(new MimeRegistryMessageFilter()); |
| 642 channel_->AddFilter(new DatabaseMessageFilter( | 644 channel_->AddFilter(new DatabaseMessageFilter( |
| 643 storage_partition_impl_->GetDatabaseTracker())); | 645 storage_partition_impl_->GetDatabaseTracker())); |
| 644 #if defined(OS_MACOSX) | 646 #if defined(OS_MACOSX) |
| 645 channel_->AddFilter(new TextInputClientMessageFilter(GetID())); | 647 channel_->AddFilter(new TextInputClientMessageFilter(GetID())); |
| 646 #elif defined(OS_WIN) | 648 #elif defined(OS_WIN) |
| 647 channel_->AddFilter(new FontCacheDispatcher()); | 649 channel_->AddFilter(new FontCacheDispatcher()); |
| 648 #endif | 650 #endif |
| 649 | 651 |
| 652 SocketStreamDispatcherHost::GetRequestContextCallback |
| 653 request_context_callback( |
| 654 base::Bind(&GetRequestContext, request_context, |
| 655 media_request_context)); |
| 656 |
| 650 SocketStreamDispatcherHost* socket_stream_dispatcher_host = | 657 SocketStreamDispatcherHost* socket_stream_dispatcher_host = |
| 651 new SocketStreamDispatcherHost(GetID(), | 658 new SocketStreamDispatcherHost( |
| 652 new RendererURLRequestContextSelector(browser_context, GetID()), | 659 GetID(), request_context_callback, resource_context); |
| 653 resource_context); | |
| 654 channel_->AddFilter(socket_stream_dispatcher_host); | 660 channel_->AddFilter(socket_stream_dispatcher_host); |
| 655 | 661 |
| 656 channel_->AddFilter(new WorkerMessageFilter( | 662 channel_->AddFilter(new WorkerMessageFilter( |
| 657 GetID(), | 663 GetID(), |
| 658 resource_context, | 664 resource_context, |
| 659 WorkerStoragePartition( | 665 WorkerStoragePartition( |
| 660 storage_partition_impl_->GetURLRequestContext(), | 666 storage_partition_impl_->GetURLRequestContext(), |
| 661 storage_partition_impl_->GetMediaURLRequestContext(), | 667 storage_partition_impl_->GetMediaURLRequestContext(), |
| 662 storage_partition_impl_->GetAppCacheService(), | 668 storage_partition_impl_->GetAppCacheService(), |
| 663 storage_partition_impl_->GetQuotaManager(), | 669 storage_partition_impl_->GetQuotaManager(), |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 835 const CommandLine& browser_cmd, | 841 const CommandLine& browser_cmd, |
| 836 CommandLine* renderer_cmd) const { | 842 CommandLine* renderer_cmd) const { |
| 837 // Propagate the following switches to the renderer command line (along | 843 // Propagate the following switches to the renderer command line (along |
| 838 // with any associated values) if present in the browser command line. | 844 // with any associated values) if present in the browser command line. |
| 839 static const char* const kSwitchNames[] = { | 845 static const char* const kSwitchNames[] = { |
| 840 switches::kAllowFiltersOverIPC, | 846 switches::kAllowFiltersOverIPC, |
| 841 switches::kAudioBufferSize, | 847 switches::kAudioBufferSize, |
| 842 switches::kAuditAllHandles, | 848 switches::kAuditAllHandles, |
| 843 switches::kAuditHandles, | 849 switches::kAuditHandles, |
| 844 switches::kBlockCrossSiteDocuments, | 850 switches::kBlockCrossSiteDocuments, |
| 851 switches::kDirectNPAPIRequests, |
| 845 switches::kDisable3DAPIs, | 852 switches::kDisable3DAPIs, |
| 846 switches::kDisableAcceleratedCompositing, | 853 switches::kDisableAcceleratedCompositing, |
| 847 switches::kDisableAcceleratedVideoDecode, | 854 switches::kDisableAcceleratedVideoDecode, |
| 848 switches::kDisableApplicationCache, | 855 switches::kDisableApplicationCache, |
| 849 switches::kDisableAudio, | 856 switches::kDisableAudio, |
| 850 switches::kDisableBreakpad, | 857 switches::kDisableBreakpad, |
| 851 switches::kDisableDatabases, | 858 switches::kDisableDatabases, |
| 852 switches::kDisableDelegatedRenderer, | 859 switches::kDisableDelegatedRenderer, |
| 853 switches::kDisableDesktopNotifications, | 860 switches::kDisableDesktopNotifications, |
| 854 switches::kDisableDeviceOrientation, | 861 switches::kDisableDeviceOrientation, |
| (...skipping 914 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1769 // Skip widgets in other processes. | 1776 // Skip widgets in other processes. |
| 1770 if (widgets[i]->GetProcess()->GetID() != GetID()) | 1777 if (widgets[i]->GetProcess()->GetID() != GetID()) |
| 1771 continue; | 1778 continue; |
| 1772 | 1779 |
| 1773 RenderViewHost* rvh = RenderViewHost::From(widgets[i]); | 1780 RenderViewHost* rvh = RenderViewHost::From(widgets[i]); |
| 1774 rvh->UpdateWebkitPreferences(rvh->GetWebkitPreferences()); | 1781 rvh->UpdateWebkitPreferences(rvh->GetWebkitPreferences()); |
| 1775 } | 1782 } |
| 1776 } | 1783 } |
| 1777 | 1784 |
| 1778 } // namespace content | 1785 } // namespace content |
| OLD | NEW |