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_ITUNES_FILE_UTIL_H_
      6 #define CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_ITUNES_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 itunes {
     15 
     16 class ITunesDataProvider;
     17 
     18 extern const char kITunesLibraryXML[];
     19 extern const char kITunesMediaDir[];
     20 extern const char kITunesMusicDir[];
     21 extern const char kITunesAutoAddDir[];
     22 
     23 class ITunesFileUtil : public NativeMediaFileUtil {
     24  public:
     25   explicit ITunesFileUtil(MediaPathFilter* media_path_filter);
     26   virtual ~ITunesFileUtil();
     27 
     28  protected:
     29   // NativeMediaFileUtil overrides.
     30   virtual void GetFileInfoOnTaskRunnerThread(
     31       scoped_ptr<fileapi::FileSystemOperationContext> context,
     32       const fileapi::FileSystemURL& url,
     33       const GetFileInfoCallback& callback) OVERRIDE;
     34   virtual void ReadDirectoryOnTaskRunnerThread(
     35       scoped_ptr<fileapi::FileSystemOperationContext> context,
     36       const fileapi::FileSystemURL& url,
     37       const ReadDirectoryCallback& callback) OVERRIDE;
     38   virtual void CreateSnapshotFileOnTaskRunnerThread(
     39       scoped_ptr<fileapi::FileSystemOperationContext> context,
     40       const fileapi::FileSystemURL& url,
     41       const CreateSnapshotFileCallback& callback) OVERRIDE;
     42   virtual base::File::Error GetFileInfoSync(
     43       fileapi::FileSystemOperationContext* context,
     44       const fileapi::FileSystemURL& url,
     45       base::File::Info* file_info,
     46       base::FilePath* platform_path) OVERRIDE;
     47   virtual base::File::Error ReadDirectorySync(
     48       fileapi::FileSystemOperationContext* context,
     49       const fileapi::FileSystemURL& url,
     50       EntryList* file_list) OVERRIDE;
     51   virtual base::File::Error DeleteDirectorySync(
     52       fileapi::FileSystemOperationContext* context,
     53       const fileapi::FileSystemURL& url) OVERRIDE;
     54   virtual base::File::Error DeleteFileSync(
     55       fileapi::FileSystemOperationContext* context,
     56       const fileapi::FileSystemURL& url) OVERRIDE;
     57   virtual base::File::Error CreateSnapshotFileSync(
     58       fileapi::FileSystemOperationContext* context,
     59       const fileapi::FileSystemURL& url,
     60       base::File::Info* file_info,
     61       base::FilePath* platform_path,
     62       scoped_refptr<webkit_blob::ShareableFileReference>* file_ref) OVERRIDE;
     63   virtual base::File::Error GetLocalFilePath(
     64       fileapi::FileSystemOperationContext* context,
     65       const fileapi::FileSystemURL& url,
     66       base::FilePath* local_file_path) OVERRIDE;
     67 
     68  private:
     69   void GetFileInfoWithFreshDataProvider(
     70       scoped_ptr<fileapi::FileSystemOperationContext> context,
     71       const fileapi::FileSystemURL& url,
     72       const GetFileInfoCallback& callback,
     73       bool valid_parse);
     74   void ReadDirectoryWithFreshDataProvider(
     75       scoped_ptr<fileapi::FileSystemOperationContext> context,
     76       const fileapi::FileSystemURL& url,
     77       const ReadDirectoryCallback& callback,
     78       bool valid_parse);
     79   virtual void CreateSnapshotFileWithFreshDataProvider(
     80       scoped_ptr<fileapi::FileSystemOperationContext> context,
     81       const fileapi::FileSystemURL& url,
     82       const CreateSnapshotFileCallback& callback,
     83       bool valid_parse);
     84 
     85   virtual ITunesDataProvider* GetDataProvider();
     86 
     87   base::WeakPtrFactory<ITunesFileUtil> weak_factory_;
     88 
     89   ImportedMediaGalleryRegistry* imported_registry_;
     90 
     91   DISALLOW_COPY_AND_ASSIGN(ITunesFileUtil);
     92 };
     93 
     94 }  // namespace itunes
     95 
     96 #endif  // CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_ITUNES_FILE_UTIL_H_
     97