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

Side by Side Diff: chrome/browser/usb/web_usb_permission_store_unittest.cc

Issue 1382783002: Store USB device permissions in website settings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
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/usb/web_usb_permission_store.h"
6 #include "chrome/test/base/testing_profile.h"
7 #include "content/public/test/test_browser_thread_bundle.h"
8 #include "device/core/device_client.h"
9 #include "device/usb/mock_usb_device.h"
10 #include "device/usb/mock_usb_service.h"
11
12 using device::MockUsbDevice;
13 using device::UsbDevice;
14
15 namespace {
16
17 class TestDeviceClient : public device::DeviceClient {
18 public:
19 TestDeviceClient() {}
20 ~TestDeviceClient() override {}
21
22 device::MockUsbService& usb_service() { return usb_service_; }
23
24 private:
25 device::UsbService* GetUsbService() override { return &usb_service_; }
26
27 device::MockUsbService usb_service_;
28 };
29
30 } // namespace
31
32 class WebUSBPermissionStoreTest : public testing::Test {
33 public:
34 WebUSBPermissionStoreTest() {}
35 ~WebUSBPermissionStoreTest() override {}
36
37 protected:
38 Profile* profile() { return &profile_; }
39 device::MockUsbService& usb_service() { return device_client_.usb_service(); }
40
41 private:
42 content::TestBrowserThreadBundle thread_bundle_;
43 TestDeviceClient device_client_;
44 TestingProfile profile_;
45 };
46
47 TEST_F(WebUSBPermissionStoreTest, CheckGrantAndRevokePermission) {
48 GURL origin("https://www.google.com");
49 scoped_refptr<UsbDevice> device =
50 new MockUsbDevice(0, 0, "Google", "Gizmo", "123ABC");
51 usb_service().AddDevice(device);
52 WebUSBPermissionStore* store = WebUSBPermissionStore::Get(profile());
53
54 EXPECT_FALSE(store->HasDevicePermission(origin, device->guid()));
55 store->GrantDevicePermission(origin, device->guid());
56 EXPECT_TRUE(store->HasDevicePermission(origin, device->guid()));
57 store->RevokeDevicePermission(origin, device->guid());
58 EXPECT_FALSE(store->HasDevicePermission(origin, device->guid()));
59 }
60
61 TEST_F(WebUSBPermissionStoreTest, CheckGrantAndRevokeEphemeralPermission) {
62 GURL origin("https://www.google.com");
63 scoped_refptr<UsbDevice> device =
64 new MockUsbDevice(0, 0, "Google", "Gizmo", "");
65 scoped_refptr<UsbDevice> other_device =
66 new MockUsbDevice(0, 0, "Google", "Gizmo", "");
67 usb_service().AddDevice(device);
68 WebUSBPermissionStore* store = WebUSBPermissionStore::Get(profile());
69
70 EXPECT_FALSE(store->HasDevicePermission(origin, device->guid()));
71 store->GrantDevicePermission(origin, device->guid());
72 EXPECT_TRUE(store->HasDevicePermission(origin, device->guid()));
73 store->RevokeDevicePermission(origin, device->guid());
74 EXPECT_FALSE(store->HasDevicePermission(origin, device->guid()));
75 }
76
77 TEST_F(WebUSBPermissionStoreTest, DisconnectDeviceWithPermission) {
78 GURL origin("https://www.google.com");
79 scoped_refptr<UsbDevice> device =
80 new MockUsbDevice(0, 0, "Google", "Gizmo", "123ABC");
81 usb_service().AddDevice(device);
82 WebUSBPermissionStore* store = WebUSBPermissionStore::Get(profile());
83
84 EXPECT_FALSE(store->HasDevicePermission(origin, device->guid()));
85 store->GrantDevicePermission(origin, device->guid());
86 EXPECT_TRUE(store->HasDevicePermission(origin, device->guid()));
87 usb_service().RemoveDevice(device);
88 EXPECT_FALSE(store->HasDevicePermission(origin, device->guid()));
89
90 scoped_refptr<UsbDevice> reconnected_device =
91 new MockUsbDevice(0, 0, "Google", "Gizmo", "123ABC");
92 usb_service().AddDevice(reconnected_device);
93 EXPECT_TRUE(store->HasDevicePermission(origin, reconnected_device->guid()));
94 }
95
96 TEST_F(WebUSBPermissionStoreTest, DisconnectDeviceWithEphemeralPermission) {
97 GURL origin("https://www.google.com");
98 scoped_refptr<UsbDevice> device =
99 new MockUsbDevice(0, 0, "Google", "Gizmo", "");
100 usb_service().AddDevice(device);
101 WebUSBPermissionStore* store = WebUSBPermissionStore::Get(profile());
102
103 EXPECT_FALSE(store->HasDevicePermission(origin, device->guid()));
104 store->GrantDevicePermission(origin, device->guid());
105 EXPECT_TRUE(store->HasDevicePermission(origin, device->guid()));
106 usb_service().RemoveDevice(device);
107 EXPECT_FALSE(store->HasDevicePermission(origin, device->guid()));
108
109 scoped_refptr<UsbDevice> reconnected_device =
110 new MockUsbDevice(0, 0, "Google", "Gizmo", "");
111 usb_service().AddDevice(reconnected_device);
112 EXPECT_FALSE(store->HasDevicePermission(origin, reconnected_device->guid()));
113 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698