Commit d7ce9650 authored by Mark Schillaci's avatar Mark Schillaci Committed by Commit Bot

Android line/word backward navigation traverse events not announcing fix

This CL addresses a regression that appeared as part of the change:
https://chromium-review.googlesource.com/c/chromium/src/+/1998829

This CL fixes backwards navigation by granularity of line or word
which was not announcing any traverse events due to a bug in the
above CL.

Bug: 1048246
Change-Id: I128f5e532bf6a6212daae41eb4d571fa7f10bdbe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2037454Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Commit-Queue: Mark Schillaci <mschillaci@google.com>
Cr-Commit-Position: refs/heads/master@{#738570}
parent 05b9d8b3
...@@ -703,11 +703,13 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider ...@@ -703,11 +703,13 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider
&& WebContentsAccessibilityImplJni.get().isFocused( && WebContentsAccessibilityImplJni.get().isFocused(
mNativeObj, WebContentsAccessibilityImpl.this, mAccessibilityFocusId)) { mNativeObj, WebContentsAccessibilityImpl.this, mAccessibilityFocusId)) {
// If selection/cursor are "unassigned" (e.g. first user swipe), then assign as needed // If selection/cursor are "unassigned" (e.g. first user swipe), then assign as needed
if (mSelectionStart == -1 || mCursorIndex == -1) { if (mSelectionStart == -1) {
mSelectionStart = mSelectionStart =
WebContentsAccessibilityImplJni.get().getEditableTextSelectionStart( WebContentsAccessibilityImplJni.get().getEditableTextSelectionStart(
mNativeObj, WebContentsAccessibilityImpl.this, mNativeObj, WebContentsAccessibilityImpl.this,
mAccessibilityFocusId); mAccessibilityFocusId);
}
if (mCursorIndex == -1) {
mCursorIndex = WebContentsAccessibilityImplJni.get().getEditableTextSelectionEnd( mCursorIndex = WebContentsAccessibilityImplJni.get().getEditableTextSelectionEnd(
mNativeObj, WebContentsAccessibilityImpl.this, mAccessibilityFocusId); mNativeObj, WebContentsAccessibilityImpl.this, mAccessibilityFocusId);
} }
...@@ -719,9 +721,17 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider ...@@ -719,9 +721,17 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider
setGranularityAndUpdateSelection(granularity); setGranularityAndUpdateSelection(granularity);
// This calls finishGranularityMoveNext when it's done. // This calls finishGranularityMoveNext when it's done.
// If we are extending or starting a selection, pass the current cursor index, otherwise
// default to selection start, which will be the position at the end of the last move
if (extendSelection && mIsCurrentlyExtendingSelection) {
return WebContentsAccessibilityImplJni.get().nextAtGranularity(mNativeObj, return WebContentsAccessibilityImplJni.get().nextAtGranularity(mNativeObj,
WebContentsAccessibilityImpl.this, mSelectionGranularity, extendSelection, WebContentsAccessibilityImpl.this, mSelectionGranularity, extendSelection,
virtualViewId, mCursorIndex); virtualViewId, mCursorIndex);
} else {
return WebContentsAccessibilityImplJni.get().nextAtGranularity(mNativeObj,
WebContentsAccessibilityImpl.this, mSelectionGranularity, extendSelection,
virtualViewId, mSelectionStart);
}
} }
private boolean previousAtGranularity( private boolean previousAtGranularity(
...@@ -764,7 +774,7 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider ...@@ -764,7 +774,7 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider
} else { } else {
// User is no longer selecting, or wasn't originally, reset values // User is no longer selecting, or wasn't originally, reset values
mIsCurrentlyExtendingSelection = false; mIsCurrentlyExtendingSelection = false;
mSelectionStart = -1; mSelectionStart = itemEndIndex;
// Set selection to/from indices to new cursor position, itemEndIndex with forwards nav // Set selection to/from indices to new cursor position, itemEndIndex with forwards nav
selectionEvent.setFromIndex(itemEndIndex); selectionEvent.setFromIndex(itemEndIndex);
...@@ -822,7 +832,7 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider ...@@ -822,7 +832,7 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider
} else { } else {
// User is no longer selecting, or wasn't originally, reset values // User is no longer selecting, or wasn't originally, reset values
mIsCurrentlyExtendingSelection = false; mIsCurrentlyExtendingSelection = false;
mSelectionStart = -1; mSelectionStart = itemStartIndex;
// Set selection to/from indices to new cursor position, itemStartIndex with back nav // Set selection to/from indices to new cursor position, itemStartIndex with back nav
selectionEvent.setFromIndex(itemStartIndex); selectionEvent.setFromIndex(itemStartIndex);
...@@ -899,7 +909,8 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider ...@@ -899,7 +909,8 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider
mSelectionGranularity = NO_GRANULARITY_SELECTED; mSelectionGranularity = NO_GRANULARITY_SELECTED;
mIsCurrentlyExtendingSelection = false; mIsCurrentlyExtendingSelection = false;
mSelectionStart = -1; mSelectionStart = -1;
mCursorIndex = -1; mCursorIndex = WebContentsAccessibilityImplJni.get().getTextLength(
mNativeObj, WebContentsAccessibilityImpl.this, mAccessibilityFocusId);
mSuppressNextSelectionEvent = false; mSuppressNextSelectionEvent = false;
if (WebContentsAccessibilityImplJni.get().isAutofillPopupNode( if (WebContentsAccessibilityImplJni.get().isAutofillPopupNode(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment