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

Side by Side Diff: chrome/browser/chromeos/extensions/file_manager/device_event_router_unittest.cc

Issue 472603004: Add DeviceEventRouter class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698