| Index: chromeos/dbus/cros_disks_client.cc
|
| diff --git a/chromeos/dbus/cros_disks_client.cc b/chromeos/dbus/cros_disks_client.cc
|
| index c8ac903367ada30e6c218cf4130508b3ddd5e3df..4c302c283b80b1ab003de1fdca7cebe4a201d9a5 100644
|
| --- a/chromeos/dbus/cros_disks_client.cc
|
| +++ b/chromeos/dbus/cros_disks_client.cc
|
| @@ -415,13 +415,6 @@ class CrosDisksClientStubImpl : public CrosDisksClient {
|
| MountType type,
|
| const MountCallback& callback,
|
| const ErrorCallback& error_callback) OVERRIDE {
|
| - // Already mounted path.
|
| - if (mounted_paths_.count(source_path) != 0) {
|
| - FinishMount(MOUNT_ERROR_PATH_ALREADY_MOUNTED, source_path, type,
|
| - std::string(), callback);
|
| - return;
|
| - }
|
| -
|
| // This stub implementation only accepts archive mount requests.
|
| if (type != MOUNT_TYPE_ARCHIVE) {
|
| FinishMount(MOUNT_ERROR_INTERNAL, source_path, type, std::string(),
|
| @@ -432,6 +425,13 @@ class CrosDisksClientStubImpl : public CrosDisksClient {
|
| const base::FilePath mounted_path = GetArchiveMountPoint().Append(
|
| base::FilePath::FromUTF8Unsafe(mount_label));
|
|
|
| + // Already mounted path.
|
| + if (mounted_to_source_path_map_.count(mounted_path.value()) != 0) {
|
| + FinishMount(MOUNT_ERROR_PATH_ALREADY_MOUNTED, source_path, type,
|
| + std::string(), callback);
|
| + return;
|
| + }
|
| +
|
| // Perform fake mount.
|
| base::PostTaskAndReplyWithResult(
|
| base::WorkerPool::GetTaskRunner(true /* task_is_slow */),
|
| @@ -452,25 +452,22 @@ class CrosDisksClientStubImpl : public CrosDisksClient {
|
| const UnmountCallback& callback,
|
| const UnmountCallback& error_callback) OVERRIDE {
|
| // Not mounted.
|
| - if (mounted_paths_.count(device_path) == 0) {
|
| + if (mounted_to_source_path_map_.count(device_path) == 0) {
|
| base::MessageLoopProxy::current()->PostTask(
|
| FROM_HERE, base::Bind(error_callback, device_path));
|
| return;
|
| }
|
|
|
| - const base::FilePath mounted_path = mounted_paths_[device_path];
|
| - mounted_paths_.erase(device_path);
|
| + mounted_to_source_path_map_.erase(device_path);
|
|
|
| // Remove the directory created in Mount().
|
| - base::WorkerPool::PostTask(
|
| + base::WorkerPool::PostTaskAndReply(
|
| FROM_HERE,
|
| base::Bind(base::IgnoreResult(&file_util::Delete),
|
| - mounted_path,
|
| + base::FilePath::FromUTF8Unsafe(device_path),
|
| true /* recursive */),
|
| + base::Bind(callback, device_path),
|
| true /* task_is_slow */);
|
| -
|
| - base::MessageLoopProxy::current()->PostTask(
|
| - FROM_HERE, base::Bind(callback, device_path));
|
| }
|
|
|
| virtual void EnumerateAutoMountableDevices(
|
| @@ -543,7 +540,7 @@ class CrosDisksClientStubImpl : public CrosDisksClient {
|
| FinishMount(mount_error, source_path, type, std::string(), callback);
|
| return;
|
| }
|
| - mounted_paths_[source_path] = mounted_path;
|
| + mounted_to_source_path_map_[mounted_path.value()] = source_path;
|
| FinishMount(MOUNT_ERROR_NONE, source_path, type,
|
| mounted_path.AsUTF8Unsafe(), callback);
|
| }
|
| @@ -564,8 +561,8 @@ class CrosDisksClientStubImpl : public CrosDisksClient {
|
| }
|
| }
|
|
|
| - // Source path to mounted path map.
|
| - std::map<std::string, base::FilePath> mounted_paths_;
|
| + // Mounted path to source path map.
|
| + std::map<std::string, std::string> mounted_to_source_path_map_;
|
|
|
| MountEventHandler mount_event_handler_;
|
| MountCompletedHandler mount_completed_handler_;
|
|
|