blob: 3aa75f12ce37e7497fb28670d053802e9e71ea05 [file] [log] [blame]
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +01001// 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
Torne (Richard Coles)7d4cd472013-06-19 11:58:07 +01005#ifndef CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_ITUNES_FILE_UTIL_H_
6#define CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_ITUNES_FILE_UTIL_H_
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +01007
Ben Murdocheb525c52013-07-10 11:40:50 +01008#include "base/memory/scoped_ptr.h"
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +01009#include "base/memory/weak_ptr.h"
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010010#include "chrome/browser/media_galleries/fileapi/native_media_file_util.h"
11
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010012namespace chrome {
13class ImportedMediaGalleryRegistry;
14}
15
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010016namespace itunes {
17
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010018class ITunesDataProvider;
19
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010020class ItunesFileUtil : public chrome::NativeMediaFileUtil {
21 public:
Ben Murdochbb1529c2013-08-08 10:24:53 +010022 explicit ItunesFileUtil(chrome::MediaPathFilter* media_path_filter);
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010023 virtual ~ItunesFileUtil();
24
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010025 protected:
26 // NativeMediaFileUtil overrides.
27 virtual void GetFileInfoOnTaskRunnerThread(
Ben Murdocheb525c52013-07-10 11:40:50 +010028 scoped_ptr<fileapi::FileSystemOperationContext> context,
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010029 const fileapi::FileSystemURL& url,
30 const GetFileInfoCallback& callback) OVERRIDE;
31 virtual void ReadDirectoryOnTaskRunnerThread(
Ben Murdocheb525c52013-07-10 11:40:50 +010032 scoped_ptr<fileapi::FileSystemOperationContext> context,
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010033 const fileapi::FileSystemURL& url,
34 const ReadDirectoryCallback& callback) OVERRIDE;
Torne (Richard Coles)7d4cd472013-06-19 11:58:07 +010035 virtual void CreateSnapshotFileOnTaskRunnerThread(
Ben Murdocheb525c52013-07-10 11:40:50 +010036 scoped_ptr<fileapi::FileSystemOperationContext> context,
Torne (Richard Coles)7d4cd472013-06-19 11:58:07 +010037 const fileapi::FileSystemURL& url,
38 const CreateSnapshotFileCallback& callback) OVERRIDE;
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010039 virtual base::PlatformFileError GetFileInfoSync(
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010040 fileapi::FileSystemOperationContext* context,
41 const fileapi::FileSystemURL& url,
42 base::PlatformFileInfo* file_info,
43 base::FilePath* platform_path) OVERRIDE;
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010044 virtual base::PlatformFileError ReadDirectorySync(
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010045 fileapi::FileSystemOperationContext* context,
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010046 const fileapi::FileSystemURL& url,
47 EntryList* file_list) OVERRIDE;
Torne (Richard Coles)7d4cd472013-06-19 11:58:07 +010048 virtual base::PlatformFileError CreateSnapshotFileSync(
49 fileapi::FileSystemOperationContext* context,
50 const fileapi::FileSystemURL& url,
51 base::PlatformFileInfo* file_info,
52 base::FilePath* platform_path,
53 scoped_refptr<webkit_blob::ShareableFileReference>* file_ref) OVERRIDE;
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010054 virtual base::PlatformFileError GetLocalFilePath(
55 fileapi::FileSystemOperationContext* context,
56 const fileapi::FileSystemURL& url,
57 base::FilePath* local_file_path) OVERRIDE;
58
59 private:
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010060 void GetFileInfoWithFreshDataProvider(
Ben Murdocheb525c52013-07-10 11:40:50 +010061 scoped_ptr<fileapi::FileSystemOperationContext> context,
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010062 const fileapi::FileSystemURL& url,
Torne (Richard Coles)7d4cd472013-06-19 11:58:07 +010063 const GetFileInfoCallback& callback,
64 bool valid_parse);
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010065 void ReadDirectoryWithFreshDataProvider(
Ben Murdocheb525c52013-07-10 11:40:50 +010066 scoped_ptr<fileapi::FileSystemOperationContext> context,
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010067 const fileapi::FileSystemURL& url,
Torne (Richard Coles)7d4cd472013-06-19 11:58:07 +010068 const ReadDirectoryCallback& callback,
69 bool valid_parse);
70 virtual void CreateSnapshotFileWithFreshDataProvider(
Ben Murdocheb525c52013-07-10 11:40:50 +010071 scoped_ptr<fileapi::FileSystemOperationContext> context,
Torne (Richard Coles)7d4cd472013-06-19 11:58:07 +010072 const fileapi::FileSystemURL& url,
73 const CreateSnapshotFileCallback& callback,
74 bool valid_parse);
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010075
76 ITunesDataProvider* GetDataProvider();
77
78 base::WeakPtrFactory<ItunesFileUtil> weak_factory_;
79
80 chrome::ImportedMediaGalleryRegistry* imported_registry_;
81
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010082 DISALLOW_COPY_AND_ASSIGN(ItunesFileUtil);
83};
84
85} // namespace itunes
86
Torne (Richard Coles)7d4cd472013-06-19 11:58:07 +010087#endif // CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_ITUNES_FILE_UTIL_H_