summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2019-10-24 18:52:14 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-10-24 18:52:14 +0000
commitcdd60932506d61badeb407e4cfc0587caf82b1f0 (patch)
tree2bb095c749581b09800c1ef9e374cc5fba24df6d
parent36d39e5e898a4d6264749bd519cd4b5e7ee30561 (diff)
parent6cd5ab63e01fc34cc31a66dd58bf432f7037e77a (diff)
downloadandroid_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
-rw-r--r--src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java16
-rw-r--r--src/com/android/packageinstaller/role/model/Role.java11
-rw-r--r--src/com/android/packageinstaller/role/model/RoleBehavior.java5
-rw-r--r--src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java8
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++) {