base::Bind: Convert FileUtilProxy::ReadDirectoryCallback.

BUG=none
TEST=none

R=csilv@chromium.org

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105903 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: a6e689d570dee7ad9a4fc6cd5cb07ad0a645631a
diff --git a/base/file_util_proxy.cc b/base/file_util_proxy.cc
index 3a51b60..771a5be 100644
--- a/base/file_util_proxy.cc
+++ b/base/file_util_proxy.cc
@@ -421,10 +421,12 @@
 
 class RelayReadDirectory : public MessageLoopRelay {
  public:
-  RelayReadDirectory(const FilePath& file_path,
-      base::FileUtilProxy::ReadDirectoryCallback* callback)
-      : callback_(callback), file_path_(file_path) {
-    DCHECK(callback);
+  RelayReadDirectory(
+      const FilePath& file_path,
+      const base::FileUtilProxy::ReadDirectoryCallback& callback)
+      : callback_(callback),
+        file_path_(file_path) {
+    DCHECK_EQ(false, callback.is_null());
   }
 
  protected:
@@ -456,12 +458,11 @@
   }
 
   virtual void RunCallback() {
-    callback_->Run(error_code(), entries_);
-    delete callback_;
+    callback_.Run(error_code(), entries_);
   }
 
  private:
-  base::FileUtilProxy::ReadDirectoryCallback* callback_;
+  base::FileUtilProxy::ReadDirectoryCallback callback_;
   FilePath file_path_;
   std::vector<base::FileUtilProxy::Entry> entries_;
 };
@@ -790,7 +791,7 @@
 bool FileUtilProxy::ReadDirectory(
     scoped_refptr<MessageLoopProxy> message_loop_proxy,
     const FilePath& file_path,
-    ReadDirectoryCallback* callback) {
+    const ReadDirectoryCallback& callback) {
   return Start(FROM_HERE, message_loop_proxy, new RelayReadDirectory(
                file_path, callback));
 }
diff --git a/base/file_util_proxy.h b/base/file_util_proxy.h
index 2c15cfa..306d2e4 100644
--- a/base/file_util_proxy.h
+++ b/base/file_util_proxy.h
@@ -50,8 +50,8 @@
   typedef base::Callback<void(PlatformFileError /* error code */,
                               const PlatformFileInfo& /* file_info */)>
       GetFileInfoCallback;
-  typedef Callback2<PlatformFileError /* error code */,
-                    const std::vector<Entry>&>::Type ReadDirectoryCallback;
+  typedef base::Callback<void(PlatformFileError /* error code */,
+                              const std::vector<Entry>&)> ReadDirectoryCallback;
   typedef Callback3<PlatformFileError /* error code */,
                     const char* /* data */,
                     int /* bytes read/written */>::Type ReadCallback;
@@ -115,7 +115,7 @@
 
   static bool ReadDirectory(scoped_refptr<MessageLoopProxy> message_loop_proxy,
                             const FilePath& file_path,
-                            ReadDirectoryCallback* callback);
+                            const ReadDirectoryCallback& callback);
 
   // Creates directory at given path. It's an error to create
   // if |exclusive| is true and dir already exists.