diff options
author | jochen <jochen@chromium.org> | 2014-11-10 21:28:41 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-11 05:28:57 +0000 |
commit | b93dba3c71cb88ffb9f78ef0277ab7e990e43461 (patch) | |
tree | 28490a4fa6b2c5d369f45665e314f1328e22a8d6 | |
parent | 4c28406775b866160606f9c9b89ccd1c4526677f (diff) | |
download | chromium_src-b93dba3c71cb88ffb9f78ef0277ab7e990e43461.zip chromium_src-b93dba3c71cb88ffb9f78ef0277ab7e990e43461.tar.gz chromium_src-b93dba3c71cb88ffb9f78ef0277ab7e990e43461.tar.bz2 |
Record stack trace and coarse reason for referrer failures
BUG=422871
R=mmenke@chromium.org
Review URL: https://codereview.chromium.org/691553004
Cr-Commit-Position: refs/heads/master@{#303596}
-rw-r--r-- | chrome/browser/net/chrome_network_delegate.cc | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc index f2e1d77..4b4d618 100644 --- a/chrome/browser/net/chrome_network_delegate.cc +++ b/chrome/browser/net/chrome_network_delegate.cc @@ -9,7 +9,9 @@ #include <vector> #include "base/base_paths.h" +#include "base/debug/alias.h" #include "base/debug/dump_without_crashing.h" +#include "base/debug/stack_trace.h" #include "base/debug/trace_event.h" #include "base/logging.h" #include "base/metrics/histogram.h" @@ -227,7 +229,21 @@ void RecordIOThreadToRequestStartOnUIThread( #endif // defined(OS_ANDROID) void ReportInvalidReferrerSend(const GURL& target_url, - const GURL& referrer_url) { + const GURL& referrer_url, + const base::debug::StackTrace& callstack) { + // Record information to help debug http://crbug.com/422871 + base::debug::StackTrace trace = callstack; + base::debug::Alias(&trace); + enum { INVALID_URL, FILE_URL, DATA_URL, HTTP_URL, OTHER } reason = OTHER; + if (!target_url.is_valid()) + reason = INVALID_URL; + else if (target_url.SchemeIsFile()) + reason = FILE_URL; + else if (target_url.SchemeIs(url::kDataScheme)) + reason = DATA_URL; + else if (target_url.SchemeIs(url::kHttpScheme)) + reason = HTTP_URL; + base::debug::Alias(&reason); base::RecordAction( base::UserMetricsAction("Net.URLRequest_StartJob_InvalidReferrer")); base::debug::DumpWithoutCrashing(); @@ -792,8 +808,10 @@ bool ChromeNetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader( const net::URLRequest& request, const GURL& target_url, const GURL& referrer_url) const { + base::debug::StackTrace callstack; BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, - base::Bind(&ReportInvalidReferrerSend, target_url, referrer_url)); + base::Bind(&ReportInvalidReferrerSend, target_url, + referrer_url, callstack)); return true; } |