From 8e2d8bdc398b125558457a5e69a6f0e61ca761a2 Mon Sep 17 00:00:00 2001 From: Isaac Katzenelson Date: Tue, 28 Feb 2023 02:22:06 +0000 Subject: [PATCH] API Review: KnownNetwork changes. Bug: 268486125 Test: atest KnownNetworkTest Change-Id: Ifdae8e18889cea3aa44f1abe4f05af88ebd56e0f --- core/api/system-current.txt | 9 ++--- .../sharedconnectivity/app/KnownNetwork.java | 36 +++++++++++++------ 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 3307a4fab9229..43440a8c05b94 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -10028,21 +10028,22 @@ package android.net.wifi.sharedconnectivity.app { public final class KnownNetwork implements android.os.Parcelable { method public int describeContents(); - method @NonNull public android.net.wifi.sharedconnectivity.app.DeviceInfo getDeviceInfo(); + method @Nullable public android.net.wifi.sharedconnectivity.app.DeviceInfo getDeviceInfo(); method public int getNetworkSource(); method @NonNull public java.util.Set getSecurityTypes(); method @NonNull public String getSsid(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator CREATOR; - field public static final int NETWORK_SOURCE_CLOUD_SELF = 1; // 0x1 - field public static final int NETWORK_SOURCE_NEARBY_SELF = 0; // 0x0 + field public static final int NETWORK_SOURCE_CLOUD_SELF = 2; // 0x2 + field public static final int NETWORK_SOURCE_NEARBY_SELF = 1; // 0x1 + field public static final int NETWORK_SOURCE_UNKNOWN = 0; // 0x0 } public static final class KnownNetwork.Builder { ctor public KnownNetwork.Builder(); method @NonNull public android.net.wifi.sharedconnectivity.app.KnownNetwork.Builder addSecurityType(int); method @NonNull public android.net.wifi.sharedconnectivity.app.KnownNetwork build(); - method @NonNull public android.net.wifi.sharedconnectivity.app.KnownNetwork.Builder setDeviceInfo(@NonNull android.net.wifi.sharedconnectivity.app.DeviceInfo); + method @NonNull public android.net.wifi.sharedconnectivity.app.KnownNetwork.Builder setDeviceInfo(@Nullable android.net.wifi.sharedconnectivity.app.DeviceInfo); method @NonNull public android.net.wifi.sharedconnectivity.app.KnownNetwork.Builder setNetworkSource(int); method @NonNull public android.net.wifi.sharedconnectivity.app.KnownNetwork.Builder setSsid(@NonNull String); } diff --git a/wifi/java/src/android/net/wifi/sharedconnectivity/app/KnownNetwork.java b/wifi/java/src/android/net/wifi/sharedconnectivity/app/KnownNetwork.java index 1fb1c630304d0..fe23caae7f030 100644 --- a/wifi/java/src/android/net/wifi/sharedconnectivity/app/KnownNetwork.java +++ b/wifi/java/src/android/net/wifi/sharedconnectivity/app/KnownNetwork.java @@ -20,6 +20,7 @@ import static android.net.wifi.WifiAnnotations.SecurityType; import android.annotation.IntDef; import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; @@ -38,21 +39,28 @@ import java.util.Set; */ @SystemApi public final class KnownNetwork implements Parcelable { + + /** + * Network source is unknown. + */ + public static final int NETWORK_SOURCE_UNKNOWN = 0; + /** * Network is known by a nearby device with the same user account. */ - public static final int NETWORK_SOURCE_NEARBY_SELF = 0; + public static final int NETWORK_SOURCE_NEARBY_SELF = 1; /** * Network is known via cloud storage associated with this device's user account. */ - public static final int NETWORK_SOURCE_CLOUD_SELF = 1; + public static final int NETWORK_SOURCE_CLOUD_SELF = 2; /** * @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef({ + NETWORK_SOURCE_UNKNOWN, NETWORK_SOURCE_NEARBY_SELF, NETWORK_SOURCE_CLOUD_SELF }) @@ -110,12 +118,13 @@ public final class KnownNetwork implements Parcelable { /** * Sets the device information of the device providing connectivity. + * Must be set if network source is {@link KnownNetwork#NETWORK_SOURCE_NEARBY_SELF}. * * @param deviceInfo The device information object. * @return Returns the Builder object. */ @NonNull - public Builder setDeviceInfo(@NonNull DeviceInfo deviceInfo) { + public Builder setDeviceInfo(@Nullable DeviceInfo deviceInfo) { mDeviceInfo = deviceInfo; return this; } @@ -135,9 +144,11 @@ public final class KnownNetwork implements Parcelable { } } - private static void validate(int networkSource, String ssid, Set securityTypes) { - if (networkSource != NETWORK_SOURCE_CLOUD_SELF && networkSource - != NETWORK_SOURCE_NEARBY_SELF) { + private static void validate(int networkSource, String ssid, Set securityTypes, + DeviceInfo deviceInfo) { + if (networkSource != NETWORK_SOURCE_UNKNOWN + && networkSource != NETWORK_SOURCE_CLOUD_SELF + && networkSource != NETWORK_SOURCE_NEARBY_SELF) { throw new IllegalArgumentException("Illegal network source"); } if (TextUtils.isEmpty(ssid)) { @@ -146,14 +157,18 @@ public final class KnownNetwork implements Parcelable { if (securityTypes.isEmpty()) { throw new IllegalArgumentException("SecurityTypes must be set"); } + if (networkSource == NETWORK_SOURCE_NEARBY_SELF && deviceInfo == null) { + throw new IllegalArgumentException("Device info must be provided when network source" + + " is NETWORK_SOURCE_NEARBY_SELF"); + } } private KnownNetwork( @NetworkSource int networkSource, @NonNull String ssid, @NonNull @SecurityType ArraySet securityTypes, - @NonNull DeviceInfo deviceInfo) { - validate(networkSource, ssid, securityTypes); + @Nullable DeviceInfo deviceInfo) { + validate(networkSource, ssid, securityTypes, deviceInfo); mNetworkSource = networkSource; mSsid = ssid; mSecurityTypes = new ArraySet<>(securityTypes); @@ -194,9 +209,10 @@ public final class KnownNetwork implements Parcelable { /** * Gets the device information of the device providing connectivity. * - * @return Returns the information of the device providing the known network. + * @return Returns the information of the device providing the known network. Can be null if the + * network source is cloud or unknown. */ - @NonNull + @Nullable public DeviceInfo getDeviceInfo() { return mDeviceInfo; }