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

Commit ed508280 authored by Qasid Ahmad Sadiq's avatar Qasid Ahmad Sadiq
Browse files

The source of subtree chagnes should be the viewParent

From the description of notifySubtreeAccessibilityStateChangedIfNeeded:
"is *not* local to this view and does represent structural changes such as children and parent."
This is now how this currently behaves cause the source was the view itself.
This had the consquence that if a view is hidden, no event would be sent, because the source of an accessibilityEvent can't be hidden.

Test: CTSAccessibility*  Added CTS Test in another CL. Played around with this build for a while.
Bug: 130273130
Change-Id: I5522e8b1468e8999b615592f16c8d59634d9659f
parent bd07d4d6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -13362,10 +13362,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        if ((mPrivateFlags2 & PFLAG2_SUBTREE_ACCESSIBILITY_STATE_CHANGED) == 0) {
            mPrivateFlags2 |= PFLAG2_SUBTREE_ACCESSIBILITY_STATE_CHANGED;
            if (mParent != null) {
            if (mParent != null && mParent instanceof View) {
                try {
                    mParent.notifySubtreeAccessibilityStateChanged(
                            this, this, AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
                            this, (View) mParent, AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
                } catch (AbstractMethodError e) {
                    Log.e(VIEW_LOG_TAG, mParent.getClass().getSimpleName() +
                            " does not fully implement ViewParent", e);
+5 −4
Original line number Diff line number Diff line
@@ -5144,7 +5144,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
        }

        if (child.getVisibility() != View.GONE) {
            notifySubtreeAccessibilityStateChangedIfNeeded();
            child.notifySubtreeAccessibilityStateChangedIfNeeded();
        }

        if (mTransientIndices != null) {
@@ -5432,7 +5432,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
        dispatchViewRemoved(view);

        if (view.getVisibility() != View.GONE) {
            notifySubtreeAccessibilityStateChangedIfNeeded();
            view.notifySubtreeAccessibilityStateChangedIfNeeded();
        }

        int transientCount = mTransientIndices == null ? 0 : mTransientIndices.size();
@@ -5740,7 +5740,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
        }
        dispatchVisibilityAggregated(isAttachedToWindow() && getWindowVisibility() == VISIBLE
                && isShown());
        notifySubtreeAccessibilityStateChangedIfNeeded();
        child.notifySubtreeAccessibilityStateChangedIfNeeded();
    }

    /**
@@ -6146,7 +6146,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
        if (invalidate) {
            invalidateViewProperty(false, false);
        }
        notifySubtreeAccessibilityStateChangedIfNeeded();
        notifySubtreeAccessibilityStateChanged(
                this, this, AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
    }

    @Override
+2 −1
Original line number Diff line number Diff line
@@ -1106,7 +1106,8 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
            checkSelectionChanged();
        }

        notifySubtreeAccessibilityStateChangedIfNeeded();
        notifySubtreeAccessibilityStateChanged(
                this, this, AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
    }

    /**