1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_CHROMEOS_DRIVE_WRITE_ON_CACHE_FILE_H_ 6 #define CHROME_BROWSER_CHROMEOS_DRIVE_WRITE_ON_CACHE_FILE_H_ 7 8 #include "base/callback_forward.h" 9 #include "chrome/browser/chromeos/drive/file_errors.h" 10 11 namespace base { 12 class FilePath; 13 } 14 15 namespace drive { 16 17 class FileSystemInterface; 18 19 // Callback type for WriteOnCacheFile. 20 typedef base::Callback<void (FileError, const base::FilePath& path)> 21 WriteOnCacheFileCallback; 22 23 // Creates (if needed) a file at |path|, brings it to the local cache, 24 // and invokes |callback| on blocking thread pool with the cache file path. 25 // The |callback| can write to the file at the path by normal local file I/O 26 // operations. After it returns, the written content is synced to the server. 27 // 28 // If non-empty |mime_type| is set and the file is created by this function 29 // call, the mime type for the entry is set to |mime_type|. Otherwise the type 30 // is automatically determined from |path|. 31 // 32 // Must be called from UI thread. 33 void WriteOnCacheFile(FileSystemInterface* file_system, 34 const base::FilePath& path, 35 const std::string& mime_type, 36 const WriteOnCacheFileCallback& callback); 37 38 // Does the same thing as WriteOnCacheFile() and runs |reply| on the UI thread 39 // after the completion. 40 void WriteOnCacheFileAndReply(FileSystemInterface* file_system, 41 const base::FilePath& path, 42 const std::string& mime_type, 43 const WriteOnCacheFileCallback& callback, 44 const FileOperationCallback& reply); 45 46 } // namespace drive 47 48 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_WRITE_ON_CACHE_FILE_H_ 49