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