Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: content/browser/frame_host/render_frame_host_impl.cc

Issue 1425823002: (DEPRECATED) Send navigation_start to browser process in DidStartProvisionalLoad (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Stop calling didCreateDataSource for same-page navs Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/containers/hash_tables.h" 9 #include "base/containers/hash_tables.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 UMA_HISTOGRAM_CUSTOM_TIMES("Navigation.UI_OnLoadComplete.Intent", 785 UMA_HISTOGRAM_CUSTOM_TIMES("Navigation.UI_OnLoadComplete.Intent",
786 base::TimeTicks::Now() - ui_timestamp, 786 base::TimeTicks::Now() - ui_timestamp,
787 base::TimeDelta::FromMilliseconds(10), 787 base::TimeDelta::FromMilliseconds(10),
788 base::TimeDelta::FromMinutes(10), 100); 788 base::TimeDelta::FromMinutes(10), 100);
789 } 789 }
790 // This message is only sent for top-level frames. TODO(avi): when frame tree 790 // This message is only sent for top-level frames. TODO(avi): when frame tree
791 // mirroring works correctly, add a check here to enforce it. 791 // mirroring works correctly, add a check here to enforce it.
792 delegate_->DocumentOnLoadCompleted(this); 792 delegate_->DocumentOnLoadCompleted(this);
793 } 793 }
794 794
795 void RenderFrameHostImpl::OnDidStartProvisionalLoadForFrame(const GURL& url) { 795 void RenderFrameHostImpl::OnDidStartProvisionalLoadForFrame(
796 frame_tree_node_->navigator()->DidStartProvisionalLoad( 796 const GURL& url,
797 this, url); 797 const base::TimeTicks& navigation_start) {
798 DCHECK(!navigation_start.is_null());
799 frame_tree_node_->navigator()->DidStartProvisionalLoad(this, url,
800 navigation_start);
798 } 801 }
799 802
800 void RenderFrameHostImpl::OnDidFailProvisionalLoadWithError( 803 void RenderFrameHostImpl::OnDidFailProvisionalLoadWithError(
801 const FrameHostMsg_DidFailProvisionalLoadWithError_Params& params) { 804 const FrameHostMsg_DidFailProvisionalLoadWithError_Params& params) {
802 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 805 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
803 switches::kEnableBrowserSideNavigation) && 806 switches::kEnableBrowserSideNavigation) &&
804 navigation_handle_) { 807 navigation_handle_) {
805 navigation_handle_->set_net_error_code( 808 navigation_handle_->set_net_error_code(
806 static_cast<net::Error>(params.error_code)); 809 static_cast<net::Error>(params.error_code));
807 } 810 }
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 // same-process navigation is interrupted by a synchronous renderer-initiated 928 // same-process navigation is interrupted by a synchronous renderer-initiated
926 // navigation. 929 // navigation.
927 if (navigation_handle_ && 930 if (navigation_handle_ &&
928 navigation_handle_->GetURL() != validated_params.url) { 931 navigation_handle_->GetURL() != validated_params.url) {
929 navigation_handle_.reset(); 932 navigation_handle_.reset();
930 } 933 }
931 934
932 // Synchronous renderer-initiated navigations will send a 935 // Synchronous renderer-initiated navigations will send a
933 // DidCommitProvisionalLoad IPC without a prior DidStartProvisionalLoad 936 // DidCommitProvisionalLoad IPC without a prior DidStartProvisionalLoad
934 // message. 937 // message.
938 // TODO(csharrison) Should we use a timestamp logged in the renderer here?
935 if (!navigation_handle_) { 939 if (!navigation_handle_) {
936 navigation_handle_ = NavigationHandleImpl::Create( 940 navigation_handle_ = NavigationHandleImpl::Create(
937 validated_params.url, frame_tree_node_); 941 validated_params.url, frame_tree_node_, base::TimeTicks::Now());
938 } 942 }
939 943
940 accessibility_reset_count_ = 0; 944 accessibility_reset_count_ = 0;
941 frame_tree_node()->navigator()->DidNavigate(this, validated_params); 945 frame_tree_node()->navigator()->DidNavigate(this, validated_params);
942 946
943 // For a top-level frame, there are potential security concerns associated 947 // For a top-level frame, there are potential security concerns associated
944 // with displaying graphics from a previously loaded page after the URL in 948 // with displaying graphics from a previously loaded page after the URL in
945 // the omnibar has been changed. It is unappealing to clear the page 949 // the omnibar has been changed. It is unappealing to clear the page
946 // immediately, but if the renderer is taking a long time to issue any 950 // immediately, but if the renderer is taking a long time to issue any
947 // compositor output (possibly because of script deliberately creating this 951 // compositor output (possibly because of script deliberately creating this
(...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after
1762 // done here either. 1766 // done here either.
1763 if (!common_params.url.SchemeIs(url::kJavaScriptScheme)) 1767 if (!common_params.url.SchemeIs(url::kJavaScriptScheme))
1764 frame_tree_node_->DidStartLoading(true); 1768 frame_tree_node_->DidStartLoading(true);
1765 } 1769 }
1766 1770
1767 void RenderFrameHostImpl::NavigateToInterstitialURL(const GURL& data_url) { 1771 void RenderFrameHostImpl::NavigateToInterstitialURL(const GURL& data_url) {
1768 DCHECK(data_url.SchemeIs(url::kDataScheme)); 1772 DCHECK(data_url.SchemeIs(url::kDataScheme));
1769 CommonNavigationParams common_params( 1773 CommonNavigationParams common_params(
1770 data_url, Referrer(), ui::PAGE_TRANSITION_LINK, 1774 data_url, Referrer(), ui::PAGE_TRANSITION_LINK,
1771 FrameMsg_Navigate_Type::NORMAL, false, false, base::TimeTicks::Now(), 1775 FrameMsg_Navigate_Type::NORMAL, false, false, base::TimeTicks::Now(),
1772 FrameMsg_UILoadMetricsReportType::NO_REPORT, GURL(), GURL(), 1776 FrameMsg_UILoadMetricsReportType::NO_REPORT, GURL(), GURL(), LOFI_OFF,
1773 LOFI_OFF); 1777 base::TimeTicks::Now());
1774 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 1778 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
1775 switches::kEnableBrowserSideNavigation)) { 1779 switches::kEnableBrowserSideNavigation)) {
1776 CommitNavigation(nullptr, nullptr, common_params, 1780 CommitNavigation(nullptr, nullptr, common_params,
1777 RequestNavigationParams()); 1781 RequestNavigationParams());
1778 } else { 1782 } else {
1779 Navigate(common_params, StartNavigationParams(), RequestNavigationParams()); 1783 Navigate(common_params, StartNavigationParams(), RequestNavigationParams());
1780 } 1784 }
1781 } 1785 }
1782 1786
1783 void RenderFrameHostImpl::OpenURL(const FrameHostMsg_OpenURL_Params& params, 1787 void RenderFrameHostImpl::OpenURL(const FrameHostMsg_OpenURL_Params& params,
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
2145 "RenderFrameHostImpl navigation suspended", this); 2149 "RenderFrameHostImpl navigation suspended", this);
2146 } 2150 }
2147 2151
2148 if (!suspend && suspended_nav_params_) { 2152 if (!suspend && suspended_nav_params_) {
2149 // There's navigation message params waiting to be sent. Now that we're not 2153 // There's navigation message params waiting to be sent. Now that we're not
2150 // suspended anymore, resume navigation by sending them. If we were swapped 2154 // suspended anymore, resume navigation by sending them. If we were swapped
2151 // out, we should also stop filtering out the IPC messages now. 2155 // out, we should also stop filtering out the IPC messages now.
2152 SetState(RenderFrameHostImpl::STATE_DEFAULT); 2156 SetState(RenderFrameHostImpl::STATE_DEFAULT);
2153 2157
2154 DCHECK(!proceed_time.is_null()); 2158 DCHECK(!proceed_time.is_null());
2155 suspended_nav_params_->request_params.browser_navigation_start = 2159 suspended_nav_params_->common_params.navigation_start = proceed_time;
clamy 2015/11/03 13:33:00 This is somewhat problematic. We pushed the naviga
2156 proceed_time;
2157 SendNavigateMessage(suspended_nav_params_->common_params, 2160 SendNavigateMessage(suspended_nav_params_->common_params,
2158 suspended_nav_params_->start_params, 2161 suspended_nav_params_->start_params,
2159 suspended_nav_params_->request_params); 2162 suspended_nav_params_->request_params);
2160 suspended_nav_params_.reset(); 2163 suspended_nav_params_.reset();
2161 } 2164 }
2162 } 2165 }
2163 2166
2164 void RenderFrameHostImpl::CancelSuspendedNavigations() { 2167 void RenderFrameHostImpl::CancelSuspendedNavigations() {
2165 // Clear any state if a pending navigation is canceled or preempted. 2168 // Clear any state if a pending navigation is canceled or preempted.
2166 if (suspended_nav_params_) 2169 if (suspended_nav_params_)
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
2306 *dst = src; 2309 *dst = src;
2307 2310
2308 if (src.routing_id != -1) 2311 if (src.routing_id != -1)
2309 dst->tree_id = RoutingIDToAXTreeID(src.routing_id); 2312 dst->tree_id = RoutingIDToAXTreeID(src.routing_id);
2310 2313
2311 if (src.parent_routing_id != -1) 2314 if (src.parent_routing_id != -1)
2312 dst->parent_tree_id = RoutingIDToAXTreeID(src.parent_routing_id); 2315 dst->parent_tree_id = RoutingIDToAXTreeID(src.parent_routing_id);
2313 } 2316 }
2314 2317
2315 } // namespace content 2318 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698