Merge "[Provider Model] Adjust slice title and subtitle" into sc-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2f64337..7ad7fe1 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -12727,12 +12727,10 @@
     <string name="resetting_internet_text">Resetting your internet\u2026</string>
     <!-- Menu option for data connectivity recovery for all requested technologies. [CHAR_LIMIT=NONE] -->
     <string name="fix_connectivity">Fix connectivity</string>
-    <!-- Summary for airplane mode networks available. [CHAR LIMIT=60] -->
-    <string name="airplane_mode_network_available">Airplane mode networks available</string>
     <!-- Summary for warning to disconnect ethernet first then switch to other networks. [CHAR LIMIT=60] -->
     <string name="to_switch_networks_disconnect_ethernet">To switch networks, disconnect ethernet</string>
-    <!-- Title for airplane mode network panel. [CHAR LIMIT=60] -->
-    <string name="airplane_mode_network_panel_title">Airplane mode networks</string>
+    <!-- Panel subtitle for Wi-Fi turned on. [CHAR LIMIT=60] -->
+    <string name="wifi_is_turned_on_subtitle">Wi\u2011Fi is turned on</string>
 
     <!-- Summary text separator for preferences including a short description
          (eg. "Connected / 5G"). [CHAR LIMIT=50] -->
diff --git a/src/com/android/settings/network/InternetPreferenceController.java b/src/com/android/settings/network/InternetPreferenceController.java
index 2fe9c0a..f64ed30 100644
--- a/src/com/android/settings/network/InternetPreferenceController.java
+++ b/src/com/android/settings/network/InternetPreferenceController.java
@@ -124,12 +124,6 @@
             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);
diff --git a/src/com/android/settings/network/InternetUpdater.java b/src/com/android/settings/network/InternetUpdater.java
index 3bd1e7b..2f704e7 100644
--- a/src/com/android/settings/network/InternetUpdater.java
+++ b/src/com/android/settings/network/InternetUpdater.java
@@ -73,9 +73,9 @@
         default void onAirplaneModeChanged(boolean isAirplaneModeOn) {};
 
         /**
-         * Called when airplane mode networks state is changed.
+         * Called when Wi-Fi enabled is changed.
          */
-        default void onAirplaneModeNetworksChanged(boolean available) {};
+        default void onWifiEnabledChanged(boolean enabled) {};
     }
 
     /**
@@ -157,9 +157,8 @@
         @Override
         public void onReceive(Context context, Intent intent) {
             fetchActiveNetwork();
-            if (mListener != null && mAirplaneModeEnabler.isAirplaneModeOn()) {
-                mListener.onAirplaneModeNetworksChanged(
-                        mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED);
+            if (mListener != null) {
+                mListener.onWifiEnabledChanged(mWifiManager.isWifiEnabled());
             }
         }
     };
@@ -272,10 +271,9 @@
     }
 
     /**
-     * Return ture when the APM networks is available.
+     * Return ture when the Wi-Fi is enabled.
      */
-    public boolean isApmNetworksAvailable() {
-        return mAirplaneModeEnabler.isAirplaneModeOn()
-                && (mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED);
+    public boolean isWifiEnabled() {
+        return mWifiManager.isWifiEnabled();
     }
 }
diff --git a/src/com/android/settings/panel/InternetConnectivityPanel.java b/src/com/android/settings/panel/InternetConnectivityPanel.java
index 46843b0..4fda0a4 100644
--- a/src/com/android/settings/panel/InternetConnectivityPanel.java
+++ b/src/com/android/settings/panel/InternetConnectivityPanel.java
@@ -50,9 +50,8 @@
     @VisibleForTesting
     boolean mIsProviderModelEnabled;
     private PanelContentCallback mCallback;
-    private InternetUpdater mInternetUpdater;
-    private boolean mIsAirplaneModeOn;
-    private boolean mIsApmNetworksAvailable;
+    @VisibleForTesting
+    InternetUpdater mInternetUpdater;
 
     public static InternetConnectivityPanel create(Context context) {
         return new InternetConnectivityPanel(context);
@@ -62,8 +61,6 @@
         mContext = context.getApplicationContext();
         mIsProviderModelEnabled = Utils.isProviderModelEnabled(mContext);
         mInternetUpdater = new InternetUpdater(context, null /* Lifecycle */, this);
-        mIsAirplaneModeOn = mInternetUpdater.isAirplaneModeOn();
-        mIsApmNetworksAvailable = mInternetUpdater.isApmNetworksAvailable();
     }
 
     /** @OnLifecycleEvent(ON_RESUME) */
@@ -90,9 +87,8 @@
     @Override
     public CharSequence getTitle() {
         if (mIsProviderModelEnabled) {
-            return mContext.getText(mIsApmNetworksAvailable
-                    ? R.string.airplane_mode_network_panel_title
-                    : R.string.provider_internet_settings);
+            return mContext.getText(mInternetUpdater.isAirplaneModeOn()
+                    ? R.string.airplane_mode : R.string.provider_internet_settings);
         }
         return mContext.getText(R.string.internet_connectivity_panel_title);
     }
@@ -102,8 +98,9 @@
      */
     @Override
     public CharSequence getSubTitle() {
-        if (mIsProviderModelEnabled && mIsAirplaneModeOn && !mIsApmNetworksAvailable) {
-            return mContext.getText(R.string.condition_airplane_title);
+        if (mIsProviderModelEnabled && mInternetUpdater.isAirplaneModeOn()
+                && mInternetUpdater.isWifiEnabled()) {
+            return mContext.getText(R.string.wifi_is_turned_on_subtitle);
         }
         return null;
     }
@@ -136,7 +133,7 @@
 
     @Override
     public CharSequence getCustomizedButtonTitle() {
-        if (mIsAirplaneModeOn && !mIsApmNetworksAvailable) {
+        if (mInternetUpdater.isAirplaneModeOn() && !mInternetUpdater.isWifiEnabled()) {
             return null;
         }
         return mContext.getText(R.string.settings_button);
@@ -162,19 +159,14 @@
      */
     @Override
     public void onAirplaneModeChanged(boolean isAirplaneModeOn) {
-        if (!isAirplaneModeOn) {
-            mIsApmNetworksAvailable = false;
-        }
-        mIsAirplaneModeOn = isAirplaneModeOn;
         updatePanelTitle();
     }
 
     /**
-     * Called when airplane mode networks state is changed.
+     * Called when Wi-Fi enabled is changed.
      */
     @Override
-    public void onAirplaneModeNetworksChanged(boolean available) {
-        mIsApmNetworksAvailable = available;
+    public void onWifiEnabledChanged(boolean enabled) {
         updatePanelTitle();
     }
 
@@ -183,16 +175,14 @@
             return;
         }
 
-        if (mIsAirplaneModeOn && !mIsApmNetworksAvailable) {
-            // When the airplane mode is on.
-            //   Title: Internet
-            //   Sub-Title: Airplane mode is on
-            //   Settings button: Hide
+        if (mInternetUpdater.isAirplaneModeOn() && mInternetUpdater.isWifiEnabled()) {
+            // When the airplane mode is on and Wi-Fi is enabled.
+            //   Title: Airplane mode
+            //   Sub-Title: Wi-Fi is turned on
             mCallback.onHeaderChanged();
         } else {
-            // Except for airplane mode on.
-            //   Title: Airplane mode networks / Internet
-            //   Settings button: Show
+            // Other situations.
+            //   Title: Airplane mode / Internet
             mCallback.onTitleChanged();
         }
         mCallback.onCustomizedButtonStateChanged();
diff --git a/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java b/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java
index 5d95d9a..ba5ee8e 100644
--- a/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java
+++ b/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java
@@ -19,6 +19,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.Mockito.clearInvocations;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 
@@ -29,6 +30,7 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.network.AirplaneModePreferenceController;
+import com.android.settings.network.InternetUpdater;
 import com.android.settings.slices.CustomSliceRegistry;
 import com.android.settings.testutils.ResourcesUtils;
 
@@ -47,10 +49,10 @@
 
     public static final String TITLE_INTERNET = ResourcesUtils.getResourcesString(
             ApplicationProvider.getApplicationContext(), "provider_internet_settings");
-    public static final String TITLE_APM_NETWORKS = ResourcesUtils.getResourcesString(
-            ApplicationProvider.getApplicationContext(), "airplane_mode_network_panel_title");
-    public static final String SUBTITLE_APM_IS_ON = ResourcesUtils.getResourcesString(
-            ApplicationProvider.getApplicationContext(), "condition_airplane_title");
+    public static final String TITLE_APM = ResourcesUtils.getResourcesString(
+            ApplicationProvider.getApplicationContext(), "airplane_mode");
+    public static final String SUBTITLE_WIFI_IS_TURNED_ON = ResourcesUtils.getResourcesString(
+            ApplicationProvider.getApplicationContext(), "wifi_is_turned_on_subtitle");
     public static final String BUTTON_SETTINGS = ResourcesUtils.getResourcesString(
             ApplicationProvider.getApplicationContext(), "settings_button");
 
@@ -58,6 +60,8 @@
     public final MockitoRule mMocks = MockitoJUnit.rule();
     @Mock
     PanelContentCallback mPanelContentCallback;
+    @Mock
+    InternetUpdater mInternetUpdater;
 
     private Context mContext;
     private InternetConnectivityPanel mPanel;
@@ -69,73 +73,65 @@
         mPanel = InternetConnectivityPanel.create(mContext);
         mPanel.registerCallback(mPanelContentCallback);
         mPanel.mIsProviderModelEnabled = true;
+        mPanel.mInternetUpdater = mInternetUpdater;
     }
 
     @Test
-    public void getTitle_apmOnApmNetworksOff_shouldBeInternet() {
-        mPanel.onAirplaneModeChanged(true);
-        mPanel.onAirplaneModeNetworksChanged(false);
+    public void getTitle_apmOff_shouldBeInternet() {
+        doReturn(false).when(mInternetUpdater).isAirplaneModeOn();
 
         assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET);
     }
 
     @Test
-    public void getTitle_apmOnApmNetworksOn_shouldBeApmNetworks() {
-        mPanel.onAirplaneModeChanged(true);
-        mPanel.onAirplaneModeNetworksChanged(true);
+    public void getTitle_apmOn_shouldBeApm() {
+        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
 
-        assertThat(mPanel.getTitle()).isEqualTo(TITLE_APM_NETWORKS);
-    }
-
-    @Test
-    public void getTitle_notInternetApmNetworks_shouldBeInternet() {
-        mPanel.onAirplaneModeNetworksChanged(false);
-
-        assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET);
-    }
-
-    @Test
-    public void getSubTitle_apmOnApmNetworksOff_shouldBeApmIsOn() {
-        mPanel.onAirplaneModeChanged(true);
-        mPanel.onAirplaneModeNetworksChanged(false);
-
-        assertThat(mPanel.getSubTitle()).isEqualTo(SUBTITLE_APM_IS_ON);
-    }
-
-    @Test
-    public void getSubTitle_apmOnApmNetworksOn_shouldBeNull() {
-        mPanel.onAirplaneModeChanged(true);
-        mPanel.onAirplaneModeNetworksChanged(true);
-
-        assertThat(mPanel.getSubTitle()).isNull();
+        assertThat(mPanel.getTitle()).isEqualTo(TITLE_APM);
     }
 
     @Test
     public void getSubTitle_apmOff_shouldBeNull() {
-        mPanel.onAirplaneModeChanged(false);
+        doReturn(false).when(mInternetUpdater).isAirplaneModeOn();
 
         assertThat(mPanel.getSubTitle()).isNull();
     }
 
     @Test
-    public void getCustomizedButtonTitle_apmOnApmNetworksOff_shouldBeNull() {
-        mPanel.onAirplaneModeChanged(true);
-        mPanel.onAirplaneModeNetworksChanged(false);
+    public void getSubTitle_apmOnWifiOff_shouldBeNull() {
+        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
+        doReturn(false).when(mInternetUpdater).isWifiEnabled();
 
-        assertThat(mPanel.getCustomizedButtonTitle()).isNull();
+        assertThat(mPanel.getSubTitle()).isNull();
     }
 
     @Test
-    public void getCustomizedButtonTitle_apmOnApmNetworksOn_shouldBeSettings() {
-        mPanel.onAirplaneModeChanged(true);
-        mPanel.onAirplaneModeNetworksChanged(true);
+    public void getSubTitle_apmOnWifiOn_shouldWifiIsTurnedOn() {
+        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
+        doReturn(true).when(mInternetUpdater).isWifiEnabled();
+
+        assertThat(mPanel.getSubTitle()).isEqualTo(SUBTITLE_WIFI_IS_TURNED_ON);
+    }
+
+    @Test
+    public void getCustomizedButtonTitle_apmOff_shouldBeSettings() {
+        doReturn(false).when(mInternetUpdater).isAirplaneModeOn();
 
         assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS);
     }
 
     @Test
-    public void getCustomizedButtonTitle_apmOff_shouldBeSettings() {
-        mPanel.onAirplaneModeChanged(false);
+    public void getCustomizedButtonTitle_apmOnWifiOff_shouldBeNull() {
+        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
+        doReturn(false).when(mInternetUpdater).isWifiEnabled();
+
+        assertThat(mPanel.getCustomizedButtonTitle()).isNull();
+    }
+
+    @Test
+    public void getCustomizedButtonTitle_apmOnWifiOn_shouldBeSettings() {
+        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
+        doReturn(true).when(mInternetUpdater).isWifiEnabled();
 
         assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS);
     }
@@ -166,46 +162,86 @@
     }
 
     @Test
-    public void onAirplaneModeOn_apmNetworksOff_changeHeaderAndHideSettings() {
-        mPanel.onAirplaneModeNetworksChanged(false);
+    public void onAirplaneModeOn_apmOff_onTitleChanged() {
+        doReturn(false).when(mInternetUpdater).isAirplaneModeOn();
+        clearInvocations(mPanelContentCallback);
+
+        mPanel.onAirplaneModeChanged(false);
+
+        verify(mPanelContentCallback).onTitleChanged();
+    }
+
+    @Test
+    public void onAirplaneModeOn_apmOnWifiOff_onTitleChanged() {
+        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
+        doReturn(false).when(mInternetUpdater).isWifiEnabled();
+        clearInvocations(mPanelContentCallback);
+
+        mPanel.onAirplaneModeChanged(true);
+
+        verify(mPanelContentCallback).onTitleChanged();
+    }
+
+    @Test
+    public void onAirplaneModeOn_apmOnWifiOn_onHeaderChanged() {
+        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
+        doReturn(true).when(mInternetUpdater).isWifiEnabled();
         clearInvocations(mPanelContentCallback);
 
         mPanel.onAirplaneModeChanged(true);
 
         verify(mPanelContentCallback).onHeaderChanged();
-        verify(mPanelContentCallback).onCustomizedButtonStateChanged();
     }
 
     @Test
-    public void onAirplaneModeOn_apmNetworksOn_changeTitleAndShowSettings() {
-        mPanel.onAirplaneModeNetworksChanged(true);
+    public void onAirplaneModeOn_onCustomizedButtonStateChanged() {
+        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
         clearInvocations(mPanelContentCallback);
 
         mPanel.onAirplaneModeChanged(true);
 
-        verify(mPanelContentCallback).onTitleChanged();
         verify(mPanelContentCallback).onCustomizedButtonStateChanged();
     }
 
     @Test
-    public void onAirplaneModeNetworksOn_apmOff_changeTitleAndShowSettings() {
-        mPanel.onAirplaneModeChanged(false);
+    public void onWifiEnabledChanged_apmOff_onTitleChanged() {
+        doReturn(false).when(mInternetUpdater).isAirplaneModeOn();
         clearInvocations(mPanelContentCallback);
 
-        mPanel.onAirplaneModeNetworksChanged(true);
+        mPanel.onWifiEnabledChanged(false);
 
         verify(mPanelContentCallback).onTitleChanged();
-        verify(mPanelContentCallback).onCustomizedButtonStateChanged();
     }
 
     @Test
-    public void onAirplaneModeNetworksOff_apmOff_changeTitleAndShowSettings() {
-        mPanel.onAirplaneModeChanged(false);
+    public void onWifiEnabledChanged_apmOnWifiOff_onTitleChanged() {
+        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
+        doReturn(false).when(mInternetUpdater).isWifiEnabled();
         clearInvocations(mPanelContentCallback);
 
-        mPanel.onAirplaneModeNetworksChanged(false);
+        mPanel.onWifiEnabledChanged(true);
 
         verify(mPanelContentCallback).onTitleChanged();
+    }
+
+    @Test
+    public void onWifiEnabledChanged_apmOnWifiOn_onHeaderChanged() {
+        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
+        doReturn(true).when(mInternetUpdater).isWifiEnabled();
+        clearInvocations(mPanelContentCallback);
+
+        mPanel.onWifiEnabledChanged(true);
+
+        verify(mPanelContentCallback).onHeaderChanged();
+    }
+
+    @Test
+    public void onWifiEnabledChanged_onCustomizedButtonStateChanged() {
+        doReturn(true).when(mInternetUpdater).isWifiEnabled();
+        clearInvocations(mPanelContentCallback);
+
+        mPanel.onWifiEnabledChanged(true);
+
         verify(mPanelContentCallback).onCustomizedButtonStateChanged();
     }
 }