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

Commit 62058205 authored by Qasid Ahmad Sadiq's avatar Qasid Ahmad Sadiq Committed by Qasid Sadiq
Browse files

Send subtree changed AccessibilityEvent for all alpha changes.

Changes to view.mtransformationInfo.mAlpha outside of View.java weren't triggering subtree AccessibilityEvents.
This is a problem, because that property helps determine a views visibility in accessibility, and AccessibilityServices wouldn't be informed of this change in visibility.
This results in UIs with certain animations not being accessible at all.

This seems like an oversight to begin with, so it's a pretty low risk change.

Test: Tested the reported instance of this bug in Permission Manager, CTSAccessibility*
Change-Id: I02526e5659cf95f1373811008e74954a73addd21
Fix: 127589394
parent 4f09b09f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -213,7 +213,7 @@ public class RenderNodeAnimator extends Animator {
        // it with the final value here.
        if (mRenderProperty == RenderNodeAnimator.ALPHA) {
            mViewTarget.ensureTransformationInfo();
            mViewTarget.mTransformationInfo.mAlpha = mFinalValue;
            mViewTarget.setAlphaInternal(mFinalValue);
        }

        moveToRunningState();
+2 −2
Original line number Diff line number Diff line
@@ -4123,7 +4123,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
         * completely transparent and 1 means completely opaque.
         */
        @ViewDebug.ExportedProperty
        float mAlpha = 1f;
        private float mAlpha = 1f;
        /**
         * The opacity of the view as manipulated by the Fade transition. This is a
@@ -16190,7 +16190,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        return false;
    }
    private void setAlphaInternal(float alpha) {
    void setAlphaInternal(float alpha) {
        float oldAlpha = mTransformationInfo.mAlpha;
        mTransformationInfo.mAlpha = alpha;
        // Report visibility changes, which can affect children, to accessibility
+2 −3
Original line number Diff line number Diff line
@@ -972,7 +972,6 @@ public class ViewPropertyAnimator {
     * @param value The value to set the property to
     */
    private void setValue(int propertyConstant, float value) {
        final View.TransformationInfo info = mView.mTransformationInfo;
        final RenderNode renderNode = mView.mRenderNode;
        switch (propertyConstant) {
            case TRANSLATION_X:
@@ -1009,7 +1008,7 @@ public class ViewPropertyAnimator {
                renderNode.setTranslationZ(value - renderNode.getElevation());
                break;
            case ALPHA:
                info.mAlpha = value;
                mView.setAlphaInternal(value);
                renderNode.setAlpha(value);
                break;
        }
@@ -1047,7 +1046,7 @@ public class ViewPropertyAnimator {
            case Z:
                return node.getElevation() + node.getTranslationZ();
            case ALPHA:
                return mView.mTransformationInfo.mAlpha;
                return mView.getAlpha();
        }
        return 0;
    }