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

Side by Side Diff: chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc

Issue 1686903002: [Abandoned] Rename PermissionBubbleManager to PermissionRequestManager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tests compile Created 4 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include <stddef.h>
6
7 #include "base/bind.h"
8 #include "base/command_line.h"
9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/ui/website_settings/mock_permission_bubble_factory.h"
12 #include "chrome/browser/ui/website_settings/mock_permission_bubble_request.h"
13 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
14 #include "chrome/browser/ui/website_settings/permission_bubble_request.h"
15 #include "chrome/common/chrome_switches.h"
16 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
17 #include "testing/gtest/include/gtest/gtest.h"
18
19 class PermissionBubbleManagerTest : public ChromeRenderViewHostTestHarness {
20 public:
21 PermissionBubbleManagerTest()
22 : ChromeRenderViewHostTestHarness(),
23 request1_("test1"),
24 request2_("test2"),
25 iframe_request_same_domain_("iframe",
26 GURL("http://www.google.com/some/url")),
27 iframe_request_other_domain_("iframe",
28 GURL("http://www.youtube.com")) {}
29 ~PermissionBubbleManagerTest() override {}
30
31 void SetUp() override {
32 ChromeRenderViewHostTestHarness::SetUp();
33 SetContents(CreateTestWebContents());
34 NavigateAndCommit(GURL("http://www.google.com"));
35
36 manager_.reset(new PermissionBubbleManager(web_contents()));
37 view_factory_.reset(new MockPermissionBubbleFactory(false, manager_.get()));
38 }
39
40 void TearDown() override {
41 view_factory_.reset();
42 manager_.reset();
43 ChromeRenderViewHostTestHarness::TearDown();
44 }
45
46 void ToggleAccept(int index, bool value) {
47 manager_->ToggleAccept(index, value);
48 }
49
50 void Accept() {
51 manager_->Accept();
52 }
53
54 void Closing() {
55 manager_->Closing();
56 }
57
58 void WaitForFrameLoad() {
59 // PermissionBubbleManager ignores all parameters. Yay?
60 manager_->DocumentLoadedInFrame(NULL);
61 base::MessageLoop::current()->RunUntilIdle();
62 }
63
64 void WaitForCoalescing() {
65 manager_->DocumentOnLoadCompletedInMainFrame();
66 base::MessageLoop::current()->RunUntilIdle();
67 }
68
69 void MockTabSwitchAway() { manager_->HideBubble(); }
70
71 void MockTabSwitchBack() { manager_->DisplayPendingRequests(); }
72
73 virtual void NavigationEntryCommitted(
74 const content::LoadCommittedDetails& details) {
75 manager_->NavigationEntryCommitted(details);
76 }
77
78 protected:
79 MockPermissionBubbleRequest request1_;
80 MockPermissionBubbleRequest request2_;
81 MockPermissionBubbleRequest iframe_request_same_domain_;
82 MockPermissionBubbleRequest iframe_request_other_domain_;
83 std::unique_ptr<PermissionBubbleManager> manager_;
84 std::unique_ptr<MockPermissionBubbleFactory> view_factory_;
85 };
86
87 TEST_F(PermissionBubbleManagerTest, SingleRequest) {
88 manager_->AddRequest(&request1_);
89 manager_->DisplayPendingRequests();
90 WaitForCoalescing();
91
92 EXPECT_TRUE(view_factory_->is_visible());
93 ASSERT_EQ(view_factory_->request_count(), 1);
94
95 ToggleAccept(0, true);
96 Accept();
97 EXPECT_TRUE(request1_.granted());
98 }
99
100 TEST_F(PermissionBubbleManagerTest, SingleRequestViewFirst) {
101 manager_->DisplayPendingRequests();
102 manager_->AddRequest(&request1_);
103 WaitForCoalescing();
104
105 EXPECT_TRUE(view_factory_->is_visible());
106 ASSERT_EQ(view_factory_->request_count(), 1);
107
108 ToggleAccept(0, true);
109 Accept();
110 EXPECT_TRUE(request1_.granted());
111 }
112
113 TEST_F(PermissionBubbleManagerTest, TwoRequests) {
114 manager_->AddRequest(&request1_);
115 manager_->AddRequest(&request2_);
116 manager_->DisplayPendingRequests();
117 WaitForCoalescing();
118
119 EXPECT_TRUE(view_factory_->is_visible());
120 ASSERT_EQ(view_factory_->request_count(), 2);
121
122 ToggleAccept(0, true);
123 ToggleAccept(1, false);
124 Accept();
125 EXPECT_TRUE(request1_.granted());
126 EXPECT_FALSE(request2_.granted());
127 }
128
129 TEST_F(PermissionBubbleManagerTest, TwoRequestsTabSwitch) {
130 manager_->AddRequest(&request1_);
131 manager_->AddRequest(&request2_);
132 manager_->DisplayPendingRequests();
133 WaitForCoalescing();
134
135 EXPECT_TRUE(view_factory_->is_visible());
136 ASSERT_EQ(view_factory_->request_count(), 2);
137
138 ToggleAccept(0, true);
139 ToggleAccept(1, false);
140
141 MockTabSwitchAway();
142 EXPECT_FALSE(view_factory_->is_visible());
143
144 MockTabSwitchBack();
145 WaitForCoalescing();
146 EXPECT_TRUE(view_factory_->is_visible());
147 ASSERT_EQ(view_factory_->request_count(), 2);
148
149 Accept();
150 EXPECT_TRUE(request1_.granted());
151 EXPECT_FALSE(request2_.granted());
152 }
153
154 TEST_F(PermissionBubbleManagerTest, NoRequests) {
155 manager_->DisplayPendingRequests();
156 WaitForCoalescing();
157 EXPECT_FALSE(view_factory_->is_visible());
158 }
159
160 TEST_F(PermissionBubbleManagerTest, NoView) {
161 manager_->AddRequest(&request1_);
162 // Don't display the pending requests.
163 WaitForCoalescing();
164 EXPECT_FALSE(view_factory_->is_visible());
165 }
166
167 TEST_F(PermissionBubbleManagerTest, TwoRequestsCoalesce) {
168 manager_->DisplayPendingRequests();
169 manager_->AddRequest(&request1_);
170 manager_->AddRequest(&request2_);
171 EXPECT_FALSE(view_factory_->is_visible());
172 WaitForCoalescing();
173
174 EXPECT_TRUE(view_factory_->is_visible());
175 ASSERT_EQ(view_factory_->request_count(), 2);
176 }
177
178 TEST_F(PermissionBubbleManagerTest, TwoRequestsDoNotCoalesce) {
179 manager_->DisplayPendingRequests();
180 manager_->AddRequest(&request1_);
181 WaitForCoalescing();
182 manager_->AddRequest(&request2_);
183
184 EXPECT_TRUE(view_factory_->is_visible());
185 ASSERT_EQ(view_factory_->request_count(), 1);
186 }
187
188 TEST_F(PermissionBubbleManagerTest, TwoRequestsShownInTwoBubbles) {
189 manager_->DisplayPendingRequests();
190 manager_->AddRequest(&request1_);
191 WaitForCoalescing();
192 manager_->AddRequest(&request2_);
193
194 EXPECT_TRUE(view_factory_->is_visible());
195 ASSERT_EQ(view_factory_->request_count(), 1);
196
197 Accept();
198 WaitForCoalescing();
199
200 EXPECT_TRUE(view_factory_->is_visible());
201 ASSERT_EQ(view_factory_->request_count(), 1);
202 ASSERT_EQ(view_factory_->show_count(), 2);
203 }
204
205 TEST_F(PermissionBubbleManagerTest, TestAddDuplicateRequest) {
206 manager_->DisplayPendingRequests();
207 manager_->AddRequest(&request1_);
208 manager_->AddRequest(&request2_);
209 manager_->AddRequest(&request1_);
210
211 WaitForCoalescing();
212 EXPECT_TRUE(view_factory_->is_visible());
213 ASSERT_EQ(view_factory_->request_count(), 2);
214 }
215
216 TEST_F(PermissionBubbleManagerTest, SequentialRequests) {
217 manager_->DisplayPendingRequests();
218 manager_->AddRequest(&request1_);
219 WaitForCoalescing();
220 EXPECT_TRUE(view_factory_->is_visible());
221
222 Accept();
223 EXPECT_TRUE(request1_.granted());
224
225 EXPECT_FALSE(view_factory_->is_visible());
226
227 manager_->AddRequest(&request2_);
228 WaitForCoalescing();
229 EXPECT_TRUE(view_factory_->is_visible());
230 Accept();
231 EXPECT_FALSE(view_factory_->is_visible());
232 EXPECT_TRUE(request2_.granted());
233 }
234
235 TEST_F(PermissionBubbleManagerTest, SameRequestRejected) {
236 manager_->DisplayPendingRequests();
237 manager_->AddRequest(&request1_);
238 manager_->AddRequest(&request1_);
239 EXPECT_FALSE(request1_.finished());
240
241 WaitForCoalescing();
242 EXPECT_TRUE(view_factory_->is_visible());
243 ASSERT_EQ(view_factory_->request_count(), 1);
244 }
245
246 TEST_F(PermissionBubbleManagerTest, DuplicateRequestCancelled) {
247 manager_->DisplayPendingRequests();
248 manager_->AddRequest(&request1_);
249 MockPermissionBubbleRequest dupe_request("test1");
250 manager_->AddRequest(&dupe_request);
251 EXPECT_FALSE(dupe_request.finished());
252 EXPECT_FALSE(request1_.finished());
253 manager_->CancelRequest(&request1_);
254 EXPECT_TRUE(dupe_request.finished());
255 EXPECT_TRUE(request1_.finished());
256 }
257
258 TEST_F(PermissionBubbleManagerTest, DuplicateQueuedRequest) {
259 manager_->DisplayPendingRequests();
260 manager_->AddRequest(&request1_);
261 WaitForCoalescing();
262 manager_->AddRequest(&request2_);
263
264 MockPermissionBubbleRequest dupe_request("test1");
265 manager_->AddRequest(&dupe_request);
266 EXPECT_FALSE(dupe_request.finished());
267 EXPECT_FALSE(request1_.finished());
268
269 MockPermissionBubbleRequest dupe_request2("test2");
270 manager_->AddRequest(&dupe_request2);
271 EXPECT_FALSE(dupe_request2.finished());
272 EXPECT_FALSE(request2_.finished());
273
274 manager_->CancelRequest(&request1_);
275 EXPECT_TRUE(dupe_request.finished());
276 EXPECT_TRUE(request1_.finished());
277
278 manager_->CancelRequest(&request2_);
279 EXPECT_TRUE(dupe_request2.finished());
280 EXPECT_TRUE(request2_.finished());
281 }
282
283 TEST_F(PermissionBubbleManagerTest, ForgetRequestsOnPageNavigation) {
284 manager_->DisplayPendingRequests();
285 manager_->AddRequest(&request1_);
286 WaitForCoalescing();
287 manager_->AddRequest(&request2_);
288 manager_->AddRequest(&iframe_request_other_domain_);
289
290 EXPECT_TRUE(view_factory_->is_visible());
291 ASSERT_EQ(view_factory_->request_count(), 1);
292
293 NavigateAndCommit(GURL("http://www2.google.com/"));
294 WaitForCoalescing();
295
296 EXPECT_FALSE(view_factory_->is_visible());
297 EXPECT_TRUE(request1_.finished());
298 EXPECT_TRUE(request2_.finished());
299 EXPECT_TRUE(iframe_request_other_domain_.finished());
300 }
301
302 TEST_F(PermissionBubbleManagerTest, TestCancelQueued) {
303 manager_->AddRequest(&request1_);
304 EXPECT_FALSE(view_factory_->is_visible());
305
306 manager_->CancelRequest(&request1_);
307 EXPECT_TRUE(request1_.finished());
308 EXPECT_FALSE(view_factory_->is_visible());
309 manager_->DisplayPendingRequests();
310 EXPECT_FALSE(view_factory_->is_visible());
311
312 manager_->AddRequest(&request2_);
313 WaitForCoalescing();
314 EXPECT_TRUE(view_factory_->is_visible());
315 ASSERT_EQ(view_factory_->request_count(), 1);
316 }
317
318 TEST_F(PermissionBubbleManagerTest, TestCancelWhileDialogShown) {
319 manager_->DisplayPendingRequests();
320 manager_->AddRequest(&request1_);
321 WaitForCoalescing();
322
323 view_factory_->SetCanUpdateUi(true);
324 EXPECT_TRUE(view_factory_->is_visible());
325 EXPECT_FALSE(request1_.finished());
326 manager_->CancelRequest(&request1_);
327 WaitForCoalescing();
328 EXPECT_TRUE(request1_.finished());
329 EXPECT_FALSE(view_factory_->is_visible());
330 }
331
332 TEST_F(PermissionBubbleManagerTest, TestCancelWhileDialogShownNoUpdate) {
333 manager_->DisplayPendingRequests();
334 view_factory_->SetCanUpdateUi(false);
335 manager_->AddRequest(&request1_);
336 WaitForCoalescing();
337 view_factory_->SetCanUpdateUi(false);
338
339 EXPECT_TRUE(view_factory_->is_visible());
340 EXPECT_FALSE(request1_.finished());
341 manager_->CancelRequest(&request1_);
342 EXPECT_TRUE(request1_.finished());
343 EXPECT_TRUE(view_factory_->is_visible());
344 Closing();
345 }
346
347 TEST_F(PermissionBubbleManagerTest, TestCancelPendingRequest) {
348 manager_->DisplayPendingRequests();
349 manager_->AddRequest(&request1_);
350 WaitForCoalescing();
351 manager_->AddRequest(&request2_);
352
353 EXPECT_TRUE(view_factory_->is_visible());
354 ASSERT_EQ(view_factory_->request_count(), 1);
355 manager_->CancelRequest(&request2_);
356
357 EXPECT_TRUE(view_factory_->is_visible());
358 EXPECT_FALSE(request1_.finished());
359 EXPECT_TRUE(request2_.finished());
360 }
361
362 TEST_F(PermissionBubbleManagerTest, MainFrameNoRequestIFrameRequest) {
363 manager_->DisplayPendingRequests();
364 manager_->AddRequest(&iframe_request_same_domain_);
365 WaitForCoalescing();
366 WaitForFrameLoad();
367
368 EXPECT_TRUE(view_factory_->is_visible());
369 Closing();
370 EXPECT_TRUE(iframe_request_same_domain_.finished());
371 }
372
373 TEST_F(PermissionBubbleManagerTest, MainFrameAndIFrameRequestSameDomain) {
374 manager_->DisplayPendingRequests();
375 manager_->AddRequest(&request1_);
376 manager_->AddRequest(&iframe_request_same_domain_);
377 WaitForFrameLoad();
378 WaitForCoalescing();
379
380 EXPECT_TRUE(view_factory_->is_visible());
381 ASSERT_EQ(view_factory_->request_count(), 2);
382 Closing();
383 EXPECT_TRUE(request1_.finished());
384 EXPECT_TRUE(iframe_request_same_domain_.finished());
385 EXPECT_FALSE(view_factory_->is_visible());
386 }
387
388 TEST_F(PermissionBubbleManagerTest, MainFrameAndIFrameRequestOtherDomain) {
389 manager_->DisplayPendingRequests();
390 manager_->AddRequest(&request1_);
391 manager_->AddRequest(&iframe_request_other_domain_);
392 WaitForFrameLoad();
393 WaitForCoalescing();
394
395 EXPECT_TRUE(view_factory_->is_visible());
396 Closing();
397 EXPECT_TRUE(request1_.finished());
398 EXPECT_FALSE(iframe_request_other_domain_.finished());
399 EXPECT_TRUE(view_factory_->is_visible());
400 Closing();
401 EXPECT_TRUE(iframe_request_other_domain_.finished());
402 }
403
404 TEST_F(PermissionBubbleManagerTest, IFrameRequestWhenMainRequestVisible) {
405 manager_->DisplayPendingRequests();
406 manager_->AddRequest(&request1_);
407 WaitForCoalescing();
408 EXPECT_TRUE(view_factory_->is_visible());
409
410 manager_->AddRequest(&iframe_request_same_domain_);
411 WaitForFrameLoad();
412 ASSERT_EQ(view_factory_->request_count(), 1);
413 Closing();
414 EXPECT_TRUE(request1_.finished());
415 EXPECT_FALSE(iframe_request_same_domain_.finished());
416 EXPECT_TRUE(view_factory_->is_visible());
417 ASSERT_EQ(view_factory_->request_count(), 1);
418 Closing();
419 EXPECT_TRUE(iframe_request_same_domain_.finished());
420 }
421
422 TEST_F(PermissionBubbleManagerTest,
423 IFrameRequestOtherDomainWhenMainRequestVisible) {
424 manager_->DisplayPendingRequests();
425 manager_->AddRequest(&request1_);
426 WaitForCoalescing();
427 EXPECT_TRUE(view_factory_->is_visible());
428
429 manager_->AddRequest(&iframe_request_other_domain_);
430 WaitForFrameLoad();
431 Closing();
432 EXPECT_TRUE(request1_.finished());
433 EXPECT_FALSE(iframe_request_other_domain_.finished());
434 EXPECT_TRUE(view_factory_->is_visible());
435 Closing();
436 EXPECT_TRUE(iframe_request_other_domain_.finished());
437 }
438
439 TEST_F(PermissionBubbleManagerTest, RequestsDontNeedUserGesture) {
440 manager_->DisplayPendingRequests();
441 WaitForFrameLoad();
442 WaitForCoalescing();
443 manager_->AddRequest(&request1_);
444 manager_->AddRequest(&iframe_request_other_domain_);
445 manager_->AddRequest(&request2_);
446 base::MessageLoop::current()->RunUntilIdle();
447
448 EXPECT_TRUE(view_factory_->is_visible());
449 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698