1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/chromeos/file_manager/fake_disk_mount_manager.h" 6 7 #include "base/callback.h" 8 #include "base/stl_util.h" 9 10 namespace file_manager { 11 12 FakeDiskMountManager::MountRequest::MountRequest( 13 const std::string& source_path, 14 const std::string& source_format, 15 const std::string& mount_label, 16 chromeos::MountType type) 17 : source_path(source_path), 18 source_format(source_format), 19 mount_label(mount_label), 20 type(type) { 21 } 22 23 FakeDiskMountManager::UnmountRequest::UnmountRequest( 24 const std::string& mount_path, 25 chromeos::UnmountOptions options) 26 : mount_path(mount_path), 27 options(options) { 28 } 29 30 FakeDiskMountManager::FakeDiskMountManager() { 31 } 32 33 FakeDiskMountManager::~FakeDiskMountManager() { 34 STLDeleteValues(&disks_); 35 } 36 37 void FakeDiskMountManager::AddObserver(Observer* observer) { 38 DCHECK(observer); 39 observers_.AddObserver(observer); 40 } 41 42 void FakeDiskMountManager::RemoveObserver(Observer* observer) { 43 DCHECK(observer); 44 observers_.RemoveObserver(observer); 45 } 46 47 const chromeos::disks::DiskMountManager::DiskMap& 48 FakeDiskMountManager::disks() const { 49 return disks_; 50 } 51 52 const chromeos::disks::DiskMountManager::Disk* 53 FakeDiskMountManager::FindDiskBySourcePath( 54 const std::string& source_path) const { 55 DiskMap::const_iterator iter = disks_.find(source_path); 56 if (iter == disks_.end()) 57 return NULL; 58 return iter->second; 59 } 60 61 const chromeos::disks::DiskMountManager::MountPointMap& 62 FakeDiskMountManager::mount_points() const { 63 return mount_points_; 64 } 65 66 void FakeDiskMountManager::EnsureMountInfoRefreshed( 67 const EnsureMountInfoRefreshedCallback& callback) { 68 callback.Run(true); 69 } 70 71 void FakeDiskMountManager::MountPath(const std::string& source_path, 72 const std::string& source_format, 73 const std::string& mount_label, 74 chromeos::MountType type) { 75 mount_requests_.push_back( 76 MountRequest(source_path, source_format, mount_label, type)); 77 78 const MountPointInfo mount_point( 79 source_path, 80 source_path, 81 type, 82 chromeos::disks::MOUNT_CONDITION_NONE); 83 mount_points_.insert(make_pair(source_path, mount_point)); 84 FOR_EACH_OBSERVER(DiskMountManager::Observer, observers_, 85 OnMountEvent(DiskMountManager::MOUNTING, 86 chromeos::MOUNT_ERROR_NONE, 87 mount_point)); 88 } 89 90 void FakeDiskMountManager::UnmountPath(const std::string& mount_path, 91 chromeos::UnmountOptions options, 92 const UnmountPathCallback& callback) { 93 unmount_requests_.push_back(UnmountRequest(mount_path, options)); 94 95 MountPointMap::iterator iter = mount_points_.find(mount_path); 96 if (iter == mount_points_.end()) 97 return; 98 const MountPointInfo mount_point = iter->second; 99 mount_points_.erase(iter); 100 FOR_EACH_OBSERVER(DiskMountManager::Observer, observers_, 101 OnMountEvent(DiskMountManager::UNMOUNTING, 102 chromeos::MOUNT_ERROR_NONE, 103 mount_point)); 104 // Currently |callback| is just ignored. 105 } 106 107 void FakeDiskMountManager::FormatMountedDevice(const std::string& mount_path) { 108 } 109 110 void FakeDiskMountManager::UnmountDeviceRecursively( 111 const std::string& device_path, 112 const UnmountDeviceRecursivelyCallbackType& callback) { 113 } 114 115 bool FakeDiskMountManager::AddDiskForTest(Disk* disk) { 116 DCHECK(disk); 117 return disks_.insert(make_pair(disk->device_path(), disk)).second; 118 } 119 120 bool FakeDiskMountManager::AddMountPointForTest( 121 const MountPointInfo& mount_point) { 122 return false; 123 } 124 125 void FakeDiskMountManager::InvokeDiskEventForTest( 126 chromeos::disks::DiskMountManager::DiskEvent event, 127 const chromeos::disks::DiskMountManager::Disk* disk) { 128 FOR_EACH_OBSERVER(chromeos::disks::DiskMountManager::Observer, 129 observers_, 130 OnDiskEvent(event, disk)); 131 } 132 133 } // namespace file_manager 134