Chromium Code Reviews| 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 918 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |