| 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 816 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 827 bool hidden, | 827 bool hidden, |
| 828 const blink::WebScreenInfo& screen_info, | 828 const blink::WebScreenInfo& screen_info, |
| 829 CompositorDependencies* compositor_deps, | 829 CompositorDependencies* compositor_deps, |
| 830 blink::WebFrame* opener) { | 830 blink::WebFrame* opener) { |
| 831 // A main frame RenderFrame must have a RenderWidget. | 831 // A main frame RenderFrame must have a RenderWidget. |
| 832 DCHECK_NE(MSG_ROUTING_NONE, widget_routing_id); | 832 DCHECK_NE(MSG_ROUTING_NONE, widget_routing_id); |
| 833 | 833 |
| 834 RenderFrameImpl* render_frame = | 834 RenderFrameImpl* render_frame = |
| 835 RenderFrameImpl::Create(render_view, routing_id); | 835 RenderFrameImpl::Create(render_view, routing_id); |
| 836 WebLocalFrame* web_frame = WebLocalFrame::create( | 836 WebLocalFrame* web_frame = WebLocalFrame::create( |
| 837 blink::WebTreeScopeType::Document, render_frame, opener); | 837 blink::WebTreeScopeType::Document, render_frame, opener, |
| 838 &render_frame->blink_service_registry_wrapper_); |
| 838 render_frame->BindToWebFrame(web_frame); | 839 render_frame->BindToWebFrame(web_frame); |
| 839 render_view->webview()->setMainFrame(web_frame); | 840 render_view->webview()->setMainFrame(web_frame); |
| 840 render_frame->render_widget_ = RenderWidget::CreateForFrame( | 841 render_frame->render_widget_ = RenderWidget::CreateForFrame( |
| 841 widget_routing_id, hidden, screen_info, compositor_deps, web_frame); | 842 widget_routing_id, hidden, screen_info, compositor_deps, web_frame); |
| 842 // TODO(kenrb): Observing shouldn't be necessary when we sort out | 843 // TODO(kenrb): Observing shouldn't be necessary when we sort out |
| 843 // WasShown and WasHidden, separating page-level visibility from | 844 // WasShown and WasHidden, separating page-level visibility from |
| 844 // frame-level visibility. | 845 // frame-level visibility. |
| 845 // TODO(avi): This DCHECK is to track cleanup for https://crbug.com/545684 | 846 // TODO(avi): This DCHECK is to track cleanup for https://crbug.com/545684 |
| 846 DCHECK_EQ(render_view->GetWidget(), render_frame->render_widget_) | 847 DCHECK_EQ(render_view->GetWidget(), render_frame->render_widget_) |
| 847 << "Main frame is no longer reusing the RenderView as its widget! " | 848 << "Main frame is no longer reusing the RenderView as its widget! " |
| (...skipping 29 matching lines...) Expand all Loading... |
| 877 previous_sibling_web_frame = previous_sibling_proxy->web_frame(); | 878 previous_sibling_web_frame = previous_sibling_proxy->web_frame(); |
| 878 | 879 |
| 879 // Create the RenderFrame and WebLocalFrame, linking the two. | 880 // Create the RenderFrame and WebLocalFrame, linking the two. |
| 880 render_frame = | 881 render_frame = |
| 881 RenderFrameImpl::Create(parent_proxy->render_view(), routing_id); | 882 RenderFrameImpl::Create(parent_proxy->render_view(), routing_id); |
| 882 web_frame = parent_web_frame->createLocalChild( | 883 web_frame = parent_web_frame->createLocalChild( |
| 883 replicated_state.scope, WebString::fromUTF8(replicated_state.name), | 884 replicated_state.scope, WebString::fromUTF8(replicated_state.name), |
| 884 WebString::fromUTF8(replicated_state.unique_name), | 885 WebString::fromUTF8(replicated_state.unique_name), |
| 885 replicated_state.sandbox_flags, render_frame, | 886 replicated_state.sandbox_flags, render_frame, |
| 886 previous_sibling_web_frame, frame_owner_properties, | 887 previous_sibling_web_frame, frame_owner_properties, |
| 887 ResolveOpener(opener_routing_id, nullptr)); | 888 ResolveOpener(opener_routing_id, nullptr), |
| 889 &render_frame->blink_service_registry_wrapper_); |
| 888 | 890 |
| 889 // The RenderFrame is created and inserted into the frame tree in the above | 891 // The RenderFrame is created and inserted into the frame tree in the above |
| 890 // call to createLocalChild. | 892 // call to createLocalChild. |
| 891 render_frame->in_frame_tree_ = true; | 893 render_frame->in_frame_tree_ = true; |
| 892 } else { | 894 } else { |
| 893 RenderFrameProxy* proxy = | 895 RenderFrameProxy* proxy = |
| 894 RenderFrameProxy::FromRoutingID(proxy_routing_id); | 896 RenderFrameProxy::FromRoutingID(proxy_routing_id); |
| 895 // The remote frame could've been detached while the remote-to-local | 897 // The remote frame could've been detached while the remote-to-local |
| 896 // navigation was being initiated in the browser process. Drop the | 898 // navigation was being initiated in the browser process. Drop the |
| 897 // navigation and don't create the frame in that case. See | 899 // navigation and don't create the frame in that case. See |
| 898 // https://crbug.com/526304. | 900 // https://crbug.com/526304. |
| 899 if (!proxy) | 901 if (!proxy) |
| 900 return; | 902 return; |
| 901 | 903 |
| 902 render_frame = RenderFrameImpl::Create(proxy->render_view(), routing_id); | 904 render_frame = RenderFrameImpl::Create(proxy->render_view(), routing_id); |
| 903 render_frame->proxy_routing_id_ = proxy_routing_id; | 905 render_frame->proxy_routing_id_ = proxy_routing_id; |
| 904 web_frame = blink::WebLocalFrame::createProvisional( | 906 web_frame = blink::WebLocalFrame::createProvisional( |
| 905 render_frame, proxy->web_frame(), replicated_state.sandbox_flags, | 907 render_frame, proxy->web_frame(), replicated_state.sandbox_flags, |
| 906 frame_owner_properties); | 908 frame_owner_properties, &render_frame->blink_service_registry_wrapper_); |
| 907 } | 909 } |
| 908 render_frame->BindToWebFrame(web_frame); | 910 render_frame->BindToWebFrame(web_frame); |
| 909 CHECK(parent_routing_id != MSG_ROUTING_NONE || !web_frame->parent()); | 911 CHECK(parent_routing_id != MSG_ROUTING_NONE || !web_frame->parent()); |
| 910 | 912 |
| 911 if (widget_params.routing_id != MSG_ROUTING_NONE) { | 913 if (widget_params.routing_id != MSG_ROUTING_NONE) { |
| 912 CHECK(!web_frame->parent() || | 914 CHECK(!web_frame->parent() || |
| 913 SiteIsolationPolicy::AreCrossProcessFramesPossible()); | 915 SiteIsolationPolicy::AreCrossProcessFramesPossible()); |
| 914 render_frame->render_widget_ = RenderWidget::CreateForFrame( | 916 render_frame->render_widget_ = RenderWidget::CreateForFrame( |
| 915 widget_params.routing_id, widget_params.hidden, | 917 widget_params.routing_id, widget_params.hidden, |
| 916 render_frame->render_view_->screen_info(), compositor_deps, web_frame); | 918 render_frame->render_view_->screen_info(), compositor_deps, web_frame); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1010 cdm_manager_(NULL), | 1012 cdm_manager_(NULL), |
| 1011 #endif | 1013 #endif |
| 1012 #if defined(VIDEO_HOLE) | 1014 #if defined(VIDEO_HOLE) |
| 1013 contains_media_player_(false), | 1015 contains_media_player_(false), |
| 1014 #endif | 1016 #endif |
| 1015 devtools_agent_(nullptr), | 1017 devtools_agent_(nullptr), |
| 1016 wakelock_dispatcher_(nullptr), | 1018 wakelock_dispatcher_(nullptr), |
| 1017 geolocation_dispatcher_(NULL), | 1019 geolocation_dispatcher_(NULL), |
| 1018 push_messaging_dispatcher_(NULL), | 1020 push_messaging_dispatcher_(NULL), |
| 1019 presentation_dispatcher_(NULL), | 1021 presentation_dispatcher_(NULL), |
| 1022 blink_service_registry_wrapper_(&service_registry_), |
| 1020 screen_orientation_dispatcher_(NULL), | 1023 screen_orientation_dispatcher_(NULL), |
| 1021 manifest_manager_(NULL), | 1024 manifest_manager_(NULL), |
| 1022 accessibility_mode_(AccessibilityModeOff), | 1025 accessibility_mode_(AccessibilityModeOff), |
| 1023 renderer_accessibility_(NULL), | 1026 renderer_accessibility_(NULL), |
| 1024 media_player_delegate_(NULL), | 1027 media_player_delegate_(NULL), |
| 1025 is_using_lofi_(false), | 1028 is_using_lofi_(false), |
| 1026 is_pasting_(false), | 1029 is_pasting_(false), |
| 1027 weak_factory_(this) { | 1030 weak_factory_(this) { |
| 1028 std::pair<RoutingIDFrameMap::iterator, bool> result = | 1031 std::pair<RoutingIDFrameMap::iterator, bool> result = |
| 1029 g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this)); | 1032 g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this)); |
| (...skipping 1570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2600 | 2603 |
| 2601 // Tracing analysis uses this to find main frames when this value is | 2604 // Tracing analysis uses this to find main frames when this value is |
| 2602 // MSG_ROUTING_NONE, and build the frame tree otherwise. | 2605 // MSG_ROUTING_NONE, and build the frame tree otherwise. |
| 2603 TRACE_EVENT2("navigation", "RenderFrameImpl::createChildFrame", | 2606 TRACE_EVENT2("navigation", "RenderFrameImpl::createChildFrame", |
| 2604 "id", routing_id_, | 2607 "id", routing_id_, |
| 2605 "child", child_routing_id); | 2608 "child", child_routing_id); |
| 2606 | 2609 |
| 2607 // Create the RenderFrame and WebLocalFrame, linking the two. | 2610 // Create the RenderFrame and WebLocalFrame, linking the two. |
| 2608 RenderFrameImpl* child_render_frame = RenderFrameImpl::Create( | 2611 RenderFrameImpl* child_render_frame = RenderFrameImpl::Create( |
| 2609 render_view_.get(), child_routing_id); | 2612 render_view_.get(), child_routing_id); |
| 2610 blink::WebLocalFrame* web_frame = | 2613 blink::WebLocalFrame* web_frame = WebLocalFrame::create( |
| 2611 WebLocalFrame::create(scope, child_render_frame); | 2614 scope, child_render_frame, nullptr, |
| 2615 &child_render_frame->blink_service_registry_wrapper_); |
| 2612 child_render_frame->BindToWebFrame(web_frame); | 2616 child_render_frame->BindToWebFrame(web_frame); |
| 2613 | 2617 |
| 2614 // Add the frame to the frame tree and initialize it. | 2618 // Add the frame to the frame tree and initialize it. |
| 2615 parent->appendChild(web_frame); | 2619 parent->appendChild(web_frame); |
| 2616 child_render_frame->in_frame_tree_ = true; | 2620 child_render_frame->in_frame_tree_ = true; |
| 2617 child_render_frame->Initialize(); | 2621 child_render_frame->Initialize(); |
| 2618 | 2622 |
| 2619 return web_frame; | 2623 return web_frame; |
| 2620 } | 2624 } |
| 2621 | 2625 |
| (...skipping 3389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6011 int match_count, | 6015 int match_count, |
| 6012 int ordinal, | 6016 int ordinal, |
| 6013 const WebRect& selection_rect, | 6017 const WebRect& selection_rect, |
| 6014 bool final_status_update) { | 6018 bool final_status_update) { |
| 6015 Send(new FrameHostMsg_Find_Reply(routing_id_, request_id, match_count, | 6019 Send(new FrameHostMsg_Find_Reply(routing_id_, request_id, match_count, |
| 6016 selection_rect, ordinal, | 6020 selection_rect, ordinal, |
| 6017 final_status_update)); | 6021 final_status_update)); |
| 6018 } | 6022 } |
| 6019 | 6023 |
| 6020 } // namespace content | 6024 } // namespace content |
| OLD | NEW |