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 |