Index: chrome/browser/extensions/extension_service.cc |
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc |
index e7d46ef1f005fea733c22b7551855b983b3c3b72..3f1b472ec565e28a5be339c53da29f07da63ae60 100644 |
--- a/chrome/browser/extensions/extension_service.cc |
+++ b/chrome/browser/extensions/extension_service.cc |
@@ -699,6 +699,7 @@ bool ExtensionService::UninstallExtension( |
// we don't do this. |
bool external_uninstall = |
(reason == extensions::UNINSTALL_REASON_INTERNAL_MANAGEMENT) || |
+ (reason == extensions::UNINSTALL_REASON_REINSTALL) || |
(reason == extensions::UNINSTALL_REASON_ORPHANED_EXTERNAL_EXTENSION) || |
(reason == extensions::UNINSTALL_REASON_ORPHANED_SHARED_MODULE) || |
(reason == extensions::UNINSTALL_REASON_SYNC && |
@@ -714,7 +715,10 @@ bool ExtensionService::UninstallExtension( |
} |
syncer::SyncChange sync_change; |
- if (extension_sync_service_) { |
+ // Don't sync the uninstall if we're going to reinstall the extension |
+ // momentarily. |
+ if (extension_sync_service_ && |
+ reason != extensions::UNINSTALL_REASON_REINSTALL) { |
sync_change = extension_sync_service_->PrepareToSyncUninstallExtension( |
extension.get(), is_ready()); |
} |
@@ -755,7 +759,7 @@ bool ExtensionService::UninstallExtension( |
ExtensionRegistry::Get(profile_) |
->TriggerOnUninstalled(extension.get(), reason); |
- if (extension_sync_service_) { |
+ if (sync_change.IsValid()) { |
extension_sync_service_->ProcessSyncUninstallExtension(extension->id(), |
sync_change); |
} |