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

Commit 1ad0fd9c authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Accessibility active window not updated on time." into jb-mr1-dev

parents f81dc4c0 f772cba5
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -643,6 +643,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
        return mSecurityPolicy.mActiveWindowId;
    }

    void onTouchInteractionEnd() {
        mSecurityPolicy.onTouchInteractionEnd();
    }

    private void switchUser(int userId) {
        synchronized (mLock) {
            // The user switched so we do not need to restore the current user
@@ -2178,16 +2182,24 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
                        mActiveWindowId = windowId;
                    }
                } break;
                case AccessibilityEvent.TYPE_VIEW_HOVER_ENTER:
                case AccessibilityEvent.TYPE_VIEW_HOVER_EXIT: {
                case AccessibilityEvent.TYPE_VIEW_HOVER_ENTER: {
                    mActiveWindowId = windowId;
                } break;
                case AccessibilityEvent.TYPE_TOUCH_INTERACTION_END: {
                    mActiveWindowId = getFocusedWindowId();
                } break;
            }
        }

        public void onTouchInteractionEnd() {
            // We want to set the active window to be current immediately
            // after the user has stopped touching the screen since if the
            // user types with the IME he should get a feedback for the
            // letter typed in the text view which is in the input focused
            // window. Note that we always deliver hover accessibility events
            // (they are a result of user touching the screen) so change of
            // the active window before all hover accessibility events from
            // the touched window are delivered is fine.
            mActiveWindowId = getFocusedWindowId();
        }

        public int getRetrievalAllowingWindowLocked() {
            return mActiveWindowId;
        }
+5 −0
Original line number Diff line number Diff line
@@ -304,6 +304,7 @@ class TouchExplorer implements EventStreamTransformation {
            mNext.clear();
        }
        mTouchExplorationInProgress = false;
        mAms.onTouchInteractionEnd();
    }

    @Override
@@ -615,6 +616,7 @@ class TouchExplorer implements EventStreamTransformation {
                }
            } break;
            case MotionEvent.ACTION_UP:
                mAms.onTouchInteractionEnd();
                // We know that we do not need the pre-fed gesture points are not
                // needed anymore since the last pointer just went up.
                mStrokeBuffer.clear();
@@ -737,6 +739,7 @@ class TouchExplorer implements EventStreamTransformation {
                 }
            } break;
            case MotionEvent.ACTION_UP: {
                mAms.onTouchInteractionEnd();
                // Announce the end of a new touch interaction.
                sendAccessibilityEvent(
                        AccessibilityEvent.TYPE_TOUCH_INTERACTION_END);
@@ -782,6 +785,7 @@ class TouchExplorer implements EventStreamTransformation {
                        AccessibilityEvent.TYPE_TOUCH_INTERACTION_END);
                //$FALL-THROUGH$
            case MotionEvent.ACTION_POINTER_UP: {
                mAms.onTouchInteractionEnd();
                mLongPressingPointerId = -1;
                mLongPressingPointerDeltaX = 0;
                mLongPressingPointerDeltaY = 0;
@@ -819,6 +823,7 @@ class TouchExplorer implements EventStreamTransformation {
                }
            } break;
            case MotionEvent.ACTION_UP: {
                mAms.onTouchInteractionEnd();
                // Announce the end of gesture recognition.
                sendAccessibilityEvent(
                        AccessibilityEvent.TYPE_GESTURE_DETECTION_END);