Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 2310563002: Adds routed interface support between RenderFrameHost and RenderFrame (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698