| 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/browser/frame_host/render_frame_host_impl.h" | 5 #include "content/browser/frame_host/render_frame_host_impl.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 263 } | 263 } |
| 264 | 264 |
| 265 RenderFrameHostImpl::RenderFrameHostImpl(SiteInstance* site_instance, | 265 RenderFrameHostImpl::RenderFrameHostImpl(SiteInstance* site_instance, |
| 266 RenderViewHostImpl* render_view_host, | 266 RenderViewHostImpl* render_view_host, |
| 267 RenderFrameHostDelegate* delegate, | 267 RenderFrameHostDelegate* delegate, |
| 268 RenderWidgetHostDelegate* rwh_delegate, | 268 RenderWidgetHostDelegate* rwh_delegate, |
| 269 FrameTree* frame_tree, | 269 FrameTree* frame_tree, |
| 270 FrameTreeNode* frame_tree_node, | 270 FrameTreeNode* frame_tree_node, |
| 271 int32_t routing_id, | 271 int32_t routing_id, |
| 272 int32_t widget_routing_id, | 272 int32_t widget_routing_id, |
| 273 bool hidden) | 273 bool hidden, |
| 274 bool renderer_initiated_creation) |
| 274 : render_view_host_(render_view_host), | 275 : render_view_host_(render_view_host), |
| 275 delegate_(delegate), | 276 delegate_(delegate), |
| 276 site_instance_(static_cast<SiteInstanceImpl*>(site_instance)), | 277 site_instance_(static_cast<SiteInstanceImpl*>(site_instance)), |
| 277 process_(site_instance->GetProcess()), | 278 process_(site_instance->GetProcess()), |
| 278 cross_process_frame_connector_(NULL), | 279 cross_process_frame_connector_(NULL), |
| 279 render_frame_proxy_host_(NULL), | 280 render_frame_proxy_host_(NULL), |
| 280 frame_tree_(frame_tree), | 281 frame_tree_(frame_tree), |
| 281 frame_tree_node_(frame_tree_node), | 282 frame_tree_node_(frame_tree_node), |
| 282 parent_(nullptr), | 283 parent_(nullptr), |
| 283 render_widget_host_(nullptr), | 284 render_widget_host_(nullptr), |
| 284 routing_id_(routing_id), | 285 routing_id_(routing_id), |
| 285 is_waiting_for_swapout_ack_(false), | 286 is_waiting_for_swapout_ack_(false), |
| 286 render_frame_created_(false), | 287 render_frame_created_(false), |
| 287 navigations_suspended_(false), | 288 navigations_suspended_(false), |
| 288 is_waiting_for_beforeunload_ack_(false), | 289 is_waiting_for_beforeunload_ack_(false), |
| 289 unload_ack_is_for_navigation_(false), | 290 unload_ack_is_for_navigation_(false), |
| 290 is_loading_(false), | 291 is_loading_(false), |
| 291 pending_commit_(false), | 292 pending_commit_(false), |
| 292 nav_entry_id_(0), | 293 nav_entry_id_(0), |
| 293 accessibility_reset_token_(0), | 294 accessibility_reset_token_(0), |
| 294 accessibility_reset_count_(0), | 295 accessibility_reset_count_(0), |
| 295 browser_plugin_embedder_ax_tree_id_(AXTreeIDRegistry::kNoAXTreeID), | 296 browser_plugin_embedder_ax_tree_id_(AXTreeIDRegistry::kNoAXTreeID), |
| 296 no_create_browser_accessibility_manager_for_testing_(false), | 297 no_create_browser_accessibility_manager_for_testing_(false), |
| 297 web_ui_type_(WebUI::kNoWebUI), | 298 web_ui_type_(WebUI::kNoWebUI), |
| 298 pending_web_ui_type_(WebUI::kNoWebUI), | 299 pending_web_ui_type_(WebUI::kNoWebUI), |
| 299 should_reuse_web_ui_(false), | 300 should_reuse_web_ui_(false), |
| 300 last_navigation_lofi_state_(LOFI_UNSPECIFIED), | 301 last_navigation_lofi_state_(LOFI_UNSPECIFIED), |
| 301 frame_host_binding_(this), | 302 frame_host_binding_(this), |
| 303 waiting_for_init_(renderer_initiated_creation), |
| 302 weak_ptr_factory_(this) { | 304 weak_ptr_factory_(this) { |
| 303 frame_tree_->AddRenderViewHostRef(render_view_host_); | 305 frame_tree_->AddRenderViewHostRef(render_view_host_); |
| 304 GetProcess()->AddRoute(routing_id_, this); | 306 GetProcess()->AddRoute(routing_id_, this); |
| 305 g_routing_id_frame_map.Get().insert(std::make_pair( | 307 g_routing_id_frame_map.Get().insert(std::make_pair( |
| 306 RenderFrameHostID(GetProcess()->GetID(), routing_id_), | 308 RenderFrameHostID(GetProcess()->GetID(), routing_id_), |
| 307 this)); | 309 this)); |
| 308 site_instance_->AddObserver(this); | 310 site_instance_->AddObserver(this); |
| 309 GetSiteInstance()->IncrementActiveFrameCount(); | 311 GetSiteInstance()->IncrementActiveFrameCount(); |
| 310 | 312 |
| 311 if (frame_tree_node_->parent()) { | 313 if (frame_tree_node_->parent()) { |
| (...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 928 delegate_->RenderFrameDeleted(this); | 930 delegate_->RenderFrameDeleted(this); |
| 929 } | 931 } |
| 930 } | 932 } |
| 931 | 933 |
| 932 if (created && render_widget_host_) | 934 if (created && render_widget_host_) |
| 933 render_widget_host_->InitForFrame(); | 935 render_widget_host_->InitForFrame(); |
| 934 } | 936 } |
| 935 | 937 |
| 936 void RenderFrameHostImpl::Init() { | 938 void RenderFrameHostImpl::Init() { |
| 937 ResourceDispatcherHost::ResumeBlockedRequestsForFrameFromUI(this); | 939 ResourceDispatcherHost::ResumeBlockedRequestsForFrameFromUI(this); |
| 940 if (!waiting_for_init_) |
| 941 return; |
| 942 |
| 943 waiting_for_init_ = false; |
| 944 if (pendinging_navigate_) { |
| 945 frame_tree_node()->navigator()->OnBeginNavigation( |
| 946 frame_tree_node(), pendinging_navigate_->first, |
| 947 pendinging_navigate_->second); |
| 948 pendinging_navigate_.reset(); |
| 949 } |
| 938 } | 950 } |
| 939 | 951 |
| 940 void RenderFrameHostImpl::OnAddMessageToConsole( | 952 void RenderFrameHostImpl::OnAddMessageToConsole( |
| 941 int32_t level, | 953 int32_t level, |
| 942 const base::string16& message, | 954 const base::string16& message, |
| 943 int32_t line_no, | 955 int32_t line_no, |
| 944 const base::string16& source_id) { | 956 const base::string16& source_id) { |
| 945 if (delegate_->AddMessageToConsole(level, message, line_no, source_id)) | 957 if (delegate_->AddMessageToConsole(level, message, line_no, source_id)) |
| 946 return; | 958 return; |
| 947 | 959 |
| (...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1804 } | 1816 } |
| 1805 | 1817 |
| 1806 void RenderFrameHostImpl::OnBeginNavigation( | 1818 void RenderFrameHostImpl::OnBeginNavigation( |
| 1807 const CommonNavigationParams& common_params, | 1819 const CommonNavigationParams& common_params, |
| 1808 const BeginNavigationParams& begin_params) { | 1820 const BeginNavigationParams& begin_params) { |
| 1809 CHECK(IsBrowserSideNavigationEnabled()); | 1821 CHECK(IsBrowserSideNavigationEnabled()); |
| 1810 if (!is_active()) | 1822 if (!is_active()) |
| 1811 return; | 1823 return; |
| 1812 CommonNavigationParams validated_params = common_params; | 1824 CommonNavigationParams validated_params = common_params; |
| 1813 GetProcess()->FilterURL(false, &validated_params.url); | 1825 GetProcess()->FilterURL(false, &validated_params.url); |
| 1826 |
| 1827 if (waiting_for_init_) { |
| 1828 pendinging_navigate_ = |
| 1829 base::MakeUnique<PendingNavigation>(validated_params, begin_params); |
| 1830 return; |
| 1831 } |
| 1832 |
| 1814 frame_tree_node()->navigator()->OnBeginNavigation( | 1833 frame_tree_node()->navigator()->OnBeginNavigation( |
| 1815 frame_tree_node(), validated_params, begin_params); | 1834 frame_tree_node(), validated_params, begin_params); |
| 1816 } | 1835 } |
| 1817 | 1836 |
| 1818 void RenderFrameHostImpl::OnDispatchLoad() { | 1837 void RenderFrameHostImpl::OnDispatchLoad() { |
| 1819 CHECK(SiteIsolationPolicy::AreCrossProcessFramesPossible()); | 1838 CHECK(SiteIsolationPolicy::AreCrossProcessFramesPossible()); |
| 1820 | 1839 |
| 1821 // Don't forward the load event if this RFH is pending deletion. This can | 1840 // Don't forward the load event if this RFH is pending deletion. This can |
| 1822 // happen in a race where this RenderFrameHost finishes loading just after | 1841 // happen in a race where this RenderFrameHost finishes loading just after |
| 1823 // the frame navigates away. See https://crbug.com/626802. | 1842 // the frame navigates away. See https://crbug.com/626802. |
| (...skipping 1355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3179 web_bluetooth_service_->SetClientConnectionErrorHandler(base::Bind( | 3198 web_bluetooth_service_->SetClientConnectionErrorHandler(base::Bind( |
| 3180 &RenderFrameHostImpl::DeleteWebBluetoothService, base::Unretained(this))); | 3199 &RenderFrameHostImpl::DeleteWebBluetoothService, base::Unretained(this))); |
| 3181 return web_bluetooth_service_.get(); | 3200 return web_bluetooth_service_.get(); |
| 3182 } | 3201 } |
| 3183 | 3202 |
| 3184 void RenderFrameHostImpl::DeleteWebBluetoothService() { | 3203 void RenderFrameHostImpl::DeleteWebBluetoothService() { |
| 3185 web_bluetooth_service_.reset(); | 3204 web_bluetooth_service_.reset(); |
| 3186 } | 3205 } |
| 3187 | 3206 |
| 3188 } // namespace content | 3207 } // namespace content |
| OLD | NEW |