| 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 2cf58bec1d3c4470b7b2313014ce3f976bd043fe..ff02f1d647b02da38cdc615c34007d6a25937de5 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
|
| @@ -61,7 +61,10 @@ public class BrowserAccessibilityManager {
|
| @CalledByNative
|
| private static BrowserAccessibilityManager create(long nativeBrowserAccessibilityManagerAndroid,
|
| ContentViewCore contentViewCore) {
|
| - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
| + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
| + return new KitKatBrowserAccessibilityManager(
|
| + nativeBrowserAccessibilityManagerAndroid, contentViewCore);
|
| + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
| return new JellyBeanBrowserAccessibilityManager(
|
| nativeBrowserAccessibilityManagerAndroid, contentViewCore);
|
| } else {
|
| @@ -240,6 +243,15 @@ public class BrowserAccessibilityManager {
|
| mContentViewCore.getContainerView().requestSendAccessibilityEvent(mView, event);
|
| }
|
|
|
| + private Bundle getOrCreateBundleForAccessibilityEvent(AccessibilityEvent event) {
|
| + Bundle bundle = (Bundle) event.getParcelableData();
|
| + if (bundle == null) {
|
| + bundle = new Bundle();
|
| + event.setParcelableData(bundle);
|
| + }
|
| + return bundle;
|
| + }
|
| +
|
| @CalledByNative
|
| private void handlePageLoaded(int id) {
|
| if (mUserHasTouchExplored) return;
|
| @@ -395,6 +407,35 @@ public class BrowserAccessibilityManager {
|
| }
|
|
|
| @CalledByNative
|
| + protected void setAccessibilityNodeInfoKitKatAttributes(AccessibilityNodeInfo node,
|
| + boolean canOpenPopup,
|
| + boolean contentInvalid,
|
| + boolean dismissable,
|
| + boolean multiLine,
|
| + int inputType,
|
| + int liveRegion) {
|
| + // Requires KitKat or higher.
|
| + }
|
| +
|
| + @CalledByNative
|
| + protected void setAccessibilityNodeInfoCollectionInfo(AccessibilityNodeInfo node,
|
| + int rowCount, int columnCount, boolean hierarchical) {
|
| + // Requires KitKat or higher.
|
| + }
|
| +
|
| + @CalledByNative
|
| + protected void setAccessibilityNodeInfoCollectionItemInfo(AccessibilityNodeInfo node,
|
| + int rowIndex, int rowSpan, int columnIndex, int columnSpan, boolean heading) {
|
| + // Requires KitKat or higher.
|
| + }
|
| +
|
| + @CalledByNative
|
| + protected void setAccessibilityNodeInfoRangeInfo(AccessibilityNodeInfo node,
|
| + int rangeType, float min, float max, float current) {
|
| + // Requires KitKat or higher.
|
| + }
|
| +
|
| + @CalledByNative
|
| private void setAccessibilityEventBooleanAttributes(AccessibilityEvent event,
|
| boolean checked, boolean enabled, boolean password, boolean scrollable) {
|
| event.setChecked(checked);
|
| @@ -443,6 +484,57 @@ public class BrowserAccessibilityManager {
|
| event.getText().add(text);
|
| }
|
|
|
| + @CalledByNative
|
| + protected void setAccessibilityEventKitKatAttributes(AccessibilityEvent event,
|
| + boolean canOpenPopup,
|
| + boolean contentInvalid,
|
| + boolean dismissable,
|
| + boolean multiLine,
|
| + int inputType,
|
| + int liveRegion) {
|
| + // Backwards compatibility for KitKat AccessibilityNodeInfo fields.
|
| + Bundle bundle = getOrCreateBundleForAccessibilityEvent(event);
|
| + bundle.putBoolean("AccessibilityNodeInfo.canOpenPopup", canOpenPopup);
|
| + bundle.putBoolean("AccessibilityNodeInfo.contentInvalid", contentInvalid);
|
| + bundle.putBoolean("AccessibilityNodeInfo.dismissable", dismissable);
|
| + bundle.putBoolean("AccessibilityNodeInfo.multiLine", multiLine);
|
| + bundle.putInt("AccessibilityNodeInfo.inputType", inputType);
|
| + bundle.putInt("AccessibilityNodeInfo.liveRegion", liveRegion);
|
| + }
|
| +
|
| + @CalledByNative
|
| + protected void setAccessibilityEventCollectionInfo(AccessibilityEvent event,
|
| + int rowCount, int columnCount, boolean hierarchical) {
|
| + // Backwards compatibility for KitKat AccessibilityNodeInfo fields.
|
| + Bundle bundle = getOrCreateBundleForAccessibilityEvent(event);
|
| + bundle.putInt("AccessibilityNodeInfo.CollectionInfo.rowCount", rowCount);
|
| + bundle.putInt("AccessibilityNodeInfo.CollectionInfo.columnCount", columnCount);
|
| + bundle.putBoolean("AccessibilityNodeInfo.CollectionInfo.hierarchical", hierarchical);
|
| + }
|
| +
|
| + @CalledByNative
|
| + protected void setAccessibilityEventCollectionItemInfo(AccessibilityEvent event,
|
| + int rowIndex, int rowSpan, int columnIndex, int columnSpan, boolean heading) {
|
| + // Backwards compatibility for KitKat AccessibilityNodeInfo fields.
|
| + Bundle bundle = getOrCreateBundleForAccessibilityEvent(event);
|
| + bundle.putInt("AccessibilityNodeInfo.CollectionItemInfo.rowIndex", rowIndex);
|
| + bundle.putInt("AccessibilityNodeInfo.CollectionItemInfo.rowSpan", rowSpan);
|
| + bundle.putInt("AccessibilityNodeInfo.CollectionItemInfo.columnIndex", columnIndex);
|
| + bundle.putInt("AccessibilityNodeInfo.CollectionItemInfo.columnSpan", columnSpan);
|
| + bundle.putBoolean("AccessibilityNodeInfo.CollectionItemInfo.heading", heading);
|
| + }
|
| +
|
| + @CalledByNative
|
| + protected void setAccessibilityEventRangeInfo(AccessibilityEvent event,
|
| + int rangeType, float min, float max, float current) {
|
| + // Backwards compatibility for KitKat AccessibilityNodeInfo fields.
|
| + Bundle bundle = getOrCreateBundleForAccessibilityEvent(event);
|
| + bundle.putInt("AccessibilityNodeInfo.RangeInfo.type", rangeType);
|
| + bundle.putFloat("AccessibilityNodeInfo.RangeInfo.min", min);
|
| + bundle.putFloat("AccessibilityNodeInfo.RangeInfo.max", max);
|
| + bundle.putFloat("AccessibilityNodeInfo.RangeInfo.current", current);
|
| + }
|
| +
|
| private native int nativeGetRootId(long nativeBrowserAccessibilityManagerAndroid);
|
| private native int nativeHitTest(long nativeBrowserAccessibilityManagerAndroid, int x, int y);
|
| private native boolean nativePopulateAccessibilityNodeInfo(
|
|
|