| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/media_galleries/fileapi/itunes_file_util.h" | 5 #include "chrome/browser/media_galleries/fileapi/itunes_file_util.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/bind_helpers.h" | 11 #include "base/bind_helpers.h" |
| 12 #include "base/file_util.h" | 12 #include "base/file_util.h" |
| 13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
| 14 #include "chrome/browser/media_galleries/fileapi/itunes_data_provider.h" | 14 #include "chrome/browser/media_galleries/fileapi/itunes_data_provider.h" |
| 15 #include "chrome/browser/media_galleries/fileapi/media_path_filter.h" | 15 #include "chrome/browser/media_galleries/fileapi/media_path_filter.h" |
| 16 #include "chrome/browser/media_galleries/imported_media_gallery_registry.h" | 16 #include "chrome/browser/media_galleries/imported_media_gallery_registry.h" |
| 17 #include "content/public/browser/browser_thread.h" | 17 #include "content/public/browser/browser_thread.h" |
| 18 #include "webkit/browser/fileapi/file_system_operation_context.h" | 18 #include "webkit/browser/fileapi/file_system_operation_context.h" |
| 19 #include "webkit/browser/fileapi/file_system_url.h" | 19 #include "webkit/browser/fileapi/file_system_url.h" |
| 20 #include "webkit/browser/fileapi/native_file_util.h" | 20 #include "webkit/browser/fileapi/native_file_util.h" |
| 21 #include "webkit/common/blob/shareable_file_reference.h" | 21 #include "webkit/common/blob/shareable_file_reference.h" |
| 22 #include "webkit/common/fileapi/file_system_util.h" | 22 #include "webkit/common/fileapi/file_system_util.h" |
| 23 | 23 |
| 24 using fileapi::DirectoryEntry; | 24 using fileapi::DirectoryEntry; |
| 25 | 25 |
| 26 namespace itunes { | 26 namespace itunes { |
| 27 | 27 |
| 28 namespace { | 28 namespace { |
| 29 | 29 |
| 30 base::PlatformFileError MakeDirectoryFileInfo( | 30 base::File::Error MakeDirectoryFileInfo(base::File::Info* file_info) { |
| 31 base::PlatformFileInfo* file_info) { | 31 base::File::Info result; |
| 32 base::PlatformFileInfo result; | |
| 33 result.is_directory = true; | 32 result.is_directory = true; |
| 34 *file_info = result; | 33 *file_info = result; |
| 35 return base::PLATFORM_FILE_OK; | 34 return base::File::FILE_OK; |
| 36 } | 35 } |
| 37 | 36 |
| 38 } // namespace | 37 } // namespace |
| 39 | 38 |
| 40 const char kITunesLibraryXML[] = "iTunes Music Library.xml"; | 39 const char kITunesLibraryXML[] = "iTunes Music Library.xml"; |
| 41 const char kITunesMediaDir[] = "iTunes Media"; | 40 const char kITunesMediaDir[] = "iTunes Media"; |
| 42 const char kITunesMusicDir[] = "Music"; | 41 const char kITunesMusicDir[] = "Music"; |
| 43 const char kITunesAutoAddDir[] = "Automatically Add to iTunes"; | 42 const char kITunesAutoAddDir[] = "Automatically Add to iTunes"; |
| 44 | 43 |
| 45 ITunesFileUtil::ITunesFileUtil(MediaPathFilter* media_path_filter) | 44 ITunesFileUtil::ITunesFileUtil(MediaPathFilter* media_path_filter) |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 weak_factory_.GetWeakPtr(), base::Passed(&context), url, | 79 weak_factory_.GetWeakPtr(), base::Passed(&context), url, |
| 81 callback)); | 80 callback)); |
| 82 } | 81 } |
| 83 | 82 |
| 84 // Contents of the iTunes media gallery: | 83 // Contents of the iTunes media gallery: |
| 85 // / - root directory | 84 // / - root directory |
| 86 // /iTunes Music Library.xml - library xml file | 85 // /iTunes Music Library.xml - library xml file |
| 87 // /iTunes Media/Automatically Add to iTunes - auto-import directory | 86 // /iTunes Media/Automatically Add to iTunes - auto-import directory |
| 88 // /iTunes Media/Music/<Artist>/<Album>/<Track> - tracks | 87 // /iTunes Media/Music/<Artist>/<Album>/<Track> - tracks |
| 89 // | 88 // |
| 90 base::PlatformFileError ITunesFileUtil::GetFileInfoSync( | 89 base::File::Error ITunesFileUtil::GetFileInfoSync( |
| 91 fileapi::FileSystemOperationContext* context, | 90 fileapi::FileSystemOperationContext* context, |
| 92 const fileapi::FileSystemURL& url, | 91 const fileapi::FileSystemURL& url, |
| 93 base::PlatformFileInfo* file_info, | 92 base::File::Info* file_info, |
| 94 base::FilePath* platform_path) { | 93 base::FilePath* platform_path) { |
| 95 std::vector<std::string> components; | 94 std::vector<std::string> components; |
| 96 fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); | 95 fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); |
| 97 | 96 |
| 98 if (components.size() == 0) | 97 if (components.size() == 0) |
| 99 return MakeDirectoryFileInfo(file_info); | 98 return MakeDirectoryFileInfo(file_info); |
| 100 | 99 |
| 101 if (components.size() == 1 && components[0] == kITunesLibraryXML) { | 100 if (components.size() == 1 && components[0] == kITunesLibraryXML) { |
| 102 // We can't just call NativeMediaFileUtil::GetFileInfoSync() here because it | 101 // We can't just call NativeMediaFileUtil::GetFileInfoSync() here because it |
| 103 // uses the MediaPathFilter. At this point, |library_path_| is known good | 102 // uses the MediaPathFilter. At this point, |library_path_| is known good |
| 104 // because GetFileInfoWithFreshDataProvider() gates access to this method. | 103 // because GetFileInfoWithFreshDataProvider() gates access to this method. |
| 105 base::FilePath file_path = GetDataProvider()->library_path(); | 104 base::FilePath file_path = GetDataProvider()->library_path(); |
| 106 if (platform_path) | 105 if (platform_path) |
| 107 *platform_path = file_path; | 106 *platform_path = file_path; |
| 108 return fileapi::NativeFileUtil::GetFileInfo(file_path, file_info); | 107 return fileapi::NativeFileUtil::GetFileInfo(file_path, file_info); |
| 109 } | 108 } |
| 110 | 109 |
| 111 if (components[0] != kITunesMediaDir) | 110 if (components[0] != kITunesMediaDir) |
| 112 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 111 return base::File::FILE_ERROR_NOT_FOUND; |
| 113 | 112 |
| 114 if (components[1] == kITunesAutoAddDir) { | 113 if (components[1] == kITunesAutoAddDir) { |
| 115 if (GetDataProvider()->auto_add_path().empty()) | 114 if (GetDataProvider()->auto_add_path().empty()) |
| 116 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 115 return base::File::FILE_ERROR_NOT_FOUND; |
| 117 return NativeMediaFileUtil::GetFileInfoSync(context, url, file_info, | 116 return NativeMediaFileUtil::GetFileInfoSync(context, url, file_info, |
| 118 platform_path); | 117 platform_path); |
| 119 } | 118 } |
| 120 | 119 |
| 121 if (components[1] == kITunesMusicDir) { | 120 if (components[1] == kITunesMusicDir) { |
| 122 switch (components.size()) { | 121 switch (components.size()) { |
| 123 case 2: | 122 case 2: |
| 124 return MakeDirectoryFileInfo(file_info); | 123 return MakeDirectoryFileInfo(file_info); |
| 125 | 124 |
| 126 case 3: | 125 case 3: |
| (...skipping 12 matching lines...) Expand all Loading... |
| 139 components[4]); | 138 components[4]); |
| 140 if (!location.empty()) { | 139 if (!location.empty()) { |
| 141 return NativeMediaFileUtil::GetFileInfoSync(context, url, file_info, | 140 return NativeMediaFileUtil::GetFileInfoSync(context, url, file_info, |
| 142 platform_path); | 141 platform_path); |
| 143 } | 142 } |
| 144 break; | 143 break; |
| 145 } | 144 } |
| 146 } | 145 } |
| 147 } | 146 } |
| 148 | 147 |
| 149 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 148 return base::File::FILE_ERROR_NOT_FOUND; |
| 150 } | 149 } |
| 151 | 150 |
| 152 base::PlatformFileError ITunesFileUtil::ReadDirectorySync( | 151 base::File::Error ITunesFileUtil::ReadDirectorySync( |
| 153 fileapi::FileSystemOperationContext* context, | 152 fileapi::FileSystemOperationContext* context, |
| 154 const fileapi::FileSystemURL& url, | 153 const fileapi::FileSystemURL& url, |
| 155 EntryList* file_list) { | 154 EntryList* file_list) { |
| 156 DCHECK(file_list->empty()); | 155 DCHECK(file_list->empty()); |
| 157 std::vector<std::string> components; | 156 std::vector<std::string> components; |
| 158 fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); | 157 fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); |
| 159 | 158 |
| 160 if (components.size() == 0) { | 159 if (components.size() == 0) { |
| 161 base::File::Info xml_info; | 160 base::File::Info xml_info; |
| 162 if (!base::GetFileInfo(GetDataProvider()->library_path(), &xml_info)) | 161 if (!base::GetFileInfo(GetDataProvider()->library_path(), &xml_info)) |
| 163 return base::PLATFORM_FILE_ERROR_IO; | 162 return base::File::FILE_ERROR_IO; |
| 164 file_list->push_back(DirectoryEntry(kITunesLibraryXML, | 163 file_list->push_back(DirectoryEntry(kITunesLibraryXML, |
| 165 DirectoryEntry::FILE, | 164 DirectoryEntry::FILE, |
| 166 xml_info.size, xml_info.last_modified)); | 165 xml_info.size, xml_info.last_modified)); |
| 167 file_list->push_back(DirectoryEntry(kITunesMediaDir, | 166 file_list->push_back(DirectoryEntry(kITunesMediaDir, |
| 168 DirectoryEntry::DIRECTORY, | 167 DirectoryEntry::DIRECTORY, |
| 169 0, base::Time())); | 168 0, base::Time())); |
| 170 return base::PLATFORM_FILE_OK; | 169 return base::File::FILE_OK; |
| 171 } | 170 } |
| 172 | 171 |
| 173 if (components.size() == 1 && components[0] == kITunesLibraryXML) | 172 if (components.size() == 1 && components[0] == kITunesLibraryXML) |
| 174 return base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY; | 173 return base::File::FILE_ERROR_NOT_A_DIRECTORY; |
| 175 | 174 |
| 176 if (components[0] != kITunesMediaDir || components.size() > 5) | 175 if (components[0] != kITunesMediaDir || components.size() > 5) |
| 177 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 176 return base::File::FILE_ERROR_NOT_FOUND; |
| 178 | 177 |
| 179 if (components.size() == 1) { | 178 if (components.size() == 1) { |
| 180 if (!GetDataProvider()->auto_add_path().empty()) { | 179 if (!GetDataProvider()->auto_add_path().empty()) { |
| 181 file_list->push_back(DirectoryEntry(kITunesAutoAddDir, | 180 file_list->push_back(DirectoryEntry(kITunesAutoAddDir, |
| 182 DirectoryEntry::DIRECTORY, | 181 DirectoryEntry::DIRECTORY, |
| 183 0, base::Time())); | 182 0, base::Time())); |
| 184 } | 183 } |
| 185 file_list->push_back(DirectoryEntry(kITunesMusicDir, | 184 file_list->push_back(DirectoryEntry(kITunesMusicDir, |
| 186 DirectoryEntry::DIRECTORY, | 185 DirectoryEntry::DIRECTORY, |
| 187 0, base::Time())); | 186 0, base::Time())); |
| 188 return base::PLATFORM_FILE_OK; | 187 return base::File::FILE_OK; |
| 189 } | 188 } |
| 190 | 189 |
| 191 if (components[1] == kITunesAutoAddDir && | 190 if (components[1] == kITunesAutoAddDir && |
| 192 !GetDataProvider()->auto_add_path().empty()) { | 191 !GetDataProvider()->auto_add_path().empty()) { |
| 193 return NativeMediaFileUtil::ReadDirectorySync(context, url, file_list); | 192 return NativeMediaFileUtil::ReadDirectorySync(context, url, file_list); |
| 194 } | 193 } |
| 195 | 194 |
| 196 if (components[1] != kITunesMusicDir) | 195 if (components[1] != kITunesMusicDir) |
| 197 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 196 return base::File::FILE_ERROR_NOT_FOUND; |
| 198 | 197 |
| 199 if (components.size() == 2) { | 198 if (components.size() == 2) { |
| 200 std::set<ITunesDataProvider::ArtistName> artists = | 199 std::set<ITunesDataProvider::ArtistName> artists = |
| 201 GetDataProvider()->GetArtistNames(); | 200 GetDataProvider()->GetArtistNames(); |
| 202 std::set<ITunesDataProvider::ArtistName>::const_iterator it; | 201 std::set<ITunesDataProvider::ArtistName>::const_iterator it; |
| 203 for (it = artists.begin(); it != artists.end(); ++it) | 202 for (it = artists.begin(); it != artists.end(); ++it) |
| 204 file_list->push_back(DirectoryEntry(*it, DirectoryEntry::DIRECTORY, | 203 file_list->push_back(DirectoryEntry(*it, DirectoryEntry::DIRECTORY, |
| 205 0, base::Time())); | 204 0, base::Time())); |
| 206 return base::PLATFORM_FILE_OK; | 205 return base::File::FILE_OK; |
| 207 } | 206 } |
| 208 | 207 |
| 209 if (components.size() == 3) { | 208 if (components.size() == 3) { |
| 210 std::set<ITunesDataProvider::AlbumName> albums = | 209 std::set<ITunesDataProvider::AlbumName> albums = |
| 211 GetDataProvider()->GetAlbumNames(components[2]); | 210 GetDataProvider()->GetAlbumNames(components[2]); |
| 212 if (albums.size() == 0) | 211 if (albums.size() == 0) |
| 213 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 212 return base::File::FILE_ERROR_NOT_FOUND; |
| 214 std::set<ITunesDataProvider::AlbumName>::const_iterator it; | 213 std::set<ITunesDataProvider::AlbumName>::const_iterator it; |
| 215 for (it = albums.begin(); it != albums.end(); ++it) | 214 for (it = albums.begin(); it != albums.end(); ++it) |
| 216 file_list->push_back(DirectoryEntry(*it, DirectoryEntry::DIRECTORY, | 215 file_list->push_back(DirectoryEntry(*it, DirectoryEntry::DIRECTORY, |
| 217 0, base::Time())); | 216 0, base::Time())); |
| 218 return base::PLATFORM_FILE_OK; | 217 return base::File::FILE_OK; |
| 219 } | 218 } |
| 220 | 219 |
| 221 if (components.size() == 4) { | 220 if (components.size() == 4) { |
| 222 ITunesDataProvider::Album album = | 221 ITunesDataProvider::Album album = |
| 223 GetDataProvider()->GetAlbum(components[2], components[3]); | 222 GetDataProvider()->GetAlbum(components[2], components[3]); |
| 224 if (album.size() == 0) | 223 if (album.size() == 0) |
| 225 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 224 return base::File::FILE_ERROR_NOT_FOUND; |
| 226 ITunesDataProvider::Album::const_iterator it; | 225 ITunesDataProvider::Album::const_iterator it; |
| 227 for (it = album.begin(); it != album.end(); ++it) { | 226 for (it = album.begin(); it != album.end(); ++it) { |
| 228 base::File::Info file_info; | 227 base::File::Info file_info; |
| 229 if (media_path_filter()->Match(it->second) && | 228 if (media_path_filter()->Match(it->second) && |
| 230 base::GetFileInfo(it->second, &file_info)) { | 229 base::GetFileInfo(it->second, &file_info)) { |
| 231 file_list->push_back(DirectoryEntry(it->first, DirectoryEntry::FILE, | 230 file_list->push_back(DirectoryEntry(it->first, DirectoryEntry::FILE, |
| 232 file_info.size, | 231 file_info.size, |
| 233 file_info.last_modified)); | 232 file_info.last_modified)); |
| 234 } | 233 } |
| 235 } | 234 } |
| 236 return base::PLATFORM_FILE_OK; | 235 return base::File::FILE_OK; |
| 237 } | 236 } |
| 238 | 237 |
| 239 // At this point, the only choice is one of two errors, but figuring out | 238 // At this point, the only choice is one of two errors, but figuring out |
| 240 // which one is required. | 239 // which one is required. |
| 241 DCHECK_EQ(4UL, components.size()); | 240 DCHECK_EQ(4UL, components.size()); |
| 242 base::FilePath location; | 241 base::FilePath location; |
| 243 location = GetDataProvider()->GetTrackLocation(components[1], components[2], | 242 location = GetDataProvider()->GetTrackLocation(components[1], components[2], |
| 244 components[3]); | 243 components[3]); |
| 245 if (!location.empty()) | 244 if (!location.empty()) |
| 246 return base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY; | 245 return base::File::FILE_ERROR_NOT_A_DIRECTORY; |
| 247 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 246 return base::File::FILE_ERROR_NOT_FOUND; |
| 248 } | 247 } |
| 249 | 248 |
| 250 base::PlatformFileError ITunesFileUtil::DeleteDirectorySync( | 249 base::File::Error ITunesFileUtil::DeleteDirectorySync( |
| 251 fileapi::FileSystemOperationContext* context, | 250 fileapi::FileSystemOperationContext* context, |
| 252 const fileapi::FileSystemURL& url) { | 251 const fileapi::FileSystemURL& url) { |
| 253 return base::PLATFORM_FILE_ERROR_SECURITY; | 252 return base::File::FILE_ERROR_SECURITY; |
| 254 } | 253 } |
| 255 | 254 |
| 256 base::PlatformFileError ITunesFileUtil::DeleteFileSync( | 255 base::File::Error ITunesFileUtil::DeleteFileSync( |
| 257 fileapi::FileSystemOperationContext* context, | 256 fileapi::FileSystemOperationContext* context, |
| 258 const fileapi::FileSystemURL& url) { | 257 const fileapi::FileSystemURL& url) { |
| 259 return base::PLATFORM_FILE_ERROR_SECURITY; | 258 return base::File::FILE_ERROR_SECURITY; |
| 260 } | 259 } |
| 261 | 260 |
| 262 base::PlatformFileError ITunesFileUtil::CreateSnapshotFileSync( | 261 base::File::Error ITunesFileUtil::CreateSnapshotFileSync( |
| 263 fileapi::FileSystemOperationContext* context, | 262 fileapi::FileSystemOperationContext* context, |
| 264 const fileapi::FileSystemURL& url, | 263 const fileapi::FileSystemURL& url, |
| 265 base::PlatformFileInfo* file_info, | 264 base::File::Info* file_info, |
| 266 base::FilePath* platform_path, | 265 base::FilePath* platform_path, |
| 267 scoped_refptr<webkit_blob::ShareableFileReference>* file_ref) { | 266 scoped_refptr<webkit_blob::ShareableFileReference>* file_ref) { |
| 268 DCHECK(!url.path().IsAbsolute()); | 267 DCHECK(!url.path().IsAbsolute()); |
| 269 if (url.path() != base::FilePath().AppendASCII(kITunesLibraryXML)) { | 268 if (url.path() != base::FilePath().AppendASCII(kITunesLibraryXML)) { |
| 270 return NativeMediaFileUtil::CreateSnapshotFileSync(context, url, file_info, | 269 return NativeMediaFileUtil::CreateSnapshotFileSync(context, url, file_info, |
| 271 platform_path, file_ref); | 270 platform_path, file_ref); |
| 272 } | 271 } |
| 273 | 272 |
| 274 // The following code is different than | 273 // The following code is different than |
| 275 // NativeMediaFileUtil::CreateSnapshotFileSync in that it knows that the | 274 // NativeMediaFileUtil::CreateSnapshotFileSync in that it knows that the |
| 276 // library xml file is not a directory and it doesn't run mime sniffing on the | 275 // library xml file is not a directory and it doesn't run mime sniffing on the |
| 277 // file. The only way to get here is by way of | 276 // file. The only way to get here is by way of |
| 278 // CreateSnapshotFileWithFreshDataProvider() so the file has already been | 277 // CreateSnapshotFileWithFreshDataProvider() so the file has already been |
| 279 // parsed and deemed valid. | 278 // parsed and deemed valid. |
| 280 *file_ref = scoped_refptr<webkit_blob::ShareableFileReference>(); | 279 *file_ref = scoped_refptr<webkit_blob::ShareableFileReference>(); |
| 281 return GetFileInfoSync(context, url, file_info, platform_path); | 280 return GetFileInfoSync(context, url, file_info, platform_path); |
| 282 } | 281 } |
| 283 | 282 |
| 284 base::PlatformFileError ITunesFileUtil::GetLocalFilePath( | 283 base::File::Error ITunesFileUtil::GetLocalFilePath( |
| 285 fileapi::FileSystemOperationContext* context, | 284 fileapi::FileSystemOperationContext* context, |
| 286 const fileapi::FileSystemURL& url, | 285 const fileapi::FileSystemURL& url, |
| 287 base::FilePath* local_file_path) { | 286 base::FilePath* local_file_path) { |
| 288 std::vector<std::string> components; | 287 std::vector<std::string> components; |
| 289 fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); | 288 fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); |
| 290 | 289 |
| 291 if (components.size() == 1 && components[0] == kITunesLibraryXML) { | 290 if (components.size() == 1 && components[0] == kITunesLibraryXML) { |
| 292 *local_file_path = GetDataProvider()->library_path(); | 291 *local_file_path = GetDataProvider()->library_path(); |
| 293 return base::PLATFORM_FILE_OK; | 292 return base::File::FILE_OK; |
| 294 } | 293 } |
| 295 | 294 |
| 296 if (components.size() >= 2 && components[0] == kITunesMediaDir && | 295 if (components.size() >= 2 && components[0] == kITunesMediaDir && |
| 297 components[1] == kITunesAutoAddDir) { | 296 components[1] == kITunesAutoAddDir) { |
| 298 *local_file_path = GetDataProvider()->auto_add_path(); | 297 *local_file_path = GetDataProvider()->auto_add_path(); |
| 299 if (local_file_path->empty()) | 298 if (local_file_path->empty()) |
| 300 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 299 return base::File::FILE_ERROR_NOT_FOUND; |
| 301 | 300 |
| 302 for (size_t i = 2; i < components.size(); ++i) { | 301 for (size_t i = 2; i < components.size(); ++i) { |
| 303 *local_file_path = local_file_path->Append( | 302 *local_file_path = local_file_path->Append( |
| 304 base::FilePath::FromUTF8Unsafe(components[i])); | 303 base::FilePath::FromUTF8Unsafe(components[i])); |
| 305 } | 304 } |
| 306 return base::PLATFORM_FILE_OK; | 305 return base::File::FILE_OK; |
| 307 } | 306 } |
| 308 | 307 |
| 309 // Should only get here for files, i.e. the xml file and tracks. | 308 // Should only get here for files, i.e. the xml file and tracks. |
| 310 if (components[0] != kITunesMediaDir || components[1] != kITunesMusicDir|| | 309 if (components[0] != kITunesMediaDir || components[1] != kITunesMusicDir|| |
| 311 components.size() != 5) { | 310 components.size() != 5) { |
| 312 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 311 return base::File::FILE_ERROR_NOT_FOUND; |
| 313 } | 312 } |
| 314 | 313 |
| 315 *local_file_path = GetDataProvider()->GetTrackLocation(components[2], | 314 *local_file_path = GetDataProvider()->GetTrackLocation(components[2], |
| 316 components[3], | 315 components[3], |
| 317 components[4]); | 316 components[4]); |
| 318 if (!local_file_path->empty()) | 317 if (!local_file_path->empty()) |
| 319 return base::PLATFORM_FILE_OK; | 318 return base::File::FILE_OK; |
| 320 | 319 |
| 321 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 320 return base::File::FILE_ERROR_NOT_FOUND; |
| 322 } | 321 } |
| 323 | 322 |
| 324 void ITunesFileUtil::GetFileInfoWithFreshDataProvider( | 323 void ITunesFileUtil::GetFileInfoWithFreshDataProvider( |
| 325 scoped_ptr<fileapi::FileSystemOperationContext> context, | 324 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 326 const fileapi::FileSystemURL& url, | 325 const fileapi::FileSystemURL& url, |
| 327 const GetFileInfoCallback& callback, | 326 const GetFileInfoCallback& callback, |
| 328 bool valid_parse) { | 327 bool valid_parse) { |
| 329 if (!valid_parse) { | 328 if (!valid_parse) { |
| 330 if (!callback.is_null()) { | 329 if (!callback.is_null()) { |
| 331 content::BrowserThread::PostTask( | 330 content::BrowserThread::PostTask( |
| 332 content::BrowserThread::IO, | 331 content::BrowserThread::IO, |
| 333 FROM_HERE, | 332 FROM_HERE, |
| 334 base::Bind(callback, base::PLATFORM_FILE_ERROR_IO, | 333 base::Bind(callback, base::File::FILE_ERROR_IO, |
| 335 base::PlatformFileInfo())); | 334 base::File::Info())); |
| 336 } | 335 } |
| 337 return; | 336 return; |
| 338 } | 337 } |
| 339 NativeMediaFileUtil::GetFileInfoOnTaskRunnerThread(context.Pass(), url, | 338 NativeMediaFileUtil::GetFileInfoOnTaskRunnerThread(context.Pass(), url, |
| 340 callback); | 339 callback); |
| 341 } | 340 } |
| 342 | 341 |
| 343 void ITunesFileUtil::ReadDirectoryWithFreshDataProvider( | 342 void ITunesFileUtil::ReadDirectoryWithFreshDataProvider( |
| 344 scoped_ptr<fileapi::FileSystemOperationContext> context, | 343 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 345 const fileapi::FileSystemURL& url, | 344 const fileapi::FileSystemURL& url, |
| 346 const ReadDirectoryCallback& callback, | 345 const ReadDirectoryCallback& callback, |
| 347 bool valid_parse) { | 346 bool valid_parse) { |
| 348 if (!valid_parse) { | 347 if (!valid_parse) { |
| 349 if (!callback.is_null()) { | 348 if (!callback.is_null()) { |
| 350 content::BrowserThread::PostTask( | 349 content::BrowserThread::PostTask( |
| 351 content::BrowserThread::IO, | 350 content::BrowserThread::IO, |
| 352 FROM_HERE, | 351 FROM_HERE, |
| 353 base::Bind(callback, base::PLATFORM_FILE_ERROR_IO, EntryList(), | 352 base::Bind(callback, base::File::FILE_ERROR_IO, EntryList(), false)); |
| 354 false)); | |
| 355 } | 353 } |
| 356 return; | 354 return; |
| 357 } | 355 } |
| 358 NativeMediaFileUtil::ReadDirectoryOnTaskRunnerThread(context.Pass(), url, | 356 NativeMediaFileUtil::ReadDirectoryOnTaskRunnerThread(context.Pass(), url, |
| 359 callback); | 357 callback); |
| 360 } | 358 } |
| 361 | 359 |
| 362 void ITunesFileUtil::CreateSnapshotFileWithFreshDataProvider( | 360 void ITunesFileUtil::CreateSnapshotFileWithFreshDataProvider( |
| 363 scoped_ptr<fileapi::FileSystemOperationContext> context, | 361 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 364 const fileapi::FileSystemURL& url, | 362 const fileapi::FileSystemURL& url, |
| 365 const CreateSnapshotFileCallback& callback, | 363 const CreateSnapshotFileCallback& callback, |
| 366 bool valid_parse) { | 364 bool valid_parse) { |
| 367 if (!valid_parse) { | 365 if (!valid_parse) { |
| 368 if (!callback.is_null()) { | 366 if (!callback.is_null()) { |
| 369 base::PlatformFileInfo file_info; | 367 base::File::Info file_info; |
| 370 base::FilePath platform_path; | 368 base::FilePath platform_path; |
| 371 scoped_refptr<webkit_blob::ShareableFileReference> file_ref; | 369 scoped_refptr<webkit_blob::ShareableFileReference> file_ref; |
| 372 content::BrowserThread::PostTask( | 370 content::BrowserThread::PostTask( |
| 373 content::BrowserThread::IO, | 371 content::BrowserThread::IO, |
| 374 FROM_HERE, | 372 FROM_HERE, |
| 375 base::Bind(callback, base::PLATFORM_FILE_ERROR_IO, file_info, | 373 base::Bind(callback, base::File::FILE_ERROR_IO, file_info, |
| 376 platform_path, file_ref)); | 374 platform_path, file_ref)); |
| 377 } | 375 } |
| 378 return; | 376 return; |
| 379 } | 377 } |
| 380 NativeMediaFileUtil::CreateSnapshotFileOnTaskRunnerThread(context.Pass(), url, | 378 NativeMediaFileUtil::CreateSnapshotFileOnTaskRunnerThread(context.Pass(), url, |
| 381 callback); | 379 callback); |
| 382 } | 380 } |
| 383 | 381 |
| 384 ITunesDataProvider* ITunesFileUtil::GetDataProvider() { | 382 ITunesDataProvider* ITunesFileUtil::GetDataProvider() { |
| 385 if (!imported_registry_) | 383 if (!imported_registry_) |
| 386 imported_registry_ = ImportedMediaGalleryRegistry::GetInstance(); | 384 imported_registry_ = ImportedMediaGalleryRegistry::GetInstance(); |
| 387 return imported_registry_->ITunesDataProvider(); | 385 return imported_registry_->ITunesDataProvider(); |
| 388 } | 386 } |
| 389 | 387 |
| 390 } // namespace itunes | 388 } // namespace itunes |
| OLD | NEW |