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

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

Issue 292453009: Handles iframe permissions requests separately, in a subsequent bubble. (Closed) Base URL: https://chromium.googlesource.com/chromium/src
Patch Set: fixed iframe check Created 6 years, 7 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
« no previous file with comments | « chrome/browser/ui/website_settings/permission_bubble_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/command_line.h" 5 #include "base/command_line.h"
6 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/ui/website_settings/mock_permission_bubble_request.h" 8 #include "chrome/browser/ui/website_settings/mock_permission_bubble_request.h"
9 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h" 9 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
10 #include "chrome/browser/ui/website_settings/permission_bubble_request.h" 10 #include "chrome/browser/ui/website_settings/permission_bubble_request.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 std::vector<bool> permission_states_; 57 std::vector<bool> permission_states_;
58 }; 58 };
59 59
60 } // namespace 60 } // namespace
61 61
62 class PermissionBubbleManagerTest : public ChromeRenderViewHostTestHarness { 62 class PermissionBubbleManagerTest : public ChromeRenderViewHostTestHarness {
63 public: 63 public:
64 PermissionBubbleManagerTest() 64 PermissionBubbleManagerTest()
65 : ChromeRenderViewHostTestHarness(), 65 : ChromeRenderViewHostTestHarness(),
66 request1_("test1"), 66 request1_("test1"),
67 request2_("test2") {} 67 request2_("test2"),
68 iframe_request_same_domain_("iframe",
69 GURL("http://www.google.com/some/url")),
70 iframe_request_other_domain_("iframe",
71 GURL("http://www.youtube.com")) {}
68 virtual ~PermissionBubbleManagerTest() {} 72 virtual ~PermissionBubbleManagerTest() {}
69 73
70 virtual void SetUp() OVERRIDE { 74 virtual void SetUp() OVERRIDE {
71 ChromeRenderViewHostTestHarness::SetUp(); 75 ChromeRenderViewHostTestHarness::SetUp();
72 SetContents(CreateTestWebContents()); 76 SetContents(CreateTestWebContents());
77 NavigateAndCommit(GURL("http://www.google.com"));
73 78
74 manager_.reset(new PermissionBubbleManager(web_contents())); 79 manager_.reset(new PermissionBubbleManager(web_contents()));
75 } 80 }
76 81
77 virtual void TearDown() OVERRIDE { 82 virtual void TearDown() OVERRIDE {
78 manager_.reset(); 83 manager_.reset();
79 ChromeRenderViewHostTestHarness::TearDown(); 84 ChromeRenderViewHostTestHarness::TearDown();
80 } 85 }
81 86
82 void ToggleAccept(int index, bool value) { 87 void ToggleAccept(int index, bool value) {
83 manager_->ToggleAccept(index, value); 88 manager_->ToggleAccept(index, value);
84 } 89 }
85 90
86 void Accept() { 91 void Accept() {
87 manager_->Accept(); 92 manager_->Accept();
88 } 93 }
89 94
90 void Closing() { 95 void Closing() {
91 manager_->Closing(); 96 manager_->Closing();
92 } 97 }
93 98
99 void WaitForFrameLoad() {
100 manager_->DocumentLoadedInFrame(0, NULL);
101 base::MessageLoop::current()->RunUntilIdle();
102 }
103
94 void WaitForCoalescing() { 104 void WaitForCoalescing() {
95 manager_->DocumentOnLoadCompletedInMainFrame(); 105 manager_->DocumentOnLoadCompletedInMainFrame();
96 base::MessageLoop::current()->RunUntilIdle(); 106 base::MessageLoop::current()->RunUntilIdle();
97 } 107 }
98 108
99 virtual void NavigationEntryCommitted( 109 virtual void NavigationEntryCommitted(
100 const content::LoadCommittedDetails& details) { 110 const content::LoadCommittedDetails& details) {
101 manager_->NavigationEntryCommitted(details); 111 manager_->NavigationEntryCommitted(details);
102 } 112 }
103 113
104 protected: 114 protected:
105 MockPermissionBubbleRequest request1_; 115 MockPermissionBubbleRequest request1_;
106 MockPermissionBubbleRequest request2_; 116 MockPermissionBubbleRequest request2_;
117 MockPermissionBubbleRequest iframe_request_same_domain_;
118 MockPermissionBubbleRequest iframe_request_other_domain_;
107 MockView view_; 119 MockView view_;
108 scoped_ptr<PermissionBubbleManager> manager_; 120 scoped_ptr<PermissionBubbleManager> manager_;
109 }; 121 };
110 122
111 TEST_F(PermissionBubbleManagerTest, TestFlag) { 123 TEST_F(PermissionBubbleManagerTest, TestFlag) {
112 EXPECT_FALSE(PermissionBubbleManager::Enabled()); 124 EXPECT_FALSE(PermissionBubbleManager::Enabled());
113 CommandLine::ForCurrentProcess()->AppendSwitch( 125 CommandLine::ForCurrentProcess()->AppendSwitch(
114 switches::kEnablePermissionsBubbles); 126 switches::kEnablePermissionsBubbles);
115 EXPECT_TRUE(PermissionBubbleManager::Enabled()); 127 EXPECT_TRUE(PermissionBubbleManager::Enabled());
116 } 128 }
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 EXPECT_TRUE(dupe_request.finished()); 326 EXPECT_TRUE(dupe_request.finished());
315 EXPECT_FALSE(request1_.finished()); 327 EXPECT_FALSE(request1_.finished());
316 328
317 MockPermissionBubbleRequest dupe_request2("test1"); 329 MockPermissionBubbleRequest dupe_request2("test1");
318 manager_->AddRequest(&dupe_request2); 330 manager_->AddRequest(&dupe_request2);
319 EXPECT_TRUE(dupe_request2.finished()); 331 EXPECT_TRUE(dupe_request2.finished());
320 EXPECT_FALSE(request2_.finished()); 332 EXPECT_FALSE(request2_.finished());
321 } 333 }
322 334
323 TEST_F(PermissionBubbleManagerTest, ForgetRequestsOnPageNavigation) { 335 TEST_F(PermissionBubbleManagerTest, ForgetRequestsOnPageNavigation) {
324 NavigateAndCommit(GURL("http://www.google.com/"));
325 manager_->SetView(&view_); 336 manager_->SetView(&view_);
326 manager_->AddRequest(&request1_); 337 manager_->AddRequest(&request1_);
327 WaitForCoalescing(); 338 WaitForCoalescing();
328 manager_->AddRequest(&request2_); 339 manager_->AddRequest(&request2_);
329 340
330 EXPECT_TRUE(view_.shown_); 341 EXPECT_TRUE(view_.shown_);
331 ASSERT_EQ(1u, view_.permission_requests_.size()); 342 ASSERT_EQ(1u, view_.permission_requests_.size());
332 343
333 NavigateAndCommit(GURL("http://www2.google.com/")); 344 NavigateAndCommit(GURL("http://www2.google.com/"));
334 WaitForCoalescing(); 345 WaitForCoalescing();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 395
385 EXPECT_TRUE(view_.shown_); 396 EXPECT_TRUE(view_.shown_);
386 EXPECT_EQ(1u, view_.permission_requests_.size()); 397 EXPECT_EQ(1u, view_.permission_requests_.size());
387 manager_->CancelRequest(&request2_); 398 manager_->CancelRequest(&request2_);
388 399
389 EXPECT_TRUE(view_.shown_); 400 EXPECT_TRUE(view_.shown_);
390 EXPECT_FALSE(request1_.finished()); 401 EXPECT_FALSE(request1_.finished());
391 EXPECT_TRUE(request2_.finished()); 402 EXPECT_TRUE(request2_.finished());
392 } 403 }
393 404
405 TEST_F(PermissionBubbleManagerTest, MainFrameNoRequestIFrameRequest) {
406 manager_->SetView(&view_);
407 manager_->AddRequest(&iframe_request_same_domain_);
408 WaitForCoalescing();
409 WaitForFrameLoad();
410
411 EXPECT_TRUE(view_.shown_);
412 Closing();
413 EXPECT_TRUE(iframe_request_same_domain_.finished());
414 }
415
416 TEST_F(PermissionBubbleManagerTest, MainFrameAndIFrameRequestSameDomain) {
417 manager_->SetView(&view_);
418 manager_->AddRequest(&request1_);
419 manager_->AddRequest(&iframe_request_same_domain_);
420 WaitForFrameLoad();
421 WaitForCoalescing();
422
423 EXPECT_TRUE(view_.shown_);
424 Closing();
425 EXPECT_TRUE(request1_.finished());
426 EXPECT_TRUE(iframe_request_same_domain_.finished());
427 EXPECT_FALSE(view_.shown_);
428 }
429
430 TEST_F(PermissionBubbleManagerTest, MainFrameAndIFrameRequestOtherDomain) {
431 manager_->SetView(&view_);
432 manager_->AddRequest(&request1_);
433 manager_->AddRequest(&iframe_request_other_domain_);
434 WaitForFrameLoad();
435 WaitForCoalescing();
436
437 EXPECT_TRUE(view_.shown_);
438 Closing();
439 EXPECT_TRUE(request1_.finished());
440 EXPECT_FALSE(iframe_request_other_domain_.finished());
441 EXPECT_TRUE(view_.shown_);
442 Closing();
443 EXPECT_TRUE(iframe_request_other_domain_.finished());
444 }
445
446 TEST_F(PermissionBubbleManagerTest, IFrameRequestWhenMainRequestVisible) {
447 manager_->SetView(&view_);
448 manager_->AddRequest(&request1_);
449 WaitForCoalescing();
450 EXPECT_TRUE(view_.shown_);
451
452 manager_->AddRequest(&iframe_request_same_domain_);
Greg Billock 2014/05/27 20:04:55 Sorry, one other thing I thought of: we want same-
leng 2014/05/27 23:03:55 I made the same assumption - that same-domain ifra
Greg Billock 2014/05/27 23:07:55 ok, cool On 2014/05/27 23:03:55, leng wrote:
453 WaitForFrameLoad();
454 EXPECT_EQ(1u, view_.permission_requests_.size());
455 Closing();
456 EXPECT_TRUE(request1_.finished());
457 EXPECT_FALSE(iframe_request_same_domain_.finished());
458 EXPECT_TRUE(view_.shown_);
459 EXPECT_EQ(1u, view_.permission_requests_.size());
460 Closing();
461 EXPECT_TRUE(iframe_request_same_domain_.finished());
462 }
463
464 TEST_F(PermissionBubbleManagerTest,
465 IFrameRequestOtherDomainWhenMainRequestVisible) {
466 manager_->SetView(&view_);
467 manager_->AddRequest(&request1_);
468 WaitForCoalescing();
469 EXPECT_TRUE(view_.shown_);
470
471 manager_->AddRequest(&iframe_request_other_domain_);
472 WaitForFrameLoad();
473 Closing();
474 EXPECT_TRUE(request1_.finished());
475 EXPECT_FALSE(iframe_request_other_domain_.finished());
476 EXPECT_TRUE(view_.shown_);
477 Closing();
478 EXPECT_TRUE(iframe_request_other_domain_.finished());
479 }
480
481 TEST_F(PermissionBubbleManagerTest, IFrameUserGestureRequest) {
482 iframe_request_other_domain_.SetHasUserGesture();
483 manager_->SetView(&view_);
484 manager_->AddRequest(&request1_);
485 manager_->AddRequest(&iframe_request_other_domain_);
486 WaitForFrameLoad();
487 WaitForCoalescing();
488 manager_->AddRequest(&request2_);
489
490 EXPECT_TRUE(view_.shown_);
491 Closing();
492 EXPECT_TRUE(request1_.finished());
493 EXPECT_FALSE(iframe_request_other_domain_.finished());
494 EXPECT_FALSE(request2_.finished());
495 EXPECT_TRUE(view_.shown_);
496 Closing();
497 EXPECT_TRUE(iframe_request_other_domain_.finished());
498 EXPECT_FALSE(request2_.finished());
499 }
500
501 TEST_F(PermissionBubbleManagerTest, AllUserGestureRequests) {
502 iframe_request_other_domain_.SetHasUserGesture();
503 request2_.SetHasUserGesture();
504 manager_->SetView(&view_);
505 manager_->AddRequest(&request1_);
506 manager_->AddRequest(&iframe_request_other_domain_);
507 WaitForCoalescing();
508 WaitForFrameLoad();
509 manager_->AddRequest(&request2_);
510
511 EXPECT_TRUE(view_.shown_);
512 Closing();
513 EXPECT_TRUE(request1_.finished());
514 EXPECT_FALSE(request2_.finished());
515 EXPECT_FALSE(iframe_request_other_domain_.finished());
516 EXPECT_TRUE(view_.shown_);
517 Closing();
518 EXPECT_TRUE(request2_.finished());
519 EXPECT_FALSE(iframe_request_other_domain_.finished());
520 Closing();
521 EXPECT_TRUE(iframe_request_other_domain_.finished());
522 EXPECT_FALSE(view_.shown_);
523 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/website_settings/permission_bubble_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698