Index: chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc |
diff --git a/chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc b/chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc |
index 0f43c4f528ee8793003b813e3425a9d0b0176248..e4527b96e34255220c3bdf04fbe81381cfd402f6 100644 |
--- a/chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc |
+++ b/chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc |
@@ -64,12 +64,17 @@ class PermissionBubbleManagerTest : public ChromeRenderViewHostTestHarness { |
PermissionBubbleManagerTest() |
: ChromeRenderViewHostTestHarness(), |
request1_("test1"), |
- request2_("test2") {} |
+ request2_("test2"), |
+ iframe_request_same_domain_("iframe", |
+ GURL("http://www.google.com/some/url")), |
+ iframe_request_other_domain_("iframe", |
+ GURL("http://www.youtube.com")) {} |
virtual ~PermissionBubbleManagerTest() {} |
virtual void SetUp() OVERRIDE { |
ChromeRenderViewHostTestHarness::SetUp(); |
SetContents(CreateTestWebContents()); |
+ NavigateAndCommit(GURL("http://www.google.com")); |
manager_.reset(new PermissionBubbleManager(web_contents())); |
} |
@@ -91,6 +96,11 @@ class PermissionBubbleManagerTest : public ChromeRenderViewHostTestHarness { |
manager_->Closing(); |
} |
+ void WaitForFrameLoad() { |
+ manager_->DocumentLoadedInFrame(0, NULL); |
+ base::MessageLoop::current()->RunUntilIdle(); |
+ } |
+ |
void WaitForCoalescing() { |
manager_->DocumentOnLoadCompletedInMainFrame(); |
base::MessageLoop::current()->RunUntilIdle(); |
@@ -104,6 +114,8 @@ class PermissionBubbleManagerTest : public ChromeRenderViewHostTestHarness { |
protected: |
MockPermissionBubbleRequest request1_; |
MockPermissionBubbleRequest request2_; |
+ MockPermissionBubbleRequest iframe_request_same_domain_; |
+ MockPermissionBubbleRequest iframe_request_other_domain_; |
MockView view_; |
scoped_ptr<PermissionBubbleManager> manager_; |
}; |
@@ -321,7 +333,6 @@ TEST_F(PermissionBubbleManagerTest, DuplicateQueuedRequest) { |
} |
TEST_F(PermissionBubbleManagerTest, ForgetRequestsOnPageNavigation) { |
- NavigateAndCommit(GURL("http://www.google.com/")); |
manager_->SetView(&view_); |
manager_->AddRequest(&request1_); |
WaitForCoalescing(); |
@@ -391,3 +402,123 @@ TEST_F(PermissionBubbleManagerTest, TestCancelPendingRequest) { |
EXPECT_TRUE(request2_.finished()); |
} |
+TEST_F(PermissionBubbleManagerTest, MainFrameNoRequestIFrameRequest) { |
+ manager_->SetView(&view_); |
+ manager_->AddRequest(&iframe_request_same_domain_); |
+ WaitForCoalescing(); |
+ WaitForFrameLoad(); |
+ |
+ EXPECT_TRUE(view_.shown_); |
+ Closing(); |
+ EXPECT_TRUE(iframe_request_same_domain_.finished()); |
+} |
+ |
+TEST_F(PermissionBubbleManagerTest, MainFrameAndIFrameRequestSameDomain) { |
+ manager_->SetView(&view_); |
+ manager_->AddRequest(&request1_); |
+ manager_->AddRequest(&iframe_request_same_domain_); |
+ WaitForFrameLoad(); |
+ WaitForCoalescing(); |
+ |
+ EXPECT_TRUE(view_.shown_); |
+ EXPECT_EQ(2u, view_.permission_requests_.size()); |
+ Closing(); |
+ EXPECT_TRUE(request1_.finished()); |
+ EXPECT_TRUE(iframe_request_same_domain_.finished()); |
+ EXPECT_FALSE(view_.shown_); |
+} |
+ |
+TEST_F(PermissionBubbleManagerTest, MainFrameAndIFrameRequestOtherDomain) { |
+ manager_->SetView(&view_); |
+ manager_->AddRequest(&request1_); |
+ manager_->AddRequest(&iframe_request_other_domain_); |
+ WaitForFrameLoad(); |
+ WaitForCoalescing(); |
+ |
+ EXPECT_TRUE(view_.shown_); |
+ Closing(); |
+ EXPECT_TRUE(request1_.finished()); |
+ EXPECT_FALSE(iframe_request_other_domain_.finished()); |
+ EXPECT_TRUE(view_.shown_); |
+ Closing(); |
+ EXPECT_TRUE(iframe_request_other_domain_.finished()); |
+} |
+ |
+TEST_F(PermissionBubbleManagerTest, IFrameRequestWhenMainRequestVisible) { |
+ manager_->SetView(&view_); |
+ manager_->AddRequest(&request1_); |
+ WaitForCoalescing(); |
+ EXPECT_TRUE(view_.shown_); |
+ |
+ manager_->AddRequest(&iframe_request_same_domain_); |
+ WaitForFrameLoad(); |
+ EXPECT_EQ(1u, view_.permission_requests_.size()); |
+ Closing(); |
+ EXPECT_TRUE(request1_.finished()); |
+ EXPECT_FALSE(iframe_request_same_domain_.finished()); |
+ EXPECT_TRUE(view_.shown_); |
+ EXPECT_EQ(1u, view_.permission_requests_.size()); |
+ Closing(); |
+ EXPECT_TRUE(iframe_request_same_domain_.finished()); |
+} |
+ |
+TEST_F(PermissionBubbleManagerTest, |
+ IFrameRequestOtherDomainWhenMainRequestVisible) { |
+ manager_->SetView(&view_); |
+ manager_->AddRequest(&request1_); |
+ WaitForCoalescing(); |
+ EXPECT_TRUE(view_.shown_); |
+ |
+ manager_->AddRequest(&iframe_request_other_domain_); |
+ WaitForFrameLoad(); |
+ Closing(); |
+ EXPECT_TRUE(request1_.finished()); |
+ EXPECT_FALSE(iframe_request_other_domain_.finished()); |
+ EXPECT_TRUE(view_.shown_); |
+ Closing(); |
+ EXPECT_TRUE(iframe_request_other_domain_.finished()); |
+} |
+ |
+TEST_F(PermissionBubbleManagerTest, IFrameUserGestureRequest) { |
+ iframe_request_other_domain_.SetHasUserGesture(); |
+ manager_->SetView(&view_); |
+ manager_->AddRequest(&request1_); |
+ manager_->AddRequest(&iframe_request_other_domain_); |
+ WaitForFrameLoad(); |
+ WaitForCoalescing(); |
+ manager_->AddRequest(&request2_); |
+ |
+ EXPECT_TRUE(view_.shown_); |
+ Closing(); |
+ EXPECT_TRUE(request1_.finished()); |
+ EXPECT_FALSE(iframe_request_other_domain_.finished()); |
+ EXPECT_FALSE(request2_.finished()); |
+ EXPECT_TRUE(view_.shown_); |
+ Closing(); |
+ EXPECT_TRUE(iframe_request_other_domain_.finished()); |
+ EXPECT_FALSE(request2_.finished()); |
+} |
+ |
+TEST_F(PermissionBubbleManagerTest, AllUserGestureRequests) { |
+ iframe_request_other_domain_.SetHasUserGesture(); |
+ request2_.SetHasUserGesture(); |
+ manager_->SetView(&view_); |
+ manager_->AddRequest(&request1_); |
+ manager_->AddRequest(&iframe_request_other_domain_); |
+ WaitForCoalescing(); |
+ WaitForFrameLoad(); |
+ manager_->AddRequest(&request2_); |
+ |
+ EXPECT_TRUE(view_.shown_); |
+ Closing(); |
+ EXPECT_TRUE(request1_.finished()); |
+ EXPECT_FALSE(request2_.finished()); |
+ EXPECT_FALSE(iframe_request_other_domain_.finished()); |
+ EXPECT_TRUE(view_.shown_); |
+ Closing(); |
+ EXPECT_TRUE(request2_.finished()); |
+ EXPECT_FALSE(iframe_request_other_domain_.finished()); |
+ Closing(); |
+ EXPECT_TRUE(iframe_request_other_domain_.finished()); |
+ EXPECT_FALSE(view_.shown_); |
+} |