summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuliz Tuncay <gulizseray@google.com>2021-03-08 22:27:55 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-03-08 22:27:55 +0000
commit4fadd2013f84826069344a25409dd50780bcc21a (patch)
treecc5780e22c6b7202e21e377d9eebc6191242cdae
parent8a070bb4653fbc0a28718b999b4de78d279bbfc5 (diff)
parent05bb876929f981d6b50a2cfe6dc506c21c84753a (diff)
Merge "Migrate wellbeing to use role" into sc-dev
-rw-r--r--apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java4
-rw-r--r--core/api/system-current.txt3
-rw-r--r--core/java/android/content/pm/PermissionInfo.java6
-rw-r--r--core/res/AndroidManifest.xml8
-rw-r--r--core/res/res/values/attrs_manifest.xml3
-rw-r--r--core/res/res/values/config.xml2
-rw-r--r--core/res/res/values/public.xml2
-rw-r--r--services/core/java/android/content/pm/PackageManagerInternal.java1
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java11
-rw-r--r--services/core/java/com/android/server/pm/permission/Permission.java4
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerService.java7
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),