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

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

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

Powered by Google App Engine
This is Rietveld 408576698