Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(48)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java

Issue 141533006: [Android] Move the java content/ package to content_public/ to start the split. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Small fixes and findbugs line update Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
deleted file mode 100644
index 1a58d459923719032927b99cdeb3520263b5bf39..0000000000000000000000000000000000000000
--- a/content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java
+++ /dev/null
@@ -1,620 +0,0 @@
-// Copyright 2013 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.
-
-package org.chromium.content.browser.accessibility;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.os.Build;
-import android.os.Bundle;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewParent;
-import android.view.accessibility.AccessibilityEvent;
-import android.view.accessibility.AccessibilityManager;
-import android.view.accessibility.AccessibilityNodeInfo;
-import android.view.accessibility.AccessibilityNodeProvider;
-
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
-import org.chromium.content.browser.ContentViewCore;
-import org.chromium.content.browser.RenderCoordinates;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Native accessibility for a {@link ContentViewCore}.
- *
- * This class is safe to load on ICS and can be used to run tests, but
- * only the subclass, JellyBeanBrowserAccessibilityManager, actually
- * has a AccessibilityNodeProvider implementation needed for native
- * accessibility.
- */
-@JNINamespace("content")
-public class BrowserAccessibilityManager {
- private static final String TAG = "BrowserAccessibilityManager";
-
- private ContentViewCore mContentViewCore;
- private final AccessibilityManager mAccessibilityManager;
- private final RenderCoordinates mRenderCoordinates;
- private long mNativeObj;
- private int mAccessibilityFocusId;
- private int mCurrentHoverId;
- private int mCurrentRootId;
- private final int[] mTempLocation = new int[2];
- private final View mView;
- private boolean mUserHasTouchExplored;
- private boolean mFrameInfoInitialized;
-
- // If this is true, enables an experimental feature that focuses the web page after it
- // finishes loading. Disabled for now because it can be confusing if the user was
- // trying to do something when this happens.
- private boolean mFocusPageOnLoad;
-
- /**
- * Create a BrowserAccessibilityManager object, which is owned by the C++
- * BrowserAccessibilityManagerAndroid instance, and connects to the content view.
- * @param nativeBrowserAccessibilityManagerAndroid A pointer to the counterpart native
- * C++ object that owns this object.
- * @param contentViewCore The content view that this object provides accessibility for.
- */
- @CalledByNative
- private static BrowserAccessibilityManager create(long nativeBrowserAccessibilityManagerAndroid,
- ContentViewCore contentViewCore) {
- 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 {
- return new BrowserAccessibilityManager(
- nativeBrowserAccessibilityManagerAndroid, contentViewCore);
- }
- }
-
- protected BrowserAccessibilityManager(long nativeBrowserAccessibilityManagerAndroid,
- ContentViewCore contentViewCore) {
- mNativeObj = nativeBrowserAccessibilityManagerAndroid;
- mContentViewCore = contentViewCore;
- mContentViewCore.setBrowserAccessibilityManager(this);
- mAccessibilityFocusId = View.NO_ID;
- mCurrentHoverId = View.NO_ID;
- mCurrentRootId = View.NO_ID;
- mView = mContentViewCore.getContainerView();
- mRenderCoordinates = mContentViewCore.getRenderCoordinates();
- mAccessibilityManager =
- (AccessibilityManager) mContentViewCore.getContext()
- .getSystemService(Context.ACCESSIBILITY_SERVICE);
- }
-
- @CalledByNative
- private void onNativeObjectDestroyed() {
- if (mContentViewCore.getBrowserAccessibilityManager() == this) {
- mContentViewCore.setBrowserAccessibilityManager(null);
- }
- mNativeObj = 0;
- mContentViewCore = null;
- }
-
- /**
- * @return An AccessibilityNodeProvider on JellyBean, and null on previous versions.
- */
- public AccessibilityNodeProvider getAccessibilityNodeProvider() {
- return null;
- }
-
- /**
- * @see AccessibilityNodeProvider#createAccessibilityNodeInfo(int)
- */
- protected AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) {
- if (!mAccessibilityManager.isEnabled() || mNativeObj == 0) {
- return null;
- }
-
- int rootId = nativeGetRootId(mNativeObj);
-
- if (virtualViewId == View.NO_ID) {
- return createNodeForHost(rootId);
- }
-
- if (!mFrameInfoInitialized) {
- return null;
- }
-
- final AccessibilityNodeInfo info = AccessibilityNodeInfo.obtain(mView);
- info.setPackageName(mContentViewCore.getContext().getPackageName());
- info.setSource(mView, virtualViewId);
-
- if (virtualViewId == rootId) {
- info.setParent(mView);
- }
-
- if (nativePopulateAccessibilityNodeInfo(mNativeObj, info, virtualViewId)) {
- return info;
- } else {
- info.recycle();
- return null;
- }
- }
-
- /**
- * @see AccessibilityNodeProvider#findAccessibilityNodeInfosByText(String, int)
- */
- protected List<AccessibilityNodeInfo> findAccessibilityNodeInfosByText(String text,
- int virtualViewId) {
- return new ArrayList<AccessibilityNodeInfo>();
- }
-
- /**
- * @see AccessibilityNodeProvider#performAction(int, int, Bundle)
- */
- protected boolean performAction(int virtualViewId, int action, Bundle arguments) {
- // We don't support any actions on the host view or nodes
- // that are not (any longer) in the tree.
- if (!mAccessibilityManager.isEnabled() || mNativeObj == 0
- || !nativeIsNodeValid(mNativeObj, virtualViewId)) {
- return false;
- }
-
- switch (action) {
- case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS:
- if (mAccessibilityFocusId == virtualViewId) {
- return true;
- }
-
- mAccessibilityFocusId = virtualViewId;
- sendAccessibilityEvent(mAccessibilityFocusId,
- AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
- return true;
- case AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS:
- if (mAccessibilityFocusId == virtualViewId) {
- sendAccessibilityEvent(mAccessibilityFocusId,
- AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);
- mAccessibilityFocusId = View.NO_ID;
- }
- return true;
- case AccessibilityNodeInfo.ACTION_CLICK:
- nativeClick(mNativeObj, virtualViewId);
- sendAccessibilityEvent(virtualViewId,
- AccessibilityEvent.TYPE_VIEW_CLICKED);
- return true;
- case AccessibilityNodeInfo.ACTION_FOCUS:
- nativeFocus(mNativeObj, virtualViewId);
- return true;
- case AccessibilityNodeInfo.ACTION_CLEAR_FOCUS:
- nativeBlur(mNativeObj);
- return true;
- default:
- break;
- }
- return false;
- }
-
- /**
- * @see View#onHoverEvent(MotionEvent)
- */
- public boolean onHoverEvent(MotionEvent event) {
- if (!mAccessibilityManager.isEnabled() || mNativeObj == 0) {
- return false;
- }
-
- if (event.getAction() == MotionEvent.ACTION_HOVER_EXIT) return true;
-
- mUserHasTouchExplored = true;
- float x = event.getX();
- float y = event.getY();
-
- // Convert to CSS coordinates.
- int cssX = (int) (mRenderCoordinates.fromPixToLocalCss(x) +
- mRenderCoordinates.getScrollX());
- int cssY = (int) (mRenderCoordinates.fromPixToLocalCss(y) +
- mRenderCoordinates.getScrollY());
- int id = nativeHitTest(mNativeObj, cssX, cssY);
- if (mCurrentHoverId != id) {
- sendAccessibilityEvent(mCurrentHoverId, AccessibilityEvent.TYPE_VIEW_HOVER_EXIT);
- sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_HOVER_ENTER);
- mCurrentHoverId = id;
- }
-
- return true;
- }
-
- /**
- * Called by ContentViewCore to notify us when the frame info is initialized,
- * the first time, since until that point, we can't use mRenderCoordinates to transform
- * web coordinates to screen coordinates.
- */
- public void notifyFrameInfoInitialized() {
- if (mFrameInfoInitialized) return;
-
- mFrameInfoInitialized = true;
- // Invalidate the host, since the chrome accessibility tree is now
- // ready and listed as the child of the host.
- mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
-
- // (Re-) focus focused element, since we weren't able to create an
- // AccessibilityNodeInfo for this element before.
- if (mAccessibilityFocusId != View.NO_ID) {
- sendAccessibilityEvent(mAccessibilityFocusId,
- AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
- }
- }
-
- private void sendAccessibilityEvent(int virtualViewId, int eventType) {
- // If mFrameInfoInitialized is false, then the virtual hierarchy
- // doesn't exist in the view of the Android framework, so should
- // never send any events.
- if (!mAccessibilityManager.isEnabled() || mNativeObj == 0
- || !mFrameInfoInitialized) {
- return;
- }
-
- final AccessibilityEvent event = AccessibilityEvent.obtain(eventType);
- event.setPackageName(mContentViewCore.getContext().getPackageName());
- event.setSource(mView, virtualViewId);
- if (!nativePopulateAccessibilityEvent(mNativeObj, event, virtualViewId, eventType)) {
- event.recycle();
- return;
- }
-
- // This is currently needed if we want Android to draw the yellow box around
- // the item that has accessibility focus. In practice, this doesn't seem to slow
- // things down, because it's only called when the accessibility focus moves.
- // TODO(dmazzoni): remove this if/when Android framework fixes bug.
- mContentViewCore.getContainerView().postInvalidate();
-
- 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;
- }
-
- private AccessibilityNodeInfo createNodeForHost(int rootId) {
- // Since we don't want the parent to be focusable, but we can't remove
- // actions from a node, copy over the necessary fields.
- final AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(mView);
- final AccessibilityNodeInfo source = AccessibilityNodeInfo.obtain(mView);
- mView.onInitializeAccessibilityNodeInfo(source);
-
- // Copy over parent and screen bounds.
- Rect rect = new Rect();
- source.getBoundsInParent(rect);
- result.setBoundsInParent(rect);
- source.getBoundsInScreen(rect);
- result.setBoundsInScreen(rect);
-
- // Set up the parent view, if applicable.
- final ViewParent parent = mView.getParentForAccessibility();
- if (parent instanceof View) {
- result.setParent((View) parent);
- }
-
- // Populate the minimum required fields.
- result.setVisibleToUser(source.isVisibleToUser());
- result.setEnabled(source.isEnabled());
- result.setPackageName(source.getPackageName());
- result.setClassName(source.getClassName());
-
- // Add the Chrome root node.
- if (mFrameInfoInitialized) {
- result.addChild(mView, rootId);
- }
-
- return result;
- }
-
- @CalledByNative
- private void handlePageLoaded(int id) {
- if (mUserHasTouchExplored) return;
-
- if (mFocusPageOnLoad) {
- // Focus the natively focused node (usually document),
- // if this feature is enabled.
- mAccessibilityFocusId = id;
- sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
- }
- }
-
- @CalledByNative
- private void handleFocusChanged(int id) {
- sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_FOCUSED);
-
- // Update accessibility focus if not already set to this node.
- if (mAccessibilityFocusId != id) {
- sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
- mAccessibilityFocusId = id;
- }
- }
-
- @CalledByNative
- private void handleCheckStateChanged(int id) {
- sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_CLICKED);
- }
-
- @CalledByNative
- private void handleTextSelectionChanged(int id) {
- sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED);
- }
-
- @CalledByNative
- private void handleEditableTextChanged(int id) {
- sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED);
- }
-
- @CalledByNative
- private void handleContentChanged(int id) {
- int rootId = nativeGetRootId(mNativeObj);
- if (rootId != mCurrentRootId) {
- mCurrentRootId = rootId;
- mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
- } else {
- sendAccessibilityEvent(id, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
- }
- }
-
- @CalledByNative
- private void handleNavigate() {
- mAccessibilityFocusId = View.NO_ID;
- mUserHasTouchExplored = false;
- mFrameInfoInitialized = false;
- // Invalidate the host, since its child is now gone.
- mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
- }
-
- @CalledByNative
- private void handleScrolledToAnchor(int id) {
- if (mAccessibilityFocusId == id) {
- return;
- }
-
- mAccessibilityFocusId = id;
- sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
- }
-
- @CalledByNative
- private void announceLiveRegionText(String text) {
- mView.announceForAccessibility(text);
- }
-
- @CalledByNative
- private void setAccessibilityNodeInfoParent(AccessibilityNodeInfo node, int parentId) {
- node.setParent(mView, parentId);
- }
-
- @CalledByNative
- private void addAccessibilityNodeInfoChild(AccessibilityNodeInfo node, int childId) {
- node.addChild(mView, childId);
- }
-
- @CalledByNative
- private void setAccessibilityNodeInfoBooleanAttributes(AccessibilityNodeInfo node,
- int virtualViewId, boolean checkable, boolean checked, boolean clickable,
- boolean enabled, boolean focusable, boolean focused, boolean password,
- boolean scrollable, boolean selected, boolean visibleToUser) {
- node.setCheckable(checkable);
- node.setChecked(checked);
- node.setClickable(clickable);
- node.setEnabled(enabled);
- node.setFocusable(focusable);
- node.setFocused(focused);
- node.setPassword(password);
- node.setScrollable(scrollable);
- node.setSelected(selected);
- node.setVisibleToUser(visibleToUser);
-
- if (focusable) {
- if (focused) {
- node.addAction(AccessibilityNodeInfo.ACTION_CLEAR_FOCUS);
- } else {
- node.addAction(AccessibilityNodeInfo.ACTION_FOCUS);
- }
- }
-
- if (mAccessibilityFocusId == virtualViewId) {
- node.setAccessibilityFocused(true);
- node.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS);
- } else {
- node.setAccessibilityFocused(false);
- node.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);
- }
-
- if (clickable) {
- node.addAction(AccessibilityNodeInfo.ACTION_CLICK);
- }
- }
-
- @CalledByNative
- private void setAccessibilityNodeInfoStringAttributes(AccessibilityNodeInfo node,
- String className, String contentDescription) {
- node.setClassName(className);
- node.setContentDescription(contentDescription);
- }
-
- @CalledByNative
- private void setAccessibilityNodeInfoLocation(AccessibilityNodeInfo node,
- int absoluteLeft, int absoluteTop, int parentRelativeLeft, int parentRelativeTop,
- int width, int height, boolean isRootNode) {
- // First set the bounds in parent.
- Rect boundsInParent = new Rect(parentRelativeLeft, parentRelativeTop,
- parentRelativeLeft + width, parentRelativeTop + height);
- if (isRootNode) {
- // Offset of the web content relative to the View.
- boundsInParent.offset(0, (int) mRenderCoordinates.getContentOffsetYPix());
- }
- node.setBoundsInParent(boundsInParent);
-
- // Now set the absolute rect, which requires several transformations.
- Rect rect = new Rect(absoluteLeft, absoluteTop, absoluteLeft + width, absoluteTop + height);
-
- // Offset by the scroll position.
- rect.offset(-(int) mRenderCoordinates.getScrollX(),
- -(int) mRenderCoordinates.getScrollY());
-
- // Convert CSS (web) pixels to Android View pixels
- rect.left = (int) mRenderCoordinates.fromLocalCssToPix(rect.left);
- rect.top = (int) mRenderCoordinates.fromLocalCssToPix(rect.top);
- rect.bottom = (int) mRenderCoordinates.fromLocalCssToPix(rect.bottom);
- rect.right = (int) mRenderCoordinates.fromLocalCssToPix(rect.right);
-
- // Offset by the location of the web content within the view.
- rect.offset(0,
- (int) mRenderCoordinates.getContentOffsetYPix());
-
- // Finally offset by the location of the view within the screen.
- final int[] viewLocation = new int[2];
- mView.getLocationOnScreen(viewLocation);
- rect.offset(viewLocation[0], viewLocation[1]);
-
- node.setBoundsInScreen(rect);
- }
-
- @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);
- event.setEnabled(enabled);
- event.setPassword(password);
- event.setScrollable(scrollable);
- }
-
- @CalledByNative
- private void setAccessibilityEventClassName(AccessibilityEvent event, String className) {
- event.setClassName(className);
- }
-
- @CalledByNative
- private void setAccessibilityEventListAttributes(AccessibilityEvent event,
- int currentItemIndex, int itemCount) {
- event.setCurrentItemIndex(currentItemIndex);
- event.setItemCount(itemCount);
- }
-
- @CalledByNative
- private void setAccessibilityEventScrollAttributes(AccessibilityEvent event,
- int scrollX, int scrollY, int maxScrollX, int maxScrollY) {
- event.setScrollX(scrollX);
- event.setScrollY(scrollY);
- event.setMaxScrollX(maxScrollX);
- event.setMaxScrollY(maxScrollY);
- }
-
- @CalledByNative
- private void setAccessibilityEventTextChangedAttrs(AccessibilityEvent event,
- int fromIndex, int addedCount, int removedCount, String beforeText, String text) {
- event.setFromIndex(fromIndex);
- event.setAddedCount(addedCount);
- event.setRemovedCount(removedCount);
- event.setBeforeText(beforeText);
- event.getText().add(text);
- }
-
- @CalledByNative
- private void setAccessibilityEventSelectionAttrs(AccessibilityEvent event,
- int fromIndex, int addedCount, int itemCount, String text) {
- event.setFromIndex(fromIndex);
- event.setAddedCount(addedCount);
- event.setItemCount(itemCount);
- 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 boolean nativeIsNodeValid(long nativeBrowserAccessibilityManagerAndroid, int id);
- private native int nativeHitTest(long nativeBrowserAccessibilityManagerAndroid, int x, int y);
- private native boolean nativePopulateAccessibilityNodeInfo(
- long nativeBrowserAccessibilityManagerAndroid, AccessibilityNodeInfo info, int id);
- private native boolean nativePopulateAccessibilityEvent(
- long nativeBrowserAccessibilityManagerAndroid, AccessibilityEvent event, int id,
- int eventType);
- private native void nativeClick(long nativeBrowserAccessibilityManagerAndroid, int id);
- private native void nativeFocus(long nativeBrowserAccessibilityManagerAndroid, int id);
- private native void nativeBlur(long nativeBrowserAccessibilityManagerAndroid);
-}

Powered by Google App Engine
This is Rietveld 408576698