OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
mtomasz
2014/08/20 06:31:02
nit: 214
hirono
2014/08/20 08:07:18
Done.
| |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/chromeos/extensions/file_manager/device_event_router.h" | |
6 | |
7 #include <string> | |
8 #include <vector> | |
9 | |
10 #include "base/basictypes.h" | |
11 #include "base/prefs/pref_service.h" | |
mtomasz
2014/08/20 06:31:02
pref_service not used?
hirono
2014/08/20 08:07:18
Done.
| |
12 #include "base/strings/utf_string_conversions.h" | |
mtomasz
2014/08/20 06:31:02
utf_string_conversion not used?
hirono
2014/08/20 08:07:18
Done.
| |
13 #include "chrome/browser/chromeos/file_manager/fake_disk_mount_manager.h" | |
14 #include "chrome/browser/chromeos/file_manager/volume_manager.h" | |
mtomasz
2014/08/20 06:31:02
volume_manager not used?
hirono
2014/08/20 08:07:18
Done.
| |
15 #include "chrome/browser/chromeos/file_manager/volume_manager_observer.h" | |
16 #include "chrome/browser/chromeos/file_system_provider/fake_provided_file_system .h" | |
mtomasz
2014/08/20 06:31:02
file_system provider not used?
hirono
2014/08/20 08:07:17
Done.
| |
17 #include "chrome/browser/chromeos/file_system_provider/service.h" | |
18 #include "chrome/common/pref_names.h" | |
mtomasz
2014/08/20 06:31:02
pref_names not used?
hirono
2014/08/20 08:07:18
Done.
| |
19 #include "chrome/test/base/testing_profile.h" | |
20 #include "chromeos/dbus/fake_power_manager_client.h" | |
mtomasz
2014/08/20 06:31:02
if fake_power_manager_client used?
hirono
2014/08/20 08:07:18
Done.
| |
21 #include "chromeos/disks/disk_mount_manager.h" | |
22 #include "components/storage_monitor/storage_info.h" | |
mtomasz
2014/08/20 06:31:02
is storage_info used?
hirono
2014/08/20 08:07:17
Done.
| |
23 #include "content/public/test/test_browser_thread_bundle.h" | |
mtomasz
2014/08/20 06:31:02
bundle not used?
hirono
2014/08/20 08:07:18
Done.
| |
24 #include "extensions/browser/extension_registry.h" | |
mtomasz
2014/08/20 06:31:02
extension_registry not used?
hirono
2014/08/20 08:07:17
Done.
| |
25 #include "testing/gtest/include/gtest/gtest.h" | |
26 | |
27 namespace file_manager { | |
28 namespace { | |
29 | |
30 namespace file_browser_private = extensions::api::file_browser_private; | |
31 typedef chromeos::disks::DiskMountManager::Disk Disk; | |
32 | |
33 const char kTestDevicePath[] = "/device/test"; | |
34 | |
35 struct DeviceEvent { | |
36 extensions::api::file_browser_private::DeviceEventType type; | |
37 std::string device_path; | |
38 }; | |
39 | |
40 class DeviceEventRouterImpl : public DeviceEventRouter { | |
mtomasz
2014/08/20 06:31:02
Comment for the class and methods missing.
hirono
2014/08/20 08:07:17
Done.
| |
41 public: | |
42 DeviceEventRouterImpl() : external_storage_disabled(false) {} | |
43 virtual ~DeviceEventRouterImpl() {} | |
44 | |
45 virtual void OnDeviceEvent(file_browser_private::DeviceEventType type, | |
46 const std::string& device_path) OVERRIDE { | |
47 DeviceEvent event; | |
48 event.type = type; | |
49 event.device_path = device_path; | |
50 events.push_back(event); | |
51 } | |
52 | |
53 virtual void PostDelayedTask(const base::Closure& callback, | |
54 const base::TimeDelta time) OVERRIDE { | |
55 callbacks_.push_back(callback); | |
56 } | |
57 | |
58 virtual bool IsExternalStorageDisabled() OVERRIDE { | |
59 return external_storage_disabled; | |
60 } | |
61 | |
62 void RunDelayedTasks() { | |
63 for (size_t i = 0; i < callbacks_.size(); ++i) { | |
64 callbacks_[i].Run(); | |
65 } | |
66 callbacks_.clear(); | |
67 } | |
68 | |
69 std::vector<DeviceEvent> events; | |
70 bool external_storage_disabled; | |
71 | |
72 private: | |
73 std::vector<base::Closure> callbacks_; | |
74 }; | |
mtomasz
2014/08/20 06:31:02
How about adding DISALLOW_COPY_AND_ASSIGN?
hirono
2014/08/20 08:07:18
Done.
| |
75 } // namespace | |
76 | |
77 class DeviceEventRouterTest : public testing::Test { | |
78 protected: | |
79 virtual void SetUp() OVERRIDE { | |
80 device_event_router.reset(new DeviceEventRouterImpl()); | |
81 } | |
82 | |
83 Disk CreateTestDisk(const std::string& device_path, | |
84 const std::string& mount_path) { | |
85 return Disk(device_path, | |
86 mount_path, | |
87 "", | |
88 "", | |
89 "", | |
90 "", | |
91 "", | |
92 "", | |
93 "", | |
94 "", | |
95 "", | |
96 device_path, | |
97 chromeos::DEVICE_TYPE_UNKNOWN, | |
98 0, | |
99 false, | |
100 false, | |
101 false, | |
102 false, | |
103 false, | |
104 false); | |
105 } | |
106 | |
107 VolumeInfo CreateTestVolumeInfo(const std::string& device_path, | |
108 const std::string& mount_path) { | |
109 VolumeInfo volume_info; | |
110 volume_info.system_path_prefix = base::FilePath(device_path); | |
111 volume_info.mount_path = base::FilePath(mount_path); | |
112 return volume_info; | |
113 } | |
114 | |
115 scoped_ptr<DeviceEventRouterImpl> device_event_router; | |
116 }; | |
117 | |
118 TEST_F(DeviceEventRouterTest, AddAndRemoveDevice) { | |
119 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1"); | |
120 const Disk disk1_unmounted = CreateTestDisk("/device/test", ""); | |
121 const VolumeInfo volumeInfo = | |
122 CreateTestVolumeInfo("/device/test", "/mount/path1"); | |
123 device_event_router->OnDeviceAdded("/device/test"); | |
124 device_event_router->OnDiskAdded(disk1, true); | |
125 device_event_router->OnVolumeMounted( | |
126 chromeos::MOUNT_ERROR_NONE, volumeInfo, false); | |
127 device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE, | |
128 volumeInfo); | |
129 device_event_router->OnDiskRemoved(disk1_unmounted); | |
130 device_event_router->OnDeviceRemoved("/device/test"); | |
131 EXPECT_EQ(1u, device_event_router->events.size()); | |
132 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED, | |
133 device_event_router->events[0].type); | |
134 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | |
135 } | |
136 | |
137 TEST_F(DeviceEventRouterTest, DeviceScan) { | |
138 const Disk disk = CreateTestDisk("/device/test", "/mount/path1"); | |
139 const Disk disk_unmounted = CreateTestDisk("/device/test", ""); | |
140 const VolumeInfo volumeInfo = | |
141 CreateTestVolumeInfo("/device/test", "/mount/path1"); | |
142 device_event_router->OnDeviceAdded("/device/test"); | |
143 device_event_router->RunDelayedTasks(); | |
144 device_event_router->OnDiskAdded(disk, true); | |
145 device_event_router->OnVolumeMounted( | |
146 chromeos::MOUNT_ERROR_NONE, volumeInfo, false); | |
147 device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE, | |
148 volumeInfo); | |
149 device_event_router->OnDiskRemoved(disk_unmounted); | |
150 device_event_router->OnDeviceRemoved("/device/test"); | |
151 EXPECT_EQ(2u, device_event_router->events.size()); | |
152 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_ADDED, | |
153 device_event_router->events[0].type); | |
154 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | |
155 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED, | |
156 device_event_router->events[1].type); | |
157 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); | |
158 } | |
159 | |
160 TEST_F(DeviceEventRouterTest, DeviceScanCancelled) { | |
161 const Disk disk = CreateTestDisk("/device/test", "/mount/path1"); | |
162 const Disk disk_unmounted = CreateTestDisk("/device/test", ""); | |
163 const VolumeInfo volumeInfo = | |
164 CreateTestVolumeInfo("/device/test", "/mount/path1"); | |
165 device_event_router->OnDeviceAdded("/device/test"); | |
166 device_event_router->RunDelayedTasks(); | |
167 device_event_router->OnDiskAdded(disk, false); | |
168 device_event_router->OnDiskRemoved(disk_unmounted); | |
169 device_event_router->OnDeviceRemoved("/device/test"); | |
170 EXPECT_EQ(3u, device_event_router->events.size()); | |
171 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_ADDED, | |
172 device_event_router->events[0].type); | |
173 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | |
174 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_SCAN_CANCELED, | |
175 device_event_router->events[1].type); | |
176 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); | |
177 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED, | |
178 device_event_router->events[2].type); | |
179 EXPECT_EQ("/device/test", device_event_router->events[2].device_path); | |
180 } | |
181 | |
182 TEST_F(DeviceEventRouterTest, HardUnplugged) { | |
183 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1"); | |
184 const Disk disk2 = CreateTestDisk("/device/test", "/mount/path2"); | |
185 device_event_router->OnDeviceAdded("/device/test"); | |
186 device_event_router->OnDiskAdded(disk1, true); | |
187 device_event_router->OnDiskAdded(disk2, true); | |
188 device_event_router->OnDiskRemoved(disk1); | |
189 device_event_router->OnDiskRemoved(disk2); | |
190 device_event_router->OnDeviceRemoved(kTestDevicePath); | |
191 device_event_router->RunDelayedTasks(); | |
192 EXPECT_EQ(2u, device_event_router->events.size()); | |
193 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_HARD_UNPLUGGED, | |
194 device_event_router->events[0].type); | |
195 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | |
196 EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED, | |
197 device_event_router->events[1].type); | |
198 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); | |
199 } | |
200 } // namespace file_manager | |
OLD | NEW |