Index: chrome/browser/extensions/extension_service.cc |
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc |
index 776e7eb25e178699a142a9557d3551e4c44ae860..0cb791593f60d4d43ea2409bb3156869df014ea7 100644 |
--- a/chrome/browser/extensions/extension_service.cc |
+++ b/chrome/browser/extensions/extension_service.cc |
@@ -718,6 +718,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 && |
@@ -733,7 +734,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()); |
} |
@@ -774,7 +778,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); |
} |