Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b3468ca8 authored by Matías Hernández's avatar Matías Hernández
Browse files

(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
parent 01043fdf
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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"
+22 −4
Original line number Diff line number Diff line
@@ -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()));
    }
}