Merge "[Provider Model] Update Wi-Fi SSID in APM networks type" into sc-dev
diff --git a/src/com/android/settings/network/InternetPreferenceController.java b/src/com/android/settings/network/InternetPreferenceController.java
index 25ec912..24fe284 100644
--- a/src/com/android/settings/network/InternetPreferenceController.java
+++ b/src/com/android/settings/network/InternetPreferenceController.java
@@ -103,6 +103,7 @@
         if (mPreference == null) {
             return;
         }
+
         final @IdRes int icon = sIconMap.get(mInternetType);
         if (icon != 0) {
             final Drawable drawable = mContext.getDrawable(icon);
@@ -112,10 +113,17 @@
                 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 @@
 
     @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 c559e7d..79bab36 100644
--- a/src/com/android/settings/wifi/WifiSummaryUpdater.java
+++ b/src/com/android/settings/wifi/WifiSummaryUpdater.java
@@ -98,4 +98,11 @@
                 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 be8bf27..ad07953 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 @@
 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 @@
     }
 
     @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