Adds accessibility actions for magnification switch button to move layout position am: f142b5a368
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14781659 Change-Id: Ia5d234f282a7302cadfbf0fdef16309767eb98a1
This commit is contained in:
@@ -108,16 +108,41 @@ class MagnificationModeSwitch implements MagnificationGestureDetector.OnGestureL
|
||||
R.string.magnification_mode_switch_click_label));
|
||||
info.addAction(clickAction);
|
||||
info.setClickable(true);
|
||||
info.addAction(new AccessibilityAction(R.id.accessibility_action_move_up,
|
||||
mContext.getString(R.string.accessibility_control_move_up)));
|
||||
info.addAction(new AccessibilityAction(R.id.accessibility_action_move_down,
|
||||
mContext.getString(R.string.accessibility_control_move_down)));
|
||||
info.addAction(new AccessibilityAction(R.id.accessibility_action_move_left,
|
||||
mContext.getString(R.string.accessibility_control_move_left)));
|
||||
info.addAction(new AccessibilityAction(R.id.accessibility_action_move_right,
|
||||
mContext.getString(R.string.accessibility_control_move_right)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performAccessibilityAction(View host, int action, Bundle args) {
|
||||
if (action == AccessibilityAction.ACTION_CLICK.getId()) {
|
||||
handleSingleTap();
|
||||
if (performA11yAction(action)) {
|
||||
return true;
|
||||
}
|
||||
return super.performAccessibilityAction(host, action, args);
|
||||
}
|
||||
|
||||
private boolean performA11yAction(int action) {
|
||||
final Rect windowBounds = mWindowManager.getCurrentWindowMetrics().getBounds();
|
||||
if (action == AccessibilityAction.ACTION_CLICK.getId()) {
|
||||
handleSingleTap();
|
||||
} else if (action == R.id.accessibility_action_move_up) {
|
||||
moveButton(0, -windowBounds.height());
|
||||
} else if (action == R.id.accessibility_action_move_down) {
|
||||
moveButton(0, windowBounds.height());
|
||||
} else if (action == R.id.accessibility_action_move_left) {
|
||||
moveButton(-windowBounds.width(), 0);
|
||||
} else if (action == R.id.accessibility_action_move_right) {
|
||||
moveButton(windowBounds.width(), 0);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
mWindowInsetChangeRunnable = this::onWindowInsetChanged;
|
||||
mImageView.setOnApplyWindowInsetsListener((v, insets) -> {
|
||||
|
||||
@@ -394,10 +394,26 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
|
||||
hasItems(new AccessibilityNodeInfo.AccessibilityAction(
|
||||
ACTION_CLICK.getId(), mContext.getResources().getString(
|
||||
R.string.magnification_mode_switch_click_label))));
|
||||
assertThat(nodeInfo.getActionList(),
|
||||
hasItems(new AccessibilityNodeInfo.AccessibilityAction(
|
||||
R.id.accessibility_action_move_up, mContext.getResources().getString(
|
||||
R.string.accessibility_control_move_up))));
|
||||
assertThat(nodeInfo.getActionList(),
|
||||
hasItems(new AccessibilityNodeInfo.AccessibilityAction(
|
||||
R.id.accessibility_action_move_down, mContext.getResources().getString(
|
||||
R.string.accessibility_control_move_down))));
|
||||
assertThat(nodeInfo.getActionList(),
|
||||
hasItems(new AccessibilityNodeInfo.AccessibilityAction(
|
||||
R.id.accessibility_action_move_left, mContext.getResources().getString(
|
||||
R.string.accessibility_control_move_left))));
|
||||
assertThat(nodeInfo.getActionList(),
|
||||
hasItems(new AccessibilityNodeInfo.AccessibilityAction(
|
||||
R.id.accessibility_action_move_right, mContext.getResources().getString(
|
||||
R.string.accessibility_control_move_right))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void performA11yActions_showWindowModeButton_verifyTapAction() {
|
||||
public void performClickA11yActions_showWindowModeButton_verifyTapAction() {
|
||||
mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
resetAndStubMockImageViewAndAnimator();
|
||||
|
||||
@@ -407,6 +423,16 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
|
||||
verifyTapAction(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void performMoveLeftA11yAction_showButtonAtRightEdge_moveToLeftEdge() {
|
||||
mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
|
||||
mSpyImageView.performAccessibilityAction(
|
||||
R.id.accessibility_action_move_left, null);
|
||||
|
||||
assertLayoutPosition(/* toLeftScreenEdge= */true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void showButton_showFadeOutAnimation_fadeOutAnimationCanceled() {
|
||||
mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
|
||||
|
||||
Reference in New Issue
Block a user