summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jay Thomas Sullivan <jaysullivan@google.com> 2024-01-26 14:38:00 -0800
committer Jay Thomas Sullivan <jaysullivan@google.com> 2024-01-29 16:45:12 -0800
commitb038eae4dccbc562c122b203a387a26482e7348f (patch)
treed3a098f2d1a82f5d977056472755b68ad49007f9
parent0ab7d5b89d241a031db960ee7c5ef7631e045ba0 (diff)
[ECM] Make setClearRestrictionAllowed SystemApi
We plan to call EnhancedConfirmationManager::setClearRestrictionAllowed a hidden API method, from PermissionController. But, PermissionController can't access hidden API methods. In order to make this possible, setClearRestrictionAllowed will need to be upgraded from hidden API to SystemApi. The reason we need to call setClearRestrictionAllowed from PermissionController is that we plan to move the ActionDisabledByAppOpsDialog activity into PermissionController, and modify it to call setClearRestrictionAllowed instead of directly setting appops. Bug: 322026141 Fix: 320517290 Test: atest CtsPermissionUiTestCases:android.permissionui.cts.EnhancedConfirmationManagerTest Change-Id: Ibd068ac456846fd1af8e867a6b336853a7835c4a
-rw-r--r--framework-s/api/system-current.txt1
-rw-r--r--framework-s/java/android/app/ecm/EnhancedConfirmationManager.java1
-rw-r--r--tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationManagerTest.kt11
3 files changed, 2 insertions, 11 deletions
diff --git a/framework-s/api/system-current.txt b/framework-s/api/system-current.txt
index 02ab5b562..183de368a 100644
--- a/framework-s/api/system-current.txt
+++ b/framework-s/api/system-current.txt
@@ -6,6 +6,7 @@ package android.app.ecm {
method @NonNull public android.app.PendingIntent getRestrictedSettingDialogIntent(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
method @RequiresPermission(android.Manifest.permission.MANAGE_ENHANCED_CONFIRMATION_STATES) public boolean isClearRestrictionAllowed(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
method @RequiresPermission(android.Manifest.permission.MANAGE_ENHANCED_CONFIRMATION_STATES) public boolean isRestricted(@NonNull String, @NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @RequiresPermission(android.Manifest.permission.MANAGE_ENHANCED_CONFIRMATION_STATES) public void setClearRestrictionAllowed(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
}
}
diff --git a/framework-s/java/android/app/ecm/EnhancedConfirmationManager.java b/framework-s/java/android/app/ecm/EnhancedConfirmationManager.java
index 6feae2ee8..4db179288 100644
--- a/framework-s/java/android/app/ecm/EnhancedConfirmationManager.java
+++ b/framework-s/java/android/app/ecm/EnhancedConfirmationManager.java
@@ -307,7 +307,6 @@ public final class EnhancedConfirmationManager {
*
* @param packageName package name of the application which should be considered acknowledged
* @throws NameNotFoundException if the provided package was not found
- * @hide
*/
@RequiresPermission(android.Manifest.permission.MANAGE_ENHANCED_CONFIRMATION_STATES)
public void setClearRestrictionAllowed(@NonNull String packageName)
diff --git a/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationManagerTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationManagerTest.kt
index 7ef050fae..83f53b252 100644
--- a/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationManagerTest.kt
+++ b/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationManagerTest.kt
@@ -112,7 +112,7 @@ class EnhancedConfirmationManagerTest : BaseUsePermissionTest() {
installPackageWithInstallSourceAndMetadataFromDownloadedFile(apkName)
runWithShellPermissionIdentity {
eventually { assertTrue(ecm.isRestricted(APP_PACKAGE_NAME, PROTECTED_SETTING)) }
- setClearRestrictionAllowed(context, APP_PACKAGE_NAME)
+ ecm.setClearRestrictionAllowed(APP_PACKAGE_NAME)
eventually { assertTrue(ecm.isClearRestrictionAllowed(APP_PACKAGE_NAME)) }
ecm.clearRestriction(APP_PACKAGE_NAME)
eventually { assertFalse(ecm.isRestricted(APP_PACKAGE_NAME, PROTECTED_SETTING)) }
@@ -122,17 +122,8 @@ class EnhancedConfirmationManagerTest : BaseUsePermissionTest() {
companion object {
private const val NON_PROTECTED_SETTING = "example_setting_which_is_not_protected"
private const val PROTECTED_SETTING = "android:bind_accessibility_service"
- private const val MODE_IGNORED = 1
private const val MODE_ERRORED = 2
- // TODO(b/320517290): Since setClearRestrictionAllowed is not API, we're currently
- // simulating its behavior. We should instead actually invoke this method on
- // EnhancedConfirmationManager.
- @Throws(PackageManager.NameNotFoundException::class)
- private fun setClearRestrictionAllowed(context: Context, packageName: String) {
- setAppEcmState(context, packageName, MODE_IGNORED)
- }
-
@Throws(PackageManager.NameNotFoundException::class)
private fun setAppEcmState(context: Context, packageName: String, mode: Int) {
val appOpsManager = context.getSystemService(AppOpsManager::class.java)!!