Index: base/file_util_proxy.cc |
=================================================================== |
--- base/file_util_proxy.cc (revision 57912) |
+++ base/file_util_proxy.cc (working copy) |
@@ -7,6 +7,8 @@ |
#include "base/file_util.h" |
#include "base/message_loop_proxy.h" |
+// TODO(jianli): Move the code from anonymous namespace to base namespace so |
+// that all of the base:: prefixes would be unnecessary. |
namespace { |
class MessageLoopRelay |
@@ -205,6 +207,33 @@ |
bool recursive_; |
}; |
+class RelayGetFileInfo : public MessageLoopRelay { |
+ public: |
+ RelayGetFileInfo(const FilePath& file_path, |
+ base::FileUtilProxy::GetFileInfoCallback* callback) |
+ : callback_(callback), |
+ file_path_(file_path), |
+ exists_(false) { |
+ DCHECK(callback); |
+ } |
+ |
+ protected: |
+ virtual void RunWork() { |
+ exists_ = file_util::GetFileInfo(file_path_, &file_info_); |
+ } |
+ |
+ virtual void RunCallback() { |
+ callback_->Run(exists_, file_info_); |
+ delete callback_; |
+ } |
+ |
+ private: |
+ base::FileUtilProxy::GetFileInfoCallback* callback_; |
+ FilePath file_path_; |
+ bool exists_; |
+ file_util::FileInfo file_info_; |
+}; |
+ |
bool Start(const tracked_objects::Location& from_here, |
scoped_refptr<base::MessageLoopProxy> message_loop_proxy, |
scoped_refptr<MessageLoopRelay> relay) { |
@@ -257,4 +286,13 @@ |
new RelayDelete(file_path, true, callback)); |
} |
+// static |
+bool FileUtilProxy::GetFileInfo( |
+ scoped_refptr<MessageLoopProxy> message_loop_proxy, |
+ const FilePath& file_path, |
+ GetFileInfoCallback* callback) { |
+ return Start(FROM_HERE, message_loop_proxy, |
+ new RelayGetFileInfo(file_path, callback)); |
+} |
+ |
} // namespace base |