Loading src/com/android/settings/network/InternetUpdater.java +19 −21 Original line number Original line Diff line number Diff line Loading @@ -142,13 +142,13 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange private NetworkCallback mNetworkCallback = new NetworkCallback() { private NetworkCallback mNetworkCallback = new NetworkCallback() { public void onCapabilitiesChanged(@NonNull Network network, public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) { @NonNull NetworkCapabilities networkCapabilities) { checkNetworkCapabilities(networkCapabilities); updateInternetAvailable(networkCapabilities); } } @Override @Override public void onLost(@NonNull Network network) { public void onLost(@NonNull Network network) { mInternetAvailable = false; mInternetAvailable = false; update(); updateInternetType(); } } }; }; Loading Loading @@ -203,7 +203,7 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange Network activeNetwork = mConnectivityManager.getActiveNetwork(); Network activeNetwork = mConnectivityManager.getActiveNetwork(); if (activeNetwork == null) { if (activeNetwork == null) { mInternetAvailable = false; mInternetAvailable = false; update(); updateInternetType(); return; return; } } Loading @@ -211,36 +211,34 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange mConnectivityManager.getNetworkCapabilities(activeNetwork); mConnectivityManager.getNetworkCapabilities(activeNetwork); if (activeNetworkCapabilities == null) { if (activeNetworkCapabilities == null) { mInternetAvailable = false; mInternetAvailable = false; update(); updateInternetType(); return; return; } } checkNetworkCapabilities(activeNetworkCapabilities); updateInternetAvailable(activeNetworkCapabilities); } private void checkNetworkCapabilities(@NonNull NetworkCapabilities networkCapabilities) { if (!networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) { mInternetAvailable = false; update(); return; } } @VisibleForTesting void updateInternetAvailable(@NonNull NetworkCapabilities capabilities) { boolean internetAvailable = false; boolean internetAvailable = false; for (int transport : networkCapabilities.getTransportTypes()) { if (capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) { for (int transport : capabilities.getTransportTypes()) { if (sTransportMap.containsKey(transport)) { if (sTransportMap.containsKey(transport)) { mTransport = transport; mTransport = transport; internetAvailable = true; internetAvailable = true; Log.i(TAG, "Detect an internet capability network with transport type: " Log.i(TAG, "Detect an internet available network with transport type: " + mTransport); + mTransport); break; break; } } } } } mInternetAvailable = internetAvailable; mInternetAvailable = internetAvailable; update(); updateInternetType(); } } @VisibleForTesting @VisibleForTesting void update() { void updateInternetType() { @InternetType int internetType = INTERNET_NETWORKS_AVAILABLE; @InternetType int internetType = INTERNET_NETWORKS_AVAILABLE; if (mInternetAvailable) { if (mInternetAvailable) { internetType = sTransportMap.get(mTransport); internetType = sTransportMap.get(mTransport); Loading src/com/android/settings/network/ProviderModelSlice.java +28 −9 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.app.slice.Slice.EXTRA_TOGGLE_STATE; import static com.android.settings.slices.CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI; import static com.android.settings.slices.CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI; import android.annotation.ColorInt; import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.Intent; Loading @@ -30,6 +31,7 @@ import android.telephony.SubscriptionManager; import android.util.Log; import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; import androidx.slice.builders.ListBuilder; Loading Loading @@ -83,9 +85,10 @@ public class ProviderModelSlice extends WifiSlice { // Second section: Add a carrier item. // Second section: Add a carrier item. // Third section: Add the Wi-Fi items which are not connected. // Third section: Add the Wi-Fi items which are not connected. // Fourth section: If device has connection problem, this row show the message for user. // Fourth section: If device has connection problem, this row show the message for user. boolean hasEthernet = isEthernetConnected(); @InternetUpdater.InternetType int internetType = getInternetType(); final ListBuilder listBuilder = mHelper.createListBuilder(getUri()); final ListBuilder listBuilder = mHelper.createListBuilder(getUri()); if (mHelper.isAirplaneModeEnabled() && !mWifiManager.isWifiEnabled() && !hasEthernet) { if (mHelper.isAirplaneModeEnabled() && !mWifiManager.isWifiEnabled() && internetType != InternetUpdater.INTERNET_ETHERNET) { log("Airplane mode is enabled."); log("Airplane mode is enabled."); return listBuilder.build(); return listBuilder.build(); } } Loading @@ -105,15 +108,17 @@ public class ProviderModelSlice extends WifiSlice { log("hasCarrier: " + hasCarrier); log("hasCarrier: " + hasCarrier); // First section: Add a Ethernet or Wi-Fi item which state is connected. // First section: Add a Ethernet or Wi-Fi item which state is connected. boolean isConnectedWifiAddedTop = false; final WifiSliceItem connectedWifiItem = mHelper.getConnectedWifiItem(wifiList); final WifiSliceItem connectedWifiItem = mHelper.getConnectedWifiItem(wifiList); if (hasEthernet) { if (internetType == InternetUpdater.INTERNET_ETHERNET) { log("get Ethernet item which is connected"); log("get Ethernet item which is connected"); listBuilder.addRow(createEthernetRow()); listBuilder.addRow(createEthernetRow()); maxListSize--; maxListSize--; } else { } else { if (connectedWifiItem != null) { if (connectedWifiItem != null && internetType == InternetUpdater.INTERNET_WIFI) { log("get Wi-Fi item which is connected"); log("get Wi-Fi item which is connected to internet"); listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem)); listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem)); isConnectedWifiAddedTop = true; maxListSize--; maxListSize--; } } } } Loading @@ -128,7 +133,7 @@ public class ProviderModelSlice extends WifiSlice { } } // Third section: Add the connected Wi-Fi item to Wi-Fi list if the Ethernet is connected. // Third section: Add the connected Wi-Fi item to Wi-Fi list if the Ethernet is connected. if (connectedWifiItem != null && hasEthernet) { if (connectedWifiItem != null && !isConnectedWifiAddedTop) { log("get Wi-Fi item which is connected"); log("get Wi-Fi item which is connected"); listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem)); listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem)); maxListSize--; maxListSize--; Loading Loading @@ -222,12 +227,12 @@ public class ProviderModelSlice extends WifiSlice { return SliceBackgroundWorker.getInstance(getUri()); return SliceBackgroundWorker.getInstance(getUri()); } } private boolean isEthernetConnected() { private @InternetUpdater.InternetType int getInternetType() { final NetworkProviderWorker worker = getWorker(); final NetworkProviderWorker worker = getWorker(); if (worker == null) { if (worker == null) { return false; return InternetUpdater.INTERNET_NETWORKS_AVAILABLE; } } return worker.isEthernetConnected(); return worker.getInternetType(); } } @VisibleForTesting @VisibleForTesting Loading @@ -243,6 +248,20 @@ public class ProviderModelSlice extends WifiSlice { .setSubtitle(mContext.getText(R.string.to_switch_networks_disconnect_ethernet)); .setSubtitle(mContext.getText(R.string.to_switch_networks_disconnect_ethernet)); } } @Override protected IconCompat getWifiSliceItemLevelIcon(WifiSliceItem wifiSliceItem) { if (wifiSliceItem.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED && getInternetType() != InternetUpdater.INTERNET_WIFI) { final @ColorInt int tint = Utils.getColorAttrDefaultColor(mContext, android.R.attr.colorControlNormal); final Drawable drawable = mContext.getDrawable( Utils.getWifiIconResource(wifiSliceItem.getLevel())); drawable.setTint(tint); return Utils.createIconWithDrawable(drawable); } return super.getWifiSliceItemLevelIcon(wifiSliceItem); } /** /** * Wrap the subscriptionManager call for test mocking. * Wrap the subscriptionManager call for test mocking. */ */ Loading src/com/android/settings/network/telephony/NetworkProviderWorker.java +3 −3 Original line number Original line Diff line number Diff line Loading @@ -288,9 +288,9 @@ public class NetworkProviderWorker extends WifiScanWorker implements } } /** /** * Returns true, if the ethernet network is connected. * Returns the internet type. */ */ public boolean isEthernetConnected() { public @InternetUpdater.InternetType int getInternetType() { return mInternetType == INTERNET_ETHERNET; return mInternetType; } } } } src/com/android/settings/wifi/slice/WifiSlice.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -164,7 +164,7 @@ public class WifiSlice implements CustomSliceable { return rowBuilder; return rowBuilder; } } private IconCompat getWifiSliceItemLevelIcon(WifiSliceItem wifiSliceItem) { protected IconCompat getWifiSliceItemLevelIcon(WifiSliceItem wifiSliceItem) { final @ColorInt int tint; final @ColorInt int tint; if (wifiSliceItem.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) { if (wifiSliceItem.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) { tint = Utils.getColorAccentDefaultColor(mContext); tint = Utils.getColorAccentDefaultColor(mContext); Loading tests/unit/src/com/android/settings/network/InternetUpdaterTest.java +34 −10 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Context; import android.content.IntentFilter; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.ConnectivityManager; import android.net.NetworkCapabilities; import android.net.wifi.WifiManager; import android.net.wifi.WifiManager; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Lifecycle; Loading Loading @@ -107,57 +108,80 @@ public class InternetUpdaterTest { } } @Test @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(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(WifiManager.WIFI_STATE_DISABLED).when(mWifiManager).getWifiState(); doReturn(WifiManager.WIFI_STATE_DISABLED).when(mWifiManager).getWifiState(); mInternetUpdater.mInternetAvailable = false; mInternetUpdater.mInternetAvailable = false; mInternetUpdater.update(); mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_OFF); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_OFF); } } @Test @Test public void update_apmOnWifiOnNotConnected_getInternetNetworksAvailable() { public void updateInternetType_apmOnWifiOnNotConnected_getInternetNetworksAvailable() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState(); doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState(); mInternetUpdater.mInternetAvailable = false; mInternetUpdater.mInternetAvailable = false; mInternetUpdater.update(); mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_NETWORKS_AVAILABLE); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_NETWORKS_AVAILABLE); } } @Test @Test public void update_apmOnWifiConnected_getInternetWifi() { public void updateInternetType_apmOnWifiConnected_getInternetWifi() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mWifiManager).isWifiEnabled(); doReturn(true).when(mWifiManager).isWifiEnabled(); mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_WIFI; mInternetUpdater.mTransport = TRANSPORT_WIFI; mInternetUpdater.update(); mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_WIFI); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_WIFI); } } @Test @Test public void update_apmOnCellularConnected_getInternetCellular() { public void updateInternetType_apmOnCellularConnected_getInternetCellular() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_CELLULAR; mInternetUpdater.mTransport = TRANSPORT_CELLULAR; mInternetUpdater.update(); mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_CELLULAR); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_CELLULAR); } } @Test @Test public void update_apmOnEthernetConnected_getInternetEthernet() { public void updateInternetType_apmOnEthernetConnected_getInternetEthernet() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_ETHERNET; mInternetUpdater.mTransport = TRANSPORT_ETHERNET; mInternetUpdater.update(); mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_ETHERNET); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_ETHERNET); } } Loading Loading
src/com/android/settings/network/InternetUpdater.java +19 −21 Original line number Original line Diff line number Diff line Loading @@ -142,13 +142,13 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange private NetworkCallback mNetworkCallback = new NetworkCallback() { private NetworkCallback mNetworkCallback = new NetworkCallback() { public void onCapabilitiesChanged(@NonNull Network network, public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) { @NonNull NetworkCapabilities networkCapabilities) { checkNetworkCapabilities(networkCapabilities); updateInternetAvailable(networkCapabilities); } } @Override @Override public void onLost(@NonNull Network network) { public void onLost(@NonNull Network network) { mInternetAvailable = false; mInternetAvailable = false; update(); updateInternetType(); } } }; }; Loading Loading @@ -203,7 +203,7 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange Network activeNetwork = mConnectivityManager.getActiveNetwork(); Network activeNetwork = mConnectivityManager.getActiveNetwork(); if (activeNetwork == null) { if (activeNetwork == null) { mInternetAvailable = false; mInternetAvailable = false; update(); updateInternetType(); return; return; } } Loading @@ -211,36 +211,34 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange mConnectivityManager.getNetworkCapabilities(activeNetwork); mConnectivityManager.getNetworkCapabilities(activeNetwork); if (activeNetworkCapabilities == null) { if (activeNetworkCapabilities == null) { mInternetAvailable = false; mInternetAvailable = false; update(); updateInternetType(); return; return; } } checkNetworkCapabilities(activeNetworkCapabilities); updateInternetAvailable(activeNetworkCapabilities); } private void checkNetworkCapabilities(@NonNull NetworkCapabilities networkCapabilities) { if (!networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) { mInternetAvailable = false; update(); return; } } @VisibleForTesting void updateInternetAvailable(@NonNull NetworkCapabilities capabilities) { boolean internetAvailable = false; boolean internetAvailable = false; for (int transport : networkCapabilities.getTransportTypes()) { if (capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) { for (int transport : capabilities.getTransportTypes()) { if (sTransportMap.containsKey(transport)) { if (sTransportMap.containsKey(transport)) { mTransport = transport; mTransport = transport; internetAvailable = true; internetAvailable = true; Log.i(TAG, "Detect an internet capability network with transport type: " Log.i(TAG, "Detect an internet available network with transport type: " + mTransport); + mTransport); break; break; } } } } } mInternetAvailable = internetAvailable; mInternetAvailable = internetAvailable; update(); updateInternetType(); } } @VisibleForTesting @VisibleForTesting void update() { void updateInternetType() { @InternetType int internetType = INTERNET_NETWORKS_AVAILABLE; @InternetType int internetType = INTERNET_NETWORKS_AVAILABLE; if (mInternetAvailable) { if (mInternetAvailable) { internetType = sTransportMap.get(mTransport); internetType = sTransportMap.get(mTransport); Loading
src/com/android/settings/network/ProviderModelSlice.java +28 −9 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.app.slice.Slice.EXTRA_TOGGLE_STATE; import static com.android.settings.slices.CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI; import static com.android.settings.slices.CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI; import android.annotation.ColorInt; import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.Intent; Loading @@ -30,6 +31,7 @@ import android.telephony.SubscriptionManager; import android.util.Log; import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; import androidx.slice.builders.ListBuilder; Loading Loading @@ -83,9 +85,10 @@ public class ProviderModelSlice extends WifiSlice { // Second section: Add a carrier item. // Second section: Add a carrier item. // Third section: Add the Wi-Fi items which are not connected. // Third section: Add the Wi-Fi items which are not connected. // Fourth section: If device has connection problem, this row show the message for user. // Fourth section: If device has connection problem, this row show the message for user. boolean hasEthernet = isEthernetConnected(); @InternetUpdater.InternetType int internetType = getInternetType(); final ListBuilder listBuilder = mHelper.createListBuilder(getUri()); final ListBuilder listBuilder = mHelper.createListBuilder(getUri()); if (mHelper.isAirplaneModeEnabled() && !mWifiManager.isWifiEnabled() && !hasEthernet) { if (mHelper.isAirplaneModeEnabled() && !mWifiManager.isWifiEnabled() && internetType != InternetUpdater.INTERNET_ETHERNET) { log("Airplane mode is enabled."); log("Airplane mode is enabled."); return listBuilder.build(); return listBuilder.build(); } } Loading @@ -105,15 +108,17 @@ public class ProviderModelSlice extends WifiSlice { log("hasCarrier: " + hasCarrier); log("hasCarrier: " + hasCarrier); // First section: Add a Ethernet or Wi-Fi item which state is connected. // First section: Add a Ethernet or Wi-Fi item which state is connected. boolean isConnectedWifiAddedTop = false; final WifiSliceItem connectedWifiItem = mHelper.getConnectedWifiItem(wifiList); final WifiSliceItem connectedWifiItem = mHelper.getConnectedWifiItem(wifiList); if (hasEthernet) { if (internetType == InternetUpdater.INTERNET_ETHERNET) { log("get Ethernet item which is connected"); log("get Ethernet item which is connected"); listBuilder.addRow(createEthernetRow()); listBuilder.addRow(createEthernetRow()); maxListSize--; maxListSize--; } else { } else { if (connectedWifiItem != null) { if (connectedWifiItem != null && internetType == InternetUpdater.INTERNET_WIFI) { log("get Wi-Fi item which is connected"); log("get Wi-Fi item which is connected to internet"); listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem)); listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem)); isConnectedWifiAddedTop = true; maxListSize--; maxListSize--; } } } } Loading @@ -128,7 +133,7 @@ public class ProviderModelSlice extends WifiSlice { } } // Third section: Add the connected Wi-Fi item to Wi-Fi list if the Ethernet is connected. // Third section: Add the connected Wi-Fi item to Wi-Fi list if the Ethernet is connected. if (connectedWifiItem != null && hasEthernet) { if (connectedWifiItem != null && !isConnectedWifiAddedTop) { log("get Wi-Fi item which is connected"); log("get Wi-Fi item which is connected"); listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem)); listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem)); maxListSize--; maxListSize--; Loading Loading @@ -222,12 +227,12 @@ public class ProviderModelSlice extends WifiSlice { return SliceBackgroundWorker.getInstance(getUri()); return SliceBackgroundWorker.getInstance(getUri()); } } private boolean isEthernetConnected() { private @InternetUpdater.InternetType int getInternetType() { final NetworkProviderWorker worker = getWorker(); final NetworkProviderWorker worker = getWorker(); if (worker == null) { if (worker == null) { return false; return InternetUpdater.INTERNET_NETWORKS_AVAILABLE; } } return worker.isEthernetConnected(); return worker.getInternetType(); } } @VisibleForTesting @VisibleForTesting Loading @@ -243,6 +248,20 @@ public class ProviderModelSlice extends WifiSlice { .setSubtitle(mContext.getText(R.string.to_switch_networks_disconnect_ethernet)); .setSubtitle(mContext.getText(R.string.to_switch_networks_disconnect_ethernet)); } } @Override protected IconCompat getWifiSliceItemLevelIcon(WifiSliceItem wifiSliceItem) { if (wifiSliceItem.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED && getInternetType() != InternetUpdater.INTERNET_WIFI) { final @ColorInt int tint = Utils.getColorAttrDefaultColor(mContext, android.R.attr.colorControlNormal); final Drawable drawable = mContext.getDrawable( Utils.getWifiIconResource(wifiSliceItem.getLevel())); drawable.setTint(tint); return Utils.createIconWithDrawable(drawable); } return super.getWifiSliceItemLevelIcon(wifiSliceItem); } /** /** * Wrap the subscriptionManager call for test mocking. * Wrap the subscriptionManager call for test mocking. */ */ Loading
src/com/android/settings/network/telephony/NetworkProviderWorker.java +3 −3 Original line number Original line Diff line number Diff line Loading @@ -288,9 +288,9 @@ public class NetworkProviderWorker extends WifiScanWorker implements } } /** /** * Returns true, if the ethernet network is connected. * Returns the internet type. */ */ public boolean isEthernetConnected() { public @InternetUpdater.InternetType int getInternetType() { return mInternetType == INTERNET_ETHERNET; return mInternetType; } } } }
src/com/android/settings/wifi/slice/WifiSlice.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -164,7 +164,7 @@ public class WifiSlice implements CustomSliceable { return rowBuilder; return rowBuilder; } } private IconCompat getWifiSliceItemLevelIcon(WifiSliceItem wifiSliceItem) { protected IconCompat getWifiSliceItemLevelIcon(WifiSliceItem wifiSliceItem) { final @ColorInt int tint; final @ColorInt int tint; if (wifiSliceItem.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) { if (wifiSliceItem.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) { tint = Utils.getColorAccentDefaultColor(mContext); tint = Utils.getColorAccentDefaultColor(mContext); Loading
tests/unit/src/com/android/settings/network/InternetUpdaterTest.java +34 −10 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Context; import android.content.IntentFilter; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.ConnectivityManager; import android.net.NetworkCapabilities; import android.net.wifi.WifiManager; import android.net.wifi.WifiManager; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Lifecycle; Loading Loading @@ -107,57 +108,80 @@ public class InternetUpdaterTest { } } @Test @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(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(WifiManager.WIFI_STATE_DISABLED).when(mWifiManager).getWifiState(); doReturn(WifiManager.WIFI_STATE_DISABLED).when(mWifiManager).getWifiState(); mInternetUpdater.mInternetAvailable = false; mInternetUpdater.mInternetAvailable = false; mInternetUpdater.update(); mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_OFF); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_OFF); } } @Test @Test public void update_apmOnWifiOnNotConnected_getInternetNetworksAvailable() { public void updateInternetType_apmOnWifiOnNotConnected_getInternetNetworksAvailable() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState(); doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState(); mInternetUpdater.mInternetAvailable = false; mInternetUpdater.mInternetAvailable = false; mInternetUpdater.update(); mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_NETWORKS_AVAILABLE); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_NETWORKS_AVAILABLE); } } @Test @Test public void update_apmOnWifiConnected_getInternetWifi() { public void updateInternetType_apmOnWifiConnected_getInternetWifi() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mWifiManager).isWifiEnabled(); doReturn(true).when(mWifiManager).isWifiEnabled(); mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_WIFI; mInternetUpdater.mTransport = TRANSPORT_WIFI; mInternetUpdater.update(); mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_WIFI); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_WIFI); } } @Test @Test public void update_apmOnCellularConnected_getInternetCellular() { public void updateInternetType_apmOnCellularConnected_getInternetCellular() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_CELLULAR; mInternetUpdater.mTransport = TRANSPORT_CELLULAR; mInternetUpdater.update(); mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_CELLULAR); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_CELLULAR); } } @Test @Test public void update_apmOnEthernetConnected_getInternetEthernet() { public void updateInternetType_apmOnEthernetConnected_getInternetEthernet() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_ETHERNET; mInternetUpdater.mTransport = TRANSPORT_ETHERNET; mInternetUpdater.update(); mInternetUpdater.updateInternetType(); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_ETHERNET); assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_ETHERNET); } } Loading