diff options
author | cbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-21 17:50:21 +0000 |
---|---|---|
committer | cbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-21 17:50:21 +0000 |
commit | 7775c7d343d2f5a7e4542fc17db1e6ca62871a42 (patch) | |
tree | 85a0d4d21dce6be1de8286a7d5cbde8696b08d04 /net/http/http_auth_handler.cc | |
parent | d1589966f18d4c14334f8997fbb605891e2bea94 (diff) | |
download | chromium_src-7775c7d343d2f5a7e4542fc17db1e6ca62871a42.zip chromium_src-7775c7d343d2f5a7e4542fc17db1e6ca62871a42.tar.gz chromium_src-7775c7d343d2f5a7e4542fc17db1e6ca62871a42.tar.bz2 |
Added NetLog support for HTTP authentication.
BUG=None
TEST=net_unittests --gtest_filter="HttpAuthHandlerTest.NetLog"
Review URL: http://codereview.chromium.org/2842013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50361 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_auth_handler.cc')
-rw-r--r-- | net/http/http_auth_handler.cc | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/net/http/http_auth_handler.cc b/net/http/http_auth_handler.cc index fe6f91d..a1e6c39 100644 --- a/net/http/http_auth_handler.cc +++ b/net/http/http_auth_handler.cc @@ -9,6 +9,16 @@ namespace net { +HttpAuthHandler::HttpAuthHandler() + : score_(-1), + target_(HttpAuth::AUTH_NONE), + properties_(-1), + original_callback_(NULL), + ALLOW_THIS_IN_INITIALIZER_LIST( + wrapper_callback_( + this, &HttpAuthHandler::OnGenerateAuthTokenComplete)) { +} + bool HttpAuthHandler::InitFromChallenge( HttpAuth::ChallengeTokenizer* challenge, HttpAuth::Target target, @@ -32,6 +42,22 @@ bool HttpAuthHandler::InitFromChallenge( return ok; } +namespace { + +NetLog::EventType EventTypeFromAuthTarget(HttpAuth::Target target) { + switch (target) { + case HttpAuth::AUTH_PROXY: + return NetLog::TYPE_AUTH_PROXY; + case HttpAuth::AUTH_SERVER: + return NetLog::TYPE_AUTH_SERVER; + default: + NOTREACHED(); + return NetLog::TYPE_CANCELLED; + } +} + +} // namespace + int HttpAuthHandler::GenerateAuthToken(const std::wstring* username, const std::wstring* password, const HttpRequestInfo* request, @@ -42,8 +68,26 @@ int HttpAuthHandler::GenerateAuthToken(const std::wstring* username, DCHECK((username == NULL) == (password == NULL)); DCHECK(username != NULL || AllowsDefaultCredentials()); DCHECK(auth_token != NULL); - return GenerateAuthTokenImpl(username, password, request, callback, - auth_token); + DCHECK(original_callback_ == NULL); + original_callback_ = callback; + net_log_.BeginEvent(EventTypeFromAuthTarget(target_), NULL); + int rv = GenerateAuthTokenImpl(username, password, request, + &wrapper_callback_, auth_token); + if (rv != ERR_IO_PENDING) + FinishGenerateAuthToken(); + return rv; +} + +void HttpAuthHandler::OnGenerateAuthTokenComplete(int rv) { + CompletionCallback* callback = original_callback_; + FinishGenerateAuthToken(); + if (callback) + callback->Run(rv); +} + +void HttpAuthHandler::FinishGenerateAuthToken() { + net_log_.EndEvent(EventTypeFromAuthTarget(target_), NULL); + original_callback_ = NULL; } int HttpAuthHandler::ResolveCanonicalName(net::HostResolver* host_resolver, |