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

Commit 8bab6de6 authored by alanv's avatar alanv
Browse files

Add support for NEXT_HTML_ELEMENT to WebViewClassic.

Bug: 6663344
Change-Id: Ieb48998e3af12916fe499a12d5bf7a767df8d05b
parent 71fc205d
Loading
Loading
Loading
Loading
+10 −6
Original line number Original line Diff line number Diff line
@@ -488,15 +488,19 @@ class AccessibilityInjector {
            switch (action) {
            switch (action) {
                case AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
                case AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
                case AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY:
                case AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY:
                    if (arguments != null) {
                        final int granularity = arguments.getInt(
                        final int granularity = arguments.getInt(
                                AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT);
                                AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT);
                        mAccessibilityJSONObject.accumulate("granularity", granularity);
                        mAccessibilityJSONObject.accumulate("granularity", granularity);
                    }
                    break;
                    break;
                case AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT:
                case AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT:
                case AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT:
                case AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT:
                    if (arguments != null) {
                        final String element = arguments.getString(
                        final String element = arguments.getString(
                                AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING);
                                AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING);
                        mAccessibilityJSONObject.accumulate("element", element);
                        mAccessibilityJSONObject.accumulate("element", element);
                    }
                    break;
                    break;
            }
            }
        } catch (JSONException e) {
        } catch (JSONException e) {
+13 −3
Original line number Original line Diff line number Diff line
@@ -272,11 +272,19 @@ class AccessibilityInjectorFallback {
    boolean performAccessibilityAction(int action, Bundle arguments) {
    boolean performAccessibilityAction(int action, Bundle arguments) {
        switch (action) {
        switch (action) {
            case AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
            case AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
            case AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY:
            case AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY: {
                final int direction = getDirectionForAction(action);
                final int direction = getDirectionForAction(action);
                final int axis = getAxisForGranularity(arguments.getInt(
                final int axis = getAxisForGranularity(arguments.getInt(
                        AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT));
                        AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT));
                return traverseGivenAxis(direction, axis, true, null);
                return traverseGivenAxis(direction, axis, true, null);
            }
            case AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT:
            case AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT: {
                final int direction = getDirectionForAction(action);
                // TODO: Add support for moving by object.
                final int axis = NAVIGATION_AXIS_SENTENCE;
                return traverseGivenAxis(direction, axis, true, null);
            }
            default:
            default:
                return false;
                return false;
        }
        }
@@ -291,8 +299,10 @@ class AccessibilityInjectorFallback {
     */
     */
    private static int getDirectionForAction(int action) {
    private static int getDirectionForAction(int action) {
        switch (action) {
        switch (action) {
            case AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT:
            case AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
            case AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
                return NAVIGATION_DIRECTION_FORWARD;
                return NAVIGATION_DIRECTION_FORWARD;
            case AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT:
            case AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY:
            case AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY:
                return NAVIGATION_DIRECTION_BACKWARD;
                return NAVIGATION_DIRECTION_BACKWARD;
            default:
            default:
@@ -316,8 +326,8 @@ class AccessibilityInjectorFallback {
            case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE:
            case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE:
                return NAVIGATION_AXIS_SENTENCE;
                return NAVIGATION_AXIS_SENTENCE;
            case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH:
            case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH:
                // TODO: Figure out what nextSibling() actually means.
                // TODO: This should map to object once we implement it.
                return NAVIGATION_AXIS_SIBLING;
                return NAVIGATION_AXIS_SENTENCE;
            case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE:
            case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE:
                return NAVIGATION_AXIS_DOCUMENT;
                return NAVIGATION_AXIS_DOCUMENT;
            default:
            default: