diff --git a/res/values/config.xml b/res/values/config.xml
index 4b380446540..e29b3b27993 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -201,6 +201,9 @@
+
+
+
diff --git a/src/com/android/settings/slices/SettingsSliceProvider.java b/src/com/android/settings/slices/SettingsSliceProvider.java
index 872016005a3..397893e2ef7 100644
--- a/src/com/android/settings/slices/SettingsSliceProvider.java
+++ b/src/com/android/settings/slices/SettingsSliceProvider.java
@@ -29,6 +29,7 @@ import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Binder;
+import android.os.Build;
import android.os.StrictMode;
import android.os.UserManager;
import android.provider.Settings;
@@ -388,19 +389,30 @@ public class SettingsSliceProvider extends SliceProvider {
if (descendants == null) {
Log.d(TAG, "No descendants to grant permission with, skipping.");
}
- final String[] allowlistPackages =
+ final List allowlist = new ArrayList<>();
+ final String[] packages =
context.getResources().getStringArray(R.array.slice_allowlist_package_names);
- if (allowlistPackages == null || allowlistPackages.length == 0) {
+ if (packages != null) {
+ allowlist.addAll(Arrays.asList(packages));
+ }
+ if (Build.IS_DEBUGGABLE) {
+ final String[] devPackages = context.getResources().getStringArray(
+ R.array.slice_allowlist_package_names_for_dev);
+ if (devPackages != null) {
+ allowlist.addAll(Arrays.asList(devPackages));
+ }
+ }
+ if (allowlist.size() == 0) {
Log.d(TAG, "No packages to allowlist, skipping.");
return;
} else {
Log.d(TAG, String.format(
"Allowlisting %d uris to %d pkgs.",
- descendants.size(), allowlistPackages.length));
+ descendants.size(), allowlist.size()));
}
final SliceManager sliceManager = context.getSystemService(SliceManager.class);
for (Uri descendant : descendants) {
- for (String toPackage : allowlistPackages) {
+ for (String toPackage : allowlist) {
sliceManager.grantSlicePermission(toPackage, descendant);
}
}
diff --git a/tests/robotests/res/values-mcc998/config.xml b/tests/robotests/res/values-mcc998/config.xml
index 6572b1485b5..18174983a1f 100644
--- a/tests/robotests/res/values-mcc998/config.xml
+++ b/tests/robotests/res/values-mcc998/config.xml
@@ -17,4 +17,7 @@
+
+
+
diff --git a/tests/robotests/res/values-mcc999/config.xml b/tests/robotests/res/values-mcc999/config.xml
index 2183b47a37a..c5b01c93d28 100644
--- a/tests/robotests/res/values-mcc999/config.xml
+++ b/tests/robotests/res/values-mcc999/config.xml
@@ -86,6 +86,11 @@
- com.android.settings.slice_allowlist_package
+
+
+ - com.android.settings.slice_allowlist_package_dev
+
+
test@test.test
diff --git a/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java b/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
index ed2359a1df2..9a87290b881 100644
--- a/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
@@ -80,6 +80,7 @@ import org.robolectric.annotation.Resetter;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowAccessibilityManager;
import org.robolectric.shadows.ShadowBinder;
+import org.robolectric.shadows.ShadowBuild;
import org.robolectric.shadows.ShadowPackageManager;
import java.util.ArrayList;
@@ -647,6 +648,7 @@ public class SettingsSliceProviderTest {
@Test
@Config(qualifiers = "mcc999")
public void grantAllowlistedPackagePermissions_hasPackageAllowlist_shouldGrant() {
+ ShadowBuild.setDebuggable(false);
final List uris = new ArrayList<>();
uris.add(Uri.parse("content://settings/slice"));
@@ -654,6 +656,23 @@ public class SettingsSliceProviderTest {
verify(mManager)
.grantSlicePermission("com.android.settings.slice_allowlist_package", uris.get(0));
+ verify(mManager, never())
+ .grantSlicePermission("com.android.settings.slice_allowlist_package_dev",
+ uris.get(0));
+ }
+
+ @Test
+ @Config(qualifiers = "mcc999")
+ public void grantAllowlistedPackagePermissions_hasPackageAllowlistAndDebuggable_shouldGrant() {
+ ShadowBuild.setDebuggable(true);
+ final List uris = new ArrayList<>();
+ uris.add(Uri.parse("content://settings/slice"));
+
+ SettingsSliceProvider.grantAllowlistedPackagePermissions(mContext, uris);
+
+ verify(mManager)
+ .grantSlicePermission("com.android.settings.slice_allowlist_package_dev",
+ uris.get(0));
}
@Test