| Index: chrome/browser/chromeos/extensions/file_browser_private_api.cc
|
| diff --git a/chrome/browser/chromeos/extensions/file_browser_private_api.cc b/chrome/browser/chromeos/extensions/file_browser_private_api.cc
|
| index 907488eb12f95368737211373f03538452c4e558..71fdd845fd94faa723cf0f3cda8594bc27f200cd 100644
|
| --- a/chrome/browser/chromeos/extensions/file_browser_private_api.cc
|
| +++ b/chrome/browser/chromeos/extensions/file_browser_private_api.cc
|
| @@ -1015,14 +1015,42 @@ void AddMountFunction::GetLocalPathsResponseOnUIThread(
|
| }
|
|
|
| #if defined(OS_CHROMEOS)
|
| - FilePath source_file = files[0].path;
|
| - DiskMountManager* disk_mount_manager = DiskMountManager::GetInstance();
|
| - // MountPath() takes a std::string.
|
| - disk_mount_manager->MountPath(source_file.AsUTF8Unsafe(),
|
| - DiskMountManager::MountTypeFromString(mount_type_str));
|
| + const FilePath& source_path = files[0].path;
|
| + const FilePath::StringType& display_name = files[0].display_name;
|
| + // Check if the source path is under GData cache directory.
|
| + gdata::GDataSystemService* system_service =
|
| + gdata::GDataSystemServiceFactory::GetForProfile(profile_);
|
| + gdata::GDataFileSystem* file_system =
|
| + system_service ? system_service->file_system() : NULL;
|
| + if (file_system && file_system->IsUnderGDataCacheDirectory(source_path)) {
|
| + file_system->SetMountedState(
|
| + source_path,
|
| + true,
|
| + base::Bind(&AddMountFunction::OnMountedStateSet, this, mount_type_str,
|
| + display_name));
|
| + } else {
|
| + OnMountedStateSet(mount_type_str, display_name,
|
| + base::PLATFORM_FILE_OK, source_path);
|
| + }
|
| +#else
|
| + SendResponse(true);
|
| #endif // defined(OS_CHROMEOS)
|
| +}
|
|
|
| +void AddMountFunction::OnMountedStateSet(const std::string& mount_type,
|
| + const FilePath::StringType& file_name,
|
| + base::PlatformFileError error,
|
| + const FilePath& file_path) {
|
| +#if defined(OS_CHROMEOS)
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + DiskMountManager* disk_mount_manager = DiskMountManager::GetInstance();
|
| + // MountPath() takes a std::string.
|
| + disk_mount_manager->MountPath(file_path.AsUTF8Unsafe(),
|
| + FilePath(file_name).Extension(),
|
| + DiskMountManager::MountTypeFromString(
|
| + mount_type));
|
| SendResponse(true);
|
| +#endif // defined(OS_CHROMEOS)
|
| }
|
|
|
| RemoveMountFunction::RemoveMountFunction() {
|
|
|