Merge "Fix a11y of BiometricPrompt icon and help text" into sc-dev am: f33717e74a

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15276031

Change-Id: I509a45cd3e9bf17d9d5d6abea93029ee046d510d
This commit is contained in:
Curtis Belmonte
2021-07-15 20:35:48 +00:00
committed by Automerger Merge Worker
4 changed files with 30 additions and 2 deletions

View File

@@ -52,6 +52,7 @@
android:layout_width="@dimen/biometric_dialog_biometric_icon_size" android:layout_width="@dimen/biometric_dialog_biometric_icon_size"
android:layout_height="@dimen/biometric_dialog_biometric_icon_size" android:layout_height="@dimen/biometric_dialog_biometric_icon_size"
android:layout_gravity="center" android:layout_gravity="center"
android:contentDescription="@null"
android:scaleType="fitXY" /> android:scaleType="fitXY" />
</FrameLayout> </FrameLayout>

View File

@@ -23,6 +23,8 @@ import android.graphics.drawable.Drawable;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
import androidx.annotation.Nullable;
import com.android.systemui.R; import com.android.systemui.R;
public class AuthBiometricFingerprintView extends AuthBiometricView { public class AuthBiometricFingerprintView extends AuthBiometricView {
@@ -94,12 +96,37 @@ public class AuthBiometricFingerprintView extends AuthBiometricView {
mIconView.setImageDrawable(icon); mIconView.setImageDrawable(icon);
final CharSequence iconContentDescription = getIconContentDescription(newState);
if (iconContentDescription != null) {
mIconView.setContentDescription(iconContentDescription);
}
if (animation != null && shouldAnimateForTransition(lastState, newState)) { if (animation != null && shouldAnimateForTransition(lastState, newState)) {
animation.forceAnimationOnUI(); animation.forceAnimationOnUI();
animation.start(); animation.start();
} }
} }
@Nullable
private CharSequence getIconContentDescription(int newState) {
switch (newState) {
case STATE_IDLE:
case STATE_AUTHENTICATING_ANIMATING_IN:
case STATE_AUTHENTICATING:
case STATE_PENDING_CONFIRMATION:
case STATE_AUTHENTICATED:
return mContext.getString(
R.string.accessibility_fingerprint_dialog_fingerprint_icon);
case STATE_ERROR:
case STATE_HELP:
return mContext.getString(R.string.biometric_dialog_try_again);
default:
return null;
}
}
private boolean shouldAnimateForTransition(int oldState, int newState) { private boolean shouldAnimateForTransition(int oldState, int newState) {
switch (newState) { switch (newState) {
case STATE_HELP: case STATE_HELP:

View File

@@ -636,7 +636,6 @@ public abstract class AuthBiometricView extends LinearLayout {
mIndicatorView.setText(message); mIndicatorView.setText(message);
mIndicatorView.setTextColor(mTextColorError); mIndicatorView.setTextColor(mTextColorError);
mIndicatorView.setVisibility(View.VISIBLE); mIndicatorView.setVisibility(View.VISIBLE);
mIndicatorView.setSelected(true);
mHandler.postDelayed(resetMessageRunnable, mInjector.getDelayAfterError()); mHandler.postDelayed(resetMessageRunnable, mInjector.getDelayAfterError());
Utils.notifyAccessibilityContentChanged(mAccessibilityManager, this); Utils.notifyAccessibilityContentChanged(mAccessibilityManager, this);

View File

@@ -698,7 +698,8 @@ public class UdfpsController implements DozeReceiver {
// This view overlaps the sensor area, so prevent it from being selectable // This view overlaps the sensor area, so prevent it from being selectable
// during a11y. // during a11y.
if (reason == IUdfpsOverlayController.REASON_ENROLL_FIND_SENSOR if (reason == IUdfpsOverlayController.REASON_ENROLL_FIND_SENSOR
|| reason == IUdfpsOverlayController.REASON_ENROLL_ENROLLING) { || reason == IUdfpsOverlayController.REASON_ENROLL_ENROLLING
|| reason == IUdfpsOverlayController.REASON_AUTH_BP) {
mView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); mView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
} }