diff options
author | Guliz Tuncay <gulizseray@google.com> | 2021-03-08 22:27:55 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-03-08 22:27:55 +0000 |
commit | 4fadd2013f84826069344a25409dd50780bcc21a (patch) | |
tree | cc5780e22c6b7202e21e377d9eebc6191242cdae | |
parent | 8a070bb4653fbc0a28718b999b4de78d279bbfc5 (diff) | |
parent | 05bb876929f981d6b50a2cfe6dc506c21c84753a (diff) |
Merge "Migrate wellbeing to use role" into sc-dev
11 files changed, 19 insertions, 32 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java index dd1a0e2478dd..1a808c9b3c33 100644 --- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java +++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java @@ -2042,7 +2042,9 @@ public class AppStandbyController if (activityManager.isLowRamDevice() || ActivityManager.isSmallBatteryDevice()) { mAutoRestrictedBucketDelayMs = 12 * ONE_HOUR; } - + } else if (phase == PHASE_BOOT_COMPLETED) { + // mWellbeingApp needs to be initialized lazily after boot to allow for roles to be + // parsed and the wellbeing role-holder to be assigned final PackageManager packageManager = mContext.getPackageManager(); mWellbeingApp = packageManager.getWellbeingPackageName(); } diff --git a/core/api/system-current.txt b/core/api/system-current.txt index bf08723020cd..befcd015bb20 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -360,6 +360,7 @@ package android { field public static final int config_systemGallery = 17039399; // 0x1040027 field public static final int config_systemShell = 17039402; // 0x104002a field public static final int config_systemSpeechRecognizer = 17039406; // 0x104002e + field public static final int config_systemWellbeing = 17039408; // 0x1040030 field public static final int config_systemWifiCoexManager = 17039407; // 0x104002f } @@ -2703,7 +2704,7 @@ package android.content.pm { field public static final int PROTECTION_FLAG_RETAIL_DEMO = 16777216; // 0x1000000 field public static final int PROTECTION_FLAG_ROLE = 67108864; // 0x4000000 field public static final int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER = 65536; // 0x10000 - field public static final int PROTECTION_FLAG_WELLBEING = 131072; // 0x20000 + field @Deprecated public static final int PROTECTION_FLAG_WELLBEING = 131072; // 0x20000 field @Nullable public final String backgroundPermission; field @StringRes public int requestRes; } diff --git a/core/java/android/content/pm/PermissionInfo.java b/core/java/android/content/pm/PermissionInfo.java index 83baca668d55..691c69c2459a 100644 --- a/core/java/android/content/pm/PermissionInfo.java +++ b/core/java/android/content/pm/PermissionInfo.java @@ -200,6 +200,8 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { * to the <code>wellbeing</code> value of * {@link android.R.attr#protectionLevel}. * + * @deprecated this protectionLevel is obsolete. Permissions previously granted through this + * protectionLevel have been migrated to use <code>role</code> instead * @hide */ @SystemApi @@ -307,7 +309,6 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { PROTECTION_FLAG_OEM, PROTECTION_FLAG_VENDOR_PRIVILEGED, PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER, - PROTECTION_FLAG_WELLBEING, PROTECTION_FLAG_DOCUMENTER, PROTECTION_FLAG_CONFIGURATOR, PROTECTION_FLAG_INCIDENT_REPORT_APPROVER, @@ -560,9 +561,6 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { if ((level & PermissionInfo.PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER) != 0) { protLevel.append("|textClassifier"); } - if ((level & PermissionInfo.PROTECTION_FLAG_WELLBEING) != 0) { - protLevel.append("|wellbeing"); - } if ((level & PermissionInfo.PROTECTION_FLAG_DOCUMENTER) != 0) { protLevel.append("|documenter"); } diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 19f1f0327c85..8e1da0819515 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -1915,7 +1915,7 @@ @hide --> <permission android:name="android.permission.SUSPEND_APPS" - android:protectionLevel="signature|wellbeing" /> + android:protectionLevel="signature|role" /> <!-- Allows applications to discover and pair bluetooth devices. <p>Protection level: normal @@ -2789,7 +2789,7 @@ <p>Not for use by third-party applications. --> <permission android:name="android.permission.SYSTEM_APPLICATION_OVERLAY" - android:protectionLevel="signature|recents|wellbeing"/> + android:protectionLevel="signature|recents|role"/> <!-- @deprecated Use {@link android.Manifest.permission#REQUEST_COMPANION_RUN_IN_BACKGROUND} @hide @@ -5138,7 +5138,7 @@ <!-- @SystemApi Allows the holder to access and manage instant applications on the device. @hide --> <permission android:name="android.permission.ACCESS_INSTANT_APPS" - android:protectionLevel="signature|installer|verifier|wellbeing" /> + android:protectionLevel="signature|installer|verifier|role" /> <uses-permission android:name="android.permission.ACCESS_INSTANT_APPS"/> <!-- Allows the holder to view the instant applications on the device. @@ -5318,7 +5318,7 @@ <!-- @SystemApi Allows an application to turn on / off quiet mode. @hide --> <permission android:name="android.permission.MODIFY_QUIET_MODE" - android:protectionLevel="signature|privileged|wellbeing|development" /> + android:protectionLevel="signature|privileged|development" /> <!-- Allows internal management of the camera framework @hide --> diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 0d51dde1c7df..aaa986b52c6a 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -285,9 +285,6 @@ <!-- Additional flag from base permission type: this permission can be automatically granted to the system default text classifier --> <flag name="textClassifier" value="0x10000" /> - <!-- Additional flag from base permission type: this permission will be granted to the - wellbeing app, as defined by the OEM. --> - <flag name="wellbeing" value="0x20000" /> <!-- Additional flag from base permission type: this permission can be automatically granted to the document manager --> <flag name="documenter" value="0x40000" /> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 247ca16cc2f1..8bc3a52fa17b 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1959,6 +1959,8 @@ <string name="config_systemSpeechRecognizer" translatable="false"></string> <!-- The name of the package that will hold the system Wi-Fi coex manager role. --> <string name="config_systemWifiCoexManager" translateable="false"></string> + <!-- The name of the package that will hold the wellbeing role. --> + <string name="config_systemWellbeing" translatable="false"></string> <!-- The name of the package that will be allowed to change its components' label/icon. --> <string name="config_overrideComponentUiPackage" translatable="false"></string> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 14091738dbee..b5d1e0ceec02 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -3172,6 +3172,8 @@ <public name="config_systemSpeechRecognizer" /> <!-- @hide @SystemApi --> <public name="config_systemWifiCoexManager" /> + <!-- @hide @SystemApi --> + <public name="config_systemWellbeing" /> </public-group> <public-group type="id" first-id="0x01020055"> diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java index 342208c8a32b..c2957780c9d7 100644 --- a/services/core/java/android/content/pm/PackageManagerInternal.java +++ b/services/core/java/android/content/pm/PackageManagerInternal.java @@ -69,7 +69,6 @@ public abstract class PackageManagerInternal { PACKAGE_BROWSER, PACKAGE_SYSTEM_TEXT_CLASSIFIER, PACKAGE_PERMISSION_CONTROLLER, - PACKAGE_WELLBEING, PACKAGE_DOCUMENTER, PACKAGE_CONFIGURATOR, PACKAGE_INCIDENT_REPORT_APPROVER, diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 0cc580353744..bc991634fb07 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -351,6 +351,7 @@ import com.android.internal.os.SomeArgs; import com.android.internal.policy.AttributeCache; import com.android.internal.telephony.CarrierAppUtils; import com.android.internal.util.ArrayUtils; +import com.android.internal.util.CollectionUtils; import com.android.internal.util.ConcurrentUtils; import com.android.internal.util.DumpUtils; import com.android.internal.util.FrameworkStatsLog; @@ -1386,7 +1387,6 @@ public class PackageManagerService extends IPackageManager.Stub public @Nullable String systemTextClassifierPackage; public @Nullable String overlayConfigSignaturePackage; public ViewCompiler viewCompiler; - public @Nullable String wellbeingPackage; public @Nullable String retailDemoPackage; public @Nullable String recentsPackage; public ComponentName resolveComponentName; @@ -1677,7 +1677,6 @@ public class PackageManagerService extends IPackageManager.Stub final @Nullable String mStorageManagerPackage; final @Nullable String mDefaultTextClassifierPackage; final @Nullable String mSystemTextClassifierPackageName; - final @Nullable String mWellbeingPackage; final @Nullable String mDocumenterPackage; final @Nullable String mConfiguratorPackage; final @Nullable String mAppPredictionServicePackage; @@ -6214,7 +6213,6 @@ public class PackageManagerService extends IPackageManager.Stub mStorageManagerPackage = testParams.storageManagerPackage; mDefaultTextClassifierPackage = testParams.defaultTextClassifierPackage; mSystemTextClassifierPackageName = testParams.systemTextClassifierPackage; - mWellbeingPackage = testParams.wellbeingPackage; mRetailDemoPackage = testParams.retailDemoPackage; mRecentsPackage = testParams.recentsPackage; mDocumenterPackage = testParams.documenterPackage; @@ -6815,7 +6813,6 @@ public class PackageManagerService extends IPackageManager.Stub mDefaultTextClassifierPackage = getDefaultTextClassifierPackageName(); mSystemTextClassifierPackageName = getSystemTextClassifierPackageName(); - mWellbeingPackage = getWellbeingPackageName(); mDocumenterPackage = getDocumenterPackageName(); mConfiguratorPackage = getDeviceConfiguratorPackageName(); mAppPredictionServicePackage = getAppPredictionServicePackageName(); @@ -22844,7 +22841,9 @@ public class PackageManagerService extends IPackageManager.Stub @Override public String getWellbeingPackageName() { - return ensureSystemPackageName(mContext.getString(R.string.config_defaultWellbeingPackage)); + return CollectionUtils.firstOrNull( + mContext.getSystemService(RoleManager.class).getRoleHolders( + RoleManager.ROLE_SYSTEM_WELLBEING)); } @Override @@ -26372,8 +26371,6 @@ public class PackageManagerService extends IPackageManager.Stub mDefaultTextClassifierPackage, mSystemTextClassifierPackageName); case PackageManagerInternal.PACKAGE_PERMISSION_CONTROLLER: return filterOnlySystemPackages(mRequiredPermissionControllerPackage); - case PackageManagerInternal.PACKAGE_WELLBEING: - return filterOnlySystemPackages(mWellbeingPackage); case PackageManagerInternal.PACKAGE_DOCUMENTER: return filterOnlySystemPackages(mDocumenterPackage); case PackageManagerInternal.PACKAGE_CONFIGURATOR: diff --git a/services/core/java/com/android/server/pm/permission/Permission.java b/services/core/java/com/android/server/pm/permission/Permission.java index ac50f29fbf32..b421cfc95295 100644 --- a/services/core/java/com/android/server/pm/permission/Permission.java +++ b/services/core/java/com/android/server/pm/permission/Permission.java @@ -304,10 +304,6 @@ public final class Permission { & PermissionInfo.PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER) != 0; } - public boolean isWellbeing() { - return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_FLAG_WELLBEING) != 0; - } - public boolean isDocumenter() { return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_FLAG_DOCUMENTER) != 0; } diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 2dfb6ff3e9a8..616058fc2562 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -3471,13 +3471,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { // Special permissions for the device configurator. allowed = true; } - if (!allowed && bp.isWellbeing() - && ArrayUtils.contains(mPackageManagerInt.getKnownPackageNames( - PackageManagerInternal.PACKAGE_WELLBEING, UserHandle.USER_SYSTEM), - pkg.getPackageName())) { - // Special permission granted only to the OEM specified wellbeing app - allowed = true; - } if (!allowed && bp.isDocumenter() && ArrayUtils.contains(mPackageManagerInt.getKnownPackageNames( PackageManagerInternal.PACKAGE_DOCUMENTER, UserHandle.USER_SYSTEM), |