Merge changes Ia96af86c,Ifbe2ac30 into rvc-dev
* changes: [Wi-Fi] Wi-Fi picker scrolls to top after a user clicked to connect [Wi-Fi] Fix Wi-Fi picker context menu 'Connect' button
This commit is contained in:
committed by
Android (Google) Code Review
commit
4b45334288
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -647,6 +647,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
|
||||
setOffMessage();
|
||||
setAdditionalSettingsSummaries();
|
||||
setProgressBarVisible(false);
|
||||
mClickedConnect = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -739,6 +740,11 @@ public class WifiSettings2 extends RestrictedSettingsFragment
|
||||
pref.setOnGearClickListener(preference -> {
|
||||
launchNetworkDetailsFragment(pref);
|
||||
});
|
||||
|
||||
if (mClickedConnect) {
|
||||
mClickedConnect = false;
|
||||
scrollToPreference(mConnectedWifiEntryPreferenceCategory);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
mConnectedWifiEntryPreferenceCategory.removeAll();
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -994,7 +1013,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
|
||||
private class WifiConnectActionListener implements WifiManager.ActionListener {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
// Do nothing.
|
||||
mClickedConnect = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -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) {
|
||||
|
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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 {
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user