Loading src/com/android/settings/wifi/WifiDialog2.java +4 −0 Original line number Diff line number Diff line Loading @@ -214,4 +214,8 @@ public class WifiDialog2 extends AlertDialog implements WifiConfigUiBase2, public void setCancelButton(CharSequence text) { setButton(BUTTON_NEGATIVE, text, this); } public WifiEntry getWifiEntry() { return mWifiEntry; } } src/com/android/settings/wifi/WifiSettings2.java +30 −9 Original line number Diff line number Diff line Loading @@ -647,6 +647,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment setOffMessage(); setAdditionalSettingsSummaries(); setProgressBarVisible(false); mClickedConnect = false; break; } } Loading Loading @@ -739,6 +740,11 @@ public class WifiSettings2 extends RestrictedSettingsFragment pref.setOnGearClickListener(preference -> { launchNetworkDetailsFragment(pref); }); if (mClickedConnect) { mClickedConnect = false; scrollToPreference(mConnectedWifiEntryPreferenceCategory); } } } else { mConnectedWifiEntryPreferenceCategory.removeAll(); Loading Loading @@ -954,18 +960,30 @@ public class WifiSettings2 extends RestrictedSettingsFragment @Override public void onForget(WifiDialog2 dialog) { forget(mDialogWifiEntry); forget(dialog.getWifiEntry()); } @Override public void onSubmit(WifiDialog2 dialog) { final int dialogMode = mDialog.getController().getMode(); final int dialogMode = dialog.getMode(); final WifiConfiguration config = dialog.getController().getConfig(); final WifiEntry wifiEntry = dialog.getWifiEntry(); if (dialogMode == WifiConfigUiBase2.MODE_MODIFY) { mWifiManager.save(mDialogWifiEntry.getWifiConfiguration(), mSaveListener); if (config == null) { Toast.makeText(getContext(), R.string.wifi_failed_save_message, Toast.LENGTH_SHORT).show(); } else { mWifiManager.save(config, mSaveListener); } } else if (dialogMode == WifiConfigUiBase2.MODE_CONNECT || (dialogMode == WifiConfigUiBase2.MODE_VIEW && mDialogWifiEntry.canConnect())) { connect(mDialogWifiEntry, false /* editIfNoConfig */, false /* fullScreenEdit*/); || (dialogMode == WifiConfigUiBase2.MODE_VIEW && wifiEntry.canConnect())) { if (config == null) { connect(wifiEntry, false /* editIfNoConfig */, false /* fullScreenEdit*/); } else { mWifiManager.connect(config, new WifiConnectActionListener()); } } } Loading @@ -981,7 +999,8 @@ public class WifiSettings2 extends RestrictedSettingsFragment wifiEntry.forget(null /* callback */); } private void connect(WifiEntry wifiEntry, boolean editIfNoConfig, boolean fullScreenEdit) { @VisibleForTesting void connect(WifiEntry wifiEntry, boolean editIfNoConfig, boolean fullScreenEdit) { mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_WIFI_CONNECT, wifiEntry.isSaved()); Loading @@ -994,7 +1013,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment private class WifiConnectActionListener implements WifiManager.ActionListener { @Override public void onSuccess() { // Do nothing. mClickedConnect = true; } @Override Loading Loading @@ -1028,13 +1047,15 @@ public class WifiSettings2 extends RestrictedSettingsFragment return; } if (status == ConnectCallback.CONNECT_STATUS_FAILURE_NO_CONFIG) { if (status == ConnectCallback.CONNECT_STATUS_SUCCESS) { mClickedConnect = true; } else if (status == ConnectCallback.CONNECT_STATUS_FAILURE_NO_CONFIG) { if (mEditIfNoConfig) { // Edit an unsaved secure Wi-Fi network. if (mFullScreenEdit) { launchConfigNewNetworkFragment(mConnectWifiEntry); } else { showDialog(mConnectWifiEntry, WifiConfigUiBase2.MODE_MODIFY); showDialog(mConnectWifiEntry, WifiConfigUiBase2.MODE_CONNECT); } } } else if (status == CONNECT_STATUS_FAILURE_UNKNOWN) { Loading tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java +58 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,9 @@ */ package com.android.settings.wifi; import static com.android.settings.wifi.WifiConfigUiBase2.MODE_CONNECT; import static com.android.settings.wifi.WifiConfigUiBase2.MODE_MODIFY; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; Loading @@ -34,6 +37,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.PowerManager; Loading Loading @@ -64,6 +68,7 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowToast; @RunWith(RobolectricTestRunner.class) public class WifiSettings2Test { Loading Loading @@ -303,4 +308,57 @@ public class WifiSettings2Test { mWifiSettings2.onNumSavedSubscriptionsChanged(); } @Test public void onSubmit_modeModifyNoConfig_toastErrorMessage() { WifiDialog2 dialog = createWifiDialog2(MODE_MODIFY, null /* config */); mWifiSettings2.onSubmit(dialog); assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo( mContext.getString(R.string.wifi_failed_save_message)); } @Test public void onSubmit_modeModifyHasConfig_saveWifiManager() { final WifiConfiguration config = mock(WifiConfiguration.class); WifiDialog2 dialog = createWifiDialog2(MODE_MODIFY, config); mWifiSettings2.onSubmit(dialog); verify(mWifiManager).save(eq(config), any()); } @Test public void onSubmit_modeConnectNoConfig_connectWifiEntry() { WifiDialog2 dialog = createWifiDialog2(MODE_CONNECT, null /* config */); final WifiEntry wifiEntry = dialog.getWifiEntry(); mWifiSettings2.onAttach(mContext); mWifiSettings2.onSubmit(dialog); verify(mWifiSettings2).connect(wifiEntry, false /* editIfNoConfig */, false /* fullScreenEdit*/); } @Test public void onSubmit_modeConnectHasConfig_connectWifiManager() { final WifiConfiguration config = mock(WifiConfiguration.class); WifiDialog2 dialog = createWifiDialog2(MODE_CONNECT, config); mWifiSettings2.onSubmit(dialog); verify(mWifiManager).connect(eq(config), any(WifiManager.ActionListener.class)); } private WifiDialog2 createWifiDialog2(int mode, WifiConfiguration config) { final WifiEntry wifiEntry = mock(WifiEntry.class); when(wifiEntry.canConnect()).thenReturn(true); final WifiConfigController2 controller = mock(WifiConfigController2.class); when(controller.getConfig()).thenReturn(config); final WifiDialog2 wifiDialog2 = spy(WifiDialog2.createModal(mContext, null /* listener */, wifiEntry, mode)); when(wifiDialog2.getController()).thenReturn(controller); return wifiDialog2; } } Loading
src/com/android/settings/wifi/WifiDialog2.java +4 −0 Original line number Diff line number Diff line Loading @@ -214,4 +214,8 @@ public class WifiDialog2 extends AlertDialog implements WifiConfigUiBase2, public void setCancelButton(CharSequence text) { setButton(BUTTON_NEGATIVE, text, this); } public WifiEntry getWifiEntry() { return mWifiEntry; } }
src/com/android/settings/wifi/WifiSettings2.java +30 −9 Original line number Diff line number Diff line Loading @@ -647,6 +647,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment setOffMessage(); setAdditionalSettingsSummaries(); setProgressBarVisible(false); mClickedConnect = false; break; } } Loading Loading @@ -739,6 +740,11 @@ public class WifiSettings2 extends RestrictedSettingsFragment pref.setOnGearClickListener(preference -> { launchNetworkDetailsFragment(pref); }); if (mClickedConnect) { mClickedConnect = false; scrollToPreference(mConnectedWifiEntryPreferenceCategory); } } } else { mConnectedWifiEntryPreferenceCategory.removeAll(); Loading Loading @@ -954,18 +960,30 @@ public class WifiSettings2 extends RestrictedSettingsFragment @Override public void onForget(WifiDialog2 dialog) { forget(mDialogWifiEntry); forget(dialog.getWifiEntry()); } @Override public void onSubmit(WifiDialog2 dialog) { final int dialogMode = mDialog.getController().getMode(); final int dialogMode = dialog.getMode(); final WifiConfiguration config = dialog.getController().getConfig(); final WifiEntry wifiEntry = dialog.getWifiEntry(); if (dialogMode == WifiConfigUiBase2.MODE_MODIFY) { mWifiManager.save(mDialogWifiEntry.getWifiConfiguration(), mSaveListener); if (config == null) { Toast.makeText(getContext(), R.string.wifi_failed_save_message, Toast.LENGTH_SHORT).show(); } else { mWifiManager.save(config, mSaveListener); } } else if (dialogMode == WifiConfigUiBase2.MODE_CONNECT || (dialogMode == WifiConfigUiBase2.MODE_VIEW && mDialogWifiEntry.canConnect())) { connect(mDialogWifiEntry, false /* editIfNoConfig */, false /* fullScreenEdit*/); || (dialogMode == WifiConfigUiBase2.MODE_VIEW && wifiEntry.canConnect())) { if (config == null) { connect(wifiEntry, false /* editIfNoConfig */, false /* fullScreenEdit*/); } else { mWifiManager.connect(config, new WifiConnectActionListener()); } } } Loading @@ -981,7 +999,8 @@ public class WifiSettings2 extends RestrictedSettingsFragment wifiEntry.forget(null /* callback */); } private void connect(WifiEntry wifiEntry, boolean editIfNoConfig, boolean fullScreenEdit) { @VisibleForTesting void connect(WifiEntry wifiEntry, boolean editIfNoConfig, boolean fullScreenEdit) { mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_WIFI_CONNECT, wifiEntry.isSaved()); Loading @@ -994,7 +1013,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment private class WifiConnectActionListener implements WifiManager.ActionListener { @Override public void onSuccess() { // Do nothing. mClickedConnect = true; } @Override Loading Loading @@ -1028,13 +1047,15 @@ public class WifiSettings2 extends RestrictedSettingsFragment return; } if (status == ConnectCallback.CONNECT_STATUS_FAILURE_NO_CONFIG) { if (status == ConnectCallback.CONNECT_STATUS_SUCCESS) { mClickedConnect = true; } else if (status == ConnectCallback.CONNECT_STATUS_FAILURE_NO_CONFIG) { if (mEditIfNoConfig) { // Edit an unsaved secure Wi-Fi network. if (mFullScreenEdit) { launchConfigNewNetworkFragment(mConnectWifiEntry); } else { showDialog(mConnectWifiEntry, WifiConfigUiBase2.MODE_MODIFY); showDialog(mConnectWifiEntry, WifiConfigUiBase2.MODE_CONNECT); } } } else if (status == CONNECT_STATUS_FAILURE_UNKNOWN) { Loading
tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java +58 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,9 @@ */ package com.android.settings.wifi; import static com.android.settings.wifi.WifiConfigUiBase2.MODE_CONNECT; import static com.android.settings.wifi.WifiConfigUiBase2.MODE_MODIFY; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; Loading @@ -34,6 +37,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.PowerManager; Loading Loading @@ -64,6 +68,7 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowToast; @RunWith(RobolectricTestRunner.class) public class WifiSettings2Test { Loading Loading @@ -303,4 +308,57 @@ public class WifiSettings2Test { mWifiSettings2.onNumSavedSubscriptionsChanged(); } @Test public void onSubmit_modeModifyNoConfig_toastErrorMessage() { WifiDialog2 dialog = createWifiDialog2(MODE_MODIFY, null /* config */); mWifiSettings2.onSubmit(dialog); assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo( mContext.getString(R.string.wifi_failed_save_message)); } @Test public void onSubmit_modeModifyHasConfig_saveWifiManager() { final WifiConfiguration config = mock(WifiConfiguration.class); WifiDialog2 dialog = createWifiDialog2(MODE_MODIFY, config); mWifiSettings2.onSubmit(dialog); verify(mWifiManager).save(eq(config), any()); } @Test public void onSubmit_modeConnectNoConfig_connectWifiEntry() { WifiDialog2 dialog = createWifiDialog2(MODE_CONNECT, null /* config */); final WifiEntry wifiEntry = dialog.getWifiEntry(); mWifiSettings2.onAttach(mContext); mWifiSettings2.onSubmit(dialog); verify(mWifiSettings2).connect(wifiEntry, false /* editIfNoConfig */, false /* fullScreenEdit*/); } @Test public void onSubmit_modeConnectHasConfig_connectWifiManager() { final WifiConfiguration config = mock(WifiConfiguration.class); WifiDialog2 dialog = createWifiDialog2(MODE_CONNECT, config); mWifiSettings2.onSubmit(dialog); verify(mWifiManager).connect(eq(config), any(WifiManager.ActionListener.class)); } private WifiDialog2 createWifiDialog2(int mode, WifiConfiguration config) { final WifiEntry wifiEntry = mock(WifiEntry.class); when(wifiEntry.canConnect()).thenReturn(true); final WifiConfigController2 controller = mock(WifiConfigController2.class); when(controller.getConfig()).thenReturn(config); final WifiDialog2 wifiDialog2 = spy(WifiDialog2.createModal(mContext, null /* listener */, wifiEntry, mode)); when(wifiDialog2.getController()).thenReturn(controller); return wifiDialog2; } }