Loading api/system-current.txt +8 −4 Original line number Original line Diff line number Diff line Loading @@ -25759,9 +25759,12 @@ package android.net { public final class RecommendationRequest implements android.os.Parcelable { public final class RecommendationRequest implements android.os.Parcelable { ctor protected RecommendationRequest(android.os.Parcel); ctor protected RecommendationRequest(android.os.Parcel); method public int describeContents(); method public int describeContents(); method public android.net.wifi.WifiConfiguration getCurrentSelectedConfig(); method public android.net.wifi.WifiConfiguration[] getConnectableConfigs(); method public android.net.NetworkCapabilities getRequiredCapabilities(); method public android.net.wifi.WifiConfiguration getConnectedConfig(); method public android.net.wifi.WifiConfiguration getDefaultWifiConfig(); method public android.net.wifi.ScanResult[] getScanResults(); method public android.net.wifi.ScanResult[] getScanResults(); method public void setConnectableConfigs(android.net.wifi.WifiConfiguration[]); method public void setConnectedConfig(android.net.wifi.WifiConfiguration); method public void writeToParcel(android.os.Parcel, int); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.net.RecommendationRequest> CREATOR; field public static final android.os.Parcelable.Creator<android.net.RecommendationRequest> CREATOR; } } Loading @@ -25769,8 +25772,9 @@ package android.net { public static final class RecommendationRequest.Builder { public static final class RecommendationRequest.Builder { ctor public RecommendationRequest.Builder(); ctor public RecommendationRequest.Builder(); method public android.net.RecommendationRequest build(); method public android.net.RecommendationRequest build(); method public android.net.RecommendationRequest.Builder setCurrentRecommendedWifiConfig(android.net.wifi.WifiConfiguration); method public android.net.RecommendationRequest.Builder setConnectableConfigs(android.net.wifi.WifiConfiguration[]); method public android.net.RecommendationRequest.Builder setNetworkCapabilities(android.net.NetworkCapabilities); 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 setScanResults(android.net.wifi.ScanResult[]); method public android.net.RecommendationRequest.Builder setScanResults(android.net.wifi.ScanResult[]); } } core/java/android/net/RecommendationRequest.java +113 −29 Original line number Original line Diff line number Diff line Loading @@ -34,8 +34,9 @@ import com.android.internal.annotations.VisibleForTesting; @SystemApi @SystemApi public final class RecommendationRequest implements Parcelable { public final class RecommendationRequest implements Parcelable { private final ScanResult[] mScanResults; private final ScanResult[] mScanResults; private final WifiConfiguration mCurrentSelectedConfig; private final WifiConfiguration mDefaultConfig; private final NetworkCapabilities mRequiredCapabilities; private WifiConfiguration mConnectedConfig; private WifiConfiguration[] mConnectableConfigs; /** /** * Builder class for constructing {@link RecommendationRequest} instances. * Builder class for constructing {@link RecommendationRequest} instances. Loading @@ -44,26 +45,62 @@ public final class RecommendationRequest implements Parcelable { @SystemApi @SystemApi public static final class Builder { public static final class Builder { private ScanResult[] mScanResults; private ScanResult[] mScanResults; private WifiConfiguration mCurrentConfig; private WifiConfiguration mDefaultConfig; private NetworkCapabilities mNetworkCapabilities; private WifiConfiguration mConnectedConfig; private WifiConfiguration[] mConnectableConfigs; /** * @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) { public Builder setScanResults(ScanResult[] scanResults) { mScanResults = scanResults; mScanResults = scanResults; return this; return this; } } public Builder setCurrentRecommendedWifiConfig(WifiConfiguration config) { /** this.mCurrentConfig = config; * @param config the {@link WifiConfiguration} to return if no recommendation is available. * @return this */ public Builder setDefaultWifiConfig(WifiConfiguration config) { this.mDefaultConfig = config; return this; return this; } } public Builder setNetworkCapabilities(NetworkCapabilities capabilities) { /** mNetworkCapabilities = capabilities; * @param config the {@link WifiConfiguration} of the connected network at the time the * this request was made. * @return this */ public Builder setConnectedWifiConfig(WifiConfiguration config) { this.mConnectedConfig = config; return this; return this; } } /** * @param connectableConfigs the set of saved {@link WifiConfiguration}s that can be * connected to based on the current set of {@link ScanResult}s. * @return this */ public Builder setConnectableConfigs(WifiConfiguration[] connectableConfigs) { mConnectableConfigs = connectableConfigs; return this; } /** * @return a new {@link RecommendationRequest} instance */ public RecommendationRequest build() { public RecommendationRequest build() { return new RecommendationRequest(mScanResults, mCurrentConfig, mNetworkCapabilities); return new RecommendationRequest(mScanResults, mDefaultConfig, mConnectedConfig, mConnectableConfigs); } } } } Loading @@ -79,45 +116,80 @@ public final class RecommendationRequest implements Parcelable { } } /** /** * @return The best recommendation at the time this {@code RecommendationRequest} instance * @return the {@link WifiConfiguration} to return if no recommendation is available. * was created. This may be null which indicates that no recommendation is available. */ */ public WifiConfiguration getCurrentSelectedConfig() { public WifiConfiguration getDefaultWifiConfig() { return mCurrentSelectedConfig; return mDefaultConfig; } } /** /** * * @return the {@link WifiConfiguration} of the connected network at the time the this request * @return The set of {@link NetworkCapabilities} the recommendation must be constrained to. * was made. * This may be {@code null} which indicates that there are no constraints on the */ * capabilities of the recommended network. public WifiConfiguration getConnectedConfig() { return mConnectedConfig; } /** * @return the set of saved {@link WifiConfiguration}s that can be connected to based on the * current set of {@link ScanResult}s. */ */ public NetworkCapabilities getRequiredCapabilities() { public WifiConfiguration[] getConnectableConfigs() { return mRequiredCapabilities; return mConnectableConfigs; } /** * @param connectedConfig the {@link WifiConfiguration} of the connected network at the time * the this request was made. */ public void setConnectedConfig(WifiConfiguration connectedConfig) { mConnectedConfig = connectedConfig; } /** * @param connectableConfigs the set of saved {@link WifiConfiguration}s that can be connected * to based on the current set of {@link ScanResult}s. */ public void setConnectableConfigs(WifiConfiguration[] connectableConfigs) { mConnectableConfigs = connectableConfigs; } } @VisibleForTesting @VisibleForTesting RecommendationRequest(ScanResult[] scanResults, RecommendationRequest(ScanResult[] scanResults, WifiConfiguration currentSelectedConfig, WifiConfiguration defaultWifiConfig, NetworkCapabilities requiredCapabilities) { WifiConfiguration connectedWifiConfig, WifiConfiguration[] connectableConfigs) { mScanResults = scanResults; mScanResults = scanResults; mCurrentSelectedConfig = currentSelectedConfig; mDefaultConfig = defaultWifiConfig; mRequiredCapabilities = requiredCapabilities; mConnectedConfig = connectedWifiConfig; mConnectableConfigs = connectableConfigs; } } protected RecommendationRequest(Parcel in) { protected RecommendationRequest(Parcel in) { final int resultCount = in.readInt(); final int resultCount = in.readInt(); if (resultCount > 0) { if (resultCount > 0) { mScanResults = new ScanResult[resultCount]; mScanResults = new ScanResult[resultCount]; final ClassLoader classLoader = ScanResult.class.getClassLoader(); for (int i = 0; i < resultCount; i++) { for (int i = 0; i < resultCount; i++) { mScanResults[i] = in.readParcelable(ScanResult.class.getClassLoader()); mScanResults[i] = in.readParcelable(classLoader); } } } else { } else { mScanResults = null; mScanResults = null; } } mCurrentSelectedConfig = in.readParcelable(WifiConfiguration.class.getClassLoader()); mDefaultConfig = in.readParcelable(WifiConfiguration.class.getClassLoader()); mRequiredCapabilities = in.readParcelable(NetworkCapabilities.class.getClassLoader()); mConnectedConfig = in.readParcelable(WifiConfiguration.class.getClassLoader()); final int configCount = in.readInt(); if (configCount > 0) { mConnectableConfigs = new WifiConfiguration[configCount]; final ClassLoader classLoader = WifiConfiguration.class.getClassLoader(); for (int i = 0; i < configCount; i++) { mConnectableConfigs[i] = in.readParcelable(classLoader); } } else { mConnectableConfigs = null; } } } @Override @Override Loading @@ -135,8 +207,20 @@ public final class RecommendationRequest implements Parcelable { } else { } else { dest.writeInt(0); dest.writeInt(0); } } dest.writeParcelable(mCurrentSelectedConfig, flags); dest.writeParcelable(mRequiredCapabilities, flags); dest.writeParcelable(mDefaultConfig, flags); dest.writeParcelable(mConnectedConfig, flags); if (mConnectableConfigs != null) { dest.writeInt(mConnectableConfigs.length); for (int i = 0; i < mConnectableConfigs.length; i++) { dest.writeParcelable(mConnectableConfigs[i], flags); } } else { dest.writeInt(0); } } } public static final Creator<RecommendationRequest> CREATOR = public static final Creator<RecommendationRequest> CREATOR = Loading core/tests/coretests/src/android/net/RecommendationRequestTest.java +30 −16 Original line number Original line Diff line number Diff line Loading @@ -7,8 +7,9 @@ import android.test.AndroidTestCase; public class RecommendationRequestTest extends AndroidTestCase { public class RecommendationRequestTest extends AndroidTestCase { private ScanResult[] mScanResults; private ScanResult[] mScanResults; private WifiConfiguration mConfiguration; private WifiConfiguration mDefaultConfig; private NetworkCapabilities mCapabilities; private WifiConfiguration mConnectedConfig; private WifiConfiguration[] mConnectableConfigs; @Override @Override public void setUp() throws Exception { public void setUp() throws Exception { Loading @@ -29,45 +30,58 @@ public class RecommendationRequestTest extends AndroidTestCase { 8 /*centerFreq0*/, 8 /*centerFreq0*/, 9 /*centerFreq1*/, 9 /*centerFreq1*/, false /*is80211McRTTResponder*/); false /*is80211McRTTResponder*/); mConfiguration = new WifiConfiguration(); mDefaultConfig = new WifiConfiguration(); mConfiguration.SSID = "RecommendationRequestTest"; mDefaultConfig.SSID = "default_config"; mCapabilities = new NetworkCapabilities() mConnectedConfig = new WifiConfiguration(); .removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED); mConnectedConfig.SSID = "connected_config"; mConnectableConfigs = new WifiConfiguration[] {mDefaultConfig, mConnectedConfig}; } } public void testParceling() throws Exception { public void testParceling() throws Exception { RecommendationRequest request = new RecommendationRequest.Builder() RecommendationRequest request = new RecommendationRequest.Builder() .setCurrentRecommendedWifiConfig(mConfiguration) .setDefaultWifiConfig(mDefaultConfig) .setScanResults(mScanResults) .setScanResults(mScanResults) .setNetworkCapabilities(mCapabilities) .setConnectedWifiConfig(mConnectedConfig) .setConnectableConfigs(mConnectableConfigs) .build(); .build(); RecommendationRequest parceled = passThroughParcel(request); RecommendationRequest parceled = passThroughParcel(request); assertEquals(request.getCurrentSelectedConfig().SSID, assertEquals(request.getDefaultWifiConfig().SSID, parceled.getCurrentSelectedConfig().SSID); parceled.getDefaultWifiConfig().SSID); assertEquals(request.getRequiredCapabilities(), parceled.getRequiredCapabilities()); assertEquals(request.getConnectedConfig().SSID, parceled.getConnectedConfig().SSID); ScanResult[] parceledScanResults = parceled.getScanResults(); ScanResult[] parceledScanResults = parceled.getScanResults(); assertNotNull(parceledScanResults); assertNotNull(parceledScanResults); assertEquals(mScanResults.length, parceledScanResults.length); assertEquals(mScanResults.length, parceledScanResults.length); for (int i = 0; i < mScanResults.length; i++) { for (int i = 0; i < mScanResults.length; i++) { assertEquals(mScanResults[i].SSID, parceledScanResults[i].SSID); assertEquals(mScanResults[i].SSID, parceledScanResults[i].SSID); } } WifiConfiguration[] parceledConfigs = parceled.getConnectableConfigs(); for (int i = 0; i < parceledConfigs.length; i++) { assertEquals(mConnectableConfigs[i].SSID, parceledConfigs[i].SSID); } } } public void testParceling_nullScanResults() throws Exception { public void testParceling_nullScanResults() throws Exception { RecommendationRequest request = new RecommendationRequest.Builder() RecommendationRequest request = new RecommendationRequest.Builder() .setCurrentRecommendedWifiConfig(mConfiguration) .setDefaultWifiConfig(mDefaultConfig) .setNetworkCapabilities(mCapabilities) .build(); .build(); RecommendationRequest parceled = passThroughParcel(request); RecommendationRequest parceled = passThroughParcel(request); assertEquals(request.getCurrentSelectedConfig().SSID, parceled.getCurrentSelectedConfig().SSID); assertEquals(request.getRequiredCapabilities(), parceled.getRequiredCapabilities()); ScanResult[] parceledScanResults = parceled.getScanResults(); ScanResult[] parceledScanResults = parceled.getScanResults(); assertNull(parceledScanResults); assertNull(parceledScanResults); } } public void testParceling_nullWifiConfigArray() throws Exception { RecommendationRequest request = new RecommendationRequest.Builder() .setDefaultWifiConfig(mDefaultConfig) .build(); RecommendationRequest parceled = passThroughParcel(request); WifiConfiguration[] parceledConfigs = parceled.getConnectableConfigs(); assertNull(parceledConfigs); } private RecommendationRequest passThroughParcel(RecommendationRequest request) { private RecommendationRequest passThroughParcel(RecommendationRequest request) { Parcel p = Parcel.obtain(); Parcel p = Parcel.obtain(); RecommendationRequest output = null; RecommendationRequest output = null; Loading services/core/java/com/android/server/NetworkScoreService.java +4 −4 Original line number Original line Diff line number Diff line Loading @@ -582,9 +582,9 @@ public class NetworkScoreService extends INetworkScoreService.Stub { Log.d(TAG, "Returning the default network recommendation."); Log.d(TAG, "Returning the default network recommendation."); } } if (request != null && request.getCurrentSelectedConfig() != null) { if (request != null && request.getDefaultWifiConfig() != null) { return RecommendationResult.createConnectRecommendation( return RecommendationResult.createConnectRecommendation( request.getCurrentSelectedConfig()); request.getDefaultWifiConfig()); } } return RecommendationResult.createDoNotConnectRecommendation(); return RecommendationResult.createDoNotConnectRecommendation(); } finally { } finally { Loading Loading @@ -887,9 +887,9 @@ public class NetworkScoreService extends INetworkScoreService.Stub { } } final RecommendationResult result; final RecommendationResult result; if (request != null && request.getCurrentSelectedConfig() != null) { if (request != null && request.getDefaultWifiConfig() != null) { result = RecommendationResult.createConnectRecommendation( result = RecommendationResult.createConnectRecommendation( request.getCurrentSelectedConfig()); request.getDefaultWifiConfig()); } else { } else { result = RecommendationResult.createDoNotConnectRecommendation(); result = RecommendationResult.createDoNotConnectRecommendation(); } } Loading services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java +4 −4 Original line number Original line Diff line number Diff line Loading @@ -144,7 +144,7 @@ public class NetworkScoreServiceTest { configuration.SSID = "NetworkScoreServiceTest_SSID"; configuration.SSID = "NetworkScoreServiceTest_SSID"; configuration.BSSID = "NetworkScoreServiceTest_BSSID"; configuration.BSSID = "NetworkScoreServiceTest_BSSID"; mRecommendationRequest = new RecommendationRequest.Builder() mRecommendationRequest = new RecommendationRequest.Builder() .setCurrentRecommendedWifiConfig(configuration).build(); .setDefaultWifiConfig(configuration).build(); mOnResultListener = new OnResultListener(); mOnResultListener = new OnResultListener(); mRemoteCallback = new RemoteCallback(mOnResultListener); mRemoteCallback = new RemoteCallback(mOnResultListener); Settings.Global.putLong(mContentResolver, Settings.Global.putLong(mContentResolver, Loading Loading @@ -240,7 +240,7 @@ public class NetworkScoreServiceTest { final RecommendationResult result = final RecommendationResult result = mNetworkScoreService.requestRecommendation(mRecommendationRequest); mNetworkScoreService.requestRecommendation(mRecommendationRequest); assertNotNull(result); assertNotNull(result); assertEquals(mRecommendationRequest.getCurrentSelectedConfig(), assertEquals(mRecommendationRequest.getDefaultWifiConfig(), result.getWifiConfiguration()); result.getWifiConfiguration()); } } Loading @@ -255,7 +255,7 @@ public class NetworkScoreServiceTest { final RecommendationResult result = final RecommendationResult result = mNetworkScoreService.requestRecommendation(mRecommendationRequest); mNetworkScoreService.requestRecommendation(mRecommendationRequest); assertNotNull(result); assertNotNull(result); assertEquals(mRecommendationRequest.getCurrentSelectedConfig(), assertEquals(mRecommendationRequest.getDefaultWifiConfig(), result.getWifiConfiguration()); result.getWifiConfiguration()); } } Loading Loading @@ -327,7 +327,7 @@ public class NetworkScoreServiceTest { RecommendationResult result = RecommendationResult result = mOnResultListener.receivedBundle.getParcelable(EXTRA_RECOMMENDATION_RESULT); mOnResultListener.receivedBundle.getParcelable(EXTRA_RECOMMENDATION_RESULT); assertTrue(result.hasRecommendation()); assertTrue(result.hasRecommendation()); assertEquals(mRecommendationRequest.getCurrentSelectedConfig().SSID, assertEquals(mRecommendationRequest.getDefaultWifiConfig().SSID, result.getWifiConfiguration().SSID); result.getWifiConfiguration().SSID); } } Loading Loading
api/system-current.txt +8 −4 Original line number Original line Diff line number Diff line Loading @@ -25759,9 +25759,12 @@ package android.net { public final class RecommendationRequest implements android.os.Parcelable { public final class RecommendationRequest implements android.os.Parcelable { ctor protected RecommendationRequest(android.os.Parcel); ctor protected RecommendationRequest(android.os.Parcel); method public int describeContents(); method public int describeContents(); method public android.net.wifi.WifiConfiguration getCurrentSelectedConfig(); method public android.net.wifi.WifiConfiguration[] getConnectableConfigs(); method public android.net.NetworkCapabilities getRequiredCapabilities(); method public android.net.wifi.WifiConfiguration getConnectedConfig(); method public android.net.wifi.WifiConfiguration getDefaultWifiConfig(); method public android.net.wifi.ScanResult[] getScanResults(); method public android.net.wifi.ScanResult[] getScanResults(); method public void setConnectableConfigs(android.net.wifi.WifiConfiguration[]); method public void setConnectedConfig(android.net.wifi.WifiConfiguration); method public void writeToParcel(android.os.Parcel, int); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.net.RecommendationRequest> CREATOR; field public static final android.os.Parcelable.Creator<android.net.RecommendationRequest> CREATOR; } } Loading @@ -25769,8 +25772,9 @@ package android.net { public static final class RecommendationRequest.Builder { public static final class RecommendationRequest.Builder { ctor public RecommendationRequest.Builder(); ctor public RecommendationRequest.Builder(); method public android.net.RecommendationRequest build(); method public android.net.RecommendationRequest build(); method public android.net.RecommendationRequest.Builder setCurrentRecommendedWifiConfig(android.net.wifi.WifiConfiguration); method public android.net.RecommendationRequest.Builder setConnectableConfigs(android.net.wifi.WifiConfiguration[]); method public android.net.RecommendationRequest.Builder setNetworkCapabilities(android.net.NetworkCapabilities); 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 setScanResults(android.net.wifi.ScanResult[]); method public android.net.RecommendationRequest.Builder setScanResults(android.net.wifi.ScanResult[]); } }
core/java/android/net/RecommendationRequest.java +113 −29 Original line number Original line Diff line number Diff line Loading @@ -34,8 +34,9 @@ import com.android.internal.annotations.VisibleForTesting; @SystemApi @SystemApi public final class RecommendationRequest implements Parcelable { public final class RecommendationRequest implements Parcelable { private final ScanResult[] mScanResults; private final ScanResult[] mScanResults; private final WifiConfiguration mCurrentSelectedConfig; private final WifiConfiguration mDefaultConfig; private final NetworkCapabilities mRequiredCapabilities; private WifiConfiguration mConnectedConfig; private WifiConfiguration[] mConnectableConfigs; /** /** * Builder class for constructing {@link RecommendationRequest} instances. * Builder class for constructing {@link RecommendationRequest} instances. Loading @@ -44,26 +45,62 @@ public final class RecommendationRequest implements Parcelable { @SystemApi @SystemApi public static final class Builder { public static final class Builder { private ScanResult[] mScanResults; private ScanResult[] mScanResults; private WifiConfiguration mCurrentConfig; private WifiConfiguration mDefaultConfig; private NetworkCapabilities mNetworkCapabilities; private WifiConfiguration mConnectedConfig; private WifiConfiguration[] mConnectableConfigs; /** * @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) { public Builder setScanResults(ScanResult[] scanResults) { mScanResults = scanResults; mScanResults = scanResults; return this; return this; } } public Builder setCurrentRecommendedWifiConfig(WifiConfiguration config) { /** this.mCurrentConfig = config; * @param config the {@link WifiConfiguration} to return if no recommendation is available. * @return this */ public Builder setDefaultWifiConfig(WifiConfiguration config) { this.mDefaultConfig = config; return this; return this; } } public Builder setNetworkCapabilities(NetworkCapabilities capabilities) { /** mNetworkCapabilities = capabilities; * @param config the {@link WifiConfiguration} of the connected network at the time the * this request was made. * @return this */ public Builder setConnectedWifiConfig(WifiConfiguration config) { this.mConnectedConfig = config; return this; return this; } } /** * @param connectableConfigs the set of saved {@link WifiConfiguration}s that can be * connected to based on the current set of {@link ScanResult}s. * @return this */ public Builder setConnectableConfigs(WifiConfiguration[] connectableConfigs) { mConnectableConfigs = connectableConfigs; return this; } /** * @return a new {@link RecommendationRequest} instance */ public RecommendationRequest build() { public RecommendationRequest build() { return new RecommendationRequest(mScanResults, mCurrentConfig, mNetworkCapabilities); return new RecommendationRequest(mScanResults, mDefaultConfig, mConnectedConfig, mConnectableConfigs); } } } } Loading @@ -79,45 +116,80 @@ public final class RecommendationRequest implements Parcelable { } } /** /** * @return The best recommendation at the time this {@code RecommendationRequest} instance * @return the {@link WifiConfiguration} to return if no recommendation is available. * was created. This may be null which indicates that no recommendation is available. */ */ public WifiConfiguration getCurrentSelectedConfig() { public WifiConfiguration getDefaultWifiConfig() { return mCurrentSelectedConfig; return mDefaultConfig; } } /** /** * * @return the {@link WifiConfiguration} of the connected network at the time the this request * @return The set of {@link NetworkCapabilities} the recommendation must be constrained to. * was made. * This may be {@code null} which indicates that there are no constraints on the */ * capabilities of the recommended network. public WifiConfiguration getConnectedConfig() { return mConnectedConfig; } /** * @return the set of saved {@link WifiConfiguration}s that can be connected to based on the * current set of {@link ScanResult}s. */ */ public NetworkCapabilities getRequiredCapabilities() { public WifiConfiguration[] getConnectableConfigs() { return mRequiredCapabilities; return mConnectableConfigs; } /** * @param connectedConfig the {@link WifiConfiguration} of the connected network at the time * the this request was made. */ public void setConnectedConfig(WifiConfiguration connectedConfig) { mConnectedConfig = connectedConfig; } /** * @param connectableConfigs the set of saved {@link WifiConfiguration}s that can be connected * to based on the current set of {@link ScanResult}s. */ public void setConnectableConfigs(WifiConfiguration[] connectableConfigs) { mConnectableConfigs = connectableConfigs; } } @VisibleForTesting @VisibleForTesting RecommendationRequest(ScanResult[] scanResults, RecommendationRequest(ScanResult[] scanResults, WifiConfiguration currentSelectedConfig, WifiConfiguration defaultWifiConfig, NetworkCapabilities requiredCapabilities) { WifiConfiguration connectedWifiConfig, WifiConfiguration[] connectableConfigs) { mScanResults = scanResults; mScanResults = scanResults; mCurrentSelectedConfig = currentSelectedConfig; mDefaultConfig = defaultWifiConfig; mRequiredCapabilities = requiredCapabilities; mConnectedConfig = connectedWifiConfig; mConnectableConfigs = connectableConfigs; } } protected RecommendationRequest(Parcel in) { protected RecommendationRequest(Parcel in) { final int resultCount = in.readInt(); final int resultCount = in.readInt(); if (resultCount > 0) { if (resultCount > 0) { mScanResults = new ScanResult[resultCount]; mScanResults = new ScanResult[resultCount]; final ClassLoader classLoader = ScanResult.class.getClassLoader(); for (int i = 0; i < resultCount; i++) { for (int i = 0; i < resultCount; i++) { mScanResults[i] = in.readParcelable(ScanResult.class.getClassLoader()); mScanResults[i] = in.readParcelable(classLoader); } } } else { } else { mScanResults = null; mScanResults = null; } } mCurrentSelectedConfig = in.readParcelable(WifiConfiguration.class.getClassLoader()); mDefaultConfig = in.readParcelable(WifiConfiguration.class.getClassLoader()); mRequiredCapabilities = in.readParcelable(NetworkCapabilities.class.getClassLoader()); mConnectedConfig = in.readParcelable(WifiConfiguration.class.getClassLoader()); final int configCount = in.readInt(); if (configCount > 0) { mConnectableConfigs = new WifiConfiguration[configCount]; final ClassLoader classLoader = WifiConfiguration.class.getClassLoader(); for (int i = 0; i < configCount; i++) { mConnectableConfigs[i] = in.readParcelable(classLoader); } } else { mConnectableConfigs = null; } } } @Override @Override Loading @@ -135,8 +207,20 @@ public final class RecommendationRequest implements Parcelable { } else { } else { dest.writeInt(0); dest.writeInt(0); } } dest.writeParcelable(mCurrentSelectedConfig, flags); dest.writeParcelable(mRequiredCapabilities, flags); dest.writeParcelable(mDefaultConfig, flags); dest.writeParcelable(mConnectedConfig, flags); if (mConnectableConfigs != null) { dest.writeInt(mConnectableConfigs.length); for (int i = 0; i < mConnectableConfigs.length; i++) { dest.writeParcelable(mConnectableConfigs[i], flags); } } else { dest.writeInt(0); } } } public static final Creator<RecommendationRequest> CREATOR = public static final Creator<RecommendationRequest> CREATOR = Loading
core/tests/coretests/src/android/net/RecommendationRequestTest.java +30 −16 Original line number Original line Diff line number Diff line Loading @@ -7,8 +7,9 @@ import android.test.AndroidTestCase; public class RecommendationRequestTest extends AndroidTestCase { public class RecommendationRequestTest extends AndroidTestCase { private ScanResult[] mScanResults; private ScanResult[] mScanResults; private WifiConfiguration mConfiguration; private WifiConfiguration mDefaultConfig; private NetworkCapabilities mCapabilities; private WifiConfiguration mConnectedConfig; private WifiConfiguration[] mConnectableConfigs; @Override @Override public void setUp() throws Exception { public void setUp() throws Exception { Loading @@ -29,45 +30,58 @@ public class RecommendationRequestTest extends AndroidTestCase { 8 /*centerFreq0*/, 8 /*centerFreq0*/, 9 /*centerFreq1*/, 9 /*centerFreq1*/, false /*is80211McRTTResponder*/); false /*is80211McRTTResponder*/); mConfiguration = new WifiConfiguration(); mDefaultConfig = new WifiConfiguration(); mConfiguration.SSID = "RecommendationRequestTest"; mDefaultConfig.SSID = "default_config"; mCapabilities = new NetworkCapabilities() mConnectedConfig = new WifiConfiguration(); .removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED); mConnectedConfig.SSID = "connected_config"; mConnectableConfigs = new WifiConfiguration[] {mDefaultConfig, mConnectedConfig}; } } public void testParceling() throws Exception { public void testParceling() throws Exception { RecommendationRequest request = new RecommendationRequest.Builder() RecommendationRequest request = new RecommendationRequest.Builder() .setCurrentRecommendedWifiConfig(mConfiguration) .setDefaultWifiConfig(mDefaultConfig) .setScanResults(mScanResults) .setScanResults(mScanResults) .setNetworkCapabilities(mCapabilities) .setConnectedWifiConfig(mConnectedConfig) .setConnectableConfigs(mConnectableConfigs) .build(); .build(); RecommendationRequest parceled = passThroughParcel(request); RecommendationRequest parceled = passThroughParcel(request); assertEquals(request.getCurrentSelectedConfig().SSID, assertEquals(request.getDefaultWifiConfig().SSID, parceled.getCurrentSelectedConfig().SSID); parceled.getDefaultWifiConfig().SSID); assertEquals(request.getRequiredCapabilities(), parceled.getRequiredCapabilities()); assertEquals(request.getConnectedConfig().SSID, parceled.getConnectedConfig().SSID); ScanResult[] parceledScanResults = parceled.getScanResults(); ScanResult[] parceledScanResults = parceled.getScanResults(); assertNotNull(parceledScanResults); assertNotNull(parceledScanResults); assertEquals(mScanResults.length, parceledScanResults.length); assertEquals(mScanResults.length, parceledScanResults.length); for (int i = 0; i < mScanResults.length; i++) { for (int i = 0; i < mScanResults.length; i++) { assertEquals(mScanResults[i].SSID, parceledScanResults[i].SSID); assertEquals(mScanResults[i].SSID, parceledScanResults[i].SSID); } } WifiConfiguration[] parceledConfigs = parceled.getConnectableConfigs(); for (int i = 0; i < parceledConfigs.length; i++) { assertEquals(mConnectableConfigs[i].SSID, parceledConfigs[i].SSID); } } } public void testParceling_nullScanResults() throws Exception { public void testParceling_nullScanResults() throws Exception { RecommendationRequest request = new RecommendationRequest.Builder() RecommendationRequest request = new RecommendationRequest.Builder() .setCurrentRecommendedWifiConfig(mConfiguration) .setDefaultWifiConfig(mDefaultConfig) .setNetworkCapabilities(mCapabilities) .build(); .build(); RecommendationRequest parceled = passThroughParcel(request); RecommendationRequest parceled = passThroughParcel(request); assertEquals(request.getCurrentSelectedConfig().SSID, parceled.getCurrentSelectedConfig().SSID); assertEquals(request.getRequiredCapabilities(), parceled.getRequiredCapabilities()); ScanResult[] parceledScanResults = parceled.getScanResults(); ScanResult[] parceledScanResults = parceled.getScanResults(); assertNull(parceledScanResults); assertNull(parceledScanResults); } } public void testParceling_nullWifiConfigArray() throws Exception { RecommendationRequest request = new RecommendationRequest.Builder() .setDefaultWifiConfig(mDefaultConfig) .build(); RecommendationRequest parceled = passThroughParcel(request); WifiConfiguration[] parceledConfigs = parceled.getConnectableConfigs(); assertNull(parceledConfigs); } private RecommendationRequest passThroughParcel(RecommendationRequest request) { private RecommendationRequest passThroughParcel(RecommendationRequest request) { Parcel p = Parcel.obtain(); Parcel p = Parcel.obtain(); RecommendationRequest output = null; RecommendationRequest output = null; Loading
services/core/java/com/android/server/NetworkScoreService.java +4 −4 Original line number Original line Diff line number Diff line Loading @@ -582,9 +582,9 @@ public class NetworkScoreService extends INetworkScoreService.Stub { Log.d(TAG, "Returning the default network recommendation."); Log.d(TAG, "Returning the default network recommendation."); } } if (request != null && request.getCurrentSelectedConfig() != null) { if (request != null && request.getDefaultWifiConfig() != null) { return RecommendationResult.createConnectRecommendation( return RecommendationResult.createConnectRecommendation( request.getCurrentSelectedConfig()); request.getDefaultWifiConfig()); } } return RecommendationResult.createDoNotConnectRecommendation(); return RecommendationResult.createDoNotConnectRecommendation(); } finally { } finally { Loading Loading @@ -887,9 +887,9 @@ public class NetworkScoreService extends INetworkScoreService.Stub { } } final RecommendationResult result; final RecommendationResult result; if (request != null && request.getCurrentSelectedConfig() != null) { if (request != null && request.getDefaultWifiConfig() != null) { result = RecommendationResult.createConnectRecommendation( result = RecommendationResult.createConnectRecommendation( request.getCurrentSelectedConfig()); request.getDefaultWifiConfig()); } else { } else { result = RecommendationResult.createDoNotConnectRecommendation(); result = RecommendationResult.createDoNotConnectRecommendation(); } } Loading
services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java +4 −4 Original line number Original line Diff line number Diff line Loading @@ -144,7 +144,7 @@ public class NetworkScoreServiceTest { configuration.SSID = "NetworkScoreServiceTest_SSID"; configuration.SSID = "NetworkScoreServiceTest_SSID"; configuration.BSSID = "NetworkScoreServiceTest_BSSID"; configuration.BSSID = "NetworkScoreServiceTest_BSSID"; mRecommendationRequest = new RecommendationRequest.Builder() mRecommendationRequest = new RecommendationRequest.Builder() .setCurrentRecommendedWifiConfig(configuration).build(); .setDefaultWifiConfig(configuration).build(); mOnResultListener = new OnResultListener(); mOnResultListener = new OnResultListener(); mRemoteCallback = new RemoteCallback(mOnResultListener); mRemoteCallback = new RemoteCallback(mOnResultListener); Settings.Global.putLong(mContentResolver, Settings.Global.putLong(mContentResolver, Loading Loading @@ -240,7 +240,7 @@ public class NetworkScoreServiceTest { final RecommendationResult result = final RecommendationResult result = mNetworkScoreService.requestRecommendation(mRecommendationRequest); mNetworkScoreService.requestRecommendation(mRecommendationRequest); assertNotNull(result); assertNotNull(result); assertEquals(mRecommendationRequest.getCurrentSelectedConfig(), assertEquals(mRecommendationRequest.getDefaultWifiConfig(), result.getWifiConfiguration()); result.getWifiConfiguration()); } } Loading @@ -255,7 +255,7 @@ public class NetworkScoreServiceTest { final RecommendationResult result = final RecommendationResult result = mNetworkScoreService.requestRecommendation(mRecommendationRequest); mNetworkScoreService.requestRecommendation(mRecommendationRequest); assertNotNull(result); assertNotNull(result); assertEquals(mRecommendationRequest.getCurrentSelectedConfig(), assertEquals(mRecommendationRequest.getDefaultWifiConfig(), result.getWifiConfiguration()); result.getWifiConfiguration()); } } Loading Loading @@ -327,7 +327,7 @@ public class NetworkScoreServiceTest { RecommendationResult result = RecommendationResult result = mOnResultListener.receivedBundle.getParcelable(EXTRA_RECOMMENDATION_RESULT); mOnResultListener.receivedBundle.getParcelable(EXTRA_RECOMMENDATION_RESULT); assertTrue(result.hasRecommendation()); assertTrue(result.hasRecommendation()); assertEquals(mRecommendationRequest.getCurrentSelectedConfig().SSID, assertEquals(mRecommendationRequest.getDefaultWifiConfig().SSID, result.getWifiConfiguration().SSID); result.getWifiConfiguration().SSID); } } Loading