| 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..3c25b2e2f813106986a9c6d68b40ddd7ed357bbd 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,22 @@ 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));
|
| + 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 +957,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 +976,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 +1032,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 +1107,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 +1129,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 +1144,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 +1197,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;
|
| }
|
|
|
|
|