OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 <memory> | 5 #include <memory> |
6 | 6 |
7 #include "base/memory/ref_counted.h" | 7 #include "base/memory/ref_counted.h" |
8 #include "device/usb/mock_usb_device.h" | 8 #include "device/usb/mock_usb_device.h" |
9 #include "device/usb/usb_descriptors.h" | 9 #include "device/usb/usb_descriptors.h" |
10 #include "extensions/common/extension_builder.h" | 10 #include "extensions/common/extension_builder.h" |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 178 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
179 UsbDevicePermission::CheckParam::ForDeviceWithAnyInterfaceClass( | 179 UsbDevicePermission::CheckParam::ForDeviceWithAnyInterfaceClass( |
180 app.get(), 0x02ad, 0x138c, | 180 app.get(), 0x02ad, 0x138c, |
181 UsbDevicePermissionData::SPECIAL_VALUE_UNSPECIFIED); | 181 UsbDevicePermissionData::SPECIAL_VALUE_UNSPECIFIED); |
182 | 182 |
183 // Interface class permission should be ignored when not in kiosk session. | 183 // Interface class permission should be ignored when not in kiosk session. |
184 EXPECT_FALSE(permission_data.Check(param.get())); | 184 EXPECT_FALSE(permission_data.Check(param.get())); |
185 } | 185 } |
186 | 186 |
187 { | 187 { |
188 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 188 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
189 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 189 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
190 ScopedCurrentChannel channel(version_info::Channel::DEV); | 190 ScopedCurrentChannel channel(version_info::Channel::DEV); |
191 | 191 |
192 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 192 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
193 UsbDevicePermission::CheckParam::ForDeviceWithAnyInterfaceClass( | 193 UsbDevicePermission::CheckParam::ForDeviceWithAnyInterfaceClass( |
194 app.get(), 0x02ad, 0x138c, | 194 app.get(), 0x02ad, 0x138c, |
195 UsbDevicePermissionData::SPECIAL_VALUE_UNSPECIFIED); | 195 UsbDevicePermissionData::SPECIAL_VALUE_UNSPECIFIED); |
196 | 196 |
197 // |ForDeviceWithAnyInterfaceClass| creates check param that matches any | 197 // |ForDeviceWithAnyInterfaceClass| creates check param that matches any |
198 // interfaceClass permission property - needed in cases where set of | 198 // interfaceClass permission property - needed in cases where set of |
(...skipping 19 matching lines...) Expand all Loading... |
218 { | 218 { |
219 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 219 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
220 UsbDevicePermission::CheckParam::ForDeviceWithAnyInterfaceClass( | 220 UsbDevicePermission::CheckParam::ForDeviceWithAnyInterfaceClass( |
221 app.get(), 0x02ad, 0x138c, | 221 app.get(), 0x02ad, 0x138c, |
222 UsbDevicePermissionData::SPECIAL_VALUE_UNSPECIFIED); | 222 UsbDevicePermissionData::SPECIAL_VALUE_UNSPECIFIED); |
223 | 223 |
224 EXPECT_FALSE(permission_data.Check(param.get())); | 224 EXPECT_FALSE(permission_data.Check(param.get())); |
225 } | 225 } |
226 | 226 |
227 { | 227 { |
228 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 228 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
229 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 229 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
230 ScopedCurrentChannel channel(version_info::Channel::DEV); | 230 ScopedCurrentChannel channel(version_info::Channel::DEV); |
231 | 231 |
232 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 232 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
233 UsbDevicePermission::CheckParam::ForDeviceWithAnyInterfaceClass( | 233 UsbDevicePermission::CheckParam::ForDeviceWithAnyInterfaceClass( |
234 app.get(), 0x02ad, 0x138c, | 234 app.get(), 0x02ad, 0x138c, |
235 UsbDevicePermissionData::SPECIAL_VALUE_UNSPECIFIED); | 235 UsbDevicePermissionData::SPECIAL_VALUE_UNSPECIFIED); |
236 | 236 |
237 EXPECT_TRUE(permission_data.Check(param.get())); | 237 EXPECT_TRUE(permission_data.Check(param.get())); |
238 } | 238 } |
239 | 239 |
240 { | 240 { |
241 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 241 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
242 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 242 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
243 ScopedCurrentChannel channel(version_info::Channel::DEV); | 243 ScopedCurrentChannel channel(version_info::Channel::DEV); |
244 | 244 |
245 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 245 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
246 UsbDevicePermission::CheckParam::ForDeviceWithAnyInterfaceClass( | 246 UsbDevicePermission::CheckParam::ForDeviceWithAnyInterfaceClass( |
247 app.get(), 0x138c, 0x138c, | 247 app.get(), 0x138c, 0x138c, |
248 UsbDevicePermissionData::SPECIAL_VALUE_UNSPECIFIED); | 248 UsbDevicePermissionData::SPECIAL_VALUE_UNSPECIFIED); |
249 | 249 |
250 EXPECT_FALSE(permission_data.Check(param.get())); | 250 EXPECT_FALSE(permission_data.Check(param.get())); |
251 } | 251 } |
(...skipping 13 matching lines...) Expand all Loading... |
265 | 265 |
266 { | 266 { |
267 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 267 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
268 UsbDevicePermission::CheckParam::ForHidDevice(app.get(), 0x02ad, | 268 UsbDevicePermission::CheckParam::ForHidDevice(app.get(), 0x02ad, |
269 0x138c); | 269 0x138c); |
270 | 270 |
271 EXPECT_FALSE(permission_data.Check(param.get())); | 271 EXPECT_FALSE(permission_data.Check(param.get())); |
272 } | 272 } |
273 | 273 |
274 { | 274 { |
275 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 275 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
276 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 276 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
277 ScopedCurrentChannel channel(version_info::Channel::DEV); | 277 ScopedCurrentChannel channel(version_info::Channel::DEV); |
278 | 278 |
279 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 279 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
280 UsbDevicePermission::CheckParam::ForHidDevice(app.get(), 0x02ad, | 280 UsbDevicePermission::CheckParam::ForHidDevice(app.get(), 0x02ad, |
281 0x138c); | 281 0x138c); |
282 | 282 |
283 EXPECT_TRUE(permission_data.Check(param.get())); | 283 EXPECT_TRUE(permission_data.Check(param.get())); |
284 } | 284 } |
285 | 285 |
286 { | 286 { |
287 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 287 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
288 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 288 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
289 ScopedCurrentChannel channel(version_info::Channel::DEV); | 289 ScopedCurrentChannel channel(version_info::Channel::DEV); |
290 | 290 |
291 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 291 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
292 UsbDevicePermission::CheckParam::ForHidDevice(app.get(), 0x138c, | 292 UsbDevicePermission::CheckParam::ForHidDevice(app.get(), 0x138c, |
293 0x138c); | 293 0x138c); |
294 | 294 |
295 EXPECT_FALSE(permission_data.Check(param.get())); | 295 EXPECT_FALSE(permission_data.Check(param.get())); |
296 } | 296 } |
297 } | 297 } |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
368 { | 368 { |
369 scoped_refptr<device::MockUsbDevice> device = | 369 scoped_refptr<device::MockUsbDevice> device = |
370 CreateTestUsbDevice(0x02ad, 0x138c, 0x9, std::vector<uint8_t>()); | 370 CreateTestUsbDevice(0x02ad, 0x138c, 0x9, std::vector<uint8_t>()); |
371 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 371 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
372 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); | 372 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); |
373 | 373 |
374 EXPECT_FALSE(permission_data.Check(param.get())); | 374 EXPECT_FALSE(permission_data.Check(param.get())); |
375 } | 375 } |
376 | 376 |
377 { | 377 { |
378 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 378 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
379 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 379 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
380 ScopedCurrentChannel channel(version_info::Channel::DEV); | 380 ScopedCurrentChannel channel(version_info::Channel::DEV); |
381 | 381 |
382 scoped_refptr<device::MockUsbDevice> device = | 382 scoped_refptr<device::MockUsbDevice> device = |
383 CreateTestUsbDevice(0x02ad, 0x138c, 0x9, std::vector<uint8_t>()); | 383 CreateTestUsbDevice(0x02ad, 0x138c, 0x9, std::vector<uint8_t>()); |
384 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 384 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
385 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); | 385 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); |
386 | 386 |
387 EXPECT_TRUE(permission_data.Check(param.get())); | 387 EXPECT_TRUE(permission_data.Check(param.get())); |
388 } | 388 } |
389 { | 389 { |
390 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 390 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
391 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 391 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
392 ScopedCurrentChannel channel(version_info::Channel::DEV); | 392 ScopedCurrentChannel channel(version_info::Channel::DEV); |
393 | 393 |
394 scoped_refptr<device::MockUsbDevice> device = | 394 scoped_refptr<device::MockUsbDevice> device = |
395 CreateTestUsbDevice(0x02ad, 0x138c, 0x3, std::vector<uint8_t>()); | 395 CreateTestUsbDevice(0x02ad, 0x138c, 0x3, std::vector<uint8_t>()); |
396 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 396 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
397 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); | 397 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); |
398 | 398 |
399 EXPECT_FALSE(permission_data.Check(param.get())); | 399 EXPECT_FALSE(permission_data.Check(param.get())); |
400 } | 400 } |
401 } | 401 } |
402 | 402 |
403 TEST(USBDevicePermissionTest, IgnoreNullDeviceClass) { | 403 TEST(USBDevicePermissionTest, IgnoreNullDeviceClass) { |
404 std::unique_ptr<base::Value> permission_data_value = | 404 std::unique_ptr<base::Value> permission_data_value = |
405 DictionaryBuilder().Set("interfaceClass", 0).Build(); | 405 DictionaryBuilder().Set("interfaceClass", 0).Build(); |
406 UsbDevicePermissionData permission_data; | 406 UsbDevicePermissionData permission_data; |
407 EXPECT_TRUE(permission_data.FromValue(permission_data_value.get())); | 407 EXPECT_TRUE(permission_data.FromValue(permission_data_value.get())); |
408 | 408 |
409 scoped_refptr<const Extension> app = | 409 scoped_refptr<const Extension> app = |
410 CreateTestApp(std::move(permission_data_value)); | 410 CreateTestApp(std::move(permission_data_value)); |
411 | 411 |
412 { | 412 { |
413 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 413 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
414 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 414 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
415 ScopedCurrentChannel channel(version_info::Channel::DEV); | 415 ScopedCurrentChannel channel(version_info::Channel::DEV); |
416 | 416 |
417 scoped_refptr<device::MockUsbDevice> device = | 417 scoped_refptr<device::MockUsbDevice> device = |
418 CreateTestUsbDevice(0x02ad, 0x138c, 0, std::vector<uint8_t>()); | 418 CreateTestUsbDevice(0x02ad, 0x138c, 0, std::vector<uint8_t>()); |
419 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 419 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
420 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); | 420 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); |
421 | 421 |
422 EXPECT_FALSE(permission_data.Check(param.get())); | 422 EXPECT_FALSE(permission_data.Check(param.get())); |
423 } | 423 } |
(...skipping 13 matching lines...) Expand all Loading... |
437 CreateTestUsbDevice(0x02ad, 0x138c, 0, {2, 3}); | 437 CreateTestUsbDevice(0x02ad, 0x138c, 0, {2, 3}); |
438 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 438 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
439 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); | 439 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); |
440 | 440 |
441 EXPECT_FALSE(permission_data.Check(param.get())); | 441 EXPECT_FALSE(permission_data.Check(param.get())); |
442 } | 442 } |
443 | 443 |
444 { | 444 { |
445 // Interface should match inactive configuration when none of configurations | 445 // Interface should match inactive configuration when none of configurations |
446 // is active. | 446 // is active. |
447 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 447 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
448 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 448 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
449 ScopedCurrentChannel channel(version_info::Channel::DEV); | 449 ScopedCurrentChannel channel(version_info::Channel::DEV); |
450 | 450 |
451 scoped_refptr<device::MockUsbDevice> device = | 451 scoped_refptr<device::MockUsbDevice> device = |
452 CreateTestUsbDevice(0x02ad, 0x138c, 0, {2, 3}); | 452 CreateTestUsbDevice(0x02ad, 0x138c, 0, {2, 3}); |
453 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 453 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
454 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); | 454 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); |
455 | 455 |
456 EXPECT_TRUE(permission_data.Check(param.get())); | 456 EXPECT_TRUE(permission_data.Check(param.get())); |
457 } | 457 } |
458 | 458 |
459 { | 459 { |
460 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 460 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
461 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 461 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
462 ScopedCurrentChannel channel(version_info::Channel::DEV); | 462 ScopedCurrentChannel channel(version_info::Channel::DEV); |
463 | 463 |
464 scoped_refptr<device::MockUsbDevice> device = | 464 scoped_refptr<device::MockUsbDevice> device = |
465 CreateTestUsbDevice(0x02ad, 0x138c, 0, {2, 3}); | 465 CreateTestUsbDevice(0x02ad, 0x138c, 0, {2, 3}); |
466 device->ActiveConfigurationChanged(kUsbConfigWithInterfaces); | 466 device->ActiveConfigurationChanged(kUsbConfigWithInterfaces); |
467 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 467 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
468 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); | 468 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); |
469 | 469 |
470 EXPECT_TRUE(permission_data.Check(param.get())); | 470 EXPECT_TRUE(permission_data.Check(param.get())); |
471 } | 471 } |
472 | 472 |
473 { | 473 { |
474 // Interface should match inactive configuration when another configuration | 474 // Interface should match inactive configuration when another configuration |
475 // is active. | 475 // is active. |
476 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 476 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
477 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 477 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
478 ScopedCurrentChannel channel(version_info::Channel::DEV); | 478 ScopedCurrentChannel channel(version_info::Channel::DEV); |
479 | 479 |
480 scoped_refptr<device::MockUsbDevice> device = | 480 scoped_refptr<device::MockUsbDevice> device = |
481 CreateTestUsbDevice(0x02ad, 0x138c, 0, {2, 3}); | 481 CreateTestUsbDevice(0x02ad, 0x138c, 0, {2, 3}); |
482 device->ActiveConfigurationChanged(kUsbConfigWithoutInterfaces); | 482 device->ActiveConfigurationChanged(kUsbConfigWithoutInterfaces); |
483 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 483 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
484 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); | 484 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); |
485 | 485 |
486 EXPECT_TRUE(permission_data.Check(param.get())); | 486 EXPECT_TRUE(permission_data.Check(param.get())); |
487 } | 487 } |
488 | 488 |
489 { | 489 { |
490 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type_( | 490 std::unique_ptr<base::AutoReset<FeatureSessionType>> scoped_session_type( |
491 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); | 491 ScopedCurrentFeatureSessionType(FeatureSessionType::KIOSK)); |
492 ScopedCurrentChannel channel(version_info::Channel::DEV); | 492 ScopedCurrentChannel channel(version_info::Channel::DEV); |
493 | 493 |
494 scoped_refptr<device::MockUsbDevice> device = | 494 scoped_refptr<device::MockUsbDevice> device = |
495 CreateTestUsbDevice(0x02ad, 0x138c, 0, {4, 5}); | 495 CreateTestUsbDevice(0x02ad, 0x138c, 0, {4, 5}); |
496 std::unique_ptr<UsbDevicePermission::CheckParam> param = | 496 std::unique_ptr<UsbDevicePermission::CheckParam> param = |
497 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); | 497 UsbDevicePermission::CheckParam::ForUsbDevice(app.get(), device.get()); |
498 | 498 |
499 EXPECT_FALSE(permission_data.Check(param.get())); | 499 EXPECT_FALSE(permission_data.Check(param.get())); |
500 } | 500 } |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
588 .Set("vendorId", 0x02ad) | 588 .Set("vendorId", 0x02ad) |
589 .Set("productId", 0x128c) | 589 .Set("productId", 0x128c) |
590 .Set("interfaceId", 3) | 590 .Set("interfaceId", 3) |
591 .Set("interfaceClass", 7) | 591 .Set("interfaceClass", 7) |
592 .Build(); | 592 .Build(); |
593 UsbDevicePermissionData permission_data; | 593 UsbDevicePermissionData permission_data; |
594 ASSERT_FALSE(permission_data.FromValue(permission_data_value.get())); | 594 ASSERT_FALSE(permission_data.FromValue(permission_data_value.get())); |
595 } | 595 } |
596 | 596 |
597 } // namespace extensions | 597 } // namespace extensions |
OLD | NEW |