[Provider Model] Move the Internet unavailable Wi-Fi down

- Check the Wifi network have both INTERNET and VALIDATED capabilities
to achieve effective network access

- Move the Internet unavailable Wi-Fi down to the top of Wi-Fi list

- Don't paint color for the Internet unavailable Wi-Fi

- Screenshot:
  https://screenshot.googleplex.com/w82kbALssdTZmg4

Bug: 178457619
Bug: 178926547
Bug: 178978070
Test: manual test on device
atest -c InternetUpdaterTest \
         NetworkProviderWorkerTest \
         ProviderModelSliceTest

Change-Id: Idf04e556ab5a87abc5bc96d1934f5e8fd91fbfaa
This commit is contained in:
Weng Su
2021-03-25 12:10:06 +08:00
parent fe042ac08e
commit 439cc64b1c
7 changed files with 101 additions and 58 deletions

View File

@@ -38,6 +38,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.wifi.WifiManager;
import androidx.lifecycle.Lifecycle;
@@ -107,57 +108,80 @@ public class InternetUpdaterTest {
}
@Test
public void update_apmOnWifiOff_getInternetApm() {
public void updateInternetAvailable_wifiConnectedAndNoValidated_internetUnavailable() {
final NetworkCapabilities networkCapabilities = new NetworkCapabilities();
networkCapabilities.addTransportType(TRANSPORT_WIFI);
networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
mInternetUpdater.updateInternetAvailable(networkCapabilities);
assertThat(mInternetUpdater.mInternetAvailable).isEqualTo(false);
}
@Test
public void updateInternetAvailable_wifiConnectedAndValidated_internetAvailable() {
final NetworkCapabilities networkCapabilities = new NetworkCapabilities();
networkCapabilities.addTransportType(TRANSPORT_WIFI);
networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
mInternetUpdater.updateInternetAvailable(networkCapabilities);
assertThat(mInternetUpdater.mInternetAvailable).isEqualTo(true);
}
@Test
public void updateInternetType_apmOnWifiOff_getInternetApm() {
doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn();
doReturn(WifiManager.WIFI_STATE_DISABLED).when(mWifiManager).getWifiState();
mInternetUpdater.mInternetAvailable = false;
mInternetUpdater.update();
mInternetUpdater.updateInternetType();
assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_OFF);
}
@Test
public void update_apmOnWifiOnNotConnected_getInternetNetworksAvailable() {
public void updateInternetType_apmOnWifiOnNotConnected_getInternetNetworksAvailable() {
doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn();
doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState();
mInternetUpdater.mInternetAvailable = false;
mInternetUpdater.update();
mInternetUpdater.updateInternetType();
assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_NETWORKS_AVAILABLE);
}
@Test
public void update_apmOnWifiConnected_getInternetWifi() {
public void updateInternetType_apmOnWifiConnected_getInternetWifi() {
doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn();
doReturn(true).when(mWifiManager).isWifiEnabled();
mInternetUpdater.mInternetAvailable = true;
mInternetUpdater.mTransport = TRANSPORT_WIFI;
mInternetUpdater.update();
mInternetUpdater.updateInternetType();
assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_WIFI);
}
@Test
public void update_apmOnCellularConnected_getInternetCellular() {
public void updateInternetType_apmOnCellularConnected_getInternetCellular() {
doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn();
mInternetUpdater.mInternetAvailable = true;
mInternetUpdater.mTransport = TRANSPORT_CELLULAR;
mInternetUpdater.update();
mInternetUpdater.updateInternetType();
assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_CELLULAR);
}
@Test
public void update_apmOnEthernetConnected_getInternetEthernet() {
public void updateInternetType_apmOnEthernetConnected_getInternetEthernet() {
doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn();
mInternetUpdater.mInternetAvailable = true;
mInternetUpdater.mTransport = TRANSPORT_ETHERNET;
mInternetUpdater.update();
mInternetUpdater.updateInternetType();
assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_ETHERNET);
}

View File

@@ -236,7 +236,8 @@ public class ProviderModelSliceTest {
mWifiList.add(mMockWifiSliceItem2);
mMockNetworkProviderWorker.updateSelfResults(mWifiList);
mockHelperCondition(false, true, true, null);
when(mMockNetworkProviderWorker.isEthernetConnected()).thenReturn(true);
when(mMockNetworkProviderWorker.getInternetType())
.thenReturn(InternetUpdater.INTERNET_ETHERNET);
final Slice slice = mMockProviderModelSlice.getSlice();
@@ -258,7 +259,8 @@ public class ProviderModelSliceTest {
mWifiList.add(mMockWifiSliceItem2);
mMockNetworkProviderWorker.updateSelfResults(mWifiList);
mockHelperCondition(false, true, true, mWifiList.get(0));
when(mMockNetworkProviderWorker.isEthernetConnected()).thenReturn(true);
when(mMockNetworkProviderWorker.getInternetType())
.thenReturn(InternetUpdater.INTERNET_ETHERNET);
final Slice slice = mMockProviderModelSlice.getSlice();

View File

@@ -261,24 +261,24 @@ public class NetworkProviderWorkerTest {
}
@Test
public void isEthernetConnected_connectedEthernet_shouldBeTrue() {
public void getInternetType_connectedEthernet_returnInternetEthernet() {
mMockNetworkProviderWorker.onInternetTypeChanged(INTERNET_ETHERNET);
assertThat(mMockNetworkProviderWorker.isEthernetConnected()).isTrue();
assertThat(mMockNetworkProviderWorker.getInternetType()).isEqualTo(INTERNET_ETHERNET);
}
@Test
public void isEthernetConnected_connectedWifi_shouldBeFalse() {
public void getInternetType_connectedWifi_returnInternetWifi() {
mMockNetworkProviderWorker.onInternetTypeChanged(INTERNET_WIFI);
assertThat(mMockNetworkProviderWorker.isEthernetConnected()).isFalse();
assertThat(mMockNetworkProviderWorker.getInternetType()).isEqualTo(INTERNET_WIFI);
}
@Test
public void isEthernetConnected_connectedCarrier_shouldBeFalse() {
public void getInternetType__connectedCarrier_returnInternetCellular() {
mMockNetworkProviderWorker.onInternetTypeChanged(INTERNET_CELLULAR);
assertThat(mMockNetworkProviderWorker.isEthernetConnected()).isFalse();
assertThat(mMockNetworkProviderWorker.getInternetType()).isEqualTo(INTERNET_CELLULAR);
}
public class MockNetworkProviderWorker extends NetworkProviderWorker {