Commit 0bb13caa authored by Daniel Cheng's avatar Daniel Cheng Committed by Commit Bot

Use scoped crash keys for debugging same-document speculative RFH navigations.

Bug: 1125106
Change-Id: Ic94c679f4efa77d4c3fea97f67b8975b40eabd00
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2437019
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: default avatardanakj <danakj@chromium.org>
Reviewed-by: default avatarCharlie Reis <creis@chromium.org>
Auto-Submit: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#811760}
parent 2dc3de6b
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include "base/numerics/safe_conversions.h" #include "base/numerics/safe_conversions.h"
#include "base/process/kill.h" #include "base/process/kill.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "base/strings/string_number_conversions.h"
#include "base/task/current_thread.h" #include "base/task/current_thread.h"
#include "base/task/post_task.h" #include "base/task/post_task.h"
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
...@@ -6279,23 +6280,81 @@ void RenderFrameHostImpl::CommitNavigation( ...@@ -6279,23 +6280,81 @@ void RenderFrameHostImpl::CommitNavigation(
// TODO(crbug.com/1125106): A same document navigation can not be done // TODO(crbug.com/1125106): A same document navigation can not be done
// with a provisional frame, and yet it is happening inside a provisional // with a provisional frame, and yet it is happening inside a provisional
// frame somehow. // frame somehow.
DEBUG_ALIAS_FOR_GURL(to_url, common_params->url); using base::debug::AllocateCrashKeyString;
bool browser_initiated = navigation_request->browser_initiated(); using base::debug::CrashKeySize;
base::debug::Alias(&browser_initiated); using base::debug::CrashKeyString;
int64_t to_item_sequence_number = using base::debug::ScopedCrashKeyString;
navigation_request->ItemSequenceNumberForDebugging();
base::debug::Alias(&to_item_sequence_number); static CrashKeyString* const to_url_key = AllocateCrashKeyString(
int64_t to_document_sequence_number = "SpecSameDocNav-to-url", CrashKeySize::Size256);
navigation_request->DocumentSequenceNumberForDebugging(); static CrashKeyString* const is_speculative_key = AllocateCrashKeyString(
base::debug::Alias(&to_document_sequence_number); "SpecSameDocNav-is-speculative", CrashKeySize::Size32);
static CrashKeyString* const dest_rfh_last_committed_url_key =
DEBUG_ALIAS_FOR_GURL(from_url, last_committed_url_); AllocateCrashKeyString("SpecSameDocNav-dest-rfh-last-committed-url",
CrashKeySize::Size256);
static CrashKeyString* const browser_initiated_key =
AllocateCrashKeyString("SpecSameDocNav-is-browser-initiated",
CrashKeySize::Size32);
static CrashKeyString* const to_item_sequence_number_key =
AllocateCrashKeyString("SpecSameDocNav-to-item-sequence-number",
CrashKeySize::Size32);
static CrashKeyString* const to_document_sequence_number_key =
AllocateCrashKeyString("SpecSameDocNav-to-document-sequence-number",
CrashKeySize::Size32);
static CrashKeyString* const from_url_key = AllocateCrashKeyString(
"SpecSameDocNav-from-url", CrashKeySize::Size256);
static CrashKeyString* from_item_sequence_number_key =
AllocateCrashKeyString("SpecSameDocNav-from-item-sequence-number",
CrashKeySize::Size32);
static CrashKeyString* from_document_sequence_number_key =
AllocateCrashKeyString("SpecSameDocNav-from-document-sequence-number",
CrashKeySize::Size32);
ScopedCrashKeyString to_url_scoper(
to_url_key, common_params->url.possibly_invalid_spec());
const bool is_speculative =
frame_tree_node()->render_manager()->speculative_frame_host() == this;
ScopedCrashKeyString is_speculative_scoper(
is_speculative_key, is_speculative ? "true" : "false");
ScopedCrashKeyString dest_rfh_last_committed_url_scoper(
dest_rfh_last_committed_url_key,
GetLastCommittedURL().possibly_invalid_spec());
const bool browser_initiated = navigation_request->browser_initiated();
ScopedCrashKeyString browser_initiated_scoper(
browser_initiated_key, browser_initiated ? "true" : "false");
const std::string& to_item_sequence_number_string = base::NumberToString(
navigation_request->ItemSequenceNumberForDebugging());
ScopedCrashKeyString to_item_sequence_number_scoper(
to_item_sequence_number_key, to_item_sequence_number_string);
const std::string& to_document_sequence_number_string =
base::NumberToString(
navigation_request->DocumentSequenceNumberForDebugging());
ScopedCrashKeyString to_document_sequence_number_scoper(
to_document_sequence_number_key, to_document_sequence_number_string);
ScopedCrashKeyString from_url_reset(
from_url_key, last_committed_url_.possibly_invalid_spec());
int64_t from_item_sequence_number = -1; int64_t from_item_sequence_number = -1;
int64_t from_document_sequence_number = -1; int64_t from_document_sequence_number = -1;
delegate_->GetFrameSequenceNumbersForDebugging( delegate_->GetFrameSequenceNumbersForDebugging(
this, from_item_sequence_number, from_document_sequence_number); this, from_item_sequence_number, from_document_sequence_number);
base::debug::Alias(&from_item_sequence_number);
base::debug::Alias(&from_document_sequence_number); const std::string& from_item_sequence_number_string =
base::NumberToString(from_item_sequence_number);
ScopedCrashKeyString from_item_sequence_number_scoper(
from_item_sequence_number_key, from_item_sequence_number_string);
const std::string& from_document_sequence_number_string =
base::NumberToString(from_document_sequence_number);
ScopedCrashKeyString from_document_sequence_number_scoper(
from_document_sequence_number_key,
from_document_sequence_number_string);
base::debug::DumpWithoutCrashing(); base::debug::DumpWithoutCrashing();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment