diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-16 18:16:10 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-16 18:16:10 +0000 |
commit | f254301e910469de8906f77a83efe7d0f9f07a13 (patch) | |
tree | 410a3ccb24897c6528239d7e55bd1a006cfcdb5b | |
parent | a882828090a47430f593241836a8b9191f0009f7 (diff) | |
parent | 08c74d6ab3d250614fe865662fe0b7dbaf8bbd03 (diff) | |
download | wifi-frc_340819010.tar.gz |
Snap for 10337615 from 08c74d6ab3d250614fe865662fe0b7dbaf8bbd03 to aml-frc-releasefrc_340821000frc_340819280frc_340819220frc_340819190frc_340819030frc_340819020frc_340819010frc_340818170frc_340818110
Change-Id: I74c5d232eb192677d4bd4e1c2d5a4d176eba2ae6
3 files changed, 49 insertions, 2 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java index 703d7a770..0c575f73b 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java @@ -365,10 +365,12 @@ public class WifiEntry { * Returns whether this network is the primary Wi-Fi network or not. */ public boolean isPrimaryNetwork() { - if (mWifiInfo == null) { + if (getConnectedState() == CONNECTED_STATE_DISCONNECTED) { + // In case we have mNetworkInfo but the state is disconnected. return false; } - return NonSdkApiWrapper.isPrimary(mWifiInfo); + return mNetworkInfo != null + || (mWifiInfo != null && NonSdkApiWrapper.isPrimary(mWifiInfo)); } /** diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java index 81a458def..dc2a7b4dc 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java @@ -386,6 +386,7 @@ public class WifiPickerTracker extends BaseWifiTracker { for (WifiEntry entry : getAllWifiEntries()) { entry.onPrimaryWifiInfoChanged(primaryWifiInfo, networkInfo); } + updateWifiEntries(); } @WorkerThread diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java index aa9f0d8e3..96b3e5459 100644 --- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java +++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java @@ -52,6 +52,7 @@ import android.net.ConnectivityManager; import android.net.LinkProperties; import android.net.Network; import android.net.NetworkCapabilities; +import android.net.NetworkInfo; import android.net.TransportInfo; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; @@ -213,6 +214,10 @@ public class WifiPickerTrackerTest { when(mMockContext.getSystemService(SharedConnectivityManager.class)) .thenReturn(mMockSharedConnectivityManager); when(mMockContext.getString(anyInt())).thenReturn(""); + when(mMockResources.getStringArray(R.array.wifitrackerlib_wifi_status)).thenReturn( + new String[]{"", "Scanning", "Connecting", "Authenticating", "Obtaining IP address", + "Connected", "Suspended", "Disconnecting", "Unsuccessful", "Blocked", + "Temporarily avoiding poor connection"}); BaseWifiTracker.mEnableSharedConnectivityFeature = true; } @@ -580,6 +585,45 @@ public class WifiPickerTrackerTest { } /** + * Tests that an L2 connected network (i.e. from NETWORK_STATE_CHANGED) will correctly be + * returned in getConnectedEntry() as the primary network. + */ + @Test + public void testGetConnectedEntry_networkL2Connected_returnsConnectedEntry() { + final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker(); + final WifiConfiguration config = new WifiConfiguration(); + config.SSID = "\"ssid\""; + config.networkId = 1; + when(mMockWifiManager.getPrivilegedConfiguredNetworks()) + .thenReturn(Collections.singletonList(config)); + when(mMockWifiManager.getScanResults()).thenReturn(Arrays.asList( + buildScanResult("ssid", "bssid", START_MILLIS))); + wifiPickerTracker.onStart(); + mTestLooper.dispatchAll(); + verify(mMockContext).registerReceiver( + mBroadcastReceiverCaptor.capture(), any(), any(), any()); + verify(mMockConnectivityManager).registerNetworkCallback( + any(), mNetworkCallbackCaptor.capture(), any()); + final WifiEntry entry = wifiPickerTracker.getWifiEntries().get(0); + + // Simulate an L2 connected network that's still authenticating. + when(mMockWifiInfo.getNetworkId()).thenReturn(1); + when(mMockWifiInfo.getRssi()).thenReturn(-50); + NetworkInfo mockNetworkInfo = mock(NetworkInfo.class); + when(mockNetworkInfo.getDetailedState()) + .thenReturn(NetworkInfo.DetailedState.AUTHENTICATING); + Intent networkStateChanged = new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION); + networkStateChanged.putExtra(WifiManager.EXTRA_NETWORK_INFO, mockNetworkInfo); + mBroadcastReceiverCaptor.getValue().onReceive(mMockContext, networkStateChanged); + + // Network should be returned in getConnectedWifiEntry() even though it's not L3 connected. + verify(mMockCallback, atLeastOnce()).onWifiEntriesChanged(); +// assertThat(wifiPickerTracker.getWifiEntries()).isEmpty(); + assertThat(wifiPickerTracker.getConnectedWifiEntry()).isEqualTo(entry); + assertThat(entry.isPrimaryNetwork()).isTrue(); + } + + /** * Tests that connecting to a network will update getConnectedEntry() to return the connected * WifiEntry if the framework times out and gives us an empty list of configs. */ |