Force divider visibility reevaluation when system ui registers listener.
If system UI dies and then returns, we need to make sure it receives
information about visibility of the divider.
Bug: 26009659
Change-Id: I067d2023ce27b2d36723070127a18c71b694eb45
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index df8d5d6..32c9b2a 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -20,8 +20,6 @@
import android.graphics.Rect;
import android.os.RemoteException;
import android.util.Slog;
-import android.util.SparseArray;
-import android.util.SparseIntArray;
import android.view.IDockDividerVisibilityListener;
import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
@@ -46,6 +44,7 @@
private final Rect mLastRect = new Rect();
private IDockDividerVisibilityListener mListener;
private boolean mLastVisibility = false;
+ private boolean mForceVisibilityReevaluation;
DockedStackDividerController(Context context, DisplayContent displayContent) {
mDisplayContent = displayContent;
@@ -69,16 +68,16 @@
void setWindow(WindowState window) {
mWindow = window;
- reevaluateVisibility();
+ reevaluateVisibility(false);
}
- void reevaluateVisibility() {
+ void reevaluateVisibility(boolean force) {
if (mWindow == null) {
return;
}
TaskStack stack = mDisplayContent.mService.mStackIdToStack.get(DOCKED_STACK_ID);
final boolean visible = stack != null && stack.isVisibleLocked();
- if (mLastVisibility == visible) {
+ if (mLastVisibility == visible && !force) {
return;
}
mLastVisibility = visible;
@@ -131,5 +130,6 @@
throw new IllegalStateException("Dock divider visibility listener already set!");
}
mListener = listener;
+ reevaluateVisibility(true);
}
}