From d35c8d67061bdbf5454fe5728157a25b6bc68d75 Mon Sep 17 00:00:00 2001 From: Salvador Martinez Date: Tue, 17 Apr 2018 11:02:44 -0700 Subject: [PATCH] Update preference to set password field The preference for the wifi tether password was having the input type set incorrectly. This could lead to strange keyboard behavior and the password being remembered by the keyboard which is bad. This CL sets the appropriate field where needed. Test: robotests Bug: 77853620 Change-Id: I2a72fc863cd3779aed98a0df95500b652bb51cc8 --- .../widget/ValidatedEditTextPreference.java | 2 +- .../WifiTetherPasswordPreferenceController.java | 1 + .../widget/ValidatedEditTextPreferenceTest.java | 2 +- ...iTetherPasswordPreferenceControllerTest.java | 17 +++++++++++++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/widget/ValidatedEditTextPreference.java b/src/com/android/settings/widget/ValidatedEditTextPreference.java index a5bab1cd980..707da000f14 100644 --- a/src/com/android/settings/widget/ValidatedEditTextPreference.java +++ b/src/com/android/settings/widget/ValidatedEditTextPreference.java @@ -74,7 +74,7 @@ public class ValidatedEditTextPreference extends CustomEditTextPreference { editText.removeTextChangedListener(mTextWatcher); if (mIsPassword) { editText.setInputType( - InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); editText.setMaxLines(1); } editText.addTextChangedListener(mTextWatcher); diff --git a/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java index b38558c1aeb..5ba0583b6ab 100644 --- a/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java +++ b/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java @@ -55,6 +55,7 @@ public class WifiTetherPasswordPreferenceController extends WifiTetherBasePrefer mPassword = generateRandomPassword(); } ((ValidatedEditTextPreference) mPreference).setValidator(this); + ((ValidatedEditTextPreference) mPreference).setIsPassword(true); ((ValidatedEditTextPreference) mPreference).setIsSummaryPassword(true); updatePasswordDisplay((EditTextPreference) mPreference); } diff --git a/tests/robotests/src/com/android/settings/widget/ValidatedEditTextPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/ValidatedEditTextPreferenceTest.java index 5ba9f8abe58..865422c9354 100644 --- a/tests/robotests/src/com/android/settings/widget/ValidatedEditTextPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/widget/ValidatedEditTextPreferenceTest.java @@ -116,7 +116,7 @@ public class ValidatedEditTextPreferenceTest { mPreference.onBindDialogView(mView); assertThat(editText.getInputType() - & (InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT)) + & (InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | InputType.TYPE_CLASS_TEXT)) .isNotEqualTo(0); } diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java index 60faa2e0702..7e757ad5f84 100644 --- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java @@ -145,4 +145,21 @@ public class WifiTetherPasswordPreferenceControllerTest { assertThat(mController.getSecuritySettingForPassword()) .isEqualTo(WifiConfiguration.KeyMgmt.WPA2_PSK); } + + @Test + public void updateDisplay_shouldSetInputType() { + // Set controller password to anything and verify is set. + mController.displayPreference(mScreen); + mController.onPreferenceChange(mPreference, "1"); + assertThat(mController.getPassword()).isEqualTo("1"); + + // Create a new config using different password + final WifiConfiguration config = new WifiConfiguration(); + config.preSharedKey = "test_1234"; + when(mWifiManager.getWifiApConfiguration()).thenReturn(config); + + // Call updateDisplay and verify it's changed. + mController.updateDisplay(); + assertThat(mPreference.isPassword()).isTrue(); + } }