summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/widget/NumberPicker.java3
-rw-r--r--core/tests/coretests/src/android/widget/NumberPickerTest.java91
2 files changed, 94 insertions, 0 deletions
diff --git a/core/java/android/widget/NumberPicker.java b/core/java/android/widget/NumberPicker.java
index 7c20472df357..4f1c40a8d1c2 100644
--- a/core/java/android/widget/NumberPicker.java
+++ b/core/java/android/widget/NumberPicker.java
@@ -2773,6 +2773,7 @@ public class NumberPicker extends LinearLayout {
int left, int top, int right, int bottom) {
AccessibilityNodeInfo info = mInputText.createAccessibilityNodeInfo();
info.setSource(NumberPicker.this, VIRTUAL_VIEW_ID_INPUT);
+ info.setAccessibilityFocused(mAccessibilityFocusedView == VIRTUAL_VIEW_ID_INPUT);
if (mAccessibilityFocusedView != VIRTUAL_VIEW_ID_INPUT) {
info.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);
}
@@ -2802,6 +2803,7 @@ public class NumberPicker extends LinearLayout {
info.setClickable(true);
info.setLongClickable(true);
info.setEnabled(NumberPicker.this.isEnabled());
+ info.setAccessibilityFocused(mAccessibilityFocusedView == virtualViewId);
Rect boundsInParent = mTempRect;
boundsInParent.set(left, top, right, bottom);
info.setVisibleToUser(isVisibleToUser(boundsInParent));
@@ -2843,6 +2845,7 @@ public class NumberPicker extends LinearLayout {
info.setParent((View) getParentForAccessibility());
info.setEnabled(NumberPicker.this.isEnabled());
info.setScrollable(true);
+ info.setAccessibilityFocused(mAccessibilityFocusedView == View.NO_ID);
final float applicationScale =
getContext().getResources().getCompatibilityInfo().applicationScale;
diff --git a/core/tests/coretests/src/android/widget/NumberPickerTest.java b/core/tests/coretests/src/android/widget/NumberPickerTest.java
new file mode 100644
index 000000000000..cab7c89f4ca1
--- /dev/null
+++ b/core/tests/coretests/src/android/widget/NumberPickerTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.widget;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.platform.test.annotations.Presubmit;
+import android.view.View;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.accessibility.AccessibilityNodeProvider;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@Presubmit
+public class NumberPickerTest {
+ @Test
+ public void testAccessibilityFocusedProperty() {
+ final int virtualViewIdIncrement = 1;
+ final int VirtualViewIdInput = 2;
+ final int VirtualViewIdDecrement = 3;
+ final NumberPicker np =
+ new NumberPicker(InstrumentationRegistry.getInstrumentation().getContext());
+ final AccessibilityNodeProvider provider = np.getAccessibilityNodeProvider();
+
+ AccessibilityNodeInfo info = provider.createAccessibilityNodeInfo(View.NO_ID);
+ assertFalse(info.isAccessibilityFocused());
+ info.recycle();
+ provider.performAction(View.NO_ID, AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null);
+ info = provider.createAccessibilityNodeInfo(View.NO_ID);
+ assertTrue(info.isAccessibilityFocused());
+ info.recycle();
+
+ info = provider.createAccessibilityNodeInfo(virtualViewIdIncrement);
+ assertFalse(info.isAccessibilityFocused());
+ info.recycle();
+ provider.performAction(
+ virtualViewIdIncrement,
+ AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS,
+ null
+ );
+ info = provider.createAccessibilityNodeInfo(virtualViewIdIncrement);
+ assertTrue(info.isAccessibilityFocused());
+ info.recycle();
+
+ info = provider.createAccessibilityNodeInfo(VirtualViewIdInput);
+ assertFalse(info.isAccessibilityFocused());
+ info.recycle();
+ provider.performAction(
+ VirtualViewIdInput,
+ AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS,
+ null
+ );
+ info = provider.createAccessibilityNodeInfo(VirtualViewIdInput);
+ assertTrue(info.isAccessibilityFocused());
+ info.recycle();
+
+ info = provider.createAccessibilityNodeInfo(VirtualViewIdDecrement);
+ assertFalse(info.isAccessibilityFocused());
+ info.recycle();
+ provider.performAction(
+ VirtualViewIdDecrement,
+ AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS,
+ null
+ );
+ info = provider.createAccessibilityNodeInfo(VirtualViewIdDecrement);
+ assertTrue(info.isAccessibilityFocused());
+ info.recycle();
+ }
+}