[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

@@ -142,13 +142,13 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange
private NetworkCallback mNetworkCallback = new NetworkCallback() {
public void onCapabilitiesChanged(@NonNull Network network,
@NonNull NetworkCapabilities networkCapabilities) {
checkNetworkCapabilities(networkCapabilities);
updateInternetAvailable(networkCapabilities);
}
@Override
public void onLost(@NonNull Network network) {
mInternetAvailable = false;
update();
updateInternetType();
}
};
@@ -203,7 +203,7 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange
Network activeNetwork = mConnectivityManager.getActiveNetwork();
if (activeNetwork == null) {
mInternetAvailable = false;
update();
updateInternetType();
return;
}
@@ -211,36 +211,34 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange
mConnectivityManager.getNetworkCapabilities(activeNetwork);
if (activeNetworkCapabilities == null) {
mInternetAvailable = false;
update();
updateInternetType();
return;
}
checkNetworkCapabilities(activeNetworkCapabilities);
}
private void checkNetworkCapabilities(@NonNull NetworkCapabilities networkCapabilities) {
if (!networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
mInternetAvailable = false;
update();
return;
}
boolean internetAvailable = false;
for (int transport : networkCapabilities.getTransportTypes()) {
if (sTransportMap.containsKey(transport)) {
mTransport = transport;
internetAvailable = true;
Log.i(TAG, "Detect an internet capability network with transport type: "
+ mTransport);
break;
}
}
mInternetAvailable = internetAvailable;
update();
updateInternetAvailable(activeNetworkCapabilities);
}
@VisibleForTesting
void update() {
void updateInternetAvailable(@NonNull NetworkCapabilities capabilities) {
boolean internetAvailable = false;
if (capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
&& capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) {
for (int transport : capabilities.getTransportTypes()) {
if (sTransportMap.containsKey(transport)) {
mTransport = transport;
internetAvailable = true;
Log.i(TAG, "Detect an internet available network with transport type: "
+ mTransport);
break;
}
}
}
mInternetAvailable = internetAvailable;
updateInternetType();
}
@VisibleForTesting
void updateInternetType() {
@InternetType int internetType = INTERNET_NETWORKS_AVAILABLE;
if (mInternetAvailable) {
internetType = sTransportMap.get(mTransport);