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

Commit e4f0c172 authored by Vinit Nayak's avatar Vinit Nayak
Browse files

Add test for setting windowingMode in startTask()

* Test for change Ic91785702a599d8f3c808e885d9cf43c0469ff5a

Fixes: 381954590
Flag: EXEMPT test

Change-Id: I0c53d4300d9b7a8fe4479e6942bc54ab390a7a71
parent 9892bff3
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -954,8 +954,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
        for (int taskId : taskIds) {
            ActivityManager.RunningTaskInfo task = mTaskOrganizer.getRunningTaskInfo(taskId);
            if (task != null) {
                wct.setWindowingMode(task.token, WINDOWING_MODE_UNDEFINED)
                        .setBounds(task.token, null);
                wct.setWindowingMode(task.getToken(), WINDOWING_MODE_UNDEFINED)
                        .setBounds(task.getToken(), null);
            }
        }
    }
+30 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.wm.shell.splitscreen;

import static android.app.ActivityTaskManager.INVALID_TASK_ID;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.view.Display.DEFAULT_DISPLAY;

import static com.android.wm.shell.shared.split.SplitScreenConstants.SPLIT_INDEX_UNDEFINED;
@@ -32,6 +33,8 @@ import static com.google.common.truth.Truth.assertThat;

import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.notNull;
import static org.mockito.Mockito.atLeastOnce;
@@ -50,9 +53,11 @@ import android.content.res.Configuration;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.view.SurfaceControl;
import android.window.RemoteTransition;
import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;

import androidx.test.annotation.UiThreadTest;
@@ -84,6 +89,7 @@ import com.android.wm.shell.transition.Transitions;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

@@ -427,6 +433,30 @@ public class StageCoordinatorTests extends ShellTestCase {
                .startFullscreenTransition(any(), any());
    }


    @Test
    public void startTask_ensureWindowingModeCleared() {
        SplitScreenTransitions splitScreenTransitions =
                spy(mStageCoordinator.getSplitTransitions());
        mStageCoordinator.setSplitTransitions(splitScreenTransitions);
        ArgumentCaptor<WindowContainerTransaction> wctCaptor =
                ArgumentCaptor.forClass(WindowContainerTransaction.class);
        int taskId = 18;
        IBinder binder = mock(IBinder.class);
        ActivityManager.RunningTaskInfo rti = mock(ActivityManager.RunningTaskInfo.class);
        WindowContainerToken mockToken = mock(WindowContainerToken.class);
        when(mockToken.asBinder()).thenReturn(binder);
        when(rti.getToken()).thenReturn(mockToken);
        when(mTaskOrganizer.getRunningTaskInfo(taskId)).thenReturn(rti);
        mStageCoordinator.startTask(taskId, SPLIT_POSITION_TOP_OR_LEFT, null /*options*/,
                null, SPLIT_INDEX_UNDEFINED);
        verify(splitScreenTransitions).startEnterTransition(anyInt(),
                wctCaptor.capture(), any(), any(), anyInt(), anyBoolean());

        int windowingMode = wctCaptor.getValue().getChanges().get(binder).getWindowingMode();
        assertEquals(windowingMode, WINDOWING_MODE_UNDEFINED);
    }

    private Transitions createTestTransitions() {
        ShellInit shellInit = new ShellInit(mMainExecutor);
        final Transitions t = new Transitions(mContext, shellInit, mock(ShellController.class),