Index: chrome/browser/media_galleries/fileapi/picasa/picasa_file_util.cc |
diff --git a/chrome/browser/media_galleries/fileapi/picasa/picasa_file_util.cc b/chrome/browser/media_galleries/fileapi/picasa/picasa_file_util.cc |
deleted file mode 100644 |
index a43b39e8eeea7cfa1773df0b6a3b765597630bd5..0000000000000000000000000000000000000000 |
--- a/chrome/browser/media_galleries/fileapi/picasa/picasa_file_util.cc |
+++ /dev/null |
@@ -1,373 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/media_galleries/fileapi/picasa/picasa_file_util.h" |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/bind_helpers.h" |
-#include "base/strings/string_util.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/strings/sys_string_conversions.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "chrome/browser/media_galleries/fileapi/media_file_system_backend.h" |
-#include "chrome/browser/media_galleries/fileapi/picasa/picasa_data_provider.h" |
-#include "chrome/browser/media_galleries/imported_media_gallery_registry.h" |
-#include "chrome/common/media_galleries/picasa_types.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "webkit/browser/fileapi/file_system_operation_context.h" |
-#include "webkit/browser/fileapi/file_system_url.h" |
-#include "webkit/browser/fileapi/native_file_util.h" |
-#include "webkit/common/fileapi/file_system_util.h" |
- |
-using base::FilePath; |
-using fileapi::DirectoryEntry; |
-using fileapi::FileSystemOperationContext; |
-using fileapi::FileSystemURL; |
- |
-namespace picasa { |
- |
-namespace { |
- |
-base::PlatformFileError FindAlbumInfo(const std::string& key, |
- const AlbumMap* map, |
- AlbumInfo* album_info) { |
- if (!map) |
- return base::PLATFORM_FILE_ERROR_FAILED; |
- |
- AlbumMap::const_iterator it = map->find(key); |
- |
- if (it == map->end()) |
- return base::PLATFORM_FILE_ERROR_NOT_FOUND; |
- |
- if (album_info != NULL) |
- *album_info = it->second; |
- |
- return base::PLATFORM_FILE_OK; |
-} |
- |
-PicasaDataProvider::DataType GetDataTypeForURL( |
- const fileapi::FileSystemURL& url) { |
- std::vector<std::string> components; |
- fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); |
- |
- if (components.size() >= 2 && components[0] == kPicasaDirAlbums) |
- return PicasaDataProvider::ALBUMS_IMAGES_DATA; |
- |
- return PicasaDataProvider::LIST_OF_ALBUMS_AND_FOLDERS_DATA; |
-} |
- |
-} // namespace |
- |
-const char kPicasaDirAlbums[] = "albums"; |
-const char kPicasaDirFolders[] = "folders"; |
- |
-PicasaFileUtil::PicasaFileUtil(chrome::MediaPathFilter* media_path_filter) |
- : chrome::NativeMediaFileUtil(media_path_filter), |
- weak_factory_(this) { |
-} |
- |
-PicasaFileUtil::~PicasaFileUtil() {} |
- |
-void PicasaFileUtil::GetFileInfoOnTaskRunnerThread( |
- scoped_ptr<fileapi::FileSystemOperationContext> context, |
- const fileapi::FileSystemURL& url, |
- const GetFileInfoCallback& callback) { |
- GetDataProvider()->RefreshData( |
- GetDataTypeForURL(url), |
- base::Bind(&PicasaFileUtil::GetFileInfoWithFreshDataProvider, |
- weak_factory_.GetWeakPtr(), |
- base::Passed(&context), |
- url, |
- callback)); |
-} |
- |
-void PicasaFileUtil::ReadDirectoryOnTaskRunnerThread( |
- scoped_ptr<fileapi::FileSystemOperationContext> context, |
- const fileapi::FileSystemURL& url, |
- const ReadDirectoryCallback& callback) { |
- GetDataProvider()->RefreshData( |
- GetDataTypeForURL(url), |
- base::Bind(&PicasaFileUtil::ReadDirectoryWithFreshDataProvider, |
- weak_factory_.GetWeakPtr(), |
- base::Passed(&context), |
- url, |
- callback)); |
-} |
- |
-base::PlatformFileError PicasaFileUtil::GetFileInfoSync( |
- FileSystemOperationContext* context, const FileSystemURL& url, |
- base::PlatformFileInfo* file_info, base::FilePath* platform_path) { |
- DCHECK(context); |
- DCHECK(file_info); |
- DCHECK(platform_path); |
- |
- *platform_path = base::FilePath(); |
- |
- std::vector<std::string> components; |
- fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); |
- |
- switch (components.size()) { |
- case 0: |
- // Root directory. |
- file_info->is_directory = true; |
- return base::PLATFORM_FILE_OK; |
- case 1: |
- if (components[0] == kPicasaDirAlbums || |
- components[0] == kPicasaDirFolders) { |
- file_info->is_directory = true; |
- return base::PLATFORM_FILE_OK; |
- } |
- |
- break; |
- case 2: |
- if (components[0] == kPicasaDirAlbums) { |
- scoped_ptr<AlbumMap> album_map = GetDataProvider()->GetAlbums(); |
- base::PlatformFileError error = |
- FindAlbumInfo(components[1], album_map.get(), NULL); |
- if (error != base::PLATFORM_FILE_OK) |
- return error; |
- |
- file_info->is_directory = true; |
- return base::PLATFORM_FILE_OK; |
- } |
- |
- if (components[0] == kPicasaDirFolders) { |
- return NativeMediaFileUtil::GetFileInfoSync(context, url, file_info, |
- platform_path); |
- } |
- break; |
- case 3: |
- // NativeMediaFileUtil::GetInfo calls into virtual function |
- // PicasaFileUtil::GetLocalFilePath, and that will handle both |
- // album contents and folder contents. |
- base::PlatformFileError result = NativeMediaFileUtil::GetFileInfoSync( |
- context, url, file_info, platform_path); |
- |
- DCHECK(components[0] == kPicasaDirAlbums || |
- components[0] == kPicasaDirFolders || |
- result == base::PLATFORM_FILE_ERROR_NOT_FOUND); |
- |
- return result; |
- } |
- |
- return base::PLATFORM_FILE_ERROR_NOT_FOUND; |
-} |
- |
-base::PlatformFileError PicasaFileUtil::ReadDirectorySync( |
- fileapi::FileSystemOperationContext* context, |
- const fileapi::FileSystemURL& url, |
- EntryList* file_list) { |
- DCHECK(context); |
- DCHECK(file_list); |
- DCHECK(file_list->empty()); |
- |
- base::PlatformFileInfo file_info; |
- base::FilePath platform_directory_path; |
- base::PlatformFileError error = GetFileInfoSync( |
- context, url, &file_info, &platform_directory_path); |
- |
- if (error != base::PLATFORM_FILE_OK) |
- return error; |
- |
- if (!file_info.is_directory) |
- return base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY; |
- |
- std::vector<std::string> components; |
- fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); |
- |
- switch (components.size()) { |
- case 0: { |
- // Root directory. |
- file_list->push_back( |
- DirectoryEntry(kPicasaDirAlbums, DirectoryEntry::DIRECTORY, 0, |
- base::Time())); |
- file_list->push_back( |
- DirectoryEntry(kPicasaDirFolders, DirectoryEntry::DIRECTORY, 0, |
- base::Time())); |
- break; |
- } |
- case 1: |
- if (components[0] == kPicasaDirAlbums) { |
- scoped_ptr<AlbumMap> albums = GetDataProvider()->GetAlbums(); |
- if (!albums) |
- return base::PLATFORM_FILE_ERROR_NOT_FOUND; |
- |
- for (AlbumMap::const_iterator it = albums->begin(); |
- it != albums->end(); ++it) { |
- file_list->push_back( |
- DirectoryEntry(it->first, DirectoryEntry::DIRECTORY, 0, |
- it->second.timestamp)); |
- } |
- } else if (components[0] == kPicasaDirFolders) { |
- scoped_ptr<AlbumMap> folders = GetDataProvider()->GetFolders(); |
- if (!folders) |
- return base::PLATFORM_FILE_ERROR_NOT_FOUND; |
- |
- for (AlbumMap::const_iterator it = folders->begin(); |
- it != folders->end(); ++it) { |
- file_list->push_back( |
- DirectoryEntry(it->first, DirectoryEntry::DIRECTORY, 0, |
- it->second.timestamp)); |
- } |
- } |
- break; |
- case 2: |
- if (components[0] == kPicasaDirAlbums) { |
- scoped_ptr<AlbumMap> album_map = GetDataProvider()->GetAlbums(); |
- AlbumInfo album_info; |
- base::PlatformFileError error = |
- FindAlbumInfo(components[1], album_map.get(), &album_info); |
- if (error != base::PLATFORM_FILE_OK) |
- return error; |
- |
- scoped_ptr<AlbumImages> album_images = |
- GetDataProvider()->FindAlbumImages(album_info.uid, &error); |
- if (error != base::PLATFORM_FILE_OK) |
- return error; |
- |
- for (AlbumImages::const_iterator it = album_images->begin(); |
- it != album_images->end(); |
- ++it) { |
- fileapi::DirectoryEntry entry; |
- base::PlatformFileInfo info; |
- |
- // Simply skip files that we can't get info on. |
- if (fileapi::NativeFileUtil::GetFileInfo(it->second, &info) != |
- base::PLATFORM_FILE_OK) { |
- continue; |
- } |
- |
- file_list->push_back(DirectoryEntry( |
- it->first, DirectoryEntry::FILE, info.size, info.last_modified)); |
- } |
- } |
- |
- if (components[0] == kPicasaDirFolders) { |
- EntryList super_list; |
- base::PlatformFileError error = |
- NativeMediaFileUtil::ReadDirectorySync(context, url, &super_list); |
- if (error != base::PLATFORM_FILE_OK) |
- return error; |
- |
- for (EntryList::const_iterator it = super_list.begin(); |
- it != super_list.end(); ++it) { |
- if (!it->is_directory) |
- file_list->push_back(*it); |
- } |
- } |
- |
- break; |
- } |
- |
- return base::PLATFORM_FILE_OK; |
-} |
- |
-base::PlatformFileError PicasaFileUtil::GetLocalFilePath( |
- FileSystemOperationContext* context, const FileSystemURL& url, |
- base::FilePath* local_file_path) { |
- DCHECK(local_file_path); |
- DCHECK(url.is_valid()); |
- std::vector<std::string> components; |
- fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); |
- |
- switch (components.size()) { |
- case 2: |
- if (components[0] == kPicasaDirFolders) { |
- scoped_ptr<AlbumMap> album_map = GetDataProvider()->GetFolders(); |
- AlbumInfo album_info; |
- base::PlatformFileError error = |
- FindAlbumInfo(components[1], album_map.get(), &album_info); |
- if (error != base::PLATFORM_FILE_OK) |
- return error; |
- |
- *local_file_path = album_info.path; |
- return base::PLATFORM_FILE_OK; |
- } |
- break; |
- case 3: |
- if (components[0] == kPicasaDirAlbums) { |
- scoped_ptr<AlbumMap> album_map = GetDataProvider()->GetAlbums(); |
- AlbumInfo album_info; |
- base::PlatformFileError error = |
- FindAlbumInfo(components[1], album_map.get(), &album_info); |
- if (error != base::PLATFORM_FILE_OK) |
- return error; |
- |
- scoped_ptr<AlbumImages> album_images = |
- GetDataProvider()->FindAlbumImages(album_info.uid, &error); |
- if (error != base::PLATFORM_FILE_OK) |
- return error; |
- |
- AlbumImages::const_iterator it = album_images->find(components[2]); |
- if (it == album_images->end()) |
- return base::PLATFORM_FILE_ERROR_NOT_FOUND; |
- |
- *local_file_path = it->second; |
- return base::PLATFORM_FILE_OK; |
- } |
- |
- if (components[0] == kPicasaDirFolders) { |
- scoped_ptr<AlbumMap> album_map = GetDataProvider()->GetFolders(); |
- AlbumInfo album_info; |
- base::PlatformFileError error = |
- FindAlbumInfo(components[1], album_map.get(), &album_info); |
- if (error != base::PLATFORM_FILE_OK) |
- return error; |
- |
- // Not part of this class's mandate to check that it actually exists. |
- *local_file_path = album_info.path.Append(url.path().BaseName()); |
- return base::PLATFORM_FILE_OK; |
- } |
- |
- return base::PLATFORM_FILE_ERROR_NOT_FOUND; |
- break; |
- } |
- |
- // All other cases don't have a local path. The valid cases should be |
- // intercepted by GetFileInfo()/CreateFileEnumerator(). Invalid cases |
- // return a NOT_FOUND error. |
- return base::PLATFORM_FILE_ERROR_NOT_FOUND; |
-} |
- |
-void PicasaFileUtil::GetFileInfoWithFreshDataProvider( |
- scoped_ptr<fileapi::FileSystemOperationContext> context, |
- const fileapi::FileSystemURL& url, |
- const GetFileInfoCallback& callback, |
- bool success) { |
- if (!success) { |
- content::BrowserThread::PostTask( |
- content::BrowserThread::IO, |
- FROM_HERE, |
- base::Bind( |
- callback, base::PLATFORM_FILE_ERROR_IO, base::PlatformFileInfo())); |
- return; |
- } |
- NativeMediaFileUtil::GetFileInfoOnTaskRunnerThread( |
- context.Pass(), url, callback); |
-} |
- |
-void PicasaFileUtil::ReadDirectoryWithFreshDataProvider( |
- scoped_ptr<fileapi::FileSystemOperationContext> context, |
- const fileapi::FileSystemURL& url, |
- const ReadDirectoryCallback& callback, |
- bool success) { |
- if (!success) { |
- content::BrowserThread::PostTask( |
- content::BrowserThread::IO, |
- FROM_HERE, |
- base::Bind(callback, base::PLATFORM_FILE_ERROR_IO, EntryList(), false)); |
- return; |
- } |
- NativeMediaFileUtil::ReadDirectoryOnTaskRunnerThread( |
- context.Pass(), url, callback); |
-} |
- |
-PicasaDataProvider* PicasaFileUtil::GetDataProvider() { |
- return chrome::ImportedMediaGalleryRegistry::PicasaDataProvider(); |
-} |
- |
-} // namespace picasa |