| Index: content/public/android/java/src/org/chromium/content/browser/accessibility/LollipopBrowserAccessibilityManager.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/KitKatBrowserAccessibilityManager.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/LollipopBrowserAccessibilityManager.java
|
| similarity index 50%
|
| rename from content/public/android/java/src/org/chromium/content/browser/accessibility/KitKatBrowserAccessibilityManager.java
|
| rename to content/public/android/java/src/org/chromium/content/browser/accessibility/LollipopBrowserAccessibilityManager.java
|
| index 06bf18c693bb01152e1c4644351a1959eb5d4e4f..a966ed62b9e2e68afe5c671647075c0419becd30 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/accessibility/KitKatBrowserAccessibilityManager.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/LollipopBrowserAccessibilityManager.java
|
| @@ -1,4 +1,4 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| @@ -6,27 +6,25 @@ package org.chromium.content.browser.accessibility;
|
|
|
| import android.view.accessibility.AccessibilityEvent;
|
| import android.view.accessibility.AccessibilityNodeInfo;
|
| +import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
|
|
|
| +import org.chromium.base.CalledByNative;
|
| import org.chromium.base.JNINamespace;
|
| import org.chromium.content.browser.ContentViewCore;
|
|
|
| /**
|
| - * Subclass of BrowserAccessibilityManager for KitKat that creates an
|
| + * Subclass of BrowserAccessibilityManager for Lollipop that creates an
|
| * AccessibilityNodeProvider and delegates its implementation to this object.
|
| - *
|
| - * THIS CLASS IS NOT USED! A bug in the KitKat framework prevents us
|
| - * from using these new APIs. We can re-enable this class after the next
|
| - * Android system update. http://crbug.com/348088/
|
| */
|
| @JNINamespace("content")
|
| -public class KitKatBrowserAccessibilityManager extends JellyBeanBrowserAccessibilityManager {
|
| - KitKatBrowserAccessibilityManager(long nativeBrowserAccessibilityManagerAndroid,
|
| +public class LollipopBrowserAccessibilityManager extends JellyBeanBrowserAccessibilityManager {
|
| + LollipopBrowserAccessibilityManager(long nativeBrowserAccessibilityManagerAndroid,
|
| ContentViewCore contentViewCore) {
|
| super(nativeBrowserAccessibilityManagerAndroid, contentViewCore);
|
| }
|
|
|
| @Override
|
| - protected void setAccessibilityNodeInfoKitKatAttributes(AccessibilityNodeInfo node,
|
| + protected void setAccessibilityNodeInfoLollipopAttributes(AccessibilityNodeInfo node,
|
| boolean canOpenPopup,
|
| boolean contentInvalid,
|
| boolean dismissable,
|
| @@ -63,42 +61,85 @@ public class KitKatBrowserAccessibilityManager extends JellyBeanBrowserAccessibi
|
| }
|
|
|
| @Override
|
| - protected void setAccessibilityEventKitKatAttributes(AccessibilityEvent event,
|
| + protected void setAccessibilityEventLollipopAttributes(AccessibilityEvent event,
|
| boolean canOpenPopup,
|
| boolean contentInvalid,
|
| boolean dismissable,
|
| boolean multiLine,
|
| int inputType,
|
| int liveRegion) {
|
| - // This is just a fallback for pre-KitKat systems.
|
| - // Do nothing on KitKat and higher.
|
| + // This is just a fallback for pre-Lollipop systems.
|
| + // Do nothing on Lollipop and higher.
|
| }
|
|
|
| @Override
|
| protected void setAccessibilityEventCollectionInfo(AccessibilityEvent event,
|
| int rowCount, int columnCount, boolean hierarchical) {
|
| - // This is just a fallback for pre-KitKat systems.
|
| - // Do nothing on KitKat and higher.
|
| + // This is just a fallback for pre-Lollipop systems.
|
| + // Do nothing on Lollipop and higher.
|
| }
|
|
|
| @Override
|
| protected void setAccessibilityEventHeadingFlag(AccessibilityEvent event,
|
| boolean heading) {
|
| - // This is just a fallback for pre-KitKat systems.
|
| - // Do nothing on KitKat and higher.
|
| + // This is just a fallback for pre-Lollipop systems.
|
| + // Do nothing on Lollipop and higher.
|
| }
|
|
|
| @Override
|
| protected void setAccessibilityEventCollectionItemInfo(AccessibilityEvent event,
|
| int rowIndex, int rowSpan, int columnIndex, int columnSpan) {
|
| - // This is just a fallback for pre-KitKat systems.
|
| - // Do nothing on KitKat and higher.
|
| + // This is just a fallback for pre-Lollipop systems.
|
| + // Do nothing on Lollipop and higher.
|
| }
|
|
|
| @Override
|
| protected void setAccessibilityEventRangeInfo(AccessibilityEvent event,
|
| int rangeType, float min, float max, float current) {
|
| - // This is just a fallback for pre-KitKat systems.
|
| - // Do nothing on KitKat and higher.
|
| + // This is just a fallback for pre-Lollipop systems.
|
| + // Do nothing on Lollipop and higher.
|
| + }
|
| +
|
| + @CalledByNative
|
| + @Override
|
| + protected void addAccessibilityNodeInfoActions(AccessibilityNodeInfo node,
|
| + int virtualViewId, boolean canScrollForward, boolean canScrollBackward,
|
| + boolean clickable, boolean editableText, boolean enabled, boolean focusable,
|
| + boolean focused) {
|
| + node.addAction(AccessibilityAction.ACTION_NEXT_HTML_ELEMENT);
|
| + node.addAction(AccessibilityAction.ACTION_PREVIOUS_HTML_ELEMENT);
|
| + node.addAction(AccessibilityAction.ACTION_NEXT_AT_MOVEMENT_GRANULARITY);
|
| + node.addAction(AccessibilityAction.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY);
|
| +
|
| + if (editableText && enabled) {
|
| + node.addAction(AccessibilityAction.ACTION_SET_TEXT);
|
| + node.addAction(AccessibilityAction.ACTION_SET_SELECTION);
|
| + }
|
| +
|
| + if (canScrollForward) {
|
| + node.addAction(AccessibilityAction.ACTION_SCROLL_FORWARD);
|
| + }
|
| +
|
| + if (canScrollBackward) {
|
| + node.addAction(AccessibilityAction.ACTION_SCROLL_BACKWARD);
|
| + }
|
| +
|
| + if (focusable) {
|
| + if (focused) {
|
| + node.addAction(AccessibilityAction.ACTION_CLEAR_FOCUS);
|
| + } else {
|
| + node.addAction(AccessibilityAction.ACTION_FOCUS);
|
| + }
|
| + }
|
| +
|
| + if (mAccessibilityFocusId == virtualViewId) {
|
| + node.addAction(AccessibilityAction.ACTION_CLEAR_ACCESSIBILITY_FOCUS);
|
| + } else if (mVisible) {
|
| + node.addAction(AccessibilityAction.ACTION_ACCESSIBILITY_FOCUS);
|
| + }
|
| +
|
| + if (clickable) {
|
| + node.addAction(AccessibilityAction.ACTION_CLICK);
|
| + }
|
| }
|
| }
|
|
|