OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/frame_host/render_frame_host_impl.h" | 5 #include "content/browser/frame_host/render_frame_host_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 #include "content/public/common/file_chooser_file_info.h" | 87 #include "content/public/common/file_chooser_file_info.h" |
88 #include "content/public/common/file_chooser_params.h" | 88 #include "content/public/common/file_chooser_params.h" |
89 #include "content/public/common/isolated_world_ids.h" | 89 #include "content/public/common/isolated_world_ids.h" |
90 #include "content/public/common/service_manager_connection.h" | 90 #include "content/public/common/service_manager_connection.h" |
91 #include "content/public/common/url_constants.h" | 91 #include "content/public/common/url_constants.h" |
92 #include "content/public/common/url_utils.h" | 92 #include "content/public/common/url_utils.h" |
93 #include "device/generic_sensor/sensor_provider_impl.h" | 93 #include "device/generic_sensor/sensor_provider_impl.h" |
94 #include "device/geolocation/geolocation_service_context.h" | 94 #include "device/geolocation/geolocation_service_context.h" |
95 #include "device/vibration/vibration_manager_impl.h" | 95 #include "device/vibration/vibration_manager_impl.h" |
96 #include "device/wake_lock/wake_lock_service_context.h" | 96 #include "device/wake_lock/wake_lock_service_context.h" |
| 97 #include "media/base/media_switches.h" |
97 #include "media/mojo/interfaces/media_service.mojom.h" | 98 #include "media/mojo/interfaces/media_service.mojom.h" |
98 #include "media/mojo/interfaces/service_factory.mojom.h" | 99 #include "media/mojo/interfaces/service_factory.mojom.h" |
99 #include "mojo/public/cpp/bindings/associated_interface_ptr.h" | 100 #include "mojo/public/cpp/bindings/associated_interface_ptr.h" |
| 101 #include "mojo/public/cpp/bindings/strong_binding.h" |
100 #include "services/shell/public/cpp/connector.h" | 102 #include "services/shell/public/cpp/connector.h" |
101 #include "services/shell/public/cpp/interface_provider.h" | 103 #include "services/shell/public/cpp/interface_provider.h" |
102 #include "ui/accessibility/ax_tree.h" | 104 #include "ui/accessibility/ax_tree.h" |
103 #include "ui/accessibility/ax_tree_update.h" | 105 #include "ui/accessibility/ax_tree_update.h" |
104 #include "ui/gfx/geometry/quad_f.h" | 106 #include "ui/gfx/geometry/quad_f.h" |
105 #include "url/gurl.h" | 107 #include "url/gurl.h" |
106 | 108 |
107 #if defined(OS_ANDROID) | 109 #if defined(OS_ANDROID) |
108 #include "content/browser/android/app_web_message_port_message_filter.h" | 110 #include "content/browser/android/app_web_message_port_message_filter.h" |
109 #include "content/public/browser/android/java_interfaces.h" | 111 #include "content/public/browser/android/java_interfaces.h" |
110 #if defined(ENABLE_MOJO_CDM) | 112 #if defined(ENABLE_MOJO_CDM) |
111 #include "content/browser/media/android/provision_fetcher_impl.h" | 113 #include "content/browser/media/android/provision_fetcher_impl.h" |
112 #endif | 114 #endif |
| 115 #include "content/browser/media/android/media_player_renderer.h" |
| 116 #include "media/base/audio_renderer_sink.h" |
| 117 #include "media/base/video_renderer_sink.h" |
| 118 #include "media/mojo/services/mojo_renderer_service.h" //nogncheck |
113 #endif | 119 #endif |
114 | 120 |
115 #if defined(OS_MACOSX) | 121 #if defined(OS_MACOSX) |
116 #include "content/browser/frame_host/popup_menu_helper_mac.h" | 122 #include "content/browser/frame_host/popup_menu_helper_mac.h" |
117 #endif | 123 #endif |
118 | 124 |
119 #if defined(ENABLE_WEBVR) | 125 #if defined(ENABLE_WEBVR) |
120 #include "base/command_line.h" | 126 #include "base/command_line.h" |
121 #include "content/public/common/content_switches.h" | 127 #include "content/public/common/content_switches.h" |
122 #include "device/vr/vr_service_impl.h" // nogncheck | 128 #include "device/vr/vr_service_impl.h" // nogncheck |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 RenderFrameHost* RenderFrameHost::FromID(int render_process_id, | 210 RenderFrameHost* RenderFrameHost::FromID(int render_process_id, |
205 int render_frame_id) { | 211 int render_frame_id) { |
206 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id); | 212 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id); |
207 } | 213 } |
208 | 214 |
209 #if defined(OS_ANDROID) | 215 #if defined(OS_ANDROID) |
210 // static | 216 // static |
211 void RenderFrameHost::AllowInjectingJavaScriptForAndroidWebView() { | 217 void RenderFrameHost::AllowInjectingJavaScriptForAndroidWebView() { |
212 g_allow_injecting_javascript = true; | 218 g_allow_injecting_javascript = true; |
213 } | 219 } |
214 #endif | 220 |
| 221 void CreateMediaPlayerRenderer( |
| 222 content::RenderFrameHost* render_frame_host, |
| 223 mojo::InterfaceRequest<media::mojom::Renderer> request) { |
| 224 std::unique_ptr<MediaPlayerRenderer> renderer = |
| 225 base::MakeUnique<MediaPlayerRenderer>(render_frame_host); |
| 226 |
| 227 // base::Unretained is safe here because the lifetime of the MediaPlayerRender |
| 228 // is tied to the lifetime of the MojoRendererService. |
| 229 media::MojoRendererService::InitiateSurfaceRequestCB surface_request_cb = |
| 230 base::Bind(&MediaPlayerRenderer::InitiateScopedSurfaceRequest, |
| 231 base::Unretained(renderer.get())); |
| 232 |
| 233 media::MojoRendererService::Create( |
| 234 nullptr, // CDMs are not supported. |
| 235 nullptr, // Manages its own audio_sink. |
| 236 nullptr, // Does not use video_sink. See StreamTextureWrapper instead. |
| 237 std::move(renderer), surface_request_cb, std::move(request)); |
| 238 } |
| 239 #endif // defined(OS_ANDROID) |
215 | 240 |
216 // static | 241 // static |
217 RenderFrameHostImpl* RenderFrameHostImpl::FromID(int process_id, | 242 RenderFrameHostImpl* RenderFrameHostImpl::FromID(int process_id, |
218 int routing_id) { | 243 int routing_id) { |
219 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 244 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
220 RoutingIDFrameMap* frames = g_routing_id_frame_map.Pointer(); | 245 RoutingIDFrameMap* frames = g_routing_id_frame_map.Pointer(); |
221 RoutingIDFrameMap::iterator it = frames->find( | 246 RoutingIDFrameMap::iterator it = frames->find( |
222 RenderFrameHostID(process_id, routing_id)); | 247 RenderFrameHostID(process_id, routing_id)); |
223 return it == frames->end() ? NULL : it->second; | 248 return it == frames->end() ? NULL : it->second; |
224 } | 249 } |
(...skipping 1956 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2181 GetInterfaceRegistry()->AddInterface(base::Bind( | 2206 GetInterfaceRegistry()->AddInterface(base::Bind( |
2182 &PresentationServiceImpl::CreateMojoService, base::Unretained(this))); | 2207 &PresentationServiceImpl::CreateMojoService, base::Unretained(this))); |
2183 | 2208 |
2184 GetInterfaceRegistry()->AddInterface( | 2209 GetInterfaceRegistry()->AddInterface( |
2185 base::Bind(&MediaSessionServiceImpl::Create, base::Unretained(this))); | 2210 base::Bind(&MediaSessionServiceImpl::Create, base::Unretained(this))); |
2186 | 2211 |
2187 #if defined(OS_ANDROID) | 2212 #if defined(OS_ANDROID) |
2188 GetInterfaceRegistry()->AddInterface( | 2213 GetInterfaceRegistry()->AddInterface( |
2189 GetGlobalJavaInterfaces() | 2214 GetGlobalJavaInterfaces() |
2190 ->CreateInterfaceFactory<device::VibrationManager>()); | 2215 ->CreateInterfaceFactory<device::VibrationManager>()); |
| 2216 |
| 2217 if (base::FeatureList::IsEnabled(media::kAndroidMediaPlayerRenderer)) { |
| 2218 // Creates a MojoRendererService, passing it a MediaPlayerRender. |
| 2219 GetInterfaceRegistry()->AddInterface<media::mojom::Renderer>(base::Bind( |
| 2220 &content::CreateMediaPlayerRenderer, base::Unretained(this))); |
| 2221 } |
2191 #else | 2222 #else |
2192 GetInterfaceRegistry()->AddInterface( | 2223 GetInterfaceRegistry()->AddInterface( |
2193 base::Bind(&device::VibrationManagerImpl::Create)); | 2224 base::Bind(&device::VibrationManagerImpl::Create)); |
2194 #endif | 2225 #endif // defined(OS_ANDROID) |
2195 | 2226 |
2196 bool enable_web_bluetooth = base::CommandLine::ForCurrentProcess()->HasSwitch( | 2227 bool enable_web_bluetooth = base::CommandLine::ForCurrentProcess()->HasSwitch( |
2197 switches::kEnableWebBluetooth); | 2228 switches::kEnableWebBluetooth); |
2198 #if defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_MACOSX) | 2229 #if defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_MACOSX) |
2199 enable_web_bluetooth = true; | 2230 enable_web_bluetooth = true; |
2200 #endif | 2231 #endif |
2201 | 2232 |
2202 if (enable_web_bluetooth) { | 2233 if (enable_web_bluetooth) { |
2203 GetInterfaceRegistry()->AddInterface(base::Bind( | 2234 GetInterfaceRegistry()->AddInterface(base::Bind( |
2204 base::IgnoreResult(&RenderFrameHostImpl::CreateWebBluetoothService), | 2235 base::IgnoreResult(&RenderFrameHostImpl::CreateWebBluetoothService), |
(...skipping 948 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3153 web_bluetooth_service_->SetClientConnectionErrorHandler(base::Bind( | 3184 web_bluetooth_service_->SetClientConnectionErrorHandler(base::Bind( |
3154 &RenderFrameHostImpl::DeleteWebBluetoothService, base::Unretained(this))); | 3185 &RenderFrameHostImpl::DeleteWebBluetoothService, base::Unretained(this))); |
3155 return web_bluetooth_service_.get(); | 3186 return web_bluetooth_service_.get(); |
3156 } | 3187 } |
3157 | 3188 |
3158 void RenderFrameHostImpl::DeleteWebBluetoothService() { | 3189 void RenderFrameHostImpl::DeleteWebBluetoothService() { |
3159 web_bluetooth_service_.reset(); | 3190 web_bluetooth_service_.reset(); |
3160 } | 3191 } |
3161 | 3192 |
3162 } // namespace content | 3193 } // namespace content |
OLD | NEW |