From 25995fee24365b8365b0a154d2193c63b7fe80be Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Fri, 25 Jan 2019 14:33:11 -0800 Subject: [PATCH] New device config to enable location perm re-up Also expose some test-api's so that tests can set this device config. Bug: 112390914 Test: Tried to trigger with option not set -> no notification atest CtsPermissionTestCases:android.permission.cts.LocationAccessCheckTest Change-Id: Id48771b62615c2083529a2481585fa8a6ada1e45 --- api/system-current.txt | 1 + api/test-current.txt | 11 +++++++++++ core/java/android/provider/DeviceConfig.java | 16 ++++++++++++++++ core/java/android/provider/Settings.java | 1 + 4 files changed, 29 insertions(+) diff --git a/api/system-current.txt b/api/system-current.txt index 311a52de2edfa..c21662f323c7b 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5698,6 +5698,7 @@ package android.provider { public static interface DeviceConfig.Privacy { field public static final String NAMESPACE = "privacy"; + field public static final String PROPERTY_LOCATION_ACCESS_CHECK_ENABLED = "enable_location_access_check"; field public static final String PROPERTY_PERMISSIONS_HUB_ENABLED = "enable_permissions_hub"; } diff --git a/api/test-current.txt b/api/test-current.txt index 0f2ba12bd9adf..864c82febd087 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -1493,6 +1493,16 @@ package android.provider { field public static final android.net.Uri CORP_CONTENT_URI; } + public final class DeviceConfig { + method @RequiresPermission("android.permission.WRITE_DEVICE_CONFIG") public static void resetToDefaults(int, @Nullable String); + method @RequiresPermission("android.permission.WRITE_DEVICE_CONFIG") public static boolean setProperty(String, String, String, boolean); + } + + public static interface DeviceConfig.Privacy { + field public static final String NAMESPACE = "privacy"; + field public static final String PROPERTY_LOCATION_ACCESS_CHECK_ENABLED = "enable_location_access_check"; + } + public final class MediaStore { method @RequiresPermission("android.permission.CLEAR_APP_USER_DATA") public static void deleteContributedMedia(android.content.Context, String, android.os.UserHandle) throws java.io.IOException; method @RequiresPermission("android.permission.CLEAR_APP_USER_DATA") public static long getContributedMediaSize(android.content.Context, String, android.os.UserHandle) throws java.io.IOException; @@ -1500,6 +1510,7 @@ package android.provider { public final class Settings { field public static final String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS"; + field public static final int RESET_MODE_PACKAGE_DEFAULTS = 1; // 0x1 } public static final class Settings.Global extends android.provider.Settings.NameValueTable { diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java index f9320ee68aa4b..abd8168392746 100644 --- a/core/java/android/provider/DeviceConfig.java +++ b/core/java/android/provider/DeviceConfig.java @@ -24,6 +24,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.app.ActivityThread; import android.content.ContentResolver; import android.database.ContentObserver; @@ -44,6 +45,7 @@ import java.util.concurrent.Executor; * @hide */ @SystemApi +@TestApi public final class DeviceConfig { /** * The content:// style URL for the config table. @@ -128,13 +130,22 @@ public final class DeviceConfig { * @hide */ @SystemApi + @TestApi public interface Privacy { String NAMESPACE = "privacy"; /** * Whether to show the Permissions Hub. + * + * @hide */ + @SystemApi String PROPERTY_PERMISSIONS_HUB_ENABLED = "enable_permissions_hub"; + + /** + * Whether to show location access check notifications. + */ + String PROPERTY_LOCATION_ACCESS_CHECK_ENABLED = "enable_location_access_check"; } /** @@ -260,6 +271,7 @@ public final class DeviceConfig { * @see #resetToDefaults(int, String). */ @SystemApi + @TestApi @RequiresPermission(WRITE_DEVICE_CONFIG) public static boolean setProperty( String namespace, String name, String value, boolean makeDefault) { @@ -280,6 +292,7 @@ public final class DeviceConfig { * @see #setProperty(String, String, String, boolean) */ @SystemApi + @TestApi @RequiresPermission(WRITE_DEVICE_CONFIG) public static void resetToDefaults(@ResetMode int resetMode, @Nullable String namespace) { ContentResolver contentResolver = ActivityThread.currentApplication().getContentResolver(); @@ -426,7 +439,10 @@ public final class DeviceConfig { * Interface for monitoring to properties. *

* Override {@link #onPropertyChanged(String, String, String)} to handle callbacks for changes. + * + * @hide */ + @SystemApi public interface OnPropertyChangedListener { /** * Called when a property has changed. diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index d840e3c720cca..c86a4b9def715 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -1830,6 +1830,7 @@ public final class Settings { * This is the only type of reset available to non-system clients. * @hide */ + @TestApi public static final int RESET_MODE_PACKAGE_DEFAULTS = 1; /**