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 |