summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-06-16 18:16:10 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-06-16 18:16:10 +0000
commitf254301e910469de8906f77a83efe7d0f9f07a13 (patch)
tree410a3ccb24897c6528239d7e55bd1a006cfcdb5b
parenta882828090a47430f593241836a8b9191f0009f7 (diff)
parent08c74d6ab3d250614fe865662fe0b7dbaf8bbd03 (diff)
downloadwifi-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
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java6
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java1
-rw-r--r--libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java44
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.
*/