summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/system-current.txt5
-rw-r--r--core/java/android/net/RecommendationResult.java48
-rw-r--r--core/tests/coretests/src/android/net/NetworkRecommendationProviderTest.java4
-rw-r--r--services/core/java/com/android/server/NetworkScoreService.java8
-rw-r--r--services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java9
-rw-r--r--wifi/java/android/net/wifi/ScanResult.java5
6 files changed, 64 insertions, 15 deletions
diff --git a/api/system-current.txt b/api/system-current.txt
index f96a58b759a6..15939f376909 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -25761,9 +25761,11 @@ package android.net {
}
public final class RecommendationResult implements android.os.Parcelable {
- ctor public RecommendationResult(android.net.wifi.WifiConfiguration);
+ method public static android.net.RecommendationResult createDoNotConnectRecommendation();
+ method public static android.net.RecommendationResult createConnectRecommendation(android.net.wifi.WifiConfiguration);
method public int describeContents();
method public android.net.wifi.WifiConfiguration getWifiConfiguration();
+ method public boolean hasRecommendation();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.net.RecommendationResult> CREATOR;
}
@@ -26812,6 +26814,7 @@ package android.net.wifi {
field public int level;
field public java.lang.CharSequence operatorFriendlyName;
field public long timestamp;
+ field public boolean untrusted;
field public java.lang.CharSequence venueName;
}
diff --git a/core/java/android/net/RecommendationResult.java b/core/java/android/net/RecommendationResult.java
index a330d8445151..70cf09c7df5b 100644
--- a/core/java/android/net/RecommendationResult.java
+++ b/core/java/android/net/RecommendationResult.java
@@ -16,6 +16,7 @@
package android.net;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.net.wifi.WifiConfiguration;
@@ -23,6 +24,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.Preconditions;
/**
* The result of a network recommendation.
@@ -34,7 +36,32 @@ import com.android.internal.annotations.VisibleForTesting;
public final class RecommendationResult implements Parcelable {
private final WifiConfiguration mWifiConfiguration;
- public RecommendationResult(@Nullable WifiConfiguration wifiConfiguration) {
+ /**
+ * Create a {@link RecommendationResult} that indicates that no network connection should be
+ * attempted at this time.
+ *
+ * @return a {@link RecommendationResult}
+ */
+ public static RecommendationResult createDoNotConnectRecommendation() {
+ return new RecommendationResult((WifiConfiguration) null);
+ }
+
+ /**
+ * Create a {@link RecommendationResult} that indicates that a connection attempt should be
+ * made for the given Wi-Fi network.
+ *
+ * @param wifiConfiguration {@link WifiConfiguration} with at least SSID and BSSID set.
+ * @return a {@link RecommendationResult}
+ */
+ public static RecommendationResult createConnectRecommendation(
+ @NonNull WifiConfiguration wifiConfiguration) {
+ Preconditions.checkNotNull(wifiConfiguration, "wifiConfiguration must not be null");
+ Preconditions.checkNotNull(wifiConfiguration.SSID, "SSID must not be null");
+ Preconditions.checkNotNull(wifiConfiguration.BSSID, "BSSID must not be null");
+ return new RecommendationResult(wifiConfiguration);
+ }
+
+ private RecommendationResult(@Nullable WifiConfiguration wifiConfiguration) {
mWifiConfiguration = wifiConfiguration;
}
@@ -43,14 +70,29 @@ public final class RecommendationResult implements Parcelable {
}
/**
+ * @return {@code true} if a network recommendation exists. {@code false} indicates that
+ * no connection should be attempted at this time.
+ */
+ public boolean hasRecommendation() {
+ return mWifiConfiguration != null;
+ }
+
+ /**
* @return The recommended {@link WifiConfiguration} to connect to. A {@code null} value
- * indicates that no WiFi connection should be attempted at this time.
+ * is returned if {@link #hasRecommendation} returns {@code false}.
*/
- public WifiConfiguration getWifiConfiguration() {
+ @Nullable public WifiConfiguration getWifiConfiguration() {
return mWifiConfiguration;
}
@Override
+ public String toString() {
+ return "RecommendationResult{" +
+ "mWifiConfiguration=" + mWifiConfiguration +
+ "}";
+ }
+
+ @Override
public int describeContents() {
return 0;
}
diff --git a/core/tests/coretests/src/android/net/NetworkRecommendationProviderTest.java b/core/tests/coretests/src/android/net/NetworkRecommendationProviderTest.java
index 9a81401e535e..bdc0200bc6d9 100644
--- a/core/tests/coretests/src/android/net/NetworkRecommendationProviderTest.java
+++ b/core/tests/coretests/src/android/net/NetworkRecommendationProviderTest.java
@@ -77,7 +77,7 @@ public class NetworkRecommendationProviderTest extends InstrumentationTestCase {
final NetworkRecommendationProvider.ResultCallback callback =
new NetworkRecommendationProvider.ResultCallback(mMockRemoteCallback, sequence);
- final RecommendationResult result = new RecommendationResult(null);
+ final RecommendationResult result = RecommendationResult.createDoNotConnectRecommendation();
callback.onResult(result);
final ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class);
@@ -93,7 +93,7 @@ public class NetworkRecommendationProviderTest extends InstrumentationTestCase {
final NetworkRecommendationProvider.ResultCallback callback =
new NetworkRecommendationProvider.ResultCallback(mMockRemoteCallback, sequence);
- final RecommendationResult result = new RecommendationResult(null);
+ final RecommendationResult result = RecommendationResult.createDoNotConnectRecommendation();
callback.onResult(result);
try {
diff --git a/services/core/java/com/android/server/NetworkScoreService.java b/services/core/java/com/android/server/NetworkScoreService.java
index f712f121f1d7..0c2173340a50 100644
--- a/services/core/java/com/android/server/NetworkScoreService.java
+++ b/services/core/java/com/android/server/NetworkScoreService.java
@@ -478,11 +478,11 @@ public class NetworkScoreService extends INetworkScoreService.Stub {
Log.d(TAG, "Returning the default network recommendation.");
}
- WifiConfiguration selectedConfig = null;
- if (request != null) {
- selectedConfig = request.getCurrentSelectedConfig();
+ if (request != null && request.getCurrentSelectedConfig() != null) {
+ return RecommendationResult.createConnectRecommendation(
+ request.getCurrentSelectedConfig());
}
- return new RecommendationResult(selectedConfig);
+ return RecommendationResult.createDoNotConnectRecommendation();
}
@Override
diff --git a/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java
index c653b8eecffa..f8b322021b10 100644
--- a/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java
@@ -232,9 +232,10 @@ public class NetworkScoreServiceTest {
injectProvider();
when(mContext.getMainLooper()).thenReturn(Looper.getMainLooper());
final WifiConfiguration wifiConfiguration = new WifiConfiguration();
- wifiConfiguration.SSID = "testRequestRecommendation_resultReturned";
- final RecommendationResult providerResult =
- new RecommendationResult(wifiConfiguration);
+ wifiConfiguration.SSID = "testRequestRecommendation_resultReturned_SSID";
+ wifiConfiguration.BSSID = "testRequestRecommendation_resultReturned_BSSID";
+ final RecommendationResult providerResult = RecommendationResult
+ .createConnectRecommendation(wifiConfiguration);
final Bundle bundle = new Bundle();
bundle.putParcelable(EXTRA_RECOMMENDATION_RESULT, providerResult);
doAnswer(invocation -> {
@@ -250,6 +251,8 @@ public class NetworkScoreServiceTest {
assertNotNull(result);
assertEquals(providerResult.getWifiConfiguration().SSID,
result.getWifiConfiguration().SSID);
+ assertEquals(providerResult.getWifiConfiguration().BSSID,
+ result.getWifiConfiguration().BSSID);
}
@Test
diff --git a/wifi/java/android/net/wifi/ScanResult.java b/wifi/java/android/net/wifi/ScanResult.java
index da8713555889..da9aa06918c1 100644
--- a/wifi/java/android/net/wifi/ScanResult.java
+++ b/wifi/java/android/net/wifi/ScanResult.java
@@ -16,6 +16,7 @@
package android.net.wifi;
+import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -259,10 +260,10 @@ public class ScanResult implements Parcelable {
public long blackListTimestamp;
/**
- * Status: indicating the scan result is not a result
- * that is part of user's saved configurations
+ * Status indicating the scan result does not correspond to a user's saved configuration
* @hide
*/
+ @SystemApi
public boolean untrusted;
/**