| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index fc0935be23244ee1e4b780a16762b0465c7ad75e..9f3b0457af9111fd5dcc895b473f05d5cc72c6f6 100644
|
| --- a/chrome/browser/extensions/extension_service.cc
|
| +++ b/chrome/browser/extensions/extension_service.cc
|
| @@ -897,7 +897,9 @@ bool ExtensionService::UninstallExtension(
|
| if (sync_bundle) {
|
| ExtensionSyncData extension_sync_data(*extension,
|
| IsExtensionEnabled(extension_id),
|
| - IsIncognitoEnabled(extension_id));
|
| + IsIncognitoEnabled(extension_id),
|
| + GetAppLaunchIndex(extension_id),
|
| + GetPageIndex(extension_id));
|
| sync_change = extension_sync_data.GetSyncChange(SyncChange::ACTION_DELETE);
|
| }
|
|
|
| @@ -1735,7 +1737,9 @@ void ExtensionService::SyncExtensionChangeIfNeeded(const Extension& extension) {
|
| if (sync_bundle) {
|
| ExtensionSyncData extension_sync_data(extension,
|
| IsExtensionEnabled(extension.id()),
|
| - IsIncognitoEnabled(extension.id()));
|
| + IsIncognitoEnabled(extension.id()),
|
| + GetAppLaunchIndex(extension.id()),
|
| + GetPageIndex(extension.id()));
|
|
|
| SyncChangeList sync_change_list(1, extension_sync_data.GetSyncChange(
|
| sync_bundle->HasExtensionId(extension.id()) ?
|
| @@ -1880,6 +1884,13 @@ SyncError ExtensionService::ProcessSyncChanges(
|
| ProcessExtensionSyncData(extension_sync_data, *bundle);
|
| }
|
|
|
| + // Because the sync data includes the positions of applications it is
|
| + // possible for the applications to have been reordered due to the sync.
|
| + NotificationService::current()->Notify(
|
| + chrome::NOTIFICATION_EXTENSION_LAUNCHER_REORDERED,
|
| + Source<ExtensionService>(this),
|
| + NotificationService::NoDetails());
|
| +
|
| return SyncError();
|
| }
|
|
|
| @@ -1898,7 +1909,9 @@ void ExtensionService::GetSyncDataListHelper(
|
| sync_data_list->push_back(
|
| ExtensionSyncData(extension,
|
| IsExtensionEnabled(extension.id()),
|
| - IsIncognitoEnabled(extension.id())));
|
| + IsIncognitoEnabled(extension.id()),
|
| + GetAppLaunchIndex(extension.id()),
|
| + GetPageIndex(extension.id())));
|
| }
|
| }
|
| }
|
| @@ -1949,6 +1962,8 @@ void ExtensionService::ProcessExtensionSyncData(
|
| DisableExtension(id);
|
| }
|
| SetIsIncognitoEnabled(id, extension_sync_data.incognito_enabled());
|
| + SetAppLaunchIndex(id, extension_sync_data.app_launch_index());
|
| + SetPageIndex(id, extension_sync_data.page_index());
|
|
|
| if (extension) {
|
| // If the extension is already installed, check if it's outdated.
|
| @@ -2040,6 +2055,44 @@ bool ExtensionService::CanLoadInIncognito(const Extension* extension) const {
|
| IsIncognitoEnabled(extension->id());
|
| }
|
|
|
| +void ExtensionService::SetAppLauncherOrder(
|
| + const std::vector<std::string>& extension_ids) {
|
| + extension_prefs_->SetAppLauncherOrder(extension_ids);
|
| +
|
| + for (size_t i=0; i < extension_ids.size(); ++i) {
|
| + SetAppLaunchIndex(extension_ids[i], i);
|
| + }
|
| +}
|
| +
|
| +int32 ExtensionService::GetAppLaunchIndex(const std::string& extension_id)
|
| + const {
|
| + return extension_prefs_->GetAppLaunchIndex(extension_id);
|
| +}
|
| +
|
| +void ExtensionService::SetAppLaunchIndex(const std::string& extension_id,
|
| + int32 app_launch_index) {
|
| + extension_prefs_->SetAppLaunchIndex(extension_id, app_launch_index);
|
| +
|
| + const Extension* extension = GetInstalledExtension(extension_id);
|
| + if (extension) {
|
| + SyncExtensionChangeIfNeeded(*extension);
|
| + }
|
| +}
|
| +
|
| +int32 ExtensionService::GetPageIndex(const std::string& extension_id) const {
|
| + return extension_prefs_->GetPageIndex(extension_id);
|
| +}
|
| +
|
| +void ExtensionService::SetPageIndex(const std::string& extension_id,
|
| + int32 page_index) {
|
| + extension_prefs_->SetPageIndex(extension_id, page_index);
|
| +
|
| + const Extension* extension = GetInstalledExtension(extension_id);
|
| + if (extension) {
|
| + SyncExtensionChangeIfNeeded(*extension);
|
| + }
|
| +}
|
| +
|
| bool ExtensionService::AllowFileAccess(const Extension* extension) {
|
| return (CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kDisableExtensionsFileAccessCheck) ||
|
|
|