Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7ea7d33c authored by Daniel Norman's avatar Daniel Norman
Browse files

Rename AccessibilityDataPrivate -> AccessibilityDataSensitive

Also adds this as a boolean property for AccessibilityNodeInfo so that
accessibility services can query the property (for nodes visible to the
service) if they want to use it for behavioral changes.

Bug: 268509740
Test: atest AccessibilityNodeInfoTest (frameworks/base and cts)
Test: atest AccessibilityEndToEndTest
Change-Id: I05d30b1e709bde33b0f566210cd2513e3a566962
parent 5b826d69
Loading
Loading
Loading
Loading
+10 −8
Original line number Original line Diff line number Diff line
@@ -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
@@ -52177,7 +52177,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();
@@ -52356,7 +52356,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);
@@ -52539,9 +52539,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
@@ -54011,11 +54011,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);
@@ -54206,6 +54206,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();
@@ -54242,6 +54243,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);
+1 −1
Original line number Original line Diff line number Diff line
@@ -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(
+42 −41
Original line number Original line Diff line number Diff line
@@ -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
@@ -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
@@ -6015,9 +6015,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));
@@ -8659,9 +8659,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
@@ -10696,6 +10696,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());
@@ -13464,7 +13465,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();
    }
    }
    /**
    /**
@@ -14700,7 +14701,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;
            }
            }
        }
        }
@@ -14716,43 +14717,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;
        }
        }
    }
    }
@@ -14762,10 +14763,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();
    }
    }
    /**
    /**
+3 −3
Original line number Original line Diff line number Diff line
@@ -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();
        }
        }
    }
    }


+9 −9
Original line number Original line Diff line number Diff line
@@ -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>
@@ -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();
    }
    }


    /**
    /**
@@ -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