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