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

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

Merge "Put status bar in immersive mode when in flex landscape split" into main

parents 641bf763 a48ee17a
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -25,9 +25,11 @@ import android.view.SurfaceControl;
import android.window.DisplayAreaAppearedInfo;
import android.window.DisplayAreaInfo;
import android.window.DisplayAreaOrganizer;
import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.internal.protolog.ProtoLog;
import com.android.wm.shell.sysui.ShellInit;
@@ -142,6 +144,11 @@ public class RootDisplayAreaOrganizer extends DisplayAreaOrganizer {
        return wct;
    }

    @Nullable
    public WindowContainerToken getDisplayTokenForDisplay(int displayId) {
        return mDisplayAreasInfo.get(displayId).token;
    }

    public void dump(@NonNull PrintWriter pw, String prefix) {
        final String innerPrefix = prefix + "  ";
        final String childPrefix = innerPrefix + "  ";
+9 −3
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ import com.android.wm.shell.shared.annotations.ShellMainThread;
import com.android.wm.shell.shared.split.SplitScreenConstants.PersistentSnapPosition;
import com.android.wm.shell.shared.split.SplitScreenConstants.SnapPosition;
import com.android.wm.shell.shared.split.SplitScreenConstants.SplitPosition;
import com.android.wm.shell.splitscreen.SplitStatusBarHider;
import com.android.wm.shell.splitscreen.StageTaskListener;

import java.io.PrintWriter;
@@ -142,6 +143,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
            new PathInterpolator(0.45f, 0f, 0.5f, 1f);
    @ShellMainThread
    private final Handler mHandler;
    private final SplitStatusBarHider mStatusBarHider;

    /** Singleton source of truth for the current state of split screen on this device. */
    private final SplitState mSplitState;
@@ -207,11 +209,12 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange

    public SplitLayout(String windowName, Context context, Configuration configuration,
            SplitLayoutHandler splitLayoutHandler,
            SplitWindowManager.ParentContainerCallbacks parentContainerCallbacks,
            ParentContainerCallbacks parentContainerCallbacks,
            DisplayController displayController, DisplayImeController displayImeController,
            ShellTaskOrganizer taskOrganizer, int parallaxType, SplitState splitState,
            @ShellMainThread Handler handler) {
            @ShellMainThread Handler handler, SplitStatusBarHider statusBarHider) {
        mHandler = handler;
        mStatusBarHider = statusBarHider;
        mContext = context.createConfigurationContext(configuration);
        mOrientation = configuration.orientation;
        mRotation = configuration.windowConfiguration.getRotation();
@@ -233,7 +236,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
        mAllowLeftRightSplitInPortrait = SplitScreenUtils.allowLeftRightSplitInPortrait(res);
        mIsLeftRightSplit = SplitScreenUtils.isLeftRightSplit(mAllowLeftRightSplitInPortrait,
                configuration);

        statusBarHider.onLeftRightSplitUpdated(mIsLeftRightSplit);
        updateDividerConfig(mContext);

        mRootBounds.set(configuration.windowConfiguration.getBounds());
@@ -506,6 +509,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
        mIsLargeScreen = configuration.smallestScreenWidthDp >= 600;
        mIsLeftRightSplit = SplitScreenUtils.isLeftRightSplit(mAllowLeftRightSplitInPortrait,
                configuration);
        mStatusBarHider.onLeftRightSplitUpdated(mIsLeftRightSplit);
        updateLayouts();
        updateDividerConfig(mContext);
        initDividerPosition(mTempRect, wasLeftRightSplit);
@@ -534,6 +538,8 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
        mRootBounds.set(tmpRect);
        mIsLeftRightSplit = SplitScreenUtils.isLeftRightSplit(mAllowLeftRightSplitInPortrait,
                mIsLargeScreen, mRootBounds.width() >= mRootBounds.height());
        mStatusBarHider.onLeftRightSplitUpdated(mIsLeftRightSplit);

        updateLayouts();
        initDividerPosition(mTempRect, wasLeftRightSplit);
    }
+4 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Context;
import android.os.Handler;

import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.RootDisplayAreaOrganizer;
import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.DisplayController;
@@ -93,11 +94,12 @@ public class TvWMShellModule {
            SplitState splitState,
            @ShellMainThread ShellExecutor mainExecutor,
            @ShellMainThread Handler mainHandler,
            SystemWindows systemWindows) {
            SystemWindows systemWindows,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer) {
        return new TvSplitScreenController(context, shellInit, shellCommandHandler, shellController,
                shellTaskOrganizer, syncQueue, rootTDAOrganizer, displayController,
                displayImeController, displayInsetsController, transitions, transactionPool,
                iconProvider, recentTasks, launchAdjacentController, multiInstanceHelper,
                splitState, mainExecutor, mainHandler, systemWindows);
                splitState, mainExecutor, mainHandler, systemWindows, rootDisplayAreaOrganizer);
    }
}
+5 −2
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.util.LatencyTracker;
import com.android.launcher3.icons.IconProvider;
import com.android.window.flags.Flags;
import com.android.wm.shell.RootDisplayAreaOrganizer;
import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.activityembedding.ActivityEmbeddingController;
@@ -577,7 +578,8 @@ public abstract class WMShellModule {
            MultiInstanceHelper multiInstanceHelper,
            SplitState splitState,
            @ShellMainThread ShellExecutor mainExecutor,
            @ShellMainThread Handler mainHandler) {
            @ShellMainThread Handler mainHandler,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer) {
        return new SplitScreenController(
                context,
                shellInit,
@@ -601,7 +603,8 @@ public abstract class WMShellModule {
                multiInstanceHelper,
                splitState,
                mainExecutor,
                mainHandler);
                mainHandler,
                rootDisplayAreaOrganizer);
    }

    //
+7 −2
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ import com.android.internal.logging.InstanceId;
import com.android.internal.protolog.ProtoLog;
import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.R;
import com.android.wm.shell.RootDisplayAreaOrganizer;
import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.ComponentUtils;
@@ -202,6 +203,7 @@ public class SplitScreenController implements SplitDragPolicy.Starter,
    private final Optional<DesktopTasksController> mDesktopTasksController;
    private final MultiInstanceHelper mMultiInstanceHelpher;
    private final SplitState mSplitState;
    private final RootDisplayAreaOrganizer mRootDisplayAreaOrganizer;
    private final SplitScreenShellCommandHandler mSplitScreenShellCommandHandler;

    @VisibleForTesting
@@ -233,7 +235,8 @@ public class SplitScreenController implements SplitDragPolicy.Starter,
            MultiInstanceHelper multiInstanceHelper,
            SplitState splitState,
            ShellExecutor mainExecutor,
            Handler mainHandler) {
            Handler mainHandler,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer) {
        mShellCommandHandler = shellCommandHandler;
        mShellController = shellController;
        mTaskOrganizer = shellTaskOrganizer;
@@ -257,6 +260,7 @@ public class SplitScreenController implements SplitDragPolicy.Starter,
        mStageCoordinator = stageCoordinator;
        mMultiInstanceHelpher = multiInstanceHelper;
        mSplitState = splitState;
        mRootDisplayAreaOrganizer = rootDisplayAreaOrganizer;
        mSplitScreenShellCommandHandler = new SplitScreenShellCommandHandler(this);
        // TODO(b/238217847): Temporarily add this check here until we can remove the dynamic
        //                    override for this controller from the base module
@@ -301,7 +305,8 @@ public class SplitScreenController implements SplitDragPolicy.Starter,
                mTaskOrganizer, mDisplayController, mDisplayImeController,
                mDisplayInsetsController, mTransitions, mTransactionPool, mIconProvider,
                mMainExecutor, mMainHandler, mRecentTasksOptional, mLaunchAdjacentController,
                mWindowDecorViewModel, mSplitState, mDesktopTasksController, mRootTDAOrganizer);
                mWindowDecorViewModel, mSplitState, mDesktopTasksController, mRootTDAOrganizer,
                mRootDisplayAreaOrganizer);
    }

    @Override
Loading