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

Commit 531d5866 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Accessibility focus search and setting it from hover are performed by...

Merge "Accessibility focus search and setting it from hover are performed by the client." into jb-dev
parents c1568fea 8ffe8b30
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -24374,12 +24374,6 @@ package android.view {
    method protected boolean verifyDrawable(android.graphics.drawable.Drawable);
    method public boolean willNotCacheDrawing();
    method public boolean willNotDraw();
    field public static final int ACCESSIBILITY_FOCUS_BACKWARD = 4097; // 0x1001
    field public static final int ACCESSIBILITY_FOCUS_DOWN = 4226; // 0x1082
    field public static final int ACCESSIBILITY_FOCUS_FORWARD = 4098; // 0x1002
    field public static final int ACCESSIBILITY_FOCUS_LEFT = 4113; // 0x1011
    field public static final int ACCESSIBILITY_FOCUS_RIGHT = 4162; // 0x1042
    field public static final int ACCESSIBILITY_FOCUS_UP = 4129; // 0x1021
    field public static final android.util.Property ALPHA;
    field public static final int DRAWING_CACHE_QUALITY_AUTO = 0; // 0x0
    field public static final int DRAWING_CACHE_QUALITY_HIGH = 1048576; // 0x100000
@@ -24401,7 +24395,6 @@ package android.view {
    field protected static final int[] FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
    field protected static final int[] FOCUSED_STATE_SET;
    field protected static final int[] FOCUSED_WINDOW_FOCUSED_STATE_SET;
    field public static final int FOCUS_ACCESSIBILITY = 4096; // 0x1000
    field public static final int FOCUS_BACKWARD = 1; // 0x1
    field public static final int FOCUS_DOWN = 130; // 0x82
    field public static final int FOCUS_FORWARD = 2; // 0x2
@@ -25348,7 +25341,6 @@ package android.view.accessibility {
  public abstract class AccessibilityNodeProvider {
    ctor public AccessibilityNodeProvider();
    method public android.view.accessibility.AccessibilityNodeInfo accessibilityFocusSearch(int, int);
    method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(int);
    method public android.view.accessibility.AccessibilityNodeInfo findAccessibilityFocus(int);
    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String, int);
+0 −8
Original line number Diff line number Diff line
@@ -24374,12 +24374,6 @@ package android.view {
    method protected boolean verifyDrawable(android.graphics.drawable.Drawable);
    method public boolean willNotCacheDrawing();
    method public boolean willNotDraw();
    field public static final int ACCESSIBILITY_FOCUS_BACKWARD = 4097; // 0x1001
    field public static final int ACCESSIBILITY_FOCUS_DOWN = 4226; // 0x1082
    field public static final int ACCESSIBILITY_FOCUS_FORWARD = 4098; // 0x1002
    field public static final int ACCESSIBILITY_FOCUS_LEFT = 4113; // 0x1011
    field public static final int ACCESSIBILITY_FOCUS_RIGHT = 4162; // 0x1042
    field public static final int ACCESSIBILITY_FOCUS_UP = 4129; // 0x1021
    field public static final android.util.Property ALPHA;
    field public static final int DRAWING_CACHE_QUALITY_AUTO = 0; // 0x0
    field public static final int DRAWING_CACHE_QUALITY_HIGH = 1048576; // 0x100000
@@ -24401,7 +24395,6 @@ package android.view {
    field protected static final int[] FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
    field protected static final int[] FOCUSED_STATE_SET;
    field protected static final int[] FOCUSED_WINDOW_FOCUSED_STATE_SET;
    field public static final int FOCUS_ACCESSIBILITY = 4096; // 0x1000
    field public static final int FOCUS_BACKWARD = 1; // 0x1
    field public static final int FOCUS_DOWN = 130; // 0x82
    field public static final int FOCUS_FORWARD = 2; // 0x2
@@ -25348,7 +25341,6 @@ package android.view.accessibility {
  public abstract class AccessibilityNodeProvider {
    ctor public AccessibilityNodeProvider();
    method public android.view.accessibility.AccessibilityNodeInfo accessibilityFocusSearch(int, int);
    method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(int);
    method public android.view.accessibility.AccessibilityNodeInfo findAccessibilityFocus(int);
    method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String, int);
+41 −3
Original line number Diff line number Diff line
@@ -1047,36 +1047,50 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
    /**
     * The accessibility focus which is the current user position when
     * interacting with the accessibility framework.
     *
     * @hide
     */
    public static final int FOCUS_ACCESSIBILITY =  0x00001000;
    /**
     * Use with {@link #focusSearch(int)}. Move acessibility focus left.
     *
     * @hide
     */
    public static final int ACCESSIBILITY_FOCUS_LEFT = FOCUS_LEFT | FOCUS_ACCESSIBILITY;
    /**
     * Use with {@link #focusSearch(int)}. Move acessibility focus up.
     *
     * @hide
     */
    public static final int ACCESSIBILITY_FOCUS_UP = FOCUS_UP | FOCUS_ACCESSIBILITY;
    /**
     * Use with {@link #focusSearch(int)}. Move acessibility focus right.
     *
     * @hide
     */
    public static final int ACCESSIBILITY_FOCUS_RIGHT = FOCUS_RIGHT | FOCUS_ACCESSIBILITY;
    /**
     * Use with {@link #focusSearch(int)}. Move acessibility focus down.
     *
     * @hide
     */
    public static final int ACCESSIBILITY_FOCUS_DOWN = FOCUS_DOWN | FOCUS_ACCESSIBILITY;
    /**
     * Use with {@link #focusSearch(int)}. Move acessibility focus forward.
     *
     * @hide
     */
    public static final int ACCESSIBILITY_FOCUS_FORWARD = FOCUS_FORWARD | FOCUS_ACCESSIBILITY;
    /**
     * Use with {@link #focusSearch(int)}. Move acessibility focus backward.
     *
     * @hide
     */
    public static final int ACCESSIBILITY_FOCUS_BACKWARD = FOCUS_BACKWARD | FOCUS_ACCESSIBILITY;
@@ -6333,6 +6347,31 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
        }
    }
    private void sendAccessibilityHoverEvent(int eventType) {
        // Since we are not delivering to a client accessibility events from not
        // important views (unless the clinet request that) we need to fire the
        // event from the deepest view exposed to the client. As a consequence if
        // the user crosses a not exposed view the client will see enter and exit
        // of the exposed predecessor followed by and enter and exit of that same
        // predecessor when entering and exiting the not exposed descendant. This
        // is fine since the client has a clear idea which view is hovered at the
        // price of a couple more events being sent. This is a simple and
        // working solution.
        View source = this;
        while (true) {
            if (source.includeForAccessibility()) {
                source.sendAccessibilityEvent(eventType);
                return;
            }
            ViewParent parent = source.getParent();
            if (parent instanceof View) {
                source = (View) parent;
            } else {
                return;
            }
        }
    }
    private void requestAccessibilityFocusFromHover() {
        if (includeForAccessibility() && isActionableForAccessibility()) {
            requestAccessibilityFocus();
@@ -7902,16 +7941,15 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
                    || action == MotionEvent.ACTION_HOVER_MOVE)
                    && !hasHoveredChild()
                    && pointInView(event.getX(), event.getY())) {
                sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_HOVER_ENTER);
                sendAccessibilityHoverEvent(AccessibilityEvent.TYPE_VIEW_HOVER_ENTER);
                mSendingHoverAccessibilityEvents = true;
                requestAccessibilityFocusFromHover();
            }
        } else {
            if (action == MotionEvent.ACTION_HOVER_EXIT
                    || (action == MotionEvent.ACTION_MOVE
                            && !pointInView(event.getX(), event.getY()))) {
                mSendingHoverAccessibilityEvents = false;
                sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_HOVER_EXIT);
                sendAccessibilityHoverEvent(AccessibilityEvent.TYPE_VIEW_HOVER_EXIT);
                // If the window does not have input focus we take away accessibility
                // focus as soon as the user stop hovering over the view.
                if (mAttachInfo != null && !mAttachInfo.mHasWindowFocus) {
+1 −7
Original line number Diff line number Diff line
@@ -469,13 +469,7 @@ public class AccessibilityNodeInfo implements Parcelable {
     *     {@link View#FOCUS_LEFT},
     *     {@link View#FOCUS_RIGHT},
     *     {@link View#FOCUS_FORWARD},
     *     {@link View#FOCUS_BACKWARD},
     *     {@link View#ACCESSIBILITY_FOCUS_FORWARD},
     *     {@link View#ACCESSIBILITY_FOCUS_BACKWARD},
     *     {@link View#ACCESSIBILITY_FOCUS_UP},
     *     {@link View#ACCESSIBILITY_FOCUS_RIGHT},
     *     {@link View#ACCESSIBILITY_FOCUS_DOWN},
     *     {@link View#ACCESSIBILITY_FOCUS_LEFT}.
     *     {@link View#FOCUS_BACKWARD}.
     *
     * @return The node info for the view that can take accessibility focus.
     */
+2 −0
Original line number Diff line number Diff line
@@ -180,6 +180,8 @@ public abstract class AccessibilityNodeProvider {
     *
     * @see #createAccessibilityNodeInfo(int)
     * @see AccessibilityNodeInfo
     *
     * @hide
     */
    public AccessibilityNodeInfo accessibilityFocusSearch(int direction, int virtualViewId) {
        return null;