Loading core/api/current.txt +10 −8 Original line number Diff line number Diff line Loading @@ -375,7 +375,7 @@ package android { public static final class R.attr { ctor public R.attr(); 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 accessibilityFeedbackType = 16843650; // 0x1010382 field public static final int accessibilityFlags = 16843652; // 0x1010384 Loading Loading @@ -52218,7 +52218,7 @@ package android.view { method public void invalidate(); method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable); method public void invalidateOutline(); method public boolean isAccessibilityDataPrivate(); method public boolean isAccessibilityDataSensitive(); method public boolean isAccessibilityFocused(); method public boolean isAccessibilityHeading(); method public boolean isActivated(); Loading Loading @@ -52398,7 +52398,7 @@ package android.view { method public void scrollTo(int, int); method public void sendAccessibilityEvent(int); 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 setAccessibilityHeading(boolean); 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 @Deprecated public boolean willNotCacheDrawing(); method public boolean willNotDraw(); field public static final int ACCESSIBILITY_DATA_PRIVATE_AUTO = 0; // 0x0 field public static final int ACCESSIBILITY_DATA_PRIVATE_NO = 2; // 0x2 field public static final int ACCESSIBILITY_DATA_PRIVATE_YES = 1; // 0x1 field public static final int ACCESSIBILITY_DATA_SENSITIVE_AUTO = 0; // 0x0 field public static final int ACCESSIBILITY_DATA_SENSITIVE_NO = 2; // 0x2 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_NONE = 0; // 0x0 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 getWindowChanges(); 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(android.view.accessibility.AccessibilityEvent); 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 setContentChangeTypes(int); method public void setEventTime(long); Loading Loading @@ -54251,6 +54251,7 @@ package android.view.accessibility { method public int getWindowId(); method public boolean hasRequestInitialAccessibilityFocus(); method public boolean hasRequestTouchPassthrough(); method public boolean isAccessibilityDataSensitive(); method public boolean isAccessibilityFocused(); method public boolean isCheckable(); 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 removeChild(android.view.View); method public boolean removeChild(android.view.View, int); method public void setAccessibilityDataSensitive(boolean); method public void setAccessibilityFocused(boolean); method public void setAvailableExtraData(java.util.List<java.lang.String>); method @Deprecated public void setBoundsInParent(android.graphics.Rect); core/java/android/view/AccessibilityInteractionController.java +1 −1 Original line number Diff line number Diff line Loading @@ -172,7 +172,7 @@ public final class AccessibilityInteractionController { private boolean isVisibleToAccessibilityService(View view) { return view != null && (mA11yManager.isRequestFromAccessibilityTool() || !view.isAccessibilityDataPrivate()); || !view.isAccessibilityDataSensitive()); } public void findAccessibilityNodeInfoByAccessibilityIdClientThread( Loading core/java/android/view/View.java +42 −41 Original line number 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 * disallowed for any of the following conditions: * <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> */ 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 * with the {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} * 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, * regardless of their * {@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 */ @IntDef(prefix = { "ACCESSIBILITY_DATA_PRIVATE_" }, value = { ACCESSIBILITY_DATA_PRIVATE_AUTO, ACCESSIBILITY_DATA_PRIVATE_YES, ACCESSIBILITY_DATA_PRIVATE_NO, @IntDef(prefix = { "ACCESSIBILITY_DATA_SENSITIVE_" }, value = { ACCESSIBILITY_DATA_SENSITIVE_AUTO, ACCESSIBILITY_DATA_SENSITIVE_YES, ACCESSIBILITY_DATA_SENSITIVE_NO, }) @Retention(RetentionPolicy.SOURCE) public @interface AccessibilityDataPrivate {} public @interface AccessibilityDataSensitive {} /** * 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 * set to true. */ private int mExplicitAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_AUTO; /** Used to calculate and cache {@link #isAccessibilityDataPrivate()}. */ private int mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_AUTO; private int mExplicitAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_AUTO; /** Used to calculate and cache {@link #isAccessibilityDataSensitive()}. */ private int mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_AUTO; /** * 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, IMPORTANT_FOR_ACCESSIBILITY_DEFAULT)); break; case R.styleable.View_accessibilityDataPrivate: setAccessibilityDataPrivate(a.getInt(attr, ACCESSIBILITY_DATA_PRIVATE_AUTO)); case R.styleable.View_accessibilityDataSensitive: setAccessibilityDataSensitive(a.getInt(attr, ACCESSIBILITY_DATA_SENSITIVE_AUTO)); break; case R.styleable.View_accessibilityLiveRegion: 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. * </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 * {@link AccessibilityEvent#isAccessibilityDataPrivate()}. * {@link AccessibilityEvent#isAccessibilityDataSensitive()}. * </p> * <p> * <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.setImportantForAccessibility(isImportantForAccessibility()); info.setAccessibilityDataSensitive(isAccessibilityDataSensitive()); info.setPackageName(mContext.getPackageName()); info.setClassName(getAccessibilityClassName()); info.setStateDescription(getStateDescription()); Loading Loading @@ -13581,7 +13582,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, public void setFilterTouchesWhenObscured(boolean enabled) { setFlags(enabled ? FILTER_TOUCHES_WHEN_OBSCURED : 0, 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 // AccessibilityManagerService propagates events to each recipient AccessibilityService. if (!AccessibilityManager.getInstance(mContext).isRequestFromAccessibilityTool() && isAccessibilityDataPrivate()) { && isAccessibilityDataSensitive()) { return false; } } Loading @@ -14833,43 +14834,43 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * set to true. * * <p> * See default behavior provided by {@link #ACCESSIBILITY_DATA_PRIVATE_AUTO}. Otherwise, * returns true for {@link #ACCESSIBILITY_DATA_PRIVATE_YES} or false for {@link * #ACCESSIBILITY_DATA_PRIVATE_NO}. * See default behavior provided by {@link #ACCESSIBILITY_DATA_SENSITIVE_AUTO}. Otherwise, * returns true for {@link #ACCESSIBILITY_DATA_SENSITIVE_YES} or false for {@link * #ACCESSIBILITY_DATA_SENSITIVE_NO}. * </p> * * @return True if this view should restrict accessibility service access to services that have * the isAccessibilityTool property. */ @ViewDebug.ExportedProperty(category = "accessibility") public boolean isAccessibilityDataPrivate() { if (mInferredAccessibilityDataPrivate == ACCESSIBILITY_DATA_PRIVATE_AUTO) { calculateAccessibilityDataPrivate(); public boolean isAccessibilityDataSensitive() { if (mInferredAccessibilityDataSensitive == ACCESSIBILITY_DATA_SENSITIVE_AUTO) { 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> * <strong>Note:</strong> This method needs to be called any time one of the below conditions * changes, to recalculate the new value. * </p> */ void calculateAccessibilityDataPrivate() { void calculateAccessibilityDataSensitive() { // Use the explicit value if set. if (mExplicitAccessibilityDataPrivate != ACCESSIBILITY_DATA_PRIVATE_AUTO) { mInferredAccessibilityDataPrivate = mExplicitAccessibilityDataPrivate; if (mExplicitAccessibilityDataSensitive != ACCESSIBILITY_DATA_SENSITIVE_AUTO) { mInferredAccessibilityDataSensitive = mExplicitAccessibilityDataSensitive; } else if (getFilterTouchesWhenObscured()) { // Views that set filterTouchesWhenObscured default to accessibilityDataPrivate. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_YES; } else if (mParent instanceof View && ((View) mParent).isAccessibilityDataPrivate()) { // Descendants of an accessibilityDataPrivate View are also accessibilityDataPrivate. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_YES; // Views that set filterTouchesWhenObscured default to accessibilityDataSensitive. mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_YES; } else if (mParent instanceof View && ((View) mParent).isAccessibilityDataSensitive()) { // Descendants of accessibilityDataSensitive Views are also accessibilityDataSensitive. mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_YES; } else { // Otherwise, default to not accessibilityDataPrivate. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_NO; // Otherwise, default to not accessibilityDataSensitive. mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_NO; } } Loading @@ -14879,10 +14880,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property * set to true. */ public void setAccessibilityDataPrivate( @AccessibilityDataPrivate int accessibilityDataPrivate) { mExplicitAccessibilityDataPrivate = accessibilityDataPrivate; calculateAccessibilityDataPrivate(); public void setAccessibilityDataSensitive( @AccessibilityDataSensitive int accessibilityDataSensitive) { mExplicitAccessibilityDataSensitive = accessibilityDataSensitive; calculateAccessibilityDataSensitive(); } /** core/java/android/view/ViewGroup.java +3 −3 Original line number Diff line number Diff line Loading @@ -3921,10 +3921,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } @Override void calculateAccessibilityDataPrivate() { super.calculateAccessibilityDataPrivate(); void calculateAccessibilityDataSensitive() { super.calculateAccessibilityDataSensitive(); 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 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 * 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 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. * </p> * <p> Loading Loading @@ -1168,17 +1168,17 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par * set to true. * * <p> * Initial value matches the {@link android.view.View#isAccessibilityDataPrivate} property from * the event's source node, if present, or false by default. * Initial value matches the {@link android.view.View#isAccessibilityDataSensitive} property * from the event's source node, if present, or false by default. * </p> * * @return True if the event should be delivered only to isAccessibilityTool services, false * otherwise. * @see #setAccessibilityDataPrivate * @see #setAccessibilityDataSensitive */ @Override public boolean isAccessibilityDataPrivate() { return super.isAccessibilityDataPrivate(); public boolean isAccessibilityDataSensitive() { 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. * </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. * @throws IllegalStateException If called from an AccessibilityService. */ @Override public void setAccessibilityDataPrivate(boolean accessibilityDataPrivate) { super.setAccessibilityDataPrivate(accessibilityDataPrivate); public void setAccessibilityDataSensitive(boolean accessibilityDataSensitive) { super.setAccessibilityDataSensitive(accessibilityDataSensitive); } /** Loading Loading
core/api/current.txt +10 −8 Original line number Diff line number Diff line Loading @@ -375,7 +375,7 @@ package android { public static final class R.attr { ctor public R.attr(); 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 accessibilityFeedbackType = 16843650; // 0x1010382 field public static final int accessibilityFlags = 16843652; // 0x1010384 Loading Loading @@ -52218,7 +52218,7 @@ package android.view { method public void invalidate(); method public void invalidateDrawable(@NonNull android.graphics.drawable.Drawable); method public void invalidateOutline(); method public boolean isAccessibilityDataPrivate(); method public boolean isAccessibilityDataSensitive(); method public boolean isAccessibilityFocused(); method public boolean isAccessibilityHeading(); method public boolean isActivated(); Loading Loading @@ -52398,7 +52398,7 @@ package android.view { method public void scrollTo(int, int); method public void sendAccessibilityEvent(int); 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 setAccessibilityHeading(boolean); 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 @Deprecated public boolean willNotCacheDrawing(); method public boolean willNotDraw(); field public static final int ACCESSIBILITY_DATA_PRIVATE_AUTO = 0; // 0x0 field public static final int ACCESSIBILITY_DATA_PRIVATE_NO = 2; // 0x2 field public static final int ACCESSIBILITY_DATA_PRIVATE_YES = 1; // 0x1 field public static final int ACCESSIBILITY_DATA_SENSITIVE_AUTO = 0; // 0x0 field public static final int ACCESSIBILITY_DATA_SENSITIVE_NO = 2; // 0x2 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_NONE = 0; // 0x0 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 getWindowChanges(); 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(android.view.accessibility.AccessibilityEvent); 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 setContentChangeTypes(int); method public void setEventTime(long); Loading Loading @@ -54251,6 +54251,7 @@ package android.view.accessibility { method public int getWindowId(); method public boolean hasRequestInitialAccessibilityFocus(); method public boolean hasRequestTouchPassthrough(); method public boolean isAccessibilityDataSensitive(); method public boolean isAccessibilityFocused(); method public boolean isCheckable(); 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 removeChild(android.view.View); method public boolean removeChild(android.view.View, int); method public void setAccessibilityDataSensitive(boolean); method public void setAccessibilityFocused(boolean); method public void setAvailableExtraData(java.util.List<java.lang.String>); method @Deprecated public void setBoundsInParent(android.graphics.Rect);
core/java/android/view/AccessibilityInteractionController.java +1 −1 Original line number Diff line number Diff line Loading @@ -172,7 +172,7 @@ public final class AccessibilityInteractionController { private boolean isVisibleToAccessibilityService(View view) { return view != null && (mA11yManager.isRequestFromAccessibilityTool() || !view.isAccessibilityDataPrivate()); || !view.isAccessibilityDataSensitive()); } public void findAccessibilityNodeInfoByAccessibilityIdClientThread( Loading
core/java/android/view/View.java +42 −41 Original line number 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 * disallowed for any of the following conditions: * <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> */ 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 * with the {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} * 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, * regardless of their * {@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 */ @IntDef(prefix = { "ACCESSIBILITY_DATA_PRIVATE_" }, value = { ACCESSIBILITY_DATA_PRIVATE_AUTO, ACCESSIBILITY_DATA_PRIVATE_YES, ACCESSIBILITY_DATA_PRIVATE_NO, @IntDef(prefix = { "ACCESSIBILITY_DATA_SENSITIVE_" }, value = { ACCESSIBILITY_DATA_SENSITIVE_AUTO, ACCESSIBILITY_DATA_SENSITIVE_YES, ACCESSIBILITY_DATA_SENSITIVE_NO, }) @Retention(RetentionPolicy.SOURCE) public @interface AccessibilityDataPrivate {} public @interface AccessibilityDataSensitive {} /** * 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 * set to true. */ private int mExplicitAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_AUTO; /** Used to calculate and cache {@link #isAccessibilityDataPrivate()}. */ private int mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_AUTO; private int mExplicitAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_AUTO; /** Used to calculate and cache {@link #isAccessibilityDataSensitive()}. */ private int mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_AUTO; /** * 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, IMPORTANT_FOR_ACCESSIBILITY_DEFAULT)); break; case R.styleable.View_accessibilityDataPrivate: setAccessibilityDataPrivate(a.getInt(attr, ACCESSIBILITY_DATA_PRIVATE_AUTO)); case R.styleable.View_accessibilityDataSensitive: setAccessibilityDataSensitive(a.getInt(attr, ACCESSIBILITY_DATA_SENSITIVE_AUTO)); break; case R.styleable.View_accessibilityLiveRegion: 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. * </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 * {@link AccessibilityEvent#isAccessibilityDataPrivate()}. * {@link AccessibilityEvent#isAccessibilityDataSensitive()}. * </p> * <p> * <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.setImportantForAccessibility(isImportantForAccessibility()); info.setAccessibilityDataSensitive(isAccessibilityDataSensitive()); info.setPackageName(mContext.getPackageName()); info.setClassName(getAccessibilityClassName()); info.setStateDescription(getStateDescription()); Loading Loading @@ -13581,7 +13582,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, public void setFilterTouchesWhenObscured(boolean enabled) { setFlags(enabled ? FILTER_TOUCHES_WHEN_OBSCURED : 0, 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 // AccessibilityManagerService propagates events to each recipient AccessibilityService. if (!AccessibilityManager.getInstance(mContext).isRequestFromAccessibilityTool() && isAccessibilityDataPrivate()) { && isAccessibilityDataSensitive()) { return false; } } Loading @@ -14833,43 +14834,43 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * set to true. * * <p> * See default behavior provided by {@link #ACCESSIBILITY_DATA_PRIVATE_AUTO}. Otherwise, * returns true for {@link #ACCESSIBILITY_DATA_PRIVATE_YES} or false for {@link * #ACCESSIBILITY_DATA_PRIVATE_NO}. * See default behavior provided by {@link #ACCESSIBILITY_DATA_SENSITIVE_AUTO}. Otherwise, * returns true for {@link #ACCESSIBILITY_DATA_SENSITIVE_YES} or false for {@link * #ACCESSIBILITY_DATA_SENSITIVE_NO}. * </p> * * @return True if this view should restrict accessibility service access to services that have * the isAccessibilityTool property. */ @ViewDebug.ExportedProperty(category = "accessibility") public boolean isAccessibilityDataPrivate() { if (mInferredAccessibilityDataPrivate == ACCESSIBILITY_DATA_PRIVATE_AUTO) { calculateAccessibilityDataPrivate(); public boolean isAccessibilityDataSensitive() { if (mInferredAccessibilityDataSensitive == ACCESSIBILITY_DATA_SENSITIVE_AUTO) { 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> * <strong>Note:</strong> This method needs to be called any time one of the below conditions * changes, to recalculate the new value. * </p> */ void calculateAccessibilityDataPrivate() { void calculateAccessibilityDataSensitive() { // Use the explicit value if set. if (mExplicitAccessibilityDataPrivate != ACCESSIBILITY_DATA_PRIVATE_AUTO) { mInferredAccessibilityDataPrivate = mExplicitAccessibilityDataPrivate; if (mExplicitAccessibilityDataSensitive != ACCESSIBILITY_DATA_SENSITIVE_AUTO) { mInferredAccessibilityDataSensitive = mExplicitAccessibilityDataSensitive; } else if (getFilterTouchesWhenObscured()) { // Views that set filterTouchesWhenObscured default to accessibilityDataPrivate. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_YES; } else if (mParent instanceof View && ((View) mParent).isAccessibilityDataPrivate()) { // Descendants of an accessibilityDataPrivate View are also accessibilityDataPrivate. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_YES; // Views that set filterTouchesWhenObscured default to accessibilityDataSensitive. mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_YES; } else if (mParent instanceof View && ((View) mParent).isAccessibilityDataSensitive()) { // Descendants of accessibilityDataSensitive Views are also accessibilityDataSensitive. mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_YES; } else { // Otherwise, default to not accessibilityDataPrivate. mInferredAccessibilityDataPrivate = ACCESSIBILITY_DATA_PRIVATE_NO; // Otherwise, default to not accessibilityDataSensitive. mInferredAccessibilityDataSensitive = ACCESSIBILITY_DATA_SENSITIVE_NO; } } Loading @@ -14879,10 +14880,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * {@link android.accessibilityservice.AccessibilityServiceInfo#isAccessibilityTool} property * set to true. */ public void setAccessibilityDataPrivate( @AccessibilityDataPrivate int accessibilityDataPrivate) { mExplicitAccessibilityDataPrivate = accessibilityDataPrivate; calculateAccessibilityDataPrivate(); public void setAccessibilityDataSensitive( @AccessibilityDataSensitive int accessibilityDataSensitive) { mExplicitAccessibilityDataSensitive = accessibilityDataSensitive; calculateAccessibilityDataSensitive(); } /**
core/java/android/view/ViewGroup.java +3 −3 Original line number Diff line number Diff line Loading @@ -3921,10 +3921,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } @Override void calculateAccessibilityDataPrivate() { super.calculateAccessibilityDataPrivate(); void calculateAccessibilityDataSensitive() { super.calculateAccessibilityDataSensitive(); 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 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 * 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 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. * </p> * <p> Loading Loading @@ -1168,17 +1168,17 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par * set to true. * * <p> * Initial value matches the {@link android.view.View#isAccessibilityDataPrivate} property from * the event's source node, if present, or false by default. * Initial value matches the {@link android.view.View#isAccessibilityDataSensitive} property * from the event's source node, if present, or false by default. * </p> * * @return True if the event should be delivered only to isAccessibilityTool services, false * otherwise. * @see #setAccessibilityDataPrivate * @see #setAccessibilityDataSensitive */ @Override public boolean isAccessibilityDataPrivate() { return super.isAccessibilityDataPrivate(); public boolean isAccessibilityDataSensitive() { 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. * </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. * @throws IllegalStateException If called from an AccessibilityService. */ @Override public void setAccessibilityDataPrivate(boolean accessibilityDataPrivate) { super.setAccessibilityDataPrivate(accessibilityDataPrivate); public void setAccessibilityDataSensitive(boolean accessibilityDataSensitive) { super.setAccessibilityDataSensitive(accessibilityDataSensitive); } /** Loading