am 6b8c69ed: Merge "Update AccessibilityNodeInfo API as per API council request" into klp-dev

* commit '6b8c69edd210ad86eb659e06681422bb29ba2123':
  Update AccessibilityNodeInfo API as per API council request
This commit is contained in:
Svetoslav Ganov
2013-08-27 11:16:04 -07:00
committed by Android Git Automerger
6 changed files with 128 additions and 104 deletions

View File

@@ -28688,6 +28688,7 @@ package android.view.accessibility {
method public void addAction(int); method public void addAction(int);
method public void addChild(android.view.View); method public void addChild(android.view.View);
method public void addChild(android.view.View, int); method public void addChild(android.view.View, int);
method public boolean canOpenPopup();
method public int describeContents(); method public int describeContents();
method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String); method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String);
method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(java.lang.String); method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId(java.lang.String);
@@ -28696,18 +28697,17 @@ package android.view.accessibility {
method public int getActions(); method public int getActions();
method public void getBoundsInParent(android.graphics.Rect); method public void getBoundsInParent(android.graphics.Rect);
method public void getBoundsInScreen(android.graphics.Rect); method public void getBoundsInScreen(android.graphics.Rect);
method public android.os.Bundle getBundle();
method public android.view.accessibility.AccessibilityNodeInfo getChild(int); method public android.view.accessibility.AccessibilityNodeInfo getChild(int);
method public int getChildCount(); method public int getChildCount();
method public java.lang.CharSequence getClassName(); method public java.lang.CharSequence getClassName();
method public android.view.accessibility.AccessibilityNodeInfo.CollectionInfo getCollectionInfo(); method public android.view.accessibility.AccessibilityNodeInfo.CollectionInfo getCollectionInfo();
method public android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo getCollectionItemInfo(); method public android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo getCollectionItemInfo();
method public java.lang.CharSequence getContentDescription(); method public java.lang.CharSequence getContentDescription();
method public android.os.Bundle getExtras();
method public int getInputType(); method public int getInputType();
method public android.view.accessibility.AccessibilityNodeInfo getLabelFor(); method public android.view.accessibility.AccessibilityNodeInfo getLabelFor();
method public android.view.accessibility.AccessibilityNodeInfo getLabeledBy(); method public android.view.accessibility.AccessibilityNodeInfo getLabeledBy();
method public int getMovementGranularities(); method public int getMovementGranularities();
method public boolean getOpensPopup();
method public java.lang.CharSequence getPackageName(); method public java.lang.CharSequence getPackageName();
method public android.view.accessibility.AccessibilityNodeInfo getParent(); method public android.view.accessibility.AccessibilityNodeInfo getParent();
method public android.view.accessibility.AccessibilityNodeInfo.RangeInfo getRangeInfo(); method public android.view.accessibility.AccessibilityNodeInfo.RangeInfo getRangeInfo();
@@ -28746,6 +28746,7 @@ package android.view.accessibility {
method public void setAccessibilityFocused(boolean); method public void setAccessibilityFocused(boolean);
method public void setBoundsInParent(android.graphics.Rect); method public void setBoundsInParent(android.graphics.Rect);
method public void setBoundsInScreen(android.graphics.Rect); method public void setBoundsInScreen(android.graphics.Rect);
method public void setCanOpenPopup(boolean);
method public void setCheckable(boolean); method public void setCheckable(boolean);
method public void setChecked(boolean); method public void setChecked(boolean);
method public void setClassName(java.lang.CharSequence); method public void setClassName(java.lang.CharSequence);
@@ -28770,7 +28771,6 @@ package android.view.accessibility {
method public void setLongClickable(boolean); method public void setLongClickable(boolean);
method public void setMovementGranularities(int); method public void setMovementGranularities(int);
method public void setMultiLine(boolean); method public void setMultiLine(boolean);
method public void setOpensPopup(boolean);
method public void setPackageName(java.lang.CharSequence); method public void setPackageName(java.lang.CharSequence);
method public void setParent(android.view.View); method public void setParent(android.view.View);
method public void setParent(android.view.View, int); method public void setParent(android.view.View, int);
@@ -28822,17 +28822,17 @@ package android.view.accessibility {
} }
public static final class AccessibilityNodeInfo.CollectionInfo { public static final class AccessibilityNodeInfo.CollectionInfo {
method public int getHorizontalSize(); method public int getColumnCount();
method public int getVerticalSize(); method public int getRowCount();
method public boolean isHierarchical(); method public boolean isHierarchical();
method public static android.view.accessibility.AccessibilityNodeInfo.CollectionInfo obtain(int, int, boolean); method public static android.view.accessibility.AccessibilityNodeInfo.CollectionInfo obtain(int, int, boolean);
} }
public static final class AccessibilityNodeInfo.CollectionItemInfo { public static final class AccessibilityNodeInfo.CollectionItemInfo {
method public int getHorizontalPosition(); method public int getColumnIndex();
method public int getHorizontalSpan(); method public int getColumnSpan();
method public int getVerticalPosition(); method public int getRowIndex();
method public int getVerticalSpan(); method public int getRowSpan();
method public boolean isHeading(); method public boolean isHeading();
method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean); method public static android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo obtain(int, int, int, int, boolean);
} }

View File

@@ -518,7 +518,7 @@ public class AccessibilityNodeInfo implements Parcelable {
private int mTextSelectionEnd = UNDEFINED; private int mTextSelectionEnd = UNDEFINED;
private int mInputType = InputType.TYPE_NULL; private int mInputType = InputType.TYPE_NULL;
private Bundle mBundle; private Bundle mExtras;
private int mConnectionId = UNDEFINED; private int mConnectionId = UNDEFINED;
@@ -1471,9 +1471,18 @@ public class AccessibilityNodeInfo implements Parcelable {
} }
/** /**
* Gets if the node is a live region for whose changes the user * Gets if the node is a live region.
* should be notified. It is the responsibility of the accessibility * <p>
* A live region is a node that contains information that is important
* for the user and when it changes the user has to be notified. For
* example, if the user plays a video and the application shows a
* progress indicator with the percentage of buffering, then the progress
* indicator should be marked as a live region.
* </p>
* <p>
* It is the responsibility of the accessibility
* service to monitor this region and notify the user if it changes. * service to monitor this region and notify the user if it changes.
* </p>
* *
* @return If the node is a live region. * @return If the node is a live region.
*/ */
@@ -1525,7 +1534,7 @@ public class AccessibilityNodeInfo implements Parcelable {
* *
* @return If the the node opens a popup. * @return If the the node opens a popup.
*/ */
public boolean getOpensPopup() { public boolean canOpenPopup() {
return getBooleanProperty(BOOLEAN_PROPERTY_OPENS_POPUP); return getBooleanProperty(BOOLEAN_PROPERTY_OPENS_POPUP);
} }
@@ -1539,7 +1548,8 @@ public class AccessibilityNodeInfo implements Parcelable {
* *
* @param opensPopup If the the node opens a popup. * @param opensPopup If the the node opens a popup.
*/ */
public void setOpensPopup(boolean opensPopup) { public void setCanOpenPopup(boolean opensPopup) {
enforceNotSealed();
setBooleanProperty(BOOLEAN_PROPERTY_OPENS_POPUP, opensPopup); setBooleanProperty(BOOLEAN_PROPERTY_OPENS_POPUP, opensPopup);
} }
@@ -1927,7 +1937,7 @@ public class AccessibilityNodeInfo implements Parcelable {
} }
/** /**
* Gets an optional bundle with additional data. The bundle * Gets an optional bundle with extra data. The bundle
* is lazily created and never <code>null</code>. * is lazily created and never <code>null</code>.
* <p> * <p>
* <strong>Note:</strong> It is recommended to use the package * <strong>Note:</strong> It is recommended to use the package
@@ -1939,11 +1949,11 @@ public class AccessibilityNodeInfo implements Parcelable {
* *
* @return The bundle. * @return The bundle.
*/ */
public Bundle getBundle() { public Bundle getExtras() {
if (mBundle == null) { if (mExtras == null) {
mBundle = new Bundle(); mExtras = new Bundle();
} }
return mBundle; return mExtras;
} }
/** /**
@@ -2194,9 +2204,9 @@ public class AccessibilityNodeInfo implements Parcelable {
parcel.writeInt(mTextSelectionEnd); parcel.writeInt(mTextSelectionEnd);
parcel.writeInt(mInputType); parcel.writeInt(mInputType);
if (mBundle != null) { if (mExtras != null) {
parcel.writeInt(1); parcel.writeInt(1);
parcel.writeBundle(mBundle); parcel.writeBundle(mExtras);
} else { } else {
parcel.writeInt(0); parcel.writeInt(0);
} }
@@ -2213,8 +2223,8 @@ public class AccessibilityNodeInfo implements Parcelable {
if (mCollectionInfo != null) { if (mCollectionInfo != null) {
parcel.writeInt(1); parcel.writeInt(1);
parcel.writeInt(mCollectionInfo.getHorizontalSize()); parcel.writeInt(mCollectionInfo.getRowCount());
parcel.writeInt(mCollectionInfo.getVerticalSize()); parcel.writeInt(mCollectionInfo.getColumnCount());
parcel.writeInt(mCollectionInfo.isHierarchical() ? 1 : 0); parcel.writeInt(mCollectionInfo.isHierarchical() ? 1 : 0);
} else { } else {
parcel.writeInt(0); parcel.writeInt(0);
@@ -2222,10 +2232,10 @@ public class AccessibilityNodeInfo implements Parcelable {
if (mCollectionItemInfo != null) { if (mCollectionItemInfo != null) {
parcel.writeInt(1); parcel.writeInt(1);
parcel.writeInt(mCollectionItemInfo.getHorizontalPosition()); parcel.writeInt(mCollectionItemInfo.getColumnIndex());
parcel.writeInt(mCollectionItemInfo.getHorizontalSpan()); parcel.writeInt(mCollectionItemInfo.getColumnSpan());
parcel.writeInt(mCollectionItemInfo.getVerticalPosition()); parcel.writeInt(mCollectionItemInfo.getRowIndex());
parcel.writeInt(mCollectionItemInfo.getVerticalSpan()); parcel.writeInt(mCollectionItemInfo.getRowSpan());
parcel.writeInt(mCollectionItemInfo.isHeading() ? 1 : 0); parcel.writeInt(mCollectionItemInfo.isHeading() ? 1 : 0);
} else { } else {
parcel.writeInt(0); parcel.writeInt(0);
@@ -2266,8 +2276,8 @@ public class AccessibilityNodeInfo implements Parcelable {
mTextSelectionStart = other.mTextSelectionStart; mTextSelectionStart = other.mTextSelectionStart;
mTextSelectionEnd = other.mTextSelectionEnd; mTextSelectionEnd = other.mTextSelectionEnd;
mInputType = other.mInputType; mInputType = other.mInputType;
if (other.mBundle != null && !other.mBundle.isEmpty()) { if (other.mExtras != null && !other.mExtras.isEmpty()) {
getBundle().putAll(other.mBundle); getExtras().putAll(other.mExtras);
} }
mRangeInfo = other.mRangeInfo; mRangeInfo = other.mRangeInfo;
mCollectionInfo = other.mCollectionInfo; mCollectionInfo = other.mCollectionInfo;
@@ -2323,7 +2333,7 @@ public class AccessibilityNodeInfo implements Parcelable {
mInputType = parcel.readInt(); mInputType = parcel.readInt();
if (parcel.readInt() == 1) { if (parcel.readInt() == 1) {
getBundle().putAll(parcel.readBundle()); getExtras().putAll(parcel.readBundle());
} }
if (parcel.readInt() == 1) { if (parcel.readInt() == 1) {
@@ -2376,8 +2386,8 @@ public class AccessibilityNodeInfo implements Parcelable {
mTextSelectionStart = UNDEFINED; mTextSelectionStart = UNDEFINED;
mTextSelectionEnd = UNDEFINED; mTextSelectionEnd = UNDEFINED;
mInputType = InputType.TYPE_NULL; mInputType = InputType.TYPE_NULL;
if (mBundle != null) { if (mExtras != null) {
mBundle.clear(); mExtras.clear();
} }
if (mRangeInfo != null) { if (mRangeInfo != null) {
mRangeInfo.recycle(); mRangeInfo.recycle();
@@ -2677,7 +2687,15 @@ public class AccessibilityNodeInfo implements Parcelable {
/** /**
* Class with information if a node is a collection. Use * Class with information if a node is a collection. Use
* {@link CollectionInfo#obtain(int, int, boolean) to an instance. * {@link CollectionInfo#obtain(int, int, boolean)} to get an instance.
* <p>
* A collection of items has rows and columns and may be hierarchical.
* For example, a horizontal list is a collection with one column, as
* many rows as the list items, and is not hierarchical; A table is a
* collection with several rows, several columns, and is not hierarchical;
* A vertical tree is a hierarchical collection with one column and
* as many rows as the first level children.
* </p>
*/ */
public static final class CollectionInfo { public static final class CollectionInfo {
private static final int MAX_POOL_SIZE = 20; private static final int MAX_POOL_SIZE = 20;
@@ -2685,54 +2703,54 @@ public class AccessibilityNodeInfo implements Parcelable {
private static final SynchronizedPool<CollectionInfo> sPool = private static final SynchronizedPool<CollectionInfo> sPool =
new SynchronizedPool<CollectionInfo>(MAX_POOL_SIZE); new SynchronizedPool<CollectionInfo>(MAX_POOL_SIZE);
private int mHorizontalSize; private int mRowCount;
private int mVerticalSize; private int mColumnCount;
private boolean mHierarchical; private boolean mHierarchical;
/** /**
* Obtains a pooled instance. * Obtains a pooled instance.
* *
* @param horizontalSize The horizontal size. * @param rowCount The number of rows.
* @param verticalSize The vertical size. * @param columnCount The number of columns.
* @param hierarchical Whether the collection is hierarchical. * @param hierarchical Whether the collection is hierarchical.
*/ */
public static CollectionInfo obtain(int horizontalSize, int verticalSize, public static CollectionInfo obtain(int rowCount, int columnCount,
boolean hierarchical) { boolean hierarchical) {
CollectionInfo info = sPool.acquire(); CollectionInfo info = sPool.acquire();
return (info != null) ? info : new CollectionInfo(horizontalSize, return (info != null) ? info : new CollectionInfo(rowCount,
verticalSize, hierarchical); columnCount, hierarchical);
} }
/** /**
* Creates a new instance. * Creates a new instance.
* *
* @param horizontalSize The horizontal size. * @param rowCount The number of rows.
* @param verticalSize The vertical size. * @param columnCount The number of columns.
* @param hierarchical Whether the collection is hierarchical. * @param hierarchical Whether the collection is hierarchical.
*/ */
private CollectionInfo(int horizontalSize, int verticalSize, private CollectionInfo(int rowCount, int columnCount,
boolean hierarchical) { boolean hierarchical) {
mHorizontalSize = horizontalSize; mRowCount = rowCount;
mVerticalSize = verticalSize; mColumnCount = columnCount;
mHierarchical = hierarchical; mHierarchical = hierarchical;
} }
/** /**
* Gets the horizontal size in terms of item positions. * Gets the number of rows.
* *
* @return The size. * @return The row count.
*/ */
public int getHorizontalSize() { public int getRowCount() {
return mHorizontalSize; return mRowCount;
} }
/** /**
* Gets the vertical size in terms of item positions. * Gets the number of columns.
* *
* @return The size. * @return The column count.
*/ */
public int getVerticalSize() { public int getColumnCount() {
return mVerticalSize; return mColumnCount;
} }
/** /**
@@ -2753,15 +2771,23 @@ public class AccessibilityNodeInfo implements Parcelable {
} }
private void clear() { private void clear() {
mHorizontalSize = 0; mRowCount = 0;
mVerticalSize = 0; mColumnCount = 0;
mHierarchical = false; mHierarchical = false;
} }
} }
/** /**
* Class with information if a node is a collection item. Use * Class with information if a node is a collection item. Use
* {@link CollectionItemInfo#obtain(int, int, int, int, boolean) to get an instance. * {@link CollectionItemInfo#obtain(int, int, int, int, boolean)}
* to get an instance.
* <p>
* A collection item is contained in a collection, it starts at
* a given row and column in the collection, and spans one or
* more rows and columns. For example, a header of two related
* table columns starts at the first row and the first column,
* spans one row and two columns.
* </p>
*/ */
public static final class CollectionItemInfo { public static final class CollectionItemInfo {
private static final int MAX_POOL_SIZE = 20; private static final int MAX_POOL_SIZE = 20;
@@ -2772,79 +2798,77 @@ public class AccessibilityNodeInfo implements Parcelable {
/** /**
* Obtains a pooled instance. * Obtains a pooled instance.
* *
* @param horizontalPosition The horizontal item position. * @param rowIndex The row index at which the item is located.
* @param horizontalSpan The horizontal item span. * @param rowSpan The number of rows the item spans.
* @param verticalPosition The vertical item position. * @param columnIndex The column index at which the item is located.
* @param verticalSpan The vertical item span. * @param columnSpan The number of columns the item spans.
* @param heading Whether the item is a heading. * @param heading Whether the item is a heading.
*/ */
public static CollectionItemInfo obtain(int horizontalPosition, int horizontalSpan, public static CollectionItemInfo obtain(int rowIndex, int rowSpan,
int verticalPosition, int verticalSpan, boolean heading) { int columnIndex, int columnSpan, boolean heading) {
CollectionItemInfo info = sPool.acquire(); CollectionItemInfo info = sPool.acquire();
return (info != null) ? info : new CollectionItemInfo(horizontalPosition, return (info != null) ? info : new CollectionItemInfo(rowIndex,
horizontalSpan, verticalPosition, verticalSpan, heading); rowSpan, columnIndex, columnSpan, heading);
} }
private boolean mHeading; private boolean mHeading;
private int mHorizontalPosition; private int mColumnIndex;
private int mVerticalPosition; private int mRowIndex;
private int mHorizontalSpan; private int mColumnSpan;
private int mVerticalSpan; private int mRowSpan;
/** /**
* Creates a new instance. * Creates a new instance.
* *
* @param horizontalPosition The horizontal item position. * @param rowIndex The row index at which the item is located.
* @param horizontalSpan The horizontal item span. * @param rowSpan The number of rows the item spans.
* @param verticalPosition The vertical item position. * @param columnIndex The column index at which the item is located.
* @param verticalSpan The vertical item span. * @param columnSpan The number of columns the item spans.
* @param heading Whether the item is a heading. * @param heading Whether the item is a heading.
*/ */
private CollectionItemInfo(int horizontalPosition, int horizontalSpan, private CollectionItemInfo(int rowIndex, int rowSpan,
int verticalPosition, int verticalSpan, boolean heading) { int columnIndex, int columnSpan, boolean heading) {
mHorizontalPosition = horizontalPosition; mRowIndex = rowIndex;
mHorizontalSpan = horizontalSpan; mRowSpan = rowSpan;
mVerticalPosition = verticalPosition; mColumnIndex = columnIndex;
mVerticalSpan = verticalSpan; mColumnSpan = columnSpan;
mHeading = heading; mHeading = heading;
} }
/** /**
* Gets the horizontal item position in the parent collection. * Gets the column index at which the item is located.
* *
* @return The position. * @return The column index.
*/ */
public int getHorizontalPosition() { public int getColumnIndex() {
return mHorizontalPosition; return mColumnIndex;
} }
/** /**
* Gets the vertical item position in the parent collection. * Gets the row index at which the item is located.
* *
* @return The position. * @return The row index.
*/ */
public int getVerticalPosition() { public int getRowIndex() {
return mVerticalPosition; return mRowIndex;
} }
/** /**
* Gets the horizontal span in terms of item positions * Gets the number of columns the item spans.
* of the parent collection.
* *
* @return The span. * @return The column span.
*/ */
public int getHorizontalSpan() { public int getColumnSpan() {
return mHorizontalSpan; return mColumnSpan;
} }
/** /**
* Gets the vertical span in terms of item positions * Gets the number of rows the item spans.
* of the parent collection.
* *
* @return The span. * @return The row span.
*/ */
public int getVerticalSpan() { public int getRowSpan() {
return mVerticalSpan; return mRowSpan;
} }
/** /**
@@ -2866,10 +2890,10 @@ public class AccessibilityNodeInfo implements Parcelable {
} }
private void clear() { private void clear() {
mHorizontalPosition = 0; mColumnIndex = 0;
mHorizontalSpan = 0; mColumnSpan = 0;
mVerticalPosition = 0; mRowIndex = 0;
mVerticalSpan = 0; mRowSpan = 0;
mHeading = false; mHeading = false;
} }
} }

View File

@@ -234,7 +234,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
@Override @Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(host, info); super.onInitializeAccessibilityNodeInfo(host, info);
info.setOpensPopup(true); info.setCanOpenPopup(true);
} }
}); });
mExpandActivityOverflowButtonImage = mExpandActivityOverflowButtonImage =

View File

@@ -675,7 +675,7 @@ public class Spinner extends AbsSpinner implements OnClickListener {
info.setClassName(Spinner.class.getName()); info.setClassName(Spinner.class.getName());
if (mAdapter != null) { if (mAdapter != null) {
info.setOpensPopup(true); info.setCanOpenPopup(true);
} }
} }

View File

@@ -630,7 +630,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter
@Override @Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info); super.onInitializeAccessibilityNodeInfo(info);
info.setOpensPopup(true); info.setCanOpenPopup(true);
} }
} }

View File

@@ -276,7 +276,7 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
super.onInitializeAccessibilityNodeInfo(info); super.onInitializeAccessibilityNodeInfo(info);
if (mItemData != null && mItemData.hasSubMenu()) { if (mItemData != null && mItemData.hasSubMenu()) {
info.setOpensPopup(true); info.setCanOpenPopup(true);
} }
} }
} }