From d79363fec630af730dba177fba1023856cfdccc9 Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Wed, 24 Jul 2019 18:10:59 +0800 Subject: [PATCH] wifi: support SAE password identifier in wifi dialog Bug: 138305265 Test: atest FrameworksWifiApiTests Test: atest FrameworksWifiTests Test: connect to a WPA3 SAE access point with different password/identifer combinations. Change-Id: Idf1f82faaafa9c5f2212a0fa1dcc2eec53a9dbd5 --- res/layout/wifi_dialog.xml | 19 +++++++++++++ res/values/strings.xml | 2 ++ .../settings/wifi/WifiConfigController.java | 28 +++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/res/layout/wifi_dialog.xml b/res/layout/wifi_dialog.xml index b9a910bd2fd..83a08336c32 100644 --- a/res/layout/wifi_dialog.xml +++ b/res/layout/wifi_dialog.xml @@ -311,6 +311,25 @@ style="@style/wifi_item_content" android:text="@string/wifi_show_password" /> + + + + + + Anonymous identity Password + + SAE password identifier Show password diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index df6e470a92f..83b7baf54b4 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -131,6 +131,7 @@ public class WifiConfigController implements TextWatcher, @VisibleForTesting int mAccessPointSecurity; private TextView mPasswordView; + private TextView mSaePasswordIdView; private ImageButton mSsidScanButton; private String mUnspecifiedCertString; @@ -786,6 +787,11 @@ public class WifiConfigController implements TextWatcher, String password = mPasswordView.getText().toString(); config.preSharedKey = '"' + password + '"'; } + if (mSaePasswordIdView.length() != 0) { + config.saePasswordId = mSaePasswordIdView.getText().toString(); + } else { + config.saePasswordId = null; + } break; case AccessPoint.SECURITY_OWE: @@ -968,6 +974,23 @@ public class WifiConfigController implements TextWatcher, } } + if (mSaePasswordIdView == null) { + mSaePasswordIdView = (TextView) mView.findViewById(R.id.sae_password_id); + mSaePasswordIdView.setOnEditorActionListener(this); + mSaePasswordIdView.setOnKeyListener(this); + } + + if (mAccessPointSecurity == AccessPoint.SECURITY_SAE) { + mView.findViewById(R.id.sae_password_id_layout).setVisibility(View.VISIBLE); + if (mAccessPoint != null && mAccessPoint.isSaved()) { + if (!TextUtils.isEmpty(mAccessPoint.getConfig().saePasswordId)) { + mSaePasswordIdView.setText(mAccessPoint.getConfig().saePasswordId); + } + } + } else { + setSaePasswordIdInvisible(); + } + if (mAccessPointSecurity != AccessPoint.SECURITY_EAP && mAccessPointSecurity != AccessPoint.SECURITY_EAP_SUITE_B) { mView.findViewById(R.id.eap).setVisibility(View.GONE); @@ -1249,6 +1272,11 @@ public class WifiConfigController implements TextWatcher, mView.findViewById(R.id.show_password_layout).setVisibility(View.GONE); } + private void setSaePasswordIdInvisible() { + mSaePasswordIdView.setText(""); + mView.findViewById(R.id.sae_password_id_layout).setVisibility(View.GONE); + } + private void setEapMethodInvisible() { mView.findViewById(R.id.eap).setVisibility(View.GONE); }