Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a36e3a13 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents dc6da8b4 6c459219
Loading
Loading
Loading
Loading
+19 −7
Original line number Diff line number Diff line
@@ -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);