[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
This commit is contained in:
Weng Su
2021-03-10 22:28:26 +08:00
parent 38e19abdf7
commit 6a0ef56917
5 changed files with 118 additions and 102 deletions

View File

@@ -12735,12 +12735,10 @@
<string name="resetting_internet_text">Resetting your internet\u2026</string> <string name="resetting_internet_text">Resetting your internet\u2026</string>
<!-- Menu option for data connectivity recovery for all requested technologies. [CHAR_LIMIT=NONE] --> <!-- Menu option for data connectivity recovery for all requested technologies. [CHAR_LIMIT=NONE] -->
<string name="fix_connectivity">Fix connectivity</string> <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] --> <!-- 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> <string name="to_switch_networks_disconnect_ethernet">To switch networks, disconnect ethernet</string>
<!-- Title for airplane mode network panel. [CHAR LIMIT=60] --> <!-- Panel subtitle for Wi-Fi turned on. [CHAR LIMIT=60] -->
<string name="airplane_mode_network_panel_title">Airplane mode networks</string> <string name="wifi_is_turned_on_subtitle">Wi\u2011Fi is turned on</string>
<!-- Summary text separator for preferences including a short description <!-- Summary text separator for preferences including a short description
(eg. "Connected / 5G"). [CHAR LIMIT=50] --> (eg. "Connected / 5G"). [CHAR LIMIT=50] -->

View File

@@ -124,12 +124,6 @@ public class InternetPreferenceController extends AbstractPreferenceController i
return; return;
} }
if (mInternetType == INTERNET_NETWORKS_AVAILABLE
&& mInternetUpdater.isApmNetworksAvailable()) {
mPreference.setSummary(R.string.airplane_mode_network_available);
return;
}
final @IdRes int summary = sSummaryMap.get(mInternetType); final @IdRes int summary = sSummaryMap.get(mInternetType);
if (summary != 0) { if (summary != 0) {
mPreference.setSummary(summary); mPreference.setSummary(summary);

View File

@@ -73,9 +73,9 @@ public class InternetUpdater implements AirplaneModeEnabler.OnAirplaneModeChange
default void onAirplaneModeChanged(boolean isAirplaneModeOn) {}; 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 @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
fetchActiveNetwork(); fetchActiveNetwork();
if (mListener != null && mAirplaneModeEnabler.isAirplaneModeOn()) { if (mListener != null) {
mListener.onAirplaneModeNetworksChanged( mListener.onWifiEnabledChanged(mWifiManager.isWifiEnabled());
mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED);
} }
} }
}; };
@@ -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() { public boolean isWifiEnabled() {
return mAirplaneModeEnabler.isAirplaneModeOn() return mWifiManager.isWifiEnabled();
&& (mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED);
} }
} }

View File

@@ -50,9 +50,8 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
@VisibleForTesting @VisibleForTesting
boolean mIsProviderModelEnabled; boolean mIsProviderModelEnabled;
private PanelContentCallback mCallback; private PanelContentCallback mCallback;
private InternetUpdater mInternetUpdater; @VisibleForTesting
private boolean mIsAirplaneModeOn; InternetUpdater mInternetUpdater;
private boolean mIsApmNetworksAvailable;
public static InternetConnectivityPanel create(Context context) { public static InternetConnectivityPanel create(Context context) {
return new InternetConnectivityPanel(context); return new InternetConnectivityPanel(context);
@@ -62,8 +61,6 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
mContext = context.getApplicationContext(); mContext = context.getApplicationContext();
mIsProviderModelEnabled = Utils.isProviderModelEnabled(mContext); mIsProviderModelEnabled = Utils.isProviderModelEnabled(mContext);
mInternetUpdater = new InternetUpdater(context, null /* Lifecycle */, this); mInternetUpdater = new InternetUpdater(context, null /* Lifecycle */, this);
mIsAirplaneModeOn = mInternetUpdater.isAirplaneModeOn();
mIsApmNetworksAvailable = mInternetUpdater.isApmNetworksAvailable();
} }
/** @OnLifecycleEvent(ON_RESUME) */ /** @OnLifecycleEvent(ON_RESUME) */
@@ -90,9 +87,8 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
@Override @Override
public CharSequence getTitle() { public CharSequence getTitle() {
if (mIsProviderModelEnabled) { if (mIsProviderModelEnabled) {
return mContext.getText(mIsApmNetworksAvailable return mContext.getText(mInternetUpdater.isAirplaneModeOn()
? R.string.airplane_mode_network_panel_title ? R.string.airplane_mode : R.string.provider_internet_settings);
: R.string.provider_internet_settings);
} }
return mContext.getText(R.string.internet_connectivity_panel_title); return mContext.getText(R.string.internet_connectivity_panel_title);
} }
@@ -102,8 +98,9 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
*/ */
@Override @Override
public CharSequence getSubTitle() { public CharSequence getSubTitle() {
if (mIsProviderModelEnabled && mIsAirplaneModeOn && !mIsApmNetworksAvailable) { if (mIsProviderModelEnabled && mInternetUpdater.isAirplaneModeOn()
return mContext.getText(R.string.condition_airplane_title); && mInternetUpdater.isWifiEnabled()) {
return mContext.getText(R.string.wifi_is_turned_on_subtitle);
} }
return null; return null;
} }
@@ -136,7 +133,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
@Override @Override
public CharSequence getCustomizedButtonTitle() { public CharSequence getCustomizedButtonTitle() {
if (mIsAirplaneModeOn && !mIsApmNetworksAvailable) { if (mInternetUpdater.isAirplaneModeOn() && !mInternetUpdater.isWifiEnabled()) {
return null; return null;
} }
return mContext.getText(R.string.settings_button); return mContext.getText(R.string.settings_button);
@@ -162,19 +159,14 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
*/ */
@Override @Override
public void onAirplaneModeChanged(boolean isAirplaneModeOn) { public void onAirplaneModeChanged(boolean isAirplaneModeOn) {
if (!isAirplaneModeOn) {
mIsApmNetworksAvailable = false;
}
mIsAirplaneModeOn = isAirplaneModeOn;
updatePanelTitle(); updatePanelTitle();
} }
/** /**
* Called when airplane mode networks state is changed. * Called when Wi-Fi enabled is changed.
*/ */
@Override @Override
public void onAirplaneModeNetworksChanged(boolean available) { public void onWifiEnabledChanged(boolean enabled) {
mIsApmNetworksAvailable = available;
updatePanelTitle(); updatePanelTitle();
} }
@@ -183,16 +175,14 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
return; return;
} }
if (mIsAirplaneModeOn && !mIsApmNetworksAvailable) { if (mInternetUpdater.isAirplaneModeOn() && mInternetUpdater.isWifiEnabled()) {
// When the airplane mode is on. // When the airplane mode is on and Wi-Fi is enabled.
// Title: Internet // Title: Airplane mode
// Sub-Title: Airplane mode is on // Sub-Title: Wi-Fi is turned on
// Settings button: Hide
mCallback.onHeaderChanged(); mCallback.onHeaderChanged();
} else { } else {
// Except for airplane mode on. // Other situations.
// Title: Airplane mode networks / Internet // Title: Airplane mode / Internet
// Settings button: Show
mCallback.onTitleChanged(); mCallback.onTitleChanged();
} }
mCallback.onCustomizedButtonStateChanged(); mCallback.onCustomizedButtonStateChanged();

View File

@@ -19,6 +19,7 @@ package com.android.settings.panel;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@@ -29,6 +30,7 @@ import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.settings.network.AirplaneModePreferenceController; import com.android.settings.network.AirplaneModePreferenceController;
import com.android.settings.network.InternetUpdater;
import com.android.settings.slices.CustomSliceRegistry; import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.testutils.ResourcesUtils; import com.android.settings.testutils.ResourcesUtils;
@@ -47,10 +49,10 @@ public class InternetConnectivityPanelTest {
public static final String TITLE_INTERNET = ResourcesUtils.getResourcesString( public static final String TITLE_INTERNET = ResourcesUtils.getResourcesString(
ApplicationProvider.getApplicationContext(), "provider_internet_settings"); ApplicationProvider.getApplicationContext(), "provider_internet_settings");
public static final String TITLE_APM_NETWORKS = ResourcesUtils.getResourcesString( public static final String TITLE_APM = ResourcesUtils.getResourcesString(
ApplicationProvider.getApplicationContext(), "airplane_mode_network_panel_title"); ApplicationProvider.getApplicationContext(), "airplane_mode");
public static final String SUBTITLE_APM_IS_ON = ResourcesUtils.getResourcesString( public static final String SUBTITLE_WIFI_IS_TURNED_ON = ResourcesUtils.getResourcesString(
ApplicationProvider.getApplicationContext(), "condition_airplane_title"); ApplicationProvider.getApplicationContext(), "wifi_is_turned_on_subtitle");
public static final String BUTTON_SETTINGS = ResourcesUtils.getResourcesString( public static final String BUTTON_SETTINGS = ResourcesUtils.getResourcesString(
ApplicationProvider.getApplicationContext(), "settings_button"); ApplicationProvider.getApplicationContext(), "settings_button");
@@ -58,6 +60,8 @@ public class InternetConnectivityPanelTest {
public final MockitoRule mMocks = MockitoJUnit.rule(); public final MockitoRule mMocks = MockitoJUnit.rule();
@Mock @Mock
PanelContentCallback mPanelContentCallback; PanelContentCallback mPanelContentCallback;
@Mock
InternetUpdater mInternetUpdater;
private Context mContext; private Context mContext;
private InternetConnectivityPanel mPanel; private InternetConnectivityPanel mPanel;
@@ -69,73 +73,65 @@ public class InternetConnectivityPanelTest {
mPanel = InternetConnectivityPanel.create(mContext); mPanel = InternetConnectivityPanel.create(mContext);
mPanel.registerCallback(mPanelContentCallback); mPanel.registerCallback(mPanelContentCallback);
mPanel.mIsProviderModelEnabled = true; mPanel.mIsProviderModelEnabled = true;
mPanel.mInternetUpdater = mInternetUpdater;
} }
@Test @Test
public void getTitle_apmOnApmNetworksOff_shouldBeInternet() { public void getTitle_apmOff_shouldBeInternet() {
mPanel.onAirplaneModeChanged(true); doReturn(false).when(mInternetUpdater).isAirplaneModeOn();
mPanel.onAirplaneModeNetworksChanged(false);
assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET);
} }
@Test @Test
public void getTitle_apmOnApmNetworksOn_shouldBeApmNetworks() { public void getTitle_apmOn_shouldBeApm() {
mPanel.onAirplaneModeChanged(true); doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
mPanel.onAirplaneModeNetworksChanged(true);
assertThat(mPanel.getTitle()).isEqualTo(TITLE_APM_NETWORKS); assertThat(mPanel.getTitle()).isEqualTo(TITLE_APM);
}
@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();
} }
@Test @Test
public void getSubTitle_apmOff_shouldBeNull() { public void getSubTitle_apmOff_shouldBeNull() {
mPanel.onAirplaneModeChanged(false); doReturn(false).when(mInternetUpdater).isAirplaneModeOn();
assertThat(mPanel.getSubTitle()).isNull(); assertThat(mPanel.getSubTitle()).isNull();
} }
@Test @Test
public void getCustomizedButtonTitle_apmOnApmNetworksOff_shouldBeNull() { public void getSubTitle_apmOnWifiOff_shouldBeNull() {
mPanel.onAirplaneModeChanged(true); doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
mPanel.onAirplaneModeNetworksChanged(false); doReturn(false).when(mInternetUpdater).isWifiEnabled();
assertThat(mPanel.getCustomizedButtonTitle()).isNull(); assertThat(mPanel.getSubTitle()).isNull();
} }
@Test @Test
public void getCustomizedButtonTitle_apmOnApmNetworksOn_shouldBeSettings() { public void getSubTitle_apmOnWifiOn_shouldWifiIsTurnedOn() {
mPanel.onAirplaneModeChanged(true); doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
mPanel.onAirplaneModeNetworksChanged(true); 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); assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS);
} }
@Test @Test
public void getCustomizedButtonTitle_apmOff_shouldBeSettings() { public void getCustomizedButtonTitle_apmOnWifiOff_shouldBeNull() {
mPanel.onAirplaneModeChanged(false); 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); assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS);
} }
@@ -166,46 +162,86 @@ public class InternetConnectivityPanelTest {
} }
@Test @Test
public void onAirplaneModeOn_apmNetworksOff_changeHeaderAndHideSettings() { public void onAirplaneModeOn_apmOff_onTitleChanged() {
mPanel.onAirplaneModeNetworksChanged(false); 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); clearInvocations(mPanelContentCallback);
mPanel.onAirplaneModeChanged(true); mPanel.onAirplaneModeChanged(true);
verify(mPanelContentCallback).onHeaderChanged(); verify(mPanelContentCallback).onHeaderChanged();
verify(mPanelContentCallback).onCustomizedButtonStateChanged();
} }
@Test @Test
public void onAirplaneModeOn_apmNetworksOn_changeTitleAndShowSettings() { public void onAirplaneModeOn_onCustomizedButtonStateChanged() {
mPanel.onAirplaneModeNetworksChanged(true); doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
clearInvocations(mPanelContentCallback); clearInvocations(mPanelContentCallback);
mPanel.onAirplaneModeChanged(true); mPanel.onAirplaneModeChanged(true);
verify(mPanelContentCallback).onTitleChanged();
verify(mPanelContentCallback).onCustomizedButtonStateChanged(); verify(mPanelContentCallback).onCustomizedButtonStateChanged();
} }
@Test @Test
public void onAirplaneModeNetworksOn_apmOff_changeTitleAndShowSettings() { public void onWifiEnabledChanged_apmOff_onTitleChanged() {
mPanel.onAirplaneModeChanged(false); doReturn(false).when(mInternetUpdater).isAirplaneModeOn();
clearInvocations(mPanelContentCallback); clearInvocations(mPanelContentCallback);
mPanel.onAirplaneModeNetworksChanged(true); mPanel.onWifiEnabledChanged(false);
verify(mPanelContentCallback).onTitleChanged(); verify(mPanelContentCallback).onTitleChanged();
verify(mPanelContentCallback).onCustomizedButtonStateChanged();
} }
@Test @Test
public void onAirplaneModeNetworksOff_apmOff_changeTitleAndShowSettings() { public void onWifiEnabledChanged_apmOnWifiOff_onTitleChanged() {
mPanel.onAirplaneModeChanged(false); doReturn(true).when(mInternetUpdater).isAirplaneModeOn();
doReturn(false).when(mInternetUpdater).isWifiEnabled();
clearInvocations(mPanelContentCallback); clearInvocations(mPanelContentCallback);
mPanel.onAirplaneModeNetworksChanged(false); mPanel.onWifiEnabledChanged(true);
verify(mPanelContentCallback).onTitleChanged(); 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(); verify(mPanelContentCallback).onCustomizedButtonStateChanged();
} }
} }