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());
+    }
 }