Loading core/api/current.txt +10 −8 Original line number Original line Diff line number Diff line Loading @@ -375,7 +375,7 @@ package android { public static final class R.attr { public static final class R.attr { ctor public R.attr(); ctor public R.attr(); field public static final int absListViewStyle = 16842858; // 0x101006a field public static final int absListViewStyle = 16842858; // 0x101006a field public static final int accessibilityDataPrivate; field public static final int accessibilityDataSensitive; field public static final int accessibilityEventTypes = 16843648; // 0x1010380 field public static final int accessibilityEventTypes = 16843648; // 0x1010380 field public static final int accessibilityFeedbackType = 16843650; // 0x1010382 field public static final int accessibilityFeedbackType = 16843650; // 0x1010382 field public static final int accessibilityFlags = 16843652; // 0x1010384 field public static final int accessibilityFlags = 16843652; // 0x1010384 Loading Loading @@ -52218,7 +52218,7 @@ package android.view { method public void invalidate(); method public void invalidate(); method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable); method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable); method public void invalidateOutline(); method public void invalidateOutline(); method public boolean isAccessibilityDataPrivate(); method public boolean isAccessibilityDataSensitive(); method public boolean isAccessibilityFocused(); method public boolean isAccessibilityFocused(); method public boolean isAccessibilityHeading(); method public boolean isAccessibilityHeading(); method public boolean isActivated(); method public boolean isActivated(); Loading Loading @@ -52398,7 +52398,7 @@ package android.view { method public void scrollTo(int, int); method public void scrollTo(int, int); method public void sendAccessibilityEvent(int); method public void sendAccessibilityEvent(int); method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent); method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent); method public void setAccessibilityDataPrivate(int); method public void setAccessibilityDataSensitive(int); method public void setAccessibilityDelegate(@Nullable android.view.View.AccessibilityDelegate); method public void setAccessibilityDelegate(@Nullable android.view.View.AccessibilityDelegate); method public void setAccessibilityHeading(boolean); method public void setAccessibilityHeading(boolean); method public void setAccessibilityLiveRegion(int); method public void setAccessibilityLiveRegion(int); Loading Loading @@ -52584,9 +52584,9 @@ package android.view { method @CallSuper protected boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable); method @CallSuper protected boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable); method @Deprecated public boolean willNotCacheDrawing(); method @Deprecated public boolean willNotCacheDrawing(); method public boolean willNotDraw(); method public boolean willNotDraw(); field public static final int ACCESSIBILITY_DATA_PRIVATE_AUTO = 0; // 0x0 field public static final int ACCESSIBILITY_DATA_SENSITIVE_AUTO = 0; // 0x0 field public static final int ACCESSIBILITY_DATA_PRIVATE_NO = 2; // 0x2 field public static final int ACCESSIBILITY_DATA_SENSITIVE_NO = 2; // 0x2 field public static final int ACCESSIBILITY_DATA_PRIVATE_YES = 1; // 0x1 field public static final int ACCESSIBILITY_DATA_SENSITIVE_YES = 1; // 0x1 field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2 field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2 field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0 field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0 field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1 field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1 Loading Loading @@ -54056,11 +54056,11 @@ package android.view.accessibility { method public int getSpeechStateChangeTypes(); method public int getSpeechStateChangeTypes(); method public int getWindowChanges(); method public int getWindowChanges(); method public void initFromParcel(android.os.Parcel); method public void initFromParcel(android.os.Parcel); method public boolean isAccessibilityDataPrivate(); method public boolean isAccessibilityDataSensitive(); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(int); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(int); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(android.view.accessibility.AccessibilityEvent); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(android.view.accessibility.AccessibilityEvent); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(); method public void setAccessibilityDataPrivate(boolean); method public void setAccessibilityDataSensitive(boolean); method public void setAction(int); method public void setAction(int); method public void setContentChangeTypes(int); method public void setContentChangeTypes(int); method public void setEventTime(long); method public void setEventTime(long); Loading Loading @@ -54251,6 +54251,7 @@ package android.view.accessibility { method public int getWindowId(); method public int getWindowId(); method public boolean hasRequestInitialAccessibilityFocus(); method public boolean hasRequestInitialAccessibilityFocus(); method public boolean hasRequestTouchPassthrough(); method public boolean hasRequestTouchPassthrough(); method public boolean isAccessibilityDataSensitive(); method public boolean isAccessibilityFocused(); method public boolean isAccessibilityFocused(); method public boolean isCheckable(); method public boolean isCheckable(); method public boolean isChecked(); method public boolean isChecked(); Loading Loading @@ -54287,6 +54288,7 @@ package android.view.accessibility { method public boolean removeAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction); method public boolean removeAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction); method public boolean removeChild(android.view.View); method public boolean removeChild(android.view.View); method public boolean removeChild(android.view.View, int); method public boolean removeChild(android.view.View, int); method public void setAccessibilityDataSensitive(boolean); method public void setAccessibilityFocused(boolean); method public void setAccessibilityFocused(boolean); method public void setAvailableExtraData(java.util.List<java.lang.String>); method public void setAvailableExtraData(java.util.List<java.lang.String>); method @Deprecated public void setBoundsInParent(android.graphics.Rect); method @Deprecated public void setBoundsInParent(android.graphics.Rect); core/java/android/view/AccessibilityInteractionController.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -172,7 +172,7 @@ public final class AccessibilityInteractionController { private boolean isVisibleToAccessibilityService(View view) { private boolean isVisibleToAccessibilityService(View view) { return view != null && (mA11yManager.isRequestFromAccessibilityTool() return view != null && (mA11yManager.isRequestFromAccessibilityTool() || !view.isAccessibilityDataPrivate()); || !view.isAccessibilityDataSensitive()); } } public void findAccessibilityNodeInfoByAccessibilityIdClientThread( public void findAccessibilityNodeInfoByAccessibilityIdClientThread( Loading core/java/android/view/View.java +42 −41 Original line number Original line Diff line number Diff line Loading @@ -3114,33 +3114,33 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * Accessibility interactions from services without {@code isAccessibilityTool} set to true are * Accessibility interactions from services without {@code isAccessibilityTool} set to true are * disallowed for any of the following conditions: * disallowed for any of the following conditions: * <li>this view sets {@link #getFilterTouchesWhenObscured()}.</li> * <li>this view sets {@link #getFilterTouchesWhenObscured()}.</li> * <li>any parent of this view returns true from {@link #isAccessibilityDataPrivate()}.</li> * <li>any parent of this view returns true from {@link #isAccessibilityDataSensitive()}.</li> * </p> * </p> */ */ public static final int ACCESSIBILITY_DATA_PRIVATE_AUTO = 0x00000000; public static final int ACCESSIBILITY_DATA_SENSITIVE_AUTO = 0x00000000; /** /** * Only allow interactions from {@link android.accessibilityservice.AccessibilityService}s * Only allow interactions from {@link android.accessibilityservice.AccessibilityService}s * with the {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} * with the {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} * property set to true. * property set to true. */ */ public static final int ACCESSIBILITY_DATA_PRIVATE_YES = 0x00000001; public static final int ACCESSIBILITY_DATA_SENSITIVE_YES = 0x00000001; /** /** * Allow interactions from all {@link android.accessibilityservice.AccessibilityService}s, * Allow interactions from all {@link android.accessibilityservice.AccessibilityService}s, * regardless of their * regardless of their * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property. * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property. */ */ public static final int ACCESSIBILITY_DATA_PRIVATE_NO = 0x00000002; public static final int ACCESSIBILITY_DATA_SENSITIVE_NO = 0x00000002; /** @hide */ /** @hide */ @IntDef(prefix = { "ACCESSIBILITY_DATA_PRIVATE_" }, value = { @IntDef(prefix = { "ACCESSIBILITY_DATA_SENSITIVE_" }, value = { ACCESSIBILITY_DATA_PRIVATE_AUTO, ACCESSIBILITY_DATA_SENSITIVE_AUTO, ACCESSIBILITY_DATA_PRIVATE_YES, ACCESSIBILITY_DATA_SENSITIVE_YES, ACCESSIBILITY_DATA_PRIVATE_NO, ACCESSIBILITY_DATA_SENSITIVE_NO, }) }) @Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE) public @interface AccessibilityDataPrivate {} public @interface AccessibilityDataSensitive {} /** /** * Mask for obtaining the bits which specify how to determine * Mask for obtaining the bits which specify how to determine Loading Loading @@ -4611,9 +4611,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property * set to true. * set to true. */ */ private int mExplicitAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_AUTO; private int mExplicitAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_AUTO; /** Used to calculate and cache {@link #isAccessibilityDataPrivate()}. */ /** Used to calculate and cache {@link #isAccessibilityDataSensitive()}. */ private int mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_AUTO; private int mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_AUTO; /** /** * Specifies the id of a view for which this view serves as a label for * Specifies the id of a view for which this view serves as a label for Loading Loading @@ -6016,9 +6016,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, setImportantForAccessibility(a.getInt(attr, setImportantForAccessibility(a.getInt(attr, IMPORTANT_FOR_ACCESSIBILITY_DEFAULT)); IMPORTANT_FOR_ACCESSIBILITY_DEFAULT)); break; break; case R.styleable.View_accessibilityDataPrivate: case R.styleable.View_accessibilityDataSensitive: setAccessibilityDataPrivate(a.getInt(attr, setAccessibilityDataSensitive(a.getInt(attr, ACCESSIBILITY_DATA_PRIVATE_AUTO)); ACCESSIBILITY_DATA_SENSITIVE_AUTO)); break; break; case R.styleable.View_accessibilityLiveRegion: case R.styleable.View_accessibilityLiveRegion: setAccessibilityLiveRegion(a.getInt(attr, ACCESSIBILITY_LIVE_REGION_DEFAULT)); setAccessibilityLiveRegion(a.getInt(attr, ACCESSIBILITY_LIVE_REGION_DEFAULT)); Loading Loading @@ -8660,9 +8660,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * is responsible for handling this call. * is responsible for handling this call. * </p> * </p> * <p> * <p> * If this view sets {@link #isAccessibilityDataPrivate()} then this view should only append * If this view sets {@link #isAccessibilityDataSensitive()} then this view should only append * sensitive information to an event that also sets * sensitive information to an event that also sets * {@link AccessibilityEvent#isAccessibilityDataPrivate()}. * {@link AccessibilityEvent#isAccessibilityDataSensitive()}. * </p> * </p> * <p> * <p> * <em>Note:</em> Accessibility events of certain types are not dispatched for * <em>Note:</em> Accessibility events of certain types are not dispatched for Loading Loading @@ -10697,6 +10697,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, info.setVisibleToUser(isVisibleToUser()); info.setVisibleToUser(isVisibleToUser()); info.setImportantForAccessibility(isImportantForAccessibility()); info.setImportantForAccessibility(isImportantForAccessibility()); info.setAccessibilityDataSensitive(isAccessibilityDataSensitive()); info.setPackageName(mContext.getPackageName()); info.setPackageName(mContext.getPackageName()); info.setClassName(getAccessibilityClassName()); info.setClassName(getAccessibilityClassName()); info.setStateDescription(getStateDescription()); info.setStateDescription(getStateDescription()); Loading Loading @@ -13581,7 +13582,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, public void setFilterTouchesWhenObscured(boolean enabled) { public void setFilterTouchesWhenObscured(boolean enabled) { setFlags(enabled ? FILTER_TOUCHES_WHEN_OBSCURED : 0, setFlags(enabled ? FILTER_TOUCHES_WHEN_OBSCURED : 0, FILTER_TOUCHES_WHEN_OBSCURED); FILTER_TOUCHES_WHEN_OBSCURED); calculateAccessibilityDataPrivate(); calculateAccessibilityDataSensitive(); } } /** /** Loading Loading @@ -14817,7 +14818,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // source View's AccessibilityDataPrivate value, and then filtering is done when // source View's AccessibilityDataPrivate value, and then filtering is done when // AccessibilityManagerService propagates events to each recipient AccessibilityService. // AccessibilityManagerService propagates events to each recipient AccessibilityService. if (!AccessibilityManager.getInstance(mContext).isRequestFromAccessibilityTool() if (!AccessibilityManager.getInstance(mContext).isRequestFromAccessibilityTool() && isAccessibilityDataPrivate()) { && isAccessibilityDataSensitive()) { return false; return false; } } } } Loading @@ -14833,43 +14834,43 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * set to true. * set to true. * * * <p> * <p> * See default behavior provided by {@link #ACCESSIBILITY_DATA_PRIVATE_AUTO}. Otherwise, * See default behavior provided by {@link #ACCESSIBILITY_DATA_SENSITIVE_AUTO}. Otherwise, * returns true for {@link #ACCESSIBILITY_DATA_PRIVATE_YES} or false for {@link * returns true for {@link #ACCESSIBILITY_DATA_SENSITIVE_YES} or false for {@link * #ACCESSIBILITY_DATA_PRIVATE_NO}. * #ACCESSIBILITY_DATA_SENSITIVE_NO}. * </p> * </p> * * * @return True if this view should restrict accessibility service access to services that have * @return True if this view should restrict accessibility service access to services that have * the isAccessibilityTool property. * the isAccessibilityTool property. */ */ @ViewDebug.ExportedProperty(category = "accessibility") @ViewDebug.ExportedProperty(category = "accessibility") public boolean isAccessibilityDataPrivate() { public boolean isAccessibilityDataSensitive() { if (mInferredAccessibilityDataPrivate == ACCESSIBILITY_DATA_PRIVATE_AUTO) { if (mInferredAccessibilityDataSensitive == ACCESSIBILITY_DATA_SENSITIVE_AUTO) { calculateAccessibilityDataPrivate(); calculateAccessibilityDataSensitive(); } } return mInferredAccessibilityDataPrivate == ACCESSIBILITY_DATA_PRIVATE_YES; return mInferredAccessibilityDataSensitive == ACCESSIBILITY_DATA_SENSITIVE_YES; } } /** /** * Calculate and cache the inferred value for {@link #isAccessibilityDataPrivate()}. * Calculate and cache the inferred value for {@link #isAccessibilityDataSensitive()}. * * * <p> * <p> * <strong>Note:</strong> This method needs to be called any time one of the below conditions * <strong>Note:</strong> This method needs to be called any time one of the below conditions * changes, to recalculate the new value. * changes, to recalculate the new value. * </p> * </p> */ */ void calculateAccessibilityDataPrivate() { void calculateAccessibilityDataSensitive() { // Use the explicit value if set. // Use the explicit value if set. if (mExplicitAccessibilityDataPrivate != ACCESSIBILITY_DATA_PRIVATE_AUTO) { if (mExplicitAccessibilityDataSensitive != ACCESSIBILITY_DATA_SENSITIVE_AUTO) { mInferredAccessibilityDataPrivate = mExplicitAccessibilityDataPrivate; mInferredAccessibilityDataSensitive = mExplicitAccessibilityDataSensitive; } else if (getFilterTouchesWhenObscured()) { } else if (getFilterTouchesWhenObscured()) { // Views that set filterTouchesWhenObscured default to accessibilityDataPrivate. // Views that set filterTouchesWhenObscured default to accessibilityDataSensitive. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_YES; mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_YES; } else if (mParent instanceof View && ((View) mParent).isAccessibilityDataPrivate()) { } else if (mParent instanceof View && ((View) mParent).isAccessibilityDataSensitive()) { // Descendants of an accessibilityDataPrivate View are also accessibilityDataPrivate. // Descendants of accessibilityDataSensitive Views are also accessibilityDataSensitive. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_YES; mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_YES; } else { } else { // Otherwise, default to not accessibilityDataPrivate. // Otherwise, default to not accessibilityDataSensitive. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_NO; mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_NO; } } } } Loading @@ -14879,10 +14880,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property * set to true. * set to true. */ */ public void setAccessibilityDataPrivate( public void setAccessibilityDataSensitive( @AccessibilityDataPrivate int accessibilityDataPrivate) { @AccessibilityDataSensitive int accessibilityDataSensitive) { mExplicitAccessibilityDataPrivate = accessibilityDataPrivate; mExplicitAccessibilityDataSensitive = accessibilityDataSensitive; calculateAccessibilityDataPrivate(); calculateAccessibilityDataSensitive(); } } /** /** core/java/android/view/ViewGroup.java +3 −3 Original line number Original line Diff line number Diff line Loading @@ -3921,10 +3921,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } @Override @Override void calculateAccessibilityDataPrivate() { void calculateAccessibilityDataSensitive() { super.calculateAccessibilityDataPrivate(); super.calculateAccessibilityDataSensitive(); for (int i = 0; i < mChildrenCount; i++) { for (int i = 0; i < mChildrenCount; i++) { mChildren[i].calculateAccessibilityDataPrivate(); mChildren[i].calculateAccessibilityDataSensitive(); } } } } Loading core/java/android/view/accessibility/AccessibilityEvent.java +9 −9 Original line number Original line Diff line number Diff line Loading @@ -56,7 +56,7 @@ import java.util.List; * accessibility service has not requested to retrieve the window content the event will * accessibility service has not requested to retrieve the window content the event will * not contain reference to its source. <strong>Note: </strong> for events of type * not contain reference to its source. <strong>Note: </strong> for events of type * {@link #TYPE_NOTIFICATION_STATE_CHANGED} the source is never available, and Views that set * {@link #TYPE_NOTIFICATION_STATE_CHANGED} the source is never available, and Views that set * {@link android.view.View#isAccessibilityDataPrivate()} may not populate all event properties on * {@link android.view.View#isAccessibilityDataSensitive()} may not populate all event properties on * events sent from higher up in the view hierarchy. * events sent from higher up in the view hierarchy. * </p> * </p> * <p> * <p> Loading Loading @@ -1168,17 +1168,17 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par * set to true. * set to true. * * * <p> * <p> * Initial value matches the {@link android.view.View#isAccessibilityDataPrivate} property from * Initial value matches the {@link android.view.View#isAccessibilityDataSensitive} property * the event's source node, if present, or false by default. * from the event's source node, if present, or false by default. * </p> * </p> * * * @return True if the event should be delivered only to isAccessibilityTool services, false * @return True if the event should be delivered only to isAccessibilityTool services, false * otherwise. * otherwise. * @see #setAccessibilityDataPrivate * @see #setAccessibilityDataSensitive */ */ @Override @Override public boolean isAccessibilityDataPrivate() { public boolean isAccessibilityDataSensitive() { return super.isAccessibilityDataPrivate(); return super.isAccessibilityDataSensitive(); } } /** /** Loading @@ -1193,13 +1193,13 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par * no source) then this method must be called explicitly if you want non-default behavior. * no source) then this method must be called explicitly if you want non-default behavior. * </p> * </p> * * * @param accessibilityDataPrivate True if the event should be delivered only to * @param accessibilityDataSensitive True if the event should be delivered only to * isAccessibilityTool services, false otherwise. * isAccessibilityTool services, false otherwise. * @throws IllegalStateException If called from an AccessibilityService. * @throws IllegalStateException If called from an AccessibilityService. */ */ @Override @Override public void setAccessibilityDataPrivate(boolean accessibilityDataPrivate) { public void setAccessibilityDataSensitive(boolean accessibilityDataSensitive) { super.setAccessibilityDataPrivate(accessibilityDataPrivate); super.setAccessibilityDataSensitive(accessibilityDataSensitive); } } /** /** Loading Loading
core/api/current.txt +10 −8 Original line number Original line Diff line number Diff line Loading @@ -375,7 +375,7 @@ package android { public static final class R.attr { public static final class R.attr { ctor public R.attr(); ctor public R.attr(); field public static final int absListViewStyle = 16842858; // 0x101006a field public static final int absListViewStyle = 16842858; // 0x101006a field public static final int accessibilityDataPrivate; field public static final int accessibilityDataSensitive; field public static final int accessibilityEventTypes = 16843648; // 0x1010380 field public static final int accessibilityEventTypes = 16843648; // 0x1010380 field public static final int accessibilityFeedbackType = 16843650; // 0x1010382 field public static final int accessibilityFeedbackType = 16843650; // 0x1010382 field public static final int accessibilityFlags = 16843652; // 0x1010384 field public static final int accessibilityFlags = 16843652; // 0x1010384 Loading Loading @@ -52218,7 +52218,7 @@ package android.view { method public void invalidate(); method public void invalidate(); method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable); method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable); method public void invalidateOutline(); method public void invalidateOutline(); method public boolean isAccessibilityDataPrivate(); method public boolean isAccessibilityDataSensitive(); method public boolean isAccessibilityFocused(); method public boolean isAccessibilityFocused(); method public boolean isAccessibilityHeading(); method public boolean isAccessibilityHeading(); method public boolean isActivated(); method public boolean isActivated(); Loading Loading @@ -52398,7 +52398,7 @@ package android.view { method public void scrollTo(int, int); method public void scrollTo(int, int); method public void sendAccessibilityEvent(int); method public void sendAccessibilityEvent(int); method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent); method public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent); method public void setAccessibilityDataPrivate(int); method public void setAccessibilityDataSensitive(int); method public void setAccessibilityDelegate(@Nullable android.view.View.AccessibilityDelegate); method public void setAccessibilityDelegate(@Nullable android.view.View.AccessibilityDelegate); method public void setAccessibilityHeading(boolean); method public void setAccessibilityHeading(boolean); method public void setAccessibilityLiveRegion(int); method public void setAccessibilityLiveRegion(int); Loading Loading @@ -52584,9 +52584,9 @@ package android.view { method @CallSuper protected boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable); method @CallSuper protected boolean verifyDrawable(@NonNull android.graphics.drawable.Drawable); method @Deprecated public boolean willNotCacheDrawing(); method @Deprecated public boolean willNotCacheDrawing(); method public boolean willNotDraw(); method public boolean willNotDraw(); field public static final int ACCESSIBILITY_DATA_PRIVATE_AUTO = 0; // 0x0 field public static final int ACCESSIBILITY_DATA_SENSITIVE_AUTO = 0; // 0x0 field public static final int ACCESSIBILITY_DATA_PRIVATE_NO = 2; // 0x2 field public static final int ACCESSIBILITY_DATA_SENSITIVE_NO = 2; // 0x2 field public static final int ACCESSIBILITY_DATA_PRIVATE_YES = 1; // 0x1 field public static final int ACCESSIBILITY_DATA_SENSITIVE_YES = 1; // 0x1 field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2 field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2 field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0 field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0 field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1 field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1 Loading Loading @@ -54056,11 +54056,11 @@ package android.view.accessibility { method public int getSpeechStateChangeTypes(); method public int getSpeechStateChangeTypes(); method public int getWindowChanges(); method public int getWindowChanges(); method public void initFromParcel(android.os.Parcel); method public void initFromParcel(android.os.Parcel); method public boolean isAccessibilityDataPrivate(); method public boolean isAccessibilityDataSensitive(); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(int); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(int); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(android.view.accessibility.AccessibilityEvent); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(android.view.accessibility.AccessibilityEvent); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(); method @Deprecated public static android.view.accessibility.AccessibilityEvent obtain(); method public void setAccessibilityDataPrivate(boolean); method public void setAccessibilityDataSensitive(boolean); method public void setAction(int); method public void setAction(int); method public void setContentChangeTypes(int); method public void setContentChangeTypes(int); method public void setEventTime(long); method public void setEventTime(long); Loading Loading @@ -54251,6 +54251,7 @@ package android.view.accessibility { method public int getWindowId(); method public int getWindowId(); method public boolean hasRequestInitialAccessibilityFocus(); method public boolean hasRequestInitialAccessibilityFocus(); method public boolean hasRequestTouchPassthrough(); method public boolean hasRequestTouchPassthrough(); method public boolean isAccessibilityDataSensitive(); method public boolean isAccessibilityFocused(); method public boolean isAccessibilityFocused(); method public boolean isCheckable(); method public boolean isCheckable(); method public boolean isChecked(); method public boolean isChecked(); Loading Loading @@ -54287,6 +54288,7 @@ package android.view.accessibility { method public boolean removeAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction); method public boolean removeAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction); method public boolean removeChild(android.view.View); method public boolean removeChild(android.view.View); method public boolean removeChild(android.view.View, int); method public boolean removeChild(android.view.View, int); method public void setAccessibilityDataSensitive(boolean); method public void setAccessibilityFocused(boolean); method public void setAccessibilityFocused(boolean); method public void setAvailableExtraData(java.util.List<java.lang.String>); method public void setAvailableExtraData(java.util.List<java.lang.String>); method @Deprecated public void setBoundsInParent(android.graphics.Rect); method @Deprecated public void setBoundsInParent(android.graphics.Rect);
core/java/android/view/AccessibilityInteractionController.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -172,7 +172,7 @@ public final class AccessibilityInteractionController { private boolean isVisibleToAccessibilityService(View view) { private boolean isVisibleToAccessibilityService(View view) { return view != null && (mA11yManager.isRequestFromAccessibilityTool() return view != null && (mA11yManager.isRequestFromAccessibilityTool() || !view.isAccessibilityDataPrivate()); || !view.isAccessibilityDataSensitive()); } } public void findAccessibilityNodeInfoByAccessibilityIdClientThread( public void findAccessibilityNodeInfoByAccessibilityIdClientThread( Loading
core/java/android/view/View.java +42 −41 Original line number Original line Diff line number Diff line Loading @@ -3114,33 +3114,33 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * Accessibility interactions from services without {@code isAccessibilityTool} set to true are * Accessibility interactions from services without {@code isAccessibilityTool} set to true are * disallowed for any of the following conditions: * disallowed for any of the following conditions: * <li>this view sets {@link #getFilterTouchesWhenObscured()}.</li> * <li>this view sets {@link #getFilterTouchesWhenObscured()}.</li> * <li>any parent of this view returns true from {@link #isAccessibilityDataPrivate()}.</li> * <li>any parent of this view returns true from {@link #isAccessibilityDataSensitive()}.</li> * </p> * </p> */ */ public static final int ACCESSIBILITY_DATA_PRIVATE_AUTO = 0x00000000; public static final int ACCESSIBILITY_DATA_SENSITIVE_AUTO = 0x00000000; /** /** * Only allow interactions from {@link android.accessibilityservice.AccessibilityService}s * Only allow interactions from {@link android.accessibilityservice.AccessibilityService}s * with the {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} * with the {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} * property set to true. * property set to true. */ */ public static final int ACCESSIBILITY_DATA_PRIVATE_YES = 0x00000001; public static final int ACCESSIBILITY_DATA_SENSITIVE_YES = 0x00000001; /** /** * Allow interactions from all {@link android.accessibilityservice.AccessibilityService}s, * Allow interactions from all {@link android.accessibilityservice.AccessibilityService}s, * regardless of their * regardless of their * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property. * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property. */ */ public static final int ACCESSIBILITY_DATA_PRIVATE_NO = 0x00000002; public static final int ACCESSIBILITY_DATA_SENSITIVE_NO = 0x00000002; /** @hide */ /** @hide */ @IntDef(prefix = { "ACCESSIBILITY_DATA_PRIVATE_" }, value = { @IntDef(prefix = { "ACCESSIBILITY_DATA_SENSITIVE_" }, value = { ACCESSIBILITY_DATA_PRIVATE_AUTO, ACCESSIBILITY_DATA_SENSITIVE_AUTO, ACCESSIBILITY_DATA_PRIVATE_YES, ACCESSIBILITY_DATA_SENSITIVE_YES, ACCESSIBILITY_DATA_PRIVATE_NO, ACCESSIBILITY_DATA_SENSITIVE_NO, }) }) @Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE) public @interface AccessibilityDataPrivate {} public @interface AccessibilityDataSensitive {} /** /** * Mask for obtaining the bits which specify how to determine * Mask for obtaining the bits which specify how to determine Loading Loading @@ -4611,9 +4611,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property * set to true. * set to true. */ */ private int mExplicitAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_AUTO; private int mExplicitAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_AUTO; /** Used to calculate and cache {@link #isAccessibilityDataPrivate()}. */ /** Used to calculate and cache {@link #isAccessibilityDataSensitive()}. */ private int mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_AUTO; private int mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_AUTO; /** /** * Specifies the id of a view for which this view serves as a label for * Specifies the id of a view for which this view serves as a label for Loading Loading @@ -6016,9 +6016,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, setImportantForAccessibility(a.getInt(attr, setImportantForAccessibility(a.getInt(attr, IMPORTANT_FOR_ACCESSIBILITY_DEFAULT)); IMPORTANT_FOR_ACCESSIBILITY_DEFAULT)); break; break; case R.styleable.View_accessibilityDataPrivate: case R.styleable.View_accessibilityDataSensitive: setAccessibilityDataPrivate(a.getInt(attr, setAccessibilityDataSensitive(a.getInt(attr, ACCESSIBILITY_DATA_PRIVATE_AUTO)); ACCESSIBILITY_DATA_SENSITIVE_AUTO)); break; break; case R.styleable.View_accessibilityLiveRegion: case R.styleable.View_accessibilityLiveRegion: setAccessibilityLiveRegion(a.getInt(attr, ACCESSIBILITY_LIVE_REGION_DEFAULT)); setAccessibilityLiveRegion(a.getInt(attr, ACCESSIBILITY_LIVE_REGION_DEFAULT)); Loading Loading @@ -8660,9 +8660,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * is responsible for handling this call. * is responsible for handling this call. * </p> * </p> * <p> * <p> * If this view sets {@link #isAccessibilityDataPrivate()} then this view should only append * If this view sets {@link #isAccessibilityDataSensitive()} then this view should only append * sensitive information to an event that also sets * sensitive information to an event that also sets * {@link AccessibilityEvent#isAccessibilityDataPrivate()}. * {@link AccessibilityEvent#isAccessibilityDataSensitive()}. * </p> * </p> * <p> * <p> * <em>Note:</em> Accessibility events of certain types are not dispatched for * <em>Note:</em> Accessibility events of certain types are not dispatched for Loading Loading @@ -10697,6 +10697,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, info.setVisibleToUser(isVisibleToUser()); info.setVisibleToUser(isVisibleToUser()); info.setImportantForAccessibility(isImportantForAccessibility()); info.setImportantForAccessibility(isImportantForAccessibility()); info.setAccessibilityDataSensitive(isAccessibilityDataSensitive()); info.setPackageName(mContext.getPackageName()); info.setPackageName(mContext.getPackageName()); info.setClassName(getAccessibilityClassName()); info.setClassName(getAccessibilityClassName()); info.setStateDescription(getStateDescription()); info.setStateDescription(getStateDescription()); Loading Loading @@ -13581,7 +13582,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, public void setFilterTouchesWhenObscured(boolean enabled) { public void setFilterTouchesWhenObscured(boolean enabled) { setFlags(enabled ? FILTER_TOUCHES_WHEN_OBSCURED : 0, setFlags(enabled ? FILTER_TOUCHES_WHEN_OBSCURED : 0, FILTER_TOUCHES_WHEN_OBSCURED); FILTER_TOUCHES_WHEN_OBSCURED); calculateAccessibilityDataPrivate(); calculateAccessibilityDataSensitive(); } } /** /** Loading Loading @@ -14817,7 +14818,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // source View's AccessibilityDataPrivate value, and then filtering is done when // source View's AccessibilityDataPrivate value, and then filtering is done when // AccessibilityManagerService propagates events to each recipient AccessibilityService. // AccessibilityManagerService propagates events to each recipient AccessibilityService. if (!AccessibilityManager.getInstance(mContext).isRequestFromAccessibilityTool() if (!AccessibilityManager.getInstance(mContext).isRequestFromAccessibilityTool() && isAccessibilityDataPrivate()) { && isAccessibilityDataSensitive()) { return false; return false; } } } } Loading @@ -14833,43 +14834,43 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * set to true. * set to true. * * * <p> * <p> * See default behavior provided by {@link #ACCESSIBILITY_DATA_PRIVATE_AUTO}. Otherwise, * See default behavior provided by {@link #ACCESSIBILITY_DATA_SENSITIVE_AUTO}. Otherwise, * returns true for {@link #ACCESSIBILITY_DATA_PRIVATE_YES} or false for {@link * returns true for {@link #ACCESSIBILITY_DATA_SENSITIVE_YES} or false for {@link * #ACCESSIBILITY_DATA_PRIVATE_NO}. * #ACCESSIBILITY_DATA_SENSITIVE_NO}. * </p> * </p> * * * @return True if this view should restrict accessibility service access to services that have * @return True if this view should restrict accessibility service access to services that have * the isAccessibilityTool property. * the isAccessibilityTool property. */ */ @ViewDebug.ExportedProperty(category = "accessibility") @ViewDebug.ExportedProperty(category = "accessibility") public boolean isAccessibilityDataPrivate() { public boolean isAccessibilityDataSensitive() { if (mInferredAccessibilityDataPrivate == ACCESSIBILITY_DATA_PRIVATE_AUTO) { if (mInferredAccessibilityDataSensitive == ACCESSIBILITY_DATA_SENSITIVE_AUTO) { calculateAccessibilityDataPrivate(); calculateAccessibilityDataSensitive(); } } return mInferredAccessibilityDataPrivate == ACCESSIBILITY_DATA_PRIVATE_YES; return mInferredAccessibilityDataSensitive == ACCESSIBILITY_DATA_SENSITIVE_YES; } } /** /** * Calculate and cache the inferred value for {@link #isAccessibilityDataPrivate()}. * Calculate and cache the inferred value for {@link #isAccessibilityDataSensitive()}. * * * <p> * <p> * <strong>Note:</strong> This method needs to be called any time one of the below conditions * <strong>Note:</strong> This method needs to be called any time one of the below conditions * changes, to recalculate the new value. * changes, to recalculate the new value. * </p> * </p> */ */ void calculateAccessibilityDataPrivate() { void calculateAccessibilityDataSensitive() { // Use the explicit value if set. // Use the explicit value if set. if (mExplicitAccessibilityDataPrivate != ACCESSIBILITY_DATA_PRIVATE_AUTO) { if (mExplicitAccessibilityDataSensitive != ACCESSIBILITY_DATA_SENSITIVE_AUTO) { mInferredAccessibilityDataPrivate = mExplicitAccessibilityDataPrivate; mInferredAccessibilityDataSensitive = mExplicitAccessibilityDataSensitive; } else if (getFilterTouchesWhenObscured()) { } else if (getFilterTouchesWhenObscured()) { // Views that set filterTouchesWhenObscured default to accessibilityDataPrivate. // Views that set filterTouchesWhenObscured default to accessibilityDataSensitive. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_YES; mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_YES; } else if (mParent instanceof View && ((View) mParent).isAccessibilityDataPrivate()) { } else if (mParent instanceof View && ((View) mParent).isAccessibilityDataSensitive()) { // Descendants of an accessibilityDataPrivate View are also accessibilityDataPrivate. // Descendants of accessibilityDataSensitive Views are also accessibilityDataSensitive. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_YES; mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_YES; } else { } else { // Otherwise, default to not accessibilityDataPrivate. // Otherwise, default to not accessibilityDataSensitive. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_NO; mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_NO; } } } } Loading @@ -14879,10 +14880,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property * set to true. * set to true. */ */ public void setAccessibilityDataPrivate( public void setAccessibilityDataSensitive( @AccessibilityDataPrivate int accessibilityDataPrivate) { @AccessibilityDataSensitive int accessibilityDataSensitive) { mExplicitAccessibilityDataPrivate = accessibilityDataPrivate; mExplicitAccessibilityDataSensitive = accessibilityDataSensitive; calculateAccessibilityDataPrivate(); calculateAccessibilityDataSensitive(); } } /** /**
core/java/android/view/ViewGroup.java +3 −3 Original line number Original line Diff line number Diff line Loading @@ -3921,10 +3921,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } @Override @Override void calculateAccessibilityDataPrivate() { void calculateAccessibilityDataSensitive() { super.calculateAccessibilityDataPrivate(); super.calculateAccessibilityDataSensitive(); for (int i = 0; i < mChildrenCount; i++) { for (int i = 0; i < mChildrenCount; i++) { mChildren[i].calculateAccessibilityDataPrivate(); mChildren[i].calculateAccessibilityDataSensitive(); } } } } Loading
core/java/android/view/accessibility/AccessibilityEvent.java +9 −9 Original line number Original line Diff line number Diff line Loading @@ -56,7 +56,7 @@ import java.util.List; * accessibility service has not requested to retrieve the window content the event will * accessibility service has not requested to retrieve the window content the event will * not contain reference to its source. <strong>Note: </strong> for events of type * not contain reference to its source. <strong>Note: </strong> for events of type * {@link #TYPE_NOTIFICATION_STATE_CHANGED} the source is never available, and Views that set * {@link #TYPE_NOTIFICATION_STATE_CHANGED} the source is never available, and Views that set * {@link android.view.View#isAccessibilityDataPrivate()} may not populate all event properties on * {@link android.view.View#isAccessibilityDataSensitive()} may not populate all event properties on * events sent from higher up in the view hierarchy. * events sent from higher up in the view hierarchy. * </p> * </p> * <p> * <p> Loading Loading @@ -1168,17 +1168,17 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par * set to true. * set to true. * * * <p> * <p> * Initial value matches the {@link android.view.View#isAccessibilityDataPrivate} property from * Initial value matches the {@link android.view.View#isAccessibilityDataSensitive} property * the event's source node, if present, or false by default. * from the event's source node, if present, or false by default. * </p> * </p> * * * @return True if the event should be delivered only to isAccessibilityTool services, false * @return True if the event should be delivered only to isAccessibilityTool services, false * otherwise. * otherwise. * @see #setAccessibilityDataPrivate * @see #setAccessibilityDataSensitive */ */ @Override @Override public boolean isAccessibilityDataPrivate() { public boolean isAccessibilityDataSensitive() { return super.isAccessibilityDataPrivate(); return super.isAccessibilityDataSensitive(); } } /** /** Loading @@ -1193,13 +1193,13 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par * no source) then this method must be called explicitly if you want non-default behavior. * no source) then this method must be called explicitly if you want non-default behavior. * </p> * </p> * * * @param accessibilityDataPrivate True if the event should be delivered only to * @param accessibilityDataSensitive True if the event should be delivered only to * isAccessibilityTool services, false otherwise. * isAccessibilityTool services, false otherwise. * @throws IllegalStateException If called from an AccessibilityService. * @throws IllegalStateException If called from an AccessibilityService. */ */ @Override @Override public void setAccessibilityDataPrivate(boolean accessibilityDataPrivate) { public void setAccessibilityDataSensitive(boolean accessibilityDataSensitive) { super.setAccessibilityDataPrivate(accessibilityDataPrivate); super.setAccessibilityDataSensitive(accessibilityDataSensitive); } } /** /** Loading