Use designated attributes to tailor FocusArea's bounds
Bug: 163582808
Test: atest CarRotaryControllerRoboTests
Change-Id: I7af3cb093ffe4fb7f17f850c19f2824a678c3d86
diff --git a/src/com/android/car/rotary/Navigator.java b/src/com/android/car/rotary/Navigator.java
index 4c565ec..dae8a5a 100644
--- a/src/com/android/car/rotary/Navigator.java
+++ b/src/com/android/car/rotary/Navigator.java
@@ -18,10 +18,10 @@
import static android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_BACKWARD;
import static android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_BOTTOM_PADDING;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_LEFT_PADDING;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_RIGHT_PADDING;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_TOP_PADDING;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_BOTTOM_BOUND_OFFSET;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_LEFT_BOUND_OFFSET;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_RIGHT_BOUND_OFFSET;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_TOP_BOUND_OFFSET;
import android.graphics.Rect;
import android.os.Bundle;
@@ -887,12 +887,12 @@
Rect bounds = new Rect();
node.getBoundsInScreen(bounds);
if (Utils.isFocusArea(node)) {
- // The bounds of a FocusArea is its bounds minus its highlight paddings.
+ // The bounds used for finding the nudge target are its View bounds minus the offset.
Bundle bundle = node.getExtras();
- bounds.left += bundle.getInt(FOCUS_AREA_HIGHLIGHT_LEFT_PADDING);
- bounds.right -= bundle.getInt(FOCUS_AREA_HIGHLIGHT_RIGHT_PADDING);
- bounds.top += bundle.getInt(FOCUS_AREA_HIGHLIGHT_TOP_PADDING);
- bounds.bottom -= bundle.getInt(FOCUS_AREA_HIGHLIGHT_BOTTOM_PADDING);
+ bounds.left += bundle.getInt(FOCUS_AREA_LEFT_BOUND_OFFSET);
+ bounds.right -= bundle.getInt(FOCUS_AREA_RIGHT_BOUND_OFFSET);
+ bounds.top += bundle.getInt(FOCUS_AREA_TOP_BOUND_OFFSET);
+ bounds.bottom -= bundle.getInt(FOCUS_AREA_BOTTOM_BOUND_OFFSET);
}
return bounds;
}
diff --git a/tests/robotests/src/com/android/car/rotary/NavigatorTest.java b/tests/robotests/src/com/android/car/rotary/NavigatorTest.java
index f189a16..b372906 100644
--- a/tests/robotests/src/com/android/car/rotary/NavigatorTest.java
+++ b/tests/robotests/src/com/android/car/rotary/NavigatorTest.java
@@ -1428,9 +1428,9 @@
* In the same window
*
* ==========focus area 1============
- * = .......highlight............ =
+ * = .........top offset......... =
* = . *view1* . =
- * = .......paddings............. =
+ * = .......bottom offset........ =
* = =
* = ========focus area 2======== =
* = = *view2* = =
@@ -1447,7 +1447,7 @@
* </pre>
*/
@Test
- public void testFindNudgeTargetWithFocusAreaHighlightPadding() {
+ public void testFindNudgeTargetWithFocusAreaBoundsOffset() {
Rect windowBounds = new Rect(0, 0, 100, 100);
AccessibilityWindowInfo window = new WindowBuilder()
.setBoundsInScreen(windowBounds)
@@ -1462,7 +1462,7 @@
.setWindow(window)
.setParent(root)
.setFocusArea()
- .setFocusAreaHighlightPadding(0, 0, 0, 70)
+ .setFocusAreaBoundsOffset(0, 0, 0, 70)
.setBoundsInScreen(new Rect(0, 0, 100, 80))
.build();
AccessibilityNodeInfo view1 = mNodeBuilder
diff --git a/tests/robotests/src/com/android/car/rotary/NodeBuilder.java b/tests/robotests/src/com/android/car/rotary/NodeBuilder.java
index 45ac7e9..4736bc4 100644
--- a/tests/robotests/src/com/android/car/rotary/NodeBuilder.java
+++ b/tests/robotests/src/com/android/car/rotary/NodeBuilder.java
@@ -19,10 +19,10 @@
import static com.android.car.rotary.Utils.FOCUS_AREA_CLASS_NAME;
import static com.android.car.rotary.Utils.FOCUS_PARKING_VIEW_CLASS_NAME;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_BOTTOM_PADDING;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_LEFT_PADDING;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_RIGHT_PADDING;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_TOP_PADDING;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_BOTTOM_BOUND_OFFSET;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_LEFT_BOUND_OFFSET;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_RIGHT_BOUND_OFFSET;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_TOP_BOUND_OFFSET;
import static com.android.car.ui.utils.RotaryConstants.ROTARY_VERTICALLY_SCROLLABLE;
import static org.mockito.Mockito.any;
@@ -224,11 +224,11 @@
return setClassName(FOCUS_AREA_CLASS_NAME).setFocusable(false);
}
- NodeBuilder setFocusAreaHighlightPadding(int left, int top, int right, int bottom) {
- mExtras.putInt(FOCUS_AREA_HIGHLIGHT_LEFT_PADDING, left);
- mExtras.putInt(FOCUS_AREA_HIGHLIGHT_TOP_PADDING, top);
- mExtras.putInt(FOCUS_AREA_HIGHLIGHT_RIGHT_PADDING, right);
- mExtras.putInt(FOCUS_AREA_HIGHLIGHT_BOTTOM_PADDING, bottom);
+ NodeBuilder setFocusAreaBoundsOffset(int left, int top, int right, int bottom) {
+ mExtras.putInt(FOCUS_AREA_LEFT_BOUND_OFFSET, left);
+ mExtras.putInt(FOCUS_AREA_TOP_BOUND_OFFSET, top);
+ mExtras.putInt(FOCUS_AREA_RIGHT_BOUND_OFFSET, right);
+ mExtras.putInt(FOCUS_AREA_BOTTOM_BOUND_OFFSET, bottom);
return this;
}
diff --git a/tests/robotests/src/com/android/car/rotary/NodeBuilderTest.java b/tests/robotests/src/com/android/car/rotary/NodeBuilderTest.java
index 7ec7d9a..6d19ea3 100644
--- a/tests/robotests/src/com/android/car/rotary/NodeBuilderTest.java
+++ b/tests/robotests/src/com/android/car/rotary/NodeBuilderTest.java
@@ -19,10 +19,10 @@
import static com.android.car.rotary.Utils.FOCUS_AREA_CLASS_NAME;
import static com.android.car.rotary.Utils.FOCUS_PARKING_VIEW_CLASS_NAME;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_BOTTOM_PADDING;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_LEFT_PADDING;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_RIGHT_PADDING;
-import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_HIGHLIGHT_TOP_PADDING;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_BOTTOM_BOUND_OFFSET;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_LEFT_BOUND_OFFSET;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_RIGHT_BOUND_OFFSET;
+import static com.android.car.ui.utils.RotaryConstants.FOCUS_AREA_TOP_BOUND_OFFSET;
import static com.android.car.ui.utils.RotaryConstants.ROTARY_VERTICALLY_SCROLLABLE;
import static com.google.common.truth.Truth.assertThat;
@@ -156,19 +156,19 @@
}
@Test
- public void testSetFocusAreaHighlightPadding() {
+ public void testSetFocusAreaBoundsOffset() {
int left = 10;
int top = 20;
int right = 30;
int bottom = 40;
AccessibilityNodeInfo node = mNodeBuilder
- .setFocusAreaHighlightPadding(left, top, right, bottom)
+ .setFocusAreaBoundsOffset(left, top, right, bottom)
.build();
Bundle extras = node.getExtras();
- assertThat(extras.getInt(FOCUS_AREA_HIGHLIGHT_LEFT_PADDING)).isEqualTo(left);
- assertThat(extras.getInt(FOCUS_AREA_HIGHLIGHT_TOP_PADDING)).isEqualTo(top);
- assertThat(extras.getInt(FOCUS_AREA_HIGHLIGHT_RIGHT_PADDING)).isEqualTo(right);
- assertThat(extras.getInt(FOCUS_AREA_HIGHLIGHT_BOTTOM_PADDING)).isEqualTo(bottom);
+ assertThat(extras.getInt(FOCUS_AREA_LEFT_BOUND_OFFSET)).isEqualTo(left);
+ assertThat(extras.getInt(FOCUS_AREA_TOP_BOUND_OFFSET)).isEqualTo(top);
+ assertThat(extras.getInt(FOCUS_AREA_RIGHT_BOUND_OFFSET)).isEqualTo(right);
+ assertThat(extras.getInt(FOCUS_AREA_BOTTOM_BOUND_OFFSET)).isEqualTo(bottom);
}
@Test