Home | History | Annotate | Download | only in disks
      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 class MockDiskMountManager : public DiskMountManager {
     20  public:
     21   MockDiskMountManager();
     22   virtual ~MockDiskMountManager();
     23 
     24   // DiskMountManager override.
     25   MOCK_METHOD0(Init, void(void));
     26   MOCK_METHOD1(AddObserver, void(DiskMountManager::Observer*));
     27   MOCK_METHOD1(RemoveObserver, void(DiskMountManager::Observer*));
     28   MOCK_CONST_METHOD0(disks, const DiskMountManager::DiskMap&(void));
     29   MOCK_CONST_METHOD1(FindDiskBySourcePath,
     30                      const DiskMountManager::Disk*(const std::string&));
     31   MOCK_CONST_METHOD0(mount_points,
     32                      const DiskMountManager::MountPointMap&(void));
     33   MOCK_METHOD0(RequestMountInfoRefresh, void(void));
     34   MOCK_METHOD4(MountPath, void(const std::string&, const std::string&,
     35                                const std::string&, MountType));
     36   MOCK_METHOD3(UnmountPath, void(const std::string&,
     37                                  UnmountOptions,
     38                                  const DiskMountManager::UnmountPathCallback&));
     39   MOCK_METHOD1(FormatMountedDevice, void(const std::string&));
     40   MOCK_METHOD2(
     41       UnmountDeviceRecursively,
     42       void(const std::string&,
     43            const DiskMountManager::UnmountDeviceRecursivelyCallbackType&));
     44 
     45   // Invokes fake device insert events.
     46   void NotifyDeviceInsertEvents();
     47 
     48   // Invokes fake device remove events.
     49   void NotifyDeviceRemoveEvents();
     50 
     51   // Sets up default results for mock methods.
     52   void SetupDefaultReplies();
     53 
     54   // Creates a fake disk entry for the mounted device. This function is
     55   // primarily for StorageMonitorTest.
     56   void CreateDiskEntryForMountDevice(
     57       const DiskMountManager::MountPointInfo& mount_info,
     58       const std::string& device_id,
     59       const std::string& device_label,
     60       const std::string& vendor_name,
     61       const std::string& product_name,
     62       DeviceType device_type,
     63       uint64 total_size_in_bytes);
     64 
     65   // Removes the fake disk entry associated with the mounted device. This
     66   // function is primarily for StorageMonitorTest.
     67   void RemoveDiskEntryForMountDevice(
     68       const DiskMountManager::MountPointInfo& mount_info);
     69 
     70  private:
     71   // Is used to implement AddObserver.
     72   void AddObserverInternal(DiskMountManager::Observer* observer);
     73 
     74   // Is used to implement RemoveObserver.
     75   void RemoveObserverInternal(DiskMountManager::Observer* observer);
     76 
     77   // Is used to implement disks.
     78   const DiskMountManager::DiskMap& disksInternal() const { return disks_; }
     79 
     80   const DiskMountManager::MountPointMap& mountPointsInternal() const;
     81 
     82   // Returns Disk object associated with the |source_path| or NULL on failure.
     83   const DiskMountManager::Disk* FindDiskBySourcePathInternal(
     84       const std::string& source_path) const;
     85 
     86   // Notifies observers about device status update.
     87   void NotifyDeviceChanged(DeviceEvent event,
     88                            const std::string& path);
     89 
     90   // Notifies observers about disk status update.
     91   void NotifyDiskChanged(DiskEvent event,
     92                          const DiskMountManager::Disk* disk);
     93 
     94   // The list of observers.
     95   ObserverList<DiskMountManager::Observer> observers_;
     96 
     97   // The list of disks found.
     98   DiskMountManager::DiskMap disks_;
     99 
    100   // The list of existing mount points.
    101   DiskMountManager::MountPointMap mount_points_;
    102 
    103   DISALLOW_COPY_AND_ASSIGN(MockDiskMountManager);
    104 };
    105 
    106 }  // namespace disks
    107 }  // namespace chromeos
    108 
    109 #endif  // CHROMEOS_DISKS_MOCK_DISK_MOUNT_MANAGER_H_
    110