summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/role/model
diff options
context:
space:
mode:
authorLuca Stefani <luca.stefani.ge1@gmail.com>2020-03-07 13:29:52 +0100
committerLuca Stefani <luca.stefani.ge1@gmail.com>2020-03-07 13:30:34 +0100
commitf57c0cd023aac559da8c5f051b3564a23e1c9dda (patch)
tree53e8ed5a401c443f88cbdec1898d339450cc6ca5 /src/com/android/packageinstaller/role/model
parent88e1e5120ee795495957a77c43d25d8580b06fe2 (diff)
parent689d598c89a7909ae41334aca7f75c2fbff66d32 (diff)
downloadandroid_packages_apps_PackageInstaller-f57c0cd023aac559da8c5f051b3564a23e1c9dda.tar.gz
android_packages_apps_PackageInstaller-f57c0cd023aac559da8c5f051b3564a23e1c9dda.tar.bz2
android_packages_apps_PackageInstaller-f57c0cd023aac559da8c5f051b3564a23e1c9dda.zip
Merge tag 'android-10.0.0_r31' into lineage-17.1-android-10.0.0_r31
Android 10.0.0 release 31 * tag 'android-10.0.0_r31': Revert "DO NOT MERGE Set module versions to 299900000 Dev branch..." Import translations. DO NOT MERGE Remove permission usage from settings search Import translations. DO NOT MERGE Import translations. DO NOT MERGE Import translations. DO NOT MERGE Always copy file before parsing it for installing DO NOT MERGE Set module versions to 299900000 Dev branch modules need to have a super high version code so that they can be sideloaded on any device running any version of modules. [DO NOT MERGE] Grant all access_media_location permission Update PermissionChecker usages to avoid unnecessary attribution. Keep "None" set for assistant upon device upgrade. Fix crash when role data isn't loaded after restoring state. add java_api_finder plugin to mainline module PermissionController to generate java APIs used by PermissionController. Change-Id: Ie5962d1e418b1bdd9cbc997a00234dcf91a50029
Diffstat (limited to 'src/com/android/packageinstaller/role/model')
-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
3 files changed, 32 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,