Chromium Code Reviews| 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", |
|
clamy
2017/04/28 14:07:15
nit: s/OnBeforeNavigation/OnBeginNavigation ?
|
| + "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); |