From 026dec42988ff7f1d30eeb01994c6742f55ae104 Mon Sep 17 00:00:00 2001 From: Tiger Huang Date: Thu, 11 Jun 2020 17:50:04 +0800 Subject: [PATCH] Don't clear requested SysUI visibility if the source doesn't exist This makes the SysUI visibility callback compatible with the legacy behavior. Fix: 158639842 Fix: 158643177 Test: atest LayoutTests#testAddingImmersiveWindow Change-Id: Ife06f8aab1b9d86790478665a33961d1b613d62d --- core/java/android/view/InsetsSourceConsumer.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/java/android/view/InsetsSourceConsumer.java b/core/java/android/view/InsetsSourceConsumer.java index ae70a4971776d..3aa246441dbca 100644 --- a/core/java/android/view/InsetsSourceConsumer.java +++ b/core/java/android/view/InsetsSourceConsumer.java @@ -18,8 +18,8 @@ package android.view; import static android.view.InsetsController.ANIMATION_TYPE_NONE; import static android.view.InsetsController.AnimationType; -import static android.view.InsetsState.getDefaultVisibility; import static android.view.InsetsController.DEBUG; +import static android.view.InsetsState.getDefaultVisibility; import static android.view.InsetsState.toPublicType; import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE; @@ -221,9 +221,10 @@ public class InsetsSourceConsumer { final boolean hasControl = mSourceControl != null; // We still need to let the legacy app know the visibility change even if we don't have the - // control. + // control. If we don't have the source, we don't change the requested visibility for making + // the callback behavior compatible. mController.updateCompatSysUiVisibility( - mType, hasControl ? mRequestedVisible : isVisible, hasControl); + mType, (hasControl || source == null) ? mRequestedVisible : isVisible, hasControl); // If we don't have control, we are not able to change the visibility. if (!hasControl) {