diff --git a/res/drawable/ic_no_internet_available.xml b/res/drawable/ic_no_internet_available.xml new file mode 100644 index 00000000000..06c6ef37f2f --- /dev/null +++ b/res/drawable/ic_no_internet_available.xml @@ -0,0 +1,31 @@ + + + + + + \ No newline at end of file diff --git a/res/drawable/ic_no_internet_unavailable.xml b/res/drawable/ic_no_internet_unavailable.xml new file mode 100644 index 00000000000..d255cb47377 --- /dev/null +++ b/res/drawable/ic_no_internet_unavailable.xml @@ -0,0 +1,28 @@ + + + + + \ No newline at end of file diff --git a/src/com/android/settings/network/ConnectedEthernetNetworkController.java b/src/com/android/settings/network/ConnectedEthernetNetworkController.java index 5918331ceb0..2f7b4a912f8 100644 --- a/src/com/android/settings/network/ConnectedEthernetNetworkController.java +++ b/src/com/android/settings/network/ConnectedEthernetNetworkController.java @@ -33,7 +33,7 @@ import com.android.settingslib.core.AbstractPreferenceController; * PreferenceController to show the connected ethernet network. */ public class ConnectedEthernetNetworkController extends AbstractPreferenceController - implements InternetUpdater.OnInternetTypeChangedListener { + implements InternetUpdater.InternetChangeListener { public static final String KEY = "connected_ethernet_network"; diff --git a/src/com/android/settings/network/InternetPreferenceController.java b/src/com/android/settings/network/InternetPreferenceController.java index 24fe284b2e4..2fe9c0adf16 100644 --- a/src/com/android/settings/network/InternetPreferenceController.java +++ b/src/com/android/settings/network/InternetPreferenceController.java @@ -19,10 +19,10 @@ package com.android.settings.network; import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE; import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; -import static com.android.settings.network.InternetUpdater.INTERNET_APM; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; import static com.android.settings.network.InternetUpdater.INTERNET_CELLULAR; import static com.android.settings.network.InternetUpdater.INTERNET_ETHERNET; +import static com.android.settings.network.InternetUpdater.INTERNET_NETWORKS_AVAILABLE; +import static com.android.settings.network.InternetUpdater.INTERNET_OFF; import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; import android.content.Context; @@ -53,7 +53,7 @@ import java.util.Map; */ public class InternetPreferenceController extends AbstractPreferenceController implements LifecycleObserver, SummaryUpdater.OnSummaryChangeListener, - InternetUpdater.OnInternetTypeChangedListener { + InternetUpdater.InternetChangeListener { public static final String KEY = "internet_settings"; @@ -65,8 +65,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i @VisibleForTesting static Map sIconMap = new HashMap<>(); static { - sIconMap.put(INTERNET_APM, R.drawable.ic_airplanemode_active); - sIconMap.put(INTERNET_APM_NETWORKS, R.drawable.ic_airplane_safe_networks_24dp); + sIconMap.put(INTERNET_OFF, R.drawable.ic_no_internet_unavailable); + sIconMap.put(INTERNET_NETWORKS_AVAILABLE, R.drawable.ic_no_internet_available); sIconMap.put(INTERNET_WIFI, R.drawable.ic_wifi_signal_4); sIconMap.put(INTERNET_CELLULAR, R.drawable.ic_network_cell); sIconMap.put(INTERNET_ETHERNET, R.drawable.ic_settings_ethernet); @@ -74,8 +74,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i private static Map sSummaryMap = new HashMap<>(); static { - sSummaryMap.put(INTERNET_APM, R.string.condition_airplane_title); - sSummaryMap.put(INTERNET_APM_NETWORKS, R.string.airplane_mode_network_available); + sSummaryMap.put(INTERNET_OFF, R.string.condition_airplane_title); + sSummaryMap.put(INTERNET_NETWORKS_AVAILABLE, R.string.disconnected); sSummaryMap.put(INTERNET_WIFI, 0); sSummaryMap.put(INTERNET_CELLULAR, 0); sSummaryMap.put(INTERNET_ETHERNET, R.string.to_switch_networks_disconnect_ethernet); @@ -114,8 +114,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i } } - if (mustUseWiFiHelperSummary(mSummaryHelper.isWifiConnected(), - mSummaryHelper.getSummary())) { + if (mInternetType == INTERNET_WIFI) { + mPreference.setSummary(mSummaryHelper.getSummary()); return; } @@ -124,6 +124,12 @@ public class InternetPreferenceController extends AbstractPreferenceController i return; } + if (mInternetType == INTERNET_NETWORKS_AVAILABLE + && mInternetUpdater.isApmNetworksAvailable()) { + mPreference.setSummary(R.string.airplane_mode_network_available); + return; + } + final @IdRes int summary = sSummaryMap.get(mInternetType); if (summary != 0) { mPreference.setSummary(summary); @@ -157,6 +163,7 @@ public class InternetPreferenceController extends AbstractPreferenceController i * * @param internetType the internet type */ + @Override public void onInternetTypeChanged(@InternetUpdater.InternetType int internetType) { final boolean needUpdate = (internetType != mInternetType); mInternetType = internetType; @@ -167,19 +174,21 @@ public class InternetPreferenceController extends AbstractPreferenceController i } } + /** + * Called when airplane mode state is changed. + */ @Override - public void onSummaryChanged(String summary) { - mustUseWiFiHelperSummary(mSummaryHelper.isWifiConnected(), summary); + public void onAirplaneModeChanged(boolean isAirplaneModeOn) { + ThreadUtils.postOnMainThread(() -> { + updateState(mPreference); + }); } - @VisibleForTesting - boolean mustUseWiFiHelperSummary(boolean isWifiConnected, String summary) { - final boolean needUpdate = (mInternetType == INTERNET_WIFI) - || (mInternetType == INTERNET_APM_NETWORKS && isWifiConnected); - if (needUpdate && mPreference != null) { + @Override + public void onSummaryChanged(String summary) { + if (mInternetType == INTERNET_WIFI && mPreference != null) { mPreference.setSummary(summary); } - return needUpdate; } @VisibleForTesting diff --git a/src/com/android/settings/network/InternetUpdater.java b/src/com/android/settings/network/InternetUpdater.java index d415b10e20c..3bd1e7b2204 100644 --- a/src/com/android/settings/network/InternetUpdater.java +++ b/src/com/android/settings/network/InternetUpdater.java @@ -34,6 +34,7 @@ import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkCapabilities.Transport; import android.net.wifi.WifiManager; +import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.Lifecycle; @@ -55,27 +56,45 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange private static final String TAG = "InternetUpdater"; - private OnInternetTypeChangedListener mOnInternetTypeChangedListener; + private InternetChangeListener mListener; - /** Interface that handles the internet type changed callback */ - public interface OnInternetTypeChangedListener { + /** Interface that handles the internet updater callback */ + public interface InternetChangeListener { /** * Called when internet type is changed. * * @param internetType the internet type */ - void onInternetTypeChanged(@InternetType int internetType); + default void onInternetTypeChanged(@InternetType int internetType) {}; + + /** + * Called when airplane mode state is changed. + */ + default void onAirplaneModeChanged(boolean isAirplaneModeOn) {}; + + /** + * Called when airplane mode networks state is changed. + */ + default void onAirplaneModeNetworksChanged(boolean available) {}; } /** - * Indicates this internet is unavailable type in airplane mode on. + * Indicates the internet is off when airplane mode is on. */ - public static final int INTERNET_APM = 0; + public static final int INTERNET_OFF = 0; /** - * Indicates this internet uses an airplane mode network type. + * Indicates this internet is not connected (includes no networks connected) or network(s) + * available. + * + * Examples include: + *

When airplane mode is turned off, and some networks (Wi-Fi, Mobile-data) are turned on, + * but no network can access the Internet. + * + *

When the airplane mode is turned on, and the WiFi is also turned on, but the WiFi is not + * connected or cannot access the Internet. */ - public static final int INTERNET_APM_NETWORKS = 1; + public static final int INTERNET_NETWORKS_AVAILABLE = 1; /** * Indicates this internet uses a Wi-Fi network type. @@ -94,8 +113,8 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange @Retention(RetentionPolicy.SOURCE) @android.annotation.IntDef(prefix = { "INTERNET_" }, value = { - INTERNET_APM, - INTERNET_APM_NETWORKS, + INTERNET_OFF, + INTERNET_NETWORKS_AVAILABLE, INTERNET_WIFI, INTERNET_CELLULAR, INTERNET_ETHERNET, @@ -110,6 +129,8 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange @VisibleForTesting AirplaneModeEnabler mAirplaneModeEnabler; + @VisibleForTesting + boolean mInternetAvailable; @VisibleForTesting @Transport int mTransport; private static Map sTransportMap = new HashMap<>(); @@ -120,22 +141,14 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange } private NetworkCallback mNetworkCallback = new NetworkCallback() { + public void onCapabilitiesChanged(@NonNull Network network, + @NonNull NetworkCapabilities networkCapabilities) { + checkNetworkCapabilities(networkCapabilities); + } + @Override - public void onAvailable(@NonNull Network network) { - if (network == null) { - return; - } - final NetworkCapabilities networkCapabilities = - mConnectivityManager.getNetworkCapabilities(network); - if (networkCapabilities == null) { - return; - } - for (@Transport int transport : networkCapabilities.getTransportTypes()) { - if (sTransportMap.containsKey(transport)) { - mTransport = transport; - break; - } - } + public void onLost(@NonNull Network network) { + mInternetAvailable = false; update(); } }; @@ -143,18 +156,22 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange private final BroadcastReceiver mWifiStateReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - update(); + fetchActiveNetwork(); + if (mListener != null && mAirplaneModeEnabler.isAirplaneModeOn()) { + mListener.onAirplaneModeNetworksChanged( + mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED); + } } }; - public InternetUpdater(Context context, Lifecycle lifecycle, - OnInternetTypeChangedListener listener) { + public InternetUpdater(Context context, Lifecycle lifecycle, InternetChangeListener listener) { mContext = context; mAirplaneModeEnabler = new AirplaneModeEnabler(mContext, this); mConnectivityManager = mContext.getSystemService(ConnectivityManager.class); mWifiManager = mContext.getSystemService(WifiManager.class); mWifiStateFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); - mOnInternetTypeChangedListener = listener; + mListener = listener; + fetchActiveNetwork(); if (lifecycle != null) { lifecycle.addObserver(this); } @@ -178,18 +195,65 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange @Override public void onAirplaneModeChanged(boolean isAirplaneModeOn) { + fetchActiveNetwork(); + if (mListener != null) { + mListener.onAirplaneModeChanged(isAirplaneModeOn); + } + } + + private void fetchActiveNetwork() { + Network activeNetwork = mConnectivityManager.getActiveNetwork(); + if (activeNetwork == null) { + mInternetAvailable = false; + update(); + return; + } + + NetworkCapabilities activeNetworkCapabilities = + mConnectivityManager.getNetworkCapabilities(activeNetwork); + if (activeNetworkCapabilities == null) { + mInternetAvailable = false; + update(); + return; + } + + checkNetworkCapabilities(activeNetworkCapabilities); + } + + private void checkNetworkCapabilities(@NonNull NetworkCapabilities networkCapabilities) { + if (!networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) { + mInternetAvailable = false; + update(); + return; + } + + boolean internetAvailable = false; + for (@Transport 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(); } @VisibleForTesting void update() { - if (mAirplaneModeEnabler.isAirplaneModeOn()) { - mInternetType = mWifiManager.isWifiEnabled() ? INTERNET_APM_NETWORKS : INTERNET_APM; - } else { - mInternetType = sTransportMap.get(mTransport); + @InternetType int internetType = INTERNET_NETWORKS_AVAILABLE; + if (mInternetAvailable) { + internetType = sTransportMap.get(mTransport); + } else if (mAirplaneModeEnabler.isAirplaneModeOn() + && mWifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED) { + internetType = INTERNET_OFF; } - if (mOnInternetTypeChangedListener != null) { - mOnInternetTypeChangedListener.onInternetTypeChanged(mInternetType); + mInternetType = internetType; + + if (mListener != null) { + mListener.onInternetTypeChanged(mInternetType); } } @@ -199,4 +263,19 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange public @InternetType int getInternetType() { return mInternetType; } + + /** + * Return ture when the airplane mode is on. + */ + public boolean isAirplaneModeOn() { + return mAirplaneModeEnabler.isAirplaneModeOn(); + } + + /** + * Return ture when the APM networks is available. + */ + public boolean isApmNetworksAvailable() { + return mAirplaneModeEnabler.isAirplaneModeOn() + && (mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED); + } } diff --git a/src/com/android/settings/network/telephony/NetworkProviderWorker.java b/src/com/android/settings/network/telephony/NetworkProviderWorker.java index 50c56cf659f..9e23c7ce2dc 100644 --- a/src/com/android/settings/network/telephony/NetworkProviderWorker.java +++ b/src/com/android/settings/network/telephony/NetworkProviderWorker.java @@ -49,9 +49,8 @@ import java.util.Collections; */ public class NetworkProviderWorker extends WifiScanWorker implements SignalStrengthListener.Callback, MobileDataEnabledListener.Client, - DataConnectivityListener.Client, - SubscriptionsChangeListener.SubscriptionsChangeListenerClient, - InternetUpdater.OnInternetTypeChangedListener { + DataConnectivityListener.Client, InternetUpdater.InternetChangeListener, + SubscriptionsChangeListener.SubscriptionsChangeListenerClient { private static final String TAG = "NetworkProviderWorker"; private static final int PROVIDER_MODEL_DEFAULT_EXPANDED_ROW_COUNT = 4; private DataContentObserver mMobileDataObserver; diff --git a/src/com/android/settings/panel/InternetConnectivityPanel.java b/src/com/android/settings/panel/InternetConnectivityPanel.java index c90d22b35de..bdaa8492230 100644 --- a/src/com/android/settings/panel/InternetConnectivityPanel.java +++ b/src/com/android/settings/panel/InternetConnectivityPanel.java @@ -19,8 +19,6 @@ package com.android.settings.panel; import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE; import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; -import static com.android.settings.network.InternetUpdater.INTERNET_APM; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; import static com.android.settings.network.NetworkProviderSettings.ACTION_NETWORK_PROVIDER_SETTINGS; import android.app.settings.SettingsEnums; @@ -46,14 +44,15 @@ import java.util.List; * Represents the Internet Connectivity Panel. */ public class InternetConnectivityPanel implements PanelContent, LifecycleObserver, - InternetUpdater.OnInternetTypeChangedListener { + InternetUpdater.InternetChangeListener { private final Context mContext; @VisibleForTesting boolean mIsProviderModelEnabled; private PanelContentCallback mCallback; private InternetUpdater mInternetUpdater; - private @InternetUpdater.InternetType int mInternetType; + private boolean mIsAirplaneModeOn; + private boolean mIsApmNetworksAvailable; public static InternetConnectivityPanel create(Context context) { return new InternetConnectivityPanel(context); @@ -63,7 +62,8 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve mContext = context.getApplicationContext(); mIsProviderModelEnabled = Utils.isProviderModelEnabled(mContext); mInternetUpdater = new InternetUpdater(context, null /* Lifecycle */, this); - mInternetType = mInternetUpdater.getInternetType(); + mIsAirplaneModeOn = mInternetUpdater.isAirplaneModeOn(); + mIsApmNetworksAvailable = mInternetUpdater.isApmNetworksAvailable(); } /** @OnLifecycleEvent(ON_RESUME) */ @@ -90,7 +90,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve @Override public CharSequence getTitle() { if (mIsProviderModelEnabled) { - return mContext.getText(mInternetType == INTERNET_APM_NETWORKS + return mContext.getText(mIsApmNetworksAvailable ? R.string.airplane_mode_network_panel_title : R.string.provider_internet_settings); } @@ -102,7 +102,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve */ @Override public CharSequence getSubTitle() { - if (mIsProviderModelEnabled && mInternetType == INTERNET_APM) { + if (mIsProviderModelEnabled && mIsAirplaneModeOn && !mIsApmNetworksAvailable) { return mContext.getText(R.string.condition_airplane_title); } return null; @@ -136,7 +136,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve @Override public CharSequence getCustomizedButtonTitle() { - if (mInternetType == INTERNET_APM) { + if (mIsAirplaneModeOn && !mIsApmNetworksAvailable) { return null; } return mContext.getText(R.string.settings_button); @@ -158,40 +158,43 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve } /** - * Called when internet type is changed. - * - * @param internetType the internet type + * Called when airplane mode state is changed. */ - public void onInternetTypeChanged(@InternetUpdater.InternetType int internetType) { - if (internetType == mInternetType) { + @Override + public void onAirplaneModeChanged(boolean isAirplaneModeOn) { + if (!isAirplaneModeOn) { + mIsApmNetworksAvailable = false; + } + mIsAirplaneModeOn = isAirplaneModeOn; + updatePanelTitle(); + } + + /** + * Called when airplane mode networks state is changed. + */ + @Override + public void onAirplaneModeNetworksChanged(boolean available) { + mIsApmNetworksAvailable = available; + updatePanelTitle(); + } + + private void updatePanelTitle() { + if (mCallback == null) { return; } - final boolean changeToApm = (internetType == INTERNET_APM); - final boolean changeFromApm = (mInternetType == INTERNET_APM); - final boolean changeWithApmNetworks = - (internetType == INTERNET_APM_NETWORKS || mInternetType == INTERNET_APM_NETWORKS); - mInternetType = internetType; - - if (mCallback != null) { - if (changeToApm) { - // The internet type is changed to the airplane mode. - // Title: Internet - // Sub-Title: Airplane mode is on - // Settings button: Hide - mCallback.onHeaderChanged(); - mCallback.onCustomizedButtonStateChanged(); - } else if (changeFromApm) { - // The internet type is changed from the airplane mode. - // Title: Internet - // Settings button: Show - mCallback.onTitleChanged(); - mCallback.onCustomizedButtonStateChanged(); - } else if (changeWithApmNetworks) { - // The internet type is changed with the airplane mode networks. - // Title: Airplane mode networks / Internet - mCallback.onTitleChanged(); - } + if (mIsAirplaneModeOn && !mIsApmNetworksAvailable) { + // When the airplane mode is on. + // Title: Internet + // Sub-Title: Airplane mode is on + // Settings button: Hide + mCallback.onHeaderChanged(); + } else { + // Except for airplane mode on. + // Title: Airplane mode networks / Internet + // Settings button: Show + mCallback.onTitleChanged(); } + mCallback.onCustomizedButtonStateChanged(); } } diff --git a/tests/unit/src/com/android/settings/network/ConnectedEthernetNetworkControllerTest.java b/tests/unit/src/com/android/settings/network/ConnectedEthernetNetworkControllerTest.java index b5acdc5f584..5c56a45d63c 100644 --- a/tests/unit/src/com/android/settings/network/ConnectedEthernetNetworkControllerTest.java +++ b/tests/unit/src/com/android/settings/network/ConnectedEthernetNetworkControllerTest.java @@ -16,10 +16,10 @@ package com.android.settings.network; -import static com.android.settings.network.InternetUpdater.INTERNET_APM; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; import static com.android.settings.network.InternetUpdater.INTERNET_CELLULAR; import static com.android.settings.network.InternetUpdater.INTERNET_ETHERNET; +import static com.android.settings.network.InternetUpdater.INTERNET_NETWORKS_AVAILABLE; +import static com.android.settings.network.InternetUpdater.INTERNET_OFF; import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; import static com.google.common.truth.Truth.assertThat; @@ -77,15 +77,15 @@ public class ConnectedEthernetNetworkControllerTest { } @Test - public void isAvailable_internetApm_shouldBeFalse() { - mController.onInternetTypeChanged(INTERNET_APM); + public void isAvailable_internetOff_shouldBeFalse() { + mController.onInternetTypeChanged(INTERNET_OFF); assertThat(mController.isAvailable()).isFalse(); } @Test - public void isAvailable_internetApmNetworks_shouldBeFalse() { - mController.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void isAvailable_internetNetworksAvailable_shouldBeFalse() { + mController.onInternetTypeChanged(INTERNET_NETWORKS_AVAILABLE); assertThat(mController.isAvailable()).isFalse(); } diff --git a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java index ad07953b27e..60057131da3 100644 --- a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java @@ -16,7 +16,7 @@ package com.android.settings.network; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; +import static com.android.settings.network.InternetUpdater.INTERNET_NETWORKS_AVAILABLE; import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; import static com.google.common.truth.Truth.assertThat; @@ -119,37 +119,24 @@ public class InternetPreferenceControllerTest { } @Test - public void mustUseWiFiHelperSummary_internetWifi_updateSummary() { + public void onSummaryChanged_internetWifi_updateSummary() { mController.onInternetTypeChanged(INTERNET_WIFI); mController.displayPreference(mScreen); - mController.mustUseWiFiHelperSummary(true /* isWifiConnected */, TEST_SUMMARY); - - assertThat(mPreference.getSummary()).isEqualTo(TEST_SUMMARY); - - mController.mustUseWiFiHelperSummary(false /* isWifiConnected */, NOT_CONNECTED); - - assertThat(mPreference.getSummary()).isEqualTo(NOT_CONNECTED); - } - - @Test - public void mustUseWiFiHelperSummary_internetApmNetworksWifiConnected_updateSummary() { - mController.onInternetTypeChanged(INTERNET_APM_NETWORKS); - mController.displayPreference(mScreen); - - mController.mustUseWiFiHelperSummary(true /* isWifiConnected */, TEST_SUMMARY); + mController.onSummaryChanged(TEST_SUMMARY); assertThat(mPreference.getSummary()).isEqualTo(TEST_SUMMARY); } @Test - public void mustUseWiFiHelperSummary_internetApmNetworksWifiDisconnected_notUpdateSummary() { - mController.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void onSummaryChanged_internetNetworksAvailable_notUpdateSummary() { + mController.onInternetTypeChanged(INTERNET_NETWORKS_AVAILABLE); mController.displayPreference(mScreen); + mPreference.setSummary(NOT_CONNECTED); - mController.mustUseWiFiHelperSummary(false /* isWifiConnected */, NOT_CONNECTED); + mController.onSummaryChanged(TEST_SUMMARY); - assertThat(mPreference.getSummary()).isNotEqualTo(NOT_CONNECTED); + assertThat(mPreference.getSummary()).isNotEqualTo(TEST_SUMMARY); } @Test diff --git a/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java b/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java index 18998b787c3..94456fe3f1d 100644 --- a/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java +++ b/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java @@ -20,10 +20,10 @@ import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; -import static com.android.settings.network.InternetUpdater.INTERNET_APM; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; import static com.android.settings.network.InternetUpdater.INTERNET_CELLULAR; import static com.android.settings.network.InternetUpdater.INTERNET_ETHERNET; +import static com.android.settings.network.InternetUpdater.INTERNET_NETWORKS_AVAILABLE; +import static com.android.settings.network.InternetUpdater.INTERNET_OFF; import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; import static com.google.common.truth.Truth.assertThat; @@ -109,26 +109,30 @@ public class InternetUpdaterTest { @Test public void update_apmOnWifiOff_getInternetApm() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); - doReturn(false).when(mWifiManager).isWifiEnabled(); + doReturn(WifiManager.WIFI_STATE_DISABLED).when(mWifiManager).getWifiState(); + mInternetUpdater.mInternetAvailable = false; mInternetUpdater.update(); - assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_APM); + assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_OFF); } @Test - public void update_apmOnWifiOn_getInternetApmNetworks() { + public void update_apmOnWifiOnNotConnected_getInternetNetworksAvailable() { + doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); + doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState(); + mInternetUpdater.mInternetAvailable = false; + + mInternetUpdater.update(); + + assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_NETWORKS_AVAILABLE); + } + + @Test + public void update_apmOnWifiConnected_getInternetWifi() { doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); doReturn(true).when(mWifiManager).isWifiEnabled(); - - mInternetUpdater.update(); - - assertThat(mInternetUpdater.getInternetType()).isEqualTo(INTERNET_APM_NETWORKS); - } - - @Test - public void update_apmOffWifiConnected_getInternetWifi() { - doReturn(false).when(mAirplaneModeEnabler).isAirplaneModeOn(); + mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_WIFI; mInternetUpdater.update(); @@ -137,8 +141,9 @@ public class InternetUpdaterTest { } @Test - public void update_apmOffCellularConnected_getInternetCellular() { - doReturn(false).when(mAirplaneModeEnabler).isAirplaneModeOn(); + public void update_apmOnCellularConnected_getInternetCellular() { + doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); + mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_CELLULAR; mInternetUpdater.update(); @@ -147,8 +152,9 @@ public class InternetUpdaterTest { } @Test - public void update_apmOffEthernetConnected_getInternetEthernet() { - doReturn(false).when(mAirplaneModeEnabler).isAirplaneModeOn(); + public void update_apmOnEthernetConnected_getInternetEthernet() { + doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn(); + mInternetUpdater.mInternetAvailable = true; mInternetUpdater.mTransport = TRANSPORT_ETHERNET; mInternetUpdater.update(); diff --git a/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java b/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java index a4d4ad1b916..4b4ec32681c 100644 --- a/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java +++ b/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java @@ -16,12 +16,6 @@ package com.android.settings.panel; -import static com.android.settings.network.InternetUpdater.INTERNET_APM; -import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; -import static com.android.settings.network.InternetUpdater.INTERNET_CELLULAR; -import static com.android.settings.network.InternetUpdater.INTERNET_ETHERNET; -import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; - import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.clearInvocations; @@ -78,79 +72,70 @@ public class InternetConnectivityPanelTest { } @Test - public void getTitle_internetApmNetworks_shouldBeApmNetworks() { - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void getTitle_apmOnApmNetworksOff_shouldBeInternet() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(false); + + assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); + } + + @Test + public void getTitle_apmOnApmNetworksOn_shouldBeApmNetworks() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(true); assertThat(mPanel.getTitle()).isEqualTo(TITLE_APM_NETWORKS); } @Test public void getTitle_notInternetApmNetworks_shouldBeInternet() { - mPanel.onInternetTypeChanged(INTERNET_APM); - - assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); - - mPanel.onInternetTypeChanged(INTERNET_WIFI); - - assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); - - mPanel.onInternetTypeChanged(INTERNET_CELLULAR); - - assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); - - mPanel.onInternetTypeChanged(INTERNET_ETHERNET); + mPanel.onAirplaneModeNetworksChanged(false); assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); } @Test - public void getSubTitle_internetApm_shouldBeApmIsOn() { - mPanel.onInternetTypeChanged(INTERNET_APM); + public void getSubTitle_apmOnApmNetworksOff_shouldBeApmIsOn() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(false); assertThat(mPanel.getSubTitle()).isEqualTo(SUBTITLE_APM_IS_ON); } @Test - public void getSubTitle_notinternetApm_shouldBeNull() { - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); - - assertThat(mPanel.getSubTitle()).isNull(); - - mPanel.onInternetTypeChanged(INTERNET_WIFI); - - assertThat(mPanel.getSubTitle()).isNull(); - - mPanel.onInternetTypeChanged(INTERNET_CELLULAR); - - assertThat(mPanel.getSubTitle()).isNull(); - - mPanel.onInternetTypeChanged(INTERNET_ETHERNET); + public void getSubTitle_apmOnApmNetworksOn_shouldBeNull() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(true); assertThat(mPanel.getSubTitle()).isNull(); } @Test - public void getCustomizedButtonTitle_internetApm_shouldBeNull() { - mPanel.onInternetTypeChanged(INTERNET_APM); + public void getSubTitle_apmOff_shouldBeNull() { + mPanel.onAirplaneModeChanged(false); + + assertThat(mPanel.getSubTitle()).isNull(); + } + + @Test + public void getCustomizedButtonTitle_apmOnApmNetworksOff_shouldBeNull() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(false); assertThat(mPanel.getCustomizedButtonTitle()).isNull(); } @Test - public void getCustomizedButtonTitle_notInternetApm_shouldBeSettings() { - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void getCustomizedButtonTitle_apmOnApmNetworksOn_shouldBeSettings() { + mPanel.onAirplaneModeChanged(true); + mPanel.onAirplaneModeNetworksChanged(true); assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); + } - mPanel.onInternetTypeChanged(INTERNET_WIFI); - - assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); - - mPanel.onInternetTypeChanged(INTERNET_CELLULAR); - - assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); - - mPanel.onInternetTypeChanged(INTERNET_ETHERNET); + @Test + public void getCustomizedButtonTitle_apmOff_shouldBeSettings() { + mPanel.onAirplaneModeChanged(false); assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); } @@ -181,44 +166,46 @@ public class InternetConnectivityPanelTest { } @Test - public void onInternetTypeChanged_internetTypeChangedToApm_changeHeaderAndHideSettings() { - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void onAirplaneModeOn_apmNetworksOff_changeHeaderAndHideSettings() { + mPanel.onAirplaneModeNetworksChanged(false); clearInvocations(mPanelContentCallback); - mPanel.onInternetTypeChanged(INTERNET_APM); + mPanel.onAirplaneModeChanged(true); verify(mPanelContentCallback).onHeaderChanged(); verify(mPanelContentCallback).onCustomizedButtonStateChanged(); } @Test - public void onInternetTypeChanged_internetTypeChangedFomApm_changeTitleAndShowSettings() { - mPanel.onInternetTypeChanged(INTERNET_APM); + public void onAirplaneModeOn_apmNetworksOn_changeTitleAndShowSettings() { + mPanel.onAirplaneModeNetworksChanged(true); clearInvocations(mPanelContentCallback); - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + mPanel.onAirplaneModeChanged(true); verify(mPanelContentCallback).onTitleChanged(); verify(mPanelContentCallback).onCustomizedButtonStateChanged(); } @Test - public void onInternetTypeChanged_internetTypeChangedToApmNetworks_changeTitle() { - mPanel.onInternetTypeChanged(INTERNET_WIFI); + public void onAirplaneModeNetworksOn_apmOff_changeTitleAndShowSettings() { + mPanel.onAirplaneModeChanged(false); clearInvocations(mPanelContentCallback); - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + mPanel.onAirplaneModeNetworksChanged(true); verify(mPanelContentCallback).onTitleChanged(); + verify(mPanelContentCallback).onCustomizedButtonStateChanged(); } @Test - public void onInternetTypeChanged_internetTypeChangedFromApmNetworks_changeTitle() { - mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + public void onAirplaneModeNetworksOff_apmOff_changeTitleAndShowSettings() { + mPanel.onAirplaneModeChanged(false); clearInvocations(mPanelContentCallback); - mPanel.onInternetTypeChanged(INTERNET_WIFI); + mPanel.onAirplaneModeNetworksChanged(false); verify(mPanelContentCallback).onTitleChanged(); + verify(mPanelContentCallback).onCustomizedButtonStateChanged(); } }