From 016c46dcc2921b914854896c60abb5a4deed611a Mon Sep 17 00:00:00 2001
From: Joe Bolinger
Date: Wed, 8 Sep 2021 16:19:11 +0000
Subject: [PATCH] Declare ACTION_MANAGE_SUPERVISOR_RESTRICTED_SETTING intent as
an API.
Fix: 199283484
Test: atest CtsSignatureTestCases
Change-Id: I8a497b1edeca576392a5d0a04b601df8e6e4a30c
---
core/api/current.txt | 4 ++
core/java/android/provider/Settings.java | 53 ++++++++++++++++++-
...metricActionDisabledByAdminController.java | 16 ++----
...icActionDisabledByAdminControllerTest.java | 7 +--
4 files changed, 63 insertions(+), 17 deletions(-)
diff --git a/core/api/current.txt b/core/api/current.txt
index 5656c31c330af..2d140f46cda16 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -35429,6 +35429,7 @@ package android.provider {
field public static final String ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION = "android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION";
field public static final String ACTION_MANAGE_DEFAULT_APPS_SETTINGS = "android.settings.MANAGE_DEFAULT_APPS_SETTINGS";
field public static final String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.action.MANAGE_OVERLAY_PERMISSION";
+ field public static final String ACTION_MANAGE_SUPERVISOR_RESTRICTED_SETTING = "android.settings.MANAGE_SUPERVISOR_RESTRICTED_SETTING";
field public static final String ACTION_MANAGE_UNKNOWN_APP_SOURCES = "android.settings.MANAGE_UNKNOWN_APP_SOURCES";
field public static final String ACTION_MANAGE_WRITE_SETTINGS = "android.settings.action.MANAGE_WRITE_SETTINGS";
field public static final String ACTION_MEMORY_CARD_SETTINGS = "android.settings.MEMORY_CARD_SETTINGS";
@@ -35497,10 +35498,13 @@ package android.provider {
field public static final String EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY = "android.provider.extra.SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY";
field public static final String EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI = "android.provider.extra.SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI";
field public static final String EXTRA_SUB_ID = "android.provider.extra.SUB_ID";
+ field public static final String EXTRA_SUPERVISOR_RESTRICTED_SETTING_KEY = "android.provider.extra.SUPERVISOR_RESTRICTED_SETTING_KEY";
field public static final String EXTRA_WIFI_NETWORK_LIST = "android.provider.extra.WIFI_NETWORK_LIST";
field public static final String EXTRA_WIFI_NETWORK_RESULT_LIST = "android.provider.extra.WIFI_NETWORK_RESULT_LIST";
field public static final String INTENT_CATEGORY_USAGE_ACCESS_CONFIG = "android.intent.category.USAGE_ACCESS_CONFIG";
field public static final String METADATA_USAGE_ACCESS_REASON = "android.settings.metadata.USAGE_ACCESS_REASON";
+ field public static final String SUPERVISOR_VERIFICATION_SETTING_BIOMETRICS = "supervisor_restricted_biometrics_controller";
+ field public static final String SUPERVISOR_VERIFICATION_SETTING_UNKNOWN = "";
}
public static final class Settings.Global extends android.provider.Settings.NameValueTable {
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index dfc4fa7238c70..2ff550eeaac4f 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -24,6 +24,7 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.StringDef;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.TestApi;
@@ -2051,8 +2052,56 @@ public final class Settings {
// Intent#EXTRA_USER_ID can also be used
@SystemApi
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
- public static final String ACTION_SHOW_ADMIN_SUPPORT_DETAILS
- = "android.settings.SHOW_ADMIN_SUPPORT_DETAILS";
+ public static final String ACTION_SHOW_ADMIN_SUPPORT_DETAILS =
+ "android.settings.SHOW_ADMIN_SUPPORT_DETAILS";
+
+ /**
+ * Intent extra: The id of a setting restricted by supervisors.
+ *
+ * Type: String with a value from the SupervisorVerificationSetting annotation below.
+ *
+ * - {@link #SUPERVISOR_VERIFICATION_SETTING_UNKNOWN}
+ *
- {@link #SUPERVISOR_VERIFICATION_SETTING_BIOMETRICS}
+ *
+ *
+ */
+ public static final String EXTRA_SUPERVISOR_RESTRICTED_SETTING_KEY =
+ "android.provider.extra.SUPERVISOR_RESTRICTED_SETTING_KEY";
+
+ /**
+ * Unknown setting.
+ */
+ public static final String SUPERVISOR_VERIFICATION_SETTING_UNKNOWN = "";
+
+ /**
+ * Biometric settings for supervisors.
+ */
+ public static final String SUPERVISOR_VERIFICATION_SETTING_BIOMETRICS =
+ "supervisor_restricted_biometrics_controller";
+
+ /**
+ * Keys for {@link #EXTRA_SUPERVISOR_RESTRICTED_SETTING_KEY}.
+ * @hide
+ */
+ @Retention(RetentionPolicy.SOURCE)
+ @StringDef(prefix = { "SUPERVISOR_VERIFICATION_SETTING_" }, value = {
+ SUPERVISOR_VERIFICATION_SETTING_UNKNOWN,
+ SUPERVISOR_VERIFICATION_SETTING_BIOMETRICS,
+ })
+ public @interface SupervisorVerificationSetting {}
+
+ /**
+ * Activity action: Launch UI to manage a setting restricted by supervisors.
+ *
+ * Input: {@link #EXTRA_SUPERVISOR_RESTRICTED_SETTING_KEY} specifies what setting to open.
+ *
+ *
+ * Output: Nothing.
+ *
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_MANAGE_SUPERVISOR_RESTRICTED_SETTING =
+ "android.settings.MANAGE_SUPERVISOR_RESTRICTED_SETTING";
/**
* Activity Action: Show a dialog for remote bugreport flow.
diff --git a/packages/SettingsLib/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminController.java b/packages/SettingsLib/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminController.java
index 2c0162f608ac2..6e93494bf40e0 100644
--- a/packages/SettingsLib/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminController.java
@@ -20,10 +20,10 @@ import android.annotation.NonNull;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.provider.Settings;
import android.util.Log;
import androidx.annotation.Nullable;
-import androidx.annotation.VisibleForTesting;
import com.android.settingslib.RestrictedLockUtils;
@@ -31,15 +31,6 @@ public class BiometricActionDisabledByAdminController extends BaseActionDisabled
private static final String TAG = "BiometricActionDisabledByAdminController";
- // These MUST not change, as they are the stable API between here and device admin specified
- // by the component below.
- @VisibleForTesting
- static final String ACTION_LEARN_MORE = "android.intent.action.MANAGE_RESTRICTED_SETTING";
- @VisibleForTesting
- static final String EXTRA_SETTING_KEY = "extra_setting";
- @VisibleForTesting
- static final String EXTRA_SETTING_VALUE = "biometric_disabled_by_admin_controller";
-
BiometricActionDisabledByAdminController(
DeviceAdminStringProvider stringProvider) {
super(stringProvider);
@@ -66,8 +57,9 @@ public class BiometricActionDisabledByAdminController extends BaseActionDisabled
@NonNull RestrictedLockUtils.EnforcedAdmin enforcedAdmin) {
return (dialog, which) -> {
Log.d(TAG, "Positive button clicked, component: " + enforcedAdmin.component);
- final Intent intent = new Intent(ACTION_LEARN_MORE)
- .putExtra(EXTRA_SETTING_KEY, EXTRA_SETTING_VALUE)
+ final Intent intent = new Intent(Settings.ACTION_MANAGE_SUPERVISOR_RESTRICTED_SETTING)
+ .putExtra(Settings.EXTRA_SUPERVISOR_RESTRICTED_SETTING_KEY,
+ Settings.SUPERVISOR_VERIFICATION_SETTING_BIOMETRICS)
.setPackage(enforcedAdmin.component.getPackageName());
context.startActivity(intent);
};
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminControllerTest.java
index c41f4db6f6d11..8ec577e8a764a 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminControllerTest.java
@@ -32,6 +32,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.UserHandle;
+import android.provider.Settings;
import com.android.settingslib.RestrictedLockUtils;
@@ -77,11 +78,11 @@ public class BiometricActionDisabledByAdminControllerTest {
ArgumentCaptor intentCaptor = ArgumentCaptor.forClass(Intent.class);
verify(mContext).startActivity(intentCaptor.capture());
- assertEquals(BiometricActionDisabledByAdminController.ACTION_LEARN_MORE,
+ assertEquals(Settings.ACTION_MANAGE_SUPERVISOR_RESTRICTED_SETTING,
intentCaptor.getValue().getAction());
- assertEquals(BiometricActionDisabledByAdminController.EXTRA_SETTING_VALUE,
+ assertEquals(Settings.SUPERVISOR_VERIFICATION_SETTING_BIOMETRICS,
intentCaptor.getValue().getStringExtra(
- BiometricActionDisabledByAdminController.EXTRA_SETTING_KEY));
+ Settings.EXTRA_SUPERVISOR_RESTRICTED_SETTING_KEY));
assertSame(componentName, intentCaptor.getValue().getComponent());
}
}