From 07229fd5196226942056e77966c34d365bc86795 Mon Sep 17 00:00:00 2001 From: Daniel Hsieh Date: Mon, 21 Feb 2022 11:19:03 +0000 Subject: [PATCH] Disables tracking focus on move a11y actions. After a user perform a11y action, namely moving up/down/left/right, we have to disable tracking focus functionality. We refactor #onDrag to a more general term #onMove to cover any move action which has to disable tracking focus functionality. Bug: 218935435 Test: atest WindowMagnificationTest atest WindowMagnificationControllerTest atest WindowMagnificationManagerTest Change-Id: I578b301645a08c71e874fe2f4fcf2557202abefd --- .../IWindowMagnificationConnectionCallback.aidl | 6 ++---- .../systemui/accessibility/WindowMagnification.java | 4 ++-- .../accessibility/WindowMagnificationConnectionImpl.java | 4 ++-- .../accessibility/WindowMagnificationController.java | 4 ++-- .../systemui/accessibility/WindowMagnifierCallback.java | 7 ++----- .../accessibility/WindowMagnificationControllerTest.java | 2 ++ .../systemui/accessibility/WindowMagnificationTest.java | 6 +++--- .../magnification/WindowMagnificationManager.java | 4 ++-- .../magnification/WindowMagnificationManagerTest.java | 4 ++-- 9 files changed, 19 insertions(+), 22 deletions(-) diff --git a/core/java/android/view/accessibility/IWindowMagnificationConnectionCallback.aidl b/core/java/android/view/accessibility/IWindowMagnificationConnectionCallback.aidl index 722546eb06e46..adfeb6d110083 100644 --- a/core/java/android/view/accessibility/IWindowMagnificationConnectionCallback.aidl +++ b/core/java/android/view/accessibility/IWindowMagnificationConnectionCallback.aidl @@ -68,12 +68,10 @@ import android.graphics.Rect; void onAccessibilityActionPerformed(int displayId); /** - * Called when the user is performing dragging gesture. It is started after the offset - * between the down location and the move event location exceed - * {@link ViewConfiguration#getScaledTouchSlop()}. + * Called when the user is performing move action. * * @param displayId The logical display id. */ - void onDrag(int displayId); + void onMove(int displayId); } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java index 9b7a8f8d915ca..aafbf7e4d4396 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java @@ -221,9 +221,9 @@ public class WindowMagnification extends CoreStartable implements WindowMagnifie } @Override - public void onDrag(int displayId) { + public void onMove(int displayId) { if (mWindowMagnificationConnectionImpl != null) { - mWindowMagnificationConnectionImpl.onDrag(displayId); + mWindowMagnificationConnectionImpl.onMove(displayId); } } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationConnectionImpl.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationConnectionImpl.java index 0522d43e99fb9..aa684faee5abb 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationConnectionImpl.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationConnectionImpl.java @@ -150,10 +150,10 @@ class WindowMagnificationConnectionImpl extends IWindowMagnificationConnection.S } } - void onDrag(int displayId) { + void onMove(int displayId) { if (mConnectionCallback != null) { try { - mConnectionCallback.onDrag(displayId); + mConnectionCallback.onMove(displayId); } catch (RemoteException e) { Log.e(TAG, "Failed to inform taking control by a user", e); } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java index e109b5c9e519b..50ca447090b50 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java @@ -852,6 +852,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold @Override public void move(int xOffset, int yOffset) { moveWindowMagnifier(xOffset, yOffset); + mWindowMagnifierCallback.onMove(mDisplayId); } /** @@ -1045,8 +1046,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold @Override public boolean onDrag(float offsetX, float offsetY) { - moveWindowMagnifier(offsetX, offsetY); - mWindowMagnifierCallback.onDrag(mDisplayId); + move((int) offsetX, (int) offsetY); return true; } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnifierCallback.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnifierCallback.java index bdded10dfa1d4..c334ca664c466 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnifierCallback.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnifierCallback.java @@ -17,7 +17,6 @@ package com.android.systemui.accessibility; import android.graphics.Rect; -import android.view.ViewConfiguration; /** * A callback to inform {@link com.android.server.accessibility.AccessibilityManagerService} about @@ -56,11 +55,9 @@ interface WindowMagnifierCallback { void onAccessibilityActionPerformed(int displayId); /** - * Called when the user is performing dragging gesture. It is started after the offset - * between the down location and the move event location exceed - * {@link ViewConfiguration#getScaledTouchSlop()}. + * Called when the user is performing a move action. * * @param displayId The logical display id. */ - void onDrag(int displayId); + void onMove(int displayId); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java index 19efd11d3a008..a49c4d76445b9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java @@ -40,6 +40,7 @@ import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.timeout; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -566,6 +567,7 @@ public class WindowMagnificationControllerTest extends SysuiTestCase { mirrorView.performAccessibilityAction(R.id.accessibility_action_move_right, null)); assertTrue( mirrorView.performAccessibilityAction(R.id.accessibility_action_move_left, null)); + verify(mWindowMagnifierCallback, times(4)).onMove(eq(displayId)); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java index d3f30c508b8ba..ccf2f8b16f8a8 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java @@ -148,13 +148,13 @@ public class WindowMagnificationTest extends SysuiTestCase { } @Test - public void onDrag_enabled_notifyCallback() throws RemoteException { + public void onMove_enabled_notifyCallback() throws RemoteException { mCommandQueue.requestWindowMagnificationConnection(true); waitForIdleSync(); - mWindowMagnification.onDrag(TEST_DISPLAY); + mWindowMagnification.onMove(TEST_DISPLAY); - verify(mConnectionCallback).onDrag(TEST_DISPLAY); + verify(mConnectionCallback).onMove(TEST_DISPLAY); } @Test diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java b/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java index 46998123cd873..50e65809f67e2 100644 --- a/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java +++ b/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java @@ -834,10 +834,10 @@ public class WindowMagnificationManager implements } @Override - public void onDrag(int displayId) { + public void onMove(int displayId) { if (mTrace.isA11yTracingEnabledForTypes( FLAGS_WINDOW_MAGNIFICATION_CONNECTION_CALLBACK)) { - mTrace.logTrace(TAG + "ConnectionCallback.onDrag", + mTrace.logTrace(TAG + "ConnectionCallback.onMove", FLAGS_WINDOW_MAGNIFICATION_CONNECTION_CALLBACK, "displayId=" + displayId); } diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java index 88ca7f539cb71..2f75493e5e2c3 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java @@ -285,7 +285,7 @@ public class WindowMagnificationManagerTest { mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion); final Rect requestedRect = outRegion.getBounds(); requestedRect.offsetTo(requestedRect.right + 10, requestedRect.bottom + 10); - mMockConnection.getConnectionCallback().onDrag(TEST_DISPLAY); + mMockConnection.getConnectionCallback().onMove(TEST_DISPLAY); mWindowMagnificationManager.onRectangleOnScreenRequested(TEST_DISPLAY, requestedRect.left, requestedRect.top, requestedRect.right, requestedRect.bottom); @@ -355,7 +355,7 @@ public class WindowMagnificationManagerTest { throws RemoteException { mWindowMagnificationManager.setConnection(mMockConnection.getConnection()); mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f); - mMockConnection.getConnectionCallback().onDrag(TEST_DISPLAY); + mMockConnection.getConnectionCallback().onMove(TEST_DISPLAY); mWindowMagnificationManager.onImeWindowVisibilityChanged(true); final Region outRegion = new Region(); mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);