Merge "Fix some shell unit tests with shell transitions" into tm-qpr-dev

This commit is contained in:
Winson Chung
2023-01-19 06:47:18 +00:00
committed by Android (Google) Code Review
2 changed files with 35 additions and 7 deletions

View File

@@ -28,9 +28,11 @@ import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset; import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -82,13 +84,14 @@ public class TaskViewTest extends ShellTestCase {
@Mock @Mock
SyncTransactionQueue mSyncQueue; SyncTransactionQueue mSyncQueue;
@Mock @Mock
TaskViewTransitions mTaskViewTransitions; Transitions mTransitions;
SurfaceSession mSession; SurfaceSession mSession;
SurfaceControl mLeash; SurfaceControl mLeash;
Context mContext; Context mContext;
TaskView mTaskView; TaskView mTaskView;
TaskViewTransitions mTaskViewTransitions;
@Before @Before
public void setUp() { public void setUp() {
@@ -118,6 +121,10 @@ public class TaskViewTest extends ShellTestCase {
return null; return null;
}).when(mSyncQueue).runInSync(any()); }).when(mSyncQueue).runInSync(any());
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
doReturn(true).when(mTransitions).isRegistered();
}
mTaskViewTransitions = spy(new TaskViewTransitions(mTransitions));
mTaskView = new TaskView(mContext, mOrganizer, mTaskViewTransitions, mSyncQueue); mTaskView = new TaskView(mContext, mOrganizer, mTaskViewTransitions, mSyncQueue);
mTaskView.setListener(mExecutor, mViewListener); mTaskView.setListener(mExecutor, mViewListener);
} }

View File

@@ -29,11 +29,13 @@ import static com.android.wm.shell.splitscreen.SplitScreen.STAGE_TYPE_MAIN;
import static com.android.wm.shell.splitscreen.SplitScreen.STAGE_TYPE_SIDE; import static com.android.wm.shell.splitscreen.SplitScreen.STAGE_TYPE_SIDE;
import static com.android.wm.shell.splitscreen.SplitScreen.STAGE_TYPE_UNDEFINED; import static com.android.wm.shell.splitscreen.SplitScreen.STAGE_TYPE_UNDEFINED;
import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_RETURN_HOME; import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_RETURN_HOME;
import static com.android.wm.shell.transition.Transitions.TRANSIT_SPLIT_DISMISS;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.notNull;
import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
@@ -45,6 +47,8 @@ import android.app.ActivityManager;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.SurfaceControl; import android.view.SurfaceControl;
import android.view.SurfaceSession; import android.view.SurfaceSession;
import android.window.WindowContainerToken; import android.window.WindowContainerToken;
@@ -57,6 +61,7 @@ import androidx.test.filters.SmallTest;
import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTestCase; import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.TestRunningTaskInfoBuilder; import com.android.wm.shell.TestRunningTaskInfoBuilder;
import com.android.wm.shell.TestShellExecutor;
import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayImeController; import com.android.wm.shell.common.DisplayImeController;
import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.DisplayInsetsController;
@@ -65,6 +70,8 @@ import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.common.TransactionPool; import com.android.wm.shell.common.TransactionPool;
import com.android.wm.shell.common.split.SplitLayout; import com.android.wm.shell.common.split.SplitLayout;
import com.android.wm.shell.splitscreen.SplitScreen.SplitScreenListener; import com.android.wm.shell.splitscreen.SplitScreen.SplitScreenListener;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.Transitions; import com.android.wm.shell.transition.Transitions;
import org.junit.Before; import org.junit.Before;
@@ -98,11 +105,7 @@ public class StageCoordinatorTests extends ShellTestCase {
@Mock @Mock
private DisplayInsetsController mDisplayInsetsController; private DisplayInsetsController mDisplayInsetsController;
@Mock @Mock
private Transitions mTransitions;
@Mock
private TransactionPool mTransactionPool; private TransactionPool mTransactionPool;
@Mock
private ShellExecutor mMainExecutor;
private final Rect mBounds1 = new Rect(10, 20, 30, 40); private final Rect mBounds1 = new Rect(10, 20, 30, 40);
private final Rect mBounds2 = new Rect(5, 10, 15, 20); private final Rect mBounds2 = new Rect(5, 10, 15, 20);
@@ -112,11 +115,16 @@ public class StageCoordinatorTests extends ShellTestCase {
private SurfaceControl mRootLeash; private SurfaceControl mRootLeash;
private ActivityManager.RunningTaskInfo mRootTask; private ActivityManager.RunningTaskInfo mRootTask;
private StageCoordinator mStageCoordinator; private StageCoordinator mStageCoordinator;
private Transitions mTransitions;
private final TestShellExecutor mMainExecutor = new TestShellExecutor();
private final ShellExecutor mAnimExecutor = new TestShellExecutor();
private final Handler mMainHandler = new Handler(Looper.getMainLooper());
@Before @Before
@UiThreadTest @UiThreadTest
public void setup() { public void setup() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mTransitions = createTestTransitions();
mStageCoordinator = spy(new StageCoordinator(mContext, DEFAULT_DISPLAY, mSyncQueue, mStageCoordinator = spy(new StageCoordinator(mContext, DEFAULT_DISPLAY, mSyncQueue,
mTaskOrganizer, mMainStage, mSideStage, mDisplayController, mDisplayImeController, mTaskOrganizer, mMainStage, mSideStage, mDisplayController, mDisplayImeController,
mDisplayInsetsController, mSplitLayout, mTransitions, mTransactionPool, mDisplayInsetsController, mSplitLayout, mTransitions, mTransactionPool,
@@ -329,7 +337,20 @@ public class StageCoordinatorTests extends ShellTestCase {
mStageCoordinator.onFoldedStateChanged(true); mStageCoordinator.onFoldedStateChanged(true);
verify(mStageCoordinator).onSplitScreenExit(); if (Transitions.ENABLE_SHELL_TRANSITIONS) {
verify(mMainStage).deactivate(any(WindowContainerTransaction.class), eq(false)); verify(mTaskOrganizer).startNewTransition(eq(TRANSIT_SPLIT_DISMISS), notNull());
} else {
verify(mStageCoordinator).onSplitScreenExit();
verify(mMainStage).deactivate(any(WindowContainerTransaction.class), eq(false));
}
}
private Transitions createTestTransitions() {
ShellInit shellInit = new ShellInit(mMainExecutor);
final Transitions t = new Transitions(mContext, shellInit, mock(ShellController.class),
mTaskOrganizer, mTransactionPool, mock(DisplayController.class), mMainExecutor,
mMainHandler, mAnimExecutor);
shellInit.init();
return t;
} }
} }