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/renderer/render_frame_impl.h" | 5 #include "content/renderer/render_frame_impl.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1089 remote_interfaces_.reset(new shell::InterfaceProvider); | 1089 remote_interfaces_.reset(new shell::InterfaceProvider); |
1090 remote_interfaces_->Bind(std::move(remote_interfaces)); | 1090 remote_interfaces_->Bind(std::move(remote_interfaces)); |
1091 blink_interface_provider_.reset(new BlinkInterfaceProviderImpl( | 1091 blink_interface_provider_.reset(new BlinkInterfaceProviderImpl( |
1092 remote_interfaces_->GetWeakPtr())); | 1092 remote_interfaces_->GetWeakPtr())); |
1093 | 1093 |
1094 std::pair<RoutingIDFrameMap::iterator, bool> result = | 1094 std::pair<RoutingIDFrameMap::iterator, bool> result = |
1095 g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this)); | 1095 g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this)); |
1096 CHECK(result.second) << "Inserting a duplicate item."; | 1096 CHECK(result.second) << "Inserting a duplicate item."; |
1097 | 1097 |
1098 RenderThread::Get()->AddRoute(routing_id_, this); | 1098 RenderThread::Get()->AddRoute(routing_id_, this); |
| 1099 RenderThread::Get()->AddRoutedInterfaces(routing_id_, this); |
1099 | 1100 |
1100 render_view_->RegisterRenderFrame(this); | 1101 render_view_->RegisterRenderFrame(this); |
1101 | 1102 |
1102 // Everything below subclasses RenderFrameObserver and is automatically | 1103 // Everything below subclasses RenderFrameObserver and is automatically |
1103 // deleted when the RenderFrame gets deleted. | 1104 // deleted when the RenderFrame gets deleted. |
1104 #if defined(OS_ANDROID) | 1105 #if defined(OS_ANDROID) |
1105 new GinJavaBridgeDispatcher(this); | 1106 new GinJavaBridgeDispatcher(this); |
1106 #endif | 1107 #endif |
1107 | 1108 |
1108 #if defined(ENABLE_PLUGINS) | 1109 #if defined(ENABLE_PLUGINS) |
(...skipping 1279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2388 } | 2389 } |
2389 | 2390 |
2390 shell::InterfaceRegistry* RenderFrameImpl::GetInterfaceRegistry() { | 2391 shell::InterfaceRegistry* RenderFrameImpl::GetInterfaceRegistry() { |
2391 return interface_registry_.get(); | 2392 return interface_registry_.get(); |
2392 } | 2393 } |
2393 | 2394 |
2394 shell::InterfaceProvider* RenderFrameImpl::GetRemoteInterfaces() { | 2395 shell::InterfaceProvider* RenderFrameImpl::GetRemoteInterfaces() { |
2395 return remote_interfaces_.get(); | 2396 return remote_interfaces_.get(); |
2396 } | 2397 } |
2397 | 2398 |
| 2399 void RenderFrameImpl::AddRoutedInterface( |
| 2400 const base::StringPiece& name, |
| 2401 const GenericRoutedInterfaceFactory& factory) { |
| 2402 auto result = |
| 2403 routed_interfaces_.insert(std::make_pair(name.as_string(), factory)); |
| 2404 DCHECK(result.second); |
| 2405 } |
| 2406 |
| 2407 void RenderFrameImpl::RemoveRoutedInterface(const base::StringPiece& name) { |
| 2408 auto it = routed_interfaces_.find(name.as_string()); |
| 2409 DCHECK(it != routed_interfaces_.end()); |
| 2410 routed_interfaces_.erase(it); |
| 2411 } |
| 2412 |
| 2413 void RenderFrameImpl::GetRemoteRoutedInterface( |
| 2414 const base::StringPiece& name, |
| 2415 mojo::ScopedInterfaceEndpointHandle handle) { |
| 2416 mojom::RoutedInterfaceAssociatedRequest request; |
| 2417 request.Bind(std::move(handle)); |
| 2418 GetRemoteRoutedInterfaces()->GetRoutedInterface(name.as_string(), |
| 2419 std::move(request)); |
| 2420 } |
| 2421 |
2398 #if defined(ENABLE_PLUGINS) | 2422 #if defined(ENABLE_PLUGINS) |
2399 void RenderFrameImpl::RegisterPeripheralPlugin( | 2423 void RenderFrameImpl::RegisterPeripheralPlugin( |
2400 const url::Origin& content_origin, | 2424 const url::Origin& content_origin, |
2401 const base::Closure& unthrottle_callback) { | 2425 const base::Closure& unthrottle_callback) { |
2402 return plugin_power_saver_helper_->RegisterPeripheralPlugin( | 2426 return plugin_power_saver_helper_->RegisterPeripheralPlugin( |
2403 content_origin, unthrottle_callback); | 2427 content_origin, unthrottle_callback); |
2404 } | 2428 } |
2405 | 2429 |
2406 RenderFrame::PeripheralContentStatus | 2430 RenderFrame::PeripheralContentStatus |
2407 RenderFrameImpl::GetPeripheralContentStatus( | 2431 RenderFrameImpl::GetPeripheralContentStatus( |
(...skipping 3759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6167 } | 6191 } |
6168 | 6192 |
6169 void RenderFrameImpl::RegisterMojoInterfaces() { | 6193 void RenderFrameImpl::RegisterMojoInterfaces() { |
6170 // Only main frame have ImageDownloader service. | 6194 // Only main frame have ImageDownloader service. |
6171 if (!frame_->parent()) { | 6195 if (!frame_->parent()) { |
6172 GetInterfaceRegistry()->AddInterface(base::Bind( | 6196 GetInterfaceRegistry()->AddInterface(base::Bind( |
6173 &ImageDownloaderImpl::CreateMojoService, base::Unretained(this))); | 6197 &ImageDownloaderImpl::CreateMojoService, base::Unretained(this))); |
6174 } | 6198 } |
6175 } | 6199 } |
6176 | 6200 |
| 6201 mojom::RoutedInterfaceProvider* RenderFrameImpl::GetRemoteRoutedInterfaces() { |
| 6202 if (!remote_routed_interfaces_) { |
| 6203 RenderThread* render_thread = RenderThread::Get(); |
| 6204 render_thread->GetRemoteRouteProvider()->GetRoutedInterfaces( |
| 6205 GetRoutingID(), |
| 6206 mojo::GetProxy(&remote_routed_interfaces_, |
| 6207 render_thread->GetChannel()->GetAssociatedGroup())); |
| 6208 } |
| 6209 |
| 6210 return remote_routed_interfaces_.get(); |
| 6211 } |
| 6212 |
6177 template <typename Interface> | 6213 template <typename Interface> |
6178 void RenderFrameImpl::GetInterface(mojo::InterfaceRequest<Interface> request) { | 6214 void RenderFrameImpl::GetInterface(mojo::InterfaceRequest<Interface> request) { |
6179 GetRemoteInterfaces()->GetInterface(std::move(request)); | 6215 GetRemoteInterfaces()->GetInterface(std::move(request)); |
6180 } | 6216 } |
6181 | 6217 |
6182 media::RendererWebMediaPlayerDelegate* | 6218 media::RendererWebMediaPlayerDelegate* |
6183 RenderFrameImpl::GetWebMediaPlayerDelegate() { | 6219 RenderFrameImpl::GetWebMediaPlayerDelegate() { |
6184 if (!media_player_delegate_) | 6220 if (!media_player_delegate_) |
6185 media_player_delegate_ = new media::RendererWebMediaPlayerDelegate(this); | 6221 media_player_delegate_ = new media::RendererWebMediaPlayerDelegate(this); |
6186 return media_player_delegate_; | 6222 return media_player_delegate_; |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6331 // And then the mouse event is forwarded to blink, which dispatches it to the | 6367 // And then the mouse event is forwarded to blink, which dispatches it to the |
6332 // event target. Potentially a Pepper plugin will receive the event. | 6368 // event target. Potentially a Pepper plugin will receive the event. |
6333 // In order to tell whether a plugin gets the last mouse event and which it | 6369 // In order to tell whether a plugin gets the last mouse event and which it |
6334 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets | 6370 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets |
6335 // the event, it will notify us via DidReceiveMouseEvent() and set itself as | 6371 // the event, it will notify us via DidReceiveMouseEvent() and set itself as |
6336 // |pepper_last_mouse_event_target_|. | 6372 // |pepper_last_mouse_event_target_|. |
6337 pepper_last_mouse_event_target_ = nullptr; | 6373 pepper_last_mouse_event_target_ = nullptr; |
6338 #endif | 6374 #endif |
6339 } | 6375 } |
6340 | 6376 |
| 6377 void RenderFrameImpl::GetRoutedInterface( |
| 6378 const std::string& name, |
| 6379 mojom::RoutedInterfaceAssociatedRequest request) { |
| 6380 auto it = routed_interfaces_.find(name); |
| 6381 if (it != routed_interfaces_.end()) |
| 6382 it->second.Run(request.PassHandle()); |
| 6383 } |
| 6384 |
6341 } // namespace content | 6385 } // namespace content |
OLD | NEW |