OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 881 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
892 | 892 |
893 scoped_refptr<net::URLRequestContextGetter> request_context( | 893 scoped_refptr<net::URLRequestContextGetter> request_context( |
894 browser_context->GetRequestContextForRenderProcess(GetID())); | 894 browser_context->GetRequestContextForRenderProcess(GetID())); |
895 scoped_refptr<net::URLRequestContextGetter> media_request_context( | 895 scoped_refptr<net::URLRequestContextGetter> media_request_context( |
896 browser_context->GetMediaRequestContextForRenderProcess(GetID())); | 896 browser_context->GetMediaRequestContextForRenderProcess(GetID())); |
897 | 897 |
898 ResourceMessageFilter::GetContextsCallback get_contexts_callback( | 898 ResourceMessageFilter::GetContextsCallback get_contexts_callback( |
899 base::Bind(&GetContexts, browser_context->GetResourceContext(), | 899 base::Bind(&GetContexts, browser_context->GetResourceContext(), |
900 request_context, media_request_context)); | 900 request_context, media_request_context)); |
901 | 901 |
| 902 // Several filters need the Blob storage context, so fetch it in advance. |
| 903 scoped_refptr<ChromeBlobStorageContext> blob_storage_context = |
| 904 ChromeBlobStorageContext::GetFor(browser_context); |
| 905 |
902 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter( | 906 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter( |
903 GetID(), PROCESS_TYPE_RENDERER, | 907 GetID(), PROCESS_TYPE_RENDERER, |
904 storage_partition_impl_->GetAppCacheService(), | 908 storage_partition_impl_->GetAppCacheService(), |
905 ChromeBlobStorageContext::GetFor(browser_context), | 909 blob_storage_context.get(), |
906 storage_partition_impl_->GetFileSystemContext(), | 910 storage_partition_impl_->GetFileSystemContext(), |
907 storage_partition_impl_->GetServiceWorkerContext(), | 911 storage_partition_impl_->GetServiceWorkerContext(), |
908 storage_partition_impl_->GetHostZoomLevelContext(), | 912 storage_partition_impl_->GetHostZoomLevelContext(), |
909 get_contexts_callback); | 913 get_contexts_callback); |
910 | 914 |
911 AddFilter(resource_message_filter); | 915 AddFilter(resource_message_filter); |
912 MediaStreamManager* media_stream_manager = | 916 MediaStreamManager* media_stream_manager = |
913 BrowserMainLoop::GetInstance()->media_stream_manager(); | 917 BrowserMainLoop::GetInstance()->media_stream_manager(); |
914 // The AudioInputRendererHost and AudioRendererHost needs to be available for | 918 // The AudioInputRendererHost and AudioRendererHost needs to be available for |
915 // lookup, so it's stashed in a member variable. | 919 // lookup, so it's stashed in a member variable. |
(...skipping 11 matching lines...) Expand all Loading... |
927 new MidiHost(GetID(), BrowserMainLoop::GetInstance()->midi_manager())); | 931 new MidiHost(GetID(), BrowserMainLoop::GetInstance()->midi_manager())); |
928 AddFilter(new VideoCaptureHost(media_stream_manager)); | 932 AddFilter(new VideoCaptureHost(media_stream_manager)); |
929 AddFilter(new AppCacheDispatcherHost( | 933 AddFilter(new AppCacheDispatcherHost( |
930 storage_partition_impl_->GetAppCacheService(), GetID())); | 934 storage_partition_impl_->GetAppCacheService(), GetID())); |
931 AddFilter(new ClipboardMessageFilter); | 935 AddFilter(new ClipboardMessageFilter); |
932 AddFilter(new DOMStorageMessageFilter( | 936 AddFilter(new DOMStorageMessageFilter( |
933 storage_partition_impl_->GetDOMStorageContext())); | 937 storage_partition_impl_->GetDOMStorageContext())); |
934 AddFilter(new IndexedDBDispatcherHost( | 938 AddFilter(new IndexedDBDispatcherHost( |
935 GetID(), storage_partition_impl_->GetURLRequestContext(), | 939 GetID(), storage_partition_impl_->GetURLRequestContext(), |
936 storage_partition_impl_->GetIndexedDBContext(), | 940 storage_partition_impl_->GetIndexedDBContext(), |
937 ChromeBlobStorageContext::GetFor(browser_context))); | 941 blob_storage_context.get())); |
938 | 942 |
939 gpu_message_filter_ = new GpuMessageFilter(GetID()); | 943 gpu_message_filter_ = new GpuMessageFilter(GetID()); |
940 AddFilter(gpu_message_filter_); | 944 AddFilter(gpu_message_filter_); |
941 #if defined(ENABLE_WEBRTC) | 945 #if defined(ENABLE_WEBRTC) |
942 AddFilter(new WebRTCIdentityServiceHost( | 946 AddFilter(new WebRTCIdentityServiceHost( |
943 GetID(), storage_partition_impl_->GetWebRTCIdentityStore(), | 947 GetID(), storage_partition_impl_->GetWebRTCIdentityStore(), |
944 resource_context)); | 948 resource_context)); |
945 peer_connection_tracker_host_ = new PeerConnectionTrackerHost(GetID()); | 949 peer_connection_tracker_host_ = new PeerConnectionTrackerHost(GetID()); |
946 AddFilter(peer_connection_tracker_host_.get()); | 950 AddFilter(peer_connection_tracker_host_.get()); |
947 AddFilter(new MediaStreamDispatcherHost( | 951 AddFilter(new MediaStreamDispatcherHost( |
948 GetID(), browser_context->GetResourceContext()->GetMediaDeviceIDSalt(), | 952 GetID(), browser_context->GetResourceContext()->GetMediaDeviceIDSalt(), |
949 media_stream_manager)); | 953 media_stream_manager)); |
950 AddFilter(new MediaStreamTrackMetricsHost()); | 954 AddFilter(new MediaStreamTrackMetricsHost()); |
951 #endif | 955 #endif |
952 #if defined(ENABLE_PLUGINS) | 956 #if defined(ENABLE_PLUGINS) |
953 AddFilter(new PepperRendererConnection(GetID())); | 957 AddFilter(new PepperRendererConnection(GetID())); |
954 #endif | 958 #endif |
955 AddFilter(new SpeechRecognitionDispatcherHost( | 959 AddFilter(new SpeechRecognitionDispatcherHost( |
956 GetID(), storage_partition_impl_->GetURLRequestContext())); | 960 GetID(), storage_partition_impl_->GetURLRequestContext())); |
957 AddFilter(new FileAPIMessageFilter( | 961 AddFilter(new FileAPIMessageFilter( |
958 GetID(), storage_partition_impl_->GetURLRequestContext(), | 962 GetID(), storage_partition_impl_->GetURLRequestContext(), |
959 storage_partition_impl_->GetFileSystemContext(), | 963 storage_partition_impl_->GetFileSystemContext(), |
960 ChromeBlobStorageContext::GetFor(browser_context), | 964 blob_storage_context.get(), StreamContext::GetFor(browser_context))); |
961 StreamContext::GetFor(browser_context))); | |
962 AddFilter(new FileUtilitiesMessageFilter(GetID())); | 965 AddFilter(new FileUtilitiesMessageFilter(GetID())); |
963 AddFilter(new MimeRegistryMessageFilter()); | 966 AddFilter(new MimeRegistryMessageFilter()); |
964 AddFilter( | 967 AddFilter( |
965 new DatabaseMessageFilter(storage_partition_impl_->GetDatabaseTracker())); | 968 new DatabaseMessageFilter(storage_partition_impl_->GetDatabaseTracker())); |
966 #if defined(OS_MACOSX) | 969 #if defined(OS_MACOSX) |
967 AddFilter(new TextInputClientMessageFilter(GetID())); | 970 AddFilter(new TextInputClientMessageFilter(GetID())); |
968 #elif defined(OS_WIN) | 971 #elif defined(OS_WIN) |
969 AddFilter(new DWriteFontProxyMessageFilter()); | 972 AddFilter(new DWriteFontProxyMessageFilter()); |
970 | 973 |
971 // The FontCacheDispatcher is required only when we're using GDI rendering. | 974 // The FontCacheDispatcher is required only when we're using GDI rendering. |
972 // TODO(scottmg): pdf/ppapi still require the renderer to be able to precache | 975 // TODO(scottmg): pdf/ppapi still require the renderer to be able to precache |
973 // GDI fonts (http://crbug.com/383227), even when using DirectWrite. This | 976 // GDI fonts (http://crbug.com/383227), even when using DirectWrite. This |
974 // should eventually be if (!ShouldUseDirectWrite()) guarded. | 977 // should eventually be if (!ShouldUseDirectWrite()) guarded. |
975 channel_->AddFilter(new FontCacheDispatcher()); | 978 channel_->AddFilter(new FontCacheDispatcher()); |
976 #elif defined(OS_ANDROID) | 979 #elif defined(OS_ANDROID) |
977 browser_demuxer_android_ = new BrowserDemuxerAndroid(); | 980 browser_demuxer_android_ = new BrowserDemuxerAndroid(); |
978 AddFilter(browser_demuxer_android_.get()); | 981 AddFilter(browser_demuxer_android_.get()); |
979 #endif | 982 #endif |
980 #if defined(ENABLE_BROWSER_CDMS) | 983 #if defined(ENABLE_BROWSER_CDMS) |
981 AddFilter(new BrowserCdmManager(GetID(), NULL)); | 984 AddFilter(new BrowserCdmManager(GetID(), NULL)); |
982 #endif | 985 #endif |
983 | 986 |
984 WebSocketDispatcherHost::GetRequestContextCallback | 987 WebSocketDispatcherHost::GetRequestContextCallback |
985 websocket_request_context_callback( | 988 websocket_request_context_callback( |
986 base::Bind(&GetRequestContext, request_context, media_request_context, | 989 base::Bind(&GetRequestContext, request_context, media_request_context, |
987 RESOURCE_TYPE_SUB_RESOURCE)); | 990 RESOURCE_TYPE_SUB_RESOURCE)); |
988 | 991 |
989 AddFilter( | 992 AddFilter(new WebSocketDispatcherHost( |
990 new WebSocketDispatcherHost(GetID(), websocket_request_context_callback)); | 993 GetID(), websocket_request_context_callback, blob_storage_context.get(), |
| 994 storage_partition_impl_)); |
991 | 995 |
992 message_port_message_filter_ = new MessagePortMessageFilter( | 996 message_port_message_filter_ = new MessagePortMessageFilter( |
993 base::Bind(&RenderWidgetHelper::GetNextRoutingID, | 997 base::Bind(&RenderWidgetHelper::GetNextRoutingID, |
994 base::Unretained(widget_helper_.get()))); | 998 base::Unretained(widget_helper_.get()))); |
995 AddFilter(message_port_message_filter_.get()); | 999 AddFilter(message_port_message_filter_.get()); |
996 | 1000 |
997 scoped_refptr<CacheStorageDispatcherHost> cache_storage_filter = | 1001 scoped_refptr<CacheStorageDispatcherHost> cache_storage_filter = |
998 new CacheStorageDispatcherHost(); | 1002 new CacheStorageDispatcherHost(); |
999 cache_storage_filter->Init(storage_partition_impl_->GetCacheStorageContext()); | 1003 cache_storage_filter->Init(storage_partition_impl_->GetCacheStorageContext()); |
1000 AddFilter(cache_storage_filter.get()); | 1004 AddFilter(cache_storage_filter.get()); |
(...skipping 1787 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2788 void RenderProcessHostImpl::GetAudioOutputControllers( | 2792 void RenderProcessHostImpl::GetAudioOutputControllers( |
2789 const GetAudioOutputControllersCallback& callback) const { | 2793 const GetAudioOutputControllersCallback& callback) const { |
2790 audio_renderer_host()->GetOutputControllers(callback); | 2794 audio_renderer_host()->GetOutputControllers(callback); |
2791 } | 2795 } |
2792 | 2796 |
2793 BluetoothDispatcherHost* RenderProcessHostImpl::GetBluetoothDispatcherHost() { | 2797 BluetoothDispatcherHost* RenderProcessHostImpl::GetBluetoothDispatcherHost() { |
2794 return bluetooth_dispatcher_host_.get(); | 2798 return bluetooth_dispatcher_host_.get(); |
2795 } | 2799 } |
2796 | 2800 |
2797 } // namespace content | 2801 } // namespace content |
OLD | NEW |