Index: content/browser/frame_host/render_frame_host_impl.cc |
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc |
index e42f92e4629b55f300b2ab92866ee3d8d9284d9c..62b7b611f34ed9b6c0377bc24094231e3f8fde70 100644 |
--- a/content/browser/frame_host/render_frame_host_impl.cc |
+++ b/content/browser/frame_host/render_frame_host_impl.cc |
@@ -1208,12 +1208,21 @@ void RenderFrameHostImpl::OnDidStartProvisionalLoad( |
// active. |
if (!is_active()) |
return; |
+ |
+ TRACE_EVENT2("navigation", "RenderFrameHostImpl::OnDidStartProvisionalLoad", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id(), "url", |
+ url.possibly_invalid_spec()); |
+ |
frame_tree_node_->navigator()->DidStartProvisionalLoad( |
this, url, redirect_chain, navigation_start); |
} |
void RenderFrameHostImpl::OnDidFailProvisionalLoadWithError( |
const FrameHostMsg_DidFailProvisionalLoadWithError_Params& params) { |
+ TRACE_EVENT2("navigation", |
+ "RenderFrameHostImpl::OnDidFailProvisionalLoadWithError", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id(), |
+ "error", params.error_code); |
// TODO(clamy): Kill the renderer with RFH_FAIL_PROVISIONAL_LOAD_NO_HANDLE and |
// return early if navigation_handle_ is null, once we prevent that case from |
// happening in practice. |
@@ -1232,6 +1241,11 @@ void RenderFrameHostImpl::OnDidFailLoadWithError( |
int error_code, |
const base::string16& error_description, |
bool was_ignored_by_handler) { |
+ TRACE_EVENT2("navigation", |
+ "RenderFrameHostImpl::OnDidFailProvisionalLoadWithError", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id(), |
+ "error", error_code); |
+ |
GURL validated_url(url); |
GetProcess()->FilterURL(false, &validated_url); |
@@ -1256,8 +1270,9 @@ void RenderFrameHostImpl::OnDidCommitProvisionalLoad(const IPC::Message& msg) { |
process, bad_message::RFH_COMMIT_DESERIALIZATION_FAILED); |
return; |
} |
- TRACE_EVENT1("navigation", "RenderFrameHostImpl::OnDidCommitProvisionalLoad", |
- "url", validated_params.url.possibly_invalid_spec()); |
+ TRACE_EVENT2("navigation", "RenderFrameHostImpl::OnDidCommitProvisionalLoad", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id(), "url", |
+ validated_params.url.possibly_invalid_spec()); |
// Sanity-check the page transition for frame type. |
DCHECK_EQ(ui::PageTransitionIsMainFrame(validated_params.transition), |
@@ -1451,7 +1466,9 @@ void RenderFrameHostImpl::SwapOut( |
// the operation and sends back an IPC message. |
// The trace event may not end properly if the ACK times out. We expect this |
// to be fixed when RenderViewHostImpl::OnSwapOut moves to RenderFrameHost. |
- TRACE_EVENT_ASYNC_BEGIN0("navigation", "RenderFrameHostImpl::SwapOut", this); |
+ TRACE_EVENT_ASYNC_BEGIN1("navigation", "RenderFrameHostImpl::SwapOut", this, |
+ "frame_tree_node", |
+ frame_tree_node_->frame_tree_node_id()); |
// If this RenderFrameHost is already pending deletion, it must have already |
// gone through this, therefore just return. |
@@ -1784,6 +1801,14 @@ void RenderFrameHostImpl::OnRunBeforeUnloadConfirm( |
const GURL& frame_url, |
bool is_reload, |
IPC::Message* reply_msg) { |
+ TRACE_EVENT1("navigation", "RenderFrameHostImpl::OnRunBeforeUnloadConfirm", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id()); |
+ |
+ // TODO(nasko): It is strange to accept the frame URL as a parameter from |
+ // the renderer. Investigate and remove parameter, but for now let's |
+ // double check. |
+ DCHECK_EQ(frame_url, last_committed_url_); |
+ |
// While a JS beforeunload dialog is showing, tabs in the same process |
// shouldn't process input events. |
GetProcess()->SetIgnoreInputEvents(true); |
@@ -1844,6 +1869,9 @@ void RenderFrameHostImpl::AllowBindings(int bindings_flags) { |
NOTREACHED() << "Never grant bindings to a guest process."; |
return; |
} |
+ TRACE_EVENT2("navigation", "RenderFrameHostImpl::AllowBindings", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id(), |
+ "bindings flags", bindings_flags); |
// Ensure we aren't granting WebUI bindings to a process that has already |
// been used for non-privileged views. |
@@ -1928,6 +1956,9 @@ void RenderFrameHostImpl::OnDidChangeName(const std::string& name, |
// TODO(lukasza): Call ReceivedBadMessage when |unique_name| is empty. |
DCHECK(!unique_name.empty()); |
} |
+ TRACE_EVENT2("navigation", "RenderFrameHostImpl::OnDidChangeName", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id(), |
+ "name length", name.length()); |
std::string old_name = frame_tree_node()->frame_name(); |
frame_tree_node()->SetFrameName(name, unique_name); |
@@ -1945,6 +1976,10 @@ void RenderFrameHostImpl::OnDidSetFeaturePolicyHeader( |
void RenderFrameHostImpl::OnDidAddContentSecurityPolicies( |
const std::vector<ContentSecurityPolicy>& policies) { |
+ TRACE_EVENT1("navigation", |
+ "RenderFrameHostImpl::OnDidAddContentSecurityPolicies", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id()); |
+ |
std::vector<ContentSecurityPolicyHeader> headers; |
for (const ContentSecurityPolicy& policy : policies) { |
AddContentSecurityPolicy(policy); |
@@ -1960,6 +1995,9 @@ void RenderFrameHostImpl::OnEnforceInsecureRequestPolicy( |
void RenderFrameHostImpl::OnUpdateToUniqueOrigin( |
bool is_potentially_trustworthy_unique_origin) { |
+ TRACE_EVENT1("navigation", "RenderFrameHostImpl::OnUpdateToUniqueOrigin", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id()); |
+ |
url::Origin origin; |
DCHECK(origin.unique()); |
frame_tree_node()->SetCurrentOrigin(origin, |
@@ -2049,6 +2087,11 @@ void RenderFrameHostImpl::OnBeginNavigation( |
CHECK(IsBrowserSideNavigationEnabled()); |
if (!is_active()) |
return; |
+ |
+ TRACE_EVENT2("navigation", "RenderFrameHostImpl::OnBeforeNavigation", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id(), "url", |
+ common_params.url.possibly_invalid_spec()); |
+ |
CommonNavigationParams validated_params = common_params; |
GetProcess()->FilterURL(false, &validated_params.url); |
@@ -2066,6 +2109,8 @@ void RenderFrameHostImpl::OnBeginNavigation( |
} |
void RenderFrameHostImpl::OnAbortNavigation() { |
+ TRACE_EVENT1("navigation", "RenderFrameHostImpl::OnAbortNavigation", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id()); |
if (!IsBrowserSideNavigationEnabled()) { |
NOTREACHED(); |
return; |
@@ -2076,6 +2121,8 @@ void RenderFrameHostImpl::OnAbortNavigation() { |
} |
void RenderFrameHostImpl::OnDispatchLoad() { |
+ TRACE_EVENT1("navigation", "RenderFrameHostImpl::OnDispatchLoad", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id()); |
CHECK(SiteIsolationPolicy::AreCrossProcessFramesPossible()); |
// Don't forward the load event if this RFH is pending deletion. This can |
@@ -2319,6 +2366,10 @@ void RenderFrameHostImpl::OnToggleFullscreen(bool enter_fullscreen) { |
} |
void RenderFrameHostImpl::OnDidStartLoading(bool to_different_document) { |
+ TRACE_EVENT2("navigation", "RenderFrameHostImpl::OnDidStartLoading", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id(), |
+ "to different document", to_different_document); |
+ |
if (IsBrowserSideNavigationEnabled() && to_different_document) { |
bad_message::ReceivedBadMessage(GetProcess(), |
bad_message::RFH_UNEXPECTED_LOAD_START); |
@@ -2336,6 +2387,9 @@ void RenderFrameHostImpl::OnDidStartLoading(bool to_different_document) { |
} |
void RenderFrameHostImpl::OnDidStopLoading() { |
+ TRACE_EVENT1("navigation", "RenderFrameHostImpl::OnDidStopLoading", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id()); |
+ |
// This method should never be called when the frame is not loading. |
// Unfortunately, it can happen if a history navigation happens during a |
// BeforeUnload or Unload event. |
@@ -2442,6 +2496,9 @@ void RenderFrameHostImpl::CreateNewWindow( |
mojom::CreateNewWindowParamsPtr params, |
CreateNewWindowCallback callback) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ TRACE_EVENT2("navigation", "RenderFrameHostImpl::CreateNewWindow", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id(), "url", |
+ params->target_url.possibly_invalid_spec()); |
bool no_javascript_access = false; |
@@ -2717,7 +2774,8 @@ void RenderFrameHostImpl::Navigate( |
const CommonNavigationParams& common_params, |
const StartNavigationParams& start_params, |
const RequestNavigationParams& request_params) { |
- TRACE_EVENT0("navigation", "RenderFrameHostImpl::Navigate"); |
+ TRACE_EVENT1("navigation", "RenderFrameHostImpl::Navigate", "frame_tree_node", |
+ frame_tree_node_->frame_tree_node_id()); |
DCHECK(!IsBrowserSideNavigationEnabled()); |
UpdatePermissionsForNavigation(common_params, request_params); |
@@ -2754,6 +2812,8 @@ void RenderFrameHostImpl::Navigate( |
} |
void RenderFrameHostImpl::NavigateToInterstitialURL(const GURL& data_url) { |
+ TRACE_EVENT1("navigation", "RenderFrameHostImpl::NavigateToInterstitialURL", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id()); |
DCHECK(data_url.SchemeIs(url::kDataScheme)); |
CommonNavigationParams common_params( |
data_url, Referrer(), ui::PAGE_TRANSITION_LINK, |
@@ -2771,6 +2831,8 @@ void RenderFrameHostImpl::NavigateToInterstitialURL(const GURL& data_url) { |
} |
void RenderFrameHostImpl::Stop() { |
+ TRACE_EVENT1("navigation", "RenderFrameHostImpl::Stop", "frame_tree_node", |
+ frame_tree_node_->frame_tree_node_id()); |
Send(new FrameMsg_Stop(routing_id_)); |
} |
@@ -2839,6 +2901,9 @@ bool RenderFrameHostImpl::ShouldDispatchBeforeUnload() { |
} |
void RenderFrameHostImpl::UpdateOpener() { |
+ TRACE_EVENT1("navigation", "RenderFrameHostImpl::UpdateOpener", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id()); |
+ |
// This frame (the frame whose opener is being updated) might not have had |
// proxies for the new opener chain in its SiteInstance. Make sure they |
// exist. |
@@ -2927,6 +2992,9 @@ void RenderFrameHostImpl::CommitNavigation( |
const CommonNavigationParams& common_params, |
const RequestNavigationParams& request_params, |
bool is_view_source) { |
+ TRACE_EVENT2("navigation", "RenderFrameHostImpl::CommitNavigation", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id(), "url", |
+ common_params.url.possibly_invalid_spec()); |
DCHECK( |
(response && (body.get() || handle.is_valid())) || |
common_params.url.SchemeIs(url::kDataScheme) || |
@@ -2980,6 +3048,10 @@ void RenderFrameHostImpl::FailedNavigation( |
const RequestNavigationParams& request_params, |
bool has_stale_copy_in_cache, |
int error_code) { |
+ TRACE_EVENT2("navigation", "RenderFrameHostImpl::FailedNavigation", |
+ "frame_tree_node", frame_tree_node_->frame_tree_node_id(), |
+ "error", error_code); |
+ |
// Update renderer permissions even for failed commits, so that for example |
// the URL bar correctly displays privileged URLs instead of filtering them. |
UpdatePermissionsForNavigation(common_params, request_params); |