summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_error_controller.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/extension_error_controller.cc')
-rw-r--r--chrome/browser/extensions/extension_error_controller.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/chrome/browser/extensions/extension_error_controller.cc b/chrome/browser/extensions/extension_error_controller.cc
index 4c3d3a2..8ae3154 100644
--- a/chrome/browser/extensions/extension_error_controller.cc
+++ b/chrome/browser/extensions/extension_error_controller.cc
@@ -31,7 +31,9 @@ ExtensionErrorController::~ExtensionErrorController() {}
void ExtensionErrorController::ShowErrorIfNeeded() {
IdentifyAlertableExtensions();
- if (!blacklisted_extensions_.is_empty()) {
+ // Make sure there's something to show, and that there isn't currently a
+ // bubble displaying.
+ if (!blacklisted_extensions_.is_empty() && !error_ui_.get()) {
if (!is_first_run_) {
error_ui_.reset(g_create_ui(this));
if (!error_ui_->ShowErrorInBubbleView()) // Couldn't find a browser.
@@ -84,6 +86,7 @@ void ExtensionErrorController::OnAlertClosed() {
prefs->AcknowledgeBlacklistedExtension((*iter)->id());
}
+ blacklisted_extensions_.Clear();
error_ui_.reset();
}
@@ -91,6 +94,10 @@ void ExtensionErrorController::IdentifyAlertableExtensions() {
ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_);
ExtensionPrefs* prefs = ExtensionPrefs::Get(browser_context_);
+ // This should be clear, but in case a bubble crashed somewhere along the
+ // line, let's make sure we start fresh.
+ blacklisted_extensions_.Clear();
+
// Build up the lists of extensions that require acknowledgment. If this is
// the first time, grandfather extensions that would have caused
// notification.