Chromium Code Reviews| Index: chrome/browser/chromeos/mock_disk_mount_manager.cc |
| diff --git a/chrome/browser/chromeos/mock_disk_mount_manager.cc b/chrome/browser/chromeos/mock_disk_mount_manager.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..98b8aec2e8d11c4883a59f970761c2dab867cdd5 |
| --- /dev/null |
| +++ b/chrome/browser/chromeos/mock_disk_mount_manager.cc |
| @@ -0,0 +1,171 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/chromeos/mock_disk_mount_manager.h" |
| + |
| +#include "base/message_loop.h" |
| +#include "base/string_util.h" |
| +#include "content/public/browser/browser_thread.h" |
| + |
| +using content::BrowserThread; |
| +using testing::_; |
| +using testing::AnyNumber; |
| +using testing::Invoke; |
| +using testing::ReturnRef; |
| + |
| +namespace chromeos { |
| + |
| +namespace { |
| + |
| +const char* kTestSystemPath = "/this/system/path"; |
| +const char* kTestSystemPathPrefix = "/this/system"; |
| +const char* kTestDevicePath = "/this/device/path"; |
| +const char* kTestMountPath = "/media/foofoo"; |
| +const char* kTestFilePath = "/this/file/path"; |
| +const char* kTestDeviceLabel = "A label"; |
| +const char* kTestDriveLabel = "Another label"; |
| +const char* kTestParentPath = "/this/is/my/parent"; |
| + |
| +} // namespace |
| + |
| +void MockDiskMountManager::AddObserverInternal( |
| + DiskMountManager::Observer* observer) { |
| + observers_.AddObserver(observer); |
| +} |
| + |
| +void MockDiskMountManager::RemoveObserverInternal( |
| + DiskMountManager::Observer* observer) { |
| + observers_.RemoveObserver(observer); |
| +} |
| + |
| +MockDiskMountManager::MockDiskMountManager() { |
| + ON_CALL(*this, AddObserver(_)) |
| + .WillByDefault(Invoke(this, &MockDiskMountManager::AddObserverInternal)); |
| + ON_CALL(*this, RemoveObserver(_)) |
| + .WillByDefault(Invoke(this, |
| + &MockDiskMountManager::RemoveObserverInternal)); |
| + ON_CALL(*this, disks()) |
| + .WillByDefault(Invoke(this, &MockDiskMountManager::disksInternal)); |
| +} |
| + |
| +MockDiskMountManager::~MockDiskMountManager() { |
| +} |
| + |
| +void MockDiskMountManager::FireDeviceInsertEvents() { |
| + scoped_ptr<DiskMountManager::Disk> disk1(new DiskMountManager::Disk( |
| + std::string(kTestDevicePath), |
| + std::string(), |
| + std::string(kTestSystemPath), |
| + std::string(kTestFilePath), |
| + std::string(), |
| + std::string(kTestDriveLabel), |
| + std::string(kTestParentPath), |
| + std::string(kTestSystemPathPrefix), |
| + FLASH, |
| + 4294967295U, |
| + false, |
| + false, |
| + true, |
| + false, |
| + false)); |
|
satorux1
2011/11/11 00:43:55
The booleans are unreadable. Would be nice to add
hashimoto
2011/11/11 08:00:53
Done.
|
| + |
| + disks_.clear(); |
| + disks_.insert(std::pair<std::string, DiskMountManager::Disk*>( |
| + std::string(kTestDevicePath), disk1.get())); |
| + |
| + // Device Added |
| + chromeos::DiskMountManagerEventType evt; |
| + evt = chromeos::MOUNT_DEVICE_ADDED; |
| + UpdateDeviceChanged(evt, kTestSystemPath); |
| + |
| + // Disk Added |
| + evt = chromeos::MOUNT_DISK_ADDED; |
| + UpdateDiskChanged(evt, disk1.get()); |
| + |
| + // Disk Changed |
| + scoped_ptr<DiskMountManager::Disk> disk2(new DiskMountManager::Disk( |
| + std::string(kTestDevicePath), |
| + std::string(kTestMountPath), |
| + std::string(kTestSystemPath), |
| + std::string(kTestFilePath), |
| + std::string(kTestDeviceLabel), |
| + std::string(kTestDriveLabel), |
| + std::string(kTestParentPath), |
| + std::string(kTestSystemPathPrefix), |
| + FLASH, |
| + 1073741824, |
| + false, |
| + false, |
| + true, |
| + false, |
| + false)); |
|
satorux1
2011/11/11 00:43:55
ditto.
hashimoto
2011/11/11 08:00:53
Done.
|
| + disks_.clear(); |
| + disks_.insert(std::pair<std::string, DiskMountManager::Disk*>( |
| + std::string(kTestDevicePath), disk2.get())); |
| + evt = chromeos::MOUNT_DISK_CHANGED; |
| + UpdateDiskChanged(evt, disk2.get()); |
| +} |
| + |
| +void MockDiskMountManager::FireDeviceRemoveEvents() { |
| + scoped_ptr<DiskMountManager::Disk> disk(new DiskMountManager::Disk( |
| + std::string(kTestDevicePath), |
| + std::string(kTestMountPath), |
| + std::string(kTestSystemPath), |
| + std::string(kTestFilePath), |
| + std::string(kTestDeviceLabel), |
| + std::string(kTestDriveLabel), |
| + std::string(kTestParentPath), |
| + std::string(kTestSystemPathPrefix), |
| + FLASH, |
| + 1073741824, |
| + false, |
| + false, |
| + true, |
| + false, |
| + false)); |
| + disks_.clear(); |
| + disks_.insert(std::pair<std::string, DiskMountManager::Disk*>( |
| + std::string(kTestDevicePath), disk.get())); |
| + UpdateDiskChanged(chromeos::MOUNT_DISK_REMOVED, disk.get()); |
| +} |
| + |
| +void MockDiskMountManager::SetupDefaultReplies() { |
| + EXPECT_CALL(*this, AddObserver(_)) |
| + .Times(AnyNumber()); |
| + EXPECT_CALL(*this, RemoveObserver(_)) |
| + .Times(AnyNumber()); |
| + EXPECT_CALL(*this, disks()) |
| + .WillRepeatedly(ReturnRef(disks_)); |
| + EXPECT_CALL(*this, RequestMountInfoRefresh()) |
| + .Times(AnyNumber()); |
| + EXPECT_CALL(*this, MountPath(_, _)) |
| + .Times(AnyNumber()); |
| + EXPECT_CALL(*this, UnmountPath(_)) |
| + .Times(AnyNumber()); |
| + EXPECT_CALL(*this, FormatUnmountedDevice(_)) |
| + .Times(AnyNumber()); |
| + EXPECT_CALL(*this, FormatMountedDevice(_)) |
| + .Times(AnyNumber()); |
| + EXPECT_CALL(*this, UnmountDeviceRecursive(_, _, _)) |
| + .Times(AnyNumber()); |
| +} |
| + |
| +void MockDiskMountManager::UpdateDiskChanged(DiskMountManagerEventType evt, |
| + const DiskMountManager::Disk* disk) |
| +{ |
| + // Make sure we run on UI thread. |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + |
| + FOR_EACH_OBSERVER(Observer, observers_, DiskChanged(evt, disk)); |
| +} |
| + |
| +void MockDiskMountManager::UpdateDeviceChanged(DiskMountManagerEventType evt, |
| + const std::string& path) { |
| + // Make sure we run on UI thread. |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + |
| + FOR_EACH_OBSERVER(Observer, observers_, DeviceChanged(evt, path)); |
| +} |
| + |
| +} // namespace chromeos |