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

Unified Diff: content/browser/frame_host/render_frame_host_impl.cc

Issue 2846983002: Add more navigation tracing to RenderFrameHost and NavigationRequest. (Closed)
Patch Set: Move SetWaitingForRendererResponse implementation to .cc file. Created 3 years, 8 months 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 side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698