diff options
| author | 2020-10-13 15:34:27 +0800 | |
|---|---|---|
| committer | 2020-10-13 15:34:27 +0800 | |
| commit | b5f6720f9c97d577205289cf63566abc9c6b79a6 (patch) | |
| tree | 8d8945fa68a9c0374cf2f249f6fb6a7bcea42597 | |
| parent | 168d7918b807477084a84cb365d0d72d45cfdd9a (diff) | |
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
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 c3474bb7ca57..340ca044a1ef 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 5f2fd697b86d..f1606c5660ed 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 |