| Index: net/http/http_auth_controller.cc
|
| diff --git a/net/http/http_auth_controller.cc b/net/http/http_auth_controller.cc
|
| index 4d9d6be1f0da308cc26d6f0abef5774f03cbbbe9..0b3d5c09aed8afb092005d18cddf9202e0dd4266 100644
|
| --- a/net/http/http_auth_controller.cc
|
| +++ b/net/http/http_auth_controller.cc
|
| @@ -67,6 +67,41 @@ enum AuthTarget {
|
| AUTH_TARGET_MAX,
|
| };
|
|
|
| +// Known authentication schemes.
|
| +enum AuthScheme {
|
| + AUTH_SCHEME_BASIC = 0,
|
| + AUTH_SCHEME_DIGEST,
|
| + AUTH_SCHEME_NTLM,
|
| + AUTH_SCHEME_NEGOTIATE,
|
| + AUTH_SCHEME_SPDYPROXY_DEPRECATED,
|
| + AUTH_SCHEME_MOCK,
|
| +
|
| + // Add new schemes above this line and don't remove any values. This
|
| + // enumeration is used for UMA.
|
| + AUTH_SCHEME_MAX,
|
| +};
|
| +
|
| +AuthScheme AuthSchemeForUMA(const std::string& scheme) {
|
| + DCHECK(HttpAuth::IsValidNormalizedScheme(scheme));
|
| +
|
| + if (scheme == "basic")
|
| + return AUTH_SCHEME_BASIC;
|
| +
|
| + if (scheme == "digest")
|
| + return AUTH_SCHEME_DIGEST;
|
| +
|
| + if (scheme == "ntlm")
|
| + return AUTH_SCHEME_NTLM;
|
| +
|
| + if (scheme == "negotiate")
|
| + return AUTH_SCHEME_NEGOTIATE;
|
| +
|
| + if (scheme == "mock")
|
| + return AUTH_SCHEME_MOCK;
|
| +
|
| + return AUTH_SCHEME_MAX;
|
| +}
|
| +
|
| AuthTarget DetermineAuthTarget(const HttpAuthHandler* handler) {
|
| switch (handler->target()) {
|
| case HttpAuth::AUTH_PROXY:
|
| @@ -98,8 +133,10 @@ void HistogramAuthEvent(HttpAuthHandler* handler, AuthEvent auth_event) {
|
| DCHECK_EQ(first_thread, base::PlatformThread::CurrentId());
|
| #endif
|
|
|
| - HttpAuth::Scheme auth_scheme = handler->auth_scheme();
|
| - DCHECK(auth_scheme >= 0 && auth_scheme < HttpAuth::AUTH_SCHEME_MAX);
|
| + AuthScheme auth_scheme = AuthSchemeForUMA(handler->auth_scheme());
|
| + // Only measure known auth schemes.
|
| + if (auth_scheme == AUTH_SCHEME_MAX)
|
| + return;
|
|
|
| // Record start and rejection events for authentication.
|
| //
|
| @@ -112,8 +149,7 @@ void HistogramAuthEvent(HttpAuthHandler* handler, AuthEvent auth_event) {
|
| // NTLM Reject: 5
|
| // Negotiate Start: 6
|
| // Negotiate Reject: 7
|
| - static const int kEventBucketsEnd =
|
| - HttpAuth::AUTH_SCHEME_MAX * AUTH_EVENT_MAX;
|
| + static const int kEventBucketsEnd = AUTH_SCHEME_MAX * AUTH_EVENT_MAX;
|
| int event_bucket = auth_scheme * AUTH_EVENT_MAX + auth_event;
|
| DCHECK(event_bucket >= 0 && event_bucket < kEventBucketsEnd);
|
| UMA_HISTOGRAM_ENUMERATION("Net.HttpAuthCount", event_bucket,
|
| @@ -140,8 +176,7 @@ void HistogramAuthEvent(HttpAuthHandler* handler, AuthEvent auth_event) {
|
| // Negotiate Secure Server: 15
|
| if (auth_event != AUTH_EVENT_START)
|
| return;
|
| - static const int kTargetBucketsEnd =
|
| - HttpAuth::AUTH_SCHEME_MAX * AUTH_TARGET_MAX;
|
| + static const int kTargetBucketsEnd = AUTH_SCHEME_MAX * AUTH_TARGET_MAX;
|
| AuthTarget auth_target = DetermineAuthTarget(handler);
|
| int target_bucket = auth_scheme * AUTH_TARGET_MAX + auth_target;
|
| DCHECK(target_bucket >= 0 && target_bucket < kTargetBucketsEnd);
|
| @@ -510,7 +545,7 @@ void HttpAuthController::PopulateAuthChallenge() {
|
| auth_info_ = new AuthChallengeInfo;
|
| auth_info_->is_proxy = (target_ == HttpAuth::AUTH_PROXY);
|
| auth_info_->challenger = HostPortPair::FromURL(auth_origin_);
|
| - auth_info_->scheme = HttpAuth::SchemeToString(handler_->auth_scheme());
|
| + auth_info_->scheme = handler_->auth_scheme();
|
| auth_info_->realm = handler_->realm();
|
| }
|
|
|
| @@ -560,14 +595,14 @@ scoped_refptr<AuthChallengeInfo> HttpAuthController::auth_info() {
|
| return auth_info_;
|
| }
|
|
|
| -bool HttpAuthController::IsAuthSchemeDisabled(HttpAuth::Scheme scheme) const {
|
| +bool HttpAuthController::IsAuthSchemeDisabled(const std::string& scheme) const {
|
| DCHECK(CalledOnValidThread());
|
| - return disabled_schemes_.find(scheme) != disabled_schemes_.end();
|
| + return disabled_schemes_.Contains(scheme);
|
| }
|
|
|
| -void HttpAuthController::DisableAuthScheme(HttpAuth::Scheme scheme) {
|
| +void HttpAuthController::DisableAuthScheme(const std::string& scheme) {
|
| DCHECK(CalledOnValidThread());
|
| - disabled_schemes_.insert(scheme);
|
| + disabled_schemes_.Add(scheme);
|
| }
|
|
|
| void HttpAuthController::DisableEmbeddedIdentity() {
|
|
|