(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
This commit is contained in:
Matías Hernández
2024-12-02 16:06:58 +01:00
parent 01043fdf93
commit b3468ca88a
2 changed files with 23 additions and 4 deletions

View File

@@ -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"

View File

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