| 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);
|
| }
|
|
|