| 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 7dbe61398620e9c4f501402ea160bd4ed24f164f..8ac5c07749b531019bc1881f77d81c42355d5ca1 100644
|
| --- a/chrome/browser/extensions/extension_sync_service.cc
|
| +++ b/chrome/browser/extensions/extension_sync_service.cc
|
| @@ -254,7 +254,9 @@ extensions::ExtensionSyncData ExtensionSyncService::GetExtensionSyncData(
|
| return extensions::ExtensionSyncData(
|
| extension,
|
| extension_service_->IsExtensionEnabled(extension.id()),
|
| - extensions::util::IsIncognitoEnabled(extension.id(), profile_));
|
| + extensions::util::IsIncognitoEnabled(extension.id(), profile_),
|
| + extension_prefs_->HasDisableReason(extension.id(),
|
| + Extension::DISABLE_REMOTE_INSTALL));
|
| }
|
|
|
| extensions::AppSyncData ExtensionSyncService::GetAppSyncData(
|
| @@ -263,6 +265,8 @@ extensions::AppSyncData ExtensionSyncService::GetAppSyncData(
|
| extension,
|
| extension_service_->IsExtensionEnabled(extension.id()),
|
| extensions::util::IsIncognitoEnabled(extension.id(), profile_),
|
| + extension_prefs_->HasDisableReason(extension.id(),
|
| + Extension::DISABLE_REMOTE_INSTALL),
|
| extension_prefs_->app_sorting()->GetAppLaunchOrdinal(extension.id()),
|
| extension_prefs_->app_sorting()->GetPageOrdinal(extension.id()),
|
| extensions::GetLaunchTypePrefValue(extension_prefs_, extension.id()));
|
| @@ -465,11 +469,21 @@ bool ExtensionSyncService::ProcessExtensionSyncDataHelper(
|
| // 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.
|
| + // However if the extension is marked as a remote install in sync, we know
|
| + // what the disable reason is, so set it to that directly. Note that when
|
| + // CheckPermissionsIncrease runs, it might still add permissions increase
|
| + // as a disable reason for the extension.
|
| if (extension_sync_data.enabled())
|
| extension_service_->EnableExtension(id);
|
| - else if (!IsPendingEnable(id))
|
| - extension_service_->DisableExtension(
|
| - id, Extension::DISABLE_UNKNOWN_FROM_SYNC);
|
| + else if (!IsPendingEnable(id)) {
|
| + if (extension_sync_data.remote_install()) {
|
| + extension_service_->DisableExtension(id,
|
| + Extension::DISABLE_REMOTE_INSTALL);
|
| + } else {
|
| + 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
|
| @@ -501,7 +515,8 @@ bool ExtensionSyncService::ProcessExtensionSyncDataHelper(
|
| id,
|
| extension_sync_data.update_url(),
|
| filter,
|
| - kInstallSilently)) {
|
| + kInstallSilently,
|
| + extension_sync_data.remote_install())) {
|
| LOG(WARNING) << "Could not add pending extension for " << id;
|
| // This means that the extension is already pending installation, with a
|
| // non-INTERNAL location. Add to pending_sync_data, even though it will
|
|
|