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

Side by Side Diff: chrome/browser/extensions/api/device_permissions_manager_unittest.cc

Issue 980023002: Move device/usb classes from the FILE thread to UI thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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
OLDNEW
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 "base/run_loop.h" 5 #include "base/run_loop.h"
6 #include "base/strings/utf_string_conversions.h" 6 #include "base/strings/utf_string_conversions.h"
7 #include "base/test/values_test_util.h" 7 #include "base/test/values_test_util.h"
8 #include "chrome/browser/extensions/test_extension_environment.h" 8 #include "chrome/browser/extensions/test_extension_environment.h"
9 #include "chrome/test/base/testing_profile.h" 9 #include "chrome/test/base/testing_profile.h"
10 #include "device/core/device_client.h" 10 #include "device/core/device_client.h"
(...skipping 12 matching lines...) Expand all
23 using device::UsbDevice; 23 using device::UsbDevice;
24 using device::UsbDeviceHandle; 24 using device::UsbDeviceHandle;
25 using device::UsbService; 25 using device::UsbService;
26 using testing::_; 26 using testing::_;
27 using testing::DoAll; 27 using testing::DoAll;
28 using testing::Return; 28 using testing::Return;
29 using testing::SetArgPointee; 29 using testing::SetArgPointee;
30 30
31 int next_id; 31 int next_id;
32 32
33 class MockDeviceClient : device::DeviceClient {
34 public:
35 MockDeviceClient() {}
36
37 // device::DeviceClient implementation:
38 UsbService* GetUsbService() override {
39 DCHECK(usb_service_);
40 return usb_service_;
41 }
42
43 void set_usb_service(UsbService* service) { usb_service_ = service; }
44
45 private:
46 UsbService* usb_service_ = nullptr;
47 };
48
33 class MockUsbService : public UsbService { 49 class MockUsbService : public UsbService {
34 public: 50 public:
35 MockUsbService() : mock_device_client(this) {} 51 MockUsbService() {}
36 52
37 MOCK_METHOD1(GetDeviceById, scoped_refptr<UsbDevice>(uint32)); 53 MOCK_METHOD1(GetDeviceById, scoped_refptr<UsbDevice>(uint32));
38 MOCK_METHOD1(GetDevices, void(std::vector<scoped_refptr<UsbDevice>>*)); 54 MOCK_METHOD1(GetDevices, void(const GetDevicesCallback& callback));
39 55
40 // Public wrapper for the protected NotifyDeviceRemove function. 56 // Public wrapper for the protected NotifyDeviceRemove function.
41 void NotifyDeviceRemoved(scoped_refptr<UsbDevice> device) { 57 void NotifyDeviceRemoved(scoped_refptr<UsbDevice> device) {
42 UsbService::NotifyDeviceRemoved(device); 58 UsbService::NotifyDeviceRemoved(device);
43 } 59 }
44
45 private:
46 class MockDeviceClient : device::DeviceClient {
47 public:
48 explicit MockDeviceClient(UsbService* usb_service)
49 : usb_service_(usb_service) {}
50
51 UsbService* GetUsbService() override { return usb_service_; }
52
53 private:
54 UsbService* usb_service_;
55 };
56
57 MockDeviceClient mock_device_client;
58 }; 60 };
59 61
60 class MockUsbDevice : public UsbDevice { 62 class MockUsbDevice : public UsbDevice {
61 public: 63 public:
62 explicit MockUsbDevice(const std::string& serial_number) 64 explicit MockUsbDevice(const std::string& serial_number)
63 : UsbDevice(0, 0, next_id++) { 65 : UsbDevice(0,
64 if (serial_number.empty()) { 66 0,
65 EXPECT_CALL(*this, GetSerialNumber(_)).WillRepeatedly(Return(false)); 67 next_id++,
66 } else { 68 base::ASCIIToUTF16("Test Manufacturer"),
67 EXPECT_CALL(*this, GetSerialNumber(_)) 69 base::ASCIIToUTF16("Test Product"),
68 .WillRepeatedly( 70 base::ASCIIToUTF16(serial_number)) {}
69 DoAll(SetArgPointee<0>(base::ASCIIToUTF16(serial_number)),
70 Return(true)));
71 }
72
73 EXPECT_CALL(*this, GetProduct(_))
74 .WillRepeatedly(
75 DoAll(SetArgPointee<0>(base::ASCIIToUTF16("Test Product")),
76 Return(true)));
77 EXPECT_CALL(*this, GetManufacturer(_))
78 .WillRepeatedly(
79 DoAll(SetArgPointee<0>(base::ASCIIToUTF16("Test Manufacturer")),
80 Return(true)));
81 }
82 71
83 MOCK_METHOD2(RequestUsbAccess, void(int, const base::Callback<void(bool)>&)); 72 MOCK_METHOD2(RequestUsbAccess, void(int, const base::Callback<void(bool)>&));
84 MOCK_METHOD0(Open, scoped_refptr<UsbDeviceHandle>()); 73 MOCK_METHOD1(Open, void(const OpenCallback&));
85 MOCK_METHOD1(Close, bool(scoped_refptr<UsbDeviceHandle>)); 74 MOCK_METHOD1(Close, bool(scoped_refptr<UsbDeviceHandle>));
86 MOCK_METHOD0(GetConfiguration, const device::UsbConfigDescriptor*()); 75 MOCK_METHOD0(GetConfiguration, const device::UsbConfigDescriptor*());
87 MOCK_METHOD1(GetManufacturer, bool(base::string16*));
88 MOCK_METHOD1(GetProduct, bool(base::string16*));
89 MOCK_METHOD1(GetSerialNumber, bool(base::string16*));
90 76
91 private: 77 private:
92 virtual ~MockUsbDevice() {} 78 virtual ~MockUsbDevice() {}
93 }; 79 };
94 80
95 void AllowUsbDevice(DevicePermissionsManager* manager,
96 const Extension* extension,
97 scoped_refptr<UsbDevice> device) {
98 // If the device cannot provide any of these strings they will simply by
99 // empty.
100 base::string16 product;
101 device->GetProduct(&product);
102 base::string16 manufacturer;
103 device->GetManufacturer(&manufacturer);
104 base::string16 serial_number;
105 device->GetSerialNumber(&serial_number);
106
107 manager->AllowUsbDevice(
108 extension->id(), device, product, manufacturer, serial_number);
109 }
110
111 scoped_refptr<DevicePermissionEntry> FindEntry(
112 DevicePermissions* device_permissions,
113 scoped_refptr<UsbDevice> device) {
114 base::string16 serial_number;
115 device->GetSerialNumber(&serial_number);
116
117 return device_permissions->FindEntry(device, serial_number);
118 }
119
120 } // namespace 81 } // namespace
121 82
122 class DevicePermissionsManagerTest : public testing::Test { 83 class DevicePermissionsManagerTest : public testing::Test {
123 protected: 84 protected:
124 void SetUp() override { 85 void SetUp() override {
125 testing::Test::SetUp(); 86 testing::Test::SetUp();
126 env_.GetExtensionPrefs(); // Force creation before adding extensions. 87 env_.reset(new extensions::TestExtensionEnvironment());
127 extension_ = env_.MakeExtension(*base::test::ParseJson( 88 env_->GetExtensionPrefs(); // Force creation before adding extensions.
128 "{" 89 extension_ =
129 " \"app\": {" 90 env_->MakeExtension(*base::test::ParseJson(
130 " \"background\": {" 91 "{"
131 " \"scripts\": [\"background.js\"]" 92 " \"app\": {"
132 " }" 93 " \"background\": {"
133 " }," 94 " \"scripts\": [\"background.js\"]"
134 " \"permissions\": [" 95 " }"
135 " \"usb\"" 96 " },"
136 " ]" 97 " \"permissions\": ["
137 "}")); 98 " \"usb\""
99 " ]"
100 "}"));
138 device0_ = new MockUsbDevice("ABCDE"); 101 device0_ = new MockUsbDevice("ABCDE");
139 device1_ = new MockUsbDevice(""); 102 device1_ = new MockUsbDevice("");
140 device2_ = new MockUsbDevice("12345"); 103 device2_ = new MockUsbDevice("12345");
141 device3_ = new MockUsbDevice(""); 104 device3_ = new MockUsbDevice("");
142 usb_service_ = new MockUsbService(); 105 mock_device_client_.set_usb_service(&usb_service_);
143 UsbService::SetInstanceForTest(usb_service_);
144 } 106 }
145 107
146 extensions::TestExtensionEnvironment env_; 108 void TearDown() override { env_.reset(nullptr); }
109
110 scoped_ptr<extensions::TestExtensionEnvironment> env_;
147 const extensions::Extension* extension_; 111 const extensions::Extension* extension_;
148 MockUsbService* usb_service_; 112 MockDeviceClient mock_device_client_;
113 MockUsbService usb_service_;
149 scoped_refptr<MockUsbDevice> device0_; 114 scoped_refptr<MockUsbDevice> device0_;
150 scoped_refptr<MockUsbDevice> device1_; 115 scoped_refptr<MockUsbDevice> device1_;
151 scoped_refptr<MockUsbDevice> device2_; 116 scoped_refptr<MockUsbDevice> device2_;
152 scoped_refptr<MockUsbDevice> device3_; 117 scoped_refptr<MockUsbDevice> device3_;
153 }; 118 };
154 119
155 TEST_F(DevicePermissionsManagerTest, AllowAndClearDevices) { 120 TEST_F(DevicePermissionsManagerTest, AllowAndClearDevices) {
156 DevicePermissionsManager* manager = 121 DevicePermissionsManager* manager =
157 DevicePermissionsManager::Get(env_.profile()); 122 DevicePermissionsManager::Get(env_->profile());
158 AllowUsbDevice(manager, extension_, device0_); 123 manager->AllowUsbDevice(extension_->id(), device0_);
159 AllowUsbDevice(manager, extension_, device1_); 124 manager->AllowUsbDevice(extension_->id(), device1_);
160 125
161 scoped_ptr<DevicePermissions> device_permissions = 126 DevicePermissions* device_permissions =
162 manager->GetForExtension(extension_->id()); 127 manager->GetForExtension(extension_->id());
163 scoped_refptr<DevicePermissionEntry> device0_entry = 128 scoped_refptr<DevicePermissionEntry> device0_entry =
164 FindEntry(device_permissions.get(), device0_); 129 device_permissions->FindEntry(device0_);
165 ASSERT_TRUE(device0_entry.get()); 130 ASSERT_TRUE(device0_entry.get());
166 scoped_refptr<DevicePermissionEntry> device1_entry = 131 scoped_refptr<DevicePermissionEntry> device1_entry =
167 FindEntry(device_permissions.get(), device1_); 132 device_permissions->FindEntry(device1_);
168 ASSERT_TRUE(device1_entry.get()); 133 ASSERT_TRUE(device1_entry.get());
169 ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get()); 134 ASSERT_FALSE(device_permissions->FindEntry(device2_).get());
170 ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get()); 135 ASSERT_FALSE(device_permissions->FindEntry(device3_).get());
171 ASSERT_EQ(2U, device_permissions->entries().size()); 136 ASSERT_EQ(2U, device_permissions->entries().size());
172 137
173 ASSERT_EQ(base::ASCIIToUTF16( 138 ASSERT_EQ(base::ASCIIToUTF16(
174 "Test Product from Test Manufacturer (serial number ABCDE)"), 139 "Test Product from Test Manufacturer (serial number ABCDE)"),
175 device0_entry->GetPermissionMessageString()); 140 device0_entry->GetPermissionMessageString());
176 ASSERT_EQ(base::ASCIIToUTF16("Test Product from Test Manufacturer"), 141 ASSERT_EQ(base::ASCIIToUTF16("Test Product from Test Manufacturer"),
177 device1_entry->GetPermissionMessageString()); 142 device1_entry->GetPermissionMessageString());
178 143
179 manager->Clear(extension_->id()); 144 manager->Clear(extension_->id());
145 // The device_permissions object is deleted by Clear.
146 device_permissions = manager->GetForExtension(extension_->id());
180 147
181 device_permissions = manager->GetForExtension(extension_->id()); 148 ASSERT_FALSE(device_permissions->FindEntry(device0_).get());
182 ASSERT_FALSE(FindEntry(device_permissions.get(), device0_).get()); 149 ASSERT_FALSE(device_permissions->FindEntry(device1_).get());
183 ASSERT_FALSE(FindEntry(device_permissions.get(), device1_).get()); 150 ASSERT_FALSE(device_permissions->FindEntry(device2_).get());
184 ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get()); 151 ASSERT_FALSE(device_permissions->FindEntry(device3_).get());
185 ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get());
186 ASSERT_EQ(0U, device_permissions->entries().size()); 152 ASSERT_EQ(0U, device_permissions->entries().size());
187 153
188 // After clearing device it should be possible to grant permission again. 154 // After clearing device it should be possible to grant permission again.
189 AllowUsbDevice(manager, extension_, device0_); 155 manager->AllowUsbDevice(extension_->id(), device0_);
190 AllowUsbDevice(manager, extension_, device1_); 156 manager->AllowUsbDevice(extension_->id(), device1_);
191 157
192 device_permissions = manager->GetForExtension(extension_->id()); 158 ASSERT_TRUE(device_permissions->FindEntry(device0_).get());
193 ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get()); 159 ASSERT_TRUE(device_permissions->FindEntry(device1_).get());
194 ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get()); 160 ASSERT_FALSE(device_permissions->FindEntry(device2_).get());
195 ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get()); 161 ASSERT_FALSE(device_permissions->FindEntry(device3_).get());
196 ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get());
197 } 162 }
198 163
199 TEST_F(DevicePermissionsManagerTest, SuspendExtension) { 164 TEST_F(DevicePermissionsManagerTest, SuspendExtension) {
200 DevicePermissionsManager* manager = 165 DevicePermissionsManager* manager =
201 DevicePermissionsManager::Get(env_.profile()); 166 DevicePermissionsManager::Get(env_->profile());
202 AllowUsbDevice(manager, extension_, device0_); 167 manager->AllowUsbDevice(extension_->id(), device0_);
203 AllowUsbDevice(manager, extension_, device1_); 168 manager->AllowUsbDevice(extension_->id(), device1_);
204 169
205 scoped_ptr<DevicePermissions> device_permissions = 170 DevicePermissions* device_permissions =
206 manager->GetForExtension(extension_->id()); 171 manager->GetForExtension(extension_->id());
207 ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get()); 172 ASSERT_TRUE(device_permissions->FindEntry(device0_).get());
208 ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get()); 173 ASSERT_TRUE(device_permissions->FindEntry(device1_).get());
209 ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get()); 174 ASSERT_FALSE(device_permissions->FindEntry(device2_).get());
210 ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get()); 175 ASSERT_FALSE(device_permissions->FindEntry(device3_).get());
211 176
212 manager->OnBackgroundHostClose(extension_->id()); 177 manager->OnBackgroundHostClose(extension_->id());
213 178
214 device_permissions = manager->GetForExtension(extension_->id());
215 // Device 0 is still registered because its serial number has been stored in 179 // Device 0 is still registered because its serial number has been stored in
216 // ExtensionPrefs, it is "persistent". 180 // ExtensionPrefs, it is "persistent".
217 ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get()); 181 ASSERT_TRUE(device_permissions->FindEntry(device0_).get());
218 // Device 1 does not have uniquely identifying traits and so permission to 182 // Device 1 does not have uniquely identifying traits and so permission to
219 // open it has been dropped when the app's windows have closed and the 183 // open it has been dropped when the app's windows have closed and the
220 // background page has been suspended. 184 // background page has been suspended.
221 ASSERT_FALSE(FindEntry(device_permissions.get(), device1_).get()); 185 ASSERT_FALSE(device_permissions->FindEntry(device1_).get());
222 ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get()); 186 ASSERT_FALSE(device_permissions->FindEntry(device2_).get());
223 ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get()); 187 ASSERT_FALSE(device_permissions->FindEntry(device3_).get());
224 } 188 }
225 189
226 // TODO(reillyg): Until crbug.com/427985 is resolved device removal 190 TEST_F(DevicePermissionsManagerTest, DisconnectDevice) {
227 // notifications are delivered asynchronously and so this test must be disabled.
228 TEST_F(DevicePermissionsManagerTest, DISABLED_DisconnectDevice) {
229 DevicePermissionsManager* manager = 191 DevicePermissionsManager* manager =
230 DevicePermissionsManager::Get(env_.profile()); 192 DevicePermissionsManager::Get(env_->profile());
231 AllowUsbDevice(manager, extension_, device0_); 193 manager->AllowUsbDevice(extension_->id(), device0_);
232 AllowUsbDevice(manager, extension_, device1_); 194 manager->AllowUsbDevice(extension_->id(), device1_);
233 195
234 scoped_ptr<DevicePermissions> device_permissions = 196 DevicePermissions* device_permissions =
235 manager->GetForExtension(extension_->id()); 197 manager->GetForExtension(extension_->id());
236 ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get()); 198 ASSERT_TRUE(device_permissions->FindEntry(device0_).get());
237 ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get()); 199 ASSERT_TRUE(device_permissions->FindEntry(device1_).get());
238 ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get()); 200 ASSERT_FALSE(device_permissions->FindEntry(device2_).get());
239 ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get()); 201 ASSERT_FALSE(device_permissions->FindEntry(device3_).get());
240 202
241 usb_service_->NotifyDeviceRemoved(device0_); 203 usb_service_.NotifyDeviceRemoved(device0_);
242 usb_service_->NotifyDeviceRemoved(device1_); 204 usb_service_.NotifyDeviceRemoved(device1_);
243 205
244 device_permissions = manager->GetForExtension(extension_->id());
245 // Device 0 will be accessible when it is reconnected because it can be 206 // Device 0 will be accessible when it is reconnected because it can be
246 // recognized by its serial number. 207 // recognized by its serial number.
247 ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get()); 208 ASSERT_TRUE(device_permissions->FindEntry(device0_).get());
248 // Device 1 does not have a serial number and cannot be distinguished from 209 // Device 1 does not have a serial number and cannot be distinguished from
249 // any other device of the same model so the app must request permission again 210 // any other device of the same model so the app must request permission again
250 // when it is reconnected. 211 // when it is reconnected.
251 ASSERT_FALSE(FindEntry(device_permissions.get(), device1_).get()); 212 ASSERT_FALSE(device_permissions->FindEntry(device1_).get());
252 ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get()); 213 ASSERT_FALSE(device_permissions->FindEntry(device2_).get());
253 ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get()); 214 ASSERT_FALSE(device_permissions->FindEntry(device3_).get());
254 } 215 }
255 216
256 TEST_F(DevicePermissionsManagerTest, RevokeAndRegrantAccess) { 217 TEST_F(DevicePermissionsManagerTest, RevokeAndRegrantAccess) {
257 DevicePermissionsManager* manager = 218 DevicePermissionsManager* manager =
258 DevicePermissionsManager::Get(env_.profile()); 219 DevicePermissionsManager::Get(env_->profile());
259 AllowUsbDevice(manager, extension_, device0_); 220 manager->AllowUsbDevice(extension_->id(), device0_);
260 AllowUsbDevice(manager, extension_, device1_); 221 manager->AllowUsbDevice(extension_->id(), device1_);
261 222
262 scoped_ptr<DevicePermissions> device_permissions = 223 DevicePermissions* device_permissions =
263 manager->GetForExtension(extension_->id()); 224 manager->GetForExtension(extension_->id());
264 scoped_refptr<DevicePermissionEntry> device0_entry = 225 scoped_refptr<DevicePermissionEntry> device0_entry =
265 FindEntry(device_permissions.get(), device0_); 226 device_permissions->FindEntry(device0_);
266 ASSERT_TRUE(device0_entry.get()); 227 ASSERT_TRUE(device0_entry.get());
267 scoped_refptr<DevicePermissionEntry> device1_entry = 228 scoped_refptr<DevicePermissionEntry> device1_entry =
268 FindEntry(device_permissions.get(), device1_); 229 device_permissions->FindEntry(device1_);
269 ASSERT_TRUE(device1_entry.get()); 230 ASSERT_TRUE(device1_entry.get());
270 231
271 manager->RemoveEntry(extension_->id(), device0_entry); 232 manager->RemoveEntry(extension_->id(), device0_entry);
272 device_permissions = manager->GetForExtension(extension_->id()); 233 ASSERT_FALSE(device_permissions->FindEntry(device0_).get());
273 ASSERT_FALSE(FindEntry(device_permissions.get(), device0_).get()); 234 ASSERT_TRUE(device_permissions->FindEntry(device1_).get());
274 ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get());
275 235
276 AllowUsbDevice(manager, extension_, device0_); 236 manager->AllowUsbDevice(extension_->id(), device0_);
277 device_permissions = manager->GetForExtension(extension_->id()); 237 ASSERT_TRUE(device_permissions->FindEntry(device0_).get());
278 ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get()); 238 ASSERT_TRUE(device_permissions->FindEntry(device1_).get());
279 ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get());
280 239
281 manager->RemoveEntry(extension_->id(), device1_entry); 240 manager->RemoveEntry(extension_->id(), device1_entry);
282 device_permissions = manager->GetForExtension(extension_->id()); 241 ASSERT_TRUE(device_permissions->FindEntry(device0_).get());
283 ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get()); 242 ASSERT_FALSE(device_permissions->FindEntry(device1_).get());
284 ASSERT_FALSE(FindEntry(device_permissions.get(), device1_).get());
285 243
286 AllowUsbDevice(manager, extension_, device1_); 244 manager->AllowUsbDevice(extension_->id(), device1_);
287 device_permissions = manager->GetForExtension(extension_->id()); 245 ASSERT_TRUE(device_permissions->FindEntry(device0_).get());
288 ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get()); 246 ASSERT_TRUE(device_permissions->FindEntry(device1_).get());
289 ASSERT_TRUE(FindEntry(device_permissions.get(), device1_).get());
290 } 247 }
291 248
292 TEST_F(DevicePermissionsManagerTest, UpdateLastUsed) { 249 TEST_F(DevicePermissionsManagerTest, UpdateLastUsed) {
293 DevicePermissionsManager* manager = 250 DevicePermissionsManager* manager =
294 DevicePermissionsManager::Get(env_.profile()); 251 DevicePermissionsManager::Get(env_->profile());
295 AllowUsbDevice(manager, extension_, device0_); 252 manager->AllowUsbDevice(extension_->id(), device0_);
296 253
297 scoped_ptr<DevicePermissions> device_permissions = 254 DevicePermissions* device_permissions =
298 manager->GetForExtension(extension_->id()); 255 manager->GetForExtension(extension_->id());
299 scoped_refptr<DevicePermissionEntry> device0_entry = 256 scoped_refptr<DevicePermissionEntry> device0_entry =
300 FindEntry(device_permissions.get(), device0_); 257 device_permissions->FindEntry(device0_);
301 ASSERT_TRUE(device0_entry->last_used().is_null()); 258 ASSERT_TRUE(device0_entry->last_used().is_null());
302 259
303 manager->UpdateLastUsed(extension_->id(), device0_entry); 260 manager->UpdateLastUsed(extension_->id(), device0_entry);
304 device_permissions = manager->GetForExtension(extension_->id()); 261 device0_entry = device_permissions->FindEntry(device0_);
305 device0_entry = FindEntry(device_permissions.get(), device0_);
306 ASSERT_FALSE(device0_entry->last_used().is_null()); 262 ASSERT_FALSE(device0_entry->last_used().is_null());
307 } 263 }
308 264
309 TEST_F(DevicePermissionsManagerTest, LoadPrefs) { 265 TEST_F(DevicePermissionsManagerTest, LoadPrefs) {
310 scoped_ptr<base::Value> prefs_value = base::test::ParseJson( 266 scoped_ptr<base::Value> prefs_value = base::test::ParseJson(
311 "[" 267 "["
312 " {" 268 " {"
313 " \"product_id\": 0," 269 " \"product_id\": 0,"
314 " \"serial_number\": \"ABCDE\"," 270 " \"serial_number\": \"ABCDE\","
315 " \"type\": \"usb\"," 271 " \"type\": \"usb\","
316 " \"vendor_id\": 0" 272 " \"vendor_id\": 0"
317 " }" 273 " }"
318 "]"); 274 "]");
319 env_.GetExtensionPrefs()->UpdateExtensionPref(extension_->id(), "devices", 275 env_->GetExtensionPrefs()->UpdateExtensionPref(extension_->id(), "devices",
320 prefs_value.release()); 276 prefs_value.release());
321 277
322 DevicePermissionsManager* manager = 278 DevicePermissionsManager* manager =
323 DevicePermissionsManager::Get(env_.profile()); 279 DevicePermissionsManager::Get(env_->profile());
324 scoped_ptr<DevicePermissions> device_permissions = 280 DevicePermissions* device_permissions =
325 manager->GetForExtension(extension_->id()); 281 manager->GetForExtension(extension_->id());
326 ASSERT_TRUE(FindEntry(device_permissions.get(), device0_).get()); 282 ASSERT_TRUE(device_permissions->FindEntry(device0_).get());
327 ASSERT_FALSE(FindEntry(device_permissions.get(), device1_).get()); 283 ASSERT_FALSE(device_permissions->FindEntry(device1_).get());
328 ASSERT_FALSE(FindEntry(device_permissions.get(), device2_).get()); 284 ASSERT_FALSE(device_permissions->FindEntry(device2_).get());
329 ASSERT_FALSE(FindEntry(device_permissions.get(), device3_).get()); 285 ASSERT_FALSE(device_permissions->FindEntry(device3_).get());
330 } 286 }
331 287
332 } // namespace extensions 288 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698