OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "base/strings/string16.h" | 8 #include "base/strings/string16.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/test/histogram_tester.h" |
| 11 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| 12 #include "chrome/browser/profiles/profile_manager.h" |
| 13 #include "chrome/browser/ui/browser_list.h" |
| 14 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
10 #include "chrome/browser/usb/web_usb_detector.h" | 15 #include "chrome/browser/usb/web_usb_detector.h" |
| 16 #include "chrome/test/base/browser_with_test_window_test.h" |
| 17 #include "chrome/test/base/testing_browser_process.h" |
| 18 #include "chrome/test/base/testing_profile_manager.h" |
11 #include "device/base/mock_device_client.h" | 19 #include "device/base/mock_device_client.h" |
12 #include "device/usb/mock_usb_device.h" | 20 #include "device/usb/mock_usb_device.h" |
13 #include "device/usb/mock_usb_service.h" | 21 #include "device/usb/mock_usb_service.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
15 #include "ui/message_center/message_center.h" | 23 #include "ui/message_center/message_center.h" |
16 #include "ui/message_center/notification.h" | 24 #include "ui/message_center/notification.h" |
17 #include "ui/message_center/notification_delegate.h" | 25 #include "ui/message_center/notification_delegate.h" |
18 #include "url/gurl.h" | 26 #include "url/gurl.h" |
19 | 27 |
20 // These tests are disabled because WebUsbDetector::Initialize is a noop on | 28 // These tests are disabled because WebUsbDetector::Initialize is a noop on |
21 // Windows due to jank and hangs caused by enumerating devices. | 29 // Windows due to jank and hangs caused by enumerating devices. |
22 // https://crbug.com/656702 | 30 // https://crbug.com/656702 |
23 #if !defined(OS_WIN) | 31 #if !defined(OS_WIN) |
24 namespace { | 32 namespace { |
25 | 33 |
| 34 const char* kProfileName = "test@example.com"; |
| 35 |
26 // USB device product name. | 36 // USB device product name. |
27 const char* kProductName_1 = "Google Product A"; | 37 const char* kProductName_1 = "Google Product A"; |
28 const char* kProductName_2 = "Google Product B"; | 38 const char* kProductName_2 = "Google Product B"; |
29 const char* kProductName_3 = "Google Product C"; | 39 const char* kProductName_3 = "Google Product C"; |
30 | 40 |
31 // USB device landing page. | 41 // USB device landing page. |
32 const char* kLandingPage_1 = "https://www.google.com/A"; | 42 const char* kLandingPage_1 = "https://www.google.com/A"; |
33 const char* kLandingPage_2 = "https://www.google.com/B"; | 43 const char* kLandingPage_2 = "https://www.google.com/B"; |
34 const char* kLandingPage_3 = "https://www.google.com/C"; | 44 const char* kLandingPage_3 = "https://www.google.com/C"; |
35 | 45 |
36 } // namespace | 46 } // namespace |
37 | 47 |
38 class WebUsbDetectorTest : public testing::Test { | 48 class WebUsbDetectorTest : public BrowserWithTestWindowTest { |
39 public: | 49 public: |
40 WebUsbDetectorTest() {} | 50 WebUsbDetectorTest() : profile_manager_(TestingBrowserProcess::GetGlobal()) {} |
41 ~WebUsbDetectorTest() override = default; | 51 ~WebUsbDetectorTest() override = default; |
42 | 52 |
| 53 // Use the profile_manager_'s profile so that we can manage which one is most |
| 54 // recently active. |
| 55 TestingProfile* CreateProfile() override { |
| 56 return profile_manager_.CreateTestingProfile(kProfileName); |
| 57 } |
| 58 |
| 59 // Since the profile is owned by profile_manager_, we do not need to destroy |
| 60 // it. |
| 61 void DestroyProfile(TestingProfile* profile) override {} |
| 62 |
43 void SetUp() override { | 63 void SetUp() override { |
| 64 ASSERT_TRUE(profile_manager_.SetUp()); |
| 65 BrowserWithTestWindowTest::SetUp(); |
| 66 #if defined(OS_CHROMEOS) |
| 67 profile_manager_.SetLoggedIn(true); |
| 68 chromeos::ProfileHelper::Get()->SetActiveUserIdForTesting(kProfileName); |
| 69 #endif |
| 70 BrowserList::SetLastActive(browser()); |
| 71 |
| 72 #if !defined(OS_CHROMEOS) |
44 message_center::MessageCenter::Initialize(); | 73 message_center::MessageCenter::Initialize(); |
| 74 #endif |
45 message_center_ = message_center::MessageCenter::Get(); | 75 message_center_ = message_center::MessageCenter::Get(); |
46 ASSERT_TRUE(message_center_ != nullptr); | 76 ASSERT_TRUE(message_center_ != nullptr); |
| 77 |
| 78 web_usb_detector_.reset(new WebUsbDetector()); |
47 } | 79 } |
48 | 80 |
49 void TearDown() override { message_center::MessageCenter::Shutdown(); } | 81 void TearDown() override { |
| 82 BrowserWithTestWindowTest::TearDown(); |
| 83 #if !defined(OS_CHROMEOS) |
| 84 message_center::MessageCenter::Shutdown(); |
| 85 #endif |
| 86 web_usb_detector_.reset(nullptr); |
| 87 } |
| 88 |
| 89 void Initialize() { web_usb_detector_->Initialize(); } |
50 | 90 |
51 protected: | 91 protected: |
52 device::MockDeviceClient device_client_; | 92 device::MockDeviceClient device_client_; |
53 message_center::MessageCenter* message_center_; | 93 message_center::MessageCenter* message_center_; |
54 | 94 |
55 private: | 95 private: |
56 DISALLOW_COPY_AND_ASSIGN(WebUsbDetectorTest); | 96 DISALLOW_COPY_AND_ASSIGN(WebUsbDetectorTest); |
| 97 std::unique_ptr<WebUsbDetector> web_usb_detector_; |
| 98 TestingProfileManager profile_manager_; |
57 }; | 99 }; |
58 | 100 |
59 TEST_F(WebUsbDetectorTest, UsbDeviceAddedAndRemoved) { | 101 TEST_F(WebUsbDetectorTest, UsbDeviceAddedAndRemoved) { |
60 base::string16 product_name = base::UTF8ToUTF16(kProductName_1); | 102 base::string16 product_name = base::UTF8ToUTF16(kProductName_1); |
61 GURL landing_page(kLandingPage_1); | 103 GURL landing_page(kLandingPage_1); |
62 scoped_refptr<device::MockUsbDevice> device(new device::MockUsbDevice( | 104 scoped_refptr<device::MockUsbDevice> device(new device::MockUsbDevice( |
63 0, 1, "Google", kProductName_1, "002", landing_page)); | 105 0, 1, "Google", kProductName_1, "002", landing_page)); |
64 std::string guid = device->guid(); | 106 std::string guid = device->guid(); |
65 | 107 |
66 WebUsbDetector web_usb_detector; | 108 Initialize(); |
67 web_usb_detector.Initialize(); | |
68 | 109 |
69 device_client_.usb_service()->AddDevice(device); | 110 device_client_.usb_service()->AddDevice(device); |
70 message_center::Notification* notification = | 111 message_center::Notification* notification = |
71 message_center_->FindVisibleNotificationById(guid); | 112 message_center_->FindVisibleNotificationById(guid); |
72 ASSERT_TRUE(notification != nullptr); | 113 ASSERT_TRUE(notification != nullptr); |
73 base::string16 expected_title = | 114 base::string16 expected_title = |
74 base::ASCIIToUTF16("Google Product A detected"); | 115 base::ASCIIToUTF16("Google Product A detected"); |
75 EXPECT_EQ(expected_title, notification->title()); | 116 EXPECT_EQ(expected_title, notification->title()); |
76 base::string16 expected_message = | 117 base::string16 expected_message = |
77 base::ASCIIToUTF16("Go to www.google.com/A to connect."); | 118 base::ASCIIToUTF16("Go to www.google.com/A to connect."); |
78 EXPECT_EQ(expected_message, notification->message()); | 119 EXPECT_EQ(expected_message, notification->message()); |
79 EXPECT_TRUE(notification->delegate() != nullptr); | 120 EXPECT_TRUE(notification->delegate() != nullptr); |
80 | 121 |
81 device_client_.usb_service()->RemoveDevice(device); | 122 device_client_.usb_service()->RemoveDevice(device); |
82 // Device is removed, so notification should be removed from the | 123 // Device is removed, so notification should be removed from the |
83 // message_center too. | 124 // message_center too. |
84 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid)); | 125 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid) == nullptr); |
85 } | 126 } |
86 | 127 |
87 TEST_F(WebUsbDetectorTest, UsbDeviceWithoutProductNameAddedAndRemoved) { | 128 TEST_F(WebUsbDetectorTest, UsbDeviceWithoutProductNameAddedAndRemoved) { |
88 std::string product_name = ""; | 129 std::string product_name = ""; |
89 GURL landing_page(kLandingPage_1); | 130 GURL landing_page(kLandingPage_1); |
90 scoped_refptr<device::MockUsbDevice> device(new device::MockUsbDevice( | 131 scoped_refptr<device::MockUsbDevice> device(new device::MockUsbDevice( |
91 0, 1, "Google", product_name, "002", landing_page)); | 132 0, 1, "Google", product_name, "002", landing_page)); |
92 std::string guid = device->guid(); | 133 std::string guid = device->guid(); |
93 | 134 |
94 WebUsbDetector web_usb_detector; | 135 Initialize(); |
95 web_usb_detector.Initialize(); | |
96 | 136 |
97 device_client_.usb_service()->AddDevice(device); | 137 device_client_.usb_service()->AddDevice(device); |
98 // For device without product name, no notification is generated. | 138 // For device without product name, no notification is generated. |
99 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid)); | 139 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid) == nullptr); |
100 | 140 |
101 device_client_.usb_service()->RemoveDevice(device); | 141 device_client_.usb_service()->RemoveDevice(device); |
102 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid)); | 142 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid) == nullptr); |
103 } | 143 } |
104 | 144 |
105 TEST_F(WebUsbDetectorTest, UsbDeviceWithoutLandingPageAddedAndRemoved) { | 145 TEST_F(WebUsbDetectorTest, UsbDeviceWithoutLandingPageAddedAndRemoved) { |
106 GURL landing_page(""); | 146 GURL landing_page(""); |
107 scoped_refptr<device::MockUsbDevice> device(new device::MockUsbDevice( | 147 scoped_refptr<device::MockUsbDevice> device(new device::MockUsbDevice( |
108 0, 1, "Google", kProductName_1, "002", landing_page)); | 148 0, 1, "Google", kProductName_1, "002", landing_page)); |
109 std::string guid = device->guid(); | 149 std::string guid = device->guid(); |
110 | 150 |
111 WebUsbDetector web_usb_detector; | 151 Initialize(); |
112 web_usb_detector.Initialize(); | |
113 | 152 |
114 device_client_.usb_service()->AddDevice(device); | 153 device_client_.usb_service()->AddDevice(device); |
115 // For device without landing page, no notification is generated. | 154 // For device without landing page, no notification is generated. |
116 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid)); | 155 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid) == nullptr); |
117 | 156 |
118 device_client_.usb_service()->RemoveDevice(device); | 157 device_client_.usb_service()->RemoveDevice(device); |
119 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid)); | 158 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid) == nullptr); |
120 } | 159 } |
121 | 160 |
122 TEST_F(WebUsbDetectorTest, UsbDeviceWasThereBeforeAndThenRemoved) { | 161 TEST_F(WebUsbDetectorTest, UsbDeviceWasThereBeforeAndThenRemoved) { |
123 GURL landing_page(kLandingPage_1); | 162 GURL landing_page(kLandingPage_1); |
124 scoped_refptr<device::MockUsbDevice> device(new device::MockUsbDevice( | 163 scoped_refptr<device::MockUsbDevice> device(new device::MockUsbDevice( |
125 0, 1, "Google", kProductName_1, "002", landing_page)); | 164 0, 1, "Google", kProductName_1, "002", landing_page)); |
126 std::string guid = device->guid(); | 165 std::string guid = device->guid(); |
127 | 166 |
128 // USB device was added before web_usb_detector was created. | 167 // USB device was added before web_usb_detector was created. |
129 device_client_.usb_service()->AddDevice(device); | 168 device_client_.usb_service()->AddDevice(device); |
130 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid)); | 169 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid) == nullptr); |
131 | 170 |
132 WebUsbDetector web_usb_detector; | 171 Initialize(); |
133 web_usb_detector.Initialize(); | |
134 | 172 |
135 device_client_.usb_service()->RemoveDevice(device); | 173 device_client_.usb_service()->RemoveDevice(device); |
136 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid)); | 174 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid) == nullptr); |
137 } | 175 } |
138 | 176 |
139 TEST_F( | 177 TEST_F( |
140 WebUsbDetectorTest, | 178 WebUsbDetectorTest, |
141 ThreeUsbDevicesWereThereBeforeAndThenRemovedBeforeWebUsbDetectorWasCreated)
{ | 179 ThreeUsbDevicesWereThereBeforeAndThenRemovedBeforeWebUsbDetectorWasCreated)
{ |
142 base::string16 product_name_1 = base::UTF8ToUTF16(kProductName_1); | 180 base::string16 product_name_1 = base::UTF8ToUTF16(kProductName_1); |
143 GURL landing_page_1(kLandingPage_1); | 181 GURL landing_page_1(kLandingPage_1); |
144 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( | 182 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( |
145 0, 1, "Google", kProductName_1, "002", landing_page_1)); | 183 0, 1, "Google", kProductName_1, "002", landing_page_1)); |
146 std::string guid_1 = device_1->guid(); | 184 std::string guid_1 = device_1->guid(); |
147 | 185 |
148 base::string16 product_name_2 = base::UTF8ToUTF16(kProductName_2); | 186 base::string16 product_name_2 = base::UTF8ToUTF16(kProductName_2); |
149 GURL landing_page_2(kLandingPage_2); | 187 GURL landing_page_2(kLandingPage_2); |
150 scoped_refptr<device::MockUsbDevice> device_2(new device::MockUsbDevice( | 188 scoped_refptr<device::MockUsbDevice> device_2(new device::MockUsbDevice( |
151 3, 4, "Google", kProductName_2, "005", landing_page_2)); | 189 3, 4, "Google", kProductName_2, "005", landing_page_2)); |
152 std::string guid_2 = device_2->guid(); | 190 std::string guid_2 = device_2->guid(); |
153 | 191 |
154 base::string16 product_name_3 = base::UTF8ToUTF16(kProductName_3); | 192 base::string16 product_name_3 = base::UTF8ToUTF16(kProductName_3); |
155 GURL landing_page_3(kLandingPage_3); | 193 GURL landing_page_3(kLandingPage_3); |
156 scoped_refptr<device::MockUsbDevice> device_3(new device::MockUsbDevice( | 194 scoped_refptr<device::MockUsbDevice> device_3(new device::MockUsbDevice( |
157 6, 7, "Google", kProductName_3, "008", landing_page_3)); | 195 6, 7, "Google", kProductName_3, "008", landing_page_3)); |
158 std::string guid_3 = device_3->guid(); | 196 std::string guid_3 = device_3->guid(); |
159 | 197 |
160 // Three usb devices were added and removed before web_usb_detector was | 198 // Three usb devices were added and removed before web_usb_detector was |
161 // created. | 199 // created. |
162 device_client_.usb_service()->AddDevice(device_1); | 200 device_client_.usb_service()->AddDevice(device_1); |
163 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_1)); | 201 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
164 device_client_.usb_service()->AddDevice(device_2); | 202 device_client_.usb_service()->AddDevice(device_2); |
165 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_2)); | 203 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_2) == nullptr); |
166 device_client_.usb_service()->AddDevice(device_3); | 204 device_client_.usb_service()->AddDevice(device_3); |
167 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_3)); | 205 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_3) == nullptr); |
168 | 206 |
169 device_client_.usb_service()->RemoveDevice(device_1); | 207 device_client_.usb_service()->RemoveDevice(device_1); |
170 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_1)); | 208 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
171 device_client_.usb_service()->RemoveDevice(device_2); | 209 device_client_.usb_service()->RemoveDevice(device_2); |
172 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_2)); | 210 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_2) == nullptr); |
173 device_client_.usb_service()->RemoveDevice(device_3); | 211 device_client_.usb_service()->RemoveDevice(device_3); |
174 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_3)); | 212 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_3) == nullptr); |
175 | 213 |
176 WebUsbDetector web_usb_detector; | 214 WebUsbDetector web_usb_detector; |
177 web_usb_detector.Initialize(); | 215 web_usb_detector.Initialize(); |
178 } | 216 } |
179 | 217 |
180 TEST_F( | 218 TEST_F( |
181 WebUsbDetectorTest, | 219 WebUsbDetectorTest, |
182 ThreeUsbDevicesWereThereBeforeAndThenRemovedAfterWebUsbDetectorWasCreated) { | 220 ThreeUsbDevicesWereThereBeforeAndThenRemovedAfterWebUsbDetectorWasCreated) { |
183 base::string16 product_name_1 = base::UTF8ToUTF16(kProductName_1); | 221 base::string16 product_name_1 = base::UTF8ToUTF16(kProductName_1); |
184 GURL landing_page_1(kLandingPage_1); | 222 GURL landing_page_1(kLandingPage_1); |
185 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( | 223 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( |
186 0, 1, "Google", kProductName_1, "002", landing_page_1)); | 224 0, 1, "Google", kProductName_1, "002", landing_page_1)); |
187 std::string guid_1 = device_1->guid(); | 225 std::string guid_1 = device_1->guid(); |
188 | 226 |
189 base::string16 product_name_2 = base::UTF8ToUTF16(kProductName_2); | 227 base::string16 product_name_2 = base::UTF8ToUTF16(kProductName_2); |
190 GURL landing_page_2(kLandingPage_2); | 228 GURL landing_page_2(kLandingPage_2); |
191 scoped_refptr<device::MockUsbDevice> device_2(new device::MockUsbDevice( | 229 scoped_refptr<device::MockUsbDevice> device_2(new device::MockUsbDevice( |
192 3, 4, "Google", kProductName_2, "005", landing_page_2)); | 230 3, 4, "Google", kProductName_2, "005", landing_page_2)); |
193 std::string guid_2 = device_2->guid(); | 231 std::string guid_2 = device_2->guid(); |
194 | 232 |
195 base::string16 product_name_3 = base::UTF8ToUTF16(kProductName_3); | 233 base::string16 product_name_3 = base::UTF8ToUTF16(kProductName_3); |
196 GURL landing_page_3(kLandingPage_3); | 234 GURL landing_page_3(kLandingPage_3); |
197 scoped_refptr<device::MockUsbDevice> device_3(new device::MockUsbDevice( | 235 scoped_refptr<device::MockUsbDevice> device_3(new device::MockUsbDevice( |
198 6, 7, "Google", kProductName_3, "008", landing_page_3)); | 236 6, 7, "Google", kProductName_3, "008", landing_page_3)); |
199 std::string guid_3 = device_3->guid(); | 237 std::string guid_3 = device_3->guid(); |
200 | 238 |
201 // Three usb devices were added before web_usb_detector was created. | 239 // Three usb devices were added before web_usb_detector was created. |
202 device_client_.usb_service()->AddDevice(device_1); | 240 device_client_.usb_service()->AddDevice(device_1); |
203 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_1)); | 241 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
204 device_client_.usb_service()->AddDevice(device_2); | 242 device_client_.usb_service()->AddDevice(device_2); |
205 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_2)); | 243 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_2) == nullptr); |
206 device_client_.usb_service()->AddDevice(device_3); | 244 device_client_.usb_service()->AddDevice(device_3); |
207 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_3)); | 245 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_3) == nullptr); |
208 | 246 |
209 WebUsbDetector web_usb_detector; | 247 Initialize(); |
210 web_usb_detector.Initialize(); | |
211 | 248 |
212 device_client_.usb_service()->RemoveDevice(device_1); | 249 device_client_.usb_service()->RemoveDevice(device_1); |
213 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_1)); | 250 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
214 device_client_.usb_service()->RemoveDevice(device_2); | 251 device_client_.usb_service()->RemoveDevice(device_2); |
215 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_2)); | 252 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_2) == nullptr); |
216 device_client_.usb_service()->RemoveDevice(device_3); | 253 device_client_.usb_service()->RemoveDevice(device_3); |
217 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_3)); | 254 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_3) == nullptr); |
218 } | 255 } |
219 | 256 |
220 TEST_F(WebUsbDetectorTest, | 257 TEST_F(WebUsbDetectorTest, |
221 TwoUsbDevicesWereThereBeforeAndThenRemovedAndNewUsbDeviceAdded) { | 258 TwoUsbDevicesWereThereBeforeAndThenRemovedAndNewUsbDeviceAdded) { |
222 base::string16 product_name_1 = base::UTF8ToUTF16(kProductName_1); | 259 base::string16 product_name_1 = base::UTF8ToUTF16(kProductName_1); |
223 GURL landing_page_1(kLandingPage_1); | 260 GURL landing_page_1(kLandingPage_1); |
224 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( | 261 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( |
225 0, 1, "Google", kProductName_1, "002", landing_page_1)); | 262 0, 1, "Google", kProductName_1, "002", landing_page_1)); |
226 std::string guid_1 = device_1->guid(); | 263 std::string guid_1 = device_1->guid(); |
227 | 264 |
228 base::string16 product_name_2 = base::UTF8ToUTF16(kProductName_2); | 265 base::string16 product_name_2 = base::UTF8ToUTF16(kProductName_2); |
229 GURL landing_page_2(kLandingPage_2); | 266 GURL landing_page_2(kLandingPage_2); |
230 scoped_refptr<device::MockUsbDevice> device_2(new device::MockUsbDevice( | 267 scoped_refptr<device::MockUsbDevice> device_2(new device::MockUsbDevice( |
231 3, 4, "Google", kProductName_2, "005", landing_page_2)); | 268 3, 4, "Google", kProductName_2, "005", landing_page_2)); |
232 std::string guid_2 = device_2->guid(); | 269 std::string guid_2 = device_2->guid(); |
233 | 270 |
234 base::string16 product_name_3 = base::UTF8ToUTF16(kProductName_3); | 271 base::string16 product_name_3 = base::UTF8ToUTF16(kProductName_3); |
235 GURL landing_page_3(kLandingPage_3); | 272 GURL landing_page_3(kLandingPage_3); |
236 scoped_refptr<device::MockUsbDevice> device_3(new device::MockUsbDevice( | 273 scoped_refptr<device::MockUsbDevice> device_3(new device::MockUsbDevice( |
237 6, 7, "Google", kProductName_3, "008", landing_page_3)); | 274 6, 7, "Google", kProductName_3, "008", landing_page_3)); |
238 std::string guid_3 = device_3->guid(); | 275 std::string guid_3 = device_3->guid(); |
239 | 276 |
240 // Two usb devices were added before web_usb_detector was created. | 277 // Two usb devices were added before web_usb_detector was created. |
241 device_client_.usb_service()->AddDevice(device_1); | 278 device_client_.usb_service()->AddDevice(device_1); |
242 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_1)); | 279 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
243 device_client_.usb_service()->AddDevice(device_3); | 280 device_client_.usb_service()->AddDevice(device_3); |
244 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_3)); | 281 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_3) == nullptr); |
245 | 282 |
246 WebUsbDetector web_usb_detector; | 283 Initialize(); |
247 web_usb_detector.Initialize(); | |
248 | 284 |
249 device_client_.usb_service()->RemoveDevice(device_1); | 285 device_client_.usb_service()->RemoveDevice(device_1); |
250 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_1)); | 286 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
251 | 287 |
252 device_client_.usb_service()->AddDevice(device_2); | 288 device_client_.usb_service()->AddDevice(device_2); |
253 message_center::Notification* notification = | 289 message_center::Notification* notification = |
254 message_center_->FindVisibleNotificationById(guid_2); | 290 message_center_->FindVisibleNotificationById(guid_2); |
255 ASSERT_TRUE(notification != nullptr); | 291 ASSERT_TRUE(notification != nullptr); |
256 base::string16 expected_title = | 292 base::string16 expected_title = |
257 base::ASCIIToUTF16("Google Product B detected"); | 293 base::ASCIIToUTF16("Google Product B detected"); |
258 EXPECT_EQ(expected_title, notification->title()); | 294 EXPECT_EQ(expected_title, notification->title()); |
259 base::string16 expected_message = | 295 base::string16 expected_message = |
260 base::ASCIIToUTF16("Go to www.google.com/B to connect."); | 296 base::ASCIIToUTF16("Go to www.google.com/B to connect."); |
261 EXPECT_EQ(expected_message, notification->message()); | 297 EXPECT_EQ(expected_message, notification->message()); |
262 EXPECT_TRUE(notification->delegate() != nullptr); | 298 EXPECT_TRUE(notification->delegate() != nullptr); |
263 | 299 |
264 device_client_.usb_service()->RemoveDevice(device_3); | 300 device_client_.usb_service()->RemoveDevice(device_3); |
265 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_3)); | 301 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_3) == nullptr); |
266 | 302 |
267 device_client_.usb_service()->RemoveDevice(device_2); | 303 device_client_.usb_service()->RemoveDevice(device_2); |
268 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_2)); | 304 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_2) == nullptr); |
269 } | 305 } |
270 | 306 |
271 TEST_F(WebUsbDetectorTest, ThreeUsbDevicesAddedAndRemoved) { | 307 TEST_F(WebUsbDetectorTest, ThreeUsbDevicesAddedAndRemoved) { |
272 base::string16 product_name_1 = base::UTF8ToUTF16(kProductName_1); | 308 base::string16 product_name_1 = base::UTF8ToUTF16(kProductName_1); |
273 GURL landing_page_1(kLandingPage_1); | 309 GURL landing_page_1(kLandingPage_1); |
274 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( | 310 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( |
275 0, 1, "Google", kProductName_1, "002", landing_page_1)); | 311 0, 1, "Google", kProductName_1, "002", landing_page_1)); |
276 std::string guid_1 = device_1->guid(); | 312 std::string guid_1 = device_1->guid(); |
277 | 313 |
278 base::string16 product_name_2 = base::UTF8ToUTF16(kProductName_2); | 314 base::string16 product_name_2 = base::UTF8ToUTF16(kProductName_2); |
279 GURL landing_page_2(kLandingPage_2); | 315 GURL landing_page_2(kLandingPage_2); |
280 scoped_refptr<device::MockUsbDevice> device_2(new device::MockUsbDevice( | 316 scoped_refptr<device::MockUsbDevice> device_2(new device::MockUsbDevice( |
281 3, 4, "Google", kProductName_2, "005", landing_page_2)); | 317 3, 4, "Google", kProductName_2, "005", landing_page_2)); |
282 std::string guid_2 = device_2->guid(); | 318 std::string guid_2 = device_2->guid(); |
283 | 319 |
284 base::string16 product_name_3 = base::UTF8ToUTF16(kProductName_3); | 320 base::string16 product_name_3 = base::UTF8ToUTF16(kProductName_3); |
285 GURL landing_page_3(kLandingPage_3); | 321 GURL landing_page_3(kLandingPage_3); |
286 scoped_refptr<device::MockUsbDevice> device_3(new device::MockUsbDevice( | 322 scoped_refptr<device::MockUsbDevice> device_3(new device::MockUsbDevice( |
287 6, 7, "Google", kProductName_3, "008", landing_page_3)); | 323 6, 7, "Google", kProductName_3, "008", landing_page_3)); |
288 std::string guid_3 = device_3->guid(); | 324 std::string guid_3 = device_3->guid(); |
289 | 325 |
290 WebUsbDetector web_usb_detector; | 326 Initialize(); |
291 web_usb_detector.Initialize(); | |
292 | 327 |
293 device_client_.usb_service()->AddDevice(device_1); | 328 device_client_.usb_service()->AddDevice(device_1); |
294 message_center::Notification* notification_1 = | 329 message_center::Notification* notification_1 = |
295 message_center_->FindVisibleNotificationById(guid_1); | 330 message_center_->FindVisibleNotificationById(guid_1); |
296 ASSERT_TRUE(notification_1 != nullptr); | 331 ASSERT_TRUE(notification_1 != nullptr); |
297 base::string16 expected_title_1 = | 332 base::string16 expected_title_1 = |
298 base::ASCIIToUTF16("Google Product A detected"); | 333 base::ASCIIToUTF16("Google Product A detected"); |
299 EXPECT_EQ(expected_title_1, notification_1->title()); | 334 EXPECT_EQ(expected_title_1, notification_1->title()); |
300 base::string16 expected_message_1 = | 335 base::string16 expected_message_1 = |
301 base::ASCIIToUTF16("Go to www.google.com/A to connect."); | 336 base::ASCIIToUTF16("Go to www.google.com/A to connect."); |
302 EXPECT_EQ(expected_message_1, notification_1->message()); | 337 EXPECT_EQ(expected_message_1, notification_1->message()); |
303 EXPECT_TRUE(notification_1->delegate() != nullptr); | 338 EXPECT_TRUE(notification_1->delegate() != nullptr); |
304 | 339 |
305 device_client_.usb_service()->RemoveDevice(device_1); | 340 device_client_.usb_service()->RemoveDevice(device_1); |
306 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_1)); | 341 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
307 | 342 |
308 device_client_.usb_service()->AddDevice(device_2); | 343 device_client_.usb_service()->AddDevice(device_2); |
309 message_center::Notification* notification_2 = | 344 message_center::Notification* notification_2 = |
310 message_center_->FindVisibleNotificationById(guid_2); | 345 message_center_->FindVisibleNotificationById(guid_2); |
311 ASSERT_TRUE(notification_2 != nullptr); | 346 ASSERT_TRUE(notification_2 != nullptr); |
312 base::string16 expected_title_2 = | 347 base::string16 expected_title_2 = |
313 base::ASCIIToUTF16("Google Product B detected"); | 348 base::ASCIIToUTF16("Google Product B detected"); |
314 EXPECT_EQ(expected_title_2, notification_2->title()); | 349 EXPECT_EQ(expected_title_2, notification_2->title()); |
315 base::string16 expected_message_2 = | 350 base::string16 expected_message_2 = |
316 base::ASCIIToUTF16("Go to www.google.com/B to connect."); | 351 base::ASCIIToUTF16("Go to www.google.com/B to connect."); |
317 EXPECT_EQ(expected_message_2, notification_2->message()); | 352 EXPECT_EQ(expected_message_2, notification_2->message()); |
318 EXPECT_TRUE(notification_2->delegate() != nullptr); | 353 EXPECT_TRUE(notification_2->delegate() != nullptr); |
319 | 354 |
320 device_client_.usb_service()->RemoveDevice(device_2); | 355 device_client_.usb_service()->RemoveDevice(device_2); |
321 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_2)); | 356 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_2) == nullptr); |
322 | 357 |
323 device_client_.usb_service()->AddDevice(device_3); | 358 device_client_.usb_service()->AddDevice(device_3); |
324 message_center::Notification* notification_3 = | 359 message_center::Notification* notification_3 = |
325 message_center_->FindVisibleNotificationById(guid_3); | 360 message_center_->FindVisibleNotificationById(guid_3); |
326 ASSERT_TRUE(notification_3 != nullptr); | 361 ASSERT_TRUE(notification_3 != nullptr); |
327 base::string16 expected_title_3 = | 362 base::string16 expected_title_3 = |
328 base::ASCIIToUTF16("Google Product C detected"); | 363 base::ASCIIToUTF16("Google Product C detected"); |
329 EXPECT_EQ(expected_title_3, notification_3->title()); | 364 EXPECT_EQ(expected_title_3, notification_3->title()); |
330 base::string16 expected_message_3 = | 365 base::string16 expected_message_3 = |
331 base::ASCIIToUTF16("Go to www.google.com/C to connect."); | 366 base::ASCIIToUTF16("Go to www.google.com/C to connect."); |
332 EXPECT_EQ(expected_message_3, notification_3->message()); | 367 EXPECT_EQ(expected_message_3, notification_3->message()); |
333 EXPECT_TRUE(notification_3->delegate() != nullptr); | 368 EXPECT_TRUE(notification_3->delegate() != nullptr); |
334 | 369 |
335 device_client_.usb_service()->RemoveDevice(device_3); | 370 device_client_.usb_service()->RemoveDevice(device_3); |
336 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_3)); | 371 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_3) == nullptr); |
337 } | 372 } |
338 | 373 |
339 TEST_F(WebUsbDetectorTest, ThreeUsbDeviceAddedAndRemovedDifferentOrder) { | 374 TEST_F(WebUsbDetectorTest, ThreeUsbDeviceAddedAndRemovedDifferentOrder) { |
340 base::string16 product_name_1 = base::UTF8ToUTF16(kProductName_1); | 375 base::string16 product_name_1 = base::UTF8ToUTF16(kProductName_1); |
341 GURL landing_page_1(kLandingPage_1); | 376 GURL landing_page_1(kLandingPage_1); |
342 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( | 377 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( |
343 0, 1, "Google", kProductName_1, "002", landing_page_1)); | 378 0, 1, "Google", kProductName_1, "002", landing_page_1)); |
344 std::string guid_1 = device_1->guid(); | 379 std::string guid_1 = device_1->guid(); |
345 | 380 |
346 base::string16 product_name_2 = base::UTF8ToUTF16(kProductName_2); | 381 base::string16 product_name_2 = base::UTF8ToUTF16(kProductName_2); |
347 GURL landing_page_2(kLandingPage_2); | 382 GURL landing_page_2(kLandingPage_2); |
348 scoped_refptr<device::MockUsbDevice> device_2(new device::MockUsbDevice( | 383 scoped_refptr<device::MockUsbDevice> device_2(new device::MockUsbDevice( |
349 3, 4, "Google", kProductName_2, "005", landing_page_2)); | 384 3, 4, "Google", kProductName_2, "005", landing_page_2)); |
350 std::string guid_2 = device_2->guid(); | 385 std::string guid_2 = device_2->guid(); |
351 | 386 |
352 base::string16 product_name_3 = base::UTF8ToUTF16(kProductName_3); | 387 base::string16 product_name_3 = base::UTF8ToUTF16(kProductName_3); |
353 GURL landing_page_3(kLandingPage_3); | 388 GURL landing_page_3(kLandingPage_3); |
354 scoped_refptr<device::MockUsbDevice> device_3(new device::MockUsbDevice( | 389 scoped_refptr<device::MockUsbDevice> device_3(new device::MockUsbDevice( |
355 6, 7, "Google", kProductName_3, "008", landing_page_3)); | 390 6, 7, "Google", kProductName_3, "008", landing_page_3)); |
356 std::string guid_3 = device_3->guid(); | 391 std::string guid_3 = device_3->guid(); |
357 | 392 |
358 WebUsbDetector web_usb_detector; | 393 Initialize(); |
359 web_usb_detector.Initialize(); | |
360 | 394 |
361 device_client_.usb_service()->AddDevice(device_1); | 395 device_client_.usb_service()->AddDevice(device_1); |
362 message_center::Notification* notification_1 = | 396 message_center::Notification* notification_1 = |
363 message_center_->FindVisibleNotificationById(guid_1); | 397 message_center_->FindVisibleNotificationById(guid_1); |
364 ASSERT_TRUE(notification_1 != nullptr); | 398 ASSERT_TRUE(notification_1 != nullptr); |
365 base::string16 expected_title_1 = | 399 base::string16 expected_title_1 = |
366 base::ASCIIToUTF16("Google Product A detected"); | 400 base::ASCIIToUTF16("Google Product A detected"); |
367 EXPECT_EQ(expected_title_1, notification_1->title()); | 401 EXPECT_EQ(expected_title_1, notification_1->title()); |
368 base::string16 expected_message_1 = | 402 base::string16 expected_message_1 = |
369 base::ASCIIToUTF16("Go to www.google.com/A to connect."); | 403 base::ASCIIToUTF16("Go to www.google.com/A to connect."); |
370 EXPECT_EQ(expected_message_1, notification_1->message()); | 404 EXPECT_EQ(expected_message_1, notification_1->message()); |
371 EXPECT_TRUE(notification_1->delegate() != nullptr); | 405 EXPECT_TRUE(notification_1->delegate() != nullptr); |
372 | 406 |
373 device_client_.usb_service()->AddDevice(device_2); | 407 device_client_.usb_service()->AddDevice(device_2); |
374 message_center::Notification* notification_2 = | 408 message_center::Notification* notification_2 = |
375 message_center_->FindVisibleNotificationById(guid_2); | 409 message_center_->FindVisibleNotificationById(guid_2); |
376 ASSERT_TRUE(notification_2 != nullptr); | 410 ASSERT_TRUE(notification_2 != nullptr); |
377 base::string16 expected_title_2 = | 411 base::string16 expected_title_2 = |
378 base::ASCIIToUTF16("Google Product B detected"); | 412 base::ASCIIToUTF16("Google Product B detected"); |
379 EXPECT_EQ(expected_title_2, notification_2->title()); | 413 EXPECT_EQ(expected_title_2, notification_2->title()); |
380 base::string16 expected_message_2 = | 414 base::string16 expected_message_2 = |
381 base::ASCIIToUTF16("Go to www.google.com/B to connect."); | 415 base::ASCIIToUTF16("Go to www.google.com/B to connect."); |
382 EXPECT_EQ(expected_message_2, notification_2->message()); | 416 EXPECT_EQ(expected_message_2, notification_2->message()); |
383 EXPECT_TRUE(notification_2->delegate() != nullptr); | 417 EXPECT_TRUE(notification_2->delegate() != nullptr); |
384 | 418 |
385 device_client_.usb_service()->RemoveDevice(device_2); | 419 device_client_.usb_service()->RemoveDevice(device_2); |
386 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_2)); | 420 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_2) == nullptr); |
387 | 421 |
388 device_client_.usb_service()->AddDevice(device_3); | 422 device_client_.usb_service()->AddDevice(device_3); |
389 message_center::Notification* notification_3 = | 423 message_center::Notification* notification_3 = |
390 message_center_->FindVisibleNotificationById(guid_3); | 424 message_center_->FindVisibleNotificationById(guid_3); |
391 ASSERT_TRUE(notification_3 != nullptr); | 425 ASSERT_TRUE(notification_3 != nullptr); |
392 base::string16 expected_title_3 = | 426 base::string16 expected_title_3 = |
393 base::ASCIIToUTF16("Google Product C detected"); | 427 base::ASCIIToUTF16("Google Product C detected"); |
394 EXPECT_EQ(expected_title_3, notification_3->title()); | 428 EXPECT_EQ(expected_title_3, notification_3->title()); |
395 base::string16 expected_message_3 = | 429 base::string16 expected_message_3 = |
396 base::ASCIIToUTF16("Go to www.google.com/C to connect."); | 430 base::ASCIIToUTF16("Go to www.google.com/C to connect."); |
397 EXPECT_EQ(expected_message_3, notification_3->message()); | 431 EXPECT_EQ(expected_message_3, notification_3->message()); |
398 EXPECT_TRUE(notification_3->delegate() != nullptr); | 432 EXPECT_TRUE(notification_3->delegate() != nullptr); |
399 | 433 |
400 device_client_.usb_service()->RemoveDevice(device_1); | 434 device_client_.usb_service()->RemoveDevice(device_1); |
401 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_1)); | 435 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
402 | 436 |
403 device_client_.usb_service()->RemoveDevice(device_3); | 437 device_client_.usb_service()->RemoveDevice(device_3); |
404 EXPECT_EQ(nullptr, message_center_->FindVisibleNotificationById(guid_3)); | 438 EXPECT_TRUE(message_center_->FindVisibleNotificationById(guid_3) == nullptr); |
405 } | 439 } |
| 440 |
| 441 TEST_F(WebUsbDetectorTest, UsbDeviceAddedWhileActiveTabUrlIsLandingPage) { |
| 442 GURL landing_page_1(kLandingPage_1); |
| 443 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( |
| 444 0, 1, "Google", kProductName_1, "002", landing_page_1)); |
| 445 std::string guid_1 = device_1->guid(); |
| 446 |
| 447 Initialize(); |
| 448 |
| 449 AddTab(browser(), landing_page_1); |
| 450 |
| 451 device_client_.usb_service()->AddDevice(device_1); |
| 452 ASSERT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
| 453 } |
| 454 |
| 455 TEST_F(WebUsbDetectorTest, UsbDeviceAddedBeforeActiveTabUrlIsLandingPage) { |
| 456 GURL landing_page_1(kLandingPage_1); |
| 457 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( |
| 458 0, 1, "Google", kProductName_1, "002", landing_page_1)); |
| 459 std::string guid_1 = device_1->guid(); |
| 460 |
| 461 base::HistogramTester histogram_tester; |
| 462 Initialize(); |
| 463 |
| 464 device_client_.usb_service()->AddDevice(device_1); |
| 465 ASSERT_TRUE(message_center_->FindVisibleNotificationById(guid_1) != nullptr); |
| 466 |
| 467 AddTab(browser(), landing_page_1); |
| 468 ASSERT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
| 469 histogram_tester.ExpectUniqueSample("WebUsb.NotificationClosed", 3, 1); |
| 470 } |
| 471 |
| 472 TEST_F(WebUsbDetectorTest, |
| 473 NotificationClickedWhileInactiveTabUrlIsLandingPage) { |
| 474 GURL landing_page_1(kLandingPage_1); |
| 475 GURL landing_page_2(kLandingPage_2); |
| 476 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( |
| 477 0, 1, "Google", kProductName_1, "002", landing_page_1)); |
| 478 std::string guid_1 = device_1->guid(); |
| 479 TabStripModel* tab_strip_model = browser()->tab_strip_model(); |
| 480 |
| 481 base::HistogramTester histogram_tester; |
| 482 Initialize(); |
| 483 |
| 484 AddTab(browser(), landing_page_1); |
| 485 AddTab(browser(), landing_page_2); |
| 486 |
| 487 device_client_.usb_service()->AddDevice(device_1); |
| 488 message_center::Notification* notification_1 = |
| 489 message_center_->FindVisibleNotificationById(guid_1); |
| 490 ASSERT_TRUE(notification_1 != nullptr); |
| 491 EXPECT_EQ(2, tab_strip_model->count()); |
| 492 |
| 493 notification_1->Click(); |
| 494 EXPECT_EQ(2, tab_strip_model->count()); |
| 495 content::WebContents* web_contents = |
| 496 tab_strip_model->GetWebContentsAt(tab_strip_model->active_index()); |
| 497 EXPECT_EQ(landing_page_1, web_contents->GetURL()); |
| 498 ASSERT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
| 499 histogram_tester.ExpectUniqueSample("WebUsb.NotificationClosed", 2, 1); |
| 500 } |
| 501 |
| 502 TEST_F(WebUsbDetectorTest, NotificationClickedWhileNoTabUrlIsLandingPage) { |
| 503 GURL landing_page_1(kLandingPage_1); |
| 504 GURL landing_page_2(kLandingPage_2); |
| 505 scoped_refptr<device::MockUsbDevice> device_1(new device::MockUsbDevice( |
| 506 0, 1, "Google", kProductName_1, "002", landing_page_1)); |
| 507 std::string guid_1 = device_1->guid(); |
| 508 TabStripModel* tab_strip_model = browser()->tab_strip_model(); |
| 509 |
| 510 base::HistogramTester histogram_tester; |
| 511 Initialize(); |
| 512 |
| 513 device_client_.usb_service()->AddDevice(device_1); |
| 514 message_center::Notification* notification_1 = |
| 515 message_center_->FindVisibleNotificationById(guid_1); |
| 516 ASSERT_TRUE(notification_1 != nullptr); |
| 517 EXPECT_EQ(0, tab_strip_model->count()); |
| 518 |
| 519 notification_1->Click(); |
| 520 EXPECT_EQ(1, tab_strip_model->count()); |
| 521 content::WebContents* web_contents = |
| 522 tab_strip_model->GetWebContentsAt(tab_strip_model->active_index()); |
| 523 EXPECT_EQ(landing_page_1, web_contents->GetURL()); |
| 524 ASSERT_TRUE(message_center_->FindVisibleNotificationById(guid_1) == nullptr); |
| 525 histogram_tester.ExpectUniqueSample("WebUsb.NotificationClosed", 2, 1); |
| 526 } |
| 527 |
406 #endif // !OS_WIN | 528 #endif // !OS_WIN |
OLD | NEW |