1 // Copyright (c) 2012 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 #ifndef CHROMEOS_DISKS_MOCK_DISK_MOUNT_MANAGER_H_ 6 #define CHROMEOS_DISKS_MOCK_DISK_MOUNT_MANAGER_H_ 7 8 #include <string> 9 10 #include "base/observer_list.h" 11 #include "chromeos/dbus/cros_disks_client.h" 12 #include "chromeos/disks/disk_mount_manager.h" 13 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gtest/include/gtest/gtest.h" 15 16 namespace chromeos { 17 namespace disks { 18 19 // TODO(tbarzic): Replace this mock with a fake implementation 20 // (http://crbug.com/355757) 21 class MockDiskMountManager : public DiskMountManager { 22 public: 23 MockDiskMountManager(); 24 virtual ~MockDiskMountManager(); 25 26 // DiskMountManager override. 27 MOCK_METHOD0(Init, void(void)); 28 MOCK_METHOD1(AddObserver, void(DiskMountManager::Observer*)); 29 MOCK_METHOD1(RemoveObserver, void(DiskMountManager::Observer*)); 30 MOCK_CONST_METHOD0(disks, const DiskMountManager::DiskMap&(void)); 31 MOCK_CONST_METHOD1(FindDiskBySourcePath, 32 const DiskMountManager::Disk*(const std::string&)); 33 MOCK_CONST_METHOD0(mount_points, 34 const DiskMountManager::MountPointMap&(void)); 35 MOCK_METHOD1(EnsureMountInfoRefreshed, 36 void(const EnsureMountInfoRefreshedCallback&)); 37 MOCK_METHOD4(MountPath, void(const std::string&, const std::string&, 38 const std::string&, MountType)); 39 MOCK_METHOD3(UnmountPath, void(const std::string&, 40 UnmountOptions, 41 const DiskMountManager::UnmountPathCallback&)); 42 MOCK_METHOD1(FormatMountedDevice, void(const std::string&)); 43 MOCK_METHOD2( 44 UnmountDeviceRecursively, 45 void(const std::string&, 46 const DiskMountManager::UnmountDeviceRecursivelyCallbackType&)); 47 48 // Invokes fake device insert events. 49 void NotifyDeviceInsertEvents(); 50 51 // Invokes fake device remove events. 52 void NotifyDeviceRemoveEvents(); 53 54 // Sets up default results for mock methods. 55 void SetupDefaultReplies(); 56 57 // Creates a fake disk entry for the mounted device. This function is 58 // primarily for StorageMonitorTest. 59 void CreateDiskEntryForMountDevice( 60 const DiskMountManager::MountPointInfo& mount_info, 61 const std::string& device_id, 62 const std::string& device_label, 63 const std::string& vendor_name, 64 const std::string& product_name, 65 DeviceType device_type, 66 uint64 total_size_in_bytes, 67 bool is_parent, 68 bool has_media, 69 bool on_boot_device, 70 bool on_removable_device); 71 72 // Removes the fake disk entry associated with the mounted device. This 73 // function is primarily for StorageMonitorTest. 74 void RemoveDiskEntryForMountDevice( 75 const DiskMountManager::MountPointInfo& mount_info); 76 77 private: 78 // Is used to implement AddObserver. 79 void AddObserverInternal(DiskMountManager::Observer* observer); 80 81 // Is used to implement RemoveObserver. 82 void RemoveObserverInternal(DiskMountManager::Observer* observer); 83 84 // Is used to implement disks. disksInternal()85 const DiskMountManager::DiskMap& disksInternal() const { return disks_; } 86 87 const DiskMountManager::MountPointMap& mountPointsInternal() const; 88 89 // Returns Disk object associated with the |source_path| or NULL on failure. 90 const DiskMountManager::Disk* FindDiskBySourcePathInternal( 91 const std::string& source_path) const; 92 93 // Is used to implement EnsureMountInfoRefreshed. 94 void EnsureMountInfoRefreshedInternal( 95 const EnsureMountInfoRefreshedCallback& callback); 96 97 // Notifies observers about device status update. 98 void NotifyDeviceChanged(DeviceEvent event, 99 const std::string& path); 100 101 // Notifies observers about disk status update. 102 void NotifyDiskChanged(DiskEvent event, 103 const DiskMountManager::Disk* disk); 104 105 // The list of observers. 106 ObserverList<DiskMountManager::Observer> observers_; 107 108 // The list of disks found. 109 DiskMountManager::DiskMap disks_; 110 111 // The list of existing mount points. 112 DiskMountManager::MountPointMap mount_points_; 113 114 DISALLOW_COPY_AND_ASSIGN(MockDiskMountManager); 115 }; 116 117 } // namespace disks 118 } // namespace chromeos 119 120 #endif // CHROMEOS_DISKS_MOCK_DISK_MOUNT_MANAGER_H_ 121