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 <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 site_instance_(static_cast<SiteInstanceImpl*>(site_instance)), | 371 site_instance_(static_cast<SiteInstanceImpl*>(site_instance)), |
372 process_(site_instance->GetProcess()), | 372 process_(site_instance->GetProcess()), |
373 frame_tree_(frame_tree), | 373 frame_tree_(frame_tree), |
374 frame_tree_node_(frame_tree_node), | 374 frame_tree_node_(frame_tree_node), |
375 parent_(nullptr), | 375 parent_(nullptr), |
376 render_widget_host_(nullptr), | 376 render_widget_host_(nullptr), |
377 routing_id_(routing_id), | 377 routing_id_(routing_id), |
378 is_waiting_for_swapout_ack_(false), | 378 is_waiting_for_swapout_ack_(false), |
379 render_frame_created_(false), | 379 render_frame_created_(false), |
380 navigations_suspended_(false), | 380 navigations_suspended_(false), |
381 has_beforeunload_handlers_(false), | |
382 has_unload_handlers_(false), | |
383 is_waiting_for_beforeunload_ack_(false), | 381 is_waiting_for_beforeunload_ack_(false), |
384 unload_ack_is_for_navigation_(false), | 382 unload_ack_is_for_navigation_(false), |
385 is_loading_(false), | 383 is_loading_(false), |
386 pending_commit_(false), | 384 pending_commit_(false), |
387 nav_entry_id_(0), | 385 nav_entry_id_(0), |
388 accessibility_reset_token_(0), | 386 accessibility_reset_token_(0), |
389 accessibility_reset_count_(0), | 387 accessibility_reset_count_(0), |
390 browser_plugin_embedder_ax_tree_id_(ui::AXTreeIDRegistry::kNoAXTreeID), | 388 browser_plugin_embedder_ax_tree_id_(ui::AXTreeIDRegistry::kNoAXTreeID), |
391 no_create_browser_accessibility_manager_for_testing_(false), | 389 no_create_browser_accessibility_manager_for_testing_(false), |
392 web_ui_type_(WebUI::kNoWebUI), | 390 web_ui_type_(WebUI::kNoWebUI), |
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
747 OnDidFailLoadWithError) | 745 OnDidFailLoadWithError) |
748 IPC_MESSAGE_HANDLER_GENERIC(FrameHostMsg_DidCommitProvisionalLoad, | 746 IPC_MESSAGE_HANDLER_GENERIC(FrameHostMsg_DidCommitProvisionalLoad, |
749 OnDidCommitProvisionalLoad(msg)) | 747 OnDidCommitProvisionalLoad(msg)) |
750 IPC_MESSAGE_HANDLER(FrameHostMsg_UpdateState, OnUpdateState) | 748 IPC_MESSAGE_HANDLER(FrameHostMsg_UpdateState, OnUpdateState) |
751 IPC_MESSAGE_HANDLER(FrameHostMsg_OpenURL, OnOpenURL) | 749 IPC_MESSAGE_HANDLER(FrameHostMsg_OpenURL, OnOpenURL) |
752 IPC_MESSAGE_HANDLER(FrameHostMsg_CancelInitialHistoryLoad, | 750 IPC_MESSAGE_HANDLER(FrameHostMsg_CancelInitialHistoryLoad, |
753 OnCancelInitialHistoryLoad) | 751 OnCancelInitialHistoryLoad) |
754 IPC_MESSAGE_HANDLER(FrameHostMsg_DocumentOnLoadCompleted, | 752 IPC_MESSAGE_HANDLER(FrameHostMsg_DocumentOnLoadCompleted, |
755 OnDocumentOnLoadCompleted) | 753 OnDocumentOnLoadCompleted) |
756 IPC_MESSAGE_HANDLER(FrameHostMsg_BeforeUnload_ACK, OnBeforeUnloadACK) | 754 IPC_MESSAGE_HANDLER(FrameHostMsg_BeforeUnload_ACK, OnBeforeUnloadACK) |
757 IPC_MESSAGE_HANDLER(FrameHostMsg_BeforeUnloadHandlersPresent, | |
758 OnBeforeUnloadHandlersPresent) | |
759 IPC_MESSAGE_HANDLER(FrameHostMsg_UnloadHandlersPresent, | |
760 OnUnloadHandlersPresent) | |
761 IPC_MESSAGE_HANDLER(FrameHostMsg_SwapOut_ACK, OnSwapOutACK) | 755 IPC_MESSAGE_HANDLER(FrameHostMsg_SwapOut_ACK, OnSwapOutACK) |
762 IPC_MESSAGE_HANDLER(FrameHostMsg_ContextMenu, OnContextMenu) | 756 IPC_MESSAGE_HANDLER(FrameHostMsg_ContextMenu, OnContextMenu) |
763 IPC_MESSAGE_HANDLER(FrameHostMsg_JavaScriptExecuteResponse, | 757 IPC_MESSAGE_HANDLER(FrameHostMsg_JavaScriptExecuteResponse, |
764 OnJavaScriptExecuteResponse) | 758 OnJavaScriptExecuteResponse) |
765 IPC_MESSAGE_HANDLER(FrameHostMsg_VisualStateResponse, | 759 IPC_MESSAGE_HANDLER(FrameHostMsg_VisualStateResponse, |
766 OnVisualStateResponse) | 760 OnVisualStateResponse) |
767 IPC_MESSAGE_HANDLER(FrameHostMsg_SmartClipDataExtracted, | 761 IPC_MESSAGE_HANDLER(FrameHostMsg_SmartClipDataExtracted, |
768 OnSmartClipDataExtracted) | 762 OnSmartClipDataExtracted) |
769 IPC_MESSAGE_HANDLER_DELAY_REPLY(FrameHostMsg_RunJavaScriptDialog, | 763 IPC_MESSAGE_HANDLER_DELAY_REPLY(FrameHostMsg_RunJavaScriptDialog, |
770 OnRunJavaScriptDialog) | 764 OnRunJavaScriptDialog) |
(...skipping 1619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2390 delegate_->OnFocusedElementChangedInFrame( | 2384 delegate_->OnFocusedElementChangedInFrame( |
2391 this, gfx::Rect(GetView()->TransformPointToRootCoordSpace( | 2385 this, gfx::Rect(GetView()->TransformPointToRootCoordSpace( |
2392 bounds_in_frame_widget.origin()), | 2386 bounds_in_frame_widget.origin()), |
2393 bounds_in_frame_widget.size())); | 2387 bounds_in_frame_widget.size())); |
2394 } | 2388 } |
2395 | 2389 |
2396 void RenderFrameHostImpl::OnSetHasReceivedUserGesture() { | 2390 void RenderFrameHostImpl::OnSetHasReceivedUserGesture() { |
2397 frame_tree_node_->OnSetHasReceivedUserGesture(); | 2391 frame_tree_node_->OnSetHasReceivedUserGesture(); |
2398 } | 2392 } |
2399 | 2393 |
2400 void RenderFrameHostImpl::OnBeforeUnloadHandlersPresent(bool present) { | |
2401 has_beforeunload_handlers_ = present; | |
2402 } | |
2403 | |
2404 void RenderFrameHostImpl::OnUnloadHandlersPresent(bool present) { | |
2405 has_unload_handlers_ = present; | |
2406 } | |
2407 | |
2408 #if BUILDFLAG(USE_EXTERNAL_POPUP_MENU) | 2394 #if BUILDFLAG(USE_EXTERNAL_POPUP_MENU) |
2409 void RenderFrameHostImpl::OnShowPopup( | 2395 void RenderFrameHostImpl::OnShowPopup( |
2410 const FrameHostMsg_ShowPopup_Params& params) { | 2396 const FrameHostMsg_ShowPopup_Params& params) { |
2411 RenderViewHostDelegateView* view = | 2397 RenderViewHostDelegateView* view = |
2412 render_view_host_->delegate_->GetDelegateView(); | 2398 render_view_host_->delegate_->GetDelegateView(); |
2413 if (view) { | 2399 if (view) { |
2414 gfx::Point original_point(params.bounds.x(), params.bounds.y()); | 2400 gfx::Point original_point(params.bounds.x(), params.bounds.y()); |
2415 gfx::Point transformed_point = | 2401 gfx::Point transformed_point = |
2416 static_cast<RenderWidgetHostViewBase*>(GetView()) | 2402 static_cast<RenderWidgetHostViewBase*>(GetView()) |
2417 ->TransformPointToRootCoordSpace(original_point); | 2403 ->TransformPointToRootCoordSpace(original_point); |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2729 } | 2715 } |
2730 } | 2716 } |
2731 | 2717 |
2732 void RenderFrameHostImpl::SimulateBeforeUnloadAck() { | 2718 void RenderFrameHostImpl::SimulateBeforeUnloadAck() { |
2733 DCHECK(is_waiting_for_beforeunload_ack_); | 2719 DCHECK(is_waiting_for_beforeunload_ack_); |
2734 base::TimeTicks approx_renderer_start_time = send_before_unload_start_time_; | 2720 base::TimeTicks approx_renderer_start_time = send_before_unload_start_time_; |
2735 OnBeforeUnloadACK(true, approx_renderer_start_time, base::TimeTicks::Now()); | 2721 OnBeforeUnloadACK(true, approx_renderer_start_time, base::TimeTicks::Now()); |
2736 } | 2722 } |
2737 | 2723 |
2738 bool RenderFrameHostImpl::ShouldDispatchBeforeUnload() { | 2724 bool RenderFrameHostImpl::ShouldDispatchBeforeUnload() { |
2739 if (!IsRenderFrameLive()) | 2725 return IsRenderFrameLive(); |
2740 return false; | |
2741 | |
2742 for (FrameTreeNode* node : frame_tree_->SubtreeNodes(frame_tree_node_)) { | |
2743 if (node->current_frame_host()->has_beforeunload_handlers_) | |
2744 return true; | |
2745 } | |
2746 return false; | |
2747 } | |
2748 | |
2749 bool RenderFrameHostImpl::ShouldDispatchUnload() { | |
2750 if (!IsRenderFrameLive()) | |
2751 return false; | |
2752 | |
2753 for (FrameTreeNode* node : frame_tree_->SubtreeNodes(frame_tree_node_)) { | |
2754 if (node->current_frame_host()->has_unload_handlers_) | |
2755 return true; | |
2756 } | |
2757 return false; | |
2758 } | 2726 } |
2759 | 2727 |
2760 void RenderFrameHostImpl::UpdateOpener() { | 2728 void RenderFrameHostImpl::UpdateOpener() { |
2761 // This frame (the frame whose opener is being updated) might not have had | 2729 // This frame (the frame whose opener is being updated) might not have had |
2762 // proxies for the new opener chain in its SiteInstance. Make sure they | 2730 // proxies for the new opener chain in its SiteInstance. Make sure they |
2763 // exist. | 2731 // exist. |
2764 if (frame_tree_node_->opener()) { | 2732 if (frame_tree_node_->opener()) { |
2765 frame_tree_node_->opener()->render_manager()->CreateOpenerProxies( | 2733 frame_tree_node_->opener()->render_manager()->CreateOpenerProxies( |
2766 GetSiteInstance(), frame_tree_node_); | 2734 GetSiteInstance(), frame_tree_node_); |
2767 } | 2735 } |
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3694 } | 3662 } |
3695 | 3663 |
3696 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( | 3664 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( |
3697 const std::string& interface_name, | 3665 const std::string& interface_name, |
3698 mojo::ScopedMessagePipeHandle pipe) { | 3666 mojo::ScopedMessagePipeHandle pipe) { |
3699 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); | 3667 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); |
3700 } | 3668 } |
3701 #endif | 3669 #endif |
3702 | 3670 |
3703 } // namespace content | 3671 } // namespace content |
OLD | NEW |