diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-10-24 18:52:14 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-10-24 18:52:14 +0000 |
commit | cdd60932506d61badeb407e4cfc0587caf82b1f0 (patch) | |
tree | 2bb095c749581b09800c1ef9e374cc5fba24df6d | |
parent | 36d39e5e898a4d6264749bd519cd4b5e7ee30561 (diff) | |
parent | 6cd5ab63e01fc34cc31a66dd58bf432f7037e77a (diff) | |
download | android_packages_apps_PackageInstaller-cdd60932506d61badeb407e4cfc0587caf82b1f0.tar.gz android_packages_apps_PackageInstaller-cdd60932506d61badeb407e4cfc0587caf82b1f0.tar.bz2 android_packages_apps_PackageInstaller-cdd60932506d61badeb407e4cfc0587caf82b1f0.zip |
Merge "Keep "None" set for assistant upon device upgrade." into qt-qpr1-dev
4 files changed, 40 insertions, 0 deletions
diff --git a/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java b/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java index f79522ea..bd08349e 100644 --- a/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java +++ b/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java @@ -18,6 +18,7 @@ package com.android.packageinstaller.role.model; import android.app.ActivityManager; import android.app.Application; +import android.app.role.RoleManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; @@ -25,6 +26,7 @@ import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.res.Resources; import android.content.res.XmlResourceParser; +import android.os.Process; import android.os.UserHandle; import android.provider.Settings; import android.service.voice.VoiceInteractionService; @@ -59,6 +61,20 @@ public class AssistantRoleBehavior implements RoleBehavior { private static final Intent ASSIST_ACTIVITY_PROBE = new Intent(Intent.ACTION_ASSIST); @Override + public void onRoleAdded(@NonNull Role role, @NonNull Context context) { + PackageManager packageManager = context.getPackageManager(); + if (packageManager.isDeviceUpgrading()) { + RoleManager roleManager = context.getSystemService(RoleManager.class); + List<String> packageNames = roleManager.getRoleHolders(role.getName()); + if (packageNames.isEmpty()) { + // If the device was upgraded, and there isn't any legacy role holders, it means + // user selected "None" in Settings and we need to keep that. + role.onNoneHolderSelectedAsUser(Process.myUserHandle(), context); + } + } + } + + @Override public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { return !UserUtils.isWorkProfile(user, context); diff --git a/src/com/android/packageinstaller/role/model/Role.java b/src/com/android/packageinstaller/role/model/Role.java index e3332db0..281e964a 100644 --- a/src/com/android/packageinstaller/role/model/Role.java +++ b/src/com/android/packageinstaller/role/model/Role.java @@ -254,6 +254,17 @@ public class Role { } /** + * Callback when this role is added to the system for the first time. + * + * @param context the {@code Context} to retrieve system services + */ + public void onRoleAdded(@NonNull Context context) { + if (mBehavior != null) { + mBehavior.onRoleAdded(this, context); + } + } + + /** * Check whether this role is available. * * @param user the user to check for diff --git a/src/com/android/packageinstaller/role/model/RoleBehavior.java b/src/com/android/packageinstaller/role/model/RoleBehavior.java index 41ffb455..a43d7ad5 100644 --- a/src/com/android/packageinstaller/role/model/RoleBehavior.java +++ b/src/com/android/packageinstaller/role/model/RoleBehavior.java @@ -36,6 +36,11 @@ import java.util.List; public interface RoleBehavior { /** + * @see Role#onRoleAdded(Context) + */ + default void onRoleAdded(@NonNull Role role, @NonNull Context context) {} + + /** * @see Role#isAvailableAsUser(UserHandle, Context) */ default boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user, diff --git a/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java b/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java index bee43205..d45d6bb3 100644 --- a/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java +++ b/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java @@ -89,6 +89,14 @@ public class RoleControllerServiceImpl extends RoleControllerService { // Set the available role names in RoleManager. mRoleManager.setRoleNamesFromController(roleNames); + int addedRoleNamesSize = addedRoleNames.size(); + for (int i = 0; i < addedRoleNamesSize; i++) { + String roleName = addedRoleNames.valueAt(i); + + Role role = roleMap.get(roleName); + role.onRoleAdded(this); + } + // Go through the holders of all roles. int rolesSize = roles.size(); for (int rolesIndex = 0; rolesIndex < rolesSize; rolesIndex++) { |