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

Commit 1b8c48fe authored by Ameer Armaly's avatar Ameer Armaly Committed by Automerger Merge Worker
Browse files

[DO NOT MERGE] Fix bugs with changing service gesture detection state. am: 912cca9f

parents 6d904465 912cca9f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -906,6 +906,9 @@ class AccessibilityInputFilter extends InputFilter implements EventStreamTransfo
        mServiceDetectsGestures.put(displayId, mode);
    }

    public void resetServiceDetectsGestures() {
        mServiceDetectsGestures.clear();
    }
    public void requestTouchExploration(int displayId) {
        if (mTouchExplorer.contains(displayId)) {
            mTouchExplorer.get(displayId).requestTouchExploration();
+28 −14
Original line number Diff line number Diff line
@@ -2305,6 +2305,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
                if (userState.isTwoFingerPassthroughEnabledLocked()) {
                    flags |= AccessibilityInputFilter.FLAG_REQUEST_2_FINGER_PASSTHROUGH;
                }
            }
            if (userState.isFilterKeyEventsEnabledLocked()) {
                flags |= AccessibilityInputFilter.FLAG_FEATURE_FILTER_KEY_EVENTS;
            }
@@ -2322,8 +2323,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
                if (!mHasInputFilter) {
                    mHasInputFilter = true;
                    if (mInputFilter == null) {
                        mInputFilter = new AccessibilityInputFilter(mContext,
                                AccessibilityManagerService.this);
                        mInputFilter =
                                new AccessibilityInputFilter(
                                        mContext, AccessibilityManagerService.this);
                    }
                    inputFilter = mInputFilter;
                    setInputFilter = true;
@@ -2333,6 +2335,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
                if (mHasInputFilter) {
                    mHasInputFilter = false;
                    mInputFilter.setUserAndEnabledFeatures(userState.mUserId, 0);
                    mInputFilter.resetServiceDetectsGestures();
                    if (userState.isTouchExplorationEnabledLocked()) {
                        //  Service gesture detection is turned on and off on a per-display
                        // basis.
@@ -2343,7 +2346,6 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
                            mInputFilter.setServiceDetectsGesturesEnabled(displayId, mode);
                        }
                    }
                    }
                    inputFilter = null;
                    setInputFilter = true;
                }
@@ -2659,6 +2661,18 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
                Binder.restoreCallingIdentity(identity);
            }
        }
        // Service gesture detection is turned on and off on a per-display
        // basis.
        userState.resetServiceDetectsGestures();
        final ArrayList<Display> displays = getValidDisplayList();
        for (AccessibilityServiceConnection service: userState.mBoundServices) {
            for (Display display : displays) {
                int displayId = display.getDisplayId();
                if (service.isServiceDetectsGesturesEnabled(displayId)) {
                    userState.setServiceDetectsGesturesEnabled(displayId, true);
                }
            }
        }
        userState.setServiceHandlesDoubleTapLocked(serviceHandlesDoubleTapEnabled);
        userState.setMultiFingerGesturesLocked(requestMultiFingerGestures);
        userState.setTwoFingerPassthroughLocked(requestTwoFingerPassthrough);
+3 −0
Original line number Diff line number Diff line
@@ -994,6 +994,9 @@ class AccessibilityUserState {
        mServiceDetectsGestures.put(displayId, mode);
    }

    public void resetServiceDetectsGestures() {
        mServiceDetectsGestures.clear();
    }
    public boolean isServiceDetectsGesturesEnabled(int displayId) {
        if (mServiceDetectsGestures.contains(displayId)) {
            return mServiceDetectsGestures.get(displayId);