Fix DisplayPolicy#isOverlappingWithNavBar

The function name didn't match its logic. It only worked when
win.mActivityRecord is not null.

This CL fixes the logic and make the dimming window and the window with
TYPE_VOICE_INTERACTION be able to be mNavBarColorWindowCandidate.

Fix: 270298341
Bug: 268052229
Test: atest DisplayPolicyTests
Merged-In: If216cf2f73615d82129e51fbacc326fd02cbb8f8
Change-Id: If216cf2f73615d82129e51fbacc326fd02cbb8f8
(cherry picked from commit c2e683bb66)
This commit is contained in:
Tiger
2023-02-22 17:55:28 +08:00
committed by Tiger Huang
parent 0bee0bb81f
commit 2c7141ed4c

View File

@@ -1577,9 +1577,8 @@ public class DisplayPolicy {
applyKeyguardPolicy(win, imeTarget);
// Check if the freeform window overlaps with the navigation bar area.
final boolean isOverlappingWithNavBar = isOverlappingWithNavBar(win);
if (isOverlappingWithNavBar && !mIsFreeformWindowOverlappingWithNavBar
&& win.inFreeformWindowingMode()) {
if (!mIsFreeformWindowOverlappingWithNavBar && win.inFreeformWindowingMode()
&& win.mActivityRecord != null && isOverlappingWithNavBar(win)) {
mIsFreeformWindowOverlappingWithNavBar = true;
}
@@ -1637,7 +1636,7 @@ public class DisplayPolicy {
// mode; if it's in gesture navigation mode, the navigation bar will be
// NAV_BAR_FORCE_TRANSPARENT and its appearance won't be decided by overlapping
// windows.
if (isOverlappingWithNavBar) {
if (isOverlappingWithNavBar(win)) {
if (mNavBarColorWindowCandidate == null) {
mNavBarColorWindowCandidate = win;
addSystemBarColorApp(win);
@@ -1665,7 +1664,7 @@ public class DisplayPolicy {
addSystemBarColorApp(win);
}
}
if (isOverlappingWithNavBar && mNavBarColorWindowCandidate == null) {
if (isOverlappingWithNavBar(win) && mNavBarColorWindowCandidate == null) {
mNavBarColorWindowCandidate = win;
}
}
@@ -2858,7 +2857,7 @@ public class DisplayPolicy {
@VisibleForTesting
static boolean isOverlappingWithNavBar(@NonNull WindowState win) {
if (win.mActivityRecord == null || !win.isVisible()) {
if (!win.isVisible()) {
return false;
}