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 EXPECT_EQ(2u, view_.permission_requests_.size()); |
| 425 Closing(); |
| 426 EXPECT_TRUE(request1_.finished()); |
| 427 EXPECT_TRUE(iframe_request_same_domain_.finished()); |
| 428 EXPECT_FALSE(view_.shown_); |
| 429 } |
| 430 |
| 431 TEST_F(PermissionBubbleManagerTest, MainFrameAndIFrameRequestOtherDomain) { |
| 432 manager_->SetView(&view_); |
| 433 manager_->AddRequest(&request1_); |
| 434 manager_->AddRequest(&iframe_request_other_domain_); |
| 435 WaitForFrameLoad(); |
| 436 WaitForCoalescing(); |
| 437 |
| 438 EXPECT_TRUE(view_.shown_); |
| 439 Closing(); |
| 440 EXPECT_TRUE(request1_.finished()); |
| 441 EXPECT_FALSE(iframe_request_other_domain_.finished()); |
| 442 EXPECT_TRUE(view_.shown_); |
| 443 Closing(); |
| 444 EXPECT_TRUE(iframe_request_other_domain_.finished()); |
| 445 } |
| 446 |
| 447 TEST_F(PermissionBubbleManagerTest, IFrameRequestWhenMainRequestVisible) { |
| 448 manager_->SetView(&view_); |
| 449 manager_->AddRequest(&request1_); |
| 450 WaitForCoalescing(); |
| 451 EXPECT_TRUE(view_.shown_); |
| 452 |
| 453 manager_->AddRequest(&iframe_request_same_domain_); |
| 454 WaitForFrameLoad(); |
| 455 EXPECT_EQ(1u, view_.permission_requests_.size()); |
| 456 Closing(); |
| 457 EXPECT_TRUE(request1_.finished()); |
| 458 EXPECT_FALSE(iframe_request_same_domain_.finished()); |
| 459 EXPECT_TRUE(view_.shown_); |
| 460 EXPECT_EQ(1u, view_.permission_requests_.size()); |
| 461 Closing(); |
| 462 EXPECT_TRUE(iframe_request_same_domain_.finished()); |
| 463 } |
| 464 |
| 465 TEST_F(PermissionBubbleManagerTest, |
| 466 IFrameRequestOtherDomainWhenMainRequestVisible) { |
| 467 manager_->SetView(&view_); |
| 468 manager_->AddRequest(&request1_); |
| 469 WaitForCoalescing(); |
| 470 EXPECT_TRUE(view_.shown_); |
| 471 |
| 472 manager_->AddRequest(&iframe_request_other_domain_); |
| 473 WaitForFrameLoad(); |
| 474 Closing(); |
| 475 EXPECT_TRUE(request1_.finished()); |
| 476 EXPECT_FALSE(iframe_request_other_domain_.finished()); |
| 477 EXPECT_TRUE(view_.shown_); |
| 478 Closing(); |
| 479 EXPECT_TRUE(iframe_request_other_domain_.finished()); |
| 480 } |
| 481 |
| 482 TEST_F(PermissionBubbleManagerTest, IFrameUserGestureRequest) { |
| 483 iframe_request_other_domain_.SetHasUserGesture(); |
| 484 manager_->SetView(&view_); |
| 485 manager_->AddRequest(&request1_); |
| 486 manager_->AddRequest(&iframe_request_other_domain_); |
| 487 WaitForFrameLoad(); |
| 488 WaitForCoalescing(); |
| 489 manager_->AddRequest(&request2_); |
| 490 |
| 491 EXPECT_TRUE(view_.shown_); |
| 492 Closing(); |
| 493 EXPECT_TRUE(request1_.finished()); |
| 494 EXPECT_FALSE(iframe_request_other_domain_.finished()); |
| 495 EXPECT_FALSE(request2_.finished()); |
| 496 EXPECT_TRUE(view_.shown_); |
| 497 Closing(); |
| 498 EXPECT_TRUE(iframe_request_other_domain_.finished()); |
| 499 EXPECT_FALSE(request2_.finished()); |
| 500 } |
| 501 |
| 502 TEST_F(PermissionBubbleManagerTest, AllUserGestureRequests) { |
| 503 iframe_request_other_domain_.SetHasUserGesture(); |
| 504 request2_.SetHasUserGesture(); |
| 505 manager_->SetView(&view_); |
| 506 manager_->AddRequest(&request1_); |
| 507 manager_->AddRequest(&iframe_request_other_domain_); |
| 508 WaitForCoalescing(); |
| 509 WaitForFrameLoad(); |
| 510 manager_->AddRequest(&request2_); |
| 511 |
| 512 EXPECT_TRUE(view_.shown_); |
| 513 Closing(); |
| 514 EXPECT_TRUE(request1_.finished()); |
| 515 EXPECT_FALSE(request2_.finished()); |
| 516 EXPECT_FALSE(iframe_request_other_domain_.finished()); |
| 517 EXPECT_TRUE(view_.shown_); |
| 518 Closing(); |
| 519 EXPECT_TRUE(request2_.finished()); |
| 520 EXPECT_FALSE(iframe_request_other_domain_.finished()); |
| 521 Closing(); |
| 522 EXPECT_TRUE(iframe_request_other_domain_.finished()); |
| 523 EXPECT_FALSE(view_.shown_); |
| 524 } |
OLD | NEW |