Home | History | Annotate | Download | only in fileapi
      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