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_IPHOTO_FILE_UTIL_H_
      6 #define CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_IPHOTO_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 class ImportedMediaGalleryRegistry;
     13 
     14 namespace iphoto {
     15 
     16 class IPhotoDataProvider;
     17 
     18 // Presents a virtual file system containing iPhoto contents in the
     19 // following organization:
     20 // /                    = virtual root
     21 // |- /Albums
     22 //    |- /AlbumName     = An album entry by name.
     23 //       |- pic1.jpg    = Entries for photos in the album.
     24 //       |- pic2.jpg
     25 //    |- /AnotherAlbum
     26 //       |- pic3.jpg
     27 //       |- /originals  = A directory for originals.
     28 //          |- pic3.jpg = Original picture. Same name as album photo.
     29 
     30 extern const char kIPhotoAlbumsDir[];
     31 
     32 class IPhotoFileUtil : public NativeMediaFileUtil {
     33  public:
     34   explicit IPhotoFileUtil(MediaPathFilter* media_path_filter);
     35   virtual ~IPhotoFileUtil();
     36 
     37  protected:
     38   // NativeMediaFileUtil overrides.
     39   virtual void GetFileInfoOnTaskRunnerThread(
     40       scoped_ptr<storage::FileSystemOperationContext> context,
     41       const storage::FileSystemURL& url,
     42       const GetFileInfoCallback& callback) OVERRIDE;
     43   virtual void ReadDirectoryOnTaskRunnerThread(
     44       scoped_ptr<storage::FileSystemOperationContext> context,
     45       const storage::FileSystemURL& url,
     46       const ReadDirectoryCallback& callback) OVERRIDE;
     47   virtual void CreateSnapshotFileOnTaskRunnerThread(
     48       scoped_ptr<storage::FileSystemOperationContext> context,
     49       const storage::FileSystemURL& url,
     50       const CreateSnapshotFileCallback& callback) OVERRIDE;
     51   virtual base::File::Error GetFileInfoSync(
     52       storage::FileSystemOperationContext* context,
     53       const storage::FileSystemURL& url,
     54       base::File::Info* file_info,
     55       base::FilePath* platform_path) OVERRIDE;
     56   virtual base::File::Error ReadDirectorySync(
     57       storage::FileSystemOperationContext* context,
     58       const storage::FileSystemURL& url,
     59       EntryList* file_list) OVERRIDE;
     60   virtual base::File::Error DeleteDirectorySync(
     61       storage::FileSystemOperationContext* context,
     62       const storage::FileSystemURL& url) OVERRIDE;
     63   virtual base::File::Error DeleteFileSync(
     64       storage::FileSystemOperationContext* context,
     65       const storage::FileSystemURL& url) OVERRIDE;
     66   virtual base::File::Error GetLocalFilePath(
     67       storage::FileSystemOperationContext* context,
     68       const storage::FileSystemURL& url,
     69       base::FilePath* local_file_path) OVERRIDE;
     70 
     71  private:
     72   void GetFileInfoWithFreshDataProvider(
     73       scoped_ptr<storage::FileSystemOperationContext> context,
     74       const storage::FileSystemURL& url,
     75       const GetFileInfoCallback& callback,
     76       bool valid_parse);
     77   void ReadDirectoryWithFreshDataProvider(
     78       scoped_ptr<storage::FileSystemOperationContext> context,
     79       const storage::FileSystemURL& url,
     80       const ReadDirectoryCallback& callback,
     81       bool valid_parse);
     82   virtual void CreateSnapshotFileWithFreshDataProvider(
     83       scoped_ptr<storage::FileSystemOperationContext> context,
     84       const storage::FileSystemURL& url,
     85       const CreateSnapshotFileCallback& callback,
     86       bool valid_parse);
     87 
     88   virtual IPhotoDataProvider* GetDataProvider();
     89 
     90   base::WeakPtrFactory<IPhotoFileUtil> weak_factory_;
     91 
     92   ImportedMediaGalleryRegistry* imported_registry_;
     93 
     94   DISALLOW_COPY_AND_ASSIGN(IPhotoFileUtil);
     95 };
     96 
     97 }  // namespace iphoto
     98 
     99 #endif  // CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_IPHOTO_FILE_UTIL_H_
    100