Loading core/api/module-lib-current.txt +20 −0 Original line number Diff line number Diff line Loading @@ -425,6 +425,26 @@ package android.provider { field public static final String NAMESPACE_DEVICE_IDLE = "device_idle"; } public final class Settings { field public static final int RESET_MODE_PACKAGE_DEFAULTS = 1; // 0x1 field public static final int RESET_MODE_TRUSTED_DEFAULTS = 4; // 0x4 field public static final int RESET_MODE_UNTRUSTED_CHANGES = 3; // 0x3 field public static final int RESET_MODE_UNTRUSTED_DEFAULTS = 2; // 0x2 } public static final class Settings.Config extends android.provider.Settings.NameValueTable { method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean deleteString(@NonNull String, @NonNull String); method @Nullable @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static String getString(@NonNull String); method @NonNull @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static java.util.Map<java.lang.String,java.lang.String> getStrings(@NonNull String, @NonNull java.util.List<java.lang.String>); method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static int getSyncDisabledMode(); method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean putString(@NonNull String, @NonNull String, @Nullable String, boolean); method public static void registerContentObserver(@Nullable String, boolean, @NonNull android.database.ContentObserver); method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static void resetToDefaults(int, @Nullable String); method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setStrings(@NonNull String, @NonNull java.util.Map<java.lang.String,java.lang.String>) throws android.provider.DeviceConfig.BadConfigException; method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static void setSyncDisabledMode(int); method public static void unregisterContentObserver(@NonNull android.database.ContentObserver); } public static final class Settings.Global extends android.provider.Settings.NameValueTable { field public static final String BLE_SCAN_ALWAYS_AVAILABLE = "ble_scan_always_enabled"; field public static final String BLE_SCAN_BACKGROUND_MODE = "ble_scan_background_mode"; Loading core/java/android/provider/DeviceConfig.java +1 −13 Original line number Diff line number Diff line Loading @@ -54,13 +54,6 @@ import java.util.concurrent.Executor; */ @SystemApi public final class DeviceConfig { /** * The content:// style URL for the config table. * * @hide */ public static final Uri CONTENT_URI = Uri.parse("content://" + Settings.AUTHORITY + "/config"); /** * Namespace for activity manager related features. These features will be applied * immediately upon change. Loading Loading @@ -1194,11 +1187,6 @@ public final class DeviceConfig { } } private static Uri createNamespaceUri(@NonNull String namespace) { Preconditions.checkNotNull(namespace); return CONTENT_URI.buildUpon().appendPath(namespace).build(); } /** * Increment the count used to represent the number of listeners subscribed to the given * namespace. If this is the first (i.e. incrementing from 0 to 1) for the given namespace, a Loading @@ -1223,7 +1211,7 @@ public final class DeviceConfig { } }; Settings.Config .registerContentObserver(createNamespaceUri(namespace), true, contentObserver); .registerContentObserver(namespace, true, contentObserver); sNamespaces.put(namespace, new Pair<>(contentObserver, 1)); } } Loading core/java/android/provider/Settings.java +51 −15 Original line number Diff line number Diff line Loading @@ -2819,6 +2819,7 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final int RESET_MODE_PACKAGE_DEFAULTS = 1; /** Loading @@ -2828,6 +2829,7 @@ public final class Settings { * the setting will be deleted. This mode is only available to the system. * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final int RESET_MODE_UNTRUSTED_DEFAULTS = 2; /** Loading @@ -2838,6 +2840,7 @@ public final class Settings { * This mode is only available to the system. * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final int RESET_MODE_UNTRUSTED_CHANGES = 3; /** Loading @@ -2849,6 +2852,7 @@ public final class Settings { * to the system. * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final int RESET_MODE_TRUSTED_DEFAULTS = 4; /** @hide */ Loading Loading @@ -18001,6 +18005,7 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final class Config extends NameValueTable { /** Loading Loading @@ -18035,12 +18040,19 @@ public final class Settings { */ public static final int SYNC_DISABLED_MODE_UNTIL_REBOOT = 2; /** * The content:// style URL for the config table. * * @hide */ public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/config"); private static final ContentProviderHolder sProviderHolder = new ContentProviderHolder(DeviceConfig.CONTENT_URI); new ContentProviderHolder(CONTENT_URI); // Populated lazily, guarded by class object: private static final NameValueCache sNameValueCache = new NameValueCache( DeviceConfig.CONTENT_URI, CONTENT_URI, CALL_METHOD_GET_CONFIG, CALL_METHOD_PUT_CONFIG, CALL_METHOD_DELETE_CONFIG, Loading @@ -18049,6 +18061,10 @@ public final class Settings { sProviderHolder, Config.class); // Should never be invoked private Config() { } /** * Look up a name in the database. * @param name to look up in the table Loading @@ -18056,8 +18072,10 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @Nullable @RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG) static String getString(String name) { public static String getString(@NonNull String name) { ContentResolver resolver = getContentResolver(); return sNameValueCache.getStringForUser(resolver, name, resolver.getUserId()); } Loading @@ -18072,6 +18090,8 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @NonNull @RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG) public static Map<String, String> getStrings(@NonNull String namespace, @NonNull List<String> names) { Loading Loading @@ -18128,6 +18148,7 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean putString(@NonNull String namespace, @NonNull String name, @Nullable String value, boolean makeDefault) { Loading @@ -18147,6 +18168,7 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setStrings(@NonNull String namespace, @NonNull Map<String, String> keyValues) Loading Loading @@ -18197,8 +18219,9 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) static boolean deleteString(@NonNull String namespace, public static boolean deleteString(@NonNull String namespace, @NonNull String name) { ContentResolver resolver = getContentResolver(); return sNameValueCache.deleteStringForUser(resolver, Loading @@ -18218,8 +18241,9 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) static void resetToDefaults(@ResetMode int resetMode, public static void resetToDefaults(@ResetMode int resetMode, @Nullable String namespace) { try { ContentResolver resolver = getContentResolver(); Loading @@ -18233,7 +18257,7 @@ public final class Settings { cp.call(resolver.getAttributionSource(), sProviderHolder.mUri.getAuthority(), CALL_METHOD_RESET_CONFIG, null, arg); } catch (RemoteException e) { Log.w(TAG, "Can't reset to defaults for " + DeviceConfig.CONTENT_URI, e); Log.w(TAG, "Can't reset to defaults for " + CONTENT_URI, e); } } Loading @@ -18243,9 +18267,10 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @SuppressLint("AndroidFrameworkRequiresPermission") @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) static void setSyncDisabledMode(@SyncDisabledMode int disableSyncMode) { public static void setSyncDisabledMode(@SyncDisabledMode int disableSyncMode) { try { ContentResolver resolver = getContentResolver(); Bundle args = new Bundle(); Loading @@ -18254,7 +18279,7 @@ public final class Settings { cp.call(resolver.getAttributionSource(), sProviderHolder.mUri.getAuthority(), CALL_METHOD_SET_SYNC_DISABLED_MODE_CONFIG, null, args); } catch (RemoteException e) { Log.w(TAG, "Can't set sync disabled mode " + DeviceConfig.CONTENT_URI, e); Log.w(TAG, "Can't set sync disabled mode " + CONTENT_URI, e); } } Loading @@ -18264,9 +18289,10 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @SuppressLint("AndroidFrameworkRequiresPermission") @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) static int getSyncDisabledMode() { public static int getSyncDisabledMode() { try { ContentResolver resolver = getContentResolver(); Bundle args = Bundle.EMPTY; Loading @@ -18277,7 +18303,7 @@ public final class Settings { null, args); return bundle.getInt(KEY_CONFIG_GET_SYNC_DISABLED_MODE_RETURN); } catch (RemoteException e) { Log.w(TAG, "Can't query sync disabled mode " + DeviceConfig.CONTENT_URI, e); Log.w(TAG, "Can't query sync disabled mode " + CONTENT_URI, e); } return -1; } Loading @@ -18297,21 +18323,26 @@ public final class Settings { /** * Register a content observer * Register a content observer. * * @hide */ public static void registerContentObserver(@NonNull Uri uri, boolean notifyForDescendants, @NonNull ContentObserver observer) { @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static void registerContentObserver(@Nullable String namespace, boolean notifyForDescendants, @NonNull ContentObserver observer) { ActivityThread.currentApplication().getContentResolver() .registerContentObserver(uri, notifyForDescendants, observer); .registerContentObserver(createNamespaceUri(namespace), notifyForDescendants, observer); } /** * Unregister a content observer * Unregister a content observer. * this may only be used with content observers registered through * {@link Config#registerContentObserver} * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static void unregisterContentObserver(@NonNull ContentObserver observer) { ActivityThread.currentApplication().getContentResolver() .unregisterContentObserver(observer); Loading Loading @@ -18372,6 +18403,11 @@ public final class Settings { return namespace + "/"; } private static Uri createNamespaceUri(@NonNull String namespace) { Preconditions.checkNotNull(namespace); return CONTENT_URI.buildUpon().appendPath(namespace).build(); } private static ContentResolver getContentResolver() { return ActivityThread.currentApplication().getContentResolver(); } core/tests/coretests/src/android/provider/DeviceConfigTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -857,7 +857,10 @@ public class DeviceConfigTest { ContentResolver resolver = InstrumentationRegistry.getContext().getContentResolver(); String compositeName = namespace + "/" + key; Bundle result = resolver.call( DeviceConfig.CONTENT_URI, Settings.CALL_METHOD_DELETE_CONFIG, compositeName, null); Settings.Config.CONTENT_URI, Settings.CALL_METHOD_DELETE_CONFIG, compositeName, null); assertThat(result).isNotNull(); return compositeName.equals(result.getString(Settings.NameValueTable.VALUE)); } Loading core/tests/coretests/src/android/provider/NameValueCacheTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ public class NameValueCacheTest { when(mMockContentProvider.getIContentProvider()).thenReturn(mMockIContentProvider); mMockContentResolver = new MockContentResolver(InstrumentationRegistry .getInstrumentation().getContext()); mMockContentResolver.addProvider(DeviceConfig.CONTENT_URI.getAuthority(), mMockContentResolver.addProvider(Settings.Config.CONTENT_URI.getAuthority(), mMockContentProvider); mCacheGenerationStore = new MemoryIntArray(1); mStorage = new HashMap<>(); Loading @@ -84,7 +84,7 @@ public class NameValueCacheTest { // Stores keyValues for a given prefix and increments the generation. (Note that this // increments the generation no matter what, it doesn't pay attention to if anything // actually changed). when(mMockIContentProvider.call(any(), eq(DeviceConfig.CONTENT_URI.getAuthority()), when(mMockIContentProvider.call(any(), eq(Settings.Config.CONTENT_URI.getAuthority()), eq(Settings.CALL_METHOD_SET_ALL_CONFIG), any(), any(Bundle.class))).thenAnswer(invocationOnMock -> { Bundle incomingBundle = invocationOnMock.getArgument(4); Loading @@ -104,7 +104,7 @@ public class NameValueCacheTest { // Returns the keyValues corresponding to a namespace, or an empty map if the namespace // doesn't have anything stored for it. Returns the generation key if the caller asked // for one. when(mMockIContentProvider.call(any(), eq(DeviceConfig.CONTENT_URI.getAuthority()), when(mMockIContentProvider.call(any(), eq(Settings.Config.CONTENT_URI.getAuthority()), eq(Settings.CALL_METHOD_LIST_CONFIG), any(), any(Bundle.class))).thenAnswer(invocationOnMock -> { Bundle incomingBundle = invocationOnMock.getArgument(4); Loading Loading
core/api/module-lib-current.txt +20 −0 Original line number Diff line number Diff line Loading @@ -425,6 +425,26 @@ package android.provider { field public static final String NAMESPACE_DEVICE_IDLE = "device_idle"; } public final class Settings { field public static final int RESET_MODE_PACKAGE_DEFAULTS = 1; // 0x1 field public static final int RESET_MODE_TRUSTED_DEFAULTS = 4; // 0x4 field public static final int RESET_MODE_UNTRUSTED_CHANGES = 3; // 0x3 field public static final int RESET_MODE_UNTRUSTED_DEFAULTS = 2; // 0x2 } public static final class Settings.Config extends android.provider.Settings.NameValueTable { method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean deleteString(@NonNull String, @NonNull String); method @Nullable @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static String getString(@NonNull String); method @NonNull @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static java.util.Map<java.lang.String,java.lang.String> getStrings(@NonNull String, @NonNull java.util.List<java.lang.String>); method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static int getSyncDisabledMode(); method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean putString(@NonNull String, @NonNull String, @Nullable String, boolean); method public static void registerContentObserver(@Nullable String, boolean, @NonNull android.database.ContentObserver); method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static void resetToDefaults(int, @Nullable String); method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setStrings(@NonNull String, @NonNull java.util.Map<java.lang.String,java.lang.String>) throws android.provider.DeviceConfig.BadConfigException; method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static void setSyncDisabledMode(int); method public static void unregisterContentObserver(@NonNull android.database.ContentObserver); } public static final class Settings.Global extends android.provider.Settings.NameValueTable { field public static final String BLE_SCAN_ALWAYS_AVAILABLE = "ble_scan_always_enabled"; field public static final String BLE_SCAN_BACKGROUND_MODE = "ble_scan_background_mode"; Loading
core/java/android/provider/DeviceConfig.java +1 −13 Original line number Diff line number Diff line Loading @@ -54,13 +54,6 @@ import java.util.concurrent.Executor; */ @SystemApi public final class DeviceConfig { /** * The content:// style URL for the config table. * * @hide */ public static final Uri CONTENT_URI = Uri.parse("content://" + Settings.AUTHORITY + "/config"); /** * Namespace for activity manager related features. These features will be applied * immediately upon change. Loading Loading @@ -1194,11 +1187,6 @@ public final class DeviceConfig { } } private static Uri createNamespaceUri(@NonNull String namespace) { Preconditions.checkNotNull(namespace); return CONTENT_URI.buildUpon().appendPath(namespace).build(); } /** * Increment the count used to represent the number of listeners subscribed to the given * namespace. If this is the first (i.e. incrementing from 0 to 1) for the given namespace, a Loading @@ -1223,7 +1211,7 @@ public final class DeviceConfig { } }; Settings.Config .registerContentObserver(createNamespaceUri(namespace), true, contentObserver); .registerContentObserver(namespace, true, contentObserver); sNamespaces.put(namespace, new Pair<>(contentObserver, 1)); } } Loading
core/java/android/provider/Settings.java +51 −15 Original line number Diff line number Diff line Loading @@ -2819,6 +2819,7 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final int RESET_MODE_PACKAGE_DEFAULTS = 1; /** Loading @@ -2828,6 +2829,7 @@ public final class Settings { * the setting will be deleted. This mode is only available to the system. * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final int RESET_MODE_UNTRUSTED_DEFAULTS = 2; /** Loading @@ -2838,6 +2840,7 @@ public final class Settings { * This mode is only available to the system. * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final int RESET_MODE_UNTRUSTED_CHANGES = 3; /** Loading @@ -2849,6 +2852,7 @@ public final class Settings { * to the system. * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final int RESET_MODE_TRUSTED_DEFAULTS = 4; /** @hide */ Loading Loading @@ -18001,6 +18005,7 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final class Config extends NameValueTable { /** Loading Loading @@ -18035,12 +18040,19 @@ public final class Settings { */ public static final int SYNC_DISABLED_MODE_UNTIL_REBOOT = 2; /** * The content:// style URL for the config table. * * @hide */ public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/config"); private static final ContentProviderHolder sProviderHolder = new ContentProviderHolder(DeviceConfig.CONTENT_URI); new ContentProviderHolder(CONTENT_URI); // Populated lazily, guarded by class object: private static final NameValueCache sNameValueCache = new NameValueCache( DeviceConfig.CONTENT_URI, CONTENT_URI, CALL_METHOD_GET_CONFIG, CALL_METHOD_PUT_CONFIG, CALL_METHOD_DELETE_CONFIG, Loading @@ -18049,6 +18061,10 @@ public final class Settings { sProviderHolder, Config.class); // Should never be invoked private Config() { } /** * Look up a name in the database. * @param name to look up in the table Loading @@ -18056,8 +18072,10 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @Nullable @RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG) static String getString(String name) { public static String getString(@NonNull String name) { ContentResolver resolver = getContentResolver(); return sNameValueCache.getStringForUser(resolver, name, resolver.getUserId()); } Loading @@ -18072,6 +18090,8 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @NonNull @RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG) public static Map<String, String> getStrings(@NonNull String namespace, @NonNull List<String> names) { Loading Loading @@ -18128,6 +18148,7 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean putString(@NonNull String namespace, @NonNull String name, @Nullable String value, boolean makeDefault) { Loading @@ -18147,6 +18168,7 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setStrings(@NonNull String namespace, @NonNull Map<String, String> keyValues) Loading Loading @@ -18197,8 +18219,9 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) static boolean deleteString(@NonNull String namespace, public static boolean deleteString(@NonNull String namespace, @NonNull String name) { ContentResolver resolver = getContentResolver(); return sNameValueCache.deleteStringForUser(resolver, Loading @@ -18218,8 +18241,9 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) static void resetToDefaults(@ResetMode int resetMode, public static void resetToDefaults(@ResetMode int resetMode, @Nullable String namespace) { try { ContentResolver resolver = getContentResolver(); Loading @@ -18233,7 +18257,7 @@ public final class Settings { cp.call(resolver.getAttributionSource(), sProviderHolder.mUri.getAuthority(), CALL_METHOD_RESET_CONFIG, null, arg); } catch (RemoteException e) { Log.w(TAG, "Can't reset to defaults for " + DeviceConfig.CONTENT_URI, e); Log.w(TAG, "Can't reset to defaults for " + CONTENT_URI, e); } } Loading @@ -18243,9 +18267,10 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @SuppressLint("AndroidFrameworkRequiresPermission") @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) static void setSyncDisabledMode(@SyncDisabledMode int disableSyncMode) { public static void setSyncDisabledMode(@SyncDisabledMode int disableSyncMode) { try { ContentResolver resolver = getContentResolver(); Bundle args = new Bundle(); Loading @@ -18254,7 +18279,7 @@ public final class Settings { cp.call(resolver.getAttributionSource(), sProviderHolder.mUri.getAuthority(), CALL_METHOD_SET_SYNC_DISABLED_MODE_CONFIG, null, args); } catch (RemoteException e) { Log.w(TAG, "Can't set sync disabled mode " + DeviceConfig.CONTENT_URI, e); Log.w(TAG, "Can't set sync disabled mode " + CONTENT_URI, e); } } Loading @@ -18264,9 +18289,10 @@ public final class Settings { * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @SuppressLint("AndroidFrameworkRequiresPermission") @RequiresPermission(Manifest.permission.WRITE_DEVICE_CONFIG) static int getSyncDisabledMode() { public static int getSyncDisabledMode() { try { ContentResolver resolver = getContentResolver(); Bundle args = Bundle.EMPTY; Loading @@ -18277,7 +18303,7 @@ public final class Settings { null, args); return bundle.getInt(KEY_CONFIG_GET_SYNC_DISABLED_MODE_RETURN); } catch (RemoteException e) { Log.w(TAG, "Can't query sync disabled mode " + DeviceConfig.CONTENT_URI, e); Log.w(TAG, "Can't query sync disabled mode " + CONTENT_URI, e); } return -1; } Loading @@ -18297,21 +18323,26 @@ public final class Settings { /** * Register a content observer * Register a content observer. * * @hide */ public static void registerContentObserver(@NonNull Uri uri, boolean notifyForDescendants, @NonNull ContentObserver observer) { @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static void registerContentObserver(@Nullable String namespace, boolean notifyForDescendants, @NonNull ContentObserver observer) { ActivityThread.currentApplication().getContentResolver() .registerContentObserver(uri, notifyForDescendants, observer); .registerContentObserver(createNamespaceUri(namespace), notifyForDescendants, observer); } /** * Unregister a content observer * Unregister a content observer. * this may only be used with content observers registered through * {@link Config#registerContentObserver} * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static void unregisterContentObserver(@NonNull ContentObserver observer) { ActivityThread.currentApplication().getContentResolver() .unregisterContentObserver(observer); Loading Loading @@ -18372,6 +18403,11 @@ public final class Settings { return namespace + "/"; } private static Uri createNamespaceUri(@NonNull String namespace) { Preconditions.checkNotNull(namespace); return CONTENT_URI.buildUpon().appendPath(namespace).build(); } private static ContentResolver getContentResolver() { return ActivityThread.currentApplication().getContentResolver(); }
core/tests/coretests/src/android/provider/DeviceConfigTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -857,7 +857,10 @@ public class DeviceConfigTest { ContentResolver resolver = InstrumentationRegistry.getContext().getContentResolver(); String compositeName = namespace + "/" + key; Bundle result = resolver.call( DeviceConfig.CONTENT_URI, Settings.CALL_METHOD_DELETE_CONFIG, compositeName, null); Settings.Config.CONTENT_URI, Settings.CALL_METHOD_DELETE_CONFIG, compositeName, null); assertThat(result).isNotNull(); return compositeName.equals(result.getString(Settings.NameValueTable.VALUE)); } Loading
core/tests/coretests/src/android/provider/NameValueCacheTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ public class NameValueCacheTest { when(mMockContentProvider.getIContentProvider()).thenReturn(mMockIContentProvider); mMockContentResolver = new MockContentResolver(InstrumentationRegistry .getInstrumentation().getContext()); mMockContentResolver.addProvider(DeviceConfig.CONTENT_URI.getAuthority(), mMockContentResolver.addProvider(Settings.Config.CONTENT_URI.getAuthority(), mMockContentProvider); mCacheGenerationStore = new MemoryIntArray(1); mStorage = new HashMap<>(); Loading @@ -84,7 +84,7 @@ public class NameValueCacheTest { // Stores keyValues for a given prefix and increments the generation. (Note that this // increments the generation no matter what, it doesn't pay attention to if anything // actually changed). when(mMockIContentProvider.call(any(), eq(DeviceConfig.CONTENT_URI.getAuthority()), when(mMockIContentProvider.call(any(), eq(Settings.Config.CONTENT_URI.getAuthority()), eq(Settings.CALL_METHOD_SET_ALL_CONFIG), any(), any(Bundle.class))).thenAnswer(invocationOnMock -> { Bundle incomingBundle = invocationOnMock.getArgument(4); Loading @@ -104,7 +104,7 @@ public class NameValueCacheTest { // Returns the keyValues corresponding to a namespace, or an empty map if the namespace // doesn't have anything stored for it. Returns the generation key if the caller asked // for one. when(mMockIContentProvider.call(any(), eq(DeviceConfig.CONTENT_URI.getAuthority()), when(mMockIContentProvider.call(any(), eq(Settings.Config.CONTENT_URI.getAuthority()), eq(Settings.CALL_METHOD_LIST_CONFIG), any(), any(Bundle.class))).thenAnswer(invocationOnMock -> { Bundle incomingBundle = invocationOnMock.getArgument(4); Loading