Chromium Code Reviews| Index: chrome/browser/ui/webui/log_web_ui_url.cc |
| diff --git a/chrome/browser/ui/webui/log_web_ui_url.cc b/chrome/browser/ui/webui/log_web_ui_url.cc |
| index 3b793a211879fecf1fcad90fa6f2fa1fc6a417a6..245b4f3a782ec1ac76ef4b145b406cc454718d54 100644 |
| --- a/chrome/browser/ui/webui/log_web_ui_url.cc |
| +++ b/chrome/browser/ui/webui/log_web_ui_url.cc |
| @@ -4,6 +4,7 @@ |
| #include "chrome/browser/ui/webui/log_web_ui_url.h" |
| +#include "base/bind.h" |
| #include "base/hash.h" |
| #include "base/metrics/histogram_base.h" |
| #include "base/metrics/sparse_histogram.h" |
| @@ -18,6 +19,16 @@ |
| namespace webui { |
| +namespace { |
| + |
| +static WebUIUrlHash* g_hash = nullptr; |
|
Dan Beam
2015/09/26 23:02:14
if you have any suggestions that don't require thi
|
| + |
| +uint32 DefaultHash(const GURL& web_ui_url) { |
| + return base::Hash(web_ui_url.spec()); |
| +} |
| + |
| +} // namespace |
| + |
| bool LogWebUIUrl(const GURL& web_ui_url) { |
| bool should_log = web_ui_url.SchemeIs(content::kChromeUIScheme) || |
| web_ui_url.SchemeIs(content::kChromeDevToolsScheme); |
| @@ -28,7 +39,10 @@ bool LogWebUIUrl(const GURL& web_ui_url) { |
| #endif |
| if (should_log) { |
| - uint32 hash = base::Hash(web_ui_url.GetOrigin().spec()); |
| + if (!g_hash) |
| + g_hash = new WebUIUrlHash(base::Bind(DefaultHash)); |
| + |
| + uint32 hash = g_hash->Run(web_ui_url.GetOrigin()); |
| UMA_HISTOGRAM_SPARSE_SLOWLY("WebUI.CreatedForUrl", |
| static_cast<base::HistogramBase::Sample>(hash)); |
| } |
| @@ -36,4 +50,14 @@ bool LogWebUIUrl(const GURL& web_ui_url) { |
| return should_log; |
| } |
| +void SetHashFunctionForTesting(const WebUIUrlHash& testing_hash) { |
| + if (g_hash) { |
| + delete g_hash; |
| + g_hash = nullptr; |
| + } |
| + |
| + if (!testing_hash.is_null()) |
| + g_hash = new WebUIUrlHash(testing_hash); |
| +} |
| + |
| } // namespace webui |