Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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.google.com/some/url")) {} | |
|
Greg Billock
2014/05/22 02:06:31
Shall we have an off-domain iframe request test as
leng
2014/05/22 23:57:05
I added a bunch, and made it clearer. (I hope!)
| |
| 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 Loading... | |
| 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 Loading... | |
| 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 Closing(); | |
| 409 EXPECT_TRUE(iframe_request_.finished()); | |
| 410 } | |
| 411 | |
| 412 TEST_F(PermissionBubbleManagerTest, MainFrameAndIFrameRequests) { | |
| 413 manager_->SetView(&view_); | |
| 414 manager_->AddRequest(&request1_); | |
| 415 manager_->AddRequest(&iframe_request_); | |
| 416 WaitForFrameLoad(); | |
| 417 WaitForCoalescing(); | |
| 418 | |
| 419 EXPECT_TRUE(view_.shown_); | |
| 420 Closing(); | |
| 421 EXPECT_TRUE(request1_.finished()); | |
| 422 EXPECT_FALSE(iframe_request_.finished()); | |
| 423 EXPECT_TRUE(view_.shown_); | |
| 424 Closing(); | |
| 425 EXPECT_TRUE(iframe_request_.finished()); | |
| 426 } | |
| 427 | |
| 428 TEST_F(PermissionBubbleManagerTest, IFrameRequestWhenMainRequestVisible) { | |
| 429 manager_->SetView(&view_); | |
| 430 manager_->AddRequest(&request1_); | |
| 431 WaitForCoalescing(); | |
| 432 EXPECT_TRUE(view_.shown_); | |
| 433 | |
| 434 manager_->AddRequest(&iframe_request_); | |
| 435 WaitForFrameLoad(); | |
| 436 Closing(); | |
| 437 EXPECT_TRUE(request1_.finished()); | |
| 438 EXPECT_FALSE(iframe_request_.finished()); | |
| 439 EXPECT_TRUE(view_.shown_); | |
| 440 Closing(); | |
| 441 EXPECT_TRUE(iframe_request_.finished()); | |
| 442 } | |
| 443 | |
| 444 TEST_F(PermissionBubbleManagerTest, IFrameUserGestureRequest) { | |
| 445 iframe_request_.SetHasUserGesture(); | |
| 446 manager_->SetView(&view_); | |
| 447 manager_->AddRequest(&request1_); | |
| 448 manager_->AddRequest(&iframe_request_); | |
| 449 WaitForFrameLoad(); | |
| 450 WaitForCoalescing(); | |
| 451 manager_->AddRequest(&request2_); | |
| 452 | |
| 453 EXPECT_TRUE(view_.shown_); | |
| 454 Closing(); | |
| 455 EXPECT_TRUE(request1_.finished()); | |
| 456 EXPECT_FALSE(iframe_request_.finished()); | |
| 457 EXPECT_TRUE(view_.shown_); | |
| 458 Closing(); | |
| 459 EXPECT_TRUE(iframe_request_.finished()); | |
| 460 EXPECT_FALSE(request2_.finished()); | |
| 461 } | |
| OLD | NEW |