Merge "Merge "Fixed talkback issue" into qt-r1-dev am: 7f22b4d5be" into qt-r1-dev-plus-aosp

This commit is contained in:
Android Build Merger (Role)
2019-06-05 22:40:40 +00:00
committed by Android (Google) Code Review
2 changed files with 34 additions and 4 deletions

View File

@@ -16,6 +16,8 @@
package com.android.systemui.biometrics;
import static android.view.accessibility.AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.graphics.PixelFormat;
@@ -36,6 +38,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.Interpolator;
import android.widget.Button;
import android.widget.ImageView;
@@ -284,6 +287,7 @@ public abstract class BiometricDialogView extends LinearLayout {
final CharSequence subtitleText = mBundle.getCharSequence(BiometricPrompt.KEY_SUBTITLE);
if (TextUtils.isEmpty(subtitleText)) {
mSubtitleText.setVisibility(View.GONE);
announceAccessibilityEvent();
} else {
mSubtitleText.setVisibility(View.VISIBLE);
mSubtitleText.setText(subtitleText);
@@ -293,6 +297,7 @@ public abstract class BiometricDialogView extends LinearLayout {
mBundle.getCharSequence(BiometricPrompt.KEY_DESCRIPTION);
if (TextUtils.isEmpty(descriptionText)) {
mDescriptionText.setVisibility(View.GONE);
announceAccessibilityEvent();
} else {
mDescriptionText.setVisibility(View.VISIBLE);
mDescriptionText.setText(descriptionText);
@@ -451,12 +456,14 @@ public abstract class BiometricDialogView extends LinearLayout {
if (newState == STATE_PENDING_CONFIRMATION) {
mHandler.removeMessages(MSG_RESET_MESSAGE);
mErrorText.setVisibility(View.INVISIBLE);
announceAccessibilityEvent();
mPositiveButton.setVisibility(View.VISIBLE);
mPositiveButton.setEnabled(true);
} else if (newState == STATE_AUTHENTICATED) {
mPositiveButton.setVisibility(View.GONE);
mNegativeButton.setVisibility(View.GONE);
mErrorText.setVisibility(View.INVISIBLE);
announceAccessibilityEvent();
}
if (newState == STATE_PENDING_CONFIRMATION || newState == STATE_AUTHENTICATED) {
@@ -475,14 +482,20 @@ public abstract class BiometricDialogView extends LinearLayout {
public void restoreState(Bundle bundle) {
mRestoredState = bundle;
mTryAgainButton.setVisibility(bundle.getInt(KEY_TRY_AGAIN_VISIBILITY));
mPositiveButton.setVisibility(bundle.getInt(KEY_CONFIRM_VISIBILITY));
final int tryAgainVisibility = bundle.getInt(KEY_TRY_AGAIN_VISIBILITY);
mTryAgainButton.setVisibility(tryAgainVisibility);
final int confirmVisibility = bundle.getInt(KEY_CONFIRM_VISIBILITY);
mPositiveButton.setVisibility(confirmVisibility);
mState = bundle.getInt(KEY_STATE);
mErrorText.setText(bundle.getCharSequence(KEY_ERROR_TEXT_STRING));
mErrorText.setContentDescription(bundle.getCharSequence(KEY_ERROR_TEXT_STRING));
mErrorText.setVisibility(bundle.getInt(KEY_ERROR_TEXT_VISIBILITY));
final int errorTextVisibility = bundle.getInt(KEY_ERROR_TEXT_VISIBILITY);
mErrorText.setVisibility(errorTextVisibility);
if (errorTextVisibility == View.INVISIBLE || tryAgainVisibility == View.INVISIBLE
|| confirmVisibility == View.INVISIBLE) {
announceAccessibilityEvent();
}
mErrorText.setTextColor(bundle.getInt(KEY_ERROR_TEXT_COLOR));
if (bundle.getBoolean(KEY_ERROR_TEXT_IS_TEMPORARY)) {
mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_RESET_MESSAGE),
BiometricPrompt.HIDE_DIALOG_DELAY);
@@ -505,4 +518,16 @@ public abstract class BiometricDialogView extends LinearLayout {
lp.token = mWindowToken;
return lp;
}
// Every time a view becomes invisible we need to announce an accessibility event.
// This is due to an issue in the framework, b/132298701 recommended this workaround.
protected void announceAccessibilityEvent() {
AccessibilityEvent event = AccessibilityEvent.obtain();
event.setEventType(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
event.setContentChangeTypes(CONTENT_CHANGE_TYPE_SUBTREE);
mDialog.sendAccessibilityEventUnchecked(event);
mDialog.notifySubtreeAccessibilityStateChanged(mDialog, mDialog,
CONTENT_CHANGE_TYPE_SUBTREE);
event.recycle();
}
}

View File

@@ -149,6 +149,7 @@ public class FaceDialogView extends BiometricDialogView {
private final Runnable mErrorToIdleAnimationRunnable = () -> {
updateState(STATE_IDLE);
mErrorText.setVisibility(View.INVISIBLE);
announceAccessibilityEvent();
};
public FaceDialogView(Context context,
@@ -188,6 +189,7 @@ public class FaceDialogView extends BiometricDialogView {
mDialog.invalidateOutline();
mSize = newSize;
announceAccessibilityEvent();
} else if (mSize == SIZE_SMALL && newSize == SIZE_BIG) {
mSize = SIZE_GROWING;
@@ -294,6 +296,7 @@ public class FaceDialogView extends BiometricDialogView {
mErrorText.setVisibility(View.VISIBLE);
} else {
mErrorText.setVisibility(View.INVISIBLE);
announceAccessibilityEvent();
}
}
@@ -368,11 +371,13 @@ public class FaceDialogView extends BiometricDialogView {
mTryAgainButton.setVisibility(View.VISIBLE);
} else {
mTryAgainButton.setVisibility(View.GONE);
announceAccessibilityEvent();
}
}
if (show) {
mPositiveButton.setVisibility(View.GONE);
announceAccessibilityEvent();
}
}