Index: chrome/browser/extensions/external_install_ui.cc |
diff --git a/chrome/browser/extensions/external_install_ui.cc b/chrome/browser/extensions/external_install_ui.cc |
index 18321849b877eba83b28b2e7855622112b2822da..dc0abc4c292baa052c213a15bf6a57052c555db0 100644 |
--- a/chrome/browser/extensions/external_install_ui.cc |
+++ b/chrome/browser/extensions/external_install_ui.cc |
@@ -340,7 +340,13 @@ void ExternalInstallDialogDelegate::InstallUIProceed() { |
void ExternalInstallDialogDelegate::InstallUIAbort(bool user_initiated) { |
const Extension* extension = NULL; |
- if (service_weak_.get() && |
+ |
+ // Uninstall the extension if the abort was user initiated (and not, e.g., the |
+ // result of the window closing). |
+ // Otherwise, the extension will remain installed, but unacknowledged, so it |
+ // will be prompted again. |
+ if (user_initiated && |
+ service_weak_.get() && |
(extension = service_weak_->GetInstalledExtension(extension_id_))) { |
service_weak_->UninstallExtension(extension_id_, false, NULL); |
} |