| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index 22f001baa249083600e50324bf455aa8391f249b..a4b586278f7f2a1480112c835b7056438d8d0475 100644
|
| --- a/chrome/browser/extensions/extension_service.cc
|
| +++ b/chrome/browser/extensions/extension_service.cc
|
| @@ -1410,11 +1410,14 @@ void ExtensionService::AddExtension(const Extension* extension) {
|
| // All apps that are displayed in the launcher are ordered by their ordinals
|
| // so we must ensure they have valid ordinals.
|
| if (extension->RequiresSortOrdinal()) {
|
| - if (!extension->ShouldDisplayInNewTabPage()) {
|
| - extension_prefs_->app_sorting()->MarkExtensionAsHidden(extension->id());
|
| + extension_prefs_->app_sorting()->SetExtensionVisible(
|
| + extension->id(),
|
| + extension->ShouldDisplayInNewTabPage() &&
|
| + !extension_prefs_->IsEphemeralApp(extension->id()));
|
| + if (!extension_prefs_->IsEphemeralApp(extension->id())) {
|
| + extension_prefs_->app_sorting()->EnsureValidOrdinals(
|
| + extension->id(), syncer::StringOrdinal());
|
| }
|
| - extension_prefs_->app_sorting()->EnsureValidOrdinals(
|
| - extension->id(), syncer::StringOrdinal());
|
| }
|
|
|
| registry_->AddEnabled(extension);
|
| @@ -1817,15 +1820,21 @@ void ExtensionService::PromoteEphemeralApp(
|
| DCHECK(GetInstalledExtension(extension->id()) &&
|
| extension_prefs_->IsEphemeralApp(extension->id()));
|
|
|
| - if (!is_from_sync) {
|
| - if (extension->RequiresSortOrdinal()) {
|
| + if (extension->RequiresSortOrdinal()) {
|
| + extension_prefs_->app_sorting()->SetExtensionVisible(
|
| + extension->id(), extension->ShouldDisplayInNewTabPage());
|
| +
|
| + if (!is_from_sync) {
|
| // Reset the sort ordinals of the app to ensure it is added to the default
|
| // position, like newly installed apps would.
|
| extension_prefs_->app_sorting()->ClearOrdinals(extension->id());
|
| - extension_prefs_->app_sorting()->EnsureValidOrdinals(
|
| - extension->id(), syncer::StringOrdinal());
|
| }
|
|
|
| + extension_prefs_->app_sorting()->EnsureValidOrdinals(
|
| + extension->id(), syncer::StringOrdinal());
|
| + }
|
| +
|
| + if (!is_from_sync) {
|
| // Cached ephemeral apps may be updated and disabled due to permissions
|
| // increase. The app can be enabled as the install was user-acknowledged.
|
| if (extension_prefs_->DidExtensionEscalatePermissions(extension->id()))
|
|
|