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_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 Loading... | |
| 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 Loading... | |
| 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 } | |
| OLD | NEW |