diff options
| -rw-r--r-- | api/system-current.txt | 3 | ||||
| -rw-r--r-- | core/java/android/net/RecommendationRequest.java | 63 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/net/RecommendationRequestTest.java | 18 |
3 files changed, 67 insertions, 17 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 9bc72dbf1570..f08cf229ec62 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -26377,6 +26377,8 @@ package android.net { method public android.net.wifi.WifiConfiguration[] getConnectableConfigs(); method public android.net.wifi.WifiConfiguration getConnectedConfig(); method public android.net.wifi.WifiConfiguration getDefaultWifiConfig(); + method public int getLastSelectedNetworkId(); + method public long getLastSelectedNetworkTimestamp(); method public android.net.wifi.ScanResult[] getScanResults(); method public void setConnectableConfigs(android.net.wifi.WifiConfiguration[]); method public void setConnectedConfig(android.net.wifi.WifiConfiguration); @@ -26390,6 +26392,7 @@ package android.net { method public android.net.RecommendationRequest.Builder setConnectableConfigs(android.net.wifi.WifiConfiguration[]); method public android.net.RecommendationRequest.Builder setConnectedWifiConfig(android.net.wifi.WifiConfiguration); method public android.net.RecommendationRequest.Builder setDefaultWifiConfig(android.net.wifi.WifiConfiguration); + method public android.net.RecommendationRequest.Builder setLastSelectedNetwork(int, long); method public android.net.RecommendationRequest.Builder setScanResults(android.net.wifi.ScanResult[]); } diff --git a/core/java/android/net/RecommendationRequest.java b/core/java/android/net/RecommendationRequest.java index a227f18fe2bf..b89a245623ee 100644 --- a/core/java/android/net/RecommendationRequest.java +++ b/core/java/android/net/RecommendationRequest.java @@ -37,6 +37,8 @@ public final class RecommendationRequest implements Parcelable { private final WifiConfiguration mDefaultConfig; private WifiConfiguration mConnectedConfig; private WifiConfiguration[] mConnectableConfigs; + private final int mLastSelectedNetworkId; + private final long mLastSelectedNetworkTimestamp; /** * Builder class for constructing {@link RecommendationRequest} instances. @@ -48,17 +50,9 @@ public final class RecommendationRequest implements Parcelable { private WifiConfiguration mDefaultConfig; private WifiConfiguration mConnectedConfig; private WifiConfiguration[] mConnectableConfigs; + private int mLastSelectedNetworkId; + private long mLastSelectedTimestamp; - /** - * @param scanResults the array of {@link ScanResult}s the recommendation must be - * constrained to i.e. if a non-null wifi config recommendation is - * returned then it must be able to connect to one of the networks in - * the results list. - * - * If the array is {@code null} or empty then there is no constraint. - * - * @return this - */ public Builder setScanResults(ScanResult[] scanResults) { mScanResults = scanResults; return this; @@ -89,7 +83,20 @@ public final class RecommendationRequest implements Parcelable { * @return this */ public Builder setConnectableConfigs(WifiConfiguration[] connectableConfigs) { - mConnectableConfigs = connectableConfigs; + this.mConnectableConfigs = connectableConfigs; + return this; + } + + /** + * @param networkId The {@link WifiConfiguration#networkId} of the last user selected + * network. + * @param timestamp The {@link android.os.SystemClock#elapsedRealtime()} when the user + * selected {@code networkId}. + * @return this + */ + public Builder setLastSelectedNetwork(int networkId, long timestamp) { + this.mLastSelectedNetworkId = networkId; + this.mLastSelectedTimestamp = timestamp; return this; } @@ -97,10 +104,8 @@ public final class RecommendationRequest implements Parcelable { * @return a new {@link RecommendationRequest} instance */ public RecommendationRequest build() { - return new RecommendationRequest(mScanResults, - mDefaultConfig, - mConnectedConfig, - mConnectableConfigs); + return new RecommendationRequest(mScanResults, mDefaultConfig, mConnectedConfig, + mConnectableConfigs, mLastSelectedNetworkId, mLastSelectedTimestamp); } } @@ -154,15 +159,35 @@ public final class RecommendationRequest implements Parcelable { mConnectableConfigs = connectableConfigs; } + /** + * @return The {@link WifiConfiguration#networkId} of the last user selected network. + * {@code 0} if not set. + */ + public int getLastSelectedNetworkId() { + return mLastSelectedNetworkId; + } + + /** + * @return The {@link android.os.SystemClock#elapsedRealtime()} when the user selected + * {@link #getLastSelectedNetworkId()}. {@code 0} if not set. + */ + public long getLastSelectedNetworkTimestamp() { + return mLastSelectedNetworkTimestamp; + } + @VisibleForTesting RecommendationRequest(ScanResult[] scanResults, WifiConfiguration defaultWifiConfig, WifiConfiguration connectedWifiConfig, - WifiConfiguration[] connectableConfigs) { + WifiConfiguration[] connectableConfigs, + int lastSelectedNetworkId, + long lastSelectedNetworkTimestamp) { mScanResults = scanResults; mDefaultConfig = defaultWifiConfig; mConnectedConfig = connectedWifiConfig; mConnectableConfigs = connectableConfigs; + mLastSelectedNetworkId = lastSelectedNetworkId; + mLastSelectedNetworkTimestamp = lastSelectedNetworkTimestamp; } protected RecommendationRequest(Parcel in) { @@ -190,6 +215,9 @@ public final class RecommendationRequest implements Parcelable { } else { mConnectableConfigs = null; } + + mLastSelectedNetworkId = in.readInt(); + mLastSelectedNetworkTimestamp = in.readLong(); } @Override @@ -220,7 +248,8 @@ public final class RecommendationRequest implements Parcelable { dest.writeInt(0); } - + dest.writeInt(mLastSelectedNetworkId); + dest.writeLong(mLastSelectedNetworkTimestamp); } public static final Creator<RecommendationRequest> CREATOR = diff --git a/core/tests/coretests/src/android/net/RecommendationRequestTest.java b/core/tests/coretests/src/android/net/RecommendationRequestTest.java index 39c1691b09a7..bd2550073dd3 100644 --- a/core/tests/coretests/src/android/net/RecommendationRequestTest.java +++ b/core/tests/coretests/src/android/net/RecommendationRequestTest.java @@ -3,6 +3,7 @@ package android.net; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.os.Parcel; +import android.os.SystemClock; import android.test.AndroidTestCase; public class RecommendationRequestTest extends AndroidTestCase { @@ -10,6 +11,8 @@ public class RecommendationRequestTest extends AndroidTestCase { private WifiConfiguration mDefaultConfig; private WifiConfiguration mConnectedConfig; private WifiConfiguration[] mConnectableConfigs; + private int mLastSelectedNetworkId; + private long mLastSelectedNetworkTimestamp; @Override public void setUp() throws Exception { @@ -35,6 +38,8 @@ public class RecommendationRequestTest extends AndroidTestCase { mConnectedConfig = new WifiConfiguration(); mConnectedConfig.SSID = "connected_config"; mConnectableConfigs = new WifiConfiguration[] {mDefaultConfig, mConnectedConfig}; + mLastSelectedNetworkId = 5; + mLastSelectedNetworkTimestamp = SystemClock.elapsedRealtime(); } public void testParceling() throws Exception { @@ -43,6 +48,7 @@ public class RecommendationRequestTest extends AndroidTestCase { .setScanResults(mScanResults) .setConnectedWifiConfig(mConnectedConfig) .setConnectableConfigs(mConnectableConfigs) + .setLastSelectedNetwork(mLastSelectedNetworkId, mLastSelectedNetworkTimestamp) .build(); RecommendationRequest parceled = passThroughParcel(request); @@ -60,6 +66,8 @@ public class RecommendationRequestTest extends AndroidTestCase { for (int i = 0; i < parceledConfigs.length; i++) { assertEquals(mConnectableConfigs[i].SSID, parceledConfigs[i].SSID); } + assertEquals(mLastSelectedNetworkId, parceled.getLastSelectedNetworkId()); + assertEquals(mLastSelectedNetworkTimestamp, parceled.getLastSelectedNetworkTimestamp()); } public void testParceling_nullScanResults() throws Exception { @@ -82,6 +90,16 @@ public class RecommendationRequestTest extends AndroidTestCase { assertNull(parceledConfigs); } + public void testParceling_unsetLastSelectedNetwork() throws Exception { + RecommendationRequest request = new RecommendationRequest.Builder() + .build(); + + RecommendationRequest parceled = passThroughParcel(request); + + assertEquals(0, parceled.getLastSelectedNetworkId()); + assertEquals(0, parceled.getLastSelectedNetworkTimestamp()); + } + private RecommendationRequest passThroughParcel(RecommendationRequest request) { Parcel p = Parcel.obtain(); RecommendationRequest output = null; |