Loading core/api/current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -52372,6 +52372,7 @@ package android.view.accessibility { method public android.view.accessibility.AccessibilityNodeInfo getLabeledBy(); method public int getLiveRegion(); method public int getMaxTextLength(); method public int getMinMillisBetweenContentChanges(); method public int getMovementGranularities(); method public CharSequence getPackageName(); method @Nullable public CharSequence getPaneTitle(); Loading Loading @@ -52459,6 +52460,7 @@ package android.view.accessibility { method public void setLiveRegion(int); method public void setLongClickable(boolean); method public void setMaxTextLength(int); method public void setMinMillisBetweenContentChanges(int); method public void setMovementGranularities(int); method public void setMultiLine(boolean); method public void setPackageName(CharSequence); Loading Loading @@ -52538,11 +52540,13 @@ package android.view.accessibility { field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2 field public static final int FOCUS_INPUT = 1; // 0x1 field public static final int MAX_NUMBER_OF_PREFETCHED_NODES = 50; // 0x32 field public static final int MINIMUM_MIN_MILLIS_BETWEEN_CONTENT_CHANGES = 100; // 0x64 field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1 field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4 field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10 field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8 field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2 field public static final int UNDEFINED_MIN_MILLIS_BETWEEN_CONTENT_CHANGES = -1; // 0xffffffff } public static final class AccessibilityNodeInfo.AccessibilityAction implements android.os.Parcelable { core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -2945,6 +2945,7 @@ package android.view { method public static int getHoverTooltipHideTimeout(); method public static int getHoverTooltipShowTimeout(); method public static int getLongPressTooltipHideTimeout(); method public static long getSendRecurringAccessibilityEventsInterval(); method public boolean isPreferKeepClearForFocusEnabled(); } Loading core/java/android/view/ViewConfiguration.java +1 −0 Original line number Diff line number Diff line Loading @@ -822,6 +822,7 @@ public class ViewConfiguration { * * @hide */ @TestApi public static long getSendRecurringAccessibilityEventsInterval() { return SEND_RECURRING_ACCESSIBILITY_EVENTS_INTERVAL_MILLIS; } Loading core/java/android/view/accessibility/AccessibilityNodeInfo.java +63 −0 Original line number Diff line number Diff line Loading @@ -127,6 +127,16 @@ public class AccessibilityNodeInfo implements Parcelable { /** @hide */ public static final long UNDEFINED_NODE_ID = makeNodeId(UNDEFINED_ITEM_ID, UNDEFINED_ITEM_ID); /** * The default value for {@link #getMinMillisBetweenContentChanges}; */ public static final int UNDEFINED_MIN_MILLIS_BETWEEN_CONTENT_CHANGES = -1; /** * The minimum value for {@link #setMinMillisBetweenContentChanges}; */ public static final int MINIMUM_MIN_MILLIS_BETWEEN_CONTENT_CHANGES = 100; /** @hide */ public static final long ROOT_NODE_ID = makeNodeId(ROOT_ITEM_ID, AccessibilityNodeProvider.HOST_VIEW_ID); Loading Loading @@ -879,6 +889,9 @@ public class AccessibilityNodeInfo implements Parcelable { private long mTraversalBefore = UNDEFINED_NODE_ID; private long mTraversalAfter = UNDEFINED_NODE_ID; private int mMinMillisBetweenContentChanges = UNDEFINED_MIN_MILLIS_BETWEEN_CONTENT_CHANGES; private int mBooleanProperties; private final Rect mBoundsInParent = new Rect(); private final Rect mBoundsInScreen = new Rect(); Loading Loading @@ -1781,6 +1794,42 @@ public class AccessibilityNodeInfo implements Parcelable { return mMovementGranularities; } /** * Sets the minimum time duration between two content change events, which is used in throttling * content change events in accessibility services. * * <p> * <strong>Note:</strong> * This value should not be smaller than {@link #MINIMUM_MIN_MILLIS_BETWEEN_CONTENT_CHANGES}, * otherwise it would be ignored by accessibility services. * </p> * * <p> * Example: An app can set MinMillisBetweenContentChanges as 1 min for a view which sends * content change events to accessibility services one event per second. * Accessibility service will throttle those content change events and only handle one event * per minute for that view. * </p> * * @see AccessibilityEvent#getContentChangeTypes for all content change types. * @param minMillisBetweenContentChanges the minimum duration between content change events. */ public void setMinMillisBetweenContentChanges(int minMillisBetweenContentChanges) { enforceNotSealed(); mMinMillisBetweenContentChanges = minMillisBetweenContentChanges >= MINIMUM_MIN_MILLIS_BETWEEN_CONTENT_CHANGES ? minMillisBetweenContentChanges : UNDEFINED_MIN_MILLIS_BETWEEN_CONTENT_CHANGES; } /** * Gets the minimum time duration between two content change events. This method may return * {@link #UNDEFINED_MIN_MILLIS_BETWEEN_CONTENT_CHANGES} */ public int getMinMillisBetweenContentChanges() { return mMinMillisBetweenContentChanges; } /** * Performs an action on the node. * <p> Loading Loading @@ -3951,6 +4000,11 @@ public class AccessibilityNodeInfo implements Parcelable { fieldIndex++; if (mTraversalAfter != DEFAULT.mTraversalAfter) nonDefaultFields |= bitAt(fieldIndex); fieldIndex++; if (mMinMillisBetweenContentChanges != DEFAULT.mMinMillisBetweenContentChanges) { nonDefaultFields |= bitAt(fieldIndex); } fieldIndex++; if (mConnectionId != DEFAULT.mConnectionId) nonDefaultFields |= bitAt(fieldIndex); fieldIndex++; if (!LongArray.elementsEqual(mChildNodeIds, DEFAULT.mChildNodeIds)) { Loading Loading @@ -4080,6 +4134,9 @@ public class AccessibilityNodeInfo implements Parcelable { if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeLong(mLabeledById); if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeLong(mTraversalBefore); if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeLong(mTraversalAfter); if (isBitSet(nonDefaultFields, fieldIndex++)) { parcel.writeInt(mMinMillisBetweenContentChanges); } if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeInt(mConnectionId); Loading Loading @@ -4235,6 +4292,7 @@ public class AccessibilityNodeInfo implements Parcelable { mLabeledById = other.mLabeledById; mTraversalBefore = other.mTraversalBefore; mTraversalAfter = other.mTraversalAfter; mMinMillisBetweenContentChanges = other.mMinMillisBetweenContentChanges; mWindowId = other.mWindowId; mConnectionId = other.mConnectionId; mUniqueId = other.mUniqueId; Loading Loading @@ -4338,6 +4396,9 @@ public class AccessibilityNodeInfo implements Parcelable { if (isBitSet(nonDefaultFields, fieldIndex++)) mLabeledById = parcel.readLong(); if (isBitSet(nonDefaultFields, fieldIndex++)) mTraversalBefore = parcel.readLong(); if (isBitSet(nonDefaultFields, fieldIndex++)) mTraversalAfter = parcel.readLong(); if (isBitSet(nonDefaultFields, fieldIndex++)) { mMinMillisBetweenContentChanges = parcel.readInt(); } if (isBitSet(nonDefaultFields, fieldIndex++)) mConnectionId = parcel.readInt(); Loading Loading @@ -4686,6 +4747,8 @@ public class AccessibilityNodeInfo implements Parcelable { builder.append("; mParentNodeId: 0x").append(Long.toHexString(mParentNodeId)); builder.append("; traversalBefore: 0x").append(Long.toHexString(mTraversalBefore)); builder.append("; traversalAfter: 0x").append(Long.toHexString(mTraversalAfter)); builder.append("; minMillisBetweenContentChanges: ") .append(mMinMillisBetweenContentChanges); int granularities = mMovementGranularities; builder.append("; MovementGranularities: ["); Loading core/tests/coretests/src/android/view/accessibility/AccessibilityNodeInfoTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ public class AccessibilityNodeInfoTest { // The number of fields tested in the corresponding CTS AccessibilityNodeInfoTest: // See fullyPopulateAccessibilityNodeInfo, assertEqualsAccessibilityNodeInfo, // and assertAccessibilityNodeInfoCleared in that class. private static final int NUM_MARSHALLED_PROPERTIES = 41; private static final int NUM_MARSHALLED_PROPERTIES = 42; /** * The number of properties that are purposely not marshalled Loading Loading
core/api/current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -52372,6 +52372,7 @@ package android.view.accessibility { method public android.view.accessibility.AccessibilityNodeInfo getLabeledBy(); method public int getLiveRegion(); method public int getMaxTextLength(); method public int getMinMillisBetweenContentChanges(); method public int getMovementGranularities(); method public CharSequence getPackageName(); method @Nullable public CharSequence getPaneTitle(); Loading Loading @@ -52459,6 +52460,7 @@ package android.view.accessibility { method public void setLiveRegion(int); method public void setLongClickable(boolean); method public void setMaxTextLength(int); method public void setMinMillisBetweenContentChanges(int); method public void setMovementGranularities(int); method public void setMultiLine(boolean); method public void setPackageName(CharSequence); Loading Loading @@ -52538,11 +52540,13 @@ package android.view.accessibility { field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2 field public static final int FOCUS_INPUT = 1; // 0x1 field public static final int MAX_NUMBER_OF_PREFETCHED_NODES = 50; // 0x32 field public static final int MINIMUM_MIN_MILLIS_BETWEEN_CONTENT_CHANGES = 100; // 0x64 field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1 field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4 field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10 field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8 field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2 field public static final int UNDEFINED_MIN_MILLIS_BETWEEN_CONTENT_CHANGES = -1; // 0xffffffff } public static final class AccessibilityNodeInfo.AccessibilityAction implements android.os.Parcelable {
core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -2945,6 +2945,7 @@ package android.view { method public static int getHoverTooltipHideTimeout(); method public static int getHoverTooltipShowTimeout(); method public static int getLongPressTooltipHideTimeout(); method public static long getSendRecurringAccessibilityEventsInterval(); method public boolean isPreferKeepClearForFocusEnabled(); } Loading
core/java/android/view/ViewConfiguration.java +1 −0 Original line number Diff line number Diff line Loading @@ -822,6 +822,7 @@ public class ViewConfiguration { * * @hide */ @TestApi public static long getSendRecurringAccessibilityEventsInterval() { return SEND_RECURRING_ACCESSIBILITY_EVENTS_INTERVAL_MILLIS; } Loading
core/java/android/view/accessibility/AccessibilityNodeInfo.java +63 −0 Original line number Diff line number Diff line Loading @@ -127,6 +127,16 @@ public class AccessibilityNodeInfo implements Parcelable { /** @hide */ public static final long UNDEFINED_NODE_ID = makeNodeId(UNDEFINED_ITEM_ID, UNDEFINED_ITEM_ID); /** * The default value for {@link #getMinMillisBetweenContentChanges}; */ public static final int UNDEFINED_MIN_MILLIS_BETWEEN_CONTENT_CHANGES = -1; /** * The minimum value for {@link #setMinMillisBetweenContentChanges}; */ public static final int MINIMUM_MIN_MILLIS_BETWEEN_CONTENT_CHANGES = 100; /** @hide */ public static final long ROOT_NODE_ID = makeNodeId(ROOT_ITEM_ID, AccessibilityNodeProvider.HOST_VIEW_ID); Loading Loading @@ -879,6 +889,9 @@ public class AccessibilityNodeInfo implements Parcelable { private long mTraversalBefore = UNDEFINED_NODE_ID; private long mTraversalAfter = UNDEFINED_NODE_ID; private int mMinMillisBetweenContentChanges = UNDEFINED_MIN_MILLIS_BETWEEN_CONTENT_CHANGES; private int mBooleanProperties; private final Rect mBoundsInParent = new Rect(); private final Rect mBoundsInScreen = new Rect(); Loading Loading @@ -1781,6 +1794,42 @@ public class AccessibilityNodeInfo implements Parcelable { return mMovementGranularities; } /** * Sets the minimum time duration between two content change events, which is used in throttling * content change events in accessibility services. * * <p> * <strong>Note:</strong> * This value should not be smaller than {@link #MINIMUM_MIN_MILLIS_BETWEEN_CONTENT_CHANGES}, * otherwise it would be ignored by accessibility services. * </p> * * <p> * Example: An app can set MinMillisBetweenContentChanges as 1 min for a view which sends * content change events to accessibility services one event per second. * Accessibility service will throttle those content change events and only handle one event * per minute for that view. * </p> * * @see AccessibilityEvent#getContentChangeTypes for all content change types. * @param minMillisBetweenContentChanges the minimum duration between content change events. */ public void setMinMillisBetweenContentChanges(int minMillisBetweenContentChanges) { enforceNotSealed(); mMinMillisBetweenContentChanges = minMillisBetweenContentChanges >= MINIMUM_MIN_MILLIS_BETWEEN_CONTENT_CHANGES ? minMillisBetweenContentChanges : UNDEFINED_MIN_MILLIS_BETWEEN_CONTENT_CHANGES; } /** * Gets the minimum time duration between two content change events. This method may return * {@link #UNDEFINED_MIN_MILLIS_BETWEEN_CONTENT_CHANGES} */ public int getMinMillisBetweenContentChanges() { return mMinMillisBetweenContentChanges; } /** * Performs an action on the node. * <p> Loading Loading @@ -3951,6 +4000,11 @@ public class AccessibilityNodeInfo implements Parcelable { fieldIndex++; if (mTraversalAfter != DEFAULT.mTraversalAfter) nonDefaultFields |= bitAt(fieldIndex); fieldIndex++; if (mMinMillisBetweenContentChanges != DEFAULT.mMinMillisBetweenContentChanges) { nonDefaultFields |= bitAt(fieldIndex); } fieldIndex++; if (mConnectionId != DEFAULT.mConnectionId) nonDefaultFields |= bitAt(fieldIndex); fieldIndex++; if (!LongArray.elementsEqual(mChildNodeIds, DEFAULT.mChildNodeIds)) { Loading Loading @@ -4080,6 +4134,9 @@ public class AccessibilityNodeInfo implements Parcelable { if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeLong(mLabeledById); if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeLong(mTraversalBefore); if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeLong(mTraversalAfter); if (isBitSet(nonDefaultFields, fieldIndex++)) { parcel.writeInt(mMinMillisBetweenContentChanges); } if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeInt(mConnectionId); Loading Loading @@ -4235,6 +4292,7 @@ public class AccessibilityNodeInfo implements Parcelable { mLabeledById = other.mLabeledById; mTraversalBefore = other.mTraversalBefore; mTraversalAfter = other.mTraversalAfter; mMinMillisBetweenContentChanges = other.mMinMillisBetweenContentChanges; mWindowId = other.mWindowId; mConnectionId = other.mConnectionId; mUniqueId = other.mUniqueId; Loading Loading @@ -4338,6 +4396,9 @@ public class AccessibilityNodeInfo implements Parcelable { if (isBitSet(nonDefaultFields, fieldIndex++)) mLabeledById = parcel.readLong(); if (isBitSet(nonDefaultFields, fieldIndex++)) mTraversalBefore = parcel.readLong(); if (isBitSet(nonDefaultFields, fieldIndex++)) mTraversalAfter = parcel.readLong(); if (isBitSet(nonDefaultFields, fieldIndex++)) { mMinMillisBetweenContentChanges = parcel.readInt(); } if (isBitSet(nonDefaultFields, fieldIndex++)) mConnectionId = parcel.readInt(); Loading Loading @@ -4686,6 +4747,8 @@ public class AccessibilityNodeInfo implements Parcelable { builder.append("; mParentNodeId: 0x").append(Long.toHexString(mParentNodeId)); builder.append("; traversalBefore: 0x").append(Long.toHexString(mTraversalBefore)); builder.append("; traversalAfter: 0x").append(Long.toHexString(mTraversalAfter)); builder.append("; minMillisBetweenContentChanges: ") .append(mMinMillisBetweenContentChanges); int granularities = mMovementGranularities; builder.append("; MovementGranularities: ["); Loading
core/tests/coretests/src/android/view/accessibility/AccessibilityNodeInfoTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ public class AccessibilityNodeInfoTest { // The number of fields tested in the corresponding CTS AccessibilityNodeInfoTest: // See fullyPopulateAccessibilityNodeInfo, assertEqualsAccessibilityNodeInfo, // and assertAccessibilityNodeInfoCleared in that class. private static final int NUM_MARSHALLED_PROPERTIES = 41; private static final int NUM_MARSHALLED_PROPERTIES = 42; /** * The number of properties that are purposely not marshalled Loading