Loading core/java/android/net/NetworkKey.java +31 −6 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.net.wifi.WifiSsid; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import android.util.Log; import java.util.Objects; Loading @@ -41,6 +42,8 @@ import java.util.Objects; // etc.) so that clients can pull out these details depending on the type of network. public class NetworkKey implements Parcelable { private static final String TAG = "NetworkKey"; /** A wifi network, for which {@link #wifiKey} will be populated. */ public static final int TYPE_WIFI = 1; Loading @@ -59,13 +62,28 @@ public class NetworkKey implements Parcelable { /** * Constructs a new NetworkKey for the given wifi {@link ScanResult}. * * @throws IllegalArgumentException if the given ScanResult is malformed * @return A new {@link NetworkKey} instance or <code>null</code> if the given * {@link ScanResult} instance is malformed. * @hide */ public static NetworkKey createFromScanResult(ScanResult result) { return new NetworkKey( new WifiKey( '"' + result.wifiSsid.toString() + '"', result.BSSID)); @Nullable public static NetworkKey createFromScanResult(@Nullable ScanResult result) { if (result != null && result.wifiSsid != null) { final String ssid = result.wifiSsid.toString(); final String bssid = result.BSSID; if (!TextUtils.isEmpty(ssid) && !ssid.equals(WifiSsid.NONE) && !TextUtils.isEmpty(bssid)) { WifiKey wifiKey; try { wifiKey = new WifiKey(String.format("\"%s\"", ssid), bssid); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to create WifiKey.", e); return null; } return new NetworkKey(wifiKey); } } return null; } /** Loading @@ -83,7 +101,14 @@ public class NetworkKey implements Parcelable { final String bssid = wifiInfo.getBSSID(); if (!TextUtils.isEmpty(ssid) && !ssid.equals(WifiSsid.NONE) && !TextUtils.isEmpty(bssid)) { return new NetworkKey(new WifiKey(ssid, bssid)); WifiKey wifiKey; try { wifiKey = new WifiKey(ssid, bssid); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to create WifiKey.", e); return null; } return new NetworkKey(wifiKey); } } return null; Loading core/tests/coretests/src/android/net/NetworkKeyTest.java +78 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.mockito.Mockito.when; import android.net.wifi.ScanResult; import android.net.wifi.WifiInfo; import android.net.wifi.WifiSsid; import android.support.test.runner.AndroidJUnit4; Loading @@ -17,7 +18,9 @@ import org.mockito.MockitoAnnotations; @RunWith(AndroidJUnit4.class) public class NetworkKeyTest { private static final String VALID_SSID = "\"ssid1\""; private static final String VALID_UNQUOTED_SSID = "ssid1"; private static final String VALID_BSSID = "00:00:00:00:00:00"; private static final String INVALID_BSSID = "invalid_bssid"; @Mock private WifiInfo mWifiInfo; @Before Loading Loading @@ -63,6 +66,13 @@ public class NetworkKeyTest { assertNull(NetworkKey.createFromWifiInfo(mWifiInfo)); } @Test public void createFromWifi_invalidBssid() throws Exception { when(mWifiInfo.getSSID()).thenReturn(VALID_SSID); when(mWifiInfo.getBSSID()).thenReturn(INVALID_BSSID); assertNull(NetworkKey.createFromWifiInfo(mWifiInfo)); } @Test public void createFromWifi_validWifiInfo() throws Exception { when(mWifiInfo.getSSID()).thenReturn(VALID_SSID); Loading @@ -72,4 +82,72 @@ public class NetworkKeyTest { final NetworkKey actual = NetworkKey.createFromWifiInfo(mWifiInfo); assertEquals(expected, actual); } @Test public void createFromScanResult_nullInput() { assertNull(NetworkKey.createFromScanResult(null)); } @Test public void createFromScanResult_nullWifiSsid() { ScanResult scanResult = new ScanResult(); scanResult.BSSID = VALID_BSSID; assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_emptyWifiSsid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(""); scanResult.BSSID = VALID_BSSID; assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_noneWifiSsid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(WifiSsid.NONE); scanResult.BSSID = VALID_BSSID; assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_nullBssid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID); assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_emptyBssid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID); scanResult.BSSID = ""; assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_invalidBssid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID); scanResult.BSSID = INVALID_BSSID; assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_validWifiSsid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID); scanResult.BSSID = VALID_BSSID; NetworkKey expected = new NetworkKey(new WifiKey(VALID_SSID, VALID_BSSID)); NetworkKey actual = NetworkKey.createFromScanResult(scanResult); assertEquals(expected, actual); } } packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java +1 −1 Original line number Diff line number Diff line Loading @@ -510,7 +510,7 @@ public class WifiTracker { } NetworkKey key = NetworkKey.createFromScanResult(result); if (!mRequestedScores.contains(key)) { if (key != null && !mRequestedScores.contains(key)) { scoresToRequest.add(key); } Loading services/core/java/com/android/server/NetworkScoreService.java +4 −1 Original line number Diff line number Diff line Loading @@ -603,7 +603,10 @@ public class NetworkScoreService extends INetworkScoreService.Stub { mScanResultKeys = new ArraySet<>(size); for (int i = 0; i < size; i++) { ScanResult scanResult = scanResults.get(i); mScanResultKeys.add(NetworkKey.createFromScanResult(scanResult)); NetworkKey key = NetworkKey.createFromScanResult(scanResult); if (key != null) { mScanResultKeys.add(key); } } } Loading services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java +67 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ public class NetworkScoreServiceTest { private static final String SSID = "ssid"; private static final String SSID_2 = "ssid_2"; private static final String SSID_3 = "ssid_3"; private static final String INVALID_BSSID = "invalid_bssid"; private static final ComponentName RECOMMENDATION_SERVICE_COMP = new ComponentName("newPackageName", "newScoringServiceClass"); private static final ScoredNetwork SCORED_NETWORK = Loading Loading @@ -777,6 +778,54 @@ public class NetworkScoreServiceTest { assertTrue(actualList.isEmpty()); } @Test public void testCurrentNetworkScoreCacheFilter_invalidWifiInfo_nullSsid() throws Exception { when(mWifiInfo.getSSID()).thenReturn(null); NetworkScoreService.CurrentNetworkScoreCacheFilter cacheFilter = new NetworkScoreService.CurrentNetworkScoreCacheFilter(() -> mWifiInfo); List<ScoredNetwork> actualList = cacheFilter.apply(Lists.newArrayList(SCORED_NETWORK, SCORED_NETWORK_2)); assertTrue(actualList.isEmpty()); } @Test public void testCurrentNetworkScoreCacheFilter_invalidWifiInfo_noneSsid() throws Exception { when(mWifiInfo.getSSID()).thenReturn(WifiSsid.NONE); NetworkScoreService.CurrentNetworkScoreCacheFilter cacheFilter = new NetworkScoreService.CurrentNetworkScoreCacheFilter(() -> mWifiInfo); List<ScoredNetwork> actualList = cacheFilter.apply(Lists.newArrayList(SCORED_NETWORK, SCORED_NETWORK_2)); assertTrue(actualList.isEmpty()); } @Test public void testCurrentNetworkScoreCacheFilter_invalidWifiInfo_emptySsid() throws Exception { when(mWifiInfo.getSSID()).thenReturn(""); NetworkScoreService.CurrentNetworkScoreCacheFilter cacheFilter = new NetworkScoreService.CurrentNetworkScoreCacheFilter(() -> mWifiInfo); List<ScoredNetwork> actualList = cacheFilter.apply(Lists.newArrayList(SCORED_NETWORK, SCORED_NETWORK_2)); assertTrue(actualList.isEmpty()); } @Test public void testCurrentNetworkScoreCacheFilter_invalidWifiInfo_invalidBssid() throws Exception { when(mWifiInfo.getBSSID()).thenReturn(INVALID_BSSID); NetworkScoreService.CurrentNetworkScoreCacheFilter cacheFilter = new NetworkScoreService.CurrentNetworkScoreCacheFilter(() -> mWifiInfo); List<ScoredNetwork> actualList = cacheFilter.apply(Lists.newArrayList(SCORED_NETWORK, SCORED_NETWORK_2)); assertTrue(actualList.isEmpty()); } @Test public void testCurrentNetworkScoreCacheFilter_scoreFiltered() throws Exception { NetworkScoreService.CurrentNetworkScoreCacheFilter cacheFilter = Loading Loading @@ -812,6 +861,24 @@ public class NetworkScoreServiceTest { assertTrue(actualList.isEmpty()); } @Test public void testScanResultsScoreCacheFilter_invalidScanResults() throws Exception { List<ScanResult> invalidScanResults = Lists.newArrayList( new ScanResult(), createScanResult("", SCORED_NETWORK.networkKey.wifiKey.bssid), createScanResult(WifiSsid.NONE, SCORED_NETWORK.networkKey.wifiKey.bssid), createScanResult(SSID, null), createScanResult(SSID, INVALID_BSSID) ); NetworkScoreService.ScanResultsScoreCacheFilter cacheFilter = new NetworkScoreService.ScanResultsScoreCacheFilter(() -> invalidScanResults); List<ScoredNetwork> actualList = cacheFilter.apply(Lists.newArrayList(SCORED_NETWORK, SCORED_NETWORK_2)); assertTrue(actualList.isEmpty()); } @Test public void testScanResultsScoreCacheFilter_scoresFiltered() throws Exception { NetworkScoreService.ScanResultsScoreCacheFilter cacheFilter = Loading Loading
core/java/android/net/NetworkKey.java +31 −6 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.net.wifi.WifiSsid; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import android.util.Log; import java.util.Objects; Loading @@ -41,6 +42,8 @@ import java.util.Objects; // etc.) so that clients can pull out these details depending on the type of network. public class NetworkKey implements Parcelable { private static final String TAG = "NetworkKey"; /** A wifi network, for which {@link #wifiKey} will be populated. */ public static final int TYPE_WIFI = 1; Loading @@ -59,13 +62,28 @@ public class NetworkKey implements Parcelable { /** * Constructs a new NetworkKey for the given wifi {@link ScanResult}. * * @throws IllegalArgumentException if the given ScanResult is malformed * @return A new {@link NetworkKey} instance or <code>null</code> if the given * {@link ScanResult} instance is malformed. * @hide */ public static NetworkKey createFromScanResult(ScanResult result) { return new NetworkKey( new WifiKey( '"' + result.wifiSsid.toString() + '"', result.BSSID)); @Nullable public static NetworkKey createFromScanResult(@Nullable ScanResult result) { if (result != null && result.wifiSsid != null) { final String ssid = result.wifiSsid.toString(); final String bssid = result.BSSID; if (!TextUtils.isEmpty(ssid) && !ssid.equals(WifiSsid.NONE) && !TextUtils.isEmpty(bssid)) { WifiKey wifiKey; try { wifiKey = new WifiKey(String.format("\"%s\"", ssid), bssid); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to create WifiKey.", e); return null; } return new NetworkKey(wifiKey); } } return null; } /** Loading @@ -83,7 +101,14 @@ public class NetworkKey implements Parcelable { final String bssid = wifiInfo.getBSSID(); if (!TextUtils.isEmpty(ssid) && !ssid.equals(WifiSsid.NONE) && !TextUtils.isEmpty(bssid)) { return new NetworkKey(new WifiKey(ssid, bssid)); WifiKey wifiKey; try { wifiKey = new WifiKey(ssid, bssid); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to create WifiKey.", e); return null; } return new NetworkKey(wifiKey); } } return null; Loading
core/tests/coretests/src/android/net/NetworkKeyTest.java +78 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.mockito.Mockito.when; import android.net.wifi.ScanResult; import android.net.wifi.WifiInfo; import android.net.wifi.WifiSsid; import android.support.test.runner.AndroidJUnit4; Loading @@ -17,7 +18,9 @@ import org.mockito.MockitoAnnotations; @RunWith(AndroidJUnit4.class) public class NetworkKeyTest { private static final String VALID_SSID = "\"ssid1\""; private static final String VALID_UNQUOTED_SSID = "ssid1"; private static final String VALID_BSSID = "00:00:00:00:00:00"; private static final String INVALID_BSSID = "invalid_bssid"; @Mock private WifiInfo mWifiInfo; @Before Loading Loading @@ -63,6 +66,13 @@ public class NetworkKeyTest { assertNull(NetworkKey.createFromWifiInfo(mWifiInfo)); } @Test public void createFromWifi_invalidBssid() throws Exception { when(mWifiInfo.getSSID()).thenReturn(VALID_SSID); when(mWifiInfo.getBSSID()).thenReturn(INVALID_BSSID); assertNull(NetworkKey.createFromWifiInfo(mWifiInfo)); } @Test public void createFromWifi_validWifiInfo() throws Exception { when(mWifiInfo.getSSID()).thenReturn(VALID_SSID); Loading @@ -72,4 +82,72 @@ public class NetworkKeyTest { final NetworkKey actual = NetworkKey.createFromWifiInfo(mWifiInfo); assertEquals(expected, actual); } @Test public void createFromScanResult_nullInput() { assertNull(NetworkKey.createFromScanResult(null)); } @Test public void createFromScanResult_nullWifiSsid() { ScanResult scanResult = new ScanResult(); scanResult.BSSID = VALID_BSSID; assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_emptyWifiSsid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(""); scanResult.BSSID = VALID_BSSID; assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_noneWifiSsid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(WifiSsid.NONE); scanResult.BSSID = VALID_BSSID; assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_nullBssid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID); assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_emptyBssid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID); scanResult.BSSID = ""; assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_invalidBssid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID); scanResult.BSSID = INVALID_BSSID; assertNull(NetworkKey.createFromScanResult(scanResult)); } @Test public void createFromScanResult_validWifiSsid() { ScanResult scanResult = new ScanResult(); scanResult.wifiSsid = WifiSsid.createFromAsciiEncoded(VALID_UNQUOTED_SSID); scanResult.BSSID = VALID_BSSID; NetworkKey expected = new NetworkKey(new WifiKey(VALID_SSID, VALID_BSSID)); NetworkKey actual = NetworkKey.createFromScanResult(scanResult); assertEquals(expected, actual); } }
packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java +1 −1 Original line number Diff line number Diff line Loading @@ -510,7 +510,7 @@ public class WifiTracker { } NetworkKey key = NetworkKey.createFromScanResult(result); if (!mRequestedScores.contains(key)) { if (key != null && !mRequestedScores.contains(key)) { scoresToRequest.add(key); } Loading
services/core/java/com/android/server/NetworkScoreService.java +4 −1 Original line number Diff line number Diff line Loading @@ -603,7 +603,10 @@ public class NetworkScoreService extends INetworkScoreService.Stub { mScanResultKeys = new ArraySet<>(size); for (int i = 0; i < size; i++) { ScanResult scanResult = scanResults.get(i); mScanResultKeys.add(NetworkKey.createFromScanResult(scanResult)); NetworkKey key = NetworkKey.createFromScanResult(scanResult); if (key != null) { mScanResultKeys.add(key); } } } Loading
services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java +67 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ public class NetworkScoreServiceTest { private static final String SSID = "ssid"; private static final String SSID_2 = "ssid_2"; private static final String SSID_3 = "ssid_3"; private static final String INVALID_BSSID = "invalid_bssid"; private static final ComponentName RECOMMENDATION_SERVICE_COMP = new ComponentName("newPackageName", "newScoringServiceClass"); private static final ScoredNetwork SCORED_NETWORK = Loading Loading @@ -777,6 +778,54 @@ public class NetworkScoreServiceTest { assertTrue(actualList.isEmpty()); } @Test public void testCurrentNetworkScoreCacheFilter_invalidWifiInfo_nullSsid() throws Exception { when(mWifiInfo.getSSID()).thenReturn(null); NetworkScoreService.CurrentNetworkScoreCacheFilter cacheFilter = new NetworkScoreService.CurrentNetworkScoreCacheFilter(() -> mWifiInfo); List<ScoredNetwork> actualList = cacheFilter.apply(Lists.newArrayList(SCORED_NETWORK, SCORED_NETWORK_2)); assertTrue(actualList.isEmpty()); } @Test public void testCurrentNetworkScoreCacheFilter_invalidWifiInfo_noneSsid() throws Exception { when(mWifiInfo.getSSID()).thenReturn(WifiSsid.NONE); NetworkScoreService.CurrentNetworkScoreCacheFilter cacheFilter = new NetworkScoreService.CurrentNetworkScoreCacheFilter(() -> mWifiInfo); List<ScoredNetwork> actualList = cacheFilter.apply(Lists.newArrayList(SCORED_NETWORK, SCORED_NETWORK_2)); assertTrue(actualList.isEmpty()); } @Test public void testCurrentNetworkScoreCacheFilter_invalidWifiInfo_emptySsid() throws Exception { when(mWifiInfo.getSSID()).thenReturn(""); NetworkScoreService.CurrentNetworkScoreCacheFilter cacheFilter = new NetworkScoreService.CurrentNetworkScoreCacheFilter(() -> mWifiInfo); List<ScoredNetwork> actualList = cacheFilter.apply(Lists.newArrayList(SCORED_NETWORK, SCORED_NETWORK_2)); assertTrue(actualList.isEmpty()); } @Test public void testCurrentNetworkScoreCacheFilter_invalidWifiInfo_invalidBssid() throws Exception { when(mWifiInfo.getBSSID()).thenReturn(INVALID_BSSID); NetworkScoreService.CurrentNetworkScoreCacheFilter cacheFilter = new NetworkScoreService.CurrentNetworkScoreCacheFilter(() -> mWifiInfo); List<ScoredNetwork> actualList = cacheFilter.apply(Lists.newArrayList(SCORED_NETWORK, SCORED_NETWORK_2)); assertTrue(actualList.isEmpty()); } @Test public void testCurrentNetworkScoreCacheFilter_scoreFiltered() throws Exception { NetworkScoreService.CurrentNetworkScoreCacheFilter cacheFilter = Loading Loading @@ -812,6 +861,24 @@ public class NetworkScoreServiceTest { assertTrue(actualList.isEmpty()); } @Test public void testScanResultsScoreCacheFilter_invalidScanResults() throws Exception { List<ScanResult> invalidScanResults = Lists.newArrayList( new ScanResult(), createScanResult("", SCORED_NETWORK.networkKey.wifiKey.bssid), createScanResult(WifiSsid.NONE, SCORED_NETWORK.networkKey.wifiKey.bssid), createScanResult(SSID, null), createScanResult(SSID, INVALID_BSSID) ); NetworkScoreService.ScanResultsScoreCacheFilter cacheFilter = new NetworkScoreService.ScanResultsScoreCacheFilter(() -> invalidScanResults); List<ScoredNetwork> actualList = cacheFilter.apply(Lists.newArrayList(SCORED_NETWORK, SCORED_NETWORK_2)); assertTrue(actualList.isEmpty()); } @Test public void testScanResultsScoreCacheFilter_scoresFiltered() throws Exception { NetworkScoreService.ScanResultsScoreCacheFilter cacheFilter = Loading