Use status bar appearance to determine header element brightness.
Currently we use status bar color to determine header element
brightness, which has the side effect of defaulting to bright elements
on a clear caption. This CL will instead use the
WindowInsets.APPEARANCE_LIGHT_STATUS_BAR flag to determine brightness in
this particular case.
Bug: 280833361
Test: Manual; open apps with and without clear status bar.
Change-Id: Ie429825a76c20a5e1767bb80ba99cae8b7ce6068
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt
index 514ea52..76c80f7 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt
@@ -4,7 +4,7 @@
import android.content.Context
import android.graphics.Color
import android.view.View
-
+import android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
/**
* Encapsulates the root [View] of a window decoration and its children to facilitate looking up
* children (via findViewById) and updating to the latest data from [RunningTaskInfo].
@@ -23,6 +23,10 @@
* with the caption background color.
*/
protected fun shouldUseLightCaptionColors(taskInfo: RunningTaskInfo): Boolean {
- return Color.valueOf(taskInfo.taskDescription.statusBarColor).luminance() < 0.5
+ return if (Color.alpha(taskInfo.taskDescription.statusBarColor) != 0) {
+ Color.valueOf(taskInfo.taskDescription.statusBarColor).luminance() < 0.5
+ } else {
+ taskInfo.taskDescription.statusBarAppearance and APPEARANCE_LIGHT_STATUS_BARS == 0
+ }
}
}