diff options
author | gbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-20 17:33:38 +0000 |
---|---|---|
committer | gbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-20 17:33:38 +0000 |
commit | bffd8be7042b2f23d8fd3fce57c54950e343ebf9 (patch) | |
tree | 0cc02a85e1896259a4a9f1ea287c40a022d1bde4 | |
parent | 574c795ad4b7f637512fb83b395a92d141928ef2 (diff) | |
download | chromium_src-bffd8be7042b2f23d8fd3fce57c54950e343ebf9.zip chromium_src-bffd8be7042b2f23d8fd3fce57c54950e343ebf9.tar.gz chromium_src-bffd8be7042b2f23d8fd3fce57c54950e343ebf9.tar.bz2 |
[WebsiteSettings] Fix bug in permission bubble manager to alter showing state when bubble is closed.
This bug meant that subsequent calls to AddRequest wouldn't show the bubble, since the manager still believed it was being shown.
R=leng@chromium.org
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=251397
Review URL: https://codereview.chromium.org/162423002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@252292 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/ui/website_settings/permission_bubble_manager.cc | 7 | ||||
-rw-r--r-- | chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc | 19 |
2 files changed, 21 insertions, 5 deletions
diff --git a/chrome/browser/ui/website_settings/permission_bubble_manager.cc b/chrome/browser/ui/website_settings/permission_bubble_manager.cc index c6d4141a..97864dd 100644 --- a/chrome/browser/ui/website_settings/permission_bubble_manager.cc +++ b/chrome/browser/ui/website_settings/permission_bubble_manager.cc @@ -168,17 +168,15 @@ void PermissionBubbleManager::Closing() { void PermissionBubbleManager::ShowBubble() { if (view_ && !bubble_showing_ && requests_.size()) { - view_->SetDelegate(this); view_->Show(requests_, accept_states_, customization_mode_); bubble_showing_ = true; } } void PermissionBubbleManager::FinalizeBubble() { - if (view_) { - view_->SetDelegate(NULL); + if (view_) view_->Hide(); - } + bubble_showing_ = false; std::vector<PermissionBubbleRequest*>::iterator requests_iter; for (requests_iter = requests_.begin(); @@ -188,7 +186,6 @@ void PermissionBubbleManager::FinalizeBubble() { } requests_.clear(); accept_states_.clear(); - bubble_showing_ = false; if (queued_requests_.size()) { requests_ = queued_requests_; accept_states_.resize(requests_.size(), true); 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 fcbc57b..3e5a1c1 100644 --- a/chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc +++ b/chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc @@ -283,3 +283,22 @@ TEST_F(PermissionBubbleManagerTest, TestAddDuplicateRequest) { EXPECT_EQ(&request1_, view_.permission_requests_[0]); EXPECT_EQ(&request2_, view_.permission_requests_[1]); } + +TEST_F(PermissionBubbleManagerTest, SequentialRequests) { + manager_->SetView(&view_); + manager_->AddRequest(&request1_); + WaitForCoalescing(); + EXPECT_TRUE(view_.shown_); + + Accept(); + EXPECT_TRUE(request1_.granted_); + + EXPECT_FALSE(view_.shown_); + + manager_->AddRequest(&request2_); + WaitForCoalescing(); + EXPECT_TRUE(view_.shown_); + Accept(); + EXPECT_FALSE(view_.shown_); + EXPECT_TRUE(request2_.granted_); +} |