Loading packages/SystemUI/src/com/android/systemui/ScreenDecorations.java +32 −2 Original line number Diff line number Diff line Loading @@ -455,6 +455,7 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab } } boolean needToUpdateProviderViews = false; final String newUniqueId = mDisplayInfo.uniqueId; if (!Objects.equals(newUniqueId, mDisplayUniqueId)) { mDisplayUniqueId = newUniqueId; Loading @@ -472,6 +473,37 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab setupDecorations(); return; } if (mScreenDecorHwcLayer != null) { updateHwLayerRoundedCornerDrawable(); updateHwLayerRoundedCornerExistAndSize(); } needToUpdateProviderViews = true; } final float newRatio = getPhysicalPixelDisplaySizeRatio(); if (mRoundedCornerResDelegate.getPhysicalPixelDisplaySizeRatio() != newRatio) { mRoundedCornerResDelegate.setPhysicalPixelDisplaySizeRatio(newRatio); if (mScreenDecorHwcLayer != null) { updateHwLayerRoundedCornerExistAndSize(); } needToUpdateProviderViews = true; } if (needToUpdateProviderViews) { updateOverlayProviderViews(null); } else { updateOverlayProviderViews(new Integer[] { mFaceScanningViewId, R.id.display_cutout, R.id.display_cutout_left, R.id.display_cutout_right, R.id.display_cutout_bottom, }); } if (mScreenDecorHwcLayer != null) { mScreenDecorHwcLayer.onDisplayChanged(newUniqueId); } } }; Loading Loading @@ -1037,8 +1069,6 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab && (newRotation != mRotation || displayModeChanged(mDisplayMode, newMod))) { mRotation = newRotation; mDisplayMode = newMod; mRoundedCornerResDelegate.setPhysicalPixelDisplaySizeRatio( getPhysicalPixelDisplaySizeRatio()); if (mScreenDecorHwcLayer != null) { mScreenDecorHwcLayer.pendingConfigChange = false; mScreenDecorHwcLayer.updateRotation(mRotation); Loading packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt +11 −6 Original line number Diff line number Diff line Loading @@ -78,18 +78,23 @@ class RoundedCornerResDelegate( reloadMeasures() } private fun reloadAll(newReloadToken: Int) { if (reloadToken == newReloadToken) { return } reloadToken = newReloadToken reloadRes() reloadMeasures() } fun updateDisplayUniqueId(newDisplayUniqueId: String?, newReloadToken: Int?) { if (displayUniqueId != newDisplayUniqueId) { displayUniqueId = newDisplayUniqueId newReloadToken ?.let { reloadToken = it } reloadRes() reloadMeasures() } else if (newReloadToken != null) { if (reloadToken == newReloadToken) { return } reloadToken = newReloadToken reloadMeasures() } else { newReloadToken?.let { reloadAll(it) } } } Loading packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java +53 −3 Original line number Diff line number Diff line Loading @@ -1005,13 +1005,18 @@ public class ScreenDecorationsTest extends SysuiTestCase { assertEquals(new Size(3, 3), resDelegate.getTopRoundedSize()); assertEquals(new Size(4, 4), resDelegate.getBottomRoundedSize()); doReturn(2f).when(mScreenDecorations).getPhysicalPixelDisplaySizeRatio(); setupResources(20 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */, getTestsDrawable(com.android.systemui.tests.R.drawable.rounded4px) /* roundedTopDrawable */, getTestsDrawable(com.android.systemui.tests.R.drawable.rounded5px) /* roundedBottomDrawable */, 0 /* roundedPadding */, true /* privacyDot */, false /* faceScanning*/); mDisplayInfo.rotation = Surface.ROTATION_270; mScreenDecorations.onConfigurationChanged(null); assertEquals(new Size(6, 6), resDelegate.getTopRoundedSize()); assertEquals(new Size(8, 8), resDelegate.getBottomRoundedSize()); assertEquals(new Size(4, 4), resDelegate.getTopRoundedSize()); assertEquals(new Size(5, 5), resDelegate.getBottomRoundedSize()); } @Test Loading Loading @@ -1287,6 +1292,51 @@ public class ScreenDecorationsTest extends SysuiTestCase { verifyFaceScanningViewExists(true); } @Test public void testOnDisplayChanged_hwcLayer() { setupResources(0 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */, null /* roundedTopDrawable */, null /* roundedBottomDrawable */, 0 /* roundedPadding */, false /* privacyDot */, false /* faceScanning */); final DisplayDecorationSupport decorationSupport = new DisplayDecorationSupport(); decorationSupport.format = PixelFormat.R_8; doReturn(decorationSupport).when(mDisplay).getDisplayDecorationSupport(); // top cutout mMockCutoutList.add(new CutoutDecorProviderImpl(BOUNDS_POSITION_TOP)); mScreenDecorations.start(); final ScreenDecorHwcLayer hwcLayer = mScreenDecorations.mScreenDecorHwcLayer; spyOn(hwcLayer); doReturn(mDisplay).when(hwcLayer).getDisplay(); mScreenDecorations.mDisplayListener.onDisplayChanged(1); verify(hwcLayer, times(1)).onDisplayChanged(any()); } @Test public void testOnDisplayChanged_nonHwcLayer() { setupResources(0 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */, null /* roundedTopDrawable */, null /* roundedBottomDrawable */, 0 /* roundedPadding */, false /* privacyDot */, false /* faceScanning */); // top cutout mMockCutoutList.add(new CutoutDecorProviderImpl(BOUNDS_POSITION_TOP)); mScreenDecorations.start(); final ScreenDecorations.DisplayCutoutView cutoutView = (ScreenDecorations.DisplayCutoutView) mScreenDecorations.getOverlayView(R.id.display_cutout); assertNotNull(cutoutView); spyOn(cutoutView); doReturn(mDisplay).when(cutoutView).getDisplay(); mScreenDecorations.mDisplayListener.onDisplayChanged(1); verify(cutoutView, times(1)).onDisplayChanged(any()); } @Test public void testHasSameProvidersWithNullOverlays() { setupResources(0 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */, Loading packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerResDelegateTest.kt +8 −4 Original line number Diff line number Diff line Loading @@ -24,11 +24,12 @@ import androidx.annotation.DrawableRes import androidx.test.filters.SmallTest import com.android.internal.R as InternalR import com.android.systemui.R as SystemUIR import com.android.systemui.SysuiTestCase import com.android.systemui.tests.R import com.android.systemui.SysuiTestCase import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.MockitoAnnotations Loading Loading @@ -101,11 +102,14 @@ class RoundedCornerResDelegateTest : SysuiTestCase() { assertEquals(Size(3, 3), roundedCornerResDelegate.topRoundedSize) assertEquals(Size(4, 4), roundedCornerResDelegate.bottomRoundedSize) roundedCornerResDelegate.physicalPixelDisplaySizeRatio = 2f setupResources(radius = 100, roundedTopDrawable = getTestsDrawable(R.drawable.rounded4px), roundedBottomDrawable = getTestsDrawable(R.drawable.rounded5px)) roundedCornerResDelegate.updateDisplayUniqueId(null, 1) assertEquals(Size(6, 6), roundedCornerResDelegate.topRoundedSize) assertEquals(Size(8, 8), roundedCornerResDelegate.bottomRoundedSize) assertEquals(Size(4, 4), roundedCornerResDelegate.topRoundedSize) assertEquals(Size(5, 5), roundedCornerResDelegate.bottomRoundedSize) } @Test Loading Loading
packages/SystemUI/src/com/android/systemui/ScreenDecorations.java +32 −2 Original line number Diff line number Diff line Loading @@ -455,6 +455,7 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab } } boolean needToUpdateProviderViews = false; final String newUniqueId = mDisplayInfo.uniqueId; if (!Objects.equals(newUniqueId, mDisplayUniqueId)) { mDisplayUniqueId = newUniqueId; Loading @@ -472,6 +473,37 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab setupDecorations(); return; } if (mScreenDecorHwcLayer != null) { updateHwLayerRoundedCornerDrawable(); updateHwLayerRoundedCornerExistAndSize(); } needToUpdateProviderViews = true; } final float newRatio = getPhysicalPixelDisplaySizeRatio(); if (mRoundedCornerResDelegate.getPhysicalPixelDisplaySizeRatio() != newRatio) { mRoundedCornerResDelegate.setPhysicalPixelDisplaySizeRatio(newRatio); if (mScreenDecorHwcLayer != null) { updateHwLayerRoundedCornerExistAndSize(); } needToUpdateProviderViews = true; } if (needToUpdateProviderViews) { updateOverlayProviderViews(null); } else { updateOverlayProviderViews(new Integer[] { mFaceScanningViewId, R.id.display_cutout, R.id.display_cutout_left, R.id.display_cutout_right, R.id.display_cutout_bottom, }); } if (mScreenDecorHwcLayer != null) { mScreenDecorHwcLayer.onDisplayChanged(newUniqueId); } } }; Loading Loading @@ -1037,8 +1069,6 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab && (newRotation != mRotation || displayModeChanged(mDisplayMode, newMod))) { mRotation = newRotation; mDisplayMode = newMod; mRoundedCornerResDelegate.setPhysicalPixelDisplaySizeRatio( getPhysicalPixelDisplaySizeRatio()); if (mScreenDecorHwcLayer != null) { mScreenDecorHwcLayer.pendingConfigChange = false; mScreenDecorHwcLayer.updateRotation(mRotation); Loading
packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt +11 −6 Original line number Diff line number Diff line Loading @@ -78,18 +78,23 @@ class RoundedCornerResDelegate( reloadMeasures() } private fun reloadAll(newReloadToken: Int) { if (reloadToken == newReloadToken) { return } reloadToken = newReloadToken reloadRes() reloadMeasures() } fun updateDisplayUniqueId(newDisplayUniqueId: String?, newReloadToken: Int?) { if (displayUniqueId != newDisplayUniqueId) { displayUniqueId = newDisplayUniqueId newReloadToken ?.let { reloadToken = it } reloadRes() reloadMeasures() } else if (newReloadToken != null) { if (reloadToken == newReloadToken) { return } reloadToken = newReloadToken reloadMeasures() } else { newReloadToken?.let { reloadAll(it) } } } Loading
packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java +53 −3 Original line number Diff line number Diff line Loading @@ -1005,13 +1005,18 @@ public class ScreenDecorationsTest extends SysuiTestCase { assertEquals(new Size(3, 3), resDelegate.getTopRoundedSize()); assertEquals(new Size(4, 4), resDelegate.getBottomRoundedSize()); doReturn(2f).when(mScreenDecorations).getPhysicalPixelDisplaySizeRatio(); setupResources(20 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */, getTestsDrawable(com.android.systemui.tests.R.drawable.rounded4px) /* roundedTopDrawable */, getTestsDrawable(com.android.systemui.tests.R.drawable.rounded5px) /* roundedBottomDrawable */, 0 /* roundedPadding */, true /* privacyDot */, false /* faceScanning*/); mDisplayInfo.rotation = Surface.ROTATION_270; mScreenDecorations.onConfigurationChanged(null); assertEquals(new Size(6, 6), resDelegate.getTopRoundedSize()); assertEquals(new Size(8, 8), resDelegate.getBottomRoundedSize()); assertEquals(new Size(4, 4), resDelegate.getTopRoundedSize()); assertEquals(new Size(5, 5), resDelegate.getBottomRoundedSize()); } @Test Loading Loading @@ -1287,6 +1292,51 @@ public class ScreenDecorationsTest extends SysuiTestCase { verifyFaceScanningViewExists(true); } @Test public void testOnDisplayChanged_hwcLayer() { setupResources(0 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */, null /* roundedTopDrawable */, null /* roundedBottomDrawable */, 0 /* roundedPadding */, false /* privacyDot */, false /* faceScanning */); final DisplayDecorationSupport decorationSupport = new DisplayDecorationSupport(); decorationSupport.format = PixelFormat.R_8; doReturn(decorationSupport).when(mDisplay).getDisplayDecorationSupport(); // top cutout mMockCutoutList.add(new CutoutDecorProviderImpl(BOUNDS_POSITION_TOP)); mScreenDecorations.start(); final ScreenDecorHwcLayer hwcLayer = mScreenDecorations.mScreenDecorHwcLayer; spyOn(hwcLayer); doReturn(mDisplay).when(hwcLayer).getDisplay(); mScreenDecorations.mDisplayListener.onDisplayChanged(1); verify(hwcLayer, times(1)).onDisplayChanged(any()); } @Test public void testOnDisplayChanged_nonHwcLayer() { setupResources(0 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */, null /* roundedTopDrawable */, null /* roundedBottomDrawable */, 0 /* roundedPadding */, false /* privacyDot */, false /* faceScanning */); // top cutout mMockCutoutList.add(new CutoutDecorProviderImpl(BOUNDS_POSITION_TOP)); mScreenDecorations.start(); final ScreenDecorations.DisplayCutoutView cutoutView = (ScreenDecorations.DisplayCutoutView) mScreenDecorations.getOverlayView(R.id.display_cutout); assertNotNull(cutoutView); spyOn(cutoutView); doReturn(mDisplay).when(cutoutView).getDisplay(); mScreenDecorations.mDisplayListener.onDisplayChanged(1); verify(cutoutView, times(1)).onDisplayChanged(any()); } @Test public void testHasSameProvidersWithNullOverlays() { setupResources(0 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */, Loading
packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerResDelegateTest.kt +8 −4 Original line number Diff line number Diff line Loading @@ -24,11 +24,12 @@ import androidx.annotation.DrawableRes import androidx.test.filters.SmallTest import com.android.internal.R as InternalR import com.android.systemui.R as SystemUIR import com.android.systemui.SysuiTestCase import com.android.systemui.tests.R import com.android.systemui.SysuiTestCase import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.MockitoAnnotations Loading Loading @@ -101,11 +102,14 @@ class RoundedCornerResDelegateTest : SysuiTestCase() { assertEquals(Size(3, 3), roundedCornerResDelegate.topRoundedSize) assertEquals(Size(4, 4), roundedCornerResDelegate.bottomRoundedSize) roundedCornerResDelegate.physicalPixelDisplaySizeRatio = 2f setupResources(radius = 100, roundedTopDrawable = getTestsDrawable(R.drawable.rounded4px), roundedBottomDrawable = getTestsDrawable(R.drawable.rounded5px)) roundedCornerResDelegate.updateDisplayUniqueId(null, 1) assertEquals(Size(6, 6), roundedCornerResDelegate.topRoundedSize) assertEquals(Size(8, 8), roundedCornerResDelegate.bottomRoundedSize) assertEquals(Size(4, 4), roundedCornerResDelegate.topRoundedSize) assertEquals(Size(5, 5), roundedCornerResDelegate.bottomRoundedSize) } @Test Loading