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

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 duplicate logic 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
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_("iframe", GURL("http://www.youtube.com")) {}
68 virtual ~PermissionBubbleManagerTest() {} 69 virtual ~PermissionBubbleManagerTest() {}
69 70
70 virtual void SetUp() OVERRIDE { 71 virtual void SetUp() OVERRIDE {
71 ChromeRenderViewHostTestHarness::SetUp(); 72 ChromeRenderViewHostTestHarness::SetUp();
72 SetContents(CreateTestWebContents()); 73 SetContents(CreateTestWebContents());
74 NavigateAndCommit(GURL("http://www.google.com"));
73 75
74 manager_.reset(new PermissionBubbleManager(web_contents())); 76 manager_.reset(new PermissionBubbleManager(web_contents()));
75 } 77 }
76 78
77 virtual void TearDown() OVERRIDE { 79 virtual void TearDown() OVERRIDE {
78 manager_.reset(); 80 manager_.reset();
79 ChromeRenderViewHostTestHarness::TearDown(); 81 ChromeRenderViewHostTestHarness::TearDown();
80 } 82 }
81 83
82 void ToggleAccept(int index, bool value) { 84 void ToggleAccept(int index, bool value) {
83 manager_->ToggleAccept(index, value); 85 manager_->ToggleAccept(index, value);
84 } 86 }
85 87
86 void Accept() { 88 void Accept() {
87 manager_->Accept(); 89 manager_->Accept();
88 } 90 }
89 91
90 void Closing() { 92 void Closing() {
91 manager_->Closing(); 93 manager_->Closing();
92 } 94 }
93 95
96 void WaitForFrameLoad() {
97 manager_->DocumentLoadedInFrame(0, NULL);
98 base::MessageLoop::current()->RunUntilIdle();
99 }
100
94 void WaitForCoalescing() { 101 void WaitForCoalescing() {
95 manager_->DocumentOnLoadCompletedInMainFrame(); 102 manager_->DocumentOnLoadCompletedInMainFrame();
96 base::MessageLoop::current()->RunUntilIdle(); 103 base::MessageLoop::current()->RunUntilIdle();
97 } 104 }
98 105
99 virtual void NavigationEntryCommitted( 106 virtual void NavigationEntryCommitted(
100 const content::LoadCommittedDetails& details) { 107 const content::LoadCommittedDetails& details) {
101 manager_->NavigationEntryCommitted(details); 108 manager_->NavigationEntryCommitted(details);
102 } 109 }
103 110
104 protected: 111 protected:
105 MockPermissionBubbleRequest request1_; 112 MockPermissionBubbleRequest request1_;
106 MockPermissionBubbleRequest request2_; 113 MockPermissionBubbleRequest request2_;
114 MockPermissionBubbleRequest iframe_request_;
107 MockView view_; 115 MockView view_;
108 scoped_ptr<PermissionBubbleManager> manager_; 116 scoped_ptr<PermissionBubbleManager> manager_;
109 }; 117 };
110 118
111 TEST_F(PermissionBubbleManagerTest, TestFlag) { 119 TEST_F(PermissionBubbleManagerTest, TestFlag) {
112 EXPECT_FALSE(PermissionBubbleManager::Enabled()); 120 EXPECT_FALSE(PermissionBubbleManager::Enabled());
113 CommandLine::ForCurrentProcess()->AppendSwitch( 121 CommandLine::ForCurrentProcess()->AppendSwitch(
114 switches::kEnablePermissionsBubbles); 122 switches::kEnablePermissionsBubbles);
115 EXPECT_TRUE(PermissionBubbleManager::Enabled()); 123 EXPECT_TRUE(PermissionBubbleManager::Enabled());
116 } 124 }
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 EXPECT_TRUE(dupe_request.finished()); 322 EXPECT_TRUE(dupe_request.finished());
315 EXPECT_FALSE(request1_.finished()); 323 EXPECT_FALSE(request1_.finished());
316 324
317 MockPermissionBubbleRequest dupe_request2("test1"); 325 MockPermissionBubbleRequest dupe_request2("test1");
318 manager_->AddRequest(&dupe_request2); 326 manager_->AddRequest(&dupe_request2);
319 EXPECT_TRUE(dupe_request2.finished()); 327 EXPECT_TRUE(dupe_request2.finished());
320 EXPECT_FALSE(request2_.finished()); 328 EXPECT_FALSE(request2_.finished());
321 } 329 }
322 330
323 TEST_F(PermissionBubbleManagerTest, ForgetRequestsOnPageNavigation) { 331 TEST_F(PermissionBubbleManagerTest, ForgetRequestsOnPageNavigation) {
324 NavigateAndCommit(GURL("http://www.google.com/"));
325 manager_->SetView(&view_); 332 manager_->SetView(&view_);
326 manager_->AddRequest(&request1_); 333 manager_->AddRequest(&request1_);
327 WaitForCoalescing(); 334 WaitForCoalescing();
328 manager_->AddRequest(&request2_); 335 manager_->AddRequest(&request2_);
329 336
330 EXPECT_TRUE(view_.shown_); 337 EXPECT_TRUE(view_.shown_);
331 ASSERT_EQ(1u, view_.permission_requests_.size()); 338 ASSERT_EQ(1u, view_.permission_requests_.size());
332 339
333 NavigateAndCommit(GURL("http://www2.google.com/")); 340 NavigateAndCommit(GURL("http://www2.google.com/"));
334 WaitForCoalescing(); 341 WaitForCoalescing();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 391
385 EXPECT_TRUE(view_.shown_); 392 EXPECT_TRUE(view_.shown_);
386 EXPECT_EQ(1u, view_.permission_requests_.size()); 393 EXPECT_EQ(1u, view_.permission_requests_.size());
387 manager_->CancelRequest(&request2_); 394 manager_->CancelRequest(&request2_);
388 395
389 EXPECT_TRUE(view_.shown_); 396 EXPECT_TRUE(view_.shown_);
390 EXPECT_FALSE(request1_.finished()); 397 EXPECT_FALSE(request1_.finished());
391 EXPECT_TRUE(request2_.finished()); 398 EXPECT_TRUE(request2_.finished());
392 } 399 }
393 400
401 TEST_F(PermissionBubbleManagerTest, MainFrameNoRequestIFrameRequest) {
402 manager_->SetView(&view_);
403 manager_->AddRequest(&iframe_request_);
404 WaitForCoalescing();
405 WaitForFrameLoad();
406
407 EXPECT_TRUE(view_.shown_);
408 }
409
410 TEST_F(PermissionBubbleManagerTest, MainFrameAndIFrameRequests) {
411 manager_->SetView(&view_);
412 manager_->AddRequest(&request1_);
413 manager_->AddRequest(&iframe_request_);
414 WaitForFrameLoad();
415 WaitForCoalescing();
Greg Billock 2014/05/21 17:09:19 Maybe try a request with a url like www.google.com
leng 2014/05/22 00:08:47 I assumed you meant the url to be the iframe url..
416 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698