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

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

Issue 2651583007: Plumbing blink::Interface{Provider|Registry} through WebLocalFrame's constructor. (Closed)
Patch Set: ScreenWakeLockTest Created 3 years, 11 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 918 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 const ScreenInfo& screen_info, 929 const ScreenInfo& screen_info,
930 CompositorDependencies* compositor_deps, 930 CompositorDependencies* compositor_deps,
931 blink::WebFrame* opener) { 931 blink::WebFrame* opener) {
932 // A main frame RenderFrame must have a RenderWidget. 932 // A main frame RenderFrame must have a RenderWidget.
933 DCHECK_NE(MSG_ROUTING_NONE, widget_routing_id); 933 DCHECK_NE(MSG_ROUTING_NONE, widget_routing_id);
934 934
935 RenderFrameImpl* render_frame = 935 RenderFrameImpl* render_frame =
936 RenderFrameImpl::Create(render_view, routing_id); 936 RenderFrameImpl::Create(render_view, routing_id);
937 render_frame->InitializeBlameContext(nullptr); 937 render_frame->InitializeBlameContext(nullptr);
938 WebLocalFrame* web_frame = WebLocalFrame::create( 938 WebLocalFrame* web_frame = WebLocalFrame::create(
939 blink::WebTreeScopeType::Document, render_frame, opener); 939 blink::WebTreeScopeType::Document, render_frame,
940 render_frame->blink_interface_provider_.get(),
941 render_frame->blink_interface_registry_.get(), opener);
Łukasz Anforowicz 2017/01/23 23:38:16 The pattern I tried to follow in this CL is that w
940 render_frame->BindToWebFrame(web_frame); 942 render_frame->BindToWebFrame(web_frame);
941 render_view->webview()->setMainFrame(web_frame); 943 render_view->webview()->setMainFrame(web_frame);
942 render_frame->render_widget_ = RenderWidget::CreateForFrame( 944 render_frame->render_widget_ = RenderWidget::CreateForFrame(
943 widget_routing_id, hidden, screen_info, compositor_deps, web_frame); 945 widget_routing_id, hidden, screen_info, compositor_deps, web_frame);
944 // TODO(avi): This DCHECK is to track cleanup for https://crbug.com/545684 946 // TODO(avi): This DCHECK is to track cleanup for https://crbug.com/545684
945 DCHECK_EQ(render_view->GetWidget(), render_frame->render_widget_) 947 DCHECK_EQ(render_view->GetWidget(), render_frame->render_widget_)
946 << "Main frame is no longer reusing the RenderView as its widget! " 948 << "Main frame is no longer reusing the RenderView as its widget! "
947 << "Does the RenderFrame need to register itself with the RenderWidget?"; 949 << "Does the RenderFrame need to register itself with the RenderWidget?";
948 return render_frame; 950 return render_frame;
949 } 951 }
(...skipping 26 matching lines...) Expand all
976 previous_sibling_web_frame = previous_sibling_proxy->web_frame(); 978 previous_sibling_web_frame = previous_sibling_proxy->web_frame();
977 979
978 // Create the RenderFrame and WebLocalFrame, linking the two. 980 // Create the RenderFrame and WebLocalFrame, linking the two.
979 render_frame = 981 render_frame =
980 RenderFrameImpl::Create(parent_proxy->render_view(), routing_id); 982 RenderFrameImpl::Create(parent_proxy->render_view(), routing_id);
981 render_frame->InitializeBlameContext(FromRoutingID(parent_routing_id)); 983 render_frame->InitializeBlameContext(FromRoutingID(parent_routing_id));
982 web_frame = parent_web_frame->createLocalChild( 984 web_frame = parent_web_frame->createLocalChild(
983 replicated_state.scope, WebString::fromUTF8(replicated_state.name), 985 replicated_state.scope, WebString::fromUTF8(replicated_state.name),
984 WebString::fromUTF8(replicated_state.unique_name), 986 WebString::fromUTF8(replicated_state.unique_name),
985 replicated_state.sandbox_flags, render_frame, 987 replicated_state.sandbox_flags, render_frame,
988 render_frame->blink_interface_provider_.get(),
989 render_frame->blink_interface_registry_.get(),
986 previous_sibling_web_frame, 990 previous_sibling_web_frame,
987 frame_owner_properties.ToWebFrameOwnerProperties(), 991 frame_owner_properties.ToWebFrameOwnerProperties(),
988 ResolveOpener(opener_routing_id)); 992 ResolveOpener(opener_routing_id));
989 993
990 // The RenderFrame is created and inserted into the frame tree in the above 994 // The RenderFrame is created and inserted into the frame tree in the above
991 // call to createLocalChild. 995 // call to createLocalChild.
992 render_frame->in_frame_tree_ = true; 996 render_frame->in_frame_tree_ = true;
993 } else { 997 } else {
994 RenderFrameProxy* proxy = 998 RenderFrameProxy* proxy =
995 RenderFrameProxy::FromRoutingID(proxy_routing_id); 999 RenderFrameProxy::FromRoutingID(proxy_routing_id);
996 // The remote frame could've been detached while the remote-to-local 1000 // The remote frame could've been detached while the remote-to-local
997 // navigation was being initiated in the browser process. Drop the 1001 // navigation was being initiated in the browser process. Drop the
998 // navigation and don't create the frame in that case. See 1002 // navigation and don't create the frame in that case. See
999 // https://crbug.com/526304. 1003 // https://crbug.com/526304.
1000 if (!proxy) 1004 if (!proxy)
1001 return; 1005 return;
1002 1006
1003 render_frame = RenderFrameImpl::Create(proxy->render_view(), routing_id); 1007 render_frame = RenderFrameImpl::Create(proxy->render_view(), routing_id);
1004 render_frame->InitializeBlameContext(nullptr); 1008 render_frame->InitializeBlameContext(nullptr);
1005 render_frame->proxy_routing_id_ = proxy_routing_id; 1009 render_frame->proxy_routing_id_ = proxy_routing_id;
1006 web_frame = blink::WebLocalFrame::createProvisional( 1010 web_frame = blink::WebLocalFrame::createProvisional(
1007 render_frame, proxy->web_frame(), replicated_state.sandbox_flags); 1011 render_frame, render_frame->blink_interface_provider_.get(),
1012 render_frame->blink_interface_registry_.get(), proxy->web_frame(),
1013 replicated_state.sandbox_flags);
1008 } 1014 }
1009 render_frame->BindToWebFrame(web_frame); 1015 render_frame->BindToWebFrame(web_frame);
1010 CHECK(parent_routing_id != MSG_ROUTING_NONE || !web_frame->parent()); 1016 CHECK(parent_routing_id != MSG_ROUTING_NONE || !web_frame->parent());
1011 1017
1012 if (widget_params.routing_id != MSG_ROUTING_NONE) { 1018 if (widget_params.routing_id != MSG_ROUTING_NONE) {
1013 CHECK(!web_frame->parent() || 1019 CHECK(!web_frame->parent() ||
1014 SiteIsolationPolicy::AreCrossProcessFramesPossible()); 1020 SiteIsolationPolicy::AreCrossProcessFramesPossible());
1015 render_frame->render_widget_ = RenderWidget::CreateForFrame( 1021 render_frame->render_widget_ = RenderWidget::CreateForFrame(
1016 widget_params.routing_id, widget_params.hidden, 1022 widget_params.routing_id, widget_params.hidden,
1017 render_frame->render_view_->screen_info(), compositor_deps, web_frame); 1023 render_frame->render_view_->screen_info(), compositor_deps, web_frame);
(...skipping 2031 matching lines...) Expand 10 before | Expand all | Expand 10 after
3049 // Tracing analysis uses this to find main frames when this value is 3055 // Tracing analysis uses this to find main frames when this value is
3050 // MSG_ROUTING_NONE, and build the frame tree otherwise. 3056 // MSG_ROUTING_NONE, and build the frame tree otherwise.
3051 TRACE_EVENT2("navigation,rail", "RenderFrameImpl::createChildFrame", 3057 TRACE_EVENT2("navigation,rail", "RenderFrameImpl::createChildFrame",
3052 "id", routing_id_, 3058 "id", routing_id_,
3053 "child", child_routing_id); 3059 "child", child_routing_id);
3054 3060
3055 // Create the RenderFrame and WebLocalFrame, linking the two. 3061 // Create the RenderFrame and WebLocalFrame, linking the two.
3056 RenderFrameImpl* child_render_frame = 3062 RenderFrameImpl* child_render_frame =
3057 RenderFrameImpl::Create(render_view_, child_routing_id); 3063 RenderFrameImpl::Create(render_view_, child_routing_id);
3058 child_render_frame->InitializeBlameContext(this); 3064 child_render_frame->InitializeBlameContext(this);
3059 blink::WebLocalFrame* web_frame = 3065 blink::WebLocalFrame* web_frame = WebLocalFrame::create(
3060 WebLocalFrame::create(scope, child_render_frame); 3066 scope, child_render_frame, blink_interface_provider_.get(),
3067 blink_interface_registry_.get());
3061 child_render_frame->BindToWebFrame(web_frame); 3068 child_render_frame->BindToWebFrame(web_frame);
3062 3069
3063 // Add the frame to the frame tree and initialize it. 3070 // Add the frame to the frame tree and initialize it.
3064 parent->appendChild(web_frame); 3071 parent->appendChild(web_frame);
3065 child_render_frame->in_frame_tree_ = true; 3072 child_render_frame->in_frame_tree_ = true;
3066 child_render_frame->Initialize(); 3073 child_render_frame->Initialize();
3067 3074
3068 return web_frame; 3075 return web_frame;
3069 } 3076 }
3070 3077
(...skipping 3629 matching lines...) Expand 10 before | Expand all | Expand 10 after
6700 const blink::WebString& sink_id, 6707 const blink::WebString& sink_id,
6701 const blink::WebSecurityOrigin& security_origin, 6708 const blink::WebSecurityOrigin& security_origin,
6702 blink::WebSetSinkIdCallbacks* web_callbacks) { 6709 blink::WebSetSinkIdCallbacks* web_callbacks) {
6703 media::OutputDeviceStatusCB callback = 6710 media::OutputDeviceStatusCB callback =
6704 media::ConvertToOutputDeviceStatusCB(web_callbacks); 6711 media::ConvertToOutputDeviceStatusCB(web_callbacks);
6705 callback.Run(AudioDeviceFactory::GetOutputDeviceInfo( 6712 callback.Run(AudioDeviceFactory::GetOutputDeviceInfo(
6706 routing_id_, 0, sink_id.utf8(), security_origin) 6713 routing_id_, 0, sink_id.utf8(), security_origin)
6707 .device_status()); 6714 .device_status());
6708 } 6715 }
6709 6716
6710 blink::InterfaceProvider* RenderFrameImpl::interfaceProvider() {
6711 return blink_interface_provider_.get();
6712 }
6713
6714 blink::InterfaceRegistry* RenderFrameImpl::interfaceRegistry() {
6715 return blink_interface_registry_.get();
6716 }
6717
6718 blink::WebPageVisibilityState RenderFrameImpl::visibilityState() const { 6717 blink::WebPageVisibilityState RenderFrameImpl::visibilityState() const {
6719 const RenderFrameImpl* local_root = GetLocalRoot(); 6718 const RenderFrameImpl* local_root = GetLocalRoot();
6720 blink::WebPageVisibilityState current_state = 6719 blink::WebPageVisibilityState current_state =
6721 local_root->render_widget_->is_hidden() 6720 local_root->render_widget_->is_hidden()
6722 ? blink::WebPageVisibilityStateHidden 6721 ? blink::WebPageVisibilityStateHidden
6723 : blink::WebPageVisibilityStateVisible; 6722 : blink::WebPageVisibilityStateVisible;
6724 blink::WebPageVisibilityState override_state = current_state; 6723 blink::WebPageVisibilityState override_state = current_state;
6725 if (GetContentClient()->renderer()->ShouldOverridePageVisibilityState( 6724 if (GetContentClient()->renderer()->ShouldOverridePageVisibilityState(
6726 this, &override_state)) 6725 this, &override_state))
6727 return override_state; 6726 return override_state;
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
6878 // event target. Potentially a Pepper plugin will receive the event. 6877 // event target. Potentially a Pepper plugin will receive the event.
6879 // In order to tell whether a plugin gets the last mouse event and which it 6878 // In order to tell whether a plugin gets the last mouse event and which it
6880 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets 6879 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets
6881 // the event, it will notify us via DidReceiveMouseEvent() and set itself as 6880 // the event, it will notify us via DidReceiveMouseEvent() and set itself as
6882 // |pepper_last_mouse_event_target_|. 6881 // |pepper_last_mouse_event_target_|.
6883 pepper_last_mouse_event_target_ = nullptr; 6882 pepper_last_mouse_event_target_ = nullptr;
6884 #endif 6883 #endif
6885 } 6884 }
6886 6885
6887 } // namespace content 6886 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698