diff options
author | Quang Luong <qal@google.com> | 2021-06-23 16:06:04 -0700 |
---|---|---|
committer | Quang Luong <qal@google.com> | 2021-06-23 16:06:04 -0700 |
commit | ada33f8f4420434cf36b82ae5b3f553102997b2a (patch) | |
tree | 247704514e307bc57f5ff063cc6a8413f2e48a43 | |
parent | 63d7fcc932a930e9633650527a5675f000746ef2 (diff) | |
download | wifi-ada33f8f4420434cf36b82ae5b3f553102997b2a.tar.gz |
Add WifiEntry#isDefaultNetwork()
Add a method WifiEntry#isDefaultNetwork() to return whether or not the
WifiEntry is being used as the default route or not.
Bug: 191090765
Test: atest WifiPickerTrackerTest
Change-Id: I76c985c32917dd658d0cd544a1aa4b8c4b554c66
3 files changed, 45 insertions, 0 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java index e194adcb3..6ec5d8ba3 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java @@ -342,6 +342,14 @@ public class WifiEntry implements Comparable<WifiEntry> { return mIsValidated; } + /** + * Returns whether this network is the default network or not (i.e. this network is the one + * currently being used to provide internet connection). + */ + public boolean isDefaultNetwork() { + return mIsDefaultNetwork; + } + /** Returns the speed value of the network defined by the SPEED constants */ @Speed public int getSpeed() { diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java index aa65ca4ad..a479b0292 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java @@ -316,6 +316,9 @@ public class WifiPickerTracker extends BaseWifiTracker { mConnectedWifiEntry.setIsLowQuality(mIsWifiValidated && mIsCellDefaultRoute); } if (mMergedCarrierEntry != null) { + if (mMergedCarrierEntry.getConnectedState() == CONNECTED_STATE_CONNECTED) { + mMergedCarrierEntry.setIsDefaultNetwork(mIsWifiDefaultRoute); + } mMergedCarrierEntry.updateIsCellDefaultRoute(mIsCellDefaultRoute); } } diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java index 76408a8f4..2819fcfa3 100644 --- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java +++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java @@ -1180,4 +1180,38 @@ public class WifiPickerTrackerTest { // 1 open config + 2 split configs with same network ID should be treated as 2 networks. assertThat(wifiPickerTracker.getNumSavedNetworks()).isEqualTo(2); } + + /** + * Tests that the MergedCarrierEntry is the default network when it is connected and Wifi is + * the default network. + */ + @Test + public void testGetMergedCarrierEntry_wifiIsDefault_entryIsDefaultNetwork() { + final int subId = 1; + when(mMockWifiInfo.isCarrierMerged()).thenReturn(true); + when(mMockWifiInfo.getSubscriptionId()).thenReturn(subId); + when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED); + final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker(); + wifiPickerTracker.onStart(); + mTestLooper.dispatchAll(); + verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(), + any(), any(), any()); + final Intent intent = new Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); + intent.putExtra("subscription", subId); + mBroadcastReceiverCaptor.getValue().onReceive(mMockContext, intent); + verify(mMockConnectivityManager) + .registerDefaultNetworkCallback(mDefaultNetworkCallbackCaptor.capture(), any()); + MergedCarrierEntry mergedCarrierEntry = wifiPickerTracker.getMergedCarrierEntry(); + assertThat(mergedCarrierEntry.getConnectedState()) + .isEqualTo(WifiEntry.CONNECTED_STATE_CONNECTED); + // Wifi isn't default yet, so isDefaultNetwork returns false + assertThat(mergedCarrierEntry.isDefaultNetwork()).isFalse(); + + mDefaultNetworkCallbackCaptor.getValue().onCapabilitiesChanged(mMockNetwork, + new NetworkCapabilities.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build()); + + // Now Wifi is default, so isDefaultNetwork returns true + assertThat(mergedCarrierEntry.isDefaultNetwork()).isTrue(); + } } |