diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/ScreenDecorations.java | 12 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java | 48 |
2 files changed, 56 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java index 6ce6353147fb..0f896c44ae63 100644 --- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java +++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java @@ -99,7 +99,8 @@ public class ScreenDecorations extends SystemUI implements Tunable { private static final boolean DEBUG_COLOR = DEBUG_SCREENSHOT_ROUNDED_CORNERS; private DisplayManager mDisplayManager; - private boolean mIsRegistered; + @VisibleForTesting + protected boolean mIsRegistered; private final BroadcastDispatcher mBroadcastDispatcher; private final Handler mMainHandler; private final TunerService mTunerService; @@ -168,7 +169,6 @@ public class ScreenDecorations extends SystemUI implements Tunable { mDisplayManager = mContext.getSystemService(DisplayManager.class); updateRoundedCornerRadii(); setupDecorations(); - mDisplayListener = new DisplayManager.DisplayListener() { @Override public void onDisplayAdded(int displayId) { @@ -230,7 +230,10 @@ public class ScreenDecorations extends SystemUI implements Tunable { removeAllOverlays(); } - if (hasOverlays() && !mIsRegistered) { + if (hasOverlays()) { + if (mIsRegistered) { + return; + } DisplayMetrics metrics = new DisplayMetrics(); mDisplayManager.getDisplay(DEFAULT_DISPLAY).getMetrics(metrics); mDensity = metrics.density; @@ -271,7 +274,8 @@ public class ScreenDecorations extends SystemUI implements Tunable { return mContext.getDisplay().getCutout(); } - private boolean hasOverlays() { + @VisibleForTesting + boolean hasOverlays() { if (mOverlays == null) { return false; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java index a974c6d0e5b5..1b34b3d85c09 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java @@ -456,4 +456,52 @@ public class ScreenDecorationsTest extends SysuiTestCase { assertThat(rectsToRegion(Collections.singletonList(rect)).getBounds(), is(rect)); } + @Test + public void testRegistration_From_NoOverlay_To_HasOverlays() { + doReturn(false).when(mScreenDecorations).hasOverlays(); + mScreenDecorations.start(); + verify(mTunerService, times(0)).addTunable(any(), any()); + verify(mTunerService, times(1)).removeTunable(any()); + assertThat(mScreenDecorations.mIsRegistered, is(false)); + reset(mTunerService); + + doReturn(true).when(mScreenDecorations).hasOverlays(); + mScreenDecorations.onConfigurationChanged(new Configuration()); + verify(mTunerService, times(1)).addTunable(any(), any()); + verify(mTunerService, times(0)).removeTunable(any()); + assertThat(mScreenDecorations.mIsRegistered, is(true)); + } + + @Test + public void testRegistration_From_HasOverlays_To_HasOverlays() { + doReturn(true).when(mScreenDecorations).hasOverlays(); + + mScreenDecorations.start(); + verify(mTunerService, times(1)).addTunable(any(), any()); + verify(mTunerService, times(0)).removeTunable(any()); + assertThat(mScreenDecorations.mIsRegistered, is(true)); + reset(mTunerService); + + mScreenDecorations.onConfigurationChanged(new Configuration()); + verify(mTunerService, times(0)).addTunable(any(), any()); + verify(mTunerService, times(0)).removeTunable(any()); + assertThat(mScreenDecorations.mIsRegistered, is(true)); + } + + @Test + public void testRegistration_From_HasOverlays_To_NoOverlay() { + doReturn(true).when(mScreenDecorations).hasOverlays(); + + mScreenDecorations.start(); + verify(mTunerService, times(1)).addTunable(any(), any()); + verify(mTunerService, times(0)).removeTunable(any()); + assertThat(mScreenDecorations.mIsRegistered, is(true)); + reset(mTunerService); + + doReturn(false).when(mScreenDecorations).hasOverlays(); + mScreenDecorations.onConfigurationChanged(new Configuration()); + verify(mTunerService, times(0)).addTunable(any(), any()); + verify(mTunerService, times(1)).removeTunable(any()); + assertThat(mScreenDecorations.mIsRegistered, is(false)); + } } |