Index: chrome/browser/extensions/extension_sync_service.cc |
diff --git a/chrome/browser/extensions/extension_sync_service.cc b/chrome/browser/extensions/extension_sync_service.cc |
index 5adab024d6d55450c2057f7e3f9e8326f2edf685..b69a1a4fa983cbf3e5cd189897be9997b9664141 100644 |
--- a/chrome/browser/extensions/extension_sync_service.cc |
+++ b/chrome/browser/extensions/extension_sync_service.cc |
@@ -382,6 +382,15 @@ bool ExtensionSyncService::ProcessExtensionSyncDataHelper( |
} |
// Set user settings. |
+ // If the extension has been disabled from sync, it may not have |
+ // been installed yet, so we don't know if the disable reason was a |
+ // permissions increase. That will be updated once CheckPermissionsIncrease |
+ // is called for it. |
+ if (extension_sync_data.enabled()) |
+ extension_service_->EnableExtension(id); |
+ else if (!IsPendingEnable(id)) |
+ extension_service_->DisableExtension( |
+ id, Extension::DISABLE_UNKNOWN_FROM_SYNC); |
// We need to cache some version information here because setting the |
// incognito flag invalidates the |extension| pointer (it reloads the |