From b3468ca88ad3c87b0e8af29899df9e7ec167aad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Hern=C3=A1ndez?= Date: Mon, 2 Dec 2024 16:06:58 +0100 Subject: [PATCH] (Once more) fix minimum height of mode name edit box for a11y We had fixed this before and then regressed when moving to TextInputLayout, so added a proper test this time. Fixes: 380207192 Test: atest ZenModeEditNamePreferenceControllerTest Flag: android.app.modes_ui Change-Id: Ic25b0a5a6997e7b3bb26bf26ed7e8e92654a1c11 --- res/layout/modes_edit_name.xml | 1 + ...nModeEditNamePreferenceControllerTest.java | 26 ++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/res/layout/modes_edit_name.xml b/res/layout/modes_edit_name.xml index ed8b3c9162e..78b5b463c39 100644 --- a/res/layout/modes_edit_name.xml +++ b/res/layout/modes_edit_name.xml @@ -41,6 +41,7 @@ android:id="@android:id/edit" android:layout_width="match_parent" android:layout_height="wrap_content" + android:minHeight="48dp" android:maxLines="1" android:inputType="text|textCapSentences" android:imeOptions="actionDone" diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeEditNamePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeEditNamePreferenceControllerTest.java index caaa1a55ffd..55d7d3d91c6 100644 --- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeEditNamePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeEditNamePreferenceControllerTest.java @@ -16,6 +16,9 @@ package com.android.settings.notification.modes; +import static android.util.TypedValue.COMPLEX_UNIT_DIP; +import static android.view.View.MeasureSpec.makeMeasureSpec; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.verify; @@ -25,6 +28,8 @@ import android.app.Flags; import android.content.Context; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; +import android.util.TypedValue; +import android.view.View.MeasureSpec; import android.widget.EditText; import androidx.preference.PreferenceManager; @@ -45,6 +50,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; import java.util.function.Consumer; @@ -55,6 +61,7 @@ public class ZenModeEditNamePreferenceControllerTest { @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); + private Context mContext; private ZenModeEditNamePreferenceController mController; private LayoutPreference mPreference; private TextInputLayout mTextInputLayout; @@ -65,15 +72,15 @@ public class ZenModeEditNamePreferenceControllerTest { public void setup() { MockitoAnnotations.initMocks(this); - Context context = RuntimeEnvironment.application; - PreferenceManager preferenceManager = new PreferenceManager(context); + mContext = RuntimeEnvironment.application; + PreferenceManager preferenceManager = new PreferenceManager(mContext); // Inflation is a test in itself, because it will crash if the Theme isn't set correctly. - PreferenceScreen preferenceScreen = preferenceManager.inflateFromResource(context, + PreferenceScreen preferenceScreen = preferenceManager.inflateFromResource(mContext, R.xml.modes_edit_name_icon, null); mPreference = preferenceScreen.findPreference("name"); - mController = new ZenModeEditNamePreferenceController(context, "name", mNameSetter); + mController = new ZenModeEditNamePreferenceController(mContext, "name", mNameSetter); mController.displayPreference(preferenceScreen); mTextInputLayout = mPreference.findViewById(R.id.edit_input_layout); mEditText = mPreference.findViewById(android.R.id.edit); @@ -114,4 +121,15 @@ public class ZenModeEditNamePreferenceControllerTest { assertThat(mTextInputLayout.getError()).isNull(); } + + @Test + @Config(qualifiers = "xxxhdpi") + public void onEditTextMeasure_hasRequiredHeightForAccessibility() { + mEditText.measure(makeMeasureSpec(1_000, MeasureSpec.AT_MOST), + makeMeasureSpec(1_000, MeasureSpec.AT_MOST)); + + assertThat(mEditText.getMeasuredHeight()).isAtLeast( + (int) TypedValue.applyDimension(COMPLEX_UNIT_DIP, 48, + mContext.getResources().getDisplayMetrics())); + } }