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

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

Merge "Add test for granting focus on flex split launch" into main

parents 19fe5761 18724363
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.wm.shell.dagger;

import android.app.IActivityTaskManager;
import android.content.Context;
import android.os.Handler;

@@ -97,12 +98,13 @@ public class TvWMShellModule {
            @ShellMainThread Handler mainHandler,
            SystemWindows systemWindows,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
            DesktopState desktopState) {
            DesktopState desktopState,
            IActivityTaskManager activityTaskManager) {
        return new TvSplitScreenController(context, shellInit, shellCommandHandler, shellController,
                shellTaskOrganizer, syncQueue, rootTDAOrganizer, displayController,
                displayImeController, displayInsetsController, transitions, transactionPool,
                iconProvider, recentTasks, launchAdjacentController, multiInstanceHelper,
                splitState, mainExecutor, mainHandler, systemWindows, rootDisplayAreaOrganizer,
                desktopState);
                desktopState, activityTaskManager);
    }
}
+5 −2
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static com.android.hardware.input.Flags.manageKeyGestures;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.IActivityTaskManager;
import android.app.KeyguardManager;
import android.content.Context;
import android.content.pm.LauncherApps;
@@ -586,7 +587,8 @@ public abstract class WMShellModule {
            @ShellMainThread ShellExecutor mainExecutor,
            @ShellMainThread Handler mainHandler,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
            DesktopState desktopState) {
            DesktopState desktopState,
            IActivityTaskManager activityTaskManager) {
        return new SplitScreenController(
                context,
                shellInit,
@@ -612,7 +614,8 @@ public abstract class WMShellModule {
                mainExecutor,
                mainHandler,
                rootDisplayAreaOrganizer,
                desktopState);
                desktopState,
                activityTaskManager);
    }

    //
+6 −2
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import static com.android.wm.shell.splitscreen.SplitScreen.STAGE_TYPE_UNDEFINED;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.ActivityTaskManager;
import android.app.IActivityTaskManager;
import android.app.PendingIntent;
import android.app.TaskInfo;
import android.content.ComponentName;
@@ -207,6 +208,7 @@ public class SplitScreenController implements SplitDragPolicy.Starter,
    private final MultiInstanceHelper mMultiInstanceHelpher;
    private final SplitState mSplitState;
    private final RootDisplayAreaOrganizer mRootDisplayAreaOrganizer;
    private final IActivityTaskManager mActivityTaskManager;
    private final SplitScreenShellCommandHandler mSplitScreenShellCommandHandler;
    private final DesktopState mDesktopState;

@@ -241,7 +243,8 @@ public class SplitScreenController implements SplitDragPolicy.Starter,
            ShellExecutor mainExecutor,
            Handler mainHandler,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
            DesktopState desktopState) {
            DesktopState desktopState,
            IActivityTaskManager activityTaskManager) {
        mShellCommandHandler = shellCommandHandler;
        mShellController = shellController;
        mTaskOrganizer = shellTaskOrganizer;
@@ -266,6 +269,7 @@ public class SplitScreenController implements SplitDragPolicy.Starter,
        mMultiInstanceHelpher = multiInstanceHelper;
        mSplitState = splitState;
        mRootDisplayAreaOrganizer = rootDisplayAreaOrganizer;
        mActivityTaskManager = activityTaskManager;
        mSplitScreenShellCommandHandler = new SplitScreenShellCommandHandler(this);
        mDesktopState = desktopState;
        // TODO(b/238217847): Temporarily add this check here until we can remove the dynamic
@@ -312,7 +316,7 @@ public class SplitScreenController implements SplitDragPolicy.Starter,
                mDisplayInsetsController, mTransitions, mTransactionPool, mIconProvider,
                mMainExecutor, mMainHandler, mRecentTasksOptional, mLaunchAdjacentController,
                mWindowDecorViewModel, mSplitState, mDesktopTasksController, mRootTDAOrganizer,
                mRootDisplayAreaOrganizer, mDesktopState);
                mRootDisplayAreaOrganizer, mDesktopState, mActivityTaskManager);
    }

    @Override
+8 −5
Original line number Diff line number Diff line
@@ -213,6 +213,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,

    private final int mDisplayId;
    private SplitLayout mSplitLayout;
    private final IActivityTaskManager mActivityTaskManager;
    private ValueAnimator mDividerFadeInAnimator;
    private boolean mDividerVisible;
    private boolean mKeyguardActive;
@@ -388,7 +389,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
            Optional<DesktopTasksController> desktopTasksController,
            RootTaskDisplayAreaOrganizer rootTDAOrganizer,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
            DesktopState desktopState) {
            DesktopState desktopState,
            IActivityTaskManager activityTaskManager) {
        mContext = context;
        mDisplayId = displayId;
        mSyncQueue = syncQueue;
@@ -459,6 +461,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
        mStatusBarHider = new SplitStatusBarHider(taskOrganizer, splitState,
                rootDisplayAreaOrganizer);
        mSplitTransitionModifier = new SplitTransitionModifier();
        mActivityTaskManager = activityTaskManager;
    }

    @VisibleForTesting
@@ -474,7 +477,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
            Optional<DesktopTasksController> desktopTasksController,
            RootTaskDisplayAreaOrganizer rootTDAOrganizer,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
            DesktopState desktopState) {
            DesktopState desktopState,
            IActivityTaskManager activityTaskManager) {
        mContext = context;
        mDisplayId = displayId;
        mSyncQueue = syncQueue;
@@ -487,6 +491,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
        mDisplayInsetsController = displayInsetsController;
        mTransactionPool = transactionPool;
        mSplitLayout = splitLayout;
        mActivityTaskManager = activityTaskManager;
        mSplitTransitions = new SplitScreenTransitions(transactionPool, transitions,
                this::onTransitionAnimationComplete, this);
        mLogger = new SplitscreenEventLogger();
@@ -1638,10 +1643,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
     * Grants focus to the main or the side stages.
     */
    protected void grantFocusToStage(@SplitPosition int stageToFocus) {
        IActivityTaskManager activityTaskManagerService = IActivityTaskManager.Stub.asInterface(
                ServiceManager.getService(Context.ACTIVITY_TASK_SERVICE));
        try {
            activityTaskManagerService.setFocusedTask(getTaskId(stageToFocus));
            mActivityTaskManager.setFocusedTask(getTaskId(stageToFocus));
        } catch (RemoteException | NullPointerException e) {
            ProtoLog.e(WM_SHELL_SPLIT_SCREEN,
                    "Unable to update focus on the chosen stage: %s", e.getMessage());
+9 −3
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.wm.shell.splitscreen.tv;

import static android.view.Display.DEFAULT_DISPLAY;

import android.app.IActivityTaskManager;
import android.content.Context;
import android.os.Handler;

@@ -69,6 +70,7 @@ public class TvSplitScreenController extends SplitScreenController {

    private final Handler mMainHandler;
    private final SystemWindows mSystemWindows;
    private final IActivityTaskManager mActivityTaskManager;

    public TvSplitScreenController(Context context,
            ShellInit shellInit,
@@ -91,13 +93,15 @@ public class TvSplitScreenController extends SplitScreenController {
            Handler mainHandler,
            SystemWindows systemWindows,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
            DesktopState desktopState) {
            DesktopState desktopState,
            IActivityTaskManager activityTaskManager) {
        super(context, shellInit, shellCommandHandler, shellController, shellTaskOrganizer,
                syncQueue, rootTDAOrganizer, displayController, displayImeController,
                displayInsetsController, null, transitions, transactionPool,
                iconProvider, recentTasks, launchAdjacentController, Optional.empty(),
                Optional.empty(), null /* stageCoordinator */, multiInstanceHelper, splitState,
                mainExecutor, mainHandler, rootDisplayAreaOrganizer, desktopState);
                mainExecutor, mainHandler, rootDisplayAreaOrganizer, desktopState,
                activityTaskManager);

        mTaskOrganizer = shellTaskOrganizer;
        mSyncQueue = syncQueue;
@@ -117,6 +121,7 @@ public class TvSplitScreenController extends SplitScreenController {
        mSystemWindows = systemWindows;
        mRootTDAOrganizer = rootTDAOrganizer;
        mRootDisplayAreaOrganizer = rootDisplayAreaOrganizer;
        mActivityTaskManager = activityTaskManager;
    }

    /**
@@ -130,7 +135,8 @@ public class TvSplitScreenController extends SplitScreenController {
                mDisplayInsetsController, mTransitions, mTransactionPool,
                mIconProvider, mMainExecutor, mMainHandler,
                mRecentTasksOptional, mLaunchAdjacentController, mSplitState, mSystemWindows,
                mRootTDAOrganizer, mRootDisplayAreaOrganizer, getDesktopState());
                mRootTDAOrganizer, mRootDisplayAreaOrganizer, getDesktopState(),
                mActivityTaskManager);
    }

}
Loading