Index: components/policy/core/browser/browser_policy_connector.cc |
diff --git a/components/policy/core/browser/browser_policy_connector.cc b/components/policy/core/browser/browser_policy_connector.cc |
index ead92324b6ba51131fa46d8aaa7764d45b161251..2317f8b90b6661db3ac705987e745c8ae702aa47 100644 |
--- a/components/policy/core/browser/browser_policy_connector.cc |
+++ b/components/policy/core/browser/browser_policy_connector.cc |
@@ -11,6 +11,7 @@ |
#include "base/logging.h" |
#include "base/message_loop/message_loop.h" |
#include "base/message_loop/message_loop_proxy.h" |
+#include "base/metrics/histogram.h" |
#include "base/prefs/pref_registry_simple.h" |
#include "base/strings/string16.h" |
#include "base/strings/utf_string_conversions.h" |
@@ -40,7 +41,8 @@ bool g_created_policy_service = false; |
ConfigurationPolicyProvider* g_testing_provider = NULL; |
// Returns true if |domain| matches the regex |pattern|. |
-bool MatchDomain(const base::string16& domain, const base::string16& pattern) { |
+bool MatchDomain(const base::string16& domain, const base::string16& pattern, |
+ size_t index, size_t max) { |
UErrorCode status = U_ZERO_ERROR; |
const icu::UnicodeString icu_pattern(pattern.data(), pattern.length()); |
icu::RegexMatcher matcher(icu_pattern, UREGEX_CASE_INSENSITIVE, status); |
@@ -52,8 +54,12 @@ bool MatchDomain(const base::string16& domain, const base::string16& pattern) { |
// optimization than crash. |
DLOG(ERROR) << "Possible invalid domain pattern: " << pattern |
<< " - Error: " << status; |
+ UMA_HISTOGRAM_BOOLEAN("Enterprise.DomainWhitelistRegexSuccess", false); |
+ UMA_HISTOGRAM_ENUMERATION("Enterprise.DomainWhitelistRegexFailureIndex", |
+ index, max); |
Joao da Silva
2014/07/11 15:13:47
WDYT of sampling the UErrorCode in "status" with U
Andrew T Wilson (Slow)
2014/07/11 15:46:21
I considered that, but I don't know what UMA_HISTO
Ilya Sherman
2014/07/11 22:54:12
UMA_HISTOGRAM_SPARSE_SLOWLY just uses a map rather
Ilya Sherman
2014/07/11 22:54:12
Hmm, I'm concerned that |max| is being passed in a
Andrew T Wilson (Slow)
2014/07/24 15:25:56
So, what's the right way to use UMA_HISTOGRAM_SPAR
Andrew T Wilson (Slow)
2014/07/24 15:25:56
Done.
Ilya Sherman
2014/07/24 17:29:32
It's up to you what values you list in histograms.
|
return false; |
} |
+ UMA_HISTOGRAM_BOOLEAN("Enterprise.DomainWhitelistRegexSuccess", true); |
Ilya Sherman
2014/07/11 22:54:12
Please define a wrapper method around emitting to
Andrew T Wilson (Slow)
2014/07/24 15:25:56
Done.
|
icu::UnicodeString icu_input(domain.data(), domain.length()); |
matcher.reset(icu_input); |
status = U_ZERO_ERROR; |
@@ -211,7 +217,7 @@ bool BrowserPolicyConnector::IsNonEnterpriseUser(const std::string& username) { |
gaia::ExtractDomainName(gaia::CanonicalizeEmail(username))); |
for (size_t i = 0; i < arraysize(kNonManagedDomainPatterns); i++) { |
base::string16 pattern = base::WideToUTF16(kNonManagedDomainPatterns[i]); |
- if (MatchDomain(domain, pattern)) |
+ if (MatchDomain(domain, pattern, i, arraysize(kNonManagedDomainPatterns))) |
Ilya Sherman
2014/07/11 22:54:12
Hmm, UMA is not intended to be used to track user
Andrew T Wilson (Slow)
2014/07/24 15:25:56
I'm not tracking user navigation. During signin, w
Ilya Sherman
2014/07/24 17:29:32
I'm confused -- the failure is independent of the
|
return true; |
} |
return false; |