summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/ScreenDecorations.java35
-rw-r--r--packages/SystemUI/src/com/android/systemui/decor/DecorProviderFactory.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/decor/PrivacyDotDecorProviderFactory.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/decor/RoundedCornerDecorProviderFactory.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/decor/RoundedCornerDecorProviderImpl.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt38
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerResDelegateTest.kt4
7 files changed, 43 insertions, 47 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
index 7cc738a4e437..4b9288c6c56f 100644
--- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
+++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
@@ -64,7 +64,6 @@ import android.view.ViewGroup.LayoutParams;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.widget.FrameLayout;
-import android.widget.ImageView;
import androidx.annotation.VisibleForTesting;
@@ -292,11 +291,6 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
return decorProviders;
}
- private void updateDisplayIdToProviderFactories() {
- mDotFactory.onDisplayUniqueIdChanged(mDisplayUniqueId);
- mRoundedCornerFactory.onDisplayUniqueIdChanged(mDisplayUniqueId);
- }
-
/**
* Check that newProviders is the same list with decorProviders inside mOverlay.
* @param newProviders expected comparing DecorProviders
@@ -389,7 +383,7 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
final DisplayDecorationSupport newScreenDecorationSupport =
mContext.getDisplay().getDisplayDecorationSupport();
- updateDisplayIdToProviderFactories();
+ mRoundedCornerResDelegate.updateDisplayUniqueId(newUniqueId, null);
// When providers or the value of mSupportHwcScreenDecoration is changed,
// re-setup the whole screen decoration.
@@ -857,6 +851,15 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
}
ColorStateList tintList = ColorStateList.valueOf(mTintColor);
+ mRoundedCornerResDelegate.setColorTintList(tintList);
+
+ Integer[] roundedCornerIds = {
+ R.id.rounded_corner_top_left,
+ R.id.rounded_corner_top_right,
+ R.id.rounded_corner_bottom_left,
+ R.id.rounded_corner_bottom_right
+ };
+
for (int i = 0; i < BOUNDS_POSITION_LENGTH; i++) {
if (mOverlays[i] == null) {
continue;
@@ -866,19 +869,12 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
View child;
for (int j = 0; j < size; j++) {
child = overlayView.getChildAt(j);
- if (child.getId() == R.id.privacy_dot_top_left_container
- || child.getId() == R.id.privacy_dot_top_right_container
- || child.getId() == R.id.privacy_dot_bottom_left_container
- || child.getId() == R.id.privacy_dot_bottom_right_container) {
- // Exclude privacy dot from color inversion (for now?)
- continue;
- }
- if (child instanceof ImageView) {
- ((ImageView) child).setImageTintList(tintList);
- } else if (child instanceof DisplayCutoutView) {
+ if (child instanceof DisplayCutoutView) {
((DisplayCutoutView) child).setColor(mTintColor);
}
}
+ mOverlays[i].onReloadResAndMeasure(roundedCornerIds, mProviderRefreshToken, mRotation,
+ mDisplayUniqueId);
}
}
@@ -1067,12 +1063,11 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
if (mOverlays == null || !SIZE.equals(key)) {
return;
}
- ++mProviderRefreshToken;
try {
final int sizeFactor = Integer.parseInt(newValue);
- mRoundedCornerResDelegate.updateTuningSizeFactor(sizeFactor, mProviderRefreshToken);
+ mRoundedCornerResDelegate.setTuningSizeFactor(sizeFactor);
} catch (NumberFormatException e) {
- mRoundedCornerResDelegate.updateTuningSizeFactor(null, mProviderRefreshToken);
+ mRoundedCornerResDelegate.setTuningSizeFactor(null);
}
Integer[] filterIds = {
R.id.rounded_corner_top_left,
diff --git a/packages/SystemUI/src/com/android/systemui/decor/DecorProviderFactory.kt b/packages/SystemUI/src/com/android/systemui/decor/DecorProviderFactory.kt
index cc4096fb3b19..c60cad8419d2 100644
--- a/packages/SystemUI/src/com/android/systemui/decor/DecorProviderFactory.kt
+++ b/packages/SystemUI/src/com/android/systemui/decor/DecorProviderFactory.kt
@@ -19,5 +19,4 @@ package com.android.systemui.decor
abstract class DecorProviderFactory {
abstract val providers: List<DecorProvider>
abstract val hasProviders: Boolean
- abstract fun onDisplayUniqueIdChanged(displayUniqueId: String?)
} \ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/decor/PrivacyDotDecorProviderFactory.kt b/packages/SystemUI/src/com/android/systemui/decor/PrivacyDotDecorProviderFactory.kt
index d16d9604c002..136f135af759 100644
--- a/packages/SystemUI/src/com/android/systemui/decor/PrivacyDotDecorProviderFactory.kt
+++ b/packages/SystemUI/src/com/android/systemui/decor/PrivacyDotDecorProviderFactory.kt
@@ -39,10 +39,6 @@ class PrivacyDotDecorProviderFactory @Inject constructor(
override val hasProviders: Boolean
get() = isPrivacyDotEnabled
- override fun onDisplayUniqueIdChanged(displayUniqueId: String?) {
- // Do nothing for privacy dot
- }
-
override val providers: List<DecorProvider>
get() {
return if (hasProviders) {
diff --git a/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerDecorProviderFactory.kt b/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerDecorProviderFactory.kt
index 4f075da7aaa7..0ffb4fb5b456 100644
--- a/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerDecorProviderFactory.kt
+++ b/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerDecorProviderFactory.kt
@@ -28,10 +28,6 @@ class RoundedCornerDecorProviderFactory(
hasTop || hasBottom
}
- override fun onDisplayUniqueIdChanged(displayUniqueId: String?) {
- roundedCornerResDelegate.updateDisplayUniqueId(displayUniqueId, null)
- }
-
override val providers: List<DecorProvider>
get() {
val hasTop = roundedCornerResDelegate.hasTop
diff --git a/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerDecorProviderImpl.kt b/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerDecorProviderImpl.kt
index 90ff950406b4..9dbeb77ebc00 100644
--- a/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerDecorProviderImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerDecorProviderImpl.kt
@@ -65,7 +65,7 @@ class RoundedCornerDecorProviderImpl(
private fun initView(view: ImageView, @Surface.Rotation rotation: Int) {
view.setRoundedCornerImage(roundedCornerResDelegate, isTop)
view.adjustRotation(alignedBounds, rotation)
- view.setColorFilter(IMAGE_TINT_COLOR)
+ view.imageTintList = roundedCornerResDelegate.colorTintList
}
override fun onReloadResAndMeasure(
@@ -93,8 +93,6 @@ class RoundedCornerDecorProviderImpl(
}
}
-private const val IMAGE_TINT_COLOR: Int = 0xFF000000.toInt()
-
@DisplayCutout.BoundsPosition
private fun Int.toLayoutGravity(@Surface.Rotation rotation: Int): Int = when (rotation) {
Surface.ROTATION_0 -> when (this) {
diff --git a/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt b/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt
index 3ab2f0881807..3731eca4ee86 100644
--- a/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt
@@ -18,7 +18,9 @@ package com.android.systemui.decor
import android.annotation.ArrayRes
import android.annotation.DrawableRes
+import android.content.res.ColorStateList
import android.content.res.Resources
+import android.graphics.Color
import android.graphics.drawable.Drawable
import android.util.DisplayUtils
import android.util.Size
@@ -55,6 +57,17 @@ class RoundedCornerResDelegate(
var bottomRoundedSize = Size(0, 0)
private set
+ var colorTintList = ColorStateList.valueOf(Color.BLACK)
+
+ var tuningSizeFactor: Int? = null
+ set(value) {
+ if (field == value) {
+ return
+ }
+ field = value
+ reloadMeasures()
+ }
+
init {
reloadRes()
reloadMeasures()
@@ -101,7 +114,7 @@ class RoundedCornerResDelegate(
)
}
- private fun reloadMeasures(roundedSizeFactor: Int? = null) {
+ private fun reloadMeasures() {
topRoundedDrawable?.let {
topRoundedSize = Size(it.intrinsicWidth, it.intrinsicHeight)
}
@@ -109,19 +122,18 @@ class RoundedCornerResDelegate(
bottomRoundedSize = Size(it.intrinsicWidth, it.intrinsicHeight)
}
- if (roundedSizeFactor != null && roundedSizeFactor > 0) {
- val length: Int = (roundedSizeFactor * density).toInt()
- topRoundedSize = Size(length, length)
- bottomRoundedSize = Size(length, length)
- }
- }
-
- fun updateTuningSizeFactor(factor: Int?, newReloadToken: Int) {
- if (reloadToken == newReloadToken) {
- return
+ tuningSizeFactor?.let {
+ if (it <= 0) {
+ return
+ }
+ val length: Int = (it * density).toInt()
+ if (topRoundedSize.width > 0) {
+ topRoundedSize = Size(length, length)
+ }
+ if (bottomRoundedSize.width > 0) {
+ bottomRoundedSize = Size(length, length)
+ }
}
- reloadToken = newReloadToken
- reloadMeasures(factor)
}
private fun getDrawable(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerResDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerResDelegateTest.kt
index f629b3b9b97a..adb9c4d206e1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerResDelegateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/decor/RoundedCornerResDelegateTest.kt
@@ -121,13 +121,13 @@ class RoundedCornerResDelegateTest : SysuiTestCase() {
roundedCornerResDelegate = RoundedCornerResDelegate(mContext.resources, null)
val factor = 5
- roundedCornerResDelegate.updateTuningSizeFactor(factor, 1)
+ roundedCornerResDelegate.tuningSizeFactor = factor
val length = (factor * mContext.resources.displayMetrics.density).toInt()
assertEquals(Size(length, length), roundedCornerResDelegate.topRoundedSize)
assertEquals(Size(length, length), roundedCornerResDelegate.bottomRoundedSize)
- roundedCornerResDelegate.updateTuningSizeFactor(null, 2)
+ roundedCornerResDelegate.tuningSizeFactor = null
assertEquals(Size(3, 3), roundedCornerResDelegate.topRoundedSize)
assertEquals(Size(4, 4), roundedCornerResDelegate.bottomRoundedSize)