From 198fa8adbf48c5a7221ee1631c756e254e124e45 Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Mon, 11 Mar 2019 14:06:39 -0700 Subject: [PATCH 1/5] WifiNetworkSpecifier/Suggestion: Address API council comments Modified builder methods to: a) Add boolean input for all boolean setters. b) Add a public value for unassigned priority and added IntRange annotation. Bug: 128317241 Bug: 128317186 Test: Compiles Test: ./frameworks/base/wifi/tests/runtest.sh Change-Id: Iaf9d26ed857fe9337d3e4006c9c894efbcfa32dd --- api/current.txt | 16 ++++----- .../net/wifi/WifiNetworkSpecifier.java | 12 ++++--- .../net/wifi/WifiNetworkSuggestion.java | 33 ++++++++++++------- .../net/wifi/WifiNetworkSpecifierTest.java | 10 +++--- .../net/wifi/WifiNetworkSuggestionTest.java | 16 ++++----- 5 files changed, 51 insertions(+), 36 deletions(-) diff --git a/api/current.txt b/api/current.txt index f2dc7a925f98a..24e8be2acc901 100644 --- a/api/current.txt +++ b/api/current.txt @@ -30141,8 +30141,8 @@ package android.net.wifi { method @NonNull public android.net.wifi.WifiNetworkSpecifier build(); method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setBssid(@NonNull android.net.MacAddress); method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setBssidPattern(@NonNull android.net.MacAddress, @NonNull android.net.MacAddress); - method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setIsEnhancedOpen(); - method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setIsHiddenSsid(); + method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setIsEnhancedOpen(boolean); + method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setIsHiddenSsid(boolean); method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setSsid(@NonNull String); method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setSsidPattern(@NonNull android.os.PatternMatcher); method @NonNull public android.net.wifi.WifiNetworkSpecifier.Builder setWpa2EnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig); @@ -30161,12 +30161,12 @@ package android.net.wifi { ctor public WifiNetworkSuggestion.Builder(); method @NonNull public android.net.wifi.WifiNetworkSuggestion build(); method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setBssid(@NonNull android.net.MacAddress); - method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsAppInteractionRequired(); - method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsEnhancedOpen(); - method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsHiddenSsid(); - method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsMetered(); - method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsUserInteractionRequired(); - method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setPriority(int); + method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsAppInteractionRequired(boolean); + method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsEnhancedOpen(boolean); + method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsHiddenSsid(boolean); + method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsMetered(boolean); + method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsUserInteractionRequired(boolean); + method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setPriority(@IntRange(from=0) int); method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setSsid(@NonNull String); method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWpa2EnterpriseConfig(@NonNull android.net.wifi.WifiEnterpriseConfig); method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setWpa2Passphrase(@NonNull String); diff --git a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java index 8b56b3f24593e..6c2d7ff882d39 100644 --- a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java +++ b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java @@ -183,10 +183,12 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc /** * Specifies whether this represents an Enhanced Open (OWE) network. * + * @param isEnhancedOpen {@code true} to indicate that the network uses enhanced open, + * {@code false} otherwise. * @return Instance of {@link Builder} to enable chaining of the builder method. */ - public @NonNull Builder setIsEnhancedOpen() { - mIsEnhancedOpen = true; + public @NonNull Builder setIsEnhancedOpen(boolean isEnhancedOpen) { + mIsEnhancedOpen = isEnhancedOpen; return this; } @@ -261,10 +263,12 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc * hidden networks need to be explicitly probed for. *
  • If not set, defaults to false (i.e not a hidden network).
  • * + * @param isHiddenSsid {@code true} to indicate that the network is hidden, {@code false} + * otherwise. * @return Instance of {@link Builder} to enable chaining of the builder method. */ - public @NonNull Builder setIsHiddenSsid() { - mIsHiddenSSID = true; + public @NonNull Builder setIsHiddenSsid(boolean isHiddenSsid) { + mIsHiddenSSID = isHiddenSsid; return this; } diff --git a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java index 3742b83d58368..32a7a477466de 100644 --- a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java +++ b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java @@ -18,6 +18,7 @@ package android.net.wifi; import static com.android.internal.util.Preconditions.checkNotNull; +import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityThread; @@ -159,10 +160,12 @@ public final class WifiNetworkSuggestion implements Parcelable { /** * Specifies whether this represents an Enhanced Open (OWE) network. * + * @param isEnhancedOpen {@code true} to indicate that the network used enhanced open, + * {@code false} otherwise. * @return Instance of {@link Builder} to enable chaining of the builder method. */ - public @NonNull Builder setIsEnhancedOpen() { - mIsEnhancedOpen = true; + public @NonNull Builder setIsEnhancedOpen(boolean isEnhancedOpen) { + mIsEnhancedOpen = isEnhancedOpen; return this; } @@ -235,10 +238,12 @@ public final class WifiNetworkSuggestion implements Parcelable { *

    *

  • If not set, defaults to false (i.e not a hidden network).
  • * + * @param isHiddenSsid {@code true} to indicate that the network is hidden, {@code false} + * otherwise. * @return Instance of {@link Builder} to enable chaining of the builder method. */ - public @NonNull Builder setIsHiddenSsid() { - mIsHiddenSSID = true; + public @NonNull Builder setIsHiddenSsid(boolean isHiddenSsid) { + mIsHiddenSSID = isHiddenSsid; return this; } @@ -253,10 +258,12 @@ public final class WifiNetworkSuggestion implements Parcelable { *

    *

  • If not set, defaults to false (i.e no app interaction required).
  • * + * @param isAppInteractionRequired {@code true} to indicate that app interaction is + * required, {@code false} otherwise. * @return Instance of {@link Builder} to enable chaining of the builder method. */ - public @NonNull Builder setIsAppInteractionRequired() { - mIsAppInteractionRequired = true; + public @NonNull Builder setIsAppInteractionRequired(boolean isAppInteractionRequired) { + mIsAppInteractionRequired = isAppInteractionRequired; return this; } @@ -265,10 +272,12 @@ public final class WifiNetworkSuggestion implements Parcelable { *

    *

  • If not set, defaults to false (i.e no user interaction required).
  • * + * @param isUserInteractionRequired {@code true} to indicate that user interaction is + * required, {@code false} otherwise. * @return Instance of {@link Builder} to enable chaining of the builder method. */ - public @NonNull Builder setIsUserInteractionRequired() { - mIsUserInteractionRequired = true; + public @NonNull Builder setIsUserInteractionRequired(boolean isUserInteractionRequired) { + mIsUserInteractionRequired = isUserInteractionRequired; return this; } @@ -283,7 +292,7 @@ public final class WifiNetworkSuggestion implements Parcelable { * @return Instance of {@link Builder} to enable chaining of the builder method. * @throws IllegalArgumentException if the priority value is negative. */ - public @NonNull Builder setPriority(int priority) { + public @NonNull Builder setPriority(@IntRange(from = 0) int priority) { if (priority < 0) { throw new IllegalArgumentException("Invalid priority value " + priority); } @@ -296,10 +305,12 @@ public final class WifiNetworkSuggestion implements Parcelable { *

    *

  • If not set, defaults to false (i.e not metered).
  • * + * @param isMetered {@code true} to indicate that the network is metered, {@code false} + * otherwise. * @return Instance of {@link Builder} to enable chaining of the builder method. */ - public @NonNull Builder setIsMetered() { - mIsMetered = true; + public @NonNull Builder setIsMetered(boolean isMetered) { + mIsMetered = isMetered; return this; } diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java index feac0e598127d..edb43d8bdf526 100644 --- a/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java +++ b/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java @@ -114,7 +114,7 @@ public class WifiNetworkSpecifierTest { .setSsid(TEST_SSID) .setBssid(MacAddress.fromString(TEST_BSSID)) .setWpa2EnterpriseConfig(enterpriseConfig) - .setIsHiddenSsid() + .setIsHiddenSsid(true) .build(); assertTrue(specifier instanceof WifiNetworkSpecifier); @@ -278,7 +278,7 @@ public class WifiNetworkSpecifierTest { new WifiNetworkSpecifier.Builder() .setBssidPattern(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS), MacAddress.fromString(TEST_BSSID_OUI_MASK)) - .setIsHiddenSsid() + .setIsHiddenSsid(true) .build(); } @@ -305,7 +305,7 @@ public class WifiNetworkSpecifierTest { public void testWifiNetworkSpecifierBuilderWithSsidMatchPatternForHiddenNetwork() { new WifiNetworkSpecifier.Builder() .setSsidPattern(new PatternMatcher(TEST_SSID, PATTERN_PREFIX)) - .setIsHiddenSsid() + .setIsHiddenSsid(true) .build(); } @@ -341,14 +341,14 @@ public class WifiNetworkSpecifierTest { /** * Ensure {@link WifiNetworkSpecifier.Builder#build()} throws an exception * when both {@link WifiNetworkSpecifier.Builder#setWpa3Passphrase(String)} and - * {@link WifiNetworkSpecifier.Builder#setIsEnhancedOpen()} are invoked. + * {@link WifiNetworkSpecifier.Builder#setIsEnhancedOpen(boolean)} are invoked. */ @Test(expected = IllegalStateException.class) public void testWifiNetworkSpecifierBuilderWithBothWpa3PasphraseAndEnhancedOpen() { new WifiNetworkSpecifier.Builder() .setSsidPattern(new PatternMatcher(TEST_SSID, PATTERN_LITERAL)) .setWpa3Passphrase(TEST_PRESHARED_KEY) - .setIsEnhancedOpen() + .setIsEnhancedOpen(true) .build(); } diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java index 05ee22c904643..2b0c7732e7ae7 100644 --- a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java +++ b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java @@ -49,7 +49,7 @@ public class WifiNetworkSuggestionTest { public void testWifiNetworkSuggestionBuilderForOpenNetworkWithReqAppInteraction() { WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion.Builder() .setSsid(TEST_SSID) - .setIsAppInteractionRequired() + .setIsAppInteractionRequired(true) .build(); assertEquals(Process.myUid(), suggestion.suggestorUid); @@ -74,7 +74,7 @@ public class WifiNetworkSuggestionTest { WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion.Builder() .setSsid(TEST_SSID) .setWpa2Passphrase(TEST_PRESHARED_KEY) - .setIsAppInteractionRequired() + .setIsAppInteractionRequired(true) .setPriority(0) .build(); @@ -101,8 +101,8 @@ public class WifiNetworkSuggestionTest { WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion.Builder() .setSsid(TEST_SSID) .setWpa2Passphrase(TEST_PRESHARED_KEY) - .setIsUserInteractionRequired() - .setIsMetered() + .setIsUserInteractionRequired(true) + .setIsMetered(true) .build(); assertEquals("\"" + TEST_SSID + "\"", suggestion.wifiConfiguration.SSID); @@ -126,7 +126,7 @@ public class WifiNetworkSuggestionTest { WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion.Builder() .setSsid(TEST_SSID) .setBssid(MacAddress.fromString(TEST_BSSID)) - .setIsEnhancedOpen() + .setIsEnhancedOpen(true) .build(); assertEquals("\"" + TEST_SSID + "\"", suggestion.wifiConfiguration.SSID); @@ -265,7 +265,7 @@ public class WifiNetworkSuggestionTest { public void testWifiNetworkSuggestionBuilderWithInvalidPriority() { new WifiNetworkSuggestion.Builder() .setSsid(TEST_SSID) - .setPriority(-1) + .setPriority(-2) .build(); } @@ -301,14 +301,14 @@ public class WifiNetworkSuggestionTest { /** * Ensure {@link WifiNetworkSuggestion.Builder#build()} throws an exception * when both {@link WifiNetworkSuggestion.Builder#setWpa3Passphrase(String)} and - * {@link WifiNetworkSuggestion.Builder#setIsEnhancedOpen()} are invoked. + * {@link WifiNetworkSuggestion.Builder#setIsEnhancedOpen(boolean)} are invoked. */ @Test(expected = IllegalStateException.class) public void testWifiNetworkSuggestionBuilderWithBothWpa3PasphraseAndEnhancedOpen() { new WifiNetworkSuggestion.Builder() .setSsid(TEST_SSID) .setWpa3Passphrase(TEST_PRESHARED_KEY) - .setIsEnhancedOpen() + .setIsEnhancedOpen(true) .build(); } From 35a659febdbbe61495186e2ad31cd46eb25ee5f0 Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Wed, 13 Mar 2019 14:46:10 -0700 Subject: [PATCH 2/5] WifiManager: Fix javadocs Bug: 128536865 Test: make docs Change-Id: I263b66e989b2d2240e25cac31c00fc3b8a3f5a3d --- wifi/java/android/net/wifi/WifiManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 52e03ce5e197c..d38b2f49048b6 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -948,7 +948,8 @@ public class WifiManager { /** * Directed broadcast intent action indicating that the device has connected to one of the * network suggestions provided by the app. This will be sent post connection to a network - * which was created with {@link WifiNetworkSuggestion.Builder#setIsAppInteractionRequired()} + * which was created with {@link WifiNetworkSuggestion.Builder#setIsAppInteractionRequired( + * boolean)} * flag set. *

    * Note: The broadcast is sent to the app only if it holds From 506a9b951731efbf3093974cade619da31430a81 Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Thu, 7 Mar 2019 10:15:36 -0800 Subject: [PATCH 3/5] WifiConfiguration: Add a new temp blacklist reason for disconnect Also, added a constant to indicate the start of the permanent blacklist reasons. Bug: 126503889 Test: Compiles Change-Id: I4ba1dc5377bffe34a9f236c0698c36cbf34969a9 --- .../android/net/wifi/WifiConfiguration.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index 379819d417a19..476330052dcfd 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -1171,39 +1171,49 @@ public class WifiConfiguration implements Parcelable { * This network is disabled because EAP-TLS failure */ public static final int DISABLED_TLS_VERSION_MISMATCH = 8; + /** + * This network is disabled due to WifiManager.disconnect() call. + */ + public static final int DISABLED_BY_WIFI_MANAGER_DISCONNECT = 9; + // Values above are for temporary disablement; values below are for permanent disablement. + /** + * The starting index for permanent network selection disabled reasons + */ + public static final int NETWORK_SELECTION_DISABLED_PERMANENT_STARTING_INDEX = 10; /** * This network is disabled due to absence of user credentials */ - public static final int DISABLED_AUTHENTICATION_NO_CREDENTIALS = 9; + public static final int DISABLED_AUTHENTICATION_NO_CREDENTIALS = 10; /** * This network is permanently disabled because it has no Internet access and user does not * want to stay connected. */ - public static final int DISABLED_NO_INTERNET_PERMANENT = 10; + public static final int DISABLED_NO_INTERNET_PERMANENT = 11; /** - * This network is disabled due to WifiManager disable it explicitly + * This network is disabled due to WifiManager.disable() call. */ - public static final int DISABLED_BY_WIFI_MANAGER = 11; + public static final int DISABLED_BY_WIFI_MANAGER = 12; /** * This network is disabled due to user switching */ - public static final int DISABLED_DUE_TO_USER_SWITCH = 12; + public static final int DISABLED_DUE_TO_USER_SWITCH = 13; /** * This network is disabled due to wrong password */ - public static final int DISABLED_BY_WRONG_PASSWORD = 13; + public static final int DISABLED_BY_WRONG_PASSWORD = 14; /** * This network is disabled because service is not subscribed */ - public static final int DISABLED_AUTHENTICATION_NO_SUBSCRIPTION = 14; + public static final int DISABLED_AUTHENTICATION_NO_SUBSCRIPTION = 15; /** * This Maximum disable reason value */ - public static final int NETWORK_SELECTION_DISABLED_MAX = 15; + public static final int NETWORK_SELECTION_DISABLED_MAX = 16; /** - * Quality network selection disable reason String (for debug purpose) + * Quality network selection disable reason String (for debug purposes & configuration + * storage) */ public static final String[] QUALITY_NETWORK_SELECTION_DISABLE_REASON = { "NETWORK_SELECTION_ENABLE", @@ -1215,6 +1225,7 @@ public class WifiConfiguration implements Parcelable { "NETWORK_SELECTION_DISABLED_NO_INTERNET_TEMPORARY", "NETWORK_SELECTION_DISABLED_WPS_START", "NETWORK_SELECTION_DISABLED_TLS_VERSION", + "NETWORK_SELECTION_DISABLED_BY_WIFI_MANAGER_DISCONNECT", "NETWORK_SELECTION_DISABLED_AUTHENTICATION_NO_CREDENTIALS", "NETWORK_SELECTION_DISABLED_NO_INTERNET_PERMANENT", "NETWORK_SELECTION_DISABLED_BY_WIFI_MANAGER", From bf5fd47085a3fa1a73a006588045b2f9144e94d6 Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Wed, 13 Mar 2019 14:05:22 -0700 Subject: [PATCH 4/5] strings.xml: Modify suggestion notification strings Bug: 120072329 Test: Manually verified the notification with CTS Verifier. Change-Id: Ia4fea5db6affe70005685805a783d6e50ce8db59 --- core/res/res/values/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index bc6675645d676..54d7a6335df66 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -3374,9 +3374,9 @@ All networks - A Wi\u2011Fi network proposed by %s is available + Connect to Wi\u2011Fi networks? - Do you want to connect to networks proposed by %s? + Suggested by %s Yes From fdb80fc14e0a586a4edc6ca16fa47812b1257439 Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Thu, 14 Mar 2019 09:11:08 -0700 Subject: [PATCH 5/5] wifi: Fix runtest.sh Bug: 128603658 Test: ./frameworks/base/wifi/tests/runtests.sh Change-Id: Ica4754d2ed4154a1292ff4f0b65ac34cb281bee1 --- wifi/tests/runtests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wifi/tests/runtests.sh b/wifi/tests/runtests.sh index 2caf8a59b9fb9..1e0ec37c52e23 100755 --- a/wifi/tests/runtests.sh +++ b/wifi/tests/runtests.sh @@ -19,7 +19,7 @@ set -x # print commands adb root adb wait-for-device -adb install -r -g "$OUT/data/app/FrameworksWifiApiTests/FrameworksWifiApiTests.apk" +adb install -r -g "$OUT/testcases/FrameworksWifiApiTests/arm64/FrameworksWifiApiTests.apk" adb shell am instrument --no-hidden-api-checks -w "$@" \ 'android.net.wifi.test/androidx.test.runner.AndroidJUnitRunner'