summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-20 17:33:38 +0000
committergbillock@chromium.org <gbillock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-20 17:33:38 +0000
commitbffd8be7042b2f23d8fd3fce57c54950e343ebf9 (patch)
tree0cc02a85e1896259a4a9f1ea287c40a022d1bde4
parent574c795ad4b7f637512fb83b395a92d141928ef2 (diff)
downloadchromium_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.cc7
-rw-r--r--chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc19
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_);
+}