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

Commit cb45ddfe authored by Eugene Susla's avatar Eugene Susla
Browse files

Add deltaX/Y to a11y scroll events

Test: cts-tradefed run singleCommand cts -d --module CtsAccessibilityServiceTestCases
cts-tradefed run singleCommand cts -d --module CtsAccessibilityTestCases
cts-tradefed run singleCommand cts -d --module CtsUiAutomationTestCases
Bug: 18359705
Change-Id: Ia07af93ef93a6fd327e3c14de6e25a7022d2f358
parent 02959147
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -47258,6 +47258,8 @@ package android.view.accessibility {
    method public int getMaxScrollY();
    method public int getMaxScrollY();
    method public android.os.Parcelable getParcelableData();
    method public android.os.Parcelable getParcelableData();
    method public int getRemovedCount();
    method public int getRemovedCount();
    method public int getScrollDeltaX();
    method public int getScrollDeltaY();
    method public int getScrollX();
    method public int getScrollX();
    method public int getScrollY();
    method public int getScrollY();
    method public android.view.accessibility.AccessibilityNodeInfo getSource();
    method public android.view.accessibility.AccessibilityNodeInfo getSource();
@@ -47287,6 +47289,8 @@ package android.view.accessibility {
    method public void setParcelableData(android.os.Parcelable);
    method public void setParcelableData(android.os.Parcelable);
    method public void setPassword(boolean);
    method public void setPassword(boolean);
    method public void setRemovedCount(int);
    method public void setRemovedCount(int);
    method public void setScrollDeltaX(int);
    method public void setScrollDeltaY(int);
    method public void setScrollX(int);
    method public void setScrollX(int);
    method public void setScrollY(int);
    method public void setScrollY(int);
    method public void setScrollable(boolean);
    method public void setScrollable(boolean);
+4 −0
Original line number Original line Diff line number Diff line
@@ -50809,6 +50809,8 @@ package android.view.accessibility {
    method public int getMaxScrollY();
    method public int getMaxScrollY();
    method public android.os.Parcelable getParcelableData();
    method public android.os.Parcelable getParcelableData();
    method public int getRemovedCount();
    method public int getRemovedCount();
    method public int getScrollDeltaX();
    method public int getScrollDeltaY();
    method public int getScrollX();
    method public int getScrollX();
    method public int getScrollY();
    method public int getScrollY();
    method public android.view.accessibility.AccessibilityNodeInfo getSource();
    method public android.view.accessibility.AccessibilityNodeInfo getSource();
@@ -50838,6 +50840,8 @@ package android.view.accessibility {
    method public void setParcelableData(android.os.Parcelable);
    method public void setParcelableData(android.os.Parcelable);
    method public void setPassword(boolean);
    method public void setPassword(boolean);
    method public void setRemovedCount(int);
    method public void setRemovedCount(int);
    method public void setScrollDeltaX(int);
    method public void setScrollDeltaY(int);
    method public void setScrollX(int);
    method public void setScrollX(int);
    method public void setScrollY(int);
    method public void setScrollY(int);
    method public void setScrollable(boolean);
    method public void setScrollable(boolean);
+4 −0
Original line number Original line Diff line number Diff line
@@ -47656,6 +47656,8 @@ package android.view.accessibility {
    method public int getMaxScrollY();
    method public int getMaxScrollY();
    method public android.os.Parcelable getParcelableData();
    method public android.os.Parcelable getParcelableData();
    method public int getRemovedCount();
    method public int getRemovedCount();
    method public int getScrollDeltaX();
    method public int getScrollDeltaY();
    method public int getScrollX();
    method public int getScrollX();
    method public int getScrollY();
    method public int getScrollY();
    method public android.view.accessibility.AccessibilityNodeInfo getSource();
    method public android.view.accessibility.AccessibilityNodeInfo getSource();
@@ -47685,6 +47687,8 @@ package android.view.accessibility {
    method public void setParcelableData(android.os.Parcelable);
    method public void setParcelableData(android.os.Parcelable);
    method public void setPassword(boolean);
    method public void setPassword(boolean);
    method public void setRemovedCount(int);
    method public void setRemovedCount(int);
    method public void setScrollDeltaX(int);
    method public void setScrollDeltaY(int);
    method public void setScrollX(int);
    method public void setScrollX(int);
    method public void setScrollY(int);
    method public void setScrollY(int);
    method public void setScrollable(boolean);
    method public void setScrollable(boolean);
+39 −20
Original line number Original line Diff line number Diff line
@@ -12900,17 +12900,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        removeTapCallback();
        removeTapCallback();
    }
    }
    /**
     * Remove the pending callback for sending a
     * {@link AccessibilityEvent#TYPE_VIEW_SCROLLED} accessibility event.
     */
    private void removeSendViewScrolledAccessibilityEventCallback() {
        if (mSendViewScrolledAccessibilityEvent != null) {
            removeCallbacks(mSendViewScrolledAccessibilityEvent);
            mSendViewScrolledAccessibilityEvent.mIsPending = false;
        }
    }
    /**
    /**
     * Sets the TouchDelegate for this View.
     * Sets the TouchDelegate for this View.
     */
     */
@@ -13191,7 +13180,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        notifySubtreeAccessibilityStateChangedIfNeeded();
        notifySubtreeAccessibilityStateChangedIfNeeded();
        if (AccessibilityManager.getInstance(mContext).isEnabled()) {
        if (AccessibilityManager.getInstance(mContext).isEnabled()) {
            postSendViewScrolledAccessibilityEventCallback();
            postSendViewScrolledAccessibilityEventCallback(l - oldl, t - oldt);
        }
        }
        mBackgroundSizeChanged = true;
        mBackgroundSizeChanged = true;
@@ -15721,15 +15710,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * This event is sent at most once every
     * This event is sent at most once every
     * {@link ViewConfiguration#getSendRecurringAccessibilityEventsInterval()}.
     * {@link ViewConfiguration#getSendRecurringAccessibilityEventsInterval()}.
     */
     */
    private void postSendViewScrolledAccessibilityEventCallback() {
    private void postSendViewScrolledAccessibilityEventCallback(int dx, int dy) {
        if (mSendViewScrolledAccessibilityEvent == null) {
        if (mSendViewScrolledAccessibilityEvent == null) {
            mSendViewScrolledAccessibilityEvent = new SendViewScrolledAccessibilityEvent();
            mSendViewScrolledAccessibilityEvent = new SendViewScrolledAccessibilityEvent();
        }
        }
        if (!mSendViewScrolledAccessibilityEvent.mIsPending) {
        mSendViewScrolledAccessibilityEvent.post(dx, dy);
            mSendViewScrolledAccessibilityEvent.mIsPending = true;
            postDelayed(mSendViewScrolledAccessibilityEvent,
                    ViewConfiguration.getSendRecurringAccessibilityEventsInterval());
        }
    }
    }
    /**
    /**
@@ -16987,7 +16972,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        removeUnsetPressCallback();
        removeUnsetPressCallback();
        removeLongPressCallback();
        removeLongPressCallback();
        removePerformClickCallback();
        removePerformClickCallback();
        removeSendViewScrolledAccessibilityEventCallback();
        cancel(mSendViewScrolledAccessibilityEvent);
        stopNestedScroll();
        stopNestedScroll();
        // Anything that started animating right before detach should already
        // Anything that started animating right before detach should already
@@ -25400,13 +25385,47 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     */
     */
    private class SendViewScrolledAccessibilityEvent implements Runnable {
    private class SendViewScrolledAccessibilityEvent implements Runnable {
        public volatile boolean mIsPending;
        public volatile boolean mIsPending;
        public int mDeltaX;
        public int mDeltaY;
        public void post(int dx, int dy) {
            mDeltaX += dx;
            mDeltaY += dy;
            if (!mIsPending) {
                mIsPending = true;
                postDelayed(this, ViewConfiguration.getSendRecurringAccessibilityEventsInterval());
            }
        }
        @Override
        public void run() {
        public void run() {
            sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SCROLLED);
            if (AccessibilityManager.getInstance(mContext).isEnabled()) {
                AccessibilityEvent event = AccessibilityEvent.obtain(
                        AccessibilityEvent.TYPE_VIEW_SCROLLED);
                event.setScrollDeltaX(mDeltaX);
                event.setScrollDeltaY(mDeltaY);
                sendAccessibilityEventUnchecked(event);
            }
            reset();
        }
        private void reset() {
            mIsPending = false;
            mIsPending = false;
            mDeltaX = 0;
            mDeltaY = 0;
        }
        }
    }
    }
    /**
     * Remove the pending callback for sending a
     * {@link AccessibilityEvent#TYPE_VIEW_SCROLLED} accessibility event.
     */
    private void cancel(@Nullable SendViewScrolledAccessibilityEvent callback) {
        if (callback == null || !callback.mIsPending) return;
        removeCallbacks(callback);
        callback.reset();
    }
    /**
    /**
     * <p>
     * <p>
     * This class represents a delegate that can be registered in a {@link View}
     * This class represents a delegate that can be registered in a {@link View}
+4 −0
Original line number Original line Diff line number Diff line
@@ -1117,6 +1117,8 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
        record.mToIndex = parcel.readInt();
        record.mToIndex = parcel.readInt();
        record.mScrollX = parcel.readInt();
        record.mScrollX = parcel.readInt();
        record.mScrollY =  parcel.readInt();
        record.mScrollY =  parcel.readInt();
        record.mScrollDeltaX =  parcel.readInt();
        record.mScrollDeltaY =  parcel.readInt();
        record.mMaxScrollX = parcel.readInt();
        record.mMaxScrollX = parcel.readInt();
        record.mMaxScrollY =  parcel.readInt();
        record.mMaxScrollY =  parcel.readInt();
        record.mAddedCount = parcel.readInt();
        record.mAddedCount = parcel.readInt();
@@ -1169,6 +1171,8 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
        parcel.writeInt(record.mToIndex);
        parcel.writeInt(record.mToIndex);
        parcel.writeInt(record.mScrollX);
        parcel.writeInt(record.mScrollX);
        parcel.writeInt(record.mScrollY);
        parcel.writeInt(record.mScrollY);
        parcel.writeInt(record.mScrollDeltaX);
        parcel.writeInt(record.mScrollDeltaY);
        parcel.writeInt(record.mMaxScrollX);
        parcel.writeInt(record.mMaxScrollX);
        parcel.writeInt(record.mMaxScrollY);
        parcel.writeInt(record.mMaxScrollY);
        parcel.writeInt(record.mAddedCount);
        parcel.writeInt(record.mAddedCount);
Loading