| 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 86824c6673779da2f85b79f15c1ccf6b72c6b467..f1dc4292602796c2a09a6193f6b5573d2abe07c6 100644
|
| --- a/chrome/browser/extensions/extension_sync_service.cc
|
| +++ b/chrome/browser/extensions/extension_sync_service.cc
|
| @@ -280,18 +280,21 @@ ExtensionSyncData ExtensionSyncService::CreateSyncData(
|
| extension_prefs->HasDisableReason(id, Extension::DISABLE_REMOTE_INSTALL);
|
| ExtensionSyncData::OptionalBoolean allowed_on_all_url =
|
| GetAllowedOnAllUrlsOptionalBoolean(id, profile_);
|
| + bool installed_by_custodian =
|
| + extensions::util::WasInstalledByCustodian(id, profile_);
|
| AppSorting* app_sorting = ExtensionSystem::Get(profile_)->app_sorting();
|
|
|
| ExtensionSyncData result = extension.is_app()
|
| ? ExtensionSyncData(
|
| extension, enabled, disable_reasons, incognito_enabled,
|
| remote_install, allowed_on_all_url,
|
| + installed_by_custodian,
|
| app_sorting->GetAppLaunchOrdinal(id),
|
| app_sorting->GetPageOrdinal(id),
|
| extensions::GetLaunchTypePrefValue(extension_prefs, id))
|
| : ExtensionSyncData(
|
| extension, enabled, disable_reasons, incognito_enabled,
|
| - remote_install, allowed_on_all_url);
|
| + remote_install, allowed_on_all_url, installed_by_custodian);
|
|
|
| // If there's a pending update, send the new version to sync instead of the
|
| // installed one.
|
| @@ -315,6 +318,11 @@ void ExtensionSyncService::ApplySyncData(
|
| // sync data, so that we don't end up notifying ourselves.
|
| base::AutoReset<bool> ignore_updates(&ignore_updates_, true);
|
|
|
| + // Note: this may cause an existing version of the extension to be reloaded.
|
| + extensions::util::SetWasInstalledByCustodian(
|
| + extension_sync_data.id(), profile_,
|
| + extension_sync_data.installed_by_custodian());
|
| +
|
| syncer::ModelType type = extension_sync_data.is_app() ? syncer::APPS
|
| : syncer::EXTENSIONS;
|
| const std::string& id = extension_sync_data.id();
|
| @@ -503,8 +511,7 @@ void ExtensionSyncService::ApplySyncData(
|
| extension_sync_data.update_url(),
|
| extension_sync_data.version(),
|
| ShouldAllowInstall,
|
| - extension_sync_data.remote_install(),
|
| - extension_sync_data.installed_by_custodian())) {
|
| + 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
|
|
|