Merge "Fix issues with docked stack not un-minimizing" into nyc-dev
am: b72b265c85
* commit 'b72b265c85b2315c306de78d00365087c24375ce':
Fix issues with docked stack not un-minimizing
Change-Id: I4db615b1a38f0c330e62bc42bfe54b46f0b0cebc
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index 8174c13..c640b2a 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -377,7 +377,7 @@
// If the app that having visibility change is not the top visible one in the task,
// it does not affect whether the docked stack is minimized, ignore it.
- if (task.getTopVisibleAppToken() == null || task.getTopVisibleAppToken() != wtoken) {
+ if (task.getTopAppToken() == null || task.getTopAppToken() != wtoken) {
return;
}
@@ -598,7 +598,7 @@
}
private boolean animateForMinimizedDockedStack(long now) {
- final TaskStack stack = mDisplayContent.getDockedStackVisibleForUserLocked();
+ final TaskStack stack = mService.mStackIdToStack.get(DOCKED_STACK_ID);
if (!mAnimationStarted) {
mAnimationStarted = true;
mAnimationStartTime = now;
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 6925fa5..8d41dab 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -719,6 +719,10 @@
return null;
}
+ AppWindowToken getTopAppToken() {
+ return mAppTokens.size() > 0 ? mAppTokens.get(mAppTokens.size() - 1) : null;
+ }
+
@Override
public boolean isFullscreen() {
if (useCurrentBounds()) {
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 7c1d2d7..4224c57 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -1098,6 +1098,14 @@
pw.println(prefix + "mDeferDetach=" + mDeferDetach);
pw.println(prefix + "mFullscreen=" + mFullscreen);
pw.println(prefix + "mBounds=" + mBounds.toShortString());
+ if (mMinimizeAmount != 0f) {
+ pw.println(prefix + "mMinimizeAmout=" + mMinimizeAmount);
+ }
+ if (mAdjustedForIme) {
+ pw.println(prefix + "mAdjustedForIme=true");
+ pw.println(prefix + "mAdjustImeAmount=" + mAdjustImeAmount);
+ pw.println(prefix + "mAdjustDividerAmount=" + mAdjustDividerAmount);
+ }
if (!mAdjustedBounds.isEmpty()) {
pw.println(prefix + "mAdjustedBounds=" + mAdjustedBounds.toShortString());
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index f270389..57f551c 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -4335,15 +4335,21 @@
}
}
- if (visibilityChanged && !delayed) {
- if (visible) {
+ if (visibilityChanged) {
+ if (visible && !delayed) {
// The token was made immediately visible, there will be no entrance animation.
// We need to inform the client the enter animation was finished.
wtoken.mEnteringAnimation = true;
mActivityManagerAppTransitionNotifier.onAppTransitionFinishedLocked(wtoken.token);
}
- getDefaultDisplayContentLocked().getDockedDividerController()
- .notifyAppVisibilityChanged(wtoken, visible);
+
+ if (!mClosingApps.contains(wtoken) && !mOpeningApps.contains(wtoken)) {
+ // The token is not closing nor opening, so even if there is an animation set, that
+ // doesn't mean that it goes through the normal app transition cycle so we have
+ // to inform the docked controller about visibility change.
+ getDefaultDisplayContentLocked().getDockedDividerController()
+ .notifyAppVisibilityChanged(wtoken, visible);
+ }
}
return delayed;