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

Commit cdb2a216 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android Git Automerger
Browse files

am 7b4799ca: Merge "Client app crashes if accessibility service uses invalid...

am 7b4799ca: Merge "Client app crashes if accessibility service uses invalid focus type." into jb-dev

* commit '7b4799ca':
  Client app crashes if accessibility service uses invalid focus type.
parents 108df9db 7b4799ca
Loading
Loading
Loading
Loading
+32 −0
Original line number Original line Diff line number Diff line
@@ -443,6 +443,7 @@ public class AccessibilityNodeInfo implements Parcelable {
     */
     */
    public AccessibilityNodeInfo findFocus(int focus) {
    public AccessibilityNodeInfo findFocus(int focus) {
        enforceSealed();
        enforceSealed();
        enforceValidFocusType(focus);
        if (!canPerformRequestOverConnection(mSourceNodeId)) {
        if (!canPerformRequestOverConnection(mSourceNodeId)) {
            return null;
            return null;
        }
        }
@@ -472,6 +473,7 @@ public class AccessibilityNodeInfo implements Parcelable {
     */
     */
    public AccessibilityNodeInfo focusSearch(int direction) {
    public AccessibilityNodeInfo focusSearch(int direction) {
        enforceSealed();
        enforceSealed();
        enforceValidFocusDirection(direction);
        if (!canPerformRequestOverConnection(mSourceNodeId)) {
        if (!canPerformRequestOverConnection(mSourceNodeId)) {
            return null;
            return null;
        }
        }
@@ -1330,6 +1332,36 @@ public class AccessibilityNodeInfo implements Parcelable {
        }
        }
    }
    }


    private void enforceValidFocusDirection(int direction) {
        switch (direction) {
            case View.FOCUS_DOWN:
            case View.FOCUS_UP:
            case View.FOCUS_LEFT:
            case View.FOCUS_RIGHT:
            case View.FOCUS_FORWARD:
            case View.FOCUS_BACKWARD:
            case View.ACCESSIBILITY_FOCUS_DOWN:
            case View.ACCESSIBILITY_FOCUS_UP:
            case View.ACCESSIBILITY_FOCUS_LEFT:
            case View.ACCESSIBILITY_FOCUS_RIGHT:
            case View.ACCESSIBILITY_FOCUS_FORWARD:
            case View.ACCESSIBILITY_FOCUS_BACKWARD:
                return;
            default:
                throw new IllegalArgumentException("Unknown direction: " + direction);
        }
    }

    private void enforceValidFocusType(int focusType) {
        switch (focusType) {
            case FOCUS_INPUT:
            case FOCUS_ACCESSIBILITY:
                return;
            default:
                throw new IllegalArgumentException("Unknown focus type: " + focusType);
        }
    }

    /**
    /**
     * Enforces that this instance is not sealed.
     * Enforces that this instance is not sealed.
     *
     *