Original issue with review is:
http://codereview.chromium.org/8424006/

BUG=none
TEST=test_shell_tests:\*FileSystem\*
TBR=willchan, caseq

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

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


CrOS-Libchrome-Original-Commit: c7a36cfa4f51efb7b089fa1c3e70536e866c24df
diff --git a/base/file_util_proxy.h b/base/file_util_proxy.h
index eb1d144..15a3e82 100644
--- a/base/file_util_proxy.h
+++ b/base/file_util_proxy.h
@@ -32,7 +32,7 @@
   };
 
   // This callback is used by methods that report only an error code.  It is
-  // valid to pass StatusCallback() to any function that takes a StatusCallback,
+  // valid to pass a null callback to any function that takes a StatusCallback,
   // in which case the operation will complete silently.
   typedef Callback<void(PlatformFileError)> StatusCallback;
 
@@ -51,6 +51,9 @@
   typedef Callback<void(PlatformFileError,
                         int /* bytes written */)> WriteCallback;
 
+  typedef Callback<PlatformFileError(PlatformFile*, bool*)> CreateOrOpenTask;
+  typedef Callback<PlatformFileError(PlatformFile)> CloseTask;
+
   // Creates or opens a file with the given flags. It is invalid to pass a null
   // callback. If PLATFORM_FILE_CREATE is set in |file_flags| it always tries to
   // create a new file at the given |file_path| and calls back with
@@ -164,6 +167,19 @@
       PlatformFile file,
       const StatusCallback& callback);
 
+  // Relay helpers.
+  static bool RelayCreateOrOpen(
+      scoped_refptr<MessageLoopProxy> message_loop_proxy,
+      const CreateOrOpenTask& open_task,
+      const CloseTask& close_task,
+      const CreateOrOpenCallback& callback);
+
+  static bool RelayClose(
+      scoped_refptr<MessageLoopProxy> message_loop_proxy,
+      const CloseTask& close_task,
+      PlatformFile,
+      const StatusCallback& callback);
+
  private:
   DISALLOW_IMPLICIT_CONSTRUCTORS(FileUtilProxy);
 };