summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Qasid Ahmad Sadiq <qasid@google.com> 2019-04-04 21:30:07 -0700
committer Qasid Sadiq <qasid@google.com> 2019-04-05 19:47:41 +0000
commit7bcdd702c98dd28ba3bcd6cac5ec217a139f21c7 (patch)
treef1f0f676a03fe6fa2b15b903eb11788ddf9e36cc
parentb1e562de9859f312cbe69f380c547e86f5d6d522 (diff)
Revert "Depecrate flags, and try to match them to actions"
This reverts commit 063eefa78a37905416cf119fd58278c03ea534f3. The problem with this fix is that services expect to be able to determine if a node has certain capabilities, even if it is disabled, and doesn't have the action associated with them. Change-Id: Ia17ed6ed5f92737226cfe704dc71957f2ae5541b Fix: 120247282 Test: it builds.
-rw-r--r--api/current.txt12
-rw-r--r--core/java/android/view/View.java4
-rw-r--r--core/java/android/view/accessibility/AccessibilityNodeInfo.java77
-rw-r--r--core/tests/coretests/src/android/view/accessibility/AccessibilityNodeInfoTest.java2
4 files changed, 43 insertions, 52 deletions
diff --git a/api/current.txt b/api/current.txt
index 0eb6447ce291..7cc172d24820 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -52347,18 +52347,18 @@ package android.view.accessibility {
method public void setCheckable(boolean);
method public void setChecked(boolean);
method public void setClassName(CharSequence);
- method @Deprecated public void setClickable(boolean);
+ method public void setClickable(boolean);
method public void setCollectionInfo(android.view.accessibility.AccessibilityNodeInfo.CollectionInfo);
method public void setCollectionItemInfo(android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo);
method public void setContentDescription(CharSequence);
method public void setContentInvalid(boolean);
- method @Deprecated public void setContextClickable(boolean);
- method @Deprecated public void setDismissable(boolean);
+ method public void setContextClickable(boolean);
+ method public void setDismissable(boolean);
method public void setDrawingOrder(int);
method public void setEditable(boolean);
method public void setEnabled(boolean);
method public void setError(CharSequence);
- method @Deprecated public void setFocusable(boolean);
+ method public void setFocusable(boolean);
method public void setFocused(boolean);
method public void setHeading(boolean);
method public void setHintText(CharSequence);
@@ -52369,7 +52369,7 @@ package android.view.accessibility {
method public void setLabeledBy(android.view.View);
method public void setLabeledBy(android.view.View, int);
method public void setLiveRegion(int);
- method @Deprecated public void setLongClickable(boolean);
+ method public void setLongClickable(boolean);
method public void setMaxTextLength(int);
method public void setMovementGranularities(int);
method public void setMultiLine(boolean);
@@ -52380,7 +52380,7 @@ package android.view.accessibility {
method public void setPassword(boolean);
method public void setRangeInfo(android.view.accessibility.AccessibilityNodeInfo.RangeInfo);
method public void setScreenReaderFocusable(boolean);
- method @Deprecated public void setScrollable(boolean);
+ method public void setScrollable(boolean);
method public void setSelected(boolean);
method public void setShowingHintText(boolean);
method public void setSource(android.view.View);
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 65fe87fa8ca0..dfa51fff0a6b 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -9891,10 +9891,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
info.setContentDescription(getContentDescription());
info.setEnabled(isEnabled());
+ info.setClickable(isClickable());
+ info.setFocusable(isFocusable());
info.setScreenReaderFocusable(isScreenReaderFocusable());
info.setFocused(isFocused());
info.setAccessibilityFocused(isAccessibilityFocused());
info.setSelected(isSelected());
+ info.setLongClickable(isLongClickable());
+ info.setContextClickable(isContextClickable());
info.setLiveRegion(getAccessibilityLiveRegion());
if ((mTooltipInfo != null) && (mTooltipInfo.mTooltipText != null)) {
info.setTooltipText(mTooltipInfo.mTooltipText);
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index 774a359e5d6c..3b310fc13ee3 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -611,14 +611,22 @@ public class AccessibilityNodeInfo implements Parcelable {
private static final int BOOLEAN_PROPERTY_CHECKED = 0x00000002;
+ private static final int BOOLEAN_PROPERTY_FOCUSABLE = 0x00000004;
+
private static final int BOOLEAN_PROPERTY_FOCUSED = 0x00000008;
private static final int BOOLEAN_PROPERTY_SELECTED = 0x00000010;
+ private static final int BOOLEAN_PROPERTY_CLICKABLE = 0x00000020;
+
+ private static final int BOOLEAN_PROPERTY_LONG_CLICKABLE = 0x00000040;
+
private static final int BOOLEAN_PROPERTY_ENABLED = 0x00000080;
private static final int BOOLEAN_PROPERTY_PASSWORD = 0x00000100;
+ private static final int BOOLEAN_PROPERTY_SCROLLABLE = 0x00000200;
+
private static final int BOOLEAN_PROPERTY_ACCESSIBILITY_FOCUSED = 0x00000400;
private static final int BOOLEAN_PROPERTY_VISIBLE_TO_USER = 0x00000800;
@@ -633,6 +641,8 @@ public class AccessibilityNodeInfo implements Parcelable {
private static final int BOOLEAN_PROPERTY_CONTENT_INVALID = 0x00010000;
+ private static final int BOOLEAN_PROPERTY_CONTEXT_CLICKABLE = 0x00020000;
+
private static final int BOOLEAN_PROPERTY_IMPORTANCE = 0x0040000;
private static final int BOOLEAN_PROPERTY_SCREEN_READER_FOCUSABLE = 0x0080000;
@@ -1191,16 +1201,6 @@ public class AccessibilityNodeInfo implements Parcelable {
mActions.add(action);
}
- private boolean hasActionWithId(int actionId) {
- List<AccessibilityAction> actions = getActionList();
- for (int i = 0; i < actions.size(); i++) {
- if (actions.get(i).getId() == actionId) {
- return true;
- }
- }
- return false;
- }
-
/**
* Adds an action that can be performed on the node.
* <p>
@@ -1814,7 +1814,7 @@ public class AccessibilityNodeInfo implements Parcelable {
* @return True if the node is focusable.
*/
public boolean isFocusable() {
- return hasActionWithId(ACTION_FOCUS) || hasActionWithId(ACTION_CLEAR_FOCUS);
+ return getBooleanProperty(BOOLEAN_PROPERTY_FOCUSABLE);
}
/**
@@ -1828,11 +1828,10 @@ public class AccessibilityNodeInfo implements Parcelable {
* @param focusable True if the node is focusable.
*
* @throws IllegalStateException If called from an AccessibilityService.
- * @deprecated Use {@link #addAction(AccessibilityAction)}
- * with {@link AccessibilityAction#ACTION_FOCUS}
*/
- @Deprecated
- public void setFocusable(boolean focusable) { }
+ public void setFocusable(boolean focusable) {
+ setBooleanProperty(BOOLEAN_PROPERTY_FOCUSABLE, focusable);
+ }
/**
* Gets whether this node is focused.
@@ -1940,7 +1939,7 @@ public class AccessibilityNodeInfo implements Parcelable {
* @return True if the node is clickable.
*/
public boolean isClickable() {
- return hasActionWithId(ACTION_CLICK);
+ return getBooleanProperty(BOOLEAN_PROPERTY_CLICKABLE);
}
/**
@@ -1954,11 +1953,10 @@ public class AccessibilityNodeInfo implements Parcelable {
* @param clickable True if the node is clickable.
*
* @throws IllegalStateException If called from an AccessibilityService.
- * @deprecated Use {@link #addAction(AccessibilityAction)}
- * with {@link AccessibilityAction#ACTION_CLICK}
*/
- @Deprecated
- public void setClickable(boolean clickable) { }
+ public void setClickable(boolean clickable) {
+ setBooleanProperty(BOOLEAN_PROPERTY_CLICKABLE, clickable);
+ }
/**
* Gets whether this node is long clickable.
@@ -1966,7 +1964,7 @@ public class AccessibilityNodeInfo implements Parcelable {
* @return True if the node is long clickable.
*/
public boolean isLongClickable() {
- return hasActionWithId(ACTION_LONG_CLICK);
+ return getBooleanProperty(BOOLEAN_PROPERTY_LONG_CLICKABLE);
}
/**
@@ -1980,11 +1978,10 @@ public class AccessibilityNodeInfo implements Parcelable {
* @param longClickable True if the node is long clickable.
*
* @throws IllegalStateException If called from an AccessibilityService.
- * @deprecated Use {@link #addAction(AccessibilityAction)}
- * with {@link AccessibilityAction#ACTION_LONG_CLICK}
*/
- @Deprecated
- public void setLongClickable(boolean longClickable) { }
+ public void setLongClickable(boolean longClickable) {
+ setBooleanProperty(BOOLEAN_PROPERTY_LONG_CLICKABLE, longClickable);
+ }
/**
* Gets whether this node is enabled.
@@ -2042,13 +2039,7 @@ public class AccessibilityNodeInfo implements Parcelable {
* @return True if the node is scrollable, false otherwise.
*/
public boolean isScrollable() {
- return hasActionWithId(ACTION_SCROLL_BACKWARD)
- || hasActionWithId(ACTION_SCROLL_FORWARD)
- || hasActionWithId(R.id.accessibilityActionScrollToPosition)
- || hasActionWithId(R.id.accessibilityActionScrollUp)
- || hasActionWithId(R.id.accessibilityActionScrollDown)
- || hasActionWithId(R.id.accessibilityActionScrollLeft)
- || hasActionWithId(R.id.accessibilityActionScrollRight);
+ return getBooleanProperty(BOOLEAN_PROPERTY_SCROLLABLE);
}
/**
@@ -2062,11 +2053,9 @@ public class AccessibilityNodeInfo implements Parcelable {
* @param scrollable True if the node is scrollable, false otherwise.
*
* @throws IllegalStateException If called from an AccessibilityService.
- * @deprecated Use {@link #addAction(AccessibilityAction)}
*/
- @Deprecated
-
public void setScrollable(boolean scrollable) {
+ setBooleanProperty(BOOLEAN_PROPERTY_SCROLLABLE, scrollable);
}
/**
@@ -2257,7 +2246,7 @@ public class AccessibilityNodeInfo implements Parcelable {
* @return True if the node is context clickable.
*/
public boolean isContextClickable() {
- return hasActionWithId(R.id.accessibilityActionContextClick);
+ return getBooleanProperty(BOOLEAN_PROPERTY_CONTEXT_CLICKABLE);
}
/**
@@ -2270,11 +2259,10 @@ public class AccessibilityNodeInfo implements Parcelable {
*
* @param contextClickable True if the node is context clickable.
* @throws IllegalStateException If called from an AccessibilityService.
- * @deprecated Use {@link #addAction(AccessibilityAction)}
- * with {@link AccessibilityAction#ACTION_CONTEXT_CLICK}
*/
- @Deprecated
- public void setContextClickable(boolean contextClickable) { }
+ public void setContextClickable(boolean contextClickable) {
+ setBooleanProperty(BOOLEAN_PROPERTY_CONTEXT_CLICKABLE, contextClickable);
+ }
/**
* Gets the node's live region mode.
@@ -2368,7 +2356,7 @@ public class AccessibilityNodeInfo implements Parcelable {
* @return If the node can be dismissed.
*/
public boolean isDismissable() {
- return hasActionWithId(ACTION_DISMISS);
+ return getBooleanProperty(BOOLEAN_PROPERTY_DISMISSABLE);
}
/**
@@ -2380,11 +2368,10 @@ public class AccessibilityNodeInfo implements Parcelable {
* </p>
*
* @param dismissable If the node can be dismissed.
- * @deprecated Use {@link #addAction(AccessibilityAction)}
- * with {@link AccessibilityAction#ACTION_DISMISS}
*/
- @Deprecated
- public void setDismissable(boolean dismissable) { }
+ public void setDismissable(boolean dismissable) {
+ setBooleanProperty(BOOLEAN_PROPERTY_DISMISSABLE, dismissable);
+ }
/**
* Returns whether the node originates from a view considered important for accessibility.
diff --git a/core/tests/coretests/src/android/view/accessibility/AccessibilityNodeInfoTest.java b/core/tests/coretests/src/android/view/accessibility/AccessibilityNodeInfoTest.java
index 0ed690ceeef4..4c59207b2d61 100644
--- a/core/tests/coretests/src/android/view/accessibility/AccessibilityNodeInfoTest.java
+++ b/core/tests/coretests/src/android/view/accessibility/AccessibilityNodeInfoTest.java
@@ -58,7 +58,7 @@ public class AccessibilityNodeInfoTest {
// The number of flags held in boolean properties. Their values should also be double-checked
// in the methods above.
- private static final int NUM_BOOLEAN_PROPERTIES = 18;
+ private static final int NUM_BOOLEAN_PROPERTIES = 23;
@Test
public void testStandardActions_serializationFlagIsValid() {