diff options
Diffstat (limited to 'chrome/browser/extensions/extension_error_controller.cc')
-rw-r--r-- | chrome/browser/extensions/extension_error_controller.cc | 9 |
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. |