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

Commit dd7a630a authored by Riddle Hsu's avatar Riddle Hsu Committed by Android (Google) Code Review
Browse files

Merge "Simplify assignment of insets appearance of snapshot" into main

parents f93afffc e8e2847c
Loading
Loading
Loading
Loading
+2 −17
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@ import android.view.InsetsState;
import android.view.SurfaceControl;
import android.view.ThreadedRenderer;
import android.view.WindowInsets;
import android.view.WindowInsetsController;
import android.view.WindowManager;
import android.window.ScreenCapture;
import android.window.SnapshotDrawerUtils;
@@ -137,7 +136,6 @@ abstract class AbsAppSnapshotController<TYPE extends WindowContainer,
    }

    abstract ActivityRecord getTopActivity(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
@@ -331,7 +329,7 @@ abstract class AbsAppSnapshotController<TYPE extends WindowContainer,
        builder.setPixelFormat(pixelFormat);
        builder.setIsTranslucent(isTranslucent);
        builder.setWindowingMode(source.getWindowingMode());
        builder.setAppearance(getAppearance(source));
        builder.setAppearance(mainWindow.mAttrs.insetsFlags.appearance);

        final Configuration taskConfig = activity.getTask().getConfiguration();
        final int displayRotation = taskConfig.windowConfiguration.getDisplayRotation();
@@ -450,7 +448,7 @@ abstract class AbsAppSnapshotController<TYPE extends WindowContainer,
                mainWindow.getWindowConfiguration().getRotation(), new Point(taskWidth, taskHeight),
                contentInsets, letterboxInsets, false /* isLowResolution */,
                false /* isRealSnapshot */, source.getWindowingMode(),
                getAppearance(source), false /* isTranslucent */, false /* hasImeSurface */);
                attrs.insetsFlags.appearance, false /* isTranslucent */, false /* hasImeSurface */);
        return validateSnapshot(taskSnapshot);
    }

@@ -459,19 +457,6 @@ abstract class AbsAppSnapshotController<TYPE extends WindowContainer,
                frame, WindowInsets.Type.systemBars(), false /* ignoreVisibility */).toRect();
    }

    /**
     * @return The {@link WindowInsetsController.Appearance} flags for the top main app window in
     * the given {@param TYPE}.
     */
    @WindowInsetsController.Appearance
    private int getAppearance(TYPE source) {
        final WindowState topFullscreenWindow = getTopFullscreenWindow(source);
        if (topFullscreenWindow != null) {
            return topFullscreenWindow.mAttrs.insetsFlags.appearance;
        }
        return 0;
    }

    /**
     * Called when an {@link ActivityRecord} has been removed.
     */
+0 −4
Original line number Diff line number Diff line
@@ -590,10 +590,6 @@ class ActivitySnapshotController extends AbsAppSnapshotController<ActivityRecord
        return activity;
    }

    WindowState getTopFullscreenWindow(ActivityRecord activity) {
        return activity.findMainWindow();
    }

    @Override
    ActivityManager.TaskDescription getTaskDescription(ActivityRecord object) {
        return object.taskDescription;
+1 −2
Original line number Diff line number Diff line
@@ -148,8 +148,7 @@ public class StartingSurfaceController {
        }
        // 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 */);
        final WindowState mainWindow = task.getTopFullscreenMainWindow();
        if (mainWindow == null) {
            Slog.w(TAG, "TaskSnapshotSurface.create: no main window in " + activity);
            return null;
+4 −13
Original line number Diff line number Diff line
@@ -3007,17 +3007,9 @@ class Task extends TaskFragment {
        return r.getTask().mTaskId != taskId && r.token != notTop && r.canBeTopRunning();
    }

    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];
    @Nullable
    WindowState getTopFullscreenMainWindow() {
        return getWindow(w -> w.mAttrs.type == TYPE_BASE_APPLICATION && w.mAttrs.isFullscreen());
    }

    /**
@@ -3593,8 +3585,7 @@ class Task extends TaskFragment {
        // starting window because persisted configuration does not effect to Task.
        info.taskInfo.configuration.setTo(activity.getConfiguration());
        if (!Flags.drawSnapshotAspectRatioMatch()) {
            final WindowState mainWindow =
                    getTopFullscreenMainWindow(false /* includeStartingApp */);
            final WindowState mainWindow = getTopFullscreenMainWindow();
            if (mainWindow != null) {
                info.topOpaqueWindowInsetsState =
                        mainWindow.getInsetsStateWithVisibilityOverride();
+0 −5
Original line number Diff line number Diff line
@@ -266,11 +266,6 @@ class TaskSnapshotController extends AbsAppSnapshotController<Task, TaskSnapshot
        return source.getTopMostActivity();
    }

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

    @Override
    ActivityManager.TaskDescription getTaskDescription(Task source) {
        return source.getTaskDescription();