am 531d5866: Merge "Accessibility focus search and setting it from hover are performed by the client." into jb-dev
* commit '531d5866d8e2529e2ae1c6ef12202119753bec03': Accessibility focus search and setting it from hover are performed by the client.
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -24375,12 +24375,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
|
||||
@@ -24402,7 +24396,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
|
||||
@@ -25349,7 +25342,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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -180,6 +180,8 @@ public abstract class AccessibilityNodeProvider {
|
||||
*
|
||||
* @see #createAccessibilityNodeInfo(int)
|
||||
* @see AccessibilityNodeInfo
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public AccessibilityNodeInfo accessibilityFocusSearch(int direction, int virtualViewId) {
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user