diff --git a/src/com/android/settings/network/InternetPreferenceController.java b/src/com/android/settings/network/InternetPreferenceController.java index 25ec9123bce..24fe284b2e4 100644 --- a/src/com/android/settings/network/InternetPreferenceController.java +++ b/src/com/android/settings/network/InternetPreferenceController.java @@ -103,6 +103,7 @@ public class InternetPreferenceController extends AbstractPreferenceController i if (mPreference == null) { return; } + final @IdRes int icon = sIconMap.get(mInternetType); if (icon != 0) { final Drawable drawable = mContext.getDrawable(icon); @@ -112,10 +113,17 @@ public class InternetPreferenceController extends AbstractPreferenceController i mPreference.setIcon(drawable); } } + + if (mustUseWiFiHelperSummary(mSummaryHelper.isWifiConnected(), + mSummaryHelper.getSummary())) { + return; + } + if (mInternetType == INTERNET_CELLULAR) { updateCellularSummary(); return; } + final @IdRes int summary = sSummaryMap.get(mInternetType); if (summary != 0) { mPreference.setSummary(summary); @@ -161,9 +169,17 @@ public class InternetPreferenceController extends AbstractPreferenceController i @Override public void onSummaryChanged(String summary) { - if (mPreference != null && mInternetType == INTERNET_WIFI) { + mustUseWiFiHelperSummary(mSummaryHelper.isWifiConnected(), summary); + } + + @VisibleForTesting + boolean mustUseWiFiHelperSummary(boolean isWifiConnected, String summary) { + final boolean needUpdate = (mInternetType == INTERNET_WIFI) + || (mInternetType == INTERNET_APM_NETWORKS && isWifiConnected); + if (needUpdate && mPreference != null) { mPreference.setSummary(summary); } + return needUpdate; } @VisibleForTesting diff --git a/src/com/android/settings/wifi/WifiSummaryUpdater.java b/src/com/android/settings/wifi/WifiSummaryUpdater.java index c559e7dcea3..79bab36054a 100644 --- a/src/com/android/settings/wifi/WifiSummaryUpdater.java +++ b/src/com/android/settings/wifi/WifiSummaryUpdater.java @@ -98,4 +98,11 @@ public final class WifiSummaryUpdater extends SummaryUpdater { com.android.settingslib.R.string.preference_summary_default_combination, ssid, mWifiTracker.statusLabel); } + + /** + * return true if Wi-Fi connected. + */ + public boolean isWifiConnected() { + return mWifiTracker.connected; + } } diff --git a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java index be8bf27f0e7..ad07953b27e 100644 --- a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java @@ -16,6 +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_WIFI; import static com.google.common.truth.Truth.assertThat; @@ -57,6 +58,7 @@ import org.mockito.junit.MockitoRule; public class InternetPreferenceControllerTest { private static final String TEST_SUMMARY = "test summary"; + private static final String NOT_CONNECTED = "Not connected"; @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); @@ -117,13 +119,37 @@ public class InternetPreferenceControllerTest { } @Test - public void onSummaryChanged_shouldUpdatePreferenceSummary() { + public void mustUseWiFiHelperSummary_internetWifi_updateSummary() { mController.onInternetTypeChanged(INTERNET_WIFI); mController.displayPreference(mScreen); - mController.onSummaryChanged(TEST_SUMMARY); + 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); + + assertThat(mPreference.getSummary()).isEqualTo(TEST_SUMMARY); + } + + @Test + public void mustUseWiFiHelperSummary_internetApmNetworksWifiDisconnected_notUpdateSummary() { + mController.onInternetTypeChanged(INTERNET_APM_NETWORKS); + mController.displayPreference(mScreen); + + mController.mustUseWiFiHelperSummary(false /* isWifiConnected */, NOT_CONNECTED); + + assertThat(mPreference.getSummary()).isNotEqualTo(NOT_CONNECTED); } @Test