Chromium Code Reviews| Index: content/browser/frame_host/navigation_controller_impl.cc |
| diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc |
| index 5d4dee8bb4f528239f5aa090c019182e197bf25f..245a98986036369f3026657613b0a3b9e0e7d29c 100644 |
| --- a/content/browser/frame_host/navigation_controller_impl.cc |
| +++ b/content/browser/frame_host/navigation_controller_impl.cc |
| @@ -6,6 +6,7 @@ |
| #include "base/bind.h" |
| #include "base/command_line.h" |
| +#include "base/debug/crash_logging.h" |
| #include "base/logging.h" |
| #include "base/metrics/histogram.h" |
| #include "base/strings/string_number_conversions.h" // Temporary |
| @@ -792,6 +793,11 @@ bool NavigationControllerImpl::RendererDidNavigate( |
| // Do navigation-type specific actions. These will make and commit an entry. |
| details->type = ClassifyNavigation(rfh, params); |
| NavigationType new_type = ClassifyNavigationWithoutPageID(rfh, params); |
| + if (details->type == NAVIGATION_TYPE_NAV_IGNORE && |
| + new_type == NAVIGATION_TYPE_NAV_IGNORE) { |
| + base::debug::SetCrashKeyValue("369661-doubleignore", |
| + rfh->CommitCountString()); |
| + } |
| bool ignore_mismatch = false; |
| // There are disagreements on some Android bots over SAME_PAGE between the two |
| // classifiers so ignore disagreements if that's the case. |
| @@ -816,7 +822,28 @@ bool NavigationControllerImpl::RendererDidNavigate( |
| ignore_mismatch = true; |
| } |
| if (!ignore_mismatch) { |
| - DCHECK_EQ(details->type, new_type); |
| + base::debug::SetCrashKeyValue("369661-oldtype", |
| + base::IntToString(details->type)); |
| + base::debug::SetCrashKeyValue("369661-newtype", |
| + base::IntToString(new_type)); |
| + base::debug::SetCrashKeyValue("369661-navurl", params.url.spec()); |
| + base::debug::SetCrashKeyValue("369661-naventryid", |
| + base::IntToString(params.nav_entry_id)); |
| + if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kSitePerProcess)) { |
| + base::debug::SetCrashKeyValue("369661-spp", "yes"); |
|
Charlie Reis
2015/06/09 23:32:13
This is unreachable, given line 822.
Avi (use Gerrit)
2015/06/10 16:34:52
Good point. (I just copied the old set of keys.)
|
| + } else { |
| + base::debug::SetCrashKeyValue("369661-spp", "no"); |
| + } |
| + base::debug::SetCrashKeyValue("369661-didcreatenew", |
| + params.did_create_new_entry ? "yes" : "no"); |
| + base::debug::SetCrashKeyValue("369661-pageid", |
| + base::IntToString(params.page_id)); |
| + base::debug::SetCrashKeyValue( |
| + "369661-maxpageid", |
| + base::IntToString(delegate_->GetMaxPageIDForSiteInstance( |
| + rfh->GetSiteInstance()))); |
| + CHECK_EQ(details->type, new_type); |
| } |
| // is_in_page must be computed before the entry gets committed. |
| @@ -936,6 +963,9 @@ NavigationType NavigationControllerImpl::ClassifyNavigation( |
| // list. |
| // |
| // In these cases, there's nothing we can do with them, so ignore. |
| + base::debug::SetCrashKeyValue("369661-oldignore", |
| + rfh->CommitCountString() + |
| + " no page id"); |
| return NAVIGATION_TYPE_NAV_IGNORE; |
| } |
| @@ -952,8 +982,12 @@ NavigationType NavigationControllerImpl::ClassifyNavigation( |
| // navigated on a popup navigated to about:blank (the iframe would be |
| // written into the popup by script on the main page). For these cases, |
| // there isn't any navigation stuff we can do, so just ignore it. |
| - if (!GetLastCommittedEntry()) |
| + if (!GetLastCommittedEntry()) { |
| + base::debug::SetCrashKeyValue("369661-oldignore", |
| + rfh->CommitCountString() + |
| + " new subframe no last committed"); |
| return NAVIGATION_TYPE_NAV_IGNORE; |
| + } |
| // Valid subframe navigation. |
| return NAVIGATION_TYPE_NEW_SUBFRAME; |
| @@ -1004,6 +1038,9 @@ NavigationType NavigationControllerImpl::ClassifyNavigation( |
| } |
| GURL url(temp); |
| rfh->render_view_host()->Send(new ViewMsg_TempCrashWithData(url)); |
| + base::debug::SetCrashKeyValue("369661-oldignore", |
| + rfh->CommitCountString() + |
| + " renderer smoking crack"); |
| return NAVIGATION_TYPE_NAV_IGNORE; |
| } |
| NavigationEntryImpl* existing_entry = entries_[existing_entry_index].get(); |
| @@ -1076,8 +1113,12 @@ NavigationType NavigationControllerImpl::ClassifyNavigationWithoutPageID( |
| // navigated on a popup navigated to about:blank (the iframe would be |
| // written into the popup by script on the main page). For these cases, |
| // there isn't any navigation stuff we can do, so just ignore it. |
| - if (!GetLastCommittedEntry()) |
| + if (!GetLastCommittedEntry()) { |
| + base::debug::SetCrashKeyValue("369661-newignore", |
| + rfh->CommitCountString() + |
| + " new subframe no last committed"); |
| return NAVIGATION_TYPE_NAV_IGNORE; |
| + } |
| // Valid subframe navigation. |
| return NAVIGATION_TYPE_NEW_SUBFRAME; |
| @@ -1094,6 +1135,9 @@ NavigationType NavigationControllerImpl::ClassifyNavigationWithoutPageID( |
| } else { |
| // We ignore subframes created in non-committed pages; we'd appreciate if |
| // people stopped doing that. |
| + base::debug::SetCrashKeyValue("369661-newignore", |
| + rfh->CommitCountString() + |
| + " auto subframe no last committed"); |
| return NAVIGATION_TYPE_NAV_IGNORE; |
| } |
| } |
| @@ -1106,8 +1150,12 @@ NavigationType NavigationControllerImpl::ClassifyNavigationWithoutPageID( |
| // scribble onto an uncommitted page. Again, there isn't any navigation |
| // stuff that we can do, so ignore it here as well. |
| NavigationEntry* last_committed = GetLastCommittedEntry(); |
| - if (!last_committed) |
| + if (!last_committed) { |
| + base::debug::SetCrashKeyValue("369661-newignore", |
| + rfh->CommitCountString() + |
| + " renderer-initiated no last committed"); |
| return NAVIGATION_TYPE_NAV_IGNORE; |
| + } |
| if (IsURLInPageNavigation(params.url, params.was_within_same_page, rfh)) { |
| // This is history.replaceState(), which is renderer-initiated yet within |
| @@ -1155,6 +1203,9 @@ NavigationType NavigationControllerImpl::ClassifyNavigationWithoutPageID( |
| // to such entries). It could also mean that the renderer is smoking crack. |
| // TODO(avi): Crash the renderer like we do in the old ClassifyNavigation? |
| NOTREACHED() << "Could not find nav entry with id " << params.nav_entry_id; |
| + base::debug::SetCrashKeyValue("369661-newignore", |
| + rfh->CommitCountString() + |
| + " renderer smoking crack"); |
| return NAVIGATION_TYPE_NAV_IGNORE; |
| } |