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 12namespace picasa { 13 14class PicasaDataProvider; 15 16extern const char kPicasaDirAlbums[]; 17extern 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/ 28class 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<storage::FileSystemOperationContext> context, 37 const storage::FileSystemURL& url, 38 const GetFileInfoCallback& callback) OVERRIDE; 39 virtual void ReadDirectoryOnTaskRunnerThread( 40 scoped_ptr<storage::FileSystemOperationContext> context, 41 const storage::FileSystemURL& url, 42 const ReadDirectoryCallback& callback) OVERRIDE; 43 virtual base::File::Error GetFileInfoSync( 44 storage::FileSystemOperationContext* context, 45 const storage::FileSystemURL& url, 46 base::File::Info* file_info, 47 base::FilePath* platform_path) OVERRIDE; 48 virtual base::File::Error ReadDirectorySync( 49 storage::FileSystemOperationContext* context, 50 const storage::FileSystemURL& url, 51 EntryList* file_list) OVERRIDE; 52 virtual base::File::Error DeleteDirectorySync( 53 storage::FileSystemOperationContext* context, 54 const storage::FileSystemURL& url) OVERRIDE; 55 virtual base::File::Error DeleteFileSync( 56 storage::FileSystemOperationContext* context, 57 const storage::FileSystemURL& url) OVERRIDE; 58 virtual base::File::Error GetLocalFilePath( 59 storage::FileSystemOperationContext* context, 60 const storage::FileSystemURL& url, 61 base::FilePath* local_file_path) OVERRIDE; 62 63 private: 64 void GetFileInfoWithFreshDataProvider( 65 scoped_ptr<storage::FileSystemOperationContext> context, 66 const storage::FileSystemURL& url, 67 const GetFileInfoCallback& callback, 68 bool success); 69 void ReadDirectoryWithFreshDataProvider( 70 scoped_ptr<storage::FileSystemOperationContext> context, 71 const storage::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