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

Commit 7f22b4d5 authored by Joshua Mccloskey's avatar Joshua Mccloskey Committed by Android (Google) Code Review
Browse files

Merge "Fixed talkback issue" into qt-r1-dev

parents 3db3383e 6cf1277a
Loading
Loading
Loading
Loading
+29 −4
Original line number Original line Diff line number Diff line
@@ -16,6 +16,8 @@


package com.android.systemui.biometrics;
package com.android.systemui.biometrics;


import static android.view.accessibility.AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE;

import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Context;
import android.graphics.PixelFormat;
import android.graphics.PixelFormat;
@@ -36,6 +38,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.Interpolator;
import android.view.animation.Interpolator;
import android.widget.Button;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ImageView;
@@ -280,6 +283,7 @@ public abstract class BiometricDialogView extends LinearLayout {
        final CharSequence subtitleText = mBundle.getCharSequence(BiometricPrompt.KEY_SUBTITLE);
        final CharSequence subtitleText = mBundle.getCharSequence(BiometricPrompt.KEY_SUBTITLE);
        if (TextUtils.isEmpty(subtitleText)) {
        if (TextUtils.isEmpty(subtitleText)) {
            mSubtitleText.setVisibility(View.GONE);
            mSubtitleText.setVisibility(View.GONE);
            announceAccessibilityEvent();
        } else {
        } else {
            mSubtitleText.setVisibility(View.VISIBLE);
            mSubtitleText.setVisibility(View.VISIBLE);
            mSubtitleText.setText(subtitleText);
            mSubtitleText.setText(subtitleText);
@@ -289,6 +293,7 @@ public abstract class BiometricDialogView extends LinearLayout {
                mBundle.getCharSequence(BiometricPrompt.KEY_DESCRIPTION);
                mBundle.getCharSequence(BiometricPrompt.KEY_DESCRIPTION);
        if (TextUtils.isEmpty(descriptionText)) {
        if (TextUtils.isEmpty(descriptionText)) {
            mDescriptionText.setVisibility(View.GONE);
            mDescriptionText.setVisibility(View.GONE);
            announceAccessibilityEvent();
        } else {
        } else {
            mDescriptionText.setVisibility(View.VISIBLE);
            mDescriptionText.setVisibility(View.VISIBLE);
            mDescriptionText.setText(descriptionText);
            mDescriptionText.setText(descriptionText);
@@ -447,12 +452,14 @@ public abstract class BiometricDialogView extends LinearLayout {
        if (newState == STATE_PENDING_CONFIRMATION) {
        if (newState == STATE_PENDING_CONFIRMATION) {
            mHandler.removeMessages(MSG_RESET_MESSAGE);
            mHandler.removeMessages(MSG_RESET_MESSAGE);
            mErrorText.setVisibility(View.INVISIBLE);
            mErrorText.setVisibility(View.INVISIBLE);
            announceAccessibilityEvent();
            mPositiveButton.setVisibility(View.VISIBLE);
            mPositiveButton.setVisibility(View.VISIBLE);
            mPositiveButton.setEnabled(true);
            mPositiveButton.setEnabled(true);
        } else if (newState == STATE_AUTHENTICATED) {
        } else if (newState == STATE_AUTHENTICATED) {
            mPositiveButton.setVisibility(View.GONE);
            mPositiveButton.setVisibility(View.GONE);
            mNegativeButton.setVisibility(View.GONE);
            mNegativeButton.setVisibility(View.GONE);
            mErrorText.setVisibility(View.INVISIBLE);
            mErrorText.setVisibility(View.INVISIBLE);
            announceAccessibilityEvent();
        }
        }


        if (newState == STATE_PENDING_CONFIRMATION || newState == STATE_AUTHENTICATED) {
        if (newState == STATE_PENDING_CONFIRMATION || newState == STATE_AUTHENTICATED) {
@@ -471,14 +478,20 @@ public abstract class BiometricDialogView extends LinearLayout {


    public void restoreState(Bundle bundle) {
    public void restoreState(Bundle bundle) {
        mRestoredState = bundle;
        mRestoredState = bundle;
        mTryAgainButton.setVisibility(bundle.getInt(KEY_TRY_AGAIN_VISIBILITY));
        final int tryAgainVisibility = bundle.getInt(KEY_TRY_AGAIN_VISIBILITY);
        mPositiveButton.setVisibility(bundle.getInt(KEY_CONFIRM_VISIBILITY));
        mTryAgainButton.setVisibility(tryAgainVisibility);
        final int confirmVisibility = bundle.getInt(KEY_CONFIRM_VISIBILITY);
        mPositiveButton.setVisibility(confirmVisibility);
        mState = bundle.getInt(KEY_STATE);
        mState = bundle.getInt(KEY_STATE);
        mErrorText.setText(bundle.getCharSequence(KEY_ERROR_TEXT_STRING));
        mErrorText.setText(bundle.getCharSequence(KEY_ERROR_TEXT_STRING));
        mErrorText.setContentDescription(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));
        mErrorText.setTextColor(bundle.getInt(KEY_ERROR_TEXT_COLOR));

        if (bundle.getBoolean(KEY_ERROR_TEXT_IS_TEMPORARY)) {
        if (bundle.getBoolean(KEY_ERROR_TEXT_IS_TEMPORARY)) {
            mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_RESET_MESSAGE),
            mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_RESET_MESSAGE),
                    BiometricPrompt.HIDE_DIALOG_DELAY);
                    BiometricPrompt.HIDE_DIALOG_DELAY);
@@ -501,4 +514,16 @@ public abstract class BiometricDialogView extends LinearLayout {
        lp.token = mWindowToken;
        lp.token = mWindowToken;
        return lp;
        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();
    }
}
}
+5 −0
Original line number Original line Diff line number Diff line
@@ -149,6 +149,7 @@ public class FaceDialogView extends BiometricDialogView {
    private final Runnable mErrorToIdleAnimationRunnable = () -> {
    private final Runnable mErrorToIdleAnimationRunnable = () -> {
        updateState(STATE_IDLE);
        updateState(STATE_IDLE);
        mErrorText.setVisibility(View.INVISIBLE);
        mErrorText.setVisibility(View.INVISIBLE);
        announceAccessibilityEvent();
    };
    };


    public FaceDialogView(Context context,
    public FaceDialogView(Context context,
@@ -188,6 +189,7 @@ public class FaceDialogView extends BiometricDialogView {
            mDialog.invalidateOutline();
            mDialog.invalidateOutline();


            mSize = newSize;
            mSize = newSize;
            announceAccessibilityEvent();
        } else if (mSize == SIZE_SMALL && newSize == SIZE_BIG) {
        } else if (mSize == SIZE_SMALL && newSize == SIZE_BIG) {
            mSize = SIZE_GROWING;
            mSize = SIZE_GROWING;


@@ -294,6 +296,7 @@ public class FaceDialogView extends BiometricDialogView {
            mErrorText.setVisibility(View.VISIBLE);
            mErrorText.setVisibility(View.VISIBLE);
        } else {
        } else {
            mErrorText.setVisibility(View.INVISIBLE);
            mErrorText.setVisibility(View.INVISIBLE);
            announceAccessibilityEvent();
        }
        }
    }
    }


@@ -368,11 +371,13 @@ public class FaceDialogView extends BiometricDialogView {
                mTryAgainButton.setVisibility(View.VISIBLE);
                mTryAgainButton.setVisibility(View.VISIBLE);
            } else {
            } else {
                mTryAgainButton.setVisibility(View.GONE);
                mTryAgainButton.setVisibility(View.GONE);
                announceAccessibilityEvent();
            }
            }
        }
        }


        if (show) {
        if (show) {
            mPositiveButton.setVisibility(View.GONE);
            mPositiveButton.setVisibility(View.GONE);
            announceAccessibilityEvent();
        }
        }
    }
    }