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

Commit 4c68e35d authored by Daniel Norman's avatar Daniel Norman Committed by Android (Google) Code Review
Browse files

Merge "Rename AccessibilityDataPrivate -> AccessibilityDataSensitive" into udc-dev

parents fab84db7 7ea7d33c
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -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
@@ -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();
@@ -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);
@@ -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
@@ -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);
@@ -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();
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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(
+42 −41
Original line number 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
     * 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
@@ -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
@@ -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));
@@ -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
@@ -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());
@@ -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();
    }
    /**
@@ -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;
            }
        }
@@ -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;
        }
    }
@@ -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();
    }
    /**
+3 −3
Original line number Diff line number Diff line
@@ -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();
        }
    }

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

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