| 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);
|
|
|