Add talkback hint to Wi-Fi hotspot preferences
- Set the title as the edit box hint.
Bug: 385857484
Flag: EXEMPT bugfix
Test: Manual testing
atest -c com.android.settings.wifi.tether.WifiTetherPasswordPreferenceControllerTest \
WifiTetherSSIDPreferenceControllerTest
Change-Id: Ie7fe1c29d5f45ce47c7f393bf433ed3b2bcacb59
diff --git a/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java
index d61b3d0..dbe62d4 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java
@@ -20,7 +20,9 @@
import android.content.Context;
import android.net.wifi.SoftApConfiguration;
import android.text.TextUtils;
+import android.widget.EditText;
+import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.preference.EditTextPreference;
import androidx.preference.Preference;
@@ -36,7 +38,8 @@
* Controller for logic pertaining to the password of Wi-Fi tethering.
*/
public class WifiTetherPasswordPreferenceController extends WifiTetherBasePreferenceController
- implements ValidatedEditTextPreference.Validator {
+ implements ValidatedEditTextPreference.Validator,
+ EditTextPreference.OnBindEditTextListener {
private static final String PREF_KEY = "wifi_tether_network_password";
@@ -80,6 +83,7 @@
((ValidatedEditTextPreference) mPreference).setValidator(this);
((ValidatedEditTextPreference) mPreference).setIsPassword(true);
((ValidatedEditTextPreference) mPreference).setIsSummaryPassword(true);
+ ((EditTextPreference) mPreference).setOnBindEditTextListener(this);
updatePasswordDisplay((EditTextPreference) mPreference);
}
@@ -143,4 +147,9 @@
pref.setVisible(false);
}
}
+
+ @Override
+ public void onBindEditText(@NonNull EditText editText) {
+ editText.setHint(R.string.wifi_hotspot_password_title);
+ }
}
diff --git a/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceController.java
index d2d26ab..a57768b 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceController.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceController.java
@@ -22,18 +22,22 @@
import android.net.wifi.SoftApConfiguration;
import android.text.TextUtils;
import android.util.Log;
+import android.widget.EditText;
+import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.preference.EditTextPreference;
import androidx.preference.Preference;
+import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.ValidatedEditTextPreference;
import com.android.settings.wifi.dpp.WifiDppUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
public class WifiTetherSSIDPreferenceController extends WifiTetherBasePreferenceController
- implements ValidatedEditTextPreference.Validator {
+ implements ValidatedEditTextPreference.Validator,
+ EditTextPreference.OnBindEditTextListener {
private static final String TAG = "WifiTetherSsidPref";
private static final String PREF_KEY = "wifi_tether_network_name";
@@ -93,6 +97,7 @@
((WifiTetherSsidPreference) mPreference).setButtonVisible(false);
}
+ ((EditTextPreference) mPreference).setOnBindEditTextListener(this);
updateSsidDisplay((EditTextPreference) mPreference);
}
@@ -138,4 +143,9 @@
boolean isQrCodeButtonAvailable() {
return ((WifiTetherSsidPreference) mPreference).isQrCodeButtonAvailable();
}
+
+ @Override
+ public void onBindEditText(@NonNull EditText editText) {
+ editText.setHint(R.string.wifi_hotspot_name_title);
+ }
}
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 500e31b..3dc0a1a 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java
@@ -18,10 +18,13 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -32,6 +35,7 @@
import android.net.TetheringManager;
import android.net.wifi.SoftApConfiguration;
import android.net.wifi.WifiManager;
+import android.widget.EditText;
import androidx.preference.PreferenceScreen;
@@ -81,7 +85,7 @@
when(featureFactory.getWifiFeatureProvider().getWifiHotspotRepository())
.thenReturn(mWifiHotspotRepository);
- mPreference = new ValidatedEditTextPreference(RuntimeEnvironment.application);
+ mPreference = spy(new ValidatedEditTextPreference(RuntimeEnvironment.application));
mConfig = new SoftApConfiguration.Builder().setSsid("test_1234")
.setPassphrase(INITIAL_PASSWORD, SoftApConfiguration.SECURITY_TYPE_WPA2_PSK)
.build();
@@ -179,4 +183,20 @@
mController.updateDisplay();
assertThat(mPreference.isPassword()).isTrue();
}
+
+ @Test
+ public void updateDisplay_shouldSetOnBindEditTextListener() {
+ mController.displayPreference(mScreen);
+
+ verify(mPreference).setOnBindEditTextListener(any());
+ }
+
+ @Test
+ public void onBindEditText_shouldSetHint() {
+ EditText editText = mock(EditText.class);
+
+ mController.onBindEditText(editText);
+
+ verify(editText).setHint(anyInt());
+ }
}
diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java
index 07d5762..e8ef936 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java
@@ -18,10 +18,13 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -32,6 +35,7 @@
import android.net.TetheringManager;
import android.net.wifi.SoftApConfiguration;
import android.net.wifi.WifiManager;
+import android.widget.EditText;
import androidx.preference.PreferenceScreen;
@@ -68,7 +72,7 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- mPreference = new WifiTetherSsidPreference(RuntimeEnvironment.application);
+ mPreference = spy(new WifiTetherSsidPreference(RuntimeEnvironment.application));
doReturn(mock(DevicePolicyManager.class)).when(mContext)
.getSystemService(Context.DEVICE_POLICY_SERVICE);
@@ -148,11 +152,18 @@
}
@Test
+ public void updateDisplay_shouldSetOnBindEditTextListener() {
+ mController.displayPreference(mScreen);
+
+ verify(mPreference).setOnBindEditTextListener(any());
+ }
+
+ @Test
public void displayPreference_wifiApDisabled_shouldHideQrCodeIcon() {
when(mWifiManager.isWifiApEnabled()).thenReturn(false);
final SoftApConfiguration config = new SoftApConfiguration.Builder()
.setSsid("test_1234").setPassphrase("test_password",
- SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
+ SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
when(mWifiManager.getSoftApConfiguration()).thenReturn(config);
mController.displayPreference(mScreen);
@@ -164,10 +175,19 @@
when(mWifiManager.isWifiApEnabled()).thenReturn(true);
final SoftApConfiguration config = new SoftApConfiguration.Builder()
.setSsid("test_1234").setPassphrase("test_password",
- SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
+ SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
when(mWifiManager.getSoftApConfiguration()).thenReturn(config);
mController.displayPreference(mScreen);
assertThat(mController.isQrCodeButtonAvailable()).isEqualTo(true);
}
+
+ @Test
+ public void onBindEditText_shouldSetHint() {
+ EditText editText = mock(EditText.class);
+
+ mController.onBindEditText(editText);
+
+ verify(editText).setHint(anyInt());
+ }
}