Merge "Reset hidden state of AppToken that was cleared due to starting window" into oc-dev

This commit is contained in:
TreeHugger Robot
2017-05-17 23:54:48 +00:00
committed by Android (Google) Code Review

View File

@@ -53,7 +53,6 @@ import android.app.Activity;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.os.Binder;
import android.os.Build;
import android.os.Debug;
import android.os.IBinder;
import android.os.SystemClock;
@@ -155,6 +154,9 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
StartingSurface startingSurface;
boolean startingDisplayed;
boolean startingMoved;
// True if the hidden state of this token was forced to false due to a transferred starting
// window.
private boolean mHiddenSetFromTransferredStartingWindow;
boolean firstWindowDrawn;
private final WindowState.UpdateReportedVisibilityResults mReportedVisibilityResults =
new WindowState.UpdateReportedVisibilityResults();
@@ -185,7 +187,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
ArrayDeque<Rect> mFrozenBounds = new ArrayDeque<>();
ArrayDeque<Configuration> mFrozenMergedConfig = new ArrayDeque<>();
private boolean mDisbalePreviewScreenshots;
private boolean mDisablePreviewScreenshots;
Task mLastParent;
@@ -790,11 +792,17 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
if (getController() != null) {
getController().removeStartingWindow();
}
} else if (mChildren.size() == 0 && startingData != null) {
} else if (mChildren.size() == 0) {
// If this is the last window and we had requested a starting transition window,
// well there is no point now.
if (DEBUG_STARTING_WINDOW) Slog.v(TAG_WM, "Nulling last startingData");
startingData = null;
if (mHiddenSetFromTransferredStartingWindow) {
// We set the hidden state to false for the token from a transferred starting window.
// We now reset it back to true since the starting window was the last window in the
// token.
hidden = true;
}
} else if (mChildren.size() == 1 && startingSurface != null && !isRelaunching()) {
// If this is the last window except for a starting transition window,
// we need to get rid of the starting transition.
@@ -1171,6 +1179,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
"Removing starting " + tStartingWindow + " from " + fromToken);
fromToken.removeChild(tStartingWindow);
fromToken.postWindowRemoveStartingWindowCleanup(tStartingWindow);
fromToken.mHiddenSetFromTransferredStartingWindow = false;
addWindow(tStartingWindow);
// Propagate other interesting state between the tokens. If the old token is displayed,
@@ -1186,6 +1195,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
if (!fromToken.hidden) {
hidden = false;
hiddenRequested = false;
mHiddenSetFromTransferredStartingWindow = true;
}
setClientHidden(fromToken.mClientHidden);
fromToken.mAppAnimator.transferCurrentAnimation(
@@ -1544,7 +1554,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
* See {@link Activity#setDisablePreviewScreenshots}.
*/
void setDisablePreviewScreenshots(boolean disable) {
mDisbalePreviewScreenshots = disable;
mDisablePreviewScreenshots = disable;
}
/**
@@ -1556,7 +1566,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
* screenshot.
*/
boolean shouldUseAppThemeSnapshot() {
return mDisbalePreviewScreenshots || forAllWindows(w -> (w.mAttrs.flags & FLAG_SECURE) != 0,
return mDisablePreviewScreenshots || forAllWindows(w -> (w.mAttrs.flags & FLAG_SECURE) != 0,
true /* topToBottom */);
}
@@ -1604,11 +1614,13 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
pw.print(" mIsExiting="); pw.println(mIsExiting);
}
if (startingWindow != null || startingSurface != null
|| startingDisplayed || startingMoved) {
|| startingDisplayed || startingMoved || mHiddenSetFromTransferredStartingWindow) {
pw.print(prefix); pw.print("startingWindow="); pw.print(startingWindow);
pw.print(" startingSurface="); pw.print(startingSurface);
pw.print(" startingDisplayed="); pw.print(startingDisplayed);
pw.print(" startingMoved="); pw.println(startingMoved);
pw.print(" startingMoved="); pw.print(startingMoved);
pw.println(" mHiddenSetFromTransferredStartingWindow="
+ mHiddenSetFromTransferredStartingWindow);
}
if (!mFrozenBounds.isEmpty()) {
pw.print(prefix); pw.print("mFrozenBounds="); pw.println(mFrozenBounds);