Modify the condition of MENU_FIX_CONNECTIVITY
This condition adds checking "whether wifi is enabled" Bug: 303100761 Test: build pass. local test make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest ->pass Change-Id: Ib0aa92a77e7fcdbfd2d37e28474e3ef138275ca5
This commit is contained in:
@@ -49,9 +49,11 @@ import android.view.MenuItem;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import androidx.core.view.MenuProvider;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceCategory;
|
import androidx.preference.PreferenceCategory;
|
||||||
@@ -249,6 +251,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
ConnectedEthernetNetworkController mConnectedEthernetNetworkController;
|
ConnectedEthernetNetworkController mConnectedEthernetNetworkController;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
FooterPreference mWifiStatusMessagePreference;
|
FooterPreference mWifiStatusMessagePreference;
|
||||||
|
@VisibleForTesting
|
||||||
|
MenuProvider mMenuProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mobile networks list for provider model
|
* Mobile networks list for provider model
|
||||||
@@ -306,6 +310,44 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
|
|
||||||
mIsRestricted = isUiRestricted();
|
mIsRestricted = isUiRestricted();
|
||||||
updateUserType();
|
updateUserType();
|
||||||
|
|
||||||
|
mMenuProvider = new MenuProvider() {
|
||||||
|
@Override
|
||||||
|
public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
|
||||||
|
MenuItem fixConnectivityItem = menu.add(0, MENU_FIX_CONNECTIVITY, 0,
|
||||||
|
R.string.fix_connectivity);
|
||||||
|
fixConnectivityItem.setIcon(R.drawable.ic_repair_24dp);
|
||||||
|
fixConnectivityItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
|
||||||
|
if (menuItem.getItemId() == MENU_FIX_CONNECTIVITY) {
|
||||||
|
if (isPhoneOnCall()) {
|
||||||
|
showResetInternetDialog();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
fixConnectivity();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPrepareMenu(@NonNull Menu menu) {
|
||||||
|
MenuProvider.super.onPrepareMenu(menu);
|
||||||
|
|
||||||
|
boolean isWifiEnabled = mWifiPickerTracker != null
|
||||||
|
&& mWifiPickerTracker.getWifiState() == WifiManager.WIFI_STATE_ENABLED;
|
||||||
|
boolean isAirplaneModeOn =
|
||||||
|
mAirplaneModeEnabler != null && mAirplaneModeEnabler.isAirplaneModeOn();
|
||||||
|
MenuItem fixConnectivityItem = menu.findItem(MENU_FIX_CONNECTIVITY);
|
||||||
|
if (fixConnectivityItem == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fixConnectivityItem.setVisible(!mIsGuest && (!isAirplaneModeOn || isWifiEnabled));
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateUserType() {
|
private void updateUserType() {
|
||||||
@@ -425,7 +467,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
setHasOptionsMenu(true);
|
|
||||||
|
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mDialogMode = savedInstanceState.getInt(SAVE_DIALOG_MODE);
|
mDialogMode = savedInstanceState.getInt(SAVE_DIALOG_MODE);
|
||||||
@@ -444,12 +485,13 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
if (mNetworkMobileProviderController != null) {
|
if (mNetworkMobileProviderController != null) {
|
||||||
mNetworkMobileProviderController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper);
|
mNetworkMobileProviderController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
requireActivity().addMenuProvider(mMenuProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -807,6 +849,9 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update the menu item
|
||||||
|
requireActivity().invalidateMenu();
|
||||||
|
|
||||||
switch (wifiState) {
|
switch (wifiState) {
|
||||||
case WifiManager.WIFI_STATE_ENABLED:
|
case WifiManager.WIFI_STATE_ENABLED:
|
||||||
setWifiScanMessage(/* isWifiEnabled */ true);
|
setWifiScanMessage(/* isWifiEnabled */ true);
|
||||||
@@ -1397,29 +1442,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
return HelpUtils.getHelpIntent(context, helpUrlString, context.getClass().getName());
|
return HelpUtils.getHelpIntent(context, helpUrlString, context.getClass().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
|
||||||
if (!mIsGuest && !mAirplaneModeEnabler.isAirplaneModeOn()) {
|
|
||||||
MenuItem item = menu.add(0, MENU_FIX_CONNECTIVITY, 0, R.string.fix_connectivity);
|
|
||||||
item.setIcon(R.drawable.ic_repair_24dp);
|
|
||||||
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
|
||||||
}
|
|
||||||
super.onCreateOptionsMenu(menu, inflater);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onOptionsItemSelected(MenuItem menuItem) {
|
|
||||||
if (menuItem.getItemId() == MENU_FIX_CONNECTIVITY) {
|
|
||||||
if (isPhoneOnCall()) {
|
|
||||||
showResetInternetDialog();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
fixConnectivity();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return super.onOptionsItemSelected(menuItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void showResetInternetDialog() {
|
void showResetInternetDialog() {
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
||||||
@@ -1462,6 +1484,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
@Override
|
@Override
|
||||||
public void onAirplaneModeChanged(boolean isAirplaneModeOn) {
|
public void onAirplaneModeChanged(boolean isAirplaneModeOn) {
|
||||||
updateAirplaneModeMsgPreference(isAirplaneModeOn /* visible */);
|
updateAirplaneModeMsgPreference(isAirplaneModeOn /* visible */);
|
||||||
|
// update the menu item
|
||||||
|
requireActivity().invalidateMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -286,7 +286,8 @@ public class NetworkProviderSettingsTest {
|
|||||||
|
|
||||||
private void setUpForOnCreate() {
|
private void setUpForOnCreate() {
|
||||||
final FragmentActivity activity = mock(FragmentActivity.class);
|
final FragmentActivity activity = mock(FragmentActivity.class);
|
||||||
when(mNetworkProviderSettings.getActivity()).thenReturn(activity);
|
doReturn(activity).when(mNetworkProviderSettings).requireActivity();
|
||||||
|
doReturn(activity).when(mNetworkProviderSettings).getActivity();
|
||||||
final Resources.Theme theme = mContext.getTheme();
|
final Resources.Theme theme = mContext.getTheme();
|
||||||
when(activity.getTheme()).thenReturn(theme);
|
when(activity.getTheme()).thenReturn(theme);
|
||||||
UserManager userManager = mock(UserManager.class);
|
UserManager userManager = mock(UserManager.class);
|
||||||
@@ -484,59 +485,95 @@ public class NetworkProviderSettingsTest {
|
|||||||
when(controller.getConfig()).thenReturn(config);
|
when(controller.getConfig()).thenReturn(config);
|
||||||
WifiDialog2.WifiDialog2Listener listener = mock(WifiDialog2.WifiDialog2Listener.class);
|
WifiDialog2.WifiDialog2Listener listener = mock(WifiDialog2.WifiDialog2Listener.class);
|
||||||
final WifiDialog2 wifiDialog2 = spy(new WifiDialog2(mContext, listener, mWifiEntry, mode));
|
final WifiDialog2 wifiDialog2 = spy(new WifiDialog2(mContext, listener, mWifiEntry, mode));
|
||||||
when(wifiDialog2.getController()).thenReturn(controller);
|
doReturn(controller).when(wifiDialog2).getController();
|
||||||
return wifiDialog2;
|
return wifiDialog2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
private void mockMenuConditions(boolean isGuest, boolean isAirplaneModeOn, boolean isWifiOn) {
|
||||||
public void onCreateOptionsMenu_isGuest_neverAddFixConnectivityMenu() {
|
mNetworkProviderSettings.mIsGuest = isGuest;
|
||||||
mNetworkProviderSettings.mIsGuest = true;
|
doReturn(isAirplaneModeOn).when(mAirplaneModeEnabler).isAirplaneModeOn();
|
||||||
|
when(mMockWifiPickerTracker.getWifiState()).thenReturn(
|
||||||
|
isWifiOn ? WifiManager.WIFI_STATE_ENABLED : WifiManager.WIFI_STATE_DISABLED);
|
||||||
|
|
||||||
mNetworkProviderSettings.onCreateOptionsMenu(mMenu, null /* inflater */);
|
doReturn(mMenuItem).when(mMenu).findItem(MENU_FIX_CONNECTIVITY);
|
||||||
|
mNetworkProviderSettings.mAirplaneModeEnabler = mAirplaneModeEnabler;
|
||||||
|
mNetworkProviderSettings.mWifiPickerTracker = mMockWifiPickerTracker;
|
||||||
|
|
||||||
verify(mMenu, never()).add(anyInt(), eq(MENU_FIX_CONNECTIVITY), anyInt(), anyInt());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onCreateOptionsMenu_isNotGuest_addFixConnectivityMenu() {
|
public void onCreateOptionsMenu_isGuest_hideFixConnectivityMenu() {
|
||||||
mNetworkProviderSettings.mIsGuest = false;
|
setUpForOnCreate();
|
||||||
|
mNetworkProviderSettings.onCreate(null);
|
||||||
|
mockMenuConditions(/*isGuest=*/ true, /*isAirplaneModeOn=*/ false, /*isWifiOn=*/ true);
|
||||||
|
|
||||||
mNetworkProviderSettings.onCreateOptionsMenu(mMenu, null /* inflater */);
|
mNetworkProviderSettings.mMenuProvider.onPrepareMenu(mMenu);
|
||||||
|
|
||||||
|
verify(mMenuItem).setVisible(false);
|
||||||
|
|
||||||
verify(mMenu).add(anyInt(), eq(MENU_FIX_CONNECTIVITY), anyInt(), anyInt());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onCreateOptionsMenu_isAirplaneModeOn_neverAddFixConnectivityMenu() {
|
public void onCreateOptionsMenu_isNotGuest_showFixConnectivityMenu() {
|
||||||
doReturn(true).when(mAirplaneModeEnabler).isAirplaneModeOn();
|
setUpForOnCreate();
|
||||||
|
mNetworkProviderSettings.onCreate(null);
|
||||||
|
mockMenuConditions(/*isGuest=*/ false, /*isAirplaneModeOn=*/ false, /*isWifiOn=*/ true);
|
||||||
|
|
||||||
mNetworkProviderSettings.onCreateOptionsMenu(mMenu, null /* inflater */);
|
mNetworkProviderSettings.mMenuProvider.onPrepareMenu(mMenu);
|
||||||
|
|
||||||
|
verify(mMenuItem).setVisible(true);
|
||||||
|
|
||||||
verify(mMenu, never()).add(anyInt(), eq(MENU_FIX_CONNECTIVITY), anyInt(), anyInt());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onCreateOptionsMenu_isNotAirplaneModeOn_addFixConnectivityMenu() {
|
public void onCreateOptionsMenu_isAirplaneModeOnAndWifiOff_hideFixConnectivityMenu() {
|
||||||
doReturn(false).when(mAirplaneModeEnabler).isAirplaneModeOn();
|
setUpForOnCreate();
|
||||||
|
mNetworkProviderSettings.onCreate(null);
|
||||||
|
mockMenuConditions(/*isGuest=*/ false, /*isAirplaneModeOn=*/ true, /*isWifiOn=*/ false);
|
||||||
|
|
||||||
mNetworkProviderSettings.onCreateOptionsMenu(mMenu, null /* inflater */);
|
mNetworkProviderSettings.mMenuProvider.onPrepareMenu(mMenu);
|
||||||
|
|
||||||
verify(mMenu).add(anyInt(), eq(MENU_FIX_CONNECTIVITY), anyInt(), anyInt());
|
verify(mMenuItem).setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateOptionsMenu_isAirplaneModeOnAndWifiOn_showFixConnectivityMenu() {
|
||||||
|
setUpForOnCreate();
|
||||||
|
mNetworkProviderSettings.onCreate(null);
|
||||||
|
mockMenuConditions(/*isGuest=*/ false, /*isAirplaneModeOn=*/ true, /*isWifiOn=*/ true);
|
||||||
|
|
||||||
|
mNetworkProviderSettings.mMenuProvider.onPrepareMenu(mMenu);
|
||||||
|
|
||||||
|
verify(mMenuItem).setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateOptionsMenu_isNotAirplaneModeOn_showFixConnectivityMenu() {
|
||||||
|
setUpForOnCreate();
|
||||||
|
mNetworkProviderSettings.onCreate(null);
|
||||||
|
mockMenuConditions(/*isGuest=*/ false, /*isAirplaneModeOn=*/ false, /*isWifiOn=*/ true);
|
||||||
|
|
||||||
|
mNetworkProviderSettings.mMenuProvider.onPrepareMenu(mMenu);
|
||||||
|
|
||||||
|
verify(mMenuItem).setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onOptionsItemSelected_fixConnectivity_restartInternet() {
|
public void onOptionsItemSelected_fixConnectivity_restartInternet() {
|
||||||
mNetworkProviderSettings.mInternetResetHelper = mInternetResetHelper;
|
setUpForOnCreate();
|
||||||
doReturn(false).when(mNetworkProviderSettings).isPhoneOnCall();
|
doReturn(false).when(mNetworkProviderSettings).isPhoneOnCall();
|
||||||
doReturn(NetworkProviderSettings.MENU_FIX_CONNECTIVITY).when(mMenuItem).getItemId();
|
doReturn(MENU_FIX_CONNECTIVITY).when(mMenuItem).getItemId();
|
||||||
|
mNetworkProviderSettings.onCreate(null);
|
||||||
|
mNetworkProviderSettings.mInternetResetHelper = mInternetResetHelper;
|
||||||
|
|
||||||
mNetworkProviderSettings.onOptionsItemSelected(mMenuItem);
|
mNetworkProviderSettings.mMenuProvider.onMenuItemSelected(mMenuItem);
|
||||||
|
|
||||||
verify(mInternetResetHelper).restart();
|
verify(mInternetResetHelper).restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onAirplaneModeChanged_apmIsOn_showApmMsg() {
|
public void onAirplaneModeChanged_apmIsOn_showApmMsg() {
|
||||||
|
setUpForOnCreate();
|
||||||
mNetworkProviderSettings.onAirplaneModeChanged(true);
|
mNetworkProviderSettings.onAirplaneModeChanged(true);
|
||||||
|
|
||||||
verify(mAirplaneModeMsgPreference).setVisible(true);
|
verify(mAirplaneModeMsgPreference).setVisible(true);
|
||||||
@@ -544,6 +581,7 @@ public class NetworkProviderSettingsTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onAirplaneModeChanged_apmIsOff_hideApmMsg() {
|
public void onAirplaneModeChanged_apmIsOff_hideApmMsg() {
|
||||||
|
setUpForOnCreate();
|
||||||
mNetworkProviderSettings.onAirplaneModeChanged(false);
|
mNetworkProviderSettings.onAirplaneModeChanged(false);
|
||||||
|
|
||||||
verify(mAirplaneModeMsgPreference).setVisible(false);
|
verify(mAirplaneModeMsgPreference).setVisible(false);
|
||||||
|
Reference in New Issue
Block a user