From b5f6720f9c97d577205289cf63566abc9c6b79a6 Mon Sep 17 00:00:00 2001 From: mincheli Date: Tue, 13 Oct 2020 15:34:27 +0800 Subject: [PATCH] Reset WindowMagnification when the density is changed To prevent MirrorSurfaceView not cleared, when the denisty is changed, we should call deleteWindowMagnification and enableWindowMagnification to reset WindowMagnification instead of just removing the mirrorview. Bug: 169149030 Test: atest WindowMagnificationControllerTest Change-Id: Ie1da5f3556cf23482c562b479f483783e09ded1f --- .../accessibility/WindowMagnificationController.java | 4 ++-- .../accessibility/WindowMagnificationControllerTest.java | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java index c3474bb7ca579..340ca044a1efc 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java @@ -249,8 +249,8 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold if ((configDiff & ActivityInfo.CONFIG_DENSITY) != 0) { updateDimensions(); if (isWindowVisible()) { - mWm.removeView(mMirrorView); - createMirrorWindow(); + deleteWindowMagnification(); + enableWindowMagnification(Float.NaN, Float.NaN, Float.NaN); } } else if ((configDiff & ActivityInfo.CONFIG_ORIENTATION) != 0) { onRotate(); 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 5f2fd697b86df..f1606c5660ed4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java @@ -224,11 +224,12 @@ public class WindowMagnificationControllerTest extends SysuiTestCase { @Test - public void onDensityChanged_enabled_updateDimensionsAndLayout() { + public void onDensityChanged_enabled_updateDimensionsAndResetWindowMagnification() { mInstrumentation.runOnMainSync(() -> { mWindowMagnificationController.enableWindowMagnification(Float.NaN, Float.NaN, Float.NaN); Mockito.reset(mWindowManager); + Mockito.reset(mMirrorWindowControl); }); mInstrumentation.runOnMainSync(() -> { @@ -237,7 +238,9 @@ public class WindowMagnificationControllerTest extends SysuiTestCase { verify(mResources, atLeastOnce()).getDimensionPixelSize(anyInt()); verify(mWindowManager).removeView(any()); + verify(mMirrorWindowControl).destroyControl(); verify(mWindowManager).addView(any(), any()); + verify(mMirrorWindowControl).showControl(); } @Test