Loading api/current.txt +3 −0 Original line number Original line Diff line number Diff line Loading @@ -30809,6 +30809,7 @@ package android.text { public static class InputFilter.LengthFilter implements android.text.InputFilter { public static class InputFilter.LengthFilter implements android.text.InputFilter { ctor public InputFilter.LengthFilter(int); ctor public InputFilter.LengthFilter(int); method public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int); method public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int); method public int getMax(); } } public abstract interface InputType { public abstract interface InputType { Loading Loading @@ -36042,6 +36043,7 @@ package android.view.accessibility { 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 getLiveRegion(); method public int getLiveRegion(); method public int getMaxTextLength(); method public int getMovementGranularities(); method public int getMovementGranularities(); 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(); Loading Loading @@ -36105,6 +36107,7 @@ package android.view.accessibility { method public void setLabeledBy(android.view.View, int); method public void setLabeledBy(android.view.View, int); method public void setLiveRegion(int); method public void setLiveRegion(int); method public void setLongClickable(boolean); method public void setLongClickable(boolean); method public void setMaxTextLength(int); method public void setMovementGranularities(int); method public void setMovementGranularities(int); method public void setMultiLine(boolean); method public void setMultiLine(boolean); method public void setPackageName(java.lang.CharSequence); method public void setPackageName(java.lang.CharSequence); core/java/android/text/InputFilter.java +10 −4 Original line number Original line Diff line number Diff line Loading @@ -75,14 +75,15 @@ public interface InputFilter * greater than the specified length. * greater than the specified length. */ */ public static class LengthFilter implements InputFilter { public static class LengthFilter implements InputFilter { private final int mMax; public LengthFilter(int max) { public LengthFilter(int max) { mMax = max; mMax = max; } } public CharSequence filter(CharSequence source, int start, int end, public CharSequence filter(CharSequence source, int start, int end, Spanned dest, Spanned dest, int dstart, int dend) { int dstart, int dend) { int keep = mMax - (dest.length() - (dend - dstart)); int keep = mMax - (dest.length() - (dend - dstart)); if (keep <= 0) { if (keep <= 0) { return ""; return ""; } else if (keep >= end - start) { } else if (keep >= end - start) { Loading @@ -99,6 +100,11 @@ public interface InputFilter } } } } private int mMax; /** * @return the maximum length enforced by this input filter */ public int getMax() { return mMax; } } } } } core/java/android/view/accessibility/AccessibilityNodeInfo.java +36 −2 Original line number Original line Diff line number Diff line Loading @@ -562,6 +562,7 @@ public class AccessibilityNodeInfo implements Parcelable { private LongArray mChildNodeIds; private LongArray mChildNodeIds; private ArrayList<AccessibilityAction> mActions; private ArrayList<AccessibilityAction> mActions; private int mMaxTextLength = -1; private int mMovementGranularities; private int mMovementGranularities; private int mTextSelectionStart = UNDEFINED_SELECTION_INDEX; private int mTextSelectionStart = UNDEFINED_SELECTION_INDEX; Loading Loading @@ -1044,6 +1045,36 @@ public class AccessibilityNodeInfo implements Parcelable { return mActions.remove(action); return mActions.remove(action); } } /** * Sets the maximum text length, or -1 for no limit. * <p> * Typically used to indicate that an editable text field has a limit on * the number of characters entered. * <p> * <strong>Note:</strong> Cannot be called from an * {@link android.accessibilityservice.AccessibilityService}. * This class is made immutable before being delivered to an AccessibilityService. * * @param max The maximum text length. * @see #getMaxTextLength() * * @throws IllegalStateException If called from an AccessibilityService. */ public void setMaxTextLength(int max) { enforceNotSealed(); mMaxTextLength = max; } /** * Returns the maximum text length for this node. * * @return The maximum text length, or -1 for no limit. * @see #setMaxTextLength(int) */ public int getMaxTextLength() { return mMaxTextLength; } /** /** * Sets the movement granularities for traversing the text of this node. * Sets the movement granularities for traversing the text of this node. * <p> * <p> Loading Loading @@ -2469,8 +2500,8 @@ public class AccessibilityNodeInfo implements Parcelable { parcel.writeInt(0); parcel.writeInt(0); } } parcel.writeInt(mMaxTextLength); parcel.writeInt(mMovementGranularities); parcel.writeInt(mMovementGranularities); parcel.writeInt(mBooleanProperties); parcel.writeInt(mBooleanProperties); parcel.writeCharSequence(mPackageName); parcel.writeCharSequence(mPackageName); Loading Loading @@ -2562,6 +2593,7 @@ public class AccessibilityNodeInfo implements Parcelable { } } mBooleanProperties = other.mBooleanProperties; mBooleanProperties = other.mBooleanProperties; mMaxTextLength = other.mMaxTextLength; mMovementGranularities = other.mMovementGranularities; mMovementGranularities = other.mMovementGranularities; final LongArray otherChildNodeIds = other.mChildNodeIds; final LongArray otherChildNodeIds = other.mChildNodeIds; Loading Loading @@ -2636,8 +2668,8 @@ public class AccessibilityNodeInfo implements Parcelable { } } } } mMaxTextLength = parcel.readInt(); mMovementGranularities = parcel.readInt(); mMovementGranularities = parcel.readInt(); mBooleanProperties = parcel.readInt(); mBooleanProperties = parcel.readInt(); mPackageName = parcel.readCharSequence(); mPackageName = parcel.readCharSequence(); Loading Loading @@ -2695,6 +2727,7 @@ public class AccessibilityNodeInfo implements Parcelable { mLabeledById = ROOT_NODE_ID; mLabeledById = ROOT_NODE_ID; mWindowId = UNDEFINED_ITEM_ID; mWindowId = UNDEFINED_ITEM_ID; mConnectionId = UNDEFINED_CONNECTION_ID; mConnectionId = UNDEFINED_CONNECTION_ID; mMaxTextLength = -1; mMovementGranularities = 0; mMovementGranularities = 0; if (mChildNodeIds != null) { if (mChildNodeIds != null) { mChildNodeIds.clear(); mChildNodeIds.clear(); Loading Loading @@ -2911,6 +2944,7 @@ public class AccessibilityNodeInfo implements Parcelable { builder.append("; className: ").append(mClassName); builder.append("; className: ").append(mClassName); builder.append("; text: ").append(mText); builder.append("; text: ").append(mText); builder.append("; error: ").append(mError); builder.append("; error: ").append(mError); builder.append("; maxTextLength: ").append(mMaxTextLength); builder.append("; contentDescription: ").append(mContentDescription); builder.append("; contentDescription: ").append(mContentDescription); builder.append("; viewIdResName: ").append(mViewIdResourceName); builder.append("; viewIdResName: ").append(mViewIdResourceName); Loading core/java/android/widget/TextView.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -8392,6 +8392,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } } } // Check for known input filter types. final int numFilters = mFilters.length; for (int i = 0; i < numFilters; i++) { final InputFilter filter = mFilters[i]; if (filter instanceof InputFilter.LengthFilter) { info.setMaxTextLength(((InputFilter.LengthFilter) filter).getMax()); } } if (!isSingleLine()) { if (!isSingleLine()) { info.setMultiLine(true); info.setMultiLine(true); } } Loading Loading
api/current.txt +3 −0 Original line number Original line Diff line number Diff line Loading @@ -30809,6 +30809,7 @@ package android.text { public static class InputFilter.LengthFilter implements android.text.InputFilter { public static class InputFilter.LengthFilter implements android.text.InputFilter { ctor public InputFilter.LengthFilter(int); ctor public InputFilter.LengthFilter(int); method public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int); method public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int); method public int getMax(); } } public abstract interface InputType { public abstract interface InputType { Loading Loading @@ -36042,6 +36043,7 @@ package android.view.accessibility { 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 getLiveRegion(); method public int getLiveRegion(); method public int getMaxTextLength(); method public int getMovementGranularities(); method public int getMovementGranularities(); 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(); Loading Loading @@ -36105,6 +36107,7 @@ package android.view.accessibility { method public void setLabeledBy(android.view.View, int); method public void setLabeledBy(android.view.View, int); method public void setLiveRegion(int); method public void setLiveRegion(int); method public void setLongClickable(boolean); method public void setLongClickable(boolean); method public void setMaxTextLength(int); method public void setMovementGranularities(int); method public void setMovementGranularities(int); method public void setMultiLine(boolean); method public void setMultiLine(boolean); method public void setPackageName(java.lang.CharSequence); method public void setPackageName(java.lang.CharSequence);
core/java/android/text/InputFilter.java +10 −4 Original line number Original line Diff line number Diff line Loading @@ -75,14 +75,15 @@ public interface InputFilter * greater than the specified length. * greater than the specified length. */ */ public static class LengthFilter implements InputFilter { public static class LengthFilter implements InputFilter { private final int mMax; public LengthFilter(int max) { public LengthFilter(int max) { mMax = max; mMax = max; } } public CharSequence filter(CharSequence source, int start, int end, public CharSequence filter(CharSequence source, int start, int end, Spanned dest, Spanned dest, int dstart, int dend) { int dstart, int dend) { int keep = mMax - (dest.length() - (dend - dstart)); int keep = mMax - (dest.length() - (dend - dstart)); if (keep <= 0) { if (keep <= 0) { return ""; return ""; } else if (keep >= end - start) { } else if (keep >= end - start) { Loading @@ -99,6 +100,11 @@ public interface InputFilter } } } } private int mMax; /** * @return the maximum length enforced by this input filter */ public int getMax() { return mMax; } } } } }
core/java/android/view/accessibility/AccessibilityNodeInfo.java +36 −2 Original line number Original line Diff line number Diff line Loading @@ -562,6 +562,7 @@ public class AccessibilityNodeInfo implements Parcelable { private LongArray mChildNodeIds; private LongArray mChildNodeIds; private ArrayList<AccessibilityAction> mActions; private ArrayList<AccessibilityAction> mActions; private int mMaxTextLength = -1; private int mMovementGranularities; private int mMovementGranularities; private int mTextSelectionStart = UNDEFINED_SELECTION_INDEX; private int mTextSelectionStart = UNDEFINED_SELECTION_INDEX; Loading Loading @@ -1044,6 +1045,36 @@ public class AccessibilityNodeInfo implements Parcelable { return mActions.remove(action); return mActions.remove(action); } } /** * Sets the maximum text length, or -1 for no limit. * <p> * Typically used to indicate that an editable text field has a limit on * the number of characters entered. * <p> * <strong>Note:</strong> Cannot be called from an * {@link android.accessibilityservice.AccessibilityService}. * This class is made immutable before being delivered to an AccessibilityService. * * @param max The maximum text length. * @see #getMaxTextLength() * * @throws IllegalStateException If called from an AccessibilityService. */ public void setMaxTextLength(int max) { enforceNotSealed(); mMaxTextLength = max; } /** * Returns the maximum text length for this node. * * @return The maximum text length, or -1 for no limit. * @see #setMaxTextLength(int) */ public int getMaxTextLength() { return mMaxTextLength; } /** /** * Sets the movement granularities for traversing the text of this node. * Sets the movement granularities for traversing the text of this node. * <p> * <p> Loading Loading @@ -2469,8 +2500,8 @@ public class AccessibilityNodeInfo implements Parcelable { parcel.writeInt(0); parcel.writeInt(0); } } parcel.writeInt(mMaxTextLength); parcel.writeInt(mMovementGranularities); parcel.writeInt(mMovementGranularities); parcel.writeInt(mBooleanProperties); parcel.writeInt(mBooleanProperties); parcel.writeCharSequence(mPackageName); parcel.writeCharSequence(mPackageName); Loading Loading @@ -2562,6 +2593,7 @@ public class AccessibilityNodeInfo implements Parcelable { } } mBooleanProperties = other.mBooleanProperties; mBooleanProperties = other.mBooleanProperties; mMaxTextLength = other.mMaxTextLength; mMovementGranularities = other.mMovementGranularities; mMovementGranularities = other.mMovementGranularities; final LongArray otherChildNodeIds = other.mChildNodeIds; final LongArray otherChildNodeIds = other.mChildNodeIds; Loading Loading @@ -2636,8 +2668,8 @@ public class AccessibilityNodeInfo implements Parcelable { } } } } mMaxTextLength = parcel.readInt(); mMovementGranularities = parcel.readInt(); mMovementGranularities = parcel.readInt(); mBooleanProperties = parcel.readInt(); mBooleanProperties = parcel.readInt(); mPackageName = parcel.readCharSequence(); mPackageName = parcel.readCharSequence(); Loading Loading @@ -2695,6 +2727,7 @@ public class AccessibilityNodeInfo implements Parcelable { mLabeledById = ROOT_NODE_ID; mLabeledById = ROOT_NODE_ID; mWindowId = UNDEFINED_ITEM_ID; mWindowId = UNDEFINED_ITEM_ID; mConnectionId = UNDEFINED_CONNECTION_ID; mConnectionId = UNDEFINED_CONNECTION_ID; mMaxTextLength = -1; mMovementGranularities = 0; mMovementGranularities = 0; if (mChildNodeIds != null) { if (mChildNodeIds != null) { mChildNodeIds.clear(); mChildNodeIds.clear(); Loading Loading @@ -2911,6 +2944,7 @@ public class AccessibilityNodeInfo implements Parcelable { builder.append("; className: ").append(mClassName); builder.append("; className: ").append(mClassName); builder.append("; text: ").append(mText); builder.append("; text: ").append(mText); builder.append("; error: ").append(mError); builder.append("; error: ").append(mError); builder.append("; maxTextLength: ").append(mMaxTextLength); builder.append("; contentDescription: ").append(mContentDescription); builder.append("; contentDescription: ").append(mContentDescription); builder.append("; viewIdResName: ").append(mViewIdResourceName); builder.append("; viewIdResName: ").append(mViewIdResourceName); Loading
core/java/android/widget/TextView.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -8392,6 +8392,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } } } // Check for known input filter types. final int numFilters = mFilters.length; for (int i = 0; i < numFilters; i++) { final InputFilter filter = mFilters[i]; if (filter instanceof InputFilter.LengthFilter) { info.setMaxTextLength(((InputFilter.LengthFilter) filter).getMax()); } } if (!isSingleLine()) { if (!isSingleLine()) { info.setMultiLine(true); info.setMultiLine(true); } } Loading