summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author ryanlwlin <ryanlwlin@google.com> 2021-11-01 23:40:38 +0800
committer ryanlwlin <ryanlwlin@google.com> 2021-11-11 13:44:01 +0800
commit855260af7d145f51147c9ac59bd8db92c9f696cc (patch)
tree3034c1ebd881f7b6f68916c79aa1440f94298ce2
parent4d021782fe8738089437915519f338e01723008d (diff)
Support enable window magnification without animation
To extend the magnification API to window magnification mode, we support enabling the window magnification without animation. Besides, we also disable the window magnification if the given scale is less than or equal to 1.0f. For the screen off scenario, we change to disable the window magnification without animation. Bug: 204844820 Test: atest com.android.systemui.accessibility atest com.android.server.accessibility.magnification Change-Id: I8a35492776f08ecee353f035a94a16fec8e61218
-rw-r--r--core/java/android/view/accessibility/MagnificationAnimationCallback.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java13
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java166
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java15
-rw-r--r--services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java4
-rw-r--r--services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java11
8 files changed, 214 insertions, 27 deletions
diff --git a/core/java/android/view/accessibility/MagnificationAnimationCallback.java b/core/java/android/view/accessibility/MagnificationAnimationCallback.java
index bc9fb0a3e5e0..72518db3c60e 100644
--- a/core/java/android/view/accessibility/MagnificationAnimationCallback.java
+++ b/core/java/android/view/accessibility/MagnificationAnimationCallback.java
@@ -21,6 +21,9 @@ package android.view.accessibility;
* @hide
*/
public interface MagnificationAnimationCallback {
+ MagnificationAnimationCallback STUB_ANIMATION_CALLBACK = success -> {
+ };
+
/**
* Called when the animation is finished or interrupted during animating.
*
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java
index 36fef3ed6b51..8cb608f768eb 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java
@@ -106,6 +106,15 @@ class WindowMagnificationAnimationController implements ValueAnimator.AnimatorUp
void enableWindowMagnification(float scale, float centerX, float centerY,
@Nullable IRemoteMagnificationAnimationCallback animationCallback) {
sendAnimationCallback(false);
+ // Enable window magnification without animation immediately.
+ if (animationCallback == null) {
+ if (mState == STATE_ENABLING || mState == STATE_DISABLING) {
+ mValueAnimator.cancel();
+ }
+ mController.enableWindowMagnification(scale, centerX, centerY);
+ setState(STATE_ENABLED);
+ return;
+ }
mAnimationCallback = animationCallback;
setupEnableAnimationSpecs(scale, centerX, centerY);
if (mEndSpec.equals(mStartSpec)) {
@@ -173,6 +182,16 @@ class WindowMagnificationAnimationController implements ValueAnimator.AnimatorUp
void deleteWindowMagnification(
@Nullable IRemoteMagnificationAnimationCallback animationCallback) {
sendAnimationCallback(false);
+ // Delete window magnification without animation.
+ if (animationCallback == null) {
+ if (mState == STATE_ENABLING || mState == STATE_DISABLING) {
+ mValueAnimator.cancel();
+ }
+ mController.deleteWindowMagnification();
+ setState(STATE_DISABLED);
+ return;
+ }
+
mAnimationCallback = animationCallback;
if (mState == STATE_DISABLED || mState == STATE_DISABLING) {
if (mState == STATE_DISABLED) {
@@ -223,8 +242,7 @@ class WindowMagnificationAnimationController implements ValueAnimator.AnimatorUp
if (mEndAnimationCanceled) {
return;
}
- if (isReverse) {
- mController.deleteWindowMagnification();
+ if (Float.isNaN(mController.getScale())) {
setState(STATE_DISABLED);
} else {
setState(STATE_ENABLED);
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
index 0893e895b102..b48def2b948c 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
@@ -262,6 +262,9 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
* Deletes the magnification window.
*/
void deleteWindowMagnification() {
+ if (!isWindowVisible()) {
+ return;
+ }
if (mMirrorSurface != null) {
mTransaction.remove(mMirrorSurface).apply();
mMirrorSurface = null;
@@ -690,7 +693,10 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
}
/**
- * Enables window magnification with specified parameters.
+ * Enables window magnification with specified parameters. If the given scale is <strong>less
+ * than or equal to 1.0f<strong>, then
+ * {@link WindowMagnificationController#deleteWindowMagnification()} will be called instead to
+ * be consistent with the behavior of display magnification.
*
* @param scale the target scale, or {@link Float#NaN} to leave unchanged
* @param centerX the screen-relative X coordinate around which to center,
@@ -699,6 +705,11 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
* or {@link Float#NaN} to leave unchanged.
*/
void enableWindowMagnification(float scale, float centerX, float centerY) {
+ if (Float.compare(scale, 1.0f) <= 0) {
+ deleteWindowMagnification();
+ return;
+ }
+
final float offsetX = Float.isNaN(centerX) ? 0
: centerX - mMagnificationFrame.exactCenterX();
final float offsetY = Float.isNaN(centerY) ? 0
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java
index 045fb57f11f9..148c6ef0be53 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java
@@ -48,6 +48,7 @@ import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.Mockito;
@@ -61,11 +62,11 @@ import java.util.concurrent.atomic.AtomicReference;
@RunWith(AndroidTestingRunner.class)
public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
- private static final float DEFAULT_SCALE = 3.0f;
+ private static final float DEFAULT_SCALE = 4.0f;
private static final float DEFAULT_CENTER_X = 400.0f;
private static final float DEFAULT_CENTER_Y = 500.0f;
// The duration couldn't too short, otherwise the ValueAnimator won't work in expectation.
- private static final long ANIMATION_DURATION_MS = 200;
+ private static final long ANIMATION_DURATION_MS = 300;
private AtomicReference<Float> mCurrentScale = new AtomicReference<>((float) 0);
private AtomicReference<Float> mCurrentCenterX = new AtomicReference<>((float) 0);
@@ -84,7 +85,7 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
IRemoteMagnificationAnimationCallback mAnimationCallback;
@Mock
IRemoteMagnificationAnimationCallback mAnimationCallback2;
- @Mock
+ @Mock(answer = Answers.RETURNS_SELF)
SysUiState mSysUiState;
private SpyWindowMagnificationController mController;
private WindowMagnificationController mSpyController;
@@ -127,6 +128,28 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
verify(mAnimationCallback).onResult(true);
}
+ @Test
+ public void enableWindowMagnificationWithoutCallback_disabled_expectedValues() {
+ enableWindowMagnificationWithoutAnimation();
+
+ verifyFinalSpec(DEFAULT_SCALE, DEFAULT_CENTER_X, DEFAULT_CENTER_Y);
+ }
+
+ @Test
+ public void enableWindowMagnificationWithoutCallback_enabled_expectedValues() {
+ enableWindowMagnificationAndWaitAnimating(mWaitingAnimationPeriod, mAnimationCallback);
+ final float targetScale = DEFAULT_SCALE + 1.0f;
+ final float targetCenterX = DEFAULT_CENTER_X + 100;
+ final float targetCenterY = DEFAULT_CENTER_Y + 100;
+
+ mInstrumentation.runOnMainSync(
+ () -> {
+ mWindowMagnificationAnimationController.enableWindowMagnification(targetScale,
+ targetCenterX, targetCenterY, null);
+ });
+
+ verifyFinalSpec(targetScale, targetCenterX, targetCenterY);
+ }
@Test
public void enableWindowMagnificationWithScaleOne_disabled_NoAnimationAndInvokeCallback()
@@ -174,6 +197,52 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
}
@Test
+ public void enableWindowMagnificationWithScaleOne_enabled_AnimationAndInvokeCallback()
+ throws RemoteException {
+ enableWindowMagnificationWithoutAnimation();
+
+ mInstrumentation.runOnMainSync(() -> {
+ Mockito.reset(mSpyController);
+ mWindowMagnificationAnimationController.enableWindowMagnification(1.0f,
+ DEFAULT_CENTER_X + 100, DEFAULT_CENTER_Y + 100, mAnimationCallback);
+ mCurrentScale.set(mController.getScale());
+ mCurrentCenterX.set(mController.getCenterX());
+ mCurrentCenterY.set(mController.getCenterY());
+ });
+
+ SystemClock.sleep(mWaitingAnimationPeriod);
+
+ verify(mSpyController, atLeast(2)).enableWindowMagnification(mScaleCaptor.capture(),
+ mCenterXCaptor.capture(), mCenterYCaptor.capture());
+ verifyStartValue(mScaleCaptor, mCurrentScale.get());
+ verifyStartValue(mCenterXCaptor, mCurrentCenterX.get());
+ verifyStartValue(mCenterYCaptor, mCurrentCenterY.get());
+ // It presents the window magnification is disabled.
+ verifyFinalSpec(Float.NaN, Float.NaN, Float.NaN);
+
+ verify(mAnimationCallback).onResult(true);
+ }
+
+ @Test
+ public void
+ enableMagnificationWithoutCallback_enabling_expectedValuesAndInvokeFormerCallback()
+ throws RemoteException {
+ enableWindowMagnificationAndWaitAnimating(mWaitIntermediateAnimationPeriod,
+ mAnimationCallback);
+ final float targetScale = DEFAULT_SCALE - 1.0f;
+ final float targetCenterX = DEFAULT_CENTER_X + 100;
+ final float targetCenterY = DEFAULT_CENTER_Y + 100;
+
+ mInstrumentation.runOnMainSync(() -> {
+ Mockito.reset(mSpyController);
+ mWindowMagnificationAnimationController.enableWindowMagnification(targetScale,
+ targetCenterX, targetCenterY, null);
+ });
+ verifyFinalSpec(targetScale, targetCenterX, targetCenterY);
+ verify(mAnimationCallback).onResult(false);
+ }
+
+ @Test
public void enableWindowMagnificationWithSameSpec_enabling_NoAnimationAndInvokeCallback()
throws RemoteException {
enableWindowMagnificationAndWaitAnimating(mWaitIntermediateAnimationPeriod,
@@ -231,6 +300,28 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
}
@Test
+ public void
+ enableMagnificationWithoutCallback_disabling_expectedValuesAndInvokeFormerCallback()
+ throws RemoteException {
+ enableWindowMagnificationWithoutAnimation();
+ deleteWindowMagnificationAndWaitAnimating(mWaitIntermediateAnimationPeriod,
+ mAnimationCallback);
+ final float targetScale = DEFAULT_SCALE + 1.0f;
+ final float targetCenterX = DEFAULT_CENTER_X + 100;
+ final float targetCenterY = DEFAULT_CENTER_Y + 100;
+
+ mInstrumentation.runOnMainSync(
+ () -> {
+ Mockito.reset(mSpyController);
+ mWindowMagnificationAnimationController.enableWindowMagnification(targetScale,
+ targetCenterX, targetCenterY, null);
+ });
+
+ verify(mAnimationCallback).onResult(false);
+ verifyFinalSpec(targetScale, targetCenterX, targetCenterY);
+ }
+
+ @Test
public void enableWindowMagnificationWithSameSpec_disabling_NoAnimationAndInvokeCallback()
throws RemoteException {
enableWindowMagnificationAndWaitAnimating(mWaitingAnimationPeriod, null);
@@ -254,8 +345,7 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
@Test
public void enableWindowMagnification_enabled_expectedValuesAndInvokeCallback()
throws RemoteException {
- enableWindowMagnificationAndWaitAnimating(mWaitIntermediateAnimationPeriod,
- mAnimationCallback);
+ enableWindowMagnificationWithoutAnimation();
final float targetScale = DEFAULT_SCALE + 1.0f;
final float targetCenterX = DEFAULT_CENTER_X + 100;
final float targetCenterY = DEFAULT_CENTER_Y + 100;
@@ -277,7 +367,6 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
verifyStartValue(mCenterXCaptor, mCurrentCenterX.get());
verifyStartValue(mCenterYCaptor, mCurrentCenterY.get());
verifyFinalSpec(targetScale, targetCenterX, targetCenterY);
- verify(mAnimationCallback).onResult(false);
verify(mAnimationCallback2).onResult(true);
}
@@ -295,7 +384,7 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
@Test
public void setScale_enabled_expectedScale() {
- enableWindowMagnificationAndWaitAnimating(mWaitingAnimationPeriod, null);
+ enableWindowMagnificationWithoutAnimation();
mInstrumentation.runOnMainSync(
() -> mWindowMagnificationAnimationController.setScale(DEFAULT_SCALE + 1));
@@ -307,13 +396,12 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
@Test
public void deleteWindowMagnification_enabled_expectedValuesAndInvokeCallback()
throws RemoteException {
- enableWindowMagnificationAndWaitAnimating(mWaitingAnimationPeriod, null);
+ enableWindowMagnificationWithoutAnimation();
deleteWindowMagnificationAndWaitAnimating(mWaitingAnimationPeriod, mAnimationCallback);
verify(mSpyController, atLeast(2)).enableWindowMagnification(mScaleCaptor.capture(),
mCenterXCaptor.capture(), mCenterYCaptor.capture());
- verify(mSpyController).deleteWindowMagnification();
verifyStartValue(mScaleCaptor, DEFAULT_SCALE);
verifyStartValue(mCenterXCaptor, Float.NaN);
verifyStartValue(mCenterYCaptor, Float.NaN);
@@ -322,6 +410,15 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
}
@Test
+ public void deleteWindowMagnificationWithoutCallback_enabled_expectedValues() {
+ enableWindowMagnificationWithoutAnimation();
+
+ deleteWindowMagnificationAndWaitAnimating(0, null);
+
+ verifyFinalSpec(Float.NaN, Float.NaN, Float.NaN);
+ }
+
+ @Test
public void deleteWindowMagnification_disabled_doNothingAndInvokeCallback()
throws RemoteException {
deleteWindowMagnificationAndWaitAnimating(mWaitingAnimationPeriod, mAnimationCallback);
@@ -346,10 +443,8 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
mCurrentCenterY.set(mController.getCenterY());
});
SystemClock.sleep(mWaitingAnimationPeriod);
-
verify(mSpyController, atLeast(2)).enableWindowMagnification(mScaleCaptor.capture(),
mCenterXCaptor.capture(), mCenterYCaptor.capture());
- verify(mSpyController).deleteWindowMagnification();
//The animation is in verse, so we only check the start values should no be greater than
// the current one.
@@ -363,6 +458,22 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
}
@Test
+ public void deleteWindowMagnificationWithoutCallback_enabling_expectedValuesAndInvokeCallback()
+ throws RemoteException {
+ enableWindowMagnificationAndWaitAnimating(mWaitIntermediateAnimationPeriod,
+ mAnimationCallback);
+
+ mInstrumentation.runOnMainSync(
+ () -> {
+ Mockito.reset(mSpyController);
+ mWindowMagnificationAnimationController.deleteWindowMagnification(null);
+ });
+
+ verifyFinalSpec(Float.NaN, Float.NaN, Float.NaN);
+ verify(mAnimationCallback).onResult(false);
+ }
+
+ @Test
public void deleteWindowMagnification_disabling_checkStartAndValues() throws RemoteException {
enableWindowMagnificationAndWaitAnimating(mWaitingAnimationPeriod, null);
deleteWindowMagnificationAndWaitAnimating(mWaitIntermediateAnimationPeriod,
@@ -372,7 +483,6 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
verify(mSpyController, atLeast(2)).enableWindowMagnification(mScaleCaptor.capture(),
mCenterXCaptor.capture(), mCenterYCaptor.capture());
- verify(mSpyController).deleteWindowMagnification();
assertEquals(1.0f, mScaleCaptor.getValue(), 0f);
verifyFinalSpec(Float.NaN, Float.NaN, Float.NaN);
verify(mAnimationCallback).onResult(false);
@@ -380,8 +490,22 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
}
@Test
- public void moveWindowMagnifier_enabled() {
+ public void deleteWindowMagnificationWithoutCallback_disabling_checkStartAndValues()
+ throws RemoteException {
enableWindowMagnificationAndWaitAnimating(mWaitingAnimationPeriod, null);
+ deleteWindowMagnificationAndWaitAnimating(mWaitIntermediateAnimationPeriod,
+ mAnimationCallback);
+
+ deleteWindowMagnificationAndWaitAnimating(0, null);
+
+ verify(mSpyController).deleteWindowMagnification();
+ verifyFinalSpec(Float.NaN, Float.NaN, Float.NaN);
+ verify(mAnimationCallback).onResult(false);
+ }
+
+ @Test
+ public void moveWindowMagnifier_enabled() {
+ enableWindowMagnificationWithoutAnimation();
mInstrumentation.runOnMainSync(
() -> mWindowMagnificationAnimationController.moveWindowMagnifier(100f, 200f));
@@ -411,6 +535,15 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
assertEquals(expectedCenterY, mController.getCenterY(), 0f);
}
+ private void enableWindowMagnificationWithoutAnimation() {
+ mInstrumentation.runOnMainSync(
+ () -> {
+ Mockito.reset(mSpyController);
+ mWindowMagnificationAnimationController.enableWindowMagnification(DEFAULT_SCALE,
+ DEFAULT_CENTER_X, DEFAULT_CENTER_Y, null);
+ });
+ }
+
private void enableWindowMagnificationAndWaitAnimating(long duration,
@Nullable IRemoteMagnificationAnimationCallback callback) {
mInstrumentation.runOnMainSync(
@@ -485,11 +618,16 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
}
@Override
+ public void updateSysUIStateFlag() {
+ super.updateSysUIStateFlag();
+ mSpyController.updateSysUIStateFlag();
+ }
+
+ @Override
void onConfigurationChanged(int configDiff) {
super.onConfigurationChanged(configDiff);
mSpyController.onConfigurationChanged(configDiff);
}
-
}
private static ValueAnimator newValueAnimator() {
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 14a60be36472..70457cf46e0d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
@@ -469,6 +469,21 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
}
@Test
+ public void enableWindowMagnificationWithScaleLessThanOne_enabled_disabled() {
+ mInstrumentation.runOnMainSync(() -> {
+ mWindowMagnificationController.enableWindowMagnification(Float.NaN, Float.NaN,
+ Float.NaN);
+ });
+
+ mInstrumentation.runOnMainSync(() -> {
+ mWindowMagnificationController.enableWindowMagnification(0.9f, Float.NaN,
+ Float.NaN);
+ });
+
+ assertEquals(Float.NaN, mWindowMagnificationController.getScale(), 0);
+ }
+
+ @Test
public void onLocaleChanged_enabled_updateA11yWindowTitle() {
final String newA11yWindowTitle = "new a11y window title";
mInstrumentation.runOnMainSync(() -> {
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 c62473db948c..51e34178e80c 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java
@@ -17,6 +17,7 @@
package com.android.server.accessibility.magnification;
import static android.accessibilityservice.AccessibilityTrace.FLAGS_WINDOW_MANAGER_INTERNAL;
+import static android.view.accessibility.MagnificationAnimationCallback.STUB_ANIMATION_CALLBACK;
import android.animation.Animator;
import android.animation.ValueAnimator;
@@ -66,9 +67,6 @@ public class FullScreenMagnificationController {
private static final boolean DEBUG = false;
private static final String LOG_TAG = "FullScreenMagnificationController";
- private static final MagnificationAnimationCallback STUB_ANIMATION_CALLBACK = success -> {
- };
-
private static final boolean DEBUG_SET_MAGNIFICATION_SPEC = false;
private final Object mLock;
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 ce7ba7568b6e..25205b2f9cf3 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java
@@ -18,6 +18,7 @@ package com.android.server.accessibility.magnification;
import static android.accessibilityservice.AccessibilityTrace.FLAGS_WINDOW_MAGNIFICATION_CONNECTION;
import static android.accessibilityservice.AccessibilityTrace.FLAGS_WINDOW_MAGNIFICATION_CONNECTION_CALLBACK;
+import static android.view.accessibility.MagnificationAnimationCallback.STUB_ANIMATION_CALLBACK;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -74,7 +75,7 @@ public class WindowMagnificationManager implements
public void onReceive(Context context, Intent intent) {
final int displayId = context.getDisplayId();
removeMagnificationButton(displayId);
- disableWindowMagnification(displayId, false);
+ disableWindowMagnification(displayId, false, null);
}
};
@@ -263,7 +264,7 @@ public class WindowMagnificationManager implements
* or {@link Float#NaN} to leave unchanged.
*/
void enableWindowMagnification(int displayId, float scale, float centerX, float centerY) {
- enableWindowMagnification(displayId, scale, centerX, centerY, null);
+ enableWindowMagnification(displayId, scale, centerX, centerY, STUB_ANIMATION_CALLBACK);
}
/**
@@ -305,7 +306,7 @@ public class WindowMagnificationManager implements
* @param clear {@true} Clears the state of window magnification.
*/
void disableWindowMagnification(int displayId, boolean clear) {
- disableWindowMagnification(displayId, clear, null);
+ disableWindowMagnification(displayId, clear, STUB_ANIMATION_CALLBACK);
}
/**
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 da881c4e6494..15ba358f146e 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
@@ -19,6 +19,7 @@ package com.android.server.accessibility.magnification;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.notNull;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
@@ -169,13 +170,14 @@ public class WindowMagnificationManagerTest {
}
@Test
- public void enable_hasConnection_enableWindowMagnification() throws RemoteException {
+ public void enableWithAnimation_hasConnection_enableWindowMagnification()
+ throws RemoteException {
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 2f, 200f, 300f);
- verify(mMockConnection.getConnection()).enableWindowMagnification(TEST_DISPLAY, 2f,
- 200f, 300f, null);
+ verify(mMockConnection.getConnection()).enableWindowMagnification(eq(TEST_DISPLAY), eq(2f),
+ eq(200f), eq(300f), notNull());
}
@Test
@@ -199,7 +201,8 @@ public class WindowMagnificationManagerTest {
mWindowMagnificationManager.disableWindowMagnification(TEST_DISPLAY, false);
- verify(mMockConnection.getConnection()).disableWindowMagnification(TEST_DISPLAY, null);
+ verify(mMockConnection.getConnection()).disableWindowMagnification(eq(TEST_DISPLAY),
+ notNull());
}
@Test