base::Bind: Convert most of net/http.

BUG=none
TEST=none
R=csilv

Review URL: http://codereview.chromium.org/8990001

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@115220 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/http/http_auth_handler.cc b/net/http/http_auth_handler.cc
index c196b85..0aad829 100644
--- a/net/http/http_auth_handler.cc
+++ b/net/http/http_auth_handler.cc
@@ -4,6 +4,8 @@
 
 #include "net/http/http_auth_handler.h"
 
+#include "base/bind.h"
+#include "base/bind_helpers.h"
 #include "base/logging.h"
 #include "net/base/net_errors.h"
 
@@ -13,11 +15,7 @@
     : auth_scheme_(HttpAuth::AUTH_SCHEME_MAX),
       score_(-1),
       target_(HttpAuth::AUTH_NONE),
-      properties_(-1),
-      original_callback_(NULL),
-      ALLOW_THIS_IN_INITIALIZER_LIST(
-          wrapper_callback_(
-              this, &HttpAuthHandler::OnGenerateAuthTokenComplete)) {
+      properties_(-1) {
 }
 
 HttpAuthHandler::~HttpAuthHandler() {
@@ -62,19 +60,21 @@
 
 }  // namespace
 
-int HttpAuthHandler::GenerateAuthToken(const AuthCredentials* credentials,
-                                       const HttpRequestInfo* request,
-                                       OldCompletionCallback* callback,
-                                       std::string* auth_token) {
+int HttpAuthHandler::GenerateAuthToken(
+    const AuthCredentials* credentials, const HttpRequestInfo* request,
+    const CompletionCallback& callback, std::string* auth_token) {
   // TODO(cbentzel): Enforce non-NULL callback after cleaning up SocketStream.
   DCHECK(request);
   DCHECK(credentials != NULL || AllowsDefaultCredentials());
   DCHECK(auth_token != NULL);
-  DCHECK(original_callback_ == NULL);
-  original_callback_ = callback;
+  DCHECK(callback_.is_null());
+  callback_ = callback;
   net_log_.BeginEvent(EventTypeFromAuthTarget(target_), NULL);
-  int rv = GenerateAuthTokenImpl(credentials, request,
-                                 &wrapper_callback_, auth_token);
+  int rv = GenerateAuthTokenImpl(
+      credentials, request,
+      base::Bind(&HttpAuthHandler::OnGenerateAuthTokenComplete,
+                 base::Unretained(this)),
+      auth_token);
   if (rv != ERR_IO_PENDING)
     FinishGenerateAuthToken();
   return rv;
@@ -93,16 +93,16 @@
 }
 
 void HttpAuthHandler::OnGenerateAuthTokenComplete(int rv) {
-  OldCompletionCallback* callback = original_callback_;
+  CompletionCallback callback = callback_;
   FinishGenerateAuthToken();
-  if (callback)
-    callback->Run(rv);
+  if (!callback.is_null())
+    callback.Run(rv);
 }
 
 void HttpAuthHandler::FinishGenerateAuthToken() {
   // TOOD(cbentzel): Should this be done in OK case only?
   net_log_.EndEvent(EventTypeFromAuthTarget(target_), NULL);
-  original_callback_ = NULL;
+  callback_.Reset();
 }
 
 }  // namespace net