From 103b4d4619ef73d8ff46c405bc547ee4a24a19be Mon Sep 17 00:00:00 2001 From: Daniel Nishi Date: Mon, 12 Mar 2018 16:44:27 -0700 Subject: [PATCH] Don't allow a zero-length device name to work. Technically, if a device has a zero-length device name, the bug will resurface. The EditText validator doesn't trigger on opening -- only when the text is edited. A zero-length device name is flagged as being invalid, but that fails if the text box starts empty. By pre-filling it with the previous device name, we can ensure that, as long as a zero-length device name is never set, it can never be set. Change-Id: I0d28aaae09f99b7d697b753835ba39c0c06644a1 Fixes: 73127912 Test: Robotest (cherry picked from commit b2165509445c0c63b1813132d8b92b119bd44d57) --- .../deviceinfo/DeviceNamePreferenceController.java | 4 +++- .../deviceinfo/DeviceNamePreferenceControllerTest.java | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java b/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java index 6d0302fed18..1d71bea9cfd 100644 --- a/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java +++ b/src/com/android/settings/deviceinfo/DeviceNamePreferenceController.java @@ -54,7 +54,9 @@ public class DeviceNamePreferenceController extends BasePreferenceController public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = (ValidatedEditTextPreference) screen.findPreference(PREF_KEY); - mPreference.setSummary(getSummary()); + final CharSequence deviceName = getSummary(); + mPreference.setSummary(deviceName); + mPreference.setText(deviceName.toString()); mPreference.setValidator(this); } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/DeviceNamePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/DeviceNamePreferenceControllerTest.java index 5d5fb764b27..a4e097500fb 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/DeviceNamePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/DeviceNamePreferenceControllerTest.java @@ -123,4 +123,12 @@ public class DeviceNamePreferenceControllerTest { verify(mWifiManager).setWifiApConfiguration(captor.capture()); assertThat(captor.getValue().SSID).isEqualTo(TESTING_STRING); } + + @Test + public void displayPreference_defaultDeviceNameIsModelNameOnPreference() { + mController.displayPreference(mScreen); + + assertThat(mPreference.getText()).isEqualTo(Build.MODEL); + } + }