| Index: content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java
|
| index 6d63ded0c148b0b4c088d373b9af02707346af15..54ad7171810080c1d4434793253717ebb4deec92 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java
|
| @@ -35,8 +35,6 @@ import java.util.Locale;
|
| */
|
| @JNINamespace("content")
|
| public class BrowserAccessibilityManager {
|
| - private static final String TAG = "BrowserAccessibilityManager";
|
| -
|
| // Constants from AccessibilityNodeInfo defined in the K SDK.
|
| private static final int ACTION_COLLAPSE = 0x00080000;
|
| private static final int ACTION_EXPAND = 0x00040000;
|
| @@ -75,6 +73,7 @@ public class BrowserAccessibilityManager {
|
| private int mSelectionEndIndex;
|
| protected int mAccessibilityFocusId;
|
| private Runnable mSendWindowContentChangedRunnable;
|
| + private View mAutofillPopupView;
|
|
|
| /**
|
| * Create a BrowserAccessibilityManager object, which is owned by the C++
|
| @@ -162,7 +161,6 @@ public class BrowserAccessibilityManager {
|
| if (!mAccessibilityManager.isEnabled() || mNativeObj == 0) {
|
| return null;
|
| }
|
| -
|
| int rootId = nativeGetRootId(mNativeObj);
|
|
|
| if (virtualViewId == View.NO_ID) {
|
| @@ -221,7 +219,6 @@ public class BrowserAccessibilityManager {
|
| switch (action) {
|
| case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS:
|
| if (!moveAccessibilityFocusToId(virtualViewId)) return true;
|
| -
|
| if (!mIsHovering) {
|
| nativeScrollToMakeNodeVisible(
|
| mNativeObj, mAccessibilityFocusId);
|
| @@ -357,6 +354,20 @@ public class BrowserAccessibilityManager {
|
| return false;
|
| }
|
|
|
| + public void onAutofillPopupDisplayed(View autofillPopupView) {
|
| + if (mAccessibilityManager.isEnabled() && mNativeObj != 0) {
|
| + mAutofillPopupView = autofillPopupView;
|
| + nativeOnAutofillPopupDisplayed(mNativeObj);
|
| + }
|
| + }
|
| +
|
| + public void onAutofillPopupDismissed() {
|
| + if (mAccessibilityManager.isEnabled() && mNativeObj != 0) {
|
| + nativeOnAutofillPopupDismissed(mNativeObj);
|
| + mAutofillPopupView = null;
|
| + }
|
| + }
|
| +
|
| /**
|
| * @see View#onHoverEvent(MotionEvent)
|
| */
|
| @@ -543,6 +554,8 @@ public class BrowserAccessibilityManager {
|
| // for the whole subtree of the root.
|
| if (mAccessibilityFocusId == mCurrentRootId) {
|
| nativeSetAccessibilityFocus(mNativeObj, -1);
|
| + } else if (nativeIsAutofillPopupNode(mNativeObj, mAccessibilityFocusId)) {
|
| + mAutofillPopupView.requestFocus();
|
| } else {
|
| nativeSetAccessibilityFocus(mNativeObj, mAccessibilityFocusId);
|
| }
|
| @@ -561,7 +574,6 @@ public class BrowserAccessibilityManager {
|
| AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);
|
| mAccessibilityFocusId = View.NO_ID;
|
| }
|
| -
|
| moveAccessibilityFocusToId(newAccessibilityFocusId);
|
| }
|
|
|
| @@ -1162,8 +1174,14 @@ public class BrowserAccessibilityManager {
|
| Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, 0) == 1);
|
| }
|
|
|
| + private native void nativeOnAutofillPopupDisplayed(
|
| + long nativeBrowserAccessibilityManagerAndroid);
|
| + private native void nativeOnAutofillPopupDismissed(
|
| + long nativeBrowserAccessibilityManagerAndroid);
|
| private native int nativeGetRootId(long nativeBrowserAccessibilityManagerAndroid);
|
| private native boolean nativeIsNodeValid(long nativeBrowserAccessibilityManagerAndroid, int id);
|
| + private native boolean nativeIsAutofillPopupNode(
|
| + long nativeBrowserAccessibilityManagerAndroid, int id);
|
| private native boolean nativeIsEditableText(
|
| long nativeBrowserAccessibilityManagerAndroid, int id);
|
| private native boolean nativeIsFocused(
|
|
|