| Index: chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc
|
| diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc
|
| index 4d2ae46fad8175ea160be37842a432f28086185d..16fa5ac88d521046c7109f3e033c4c7c138a73be 100644
|
| --- a/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc
|
| +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "chrome/browser/chromeos/extensions/file_manager/private_api_mount.h"
|
|
|
| +#include <string>
|
| +
|
| #include "base/format_macros.h"
|
| #include "chrome/browser/chromeos/drive/file_system_interface.h"
|
| #include "chrome/browser/chromeos/drive/file_system_util.h"
|
| @@ -105,8 +107,7 @@ bool FileBrowserPrivateRemoveMountFunction::RunImpl() {
|
| using file_manager::VolumeManager;
|
| using file_manager::VolumeInfo;
|
| VolumeManager* volume_manager = VolumeManager::Get(GetProfile());
|
| - if (!volume_manager)
|
| - return false;
|
| + DCHECK(volume_manager);
|
|
|
| VolumeInfo volume_info;
|
| if (!volume_manager->FindVolumeInfoById(params->volume_id, &volume_info))
|
| @@ -115,10 +116,28 @@ bool FileBrowserPrivateRemoveMountFunction::RunImpl() {
|
| // TODO(tbarzic): Send response when callback is received, it would make more
|
| // sense than remembering issued unmount requests in file manager and showing
|
| // errors for them when MountCompleted event is received.
|
| - DiskMountManager::GetInstance()->UnmountPath(
|
| - volume_info.mount_path.value(),
|
| - chromeos::UNMOUNT_OPTIONS_NONE,
|
| - DiskMountManager::UnmountPathCallback());
|
| + switch (volume_info.type) {
|
| + case file_manager::VOLUME_TYPE_REMOVABLE_DISK_PARTITION:
|
| + case file_manager::VOLUME_TYPE_MOUNTED_ARCHIVE_FILE: {
|
| + DiskMountManager::GetInstance()->UnmountPath(
|
| + volume_info.mount_path.value(),
|
| + chromeos::UNMOUNT_OPTIONS_NONE,
|
| + DiskMountManager::UnmountPathCallback());
|
| + break;
|
| + }
|
| + case file_manager::VOLUME_TYPE_PROVIDED: {
|
| + chromeos::file_system_provider::Service* service =
|
| + chromeos::file_system_provider::Service::Get(GetProfile());
|
| + DCHECK(service);
|
| + // TODO(mtomasz): Pass a more detailed error than just a bool.
|
| + if (!service->RequestUnmount(volume_info.file_system_id))
|
| + return false;
|
| + break;
|
| + }
|
| + default:
|
| + // Requested unmounting a device which is not unmountable.
|
| + return false;
|
| + }
|
|
|
| SendResponse(true);
|
| return true;
|
|
|