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

Commit 3444ed7b authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Android (Google) Code Review
Browse files

Merge "Choose top-fullscreen main window from task to create task snapshot window." into main

parents 3b636960 054d224a
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ abstract class AbsAppSnapshotController<TYPE extends WindowContainer,
    }

    abstract ActivityRecord getTopActivity(TYPE source);
    abstract ActivityRecord getTopFullscreenActivity(TYPE source);
    abstract WindowState getTopFullscreenWindow(TYPE source);
    abstract ActivityManager.TaskDescription getTaskDescription(TYPE source);
    /**
     * Find the window for a given task to take a snapshot. Top child of the task is usually the one
@@ -465,10 +465,7 @@ abstract class AbsAppSnapshotController<TYPE extends WindowContainer,
     */
    @WindowInsetsController.Appearance
    private int getAppearance(TYPE source) {
        final ActivityRecord topFullscreenActivity = getTopFullscreenActivity(source);
        final WindowState topFullscreenWindow = topFullscreenActivity != null
                ? topFullscreenActivity.findMainWindow()
                : null;
        final WindowState topFullscreenWindow = getTopFullscreenWindow(source);
        if (topFullscreenWindow != null) {
            return topFullscreenWindow.mAttrs.insetsFlags.appearance;
        }
+2 −4
Original line number Diff line number Diff line
@@ -590,10 +590,8 @@ class ActivitySnapshotController extends AbsAppSnapshotController<ActivityRecord
        return activity;
    }

    @Override
    ActivityRecord getTopFullscreenActivity(ActivityRecord activity) {
        final WindowState win = activity.findMainWindow();
        return (win != null && win.mAttrs.isFullscreen()) ? activity : null;
    WindowState getTopFullscreenWindow(ActivityRecord activity) {
        return activity.findMainWindow();
    }

    @Override
+4 −1
Original line number Diff line number Diff line
@@ -146,7 +146,10 @@ public class StartingSurfaceController {
                    + activity);
            return null;
        }
        final WindowState mainWindow = activity.findMainWindow(false);
        // For snapshot surface, the top activity could be trampoline activity, so here should
        // search for top fullscreen activity in the task.
        final WindowState mainWindow = task
                .getTopFullscreenMainWindow(false /* includeStartingApp */);
        if (mainWindow == null) {
            Slog.w(TAG, "TaskSnapshotSurface.create: no main window in " + activity);
            return null;
+16 −12
Original line number Diff line number Diff line
@@ -3007,11 +3007,17 @@ class Task extends TaskFragment {
        return r.getTask().mTaskId != taskId && r.token != notTop && r.canBeTopRunning();
    }

    ActivityRecord getTopFullscreenActivity() {
        return getActivity((r) -> {
            final WindowState win = r.findMainWindow();
            return (win != null && win.mAttrs.isFullscreen());
    WindowState getTopFullscreenMainWindow(boolean includeStartingApp) {
        final WindowState[] candidate = new WindowState[1];
        getActivity((r) -> {
            final WindowState win = r.findMainWindow(includeStartingApp);
            if (win != null && win.mAttrs.isFullscreen()) {
                candidate[0] = win;
                return true;
            }
            return false;
        });
        return candidate[0];
    }

    /**
@@ -3579,16 +3585,14 @@ class Task extends TaskFragment {
        // starting window because persisted configuration does not effect to Task.
        info.taskInfo.configuration.setTo(activity.getConfiguration());
        if (!Flags.drawSnapshotAspectRatioMatch()) {
            final ActivityRecord topFullscreenActivity = getTopFullscreenActivity();
            if (topFullscreenActivity != null) {
                final WindowState mainWindow = topFullscreenActivity.findMainWindow(false);
            final WindowState mainWindow =
                    getTopFullscreenMainWindow(false /* includeStartingApp */);
            if (mainWindow != null) {
                info.topOpaqueWindowInsetsState =
                        mainWindow.getInsetsStateWithVisibilityOverride();
                info.topOpaqueWindowLayoutParams = mainWindow.getAttrs();
            }
        }
        }
        return info;
    }

+2 −2
Original line number Diff line number Diff line
@@ -261,8 +261,8 @@ class TaskSnapshotController extends AbsAppSnapshotController<Task, TaskSnapshot
    }

    @Override
    ActivityRecord getTopFullscreenActivity(Task source) {
        return source.getTopFullscreenActivity();
    WindowState getTopFullscreenWindow(Task source) {
        return source.getTopFullscreenMainWindow(true /* includeStartingApp */);
    }

    @Override