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

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

Issue 285333003: Support exposing Mojo services between render frames, render threads, and their respective hosts. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments Created 6 years, 6 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 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 web_user_media_client_(NULL), 398 web_user_media_client_(NULL),
399 #if defined(OS_ANDROID) 399 #if defined(OS_ANDROID)
400 media_player_manager_(NULL), 400 media_player_manager_(NULL),
401 #endif 401 #endif
402 #if defined(ENABLE_BROWSER_CDMS) 402 #if defined(ENABLE_BROWSER_CDMS)
403 cdm_manager_(NULL), 403 cdm_manager_(NULL),
404 #endif 404 #endif
405 geolocation_dispatcher_(NULL), 405 geolocation_dispatcher_(NULL),
406 screen_orientation_dispatcher_(NULL), 406 screen_orientation_dispatcher_(NULL),
407 weak_factory_(this) { 407 weak_factory_(this) {
408 RenderThread::Get()->AddRoute(routing_id_, this);
409
410 std::pair<RoutingIDFrameMap::iterator, bool> result = 408 std::pair<RoutingIDFrameMap::iterator, bool> result =
411 g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this)); 409 g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this));
412 CHECK(result.second) << "Inserting a duplicate item."; 410 CHECK(result.second) << "Inserting a duplicate item.";
413 411
412 RenderThread::Get()->AddRoute(routing_id_, this);
413
414 render_view_->RegisterRenderFrame(this); 414 render_view_->RegisterRenderFrame(this);
415 415
416 #if defined(OS_ANDROID) 416 #if defined(OS_ANDROID)
417 new JavaBridgeDispatcher(this); 417 new JavaBridgeDispatcher(this);
418 #endif 418 #endif
419 419
420 #if defined(ENABLE_NOTIFICATIONS) 420 #if defined(ENABLE_NOTIFICATIONS)
421 notification_provider_ = new NotificationProvider(this); 421 notification_provider_ = new NotificationProvider(this);
422 #endif 422 #endif
423 } 423 }
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 (navigation_start - base::TimeTicks()).InSecondsF(); 894 (navigation_start - base::TimeTicks()).InSecondsF();
895 frame->provisionalDataSource()->setNavigationStartTime( 895 frame->provisionalDataSource()->setNavigationStartTime(
896 navigation_start_seconds); 896 navigation_start_seconds);
897 } 897 }
898 } 898 }
899 899
900 // In case LoadRequest failed before DidCreateDataSource was called. 900 // In case LoadRequest failed before DidCreateDataSource was called.
901 render_view_->pending_navigation_params_.reset(); 901 render_view_->pending_navigation_params_.reset();
902 } 902 }
903 903
904 void RenderFrameImpl::BindServiceRegistry(
905 mojo::ScopedMessagePipeHandle service_provider_handle) {
906 service_registry_.BindRemoteServiceProvider(service_provider_handle.Pass());
907 }
908
904 void RenderFrameImpl::OnBeforeUnload() { 909 void RenderFrameImpl::OnBeforeUnload() {
905 // TODO(creis): Right now, this is only called on the main frame. Make the 910 // TODO(creis): Right now, this is only called on the main frame. Make the
906 // browser process send dispatchBeforeUnloadEvent to every frame that needs 911 // browser process send dispatchBeforeUnloadEvent to every frame that needs
907 // it. 912 // it.
908 CHECK(!frame_->parent()); 913 CHECK(!frame_->parent());
909 914
910 base::TimeTicks before_unload_start_time = base::TimeTicks::Now(); 915 base::TimeTicks before_unload_start_time = base::TimeTicks::Now();
911 bool proceed = frame_->dispatchBeforeUnloadEvent(); 916 bool proceed = frame_->dispatchBeforeUnloadEvent();
912 base::TimeTicks before_unload_end_time = base::TimeTicks::Now(); 917 base::TimeTicks before_unload_end_time = base::TimeTicks::Now();
913 Send(new FrameHostMsg_BeforeUnload_ACK(routing_id_, proceed, 918 Send(new FrameHostMsg_BeforeUnload_ACK(routing_id_, proceed,
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
1324 const blink::WebURLRequest& request, 1329 const blink::WebURLRequest& request,
1325 blink::WebNavigationPolicy policy) { 1330 blink::WebNavigationPolicy policy) {
1326 DCHECK(!frame_ || frame_ == frame); 1331 DCHECK(!frame_ || frame_ == frame);
1327 loadURLExternally(frame, request, policy, WebString()); 1332 loadURLExternally(frame, request, policy, WebString());
1328 } 1333 }
1329 1334
1330 void RenderFrameImpl::ExecuteJavaScript(const base::string16& javascript) { 1335 void RenderFrameImpl::ExecuteJavaScript(const base::string16& javascript) {
1331 OnJavaScriptExecuteRequest(javascript, 0, false); 1336 OnJavaScriptExecuteRequest(javascript, 0, false);
1332 } 1337 }
1333 1338
1339 ServiceRegistry* RenderFrameImpl::GetServiceRegistry() {
1340 return &service_registry_;
1341 }
1342
1334 void RenderFrameImpl::OnChildFrameProcessGone() { 1343 void RenderFrameImpl::OnChildFrameProcessGone() {
1335 if (compositing_helper_) 1344 if (compositing_helper_)
1336 compositing_helper_->ChildFrameGone(); 1345 compositing_helper_->ChildFrameGone();
1337 } 1346 }
1338 1347
1339 // blink::WebFrameClient implementation ---------------------------------------- 1348 // blink::WebFrameClient implementation ----------------------------------------
1340 1349
1341 blink::WebPlugin* RenderFrameImpl::createPlugin( 1350 blink::WebPlugin* RenderFrameImpl::createPlugin(
1342 blink::WebLocalFrame* frame, 1351 blink::WebLocalFrame* frame,
1343 const blink::WebPluginParams& params) { 1352 const blink::WebPluginParams& params) {
(...skipping 2223 matching lines...) Expand 10 before | Expand all | Expand 10 after
3567 3576
3568 #if defined(ENABLE_BROWSER_CDMS) 3577 #if defined(ENABLE_BROWSER_CDMS)
3569 RendererCdmManager* RenderFrameImpl::GetCdmManager() { 3578 RendererCdmManager* RenderFrameImpl::GetCdmManager() {
3570 if (!cdm_manager_) 3579 if (!cdm_manager_)
3571 cdm_manager_ = new RendererCdmManager(this); 3580 cdm_manager_ = new RendererCdmManager(this);
3572 return cdm_manager_; 3581 return cdm_manager_;
3573 } 3582 }
3574 #endif // defined(ENABLE_BROWSER_CDMS) 3583 #endif // defined(ENABLE_BROWSER_CDMS)
3575 3584
3576 } // namespace content 3585 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698