Upstream version 7.35.139.0
[platform/framework/web/crosswalk.git] / src / chromeos / disks / mock_disk_mount_manager.h
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_METHOD0(RequestMountInfoRefresh, void(void));
36   MOCK_METHOD4(MountPath, void(const std::string&, const std::string&,
37                                const std::string&, MountType));
38   MOCK_METHOD3(UnmountPath, void(const std::string&,
39                                  UnmountOptions,
40                                  const DiskMountManager::UnmountPathCallback&));
41   MOCK_METHOD1(FormatMountedDevice, void(const std::string&));
42   MOCK_METHOD2(
43       UnmountDeviceRecursively,
44       void(const std::string&,
45            const DiskMountManager::UnmountDeviceRecursivelyCallbackType&));
46
47   // Invokes fake device insert events.
48   void NotifyDeviceInsertEvents();
49
50   // Invokes fake device remove events.
51   void NotifyDeviceRemoveEvents();
52
53   // Sets up default results for mock methods.
54   void SetupDefaultReplies();
55
56   // Creates a fake disk entry for the mounted device. This function is
57   // primarily for StorageMonitorTest.
58   void CreateDiskEntryForMountDevice(
59       const DiskMountManager::MountPointInfo& mount_info,
60       const std::string& device_id,
61       const std::string& device_label,
62       const std::string& vendor_name,
63       const std::string& product_name,
64       DeviceType device_type,
65       uint64 total_size_in_bytes,
66       bool is_parent,
67       bool has_media,
68       bool on_boot_device);
69
70   // Removes the fake disk entry associated with the mounted device. This
71   // function is primarily for StorageMonitorTest.
72   void RemoveDiskEntryForMountDevice(
73       const DiskMountManager::MountPointInfo& mount_info);
74
75  private:
76   // Is used to implement AddObserver.
77   void AddObserverInternal(DiskMountManager::Observer* observer);
78
79   // Is used to implement RemoveObserver.
80   void RemoveObserverInternal(DiskMountManager::Observer* observer);
81
82   // Is used to implement disks.
83   const DiskMountManager::DiskMap& disksInternal() const { return disks_; }
84
85   const DiskMountManager::MountPointMap& mountPointsInternal() const;
86
87   // Returns Disk object associated with the |source_path| or NULL on failure.
88   const DiskMountManager::Disk* FindDiskBySourcePathInternal(
89       const std::string& source_path) const;
90
91   // Notifies observers about device status update.
92   void NotifyDeviceChanged(DeviceEvent event,
93                            const std::string& path);
94
95   // Notifies observers about disk status update.
96   void NotifyDiskChanged(DiskEvent event,
97                          const DiskMountManager::Disk* disk);
98
99   // The list of observers.
100   ObserverList<DiskMountManager::Observer> observers_;
101
102   // The list of disks found.
103   DiskMountManager::DiskMap disks_;
104
105   // The list of existing mount points.
106   DiskMountManager::MountPointMap mount_points_;
107
108   DISALLOW_COPY_AND_ASSIGN(MockDiskMountManager);
109 };
110
111 }  // namespace disks
112 }  // namespace chromeos
113
114 #endif  // CHROMEOS_DISKS_MOCK_DISK_MOUNT_MANAGER_H_