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
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -869,8 +869,6 @@ public class FullScreenMagnificationGestureHandler extends MagnificationGestureH
|
||||
mPromptController.showNotificationIfNeeded();
|
||||
zoomOn(up.getX(), up.getY());
|
||||
}
|
||||
|
||||
mCallback.onTripleTapped(mDisplayId, getMode());
|
||||
}
|
||||
|
||||
private boolean isMagnifying() {
|
||||
|
||||
@@ -48,11 +48,12 @@ import com.android.server.accessibility.AccessibilityManagerService;
|
||||
* the user touch interaction starts if magnification capabilities is all. </li>
|
||||
* <li> 2. {@link #onTouchInteractionEnd} shows magnification switch UI when
|
||||
* the user touch interaction ends if magnification capabilities is all. </li>
|
||||
* <li> 3. {@link #onShortcutTriggered} updates magnification switch UI depending on
|
||||
* magnification capabilities and magnification active state when magnification shortcut
|
||||
* is triggered.</li>
|
||||
* <li> 4. {@link #onTripleTapped} updates magnification switch UI depending on magnification
|
||||
* capabilities and magnification active state when triple-tap gesture is detected. </li>
|
||||
* <li> 3. {@link #onWindowMagnificationActivationState} updates magnification switch UI
|
||||
* depending on magnification capabilities and magnification active state when window
|
||||
* magnification activation state change.</li>
|
||||
* <li> 4. {@link #onFullScreenMagnificationActivationState} updates magnification switch UI
|
||||
* depending on magnification capabilities and magnification active state when fullscreen
|
||||
* magnification activation state change.</li>
|
||||
* <li> 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. </li>
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -202,7 +202,6 @@ public class WindowMagnificationGestureHandler extends MagnificationGestureHandl
|
||||
Slog.i(mLogTag, "onTripleTap()");
|
||||
}
|
||||
toggleMagnification(up.getX(), up.getY());
|
||||
mCallback.onTripleTapped(mDisplayId, getMode());
|
||||
}
|
||||
|
||||
void resetToDetectState() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<MotionEvent> actualEvents,
|
||||
List<Integer> expectedActions) {
|
||||
assertTrue(actualEvents.size() == expectedActions.size());
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user