From 9f03aebb506259bd669d78195ef207770713e2f9 Mon Sep 17 00:00:00 2001 From: mincheli Date: Mon, 27 Sep 2021 15:39:12 +0800 Subject: [PATCH] Updates magnification button when the magnification activation state is changed When the a11y shortcut or triple-tap gesture is trggerred, it also change the magnification activation state. If the activation state is off, the magnification button can be removed. If the activation state is on, the magnification button can be shown. And remove unsed callbacks of MagnificationGestureHandler, onShortcutTriggered and onTripleTapped. Bug: 201045813 Test: atest MagnificationControllerTest, atest FullScreenMagnificationControllerTest Change-Id: I2edc918f32ab9a8de02305bff121aedd483f70bb --- .../FullScreenMagnificationController.java | 5 +- ...FullScreenMagnificationGestureHandler.java | 2 - .../MagnificationController.java | 25 +++----- .../MagnificationGestureHandler.java | 20 ------ .../WindowMagnificationGestureHandler.java | 1 - ...FullScreenMagnificationControllerTest.java | 4 +- ...ScreenMagnificationGestureHandlerTest.java | 9 --- .../MagnificationControllerTest.java | 62 +++++-------------- .../MagnificationGestureHandlerTest.java | 8 --- ...WindowMagnificationGestureHandlerTest.java | 10 --- 10 files changed, 31 insertions(+), 115 deletions(-) diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java b/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java index 718da9e390ab9..8f30aa9acc79b 100644 --- a/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java +++ b/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java @@ -353,7 +353,7 @@ public class FullScreenMagnificationController { mMagnificationActivated = spec.scale > 1.0f; if (mMagnificationActivated != lastMagnificationActivated) { mMagnificationInfoChangedCallback.onFullScreenMagnificationActivationState( - mMagnificationActivated); + mDisplayId, mMagnificationActivated); } } @@ -1614,9 +1614,10 @@ public class FullScreenMagnificationController { * Called when the state of the magnification activation is changed. * It is for the logging data of the magnification activation state. * + * @param displayId The logical display id. * @param activated {@code true} if the magnification is activated, otherwise {@code false}. */ - void onFullScreenMagnificationActivationState(boolean activated); + void onFullScreenMagnificationActivationState(int displayId, boolean activated); /** * Called when the IME window visibility changed. diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler.java b/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler.java index c3d8d4c2c96a7..8f4a5cb4dad03 100644 --- a/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler.java +++ b/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler.java @@ -869,8 +869,6 @@ public class FullScreenMagnificationGestureHandler extends MagnificationGestureH mPromptController.showNotificationIfNeeded(); zoomOn(up.getX(), up.getY()); } - - mCallback.onTripleTapped(mDisplayId, getMode()); } private boolean isMagnifying() { diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java index 19601b4eff5a6..5a6836c2d771d 100644 --- a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java +++ b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java @@ -48,11 +48,12 @@ import com.android.server.accessibility.AccessibilityManagerService; * the user touch interaction starts if magnification capabilities is all. *
  • 2. {@link #onTouchInteractionEnd} shows magnification switch UI when * the user touch interaction ends if magnification capabilities is all.
  • - *
  • 3. {@link #onShortcutTriggered} updates magnification switch UI depending on - * magnification capabilities and magnification active state when magnification shortcut - * is triggered.
  • - *
  • 4. {@link #onTripleTapped} updates magnification switch UI depending on magnification - * capabilities and magnification active state when triple-tap gesture is detected.
  • + *
  • 3. {@link #onWindowMagnificationActivationState} updates magnification switch UI + * depending on magnification capabilities and magnification active state when window + * magnification activation state change.
  • + *
  • 4. {@link #onFullScreenMagnificationActivationState} updates magnification switch UI + * depending on magnification capabilities and magnification active state when fullscreen + * magnification activation state change.
  • *
  • 4. {@link #onRequestMagnificationSpec} updates magnification switch UI depending on * magnification capabilities and magnification active state when new magnification spec is * changed by external request from calling public APIs.
  • @@ -142,16 +143,6 @@ public class MagnificationController implements WindowMagnificationManager.Callb } } - @Override - public void onShortcutTriggered(int displayId, int mode) { - updateMagnificationButton(displayId, mode); - } - - @Override - public void onTripleTapped(int displayId, int mode) { - updateMagnificationButton(displayId, mode); - } - private void updateMagnificationButton(int displayId, int mode) { final boolean isActivated = isActivated(displayId, mode); final boolean showButton; @@ -250,6 +241,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb mActivatedMode = ACCESSIBILITY_MAGNIFICATION_MODE_NONE; } } + updateMagnificationButton(displayId, ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); } private void disableFullScreenMagnificationIfNeeded(int displayId) { @@ -264,7 +256,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb } @Override - public void onFullScreenMagnificationActivationState(boolean activated) { + public void onFullScreenMagnificationActivationState(int displayId, boolean activated) { if (activated) { mFullScreenModeEnabledTime = SystemClock.uptimeMillis(); @@ -280,6 +272,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb mActivatedMode = ACCESSIBILITY_MAGNIFICATION_MODE_NONE; } } + updateMagnificationButton(displayId, ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN); } @Override diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationGestureHandler.java b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationGestureHandler.java index 19b339645557d..28946939e6fd7 100644 --- a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationGestureHandler.java +++ b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationGestureHandler.java @@ -80,25 +80,6 @@ public abstract class MagnificationGestureHandler extends BaseEventStreamTransfo * @param mode The magnification mode */ void onTouchInteractionEnd(int displayId, int mode); - - /** - * Called when the magnification shortcut is triggered by a user. The magnification - * shortcut can be accessibility button or volume shortcut. - * - * @param displayId The logical display id - * @param mode The magnification mode - */ - void onShortcutTriggered(int displayId, int mode); - - /** - * Called when the triple-tap gesture is handled. The magnification - * shortcut can be a triple-tap gesture or accessibility button. - * Called when the triple-tap gesture is handled - * - * @param displayId The logical display id - * @param mode The magnification mode - */ - void onTripleTapped(int displayId, int mode); } private final AccessibilityTraceManager mTrace; @@ -192,7 +173,6 @@ public abstract class MagnificationGestureHandler extends BaseEventStreamTransfo } if (mDetectShortcutTrigger) { handleShortcutTriggered(); - mCallback.onShortcutTriggered(mDisplayId, getMode()); } } diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationGestureHandler.java b/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationGestureHandler.java index b26d36493a3e5..bc61284f60843 100644 --- a/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationGestureHandler.java +++ b/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationGestureHandler.java @@ -202,7 +202,6 @@ public class WindowMagnificationGestureHandler extends MagnificationGestureHandl Slog.i(mLogTag, "onTripleTap()"); } toggleMagnification(up.getX(), up.getY()); - mCallback.onTripleTapped(mDisplayId, getMode()); } void resetToDetectState() { diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationControllerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationControllerTest.java index fe4fed9da4689..fb5c557c8d4ba 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationControllerTest.java @@ -1138,7 +1138,7 @@ public class FullScreenMagnificationControllerTest { public void testSetScale_toMagnifying_shouldNotifyActivatedState() { setScaleToMagnifying(); - verify(mRequestObserver).onFullScreenMagnificationActivationState(eq(true)); + verify(mRequestObserver).onFullScreenMagnificationActivationState(eq(DISPLAY_0), eq(true)); } @Test @@ -1146,7 +1146,7 @@ public class FullScreenMagnificationControllerTest { setScaleToMagnifying(); mFullScreenMagnificationController.reset(DISPLAY_0, mAnimationCallback); - verify(mRequestObserver).onFullScreenMagnificationActivationState(eq(false)); + verify(mRequestObserver).onFullScreenMagnificationActivationState(eq(DISPLAY_0), eq(false)); } @Test diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandlerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandlerTest.java index b14c353397e28..6c32f7e8bacb0 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandlerTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandlerTest.java @@ -42,7 +42,6 @@ import android.content.Context; import android.graphics.PointF; import android.os.Handler; import android.os.Message; -import android.provider.Settings; import android.util.DebugUtils; import android.view.InputDevice; import android.view.MotionEvent; @@ -458,14 +457,6 @@ public class FullScreenMagnificationGestureHandlerTest { verify(mWindowMagnificationPromptController).showNotificationIfNeeded(); } - @Test - public void testZoomedWithTripleTap_callsOnTripleTapped() { - goFromStateIdleTo(STATE_ZOOMED_2TAPS); - - verify(mMockCallback).onTripleTapped(DISPLAY_0, - Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN); - } - private void assertActionsInOrder(List actualEvents, List expectedActions) { assertTrue(actualEvents.size() == expectedActions.size()); diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java index e82adc8b403b6..2cb3d27229bc5 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java @@ -380,9 +380,9 @@ public class MagnificationControllerTest { @Test public void onFullScreenMagnificationActivationState_fullScreenActivated_logFullScreenDuration() { - mMagnificationController.onFullScreenMagnificationActivationState(true); + mMagnificationController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true); - mMagnificationController.onFullScreenMagnificationActivationState(false); + mMagnificationController.onFullScreenMagnificationActivationState(TEST_DISPLAY, false); verify(mMagnificationController).logMagnificationUsageState( eq(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN), anyLong()); @@ -460,75 +460,47 @@ public class MagnificationControllerTest { } @Test - public void onShortcutTriggered_windowModeEnabledAndCapabilitiesAll_showMagnificationButton() + public void onWindowActivated_windowModeEnabledAndCapabilitiesAll_showMagnificationButton() throws RemoteException { setMagnificationEnabled(MODE_WINDOW); - mMagnificationController.onShortcutTriggered(TEST_DISPLAY, MODE_WINDOW); + mMagnificationController.onWindowMagnificationActivationState(TEST_DISPLAY, true); verify(mWindowMagnificationManager).showMagnificationButton(eq(TEST_DISPLAY), eq(MODE_WINDOW)); } @Test - public void onShortcutTriggered_fullscreenEnabledAndCapabilitiesAll_showMagnificationButton() + public void onFullScreenActivated_fullscreenEnabledAndCapabilitiesAll_showMagnificationButton() throws RemoteException { setMagnificationEnabled(MODE_FULLSCREEN); - mMagnificationController.onShortcutTriggered(TEST_DISPLAY, MODE_FULLSCREEN); + mMagnificationController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true); verify(mWindowMagnificationManager).showMagnificationButton(eq(TEST_DISPLAY), eq(MODE_FULLSCREEN)); } @Test - public void triggerShortcutToShowMagnificationBound_fullscreenMode_showMagnificationButton() { - setMagnificationModeSettings(MODE_FULLSCREEN); - - when(mScreenMagnificationController.isForceShowMagnifiableBounds(TEST_DISPLAY)).thenReturn( - true); - mMagnificationController.onShortcutTriggered(TEST_DISPLAY, MODE_FULLSCREEN); - - verify(mWindowMagnificationManager).showMagnificationButton(eq(TEST_DISPLAY), - eq(MODE_FULLSCREEN)); - } - - @Test - public void onShortcutTriggered_windowModeDisabled_removeMagnificationButton() + public void onWindowDeactivated_windowModeInactive_removeMagnificationButton() throws RemoteException { + setMagnificationEnabled(MODE_WINDOW); + mWindowMagnificationManager.disableWindowMagnification(TEST_DISPLAY, false); - mMagnificationController.onShortcutTriggered(TEST_DISPLAY, MODE_WINDOW); + mMagnificationController.onWindowMagnificationActivationState(TEST_DISPLAY, false); verify(mWindowMagnificationManager).removeMagnificationButton(eq(TEST_DISPLAY)); } @Test - public void onTripleTap_windowModeEnabledAndCapabilitiesAll_showMagnificationButton() - throws RemoteException { - setMagnificationEnabled(MODE_WINDOW); - - mMagnificationController.onTripleTapped(TEST_DISPLAY, MODE_WINDOW); - - verify(mWindowMagnificationManager).showMagnificationButton(eq(TEST_DISPLAY), - eq(MODE_WINDOW)); - } - - @Test - public void onTripleTap_fullscreenEnabledAndCapabilitiesAll_showMagnificationButton() + public void onFullScreenDeactivated_fullscreenModeInactive_removeMagnificationButton() throws RemoteException { setMagnificationEnabled(MODE_FULLSCREEN); + mScreenMagnificationController.setScaleAndCenter(TEST_DISPLAY, + /* scale= */1, MAGNIFIED_CENTER_X, MAGNIFIED_CENTER_Y, + true, TEST_SERVICE_ID); - mMagnificationController.onTripleTapped(TEST_DISPLAY, MODE_FULLSCREEN); - - verify(mWindowMagnificationManager).showMagnificationButton(eq(TEST_DISPLAY), - eq(MODE_FULLSCREEN)); - } - - @Test - public void onTripleTap_windowModeDisabled_removeMagnificationButton() - throws RemoteException { - - mMagnificationController.onTripleTapped(TEST_DISPLAY, MODE_WINDOW); + mMagnificationController.onFullScreenMagnificationActivationState(TEST_DISPLAY, false); verify(mWindowMagnificationManager).removeMagnificationButton(eq(TEST_DISPLAY)); } @@ -574,7 +546,7 @@ public class MagnificationControllerTest { @Test public void imeWindowStateShown_fullScreenMagnifying_logFullScreenMode() { - mMagnificationController.onFullScreenMagnificationActivationState(true); + mMagnificationController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true); mMagnificationController.onImeWindowVisibilityChanged(true); @@ -591,7 +563,7 @@ public class MagnificationControllerTest { @Test public void imeWindowStateHidden_windowMagnifying_noLogAnyMode() { - mMagnificationController.onFullScreenMagnificationActivationState(true); + mMagnificationController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true); verify(mMagnificationController, never()).logMagnificationModeWithIme(anyInt()); } diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationGestureHandlerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationGestureHandlerTest.java index ef6ed88011efe..d3016216d1a34 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationGestureHandlerTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationGestureHandlerTest.java @@ -121,14 +121,6 @@ public class MagnificationGestureHandlerTest { } } - - @Test - public void notifyShortcutTriggered_callsOnShortcutTriggered() { - mMgh.notifyShortcutTriggered(); - - verify(mCallback).onShortcutTriggered(eq(DISPLAY_0), eq(mMgh.getMode())); - } - private static class TestMagnificationGestureHandler extends MagnificationGestureHandler { boolean mIsInternalMethodCalled = false; diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationGestureHandlerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationGestureHandlerTest.java index 6a5aae672881f..95f43275376e5 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationGestureHandlerTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationGestureHandlerTest.java @@ -19,9 +19,7 @@ package com.android.server.accessibility.magnification; import static com.android.server.testutils.TestUtils.strictMock; import static org.junit.Assert.fail; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; import android.content.Context; import android.graphics.PointF; @@ -150,14 +148,6 @@ public class WindowMagnificationGestureHandlerTest { }); } - @Test - public void onTripleTap_callsOnTripleTapped() { - goFromStateIdleTo(STATE_SHOW_MAGNIFIER_TRIPLE_TAP); - - verify(mMockCallback).onTripleTapped(eq(DISPLAY_0), - eq(mWindowMagnificationGestureHandler.getMode())); - } - private void forEachState(IntConsumer action) { for (int state = FIRST_STATE; state <= LAST_STATE; state++) { action.accept(state);