(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:
@@ -41,6 +41,7 @@
|
|||||||
android:id="@android:id/edit"
|
android:id="@android:id/edit"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="48dp"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:inputType="text|textCapSentences"
|
android:inputType="text|textCapSentences"
|
||||||
android:imeOptions="actionDone"
|
android:imeOptions="actionDone"
|
||||||
|
@@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
package com.android.settings.notification.modes;
|
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 com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
@@ -25,6 +28,8 @@ import android.app.Flags;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.platform.test.annotations.EnableFlags;
|
import android.platform.test.annotations.EnableFlags;
|
||||||
import android.platform.test.flag.junit.SetFlagsRule;
|
import android.platform.test.flag.junit.SetFlagsRule;
|
||||||
|
import android.util.TypedValue;
|
||||||
|
import android.view.View.MeasureSpec;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
|
|
||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
@@ -45,6 +50,7 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
@@ -55,6 +61,7 @@ public class ZenModeEditNamePreferenceControllerTest {
|
|||||||
@Rule
|
@Rule
|
||||||
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
|
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
|
||||||
|
|
||||||
|
private Context mContext;
|
||||||
private ZenModeEditNamePreferenceController mController;
|
private ZenModeEditNamePreferenceController mController;
|
||||||
private LayoutPreference mPreference;
|
private LayoutPreference mPreference;
|
||||||
private TextInputLayout mTextInputLayout;
|
private TextInputLayout mTextInputLayout;
|
||||||
@@ -65,15 +72,15 @@ public class ZenModeEditNamePreferenceControllerTest {
|
|||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
Context context = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
PreferenceManager preferenceManager = new PreferenceManager(context);
|
PreferenceManager preferenceManager = new PreferenceManager(mContext);
|
||||||
|
|
||||||
// Inflation is a test in itself, because it will crash if the Theme isn't set correctly.
|
// 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);
|
R.xml.modes_edit_name_icon, null);
|
||||||
mPreference = preferenceScreen.findPreference("name");
|
mPreference = preferenceScreen.findPreference("name");
|
||||||
|
|
||||||
mController = new ZenModeEditNamePreferenceController(context, "name", mNameSetter);
|
mController = new ZenModeEditNamePreferenceController(mContext, "name", mNameSetter);
|
||||||
mController.displayPreference(preferenceScreen);
|
mController.displayPreference(preferenceScreen);
|
||||||
mTextInputLayout = mPreference.findViewById(R.id.edit_input_layout);
|
mTextInputLayout = mPreference.findViewById(R.id.edit_input_layout);
|
||||||
mEditText = mPreference.findViewById(android.R.id.edit);
|
mEditText = mPreference.findViewById(android.R.id.edit);
|
||||||
@@ -114,4 +121,15 @@ public class ZenModeEditNamePreferenceControllerTest {
|
|||||||
|
|
||||||
assertThat(mTextInputLayout.getError()).isNull();
|
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()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user