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_MEDIA_GALLERIES_FILEAPI_PICASA_FILE_UTIL_H_ 6 #define CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_PICASA_FILE_UTIL_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/weak_ptr.h" 10 #include "chrome/browser/media_galleries/fileapi/native_media_file_util.h" 11 12 namespace picasa { 13 14 class PicasaDataProvider; 15 16 extern const char kPicasaDirAlbums[]; 17 extern const char kPicasaDirFolders[]; 18 19 // PicasaFileUtil virtual directory structure example: 20 // - /albums/ 21 // - /albums/albumname 2013-08-21/ 22 // - /albums/albumname 2013-08-21/imagename.jpg 23 // - /albums/duplicatename 2013-08-21/ 24 // - /albums/duplicatename 2013-08-21 (1)/ 25 // - /folders/ 26 // - /folders/My Pictures 2013-08-21/flower.jpg 27 // - /folders/Photos 2013-08-21/ 28 class PicasaFileUtil : public NativeMediaFileUtil { 29 public: 30 explicit PicasaFileUtil(MediaPathFilter* media_path_filter); 31 virtual ~PicasaFileUtil(); 32 33 protected: 34 // NativeMediaFileUtil overrides. 35 virtual void GetFileInfoOnTaskRunnerThread( 36 scoped_ptr<fileapi::FileSystemOperationContext> context, 37 const fileapi::FileSystemURL& url, 38 const GetFileInfoCallback& callback) OVERRIDE; 39 virtual void ReadDirectoryOnTaskRunnerThread( 40 scoped_ptr<fileapi::FileSystemOperationContext> context, 41 const fileapi::FileSystemURL& url, 42 const ReadDirectoryCallback& callback) OVERRIDE; 43 virtual base::File::Error GetFileInfoSync( 44 fileapi::FileSystemOperationContext* context, 45 const fileapi::FileSystemURL& url, 46 base::File::Info* file_info, 47 base::FilePath* platform_path) OVERRIDE; 48 virtual base::File::Error ReadDirectorySync( 49 fileapi::FileSystemOperationContext* context, 50 const fileapi::FileSystemURL& url, 51 EntryList* file_list) OVERRIDE; 52 virtual base::File::Error DeleteDirectorySync( 53 fileapi::FileSystemOperationContext* context, 54 const fileapi::FileSystemURL& url) OVERRIDE; 55 virtual base::File::Error DeleteFileSync( 56 fileapi::FileSystemOperationContext* context, 57 const fileapi::FileSystemURL& url) OVERRIDE; 58 virtual base::File::Error GetLocalFilePath( 59 fileapi::FileSystemOperationContext* context, 60 const fileapi::FileSystemURL& url, 61 base::FilePath* local_file_path) OVERRIDE; 62 63 private: 64 void GetFileInfoWithFreshDataProvider( 65 scoped_ptr<fileapi::FileSystemOperationContext> context, 66 const fileapi::FileSystemURL& url, 67 const GetFileInfoCallback& callback, 68 bool success); 69 void ReadDirectoryWithFreshDataProvider( 70 scoped_ptr<fileapi::FileSystemOperationContext> context, 71 const fileapi::FileSystemURL& url, 72 const ReadDirectoryCallback& callback, 73 bool success); 74 75 virtual PicasaDataProvider* GetDataProvider(); 76 77 base::WeakPtrFactory<PicasaFileUtil> weak_factory_; 78 79 DISALLOW_COPY_AND_ASSIGN(PicasaFileUtil); 80 }; 81 82 } // namespace picasa 83 84 #endif // CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_PICASA_FILE_UTIL_H_ 85