Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6126)

Unified Diff: chrome/browser/storage_monitor/storage_monitor_chromeos_unittest.cc

Issue 12596010: Eject support for ChromeOS (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Tweaks Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/storage_monitor/storage_monitor_chromeos_unittest.cc
diff --git a/chrome/browser/storage_monitor/storage_monitor_chromeos_unittest.cc b/chrome/browser/storage_monitor/storage_monitor_chromeos_unittest.cc
index d82854a7ffd212bd6aa2ec33599cb29b927a6aad..622bc20479e0cce4f59cb464d7e0965e0eacf7b3 100644
--- a/chrome/browser/storage_monitor/storage_monitor_chromeos_unittest.cc
+++ b/chrome/browser/storage_monitor/storage_monitor_chromeos_unittest.cc
@@ -62,6 +62,8 @@ class StorageMonitorCrosTest : public testing::Test {
StorageMonitorCrosTest();
virtual ~StorageMonitorCrosTest();
+ void EjectNotify(chrome::StorageMonitor::EjectStatus status);
+
protected:
// testing::Test:
virtual void SetUp() OVERRIDE;
@@ -95,9 +97,16 @@ class StorageMonitorCrosTest : public testing::Test {
return *mock_storage_observer_;
}
- private:
- // The message loops and threads to run tests on.
MessageLoop ui_loop_;
+
+ scoped_refptr<StorageMonitorCros> monitor_;
+
+ // Owned by DiskMountManager.
+ disks::MockDiskMountManager* disk_mount_manager_mock_;
+
+ chrome::StorageMonitor::EjectStatus status_;
+
+ private:
content::TestBrowserThread ui_thread_;
content::TestBrowserThread file_thread_;
@@ -106,16 +115,14 @@ class StorageMonitorCrosTest : public testing::Test {
// Objects that talks with StorageMonitorCros.
scoped_ptr<chrome::MockRemovableStorageObserver> mock_storage_observer_;
- // Owned by DiskMountManager.
- disks::MockDiskMountManager* disk_mount_manager_mock_;
-
- scoped_refptr<StorageMonitorCros> monitor_;
DISALLOW_COPY_AND_ASSIGN(StorageMonitorCrosTest);
};
StorageMonitorCrosTest::StorageMonitorCrosTest()
- : ui_thread_(BrowserThread::UI, &ui_loop_),
+ : disk_mount_manager_mock_(NULL),
+ status_(chrome::StorageMonitor::EJECT_FAILURE),
+ ui_thread_(BrowserThread::UI, &ui_loop_),
file_thread_(BrowserThread::FILE) {
}
@@ -205,6 +212,11 @@ void StorageMonitorCrosTest::WaitForFileThread() {
MessageLoop::current()->Run();
}
+void StorageMonitorCrosTest::EjectNotify(
+ chrome::StorageMonitor::EjectStatus status) {
+ status_ = status;
+}
+
// Simple test case where we attach and detach a media device.
TEST_F(StorageMonitorCrosTest, BasicAttachDetach) {
base::FilePath mount_path1 = CreateMountPoint(kMountPointA, true);
@@ -391,6 +403,36 @@ TEST_F(StorageMonitorCrosTest, GetStorageSize) {
EXPECT_EQ(GetDCIMDeviceId(kUniqueId1), observer().last_detached().device_id);
}
+void UnmountFake(const std::string& location,
+ UnmountOptions options,
+ const DiskMountManager::UnmountPathCallback& cb) {
+ cb.Run(chromeos::MOUNT_ERROR_NONE);
+}
+
+TEST_F(StorageMonitorCrosTest, EjectTest) {
+ base::FilePath mount_path1 = CreateMountPoint(kMountPointA, true);
+ ASSERT_FALSE(mount_path1.empty());
+ DiskMountManager::MountPointInfo mount_info(kEmptyDeviceLabel,
+ mount_path1.value(),
+ MOUNT_TYPE_DEVICE,
+ disks::MOUNT_CONDITION_NONE);
+ MountDevice(MOUNT_ERROR_NONE, mount_info, kUniqueId1, kEmptyDeviceLabel,
+ kVendorName, kProductName, DEVICE_TYPE_USB, kDevice1SizeInBytes);
+ EXPECT_EQ(1, observer().attach_calls());
+ EXPECT_EQ(0, observer().detach_calls());
+
+ ON_CALL(*disk_mount_manager_mock_, UnmountPath(_, _, _))
+ .WillByDefault(testing::Invoke(&UnmountFake));
+ EXPECT_CALL(*disk_mount_manager_mock_,
+ UnmountPath(observer().last_attached().location, _, _));
+ monitor_->EjectDevice(observer().last_attached().device_id,
+ base::Bind(&StorageMonitorCrosTest::EjectNotify,
+ base::Unretained(this)));
+ ui_loop_.RunUntilIdle();
+
+ EXPECT_EQ(chrome::StorageMonitor::EJECT_OK, status_);
+}
+
} // namespace
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698