Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a0ef569 authored by Weng Su's avatar Weng Su
Browse files

[Provider Model] Adjust slice title and subtitle

- Show "Airplane mode" title when airplane mode is enabled

- Remove "Airplane mode is on" subtitle

- Show "Wi-Fi is turned on" subtitle when both airplane mode and Wi-Fi
is enabled

- Remove the function related to isApmNetworksAvailable()

- Screenshot:
  https://screenshot.googleplex.com/6X9nzmXRCUfw4Lp
  https://screenshot.googleplex.com/6jQryMjU2yDDpmM

Bug: 181858434
Test: manual test
atest -c InternetConnectivityPanelTest \
         InternetPreferenceControllerTest \
         InternetUpdaterTest

Change-Id: I84e5d4c60ed91d58443b27c35286a84bf72ac173
parent 38e19abd
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -12735,12 +12735,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] -->
+0 −6
Original line number Diff line number Diff line
@@ -124,12 +124,6 @@ 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);
+7 −9
Original line number Diff line number Diff line
@@ -73,9 +73,9 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange
        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 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange
        @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 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange
    }

    /**
     * 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();
    }
}
+16 −26
Original line number Diff line number Diff line
@@ -50,9 +50,8 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
    @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 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
        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 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
    @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 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
     */
    @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 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve

    @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 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
     */
    @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 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
            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();
+87 −51
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.panel;
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.core.app.ApplicationProvider;
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 class InternetConnectivityPanelTest {

    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 class InternetConnectivityPanelTest {
    public final MockitoRule mMocks = MockitoJUnit.rule();
    @Mock
    PanelContentCallback mPanelContentCallback;
    @Mock
    InternetUpdater mInternetUpdater;

    private Context mContext;
    private InternetConnectivityPanel mPanel;
@@ -69,73 +73,65 @@ public class InternetConnectivityPanelTest {
        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);

        assertThat(mPanel.getTitle()).isEqualTo(TITLE_APM_NETWORKS);
    }

    @Test
    public void getTitle_notInternetApmNetworks_shouldBeInternet() {
        mPanel.onAirplaneModeNetworksChanged(false);
    public void getTitle_apmOn_shouldBeApm() {
        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();

        assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET);
        assertThat(mPanel.getTitle()).isEqualTo(TITLE_APM);
    }

    @Test
    public void getSubTitle_apmOnApmNetworksOff_shouldBeApmIsOn() {
        mPanel.onAirplaneModeChanged(true);
        mPanel.onAirplaneModeNetworksChanged(false);
    public void getSubTitle_apmOff_shouldBeNull() {
        doReturn(false).when(mInternetUpdater).isAirplaneModeOn();

        assertThat(mPanel.getSubTitle()).isEqualTo(SUBTITLE_APM_IS_ON);
        assertThat(mPanel.getSubTitle()).isNull();
    }

    @Test
    public void getSubTitle_apmOnApmNetworksOn_shouldBeNull() {
        mPanel.onAirplaneModeChanged(true);
        mPanel.onAirplaneModeNetworksChanged(true);
    public void getSubTitle_apmOnWifiOff_shouldBeNull() {
        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
        doReturn(false).when(mInternetUpdater).isWifiEnabled();

        assertThat(mPanel.getSubTitle()).isNull();
    }

    @Test
    public void getSubTitle_apmOff_shouldBeNull() {
        mPanel.onAirplaneModeChanged(false);
    public void getSubTitle_apmOnWifiOn_shouldWifiIsTurnedOn() {
        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
        doReturn(true).when(mInternetUpdater).isWifiEnabled();

        assertThat(mPanel.getSubTitle()).isNull();
        assertThat(mPanel.getSubTitle()).isEqualTo(SUBTITLE_WIFI_IS_TURNED_ON);
    }

    @Test
    public void getCustomizedButtonTitle_apmOnApmNetworksOff_shouldBeNull() {
        mPanel.onAirplaneModeChanged(true);
        mPanel.onAirplaneModeNetworksChanged(false);
    public void getCustomizedButtonTitle_apmOff_shouldBeSettings() {
        doReturn(false).when(mInternetUpdater).isAirplaneModeOn();

        assertThat(mPanel.getCustomizedButtonTitle()).isNull();
        assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS);
    }

    @Test
    public void getCustomizedButtonTitle_apmOnApmNetworksOn_shouldBeSettings() {
        mPanel.onAirplaneModeChanged(true);
        mPanel.onAirplaneModeNetworksChanged(true);
    public void getCustomizedButtonTitle_apmOnWifiOff_shouldBeNull() {
        doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
        doReturn(false).when(mInternetUpdater).isWifiEnabled();

        assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS);
        assertThat(mPanel.getCustomizedButtonTitle()).isNull();
    }

    @Test
    public void getCustomizedButtonTitle_apmOff_shouldBeSettings() {
        mPanel.onAirplaneModeChanged(false);
    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 @@ public class InternetConnectivityPanelTest {
    }

    @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();
    }
}