[Wi-Fi] Fix Wi-Fi picker context menu 'Connect' button

1. Display the Wi-Fi dialog with MODE_CONNECT.
2. Connect with the WifiConfiguration from
   WifiConfigController2#getConfig() if it's available.

Bug: 152826354
Test: make RunSettingsRoboTests ROBOTEST_FILTER=WifiSettings2
Change-Id: Ifbe2ac30b1c37c8eab3227ac0561fdd2de5cb706
This commit is contained in:
Arc Wang
2020-03-31 17:01:22 +08:00
parent 9c32d89aaa
commit 3bb3808043
3 changed files with 82 additions and 7 deletions

View File

@@ -954,18 +954,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 +993,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());
@@ -1034,7 +1047,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
if (mFullScreenEdit) {
launchConfigNewNetworkFragment(mConnectWifiEntry);
} else {
showDialog(mConnectWifiEntry, WifiConfigUiBase2.MODE_MODIFY);
showDialog(mConnectWifiEntry, WifiConfigUiBase2.MODE_CONNECT);
}
}
} else if (status == CONNECT_STATUS_FAILURE_UNKNOWN) {