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
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 @@
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 @@
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,