summaryrefslogtreecommitdiffstats
path: root/net/http/http_auth_handler.cc
diff options
context:
space:
mode:
authorcbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-21 17:50:21 +0000
committercbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-21 17:50:21 +0000
commit7775c7d343d2f5a7e4542fc17db1e6ca62871a42 (patch)
tree85a0d4d21dce6be1de8286a7d5cbde8696b08d04 /net/http/http_auth_handler.cc
parentd1589966f18d4c14334f8997fbb605891e2bea94 (diff)
downloadchromium_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.cc48
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,