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

Commit 552d934b authored by Evan Rosky's avatar Evan Rosky Committed by Android (Google) Code Review
Browse files

Merge "De-Mock PhysicalDisplaySwitch transit tests" into main

parents 45a24dc2 5d44463a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -267,7 +267,8 @@ class TransitionController {
        mSyncEngine.addOnIdleListener(this::tryStartCollectFromQueue);
    }

    private void detachPlayer() {
    @VisibleForTesting
    void detachPlayer() {
        if (mTransitionPlayer == null) return;
        // Immediately set to null so that nothing inadvertently starts/queues.
        mTransitionPlayer = null;
+43 −58
Original line number Diff line number Diff line
@@ -16,33 +16,23 @@

package com.android.server.wm;

import static android.view.WindowManager.TRANSIT_CHANGE;

import static com.android.internal.R.bool.config_unfoldTransitionEnabled;
import static com.android.server.wm.DeviceStateController.DeviceState.REAR;
import static com.android.server.wm.DeviceStateController.DeviceState.FOLDED;
import static com.android.server.wm.DeviceStateController.DeviceState.HALF_FOLDED;
import static com.android.server.wm.DeviceStateController.DeviceState.OPEN;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;

import android.animation.ValueAnimator;
import android.annotation.Nullable;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
import android.window.TransitionRequestInfo.DisplayChange;

import static com.android.internal.R.bool.config_unfoldTransitionEnabled;
import static com.android.server.wm.DeviceStateController.DeviceState.REAR;

import androidx.test.filters.SmallTest;

@@ -50,7 +40,6 @@ import org.junit.After;
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;

@@ -62,20 +51,19 @@ import org.mockito.MockitoAnnotations;
 */
@SmallTest
@Presubmit
public class PhysicalDisplaySwitchTransitionLauncherTest {
@RunWith(WindowTestRunner.class)
public class PhysicalDisplaySwitchTransitionLauncherTest extends WindowTestsBase {

    @Mock
    DisplayContent mDisplayContent;
    @Mock
    Context mContext;
    @Mock
    Resources mResources;
    @Mock
    ActivityTaskManagerService mActivityTaskManagerService;
    @Mock
    BLASTSyncEngine mSyncEngine;
    @Mock

    WindowTestsBase.TestTransitionPlayer mPlayer;
    TransitionController mTransitionController;
    DisplayContent mDisplayContent;

    private PhysicalDisplaySwitchTransitionLauncher mTarget;
    private float mOriginalAnimationScale;
@@ -83,9 +71,14 @@ public class PhysicalDisplaySwitchTransitionLauncherTest {
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mTransitionController = new WindowTestsBase.TestTransitionController(mAtm);
        mTransitionController.setSyncEngine(mSyncEngine);
        mPlayer = new WindowTestsBase.TestTransitionPlayer(
                mTransitionController, mAtm.mWindowOrganizerController);
        when(mContext.getResources()).thenReturn(mResources);
        mTarget = new PhysicalDisplaySwitchTransitionLauncher(mDisplayContent,
                mActivityTaskManagerService, mContext, mTransitionController);
        mDisplayContent = new TestDisplayContent.Builder(mAtm, 100, 150).build();
        mTarget = new PhysicalDisplaySwitchTransitionLauncher(mDisplayContent, mAtm, mContext,
                mTransitionController);
        mOriginalAnimationScale = ValueAnimator.getDurationScale();
    }

@@ -100,24 +93,23 @@ public class PhysicalDisplaySwitchTransitionLauncherTest {
        mTarget.foldStateChanged(FOLDED);

        mTarget.foldStateChanged(OPEN);
        final Rect origBounds = new Rect();
        mDisplayContent.getBounds(origBounds);
        origBounds.offsetTo(0, 0);
        mTarget.requestDisplaySwitchTransitionIfNeeded(
                /* displayId= */ 123,
                /* oldDisplayWidth= */ 100,
                /* oldDisplayHeight= */ 150,
                mDisplayContent.getDisplayId(),
                origBounds.width(),
                origBounds.height(),
                /* newDisplayWidth= */ 200,
                /* newDisplayHeight= */ 250
        );

        ArgumentCaptor<DisplayChange> displayChangeArgumentCaptor =
                ArgumentCaptor.forClass(DisplayChange.class);
        verify(mTransitionController).requestTransitionIfNeeded(eq(TRANSIT_CHANGE), /* flags= */
                eq(0), eq(mDisplayContent), eq(mDisplayContent), /* remoteTransition= */ isNull(),
                displayChangeArgumentCaptor.capture());
        assertThat(displayChangeArgumentCaptor.getValue().getDisplayId()).isEqualTo(123);
        assertThat(displayChangeArgumentCaptor.getValue().getStartAbsBounds()).isEqualTo(
                new Rect(0, 0, 100, 150));
        assertThat(displayChangeArgumentCaptor.getValue().getEndAbsBounds()).isEqualTo(
                new Rect(0, 0, 200, 250));
        assertNotNull(mPlayer.mLastRequest);
        assertEquals(mDisplayContent.getDisplayId(),
                mPlayer.mLastRequest.getDisplayChange().getDisplayId());
        assertEquals(origBounds, mPlayer.mLastRequest.getDisplayChange().getStartAbsBounds());
        assertEquals(new Rect(0, 0, 200, 250),
                mPlayer.mLastRequest.getDisplayChange().getEndAbsBounds());
    }

    @Test
@@ -148,7 +140,7 @@ public class PhysicalDisplaySwitchTransitionLauncherTest {
        mTarget.foldStateChanged(FOLDED);
        mTarget.foldStateChanged(OPEN);
        requestDisplaySwitch();
        clearInvocations(mTransitionController);
        mPlayer.mLastRequest = null;

        requestDisplaySwitch();

@@ -220,7 +212,6 @@ public class PhysicalDisplaySwitchTransitionLauncherTest {

    @Test
    public void testDisplaySwitchAfterUnfolding_otherCollectingTransition_collectsDisplaySwitch() {
        givenCollectingTransition(createTransition(TRANSIT_CHANGE));
        givenAllAnimationsEnabled();
        mTarget.foldStateChanged(FOLDED);

@@ -228,7 +219,8 @@ public class PhysicalDisplaySwitchTransitionLauncherTest {
        requestDisplaySwitch();

        // Collects to the current transition
        verify(mTransitionController).collect(mDisplayContent);
        assertTrue(mTransitionController.getCollectingTransition().mParticipants.contains(
                mDisplayContent));
    }


@@ -245,20 +237,18 @@ public class PhysicalDisplaySwitchTransitionLauncherTest {
    }

    private void assertTransitionRequested() {
        verify(mTransitionController).requestTransitionIfNeeded(anyInt(), anyInt(), any(), any(),
                any(), any());
        assertNotNull(mPlayer.mLastRequest);
    }

    private void assertTransitionNotRequested() {
        verify(mTransitionController, never()).requestTransitionIfNeeded(anyInt(), anyInt(), any(),
                any(), any(), any());
        assertNull(mPlayer.mLastRequest);
    }

    private void requestDisplaySwitch() {
        mTarget.requestDisplaySwitchTransitionIfNeeded(
                /* displayId= */ 123,
                /* oldDisplayWidth= */ 100,
                /* oldDisplayHeight= */ 150,
                mDisplayContent.getDisplayId(),
                mDisplayContent.getBounds().width(),
                mDisplayContent.getBounds().height(),
                /* newDisplayWidth= */ 200,
                /* newDisplayHeight= */ 250
        );
@@ -280,16 +270,11 @@ public class PhysicalDisplaySwitchTransitionLauncherTest {
    }

    private void givenShellTransitionsEnabled(boolean enabled) {
        when(mTransitionController.isShellTransitionsEnabled()).thenReturn(enabled);
    }

    private void givenCollectingTransition(@Nullable Transition transition) {
        when(mTransitionController.isCollecting()).thenReturn(transition != null);
        when(mTransitionController.getCollectingTransition()).thenReturn(transition);
        if (enabled) {
            mTransitionController.registerTransitionPlayer(mPlayer, null /* proc */);
        } else {
            mTransitionController.detachPlayer();
        }

    private Transition createTransition(int type) {
        return new Transition(type, /* flags= */ 0, mTransitionController, mSyncEngine);
    }

    private void givenDisplayContentHasContent(boolean hasContent) {