Index: chrome/browser/chromeos/gdata/gdata_file_write_helper.h |
diff --git a/chrome/browser/chromeos/gdata/gdata_file_write_helper.h b/chrome/browser/chromeos/gdata/gdata_file_write_helper.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..159d517bf191a598afd829bcf0200f5fb6978369 |
--- /dev/null |
+++ b/chrome/browser/chromeos/gdata/gdata_file_write_helper.h |
@@ -0,0 +1,60 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_WRITE_HELPER_H_ |
+#define CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_WRITE_HELPER_H_ |
+ |
+#include "base/bind.h" |
+#include "base/file_path.h" |
+#include "base/memory/weak_ptr.h" |
+#include "chrome/browser/chromeos/gdata/gdata_errorcode.h" |
+#include "chrome/browser/chromeos/gdata/gdata_file_system_interface.h" |
+ |
+namespace gdata { |
+ |
+// This class provides higher level operations for writing to GData files over |
+// GDataFileSystemInterface. |
+class GDataFileWriteHelper { |
satorux1
2012/08/02 06:56:53
We can remove "GData" prefix from the class, and t
kinaba
2012/08/02 07:22:39
Done.
|
+ public: |
+ explicit GDataFileWriteHelper(GDataFileSystemInterface* file_system); |
+ ~GDataFileWriteHelper(); |
+ |
+ // Prepares a local temporary file path and passes it to |callback| on the |
+ // blocking thread pool that allows file operations. The modification to |
+ // the file is reflected to GData |path|. If |path| does not exist, a new |
+ // file is created. |
+ // |
+ // Can be called from UI/IO thread. |
+ void PrepareWritableFileAndRun(const FilePath& path, |
+ const OpenFileCallback& callback); |
+ |
+ private: |
+ // Part of PrepareWritableFilePathAndRun(). It forwards the task to the UI |
+ // thread, tries CreateFile for the case file does not exist yet, does |
+ // OpenFile to download and mark the file as dirty, runs |callback|, and |
+ // finally calls CloseFile. |
+ void PrepareWritableFileAndRunOnUIThread( |
+ const FilePath& file_path, |
+ const OpenFileCallback& callback); |
+ void PrepareWritableFileAndRunAfterCreateFile( |
+ const FilePath& file_path, |
+ const OpenFileCallback& callback, |
+ GDataFileError result); |
+ void PrepareWritableFileAndRunAfterOpenFile( |
+ const FilePath& file_path, |
+ const OpenFileCallback& callback, |
+ GDataFileError result, |
+ const FilePath& local_cache_path); |
+ void PrepareWritableFileAndRunAfterCallback(const FilePath& file_path); |
+ |
+ // File system owned by GDataSystemService. |
+ GDataFileSystemInterface* file_system_; |
+ |
+ // WeakPtrFactory and WeakPtr bound to the UI thread. |
+ base::WeakPtrFactory<GDataFileWriteHelper> weak_ptr_factory_; |
+}; |
+ |
+} // namespace gdata |
+ |
+#endif // CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_WRITE_HELPER_H_ |