diff options
Diffstat (limited to 'chrome/browser/media_galleries/fileapi/picasa_file_util.cc')
-rw-r--r-- | chrome/browser/media_galleries/fileapi/picasa_file_util.cc | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/chrome/browser/media_galleries/fileapi/picasa_file_util.cc b/chrome/browser/media_galleries/fileapi/picasa_file_util.cc index 646f9548..6b3ca1f 100644 --- a/chrome/browser/media_galleries/fileapi/picasa_file_util.cc +++ b/chrome/browser/media_galleries/fileapi/picasa_file_util.cc @@ -49,11 +49,24 @@ base::File::Error FindAlbumInfo(const std::string& key, return base::File::FILE_OK; } -PicasaDataProvider::DataType GetDataTypeForURL( +std::vector<std::string> GetVirtualPathComponents( const fileapi::FileSystemURL& url) { - std::vector<std::string> components; - fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); + ImportedMediaGalleryRegistry* imported_registry = + ImportedMediaGalleryRegistry::GetInstance(); + base::FilePath root = imported_registry->ImportedRoot().AppendASCII("picasa"); + + DCHECK(root.IsParent(url.path()) || root == url.path()); + base::FilePath virtual_path; + root.AppendRelativePath(url.path(), &virtual_path); + + std::vector<std::string> result; + fileapi::VirtualPath::GetComponentsUTF8Unsafe(virtual_path, &result); + return result; +} +PicasaDataProvider::DataType GetDataTypeForURL( + const fileapi::FileSystemURL& url) { + std::vector<std::string> components = GetVirtualPathComponents(url); if (components.size() >= 2 && components[0] == kPicasaDirAlbums) return PicasaDataProvider::ALBUMS_IMAGES_DATA; @@ -107,8 +120,7 @@ base::File::Error PicasaFileUtil::GetFileInfoSync( if (platform_path) *platform_path = base::FilePath(); - std::vector<std::string> components; - fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); + std::vector<std::string> components = GetVirtualPathComponents(url); switch (components.size()) { case 0: @@ -176,9 +188,7 @@ base::File::Error PicasaFileUtil::ReadDirectorySync( if (!file_info.is_directory) return base::File::FILE_ERROR_NOT_A_DIRECTORY; - std::vector<std::string> components; - fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); - + std::vector<std::string> components = GetVirtualPathComponents(url); switch (components.size()) { case 0: { // Root directory. @@ -283,8 +293,7 @@ base::File::Error PicasaFileUtil::GetLocalFilePath( base::FilePath* local_file_path) { DCHECK(local_file_path); DCHECK(url.is_valid()); - std::vector<std::string> components; - fileapi::VirtualPath::GetComponentsUTF8Unsafe(url.path(), &components); + std::vector<std::string> components = GetVirtualPathComponents(url); switch (components.size()) { case 2: |