Marking setOemNetworkPreference as @SystemApi

Marking setOemNetworkPreference in ConnectivityManager as @SystemApi.

Bug: 176496438
Bug: 176494815
Test: atest FrameworksNetTests
atest FrameworksNetIntegrationTests
atest CtsNetTestCasesLatestSdk

Change-Id: I4681c88dc3a83f71c387b29610c33594e57cb43f
This commit is contained in:
James Mattis
2021-01-26 16:23:52 -08:00
parent 8378aec5fb
commit da32cfeebf
4 changed files with 18 additions and 12 deletions

View File

@@ -18,6 +18,7 @@ package android.net;
import android.annotation.IntDef; import android.annotation.IntDef;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Bundle; import android.os.Bundle;
import android.os.Parcelable; import android.os.Parcelable;
@@ -29,6 +30,7 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
/** @hide */ /** @hide */
@SystemApi
public final class OemNetworkPreferences implements Parcelable { public final class OemNetworkPreferences implements Parcelable {
/** /**
* Default in case this value is not set. Using it will result in an error. * Default in case this value is not set. Using it will result in an error.
@@ -45,17 +47,17 @@ public final class OemNetworkPreferences implements Parcelable {
/** /**
* If an unmetered network is available, use it. * If an unmetered network is available, use it.
* Otherwise, if a network with the OEM_PAID capability is available, use it. * Otherwise, if a network with the OEM_PAID capability is available, use it.
* Otherwise, the app doesn't get a network. * Otherwise, the app doesn't get a default network.
*/ */
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK = 2; public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK = 2;
/** /**
* Prefer only NET_CAPABILITY_OEM_PAID networks. * Use only NET_CAPABILITY_OEM_PAID networks.
*/ */
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY = 3; public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY = 3;
/** /**
* Prefer only NET_CAPABILITY_OEM_PRIVATE networks. * Use only NET_CAPABILITY_OEM_PRIVATE networks.
*/ */
public static final int OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY = 4; public static final int OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY = 4;
@@ -95,8 +97,6 @@ public final class OemNetworkPreferences implements Parcelable {
/** /**
* Builder used to create {@link OemNetworkPreferences} objects. Specify the preferred Network * Builder used to create {@link OemNetworkPreferences} objects. Specify the preferred Network
* to package name mappings. * to package name mappings.
*
* @hide
*/ */
public static final class Builder { public static final class Builder {
private final Bundle mNetworkMappings; private final Bundle mNetworkMappings;
@@ -135,7 +135,7 @@ public final class OemNetworkPreferences implements Parcelable {
* @return The builder to facilitate chaining. * @return The builder to facilitate chaining.
*/ */
@NonNull @NonNull
public Builder removeNetworkPreference(@NonNull final String packageName) { public Builder clearNetworkPreference(@NonNull final String packageName) {
Objects.requireNonNull(packageName); Objects.requireNonNull(packageName);
mNetworkMappings.remove(packageName); mNetworkMappings.remove(packageName);
return this; return this;
@@ -174,6 +174,8 @@ public final class OemNetworkPreferences implements Parcelable {
* *
* @param value int value of OemNetworkPreference * @param value int value of OemNetworkPreference
* @return string version of OemNetworkPreference * @return string version of OemNetworkPreference
*
* @hide
*/ */
@NonNull @NonNull
public static String oemNetworkPreferenceToString(@OemNetworkPreference int value) { public static String oemNetworkPreferenceToString(@OemNetworkPreference int value) {

View File

@@ -5091,8 +5091,10 @@ public class ConnectivityManager {
/** /**
* Listener for {@link #setOemNetworkPreference(OemNetworkPreferences, Executor, * Listener for {@link #setOemNetworkPreference(OemNetworkPreferences, Executor,
* OnSetOemNetworkPreferenceListener)}. * OnSetOemNetworkPreferenceListener)}.
* @hide
*/ */
private interface OnSetOemNetworkPreferenceListener { @SystemApi
public interface OnSetOemNetworkPreferenceListener {
/** /**
* Called when setOemNetworkPreference() successfully completes. * Called when setOemNetworkPreference() successfully completes.
*/ */
@@ -5115,9 +5117,11 @@ public class ConnectivityManager {
* @throws IllegalArgumentException if {@code preference} contains invalid preference values. * @throws IllegalArgumentException if {@code preference} contains invalid preference values.
* @throws SecurityException if missing the appropriate permissions. * @throws SecurityException if missing the appropriate permissions.
* @throws UnsupportedOperationException if called on a non-automotive device. * @throws UnsupportedOperationException if called on a non-automotive device.
* @hide
*/ */
@SystemApi
@RequiresPermission(android.Manifest.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE) @RequiresPermission(android.Manifest.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE)
private void setOemNetworkPreference(@NonNull final OemNetworkPreferences preference, public void setOemNetworkPreference(@NonNull final OemNetworkPreferences preference,
@Nullable @CallbackExecutor final Executor executor, @Nullable @CallbackExecutor final Executor executor,
@Nullable final OnSetOemNetworkPreferenceListener listener) { @Nullable final OnSetOemNetworkPreferenceListener listener) {
Objects.requireNonNull(preference, "OemNetworkPreferences must be non-null"); Objects.requireNonNull(preference, "OemNetworkPreferences must be non-null");

View File

@@ -9332,17 +9332,17 @@ public class ConnectivityService extends IConnectivityManager.Stub
* *
* Calling this will overwrite the existing preference. * Calling this will overwrite the existing preference.
* *
* @param preference {@link OemNetworkPreferences} The application network preference to be set.
* @param listener {@link ConnectivityManager.OnSetOemNetworkPreferenceListener} Listener used * @param listener {@link ConnectivityManager.OnSetOemNetworkPreferenceListener} Listener used
* to communicate completion of setOemNetworkPreference(); * to communicate completion of setOemNetworkPreference();
* @param preference {@link OemNetworkPreferences} The application network preference to be set.
*/ */
@Override @Override
public void setOemNetworkPreference( public void setOemNetworkPreference(
@NonNull final OemNetworkPreferences preference, @NonNull final OemNetworkPreferences preference,
@Nullable final IOnSetOemNetworkPreferenceListener listener) { @Nullable final IOnSetOemNetworkPreferenceListener listener) {
enforceOemNetworkPreferencesPermission();
enforceAutomotiveDevice(); enforceAutomotiveDevice();
enforceOemNetworkPreferencesPermission();
Objects.requireNonNull(preference, "OemNetworkPreferences must be non-null"); Objects.requireNonNull(preference, "OemNetworkPreferences must be non-null");
validateOemNetworkPreferences(preference); validateOemNetworkPreferences(preference);

View File

@@ -54,7 +54,7 @@ public class OemNetworkPreferencesTest {
@Test @Test
public void testBuilderRemoveNetworkPreferenceRequiresNonNullPackageName() { public void testBuilderRemoveNetworkPreferenceRequiresNonNullPackageName() {
assertThrows(NullPointerException.class, assertThrows(NullPointerException.class,
() -> mBuilder.removeNetworkPreference(null)); () -> mBuilder.clearNetworkPreference(null));
} }
@Test @Test
@@ -129,7 +129,7 @@ public class OemNetworkPreferencesTest {
assertTrue(networkPreferences.containsKey(TEST_PACKAGE)); assertTrue(networkPreferences.containsKey(TEST_PACKAGE));
mBuilder.removeNetworkPreference(TEST_PACKAGE); mBuilder.clearNetworkPreference(TEST_PACKAGE);
networkPreferences = mBuilder.build().getNetworkPreferences(); networkPreferences = mBuilder.build().getNetworkPreferences();
assertFalse(networkPreferences.containsKey(TEST_PACKAGE)); assertFalse(networkPreferences.containsKey(TEST_PACKAGE));