| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/extensions/file_manager/device_event_router.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/device_event_router.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| 11 #include "base/run_loop.h" | 11 #include "base/run_loop.h" |
| 12 #include "chrome/browser/chromeos/file_manager/volume_manager.h" | 12 #include "chrome/browser/chromeos/file_manager/volume_manager.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 14 |
| 15 namespace file_manager { | 15 namespace file_manager { |
| 16 namespace { | 16 namespace { |
| 17 | 17 |
| 18 namespace file_browser_private = extensions::api::file_browser_private; | 18 namespace file_manager_private = extensions::api::file_manager_private; |
| 19 typedef chromeos::disks::DiskMountManager::Disk Disk; | 19 typedef chromeos::disks::DiskMountManager::Disk Disk; |
| 20 | 20 |
| 21 const char kTestDevicePath[] = "/device/test"; | 21 const char kTestDevicePath[] = "/device/test"; |
| 22 | 22 |
| 23 struct DeviceEvent { | 23 struct DeviceEvent { |
| 24 extensions::api::file_browser_private::DeviceEventType type; | 24 extensions::api::file_manager_private::DeviceEventType type; |
| 25 std::string device_path; | 25 std::string device_path; |
| 26 }; | 26 }; |
| 27 | 27 |
| 28 // DeviceEventRouter implementation for testing. | 28 // DeviceEventRouter implementation for testing. |
| 29 class DeviceEventRouterImpl : public DeviceEventRouter { | 29 class DeviceEventRouterImpl : public DeviceEventRouter { |
| 30 public: | 30 public: |
| 31 DeviceEventRouterImpl() | 31 DeviceEventRouterImpl() |
| 32 : DeviceEventRouter(base::TimeDelta::FromSeconds(0)), | 32 : DeviceEventRouter(base::TimeDelta::FromSeconds(0)), |
| 33 external_storage_disabled(false) {} | 33 external_storage_disabled(false) {} |
| 34 virtual ~DeviceEventRouterImpl() {} | 34 virtual ~DeviceEventRouterImpl() {} |
| 35 | 35 |
| 36 // DeviceEventRouter overrides. | 36 // DeviceEventRouter overrides. |
| 37 virtual void OnDeviceEvent(file_browser_private::DeviceEventType type, | 37 virtual void OnDeviceEvent(file_manager_private::DeviceEventType type, |
| 38 const std::string& device_path) OVERRIDE { | 38 const std::string& device_path) OVERRIDE { |
| 39 DeviceEvent event; | 39 DeviceEvent event; |
| 40 event.type = type; | 40 event.type = type; |
| 41 event.device_path = device_path; | 41 event.device_path = device_path; |
| 42 events.push_back(event); | 42 events.push_back(event); |
| 43 } | 43 } |
| 44 | 44 |
| 45 // DeviceEventRouter overrides. | 45 // DeviceEventRouter overrides. |
| 46 virtual bool IsExternalStorageDisabled() OVERRIDE { | 46 virtual bool IsExternalStorageDisabled() OVERRIDE { |
| 47 return external_storage_disabled; | 47 return external_storage_disabled; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 const VolumeInfo volumeInfo = | 112 const VolumeInfo volumeInfo = |
| 113 CreateTestVolumeInfo("/device/test", "/mount/path1"); | 113 CreateTestVolumeInfo("/device/test", "/mount/path1"); |
| 114 device_event_router->OnDeviceAdded("/device/test"); | 114 device_event_router->OnDeviceAdded("/device/test"); |
| 115 device_event_router->OnDiskAdded(disk1, true); | 115 device_event_router->OnDiskAdded(disk1, true); |
| 116 device_event_router->OnVolumeMounted(chromeos::MOUNT_ERROR_NONE, volumeInfo); | 116 device_event_router->OnVolumeMounted(chromeos::MOUNT_ERROR_NONE, volumeInfo); |
| 117 device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE, | 117 device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE, |
| 118 volumeInfo); | 118 volumeInfo); |
| 119 device_event_router->OnDiskRemoved(disk1_unmounted); | 119 device_event_router->OnDiskRemoved(disk1_unmounted); |
| 120 device_event_router->OnDeviceRemoved("/device/test"); | 120 device_event_router->OnDeviceRemoved("/device/test"); |
| 121 ASSERT_EQ(1u, device_event_router->events.size()); | 121 ASSERT_EQ(1u, device_event_router->events.size()); |
| 122 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED, | 122 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, |
| 123 device_event_router->events[0].type); | 123 device_event_router->events[0].type); |
| 124 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | 124 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); |
| 125 } | 125 } |
| 126 | 126 |
| 127 TEST_F(DeviceEventRouterTest, DeviceScan) { | 127 TEST_F(DeviceEventRouterTest, DeviceScan) { |
| 128 const Disk disk = CreateTestDisk("/device/test", "/mount/path1"); | 128 const Disk disk = CreateTestDisk("/device/test", "/mount/path1"); |
| 129 const Disk disk_unmounted = CreateTestDisk("/device/test", ""); | 129 const Disk disk_unmounted = CreateTestDisk("/device/test", ""); |
| 130 const VolumeInfo volumeInfo = | 130 const VolumeInfo volumeInfo = |
| 131 CreateTestVolumeInfo("/device/test", "/mount/path1"); | 131 CreateTestVolumeInfo("/device/test", "/mount/path1"); |
| 132 device_event_router->OnDeviceAdded("/device/test"); | 132 device_event_router->OnDeviceAdded("/device/test"); |
| 133 base::RunLoop().RunUntilIdle(); | 133 base::RunLoop().RunUntilIdle(); |
| 134 device_event_router->OnDiskAdded(disk, true); | 134 device_event_router->OnDiskAdded(disk, true); |
| 135 device_event_router->OnVolumeMounted(chromeos::MOUNT_ERROR_NONE, volumeInfo); | 135 device_event_router->OnVolumeMounted(chromeos::MOUNT_ERROR_NONE, volumeInfo); |
| 136 device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE, | 136 device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE, |
| 137 volumeInfo); | 137 volumeInfo); |
| 138 device_event_router->OnDiskRemoved(disk_unmounted); | 138 device_event_router->OnDiskRemoved(disk_unmounted); |
| 139 device_event_router->OnDeviceRemoved("/device/test"); | 139 device_event_router->OnDeviceRemoved("/device/test"); |
| 140 ASSERT_EQ(2u, device_event_router->events.size()); | 140 ASSERT_EQ(2u, device_event_router->events.size()); |
| 141 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_SCAN_STARTED, | 141 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_SCAN_STARTED, |
| 142 device_event_router->events[0].type); | 142 device_event_router->events[0].type); |
| 143 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | 143 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); |
| 144 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED, | 144 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, |
| 145 device_event_router->events[1].type); | 145 device_event_router->events[1].type); |
| 146 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); | 146 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); |
| 147 } | 147 } |
| 148 | 148 |
| 149 TEST_F(DeviceEventRouterTest, DeviceScanCancelled) { | 149 TEST_F(DeviceEventRouterTest, DeviceScanCancelled) { |
| 150 const Disk disk = CreateTestDisk("/device/test", "/mount/path1"); | 150 const Disk disk = CreateTestDisk("/device/test", "/mount/path1"); |
| 151 const Disk disk_unmounted = CreateTestDisk("/device/test", ""); | 151 const Disk disk_unmounted = CreateTestDisk("/device/test", ""); |
| 152 const VolumeInfo volumeInfo = | 152 const VolumeInfo volumeInfo = |
| 153 CreateTestVolumeInfo("/device/test", "/mount/path1"); | 153 CreateTestVolumeInfo("/device/test", "/mount/path1"); |
| 154 device_event_router->OnDeviceAdded("/device/test"); | 154 device_event_router->OnDeviceAdded("/device/test"); |
| 155 base::RunLoop().RunUntilIdle(); | 155 base::RunLoop().RunUntilIdle(); |
| 156 device_event_router->OnDiskAdded(disk, false); | 156 device_event_router->OnDiskAdded(disk, false); |
| 157 device_event_router->OnDiskRemoved(disk_unmounted); | 157 device_event_router->OnDiskRemoved(disk_unmounted); |
| 158 device_event_router->OnDeviceRemoved("/device/test"); | 158 device_event_router->OnDeviceRemoved("/device/test"); |
| 159 ASSERT_EQ(3u, device_event_router->events.size()); | 159 ASSERT_EQ(3u, device_event_router->events.size()); |
| 160 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_SCAN_STARTED, | 160 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_SCAN_STARTED, |
| 161 device_event_router->events[0].type); | 161 device_event_router->events[0].type); |
| 162 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | 162 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); |
| 163 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_SCAN_CANCELLED, | 163 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_SCAN_CANCELLED, |
| 164 device_event_router->events[1].type); | 164 device_event_router->events[1].type); |
| 165 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); | 165 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); |
| 166 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED, | 166 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, |
| 167 device_event_router->events[2].type); | 167 device_event_router->events[2].type); |
| 168 EXPECT_EQ("/device/test", device_event_router->events[2].device_path); | 168 EXPECT_EQ("/device/test", device_event_router->events[2].device_path); |
| 169 } | 169 } |
| 170 | 170 |
| 171 TEST_F(DeviceEventRouterTest, HardUnplugged) { | 171 TEST_F(DeviceEventRouterTest, HardUnplugged) { |
| 172 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1"); | 172 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1"); |
| 173 const Disk disk2 = CreateTestDisk("/device/test", "/mount/path2"); | 173 const Disk disk2 = CreateTestDisk("/device/test", "/mount/path2"); |
| 174 device_event_router->OnDeviceAdded("/device/test"); | 174 device_event_router->OnDeviceAdded("/device/test"); |
| 175 device_event_router->OnDiskAdded(disk1, true); | 175 device_event_router->OnDiskAdded(disk1, true); |
| 176 device_event_router->OnDiskAdded(disk2, true); | 176 device_event_router->OnDiskAdded(disk2, true); |
| 177 device_event_router->OnDiskRemoved(disk1); | 177 device_event_router->OnDiskRemoved(disk1); |
| 178 device_event_router->OnDiskRemoved(disk2); | 178 device_event_router->OnDiskRemoved(disk2); |
| 179 device_event_router->OnDeviceRemoved(kTestDevicePath); | 179 device_event_router->OnDeviceRemoved(kTestDevicePath); |
| 180 base::RunLoop().RunUntilIdle(); | 180 base::RunLoop().RunUntilIdle(); |
| 181 ASSERT_EQ(2u, device_event_router->events.size()); | 181 ASSERT_EQ(2u, device_event_router->events.size()); |
| 182 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_HARD_UNPLUGGED, | 182 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_HARD_UNPLUGGED, |
| 183 device_event_router->events[0].type); | 183 device_event_router->events[0].type); |
| 184 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | 184 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); |
| 185 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED, | 185 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, |
| 186 device_event_router->events[1].type); | 186 device_event_router->events[1].type); |
| 187 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); | 187 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); |
| 188 } | 188 } |
| 189 | 189 |
| 190 } // namespace file_manager | 190 } // namespace file_manager |
| OLD | NEW |