blob: e5693d1d9c42b53d7b273a8c6161c05061d27959 [file] [log] [blame]
[email protected]b9f22d12012-04-25 21:46:481// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]4ae73292011-11-15 05:20:182// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]4cbead42012-08-26 12:02:395#ifndef CHROMEOS_DISKS_MOCK_DISK_MOUNT_MANAGER_H_
6#define CHROMEOS_DISKS_MOCK_DISK_MOUNT_MANAGER_H_
[email protected]4ae73292011-11-15 05:20:187
8#include <string>
9
10#include "base/observer_list.h"
[email protected]dee4c092012-11-15 02:53:2111#include "chromeos/dbus/cros_disks_client.h"
[email protected]4cbead42012-08-26 12:02:3912#include "chromeos/disks/disk_mount_manager.h"
[email protected]4ae73292011-11-15 05:20:1813#include "testing/gmock/include/gmock/gmock.h"
14#include "testing/gtest/include/gtest/gtest.h"
15
16namespace chromeos {
17namespace disks {
18
[email protected]6b091d972014-03-30 18:21:1219// TODO(tbarzic): Replace this mock with a fake implementation
20// (http://crbug.com/355757)
[email protected]4ae73292011-11-15 05:20:1821class 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));
[email protected]bcfa0072012-08-07 01:08:5731 MOCK_CONST_METHOD1(FindDiskBySourcePath,
32 const DiskMountManager::Disk*(const std::string&));
[email protected]4ae73292011-11-15 05:20:1833 MOCK_CONST_METHOD0(mount_points,
34 const DiskMountManager::MountPointMap&(void));
hironoa4b675d2015-07-29 01:13:3735 MOCK_METHOD2(EnsureMountInfoRefreshed,
36 void(const EnsureMountInfoRefreshedCallback&, bool));
[email protected]dcad8fc2012-04-30 23:31:3337 MOCK_METHOD4(MountPath, void(const std::string&, const std::string&,
38 const std::string&, MountType));
[email protected]8f919ee2013-03-14 19:53:2939 MOCK_METHOD3(UnmountPath, void(const std::string&,
40 UnmountOptions,
41 const DiskMountManager::UnmountPathCallback&));
[email protected]4ae73292011-11-15 05:20:1842 MOCK_METHOD1(FormatMountedDevice, void(const std::string&));
[email protected]e008d4fa2013-02-21 06:38:0143 MOCK_METHOD2(
44 UnmountDeviceRecursively,
45 void(const std::string&,
46 const DiskMountManager::UnmountDeviceRecursivelyCallbackType&));
[email protected]4ae73292011-11-15 05:20:1847
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
[email protected]9c5620d32012-07-31 01:00:3857 // Creates a fake disk entry for the mounted device. This function is
[email protected]5cfc09422013-03-04 23:48:4258 // primarily for StorageMonitorTest.
[email protected]9c5620d32012-07-31 01:00:3859 void CreateDiskEntryForMountDevice(
60 const DiskMountManager::MountPointInfo& mount_info,
[email protected]48faf412012-09-17 07:41:4361 const std::string& device_id,
[email protected]dee4c092012-11-15 02:53:2162 const std::string& device_label,
63 const std::string& vendor_name,
64 const std::string& product_name,
65 DeviceType device_type,
[email protected]6b091d972014-03-30 18:21:1266 uint64 total_size_in_bytes,
67 bool is_parent,
68 bool has_media,
[email protected]79ed457b2014-07-22 04:07:2669 bool on_boot_device,
70 bool on_removable_device);
[email protected]9c5620d32012-07-31 01:00:3871
72 // Removes the fake disk entry associated with the mounted device. This
[email protected]5cfc09422013-03-04 23:48:4273 // function is primarily for StorageMonitorTest.
[email protected]9c5620d32012-07-31 01:00:3874 void RemoveDiskEntryForMountDevice(
75 const DiskMountManager::MountPointInfo& mount_info);
76
[email protected]4ae73292011-11-15 05:20:1877 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.
85 const DiskMountManager::DiskMap& disksInternal() const { return disks_; }
86
[email protected]cd66eab2012-08-03 21:55:3787 const DiskMountManager::MountPointMap& mountPointsInternal() const;
88
[email protected]bcfa0072012-08-07 01:08:5789 // 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
[email protected]a2e4ee22014-07-11 05:16:3593 // Is used to implement EnsureMountInfoRefreshed.
94 void EnsureMountInfoRefreshedInternal(
hironoa4b675d2015-07-29 01:13:3795 const EnsureMountInfoRefreshedCallback& callback,
96 bool force);
[email protected]a2e4ee22014-07-11 05:16:3597
[email protected]4ae73292011-11-15 05:20:1898 // Notifies observers about device status update.
[email protected]e3c1fc92012-11-15 00:56:4699 void NotifyDeviceChanged(DeviceEvent event,
[email protected]4ae73292011-11-15 05:20:18100 const std::string& path);
101
102 // Notifies observers about disk status update.
[email protected]e3c1fc92012-11-15 00:56:46103 void NotifyDiskChanged(DiskEvent event,
[email protected]4ae73292011-11-15 05:20:18104 const DiskMountManager::Disk* disk);
105
106 // The list of observers.
brettw236d3172015-06-03 16:31:43107 base::ObserverList<DiskMountManager::Observer> observers_;
[email protected]4ae73292011-11-15 05:20:18108
109 // The list of disks found.
110 DiskMountManager::DiskMap disks_;
111
[email protected]cd66eab2012-08-03 21:55:37112 // The list of existing mount points.
113 DiskMountManager::MountPointMap mount_points_;
114
[email protected]4ae73292011-11-15 05:20:18115 DISALLOW_COPY_AND_ASSIGN(MockDiskMountManager);
116};
117
118} // namespace disks
119} // namespace chromeos
120
[email protected]4cbead42012-08-26 12:02:39121#endif // CHROMEOS_DISKS_MOCK_DISK_MOUNT_MANAGER_H_