Loading libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java +3 −1 Original line number Original line Diff line number Diff line Loading @@ -267,13 +267,15 @@ public abstract class Pip2Module { @WMSingleton @WMSingleton @Provides @Provides static PipTaskListener providePipTaskListener(Context context, static PipTaskListener providePipTaskListener(Context context, @NonNull PipSurfaceTransactionHelper pipSurfaceTransactionHelper, ShellTaskOrganizer shellTaskOrganizer, ShellTaskOrganizer shellTaskOrganizer, PipTransitionState pipTransitionState, PipTransitionState pipTransitionState, PipScheduler pipScheduler, PipScheduler pipScheduler, PipBoundsState pipBoundsState, PipBoundsState pipBoundsState, PipBoundsAlgorithm pipBoundsAlgorithm, PipBoundsAlgorithm pipBoundsAlgorithm, @ShellMainThread ShellExecutor mainExecutor) { @ShellMainThread ShellExecutor mainExecutor) { return new PipTaskListener(context, shellTaskOrganizer, pipTransitionState, return new PipTaskListener(context, pipSurfaceTransactionHelper, shellTaskOrganizer, pipTransitionState, pipScheduler, pipBoundsState, pipBoundsAlgorithm, mainExecutor); pipScheduler, pipBoundsState, pipBoundsAlgorithm, mainExecutor); } } Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -75,6 +75,7 @@ public class PipTaskListener implements ShellTaskOrganizer.TaskListener, private final @NonNull PipSurfaceTransactionHelper mSurfaceTransactionHelper; private final @NonNull PipSurfaceTransactionHelper mSurfaceTransactionHelper; public PipTaskListener(Context context, public PipTaskListener(Context context, @NonNull PipSurfaceTransactionHelper pipSurfaceTransactionHelper, ShellTaskOrganizer shellTaskOrganizer, ShellTaskOrganizer shellTaskOrganizer, PipTransitionState pipTransitionState, PipTransitionState pipTransitionState, PipScheduler pipScheduler, PipScheduler pipScheduler, Loading Loading @@ -103,7 +104,7 @@ public class PipTaskListener implements ShellTaskOrganizer.TaskListener, mPipBoundsState.addOnPipComponentChangedListener(((oldPipComponent, newPipComponent) -> mPipBoundsState.addOnPipComponentChangedListener(((oldPipComponent, newPipComponent) -> mPictureInPictureParams = new PictureInPictureParams.Builder().build())); mPictureInPictureParams = new PictureInPictureParams.Builder().build())); mSurfaceTransactionHelper = new PipSurfaceTransactionHelper(context); mSurfaceTransactionHelper = pipSurfaceTransactionHelper; } } void setPictureInPictureParams(@Nullable PictureInPictureParams params) { void setPictureInPictureParams(@Nullable PictureInPictureParams params) { Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelperTest.java +23 −2 Original line number Original line Diff line number Diff line Loading @@ -31,9 +31,10 @@ import android.content.res.Resources; import android.graphics.Rect; import android.graphics.Rect; import android.gui.BorderSettings; import android.gui.BorderSettings; import android.gui.BoxShadowSettings; import android.gui.BoxShadowSettings; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.FlagsParameterization; import android.platform.test.flag.junit.SetFlagsRule; import android.platform.test.flag.junit.SetFlagsRule; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.testing.TestableLooper; import android.view.SurfaceControl; import android.view.SurfaceControl; Loading @@ -53,12 +54,19 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations; import platform.test.runner.parameterized.ParameterizedAndroidJunit4; import platform.test.runner.parameterized.Parameters; import java.util.List; /** /** * Unit test against {@link PipSurfaceTransactionHelper}. * Unit test against {@link PipSurfaceTransactionHelper}. */ */ @SmallTest @SmallTest @TestableLooper.RunWithLooper @TestableLooper.RunWithLooper @RunWith(AndroidTestingRunner.class) @EnableFlags(Flags.FLAG_ENABLE_PIP2) @RunWith(ParameterizedAndroidJunit4.class) public class PipSurfaceTransactionHelperTest { public class PipSurfaceTransactionHelperTest { private static final int CORNER_RADIUS = 10; private static final int CORNER_RADIUS = 10; Loading Loading @@ -94,6 +102,17 @@ public class PipSurfaceTransactionHelperTest { .mockStatic(PipUtils.class) .mockStatic(PipUtils.class) .build(); .build(); @Parameters(name = "{0}") public static List<FlagsParameterization> getParams() { return FlagsParameterization.allCombinationsOf( Flags.FLAG_ENABLE_PIP_BOX_SHADOWS); } public PipSurfaceTransactionHelperTest(FlagsParameterization flags) { mSetFlagsRule.setFlagsParameterization(flags); } @Before @Before public void setUp() { public void setUp() { MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this); Loading Loading @@ -156,6 +175,7 @@ public class PipSurfaceTransactionHelperTest { } } @Test @Test @DisableFlags(Flags.FLAG_ENABLE_PIP_BOX_SHADOWS) public void shadow_doNotApply_setZeroShadowRadius() { public void shadow_doNotApply_setZeroShadowRadius() { mPipSurfaceTransactionHelper.shadow(mMockTransaction, mTestLeash, false /* apply */); mPipSurfaceTransactionHelper.shadow(mMockTransaction, mTestLeash, false /* apply */); Loading @@ -163,6 +183,7 @@ public class PipSurfaceTransactionHelperTest { } } @Test @Test @DisableFlags(Flags.FLAG_ENABLE_PIP_BOX_SHADOWS) public void shadow_doApply_setExactShadowRadius() { public void shadow_doApply_setExactShadowRadius() { mPipSurfaceTransactionHelper.shadow(mMockTransaction, mTestLeash, true /* apply */); mPipSurfaceTransactionHelper.shadow(mMockTransaction, mTestLeash, true /* apply */); Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/animation/PipAlphaAnimatorTest.java +67 −53 Original line number Original line Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyFloat; 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.atLeastOnce; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.never; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; Loading @@ -29,32 +28,38 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.Context; import android.content.res.Resources; import android.content.res.Resources; import android.testing.AndroidTestingRunner; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.FlagsParameterization; import android.platform.test.flag.junit.SetFlagsRule; import android.testing.TestableLooper; import android.testing.TestableLooper; import android.view.SurfaceControl; import android.view.SurfaceControl; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.platform.app.InstrumentationRegistry; import com.android.wm.shell.R; import com.android.wm.shell.Flags; import com.android.wm.shell.pip2.PipSurfaceTransactionHelper; import com.android.wm.shell.pip2.PipSurfaceTransactionHelper; import org.junit.Before; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations; import platform.test.runner.parameterized.ParameterizedAndroidJunit4; import platform.test.runner.parameterized.Parameters; import java.util.List; /** /** * Unit test against {@link PipAlphaAnimator}. * Unit test against {@link PipAlphaAnimator}. */ */ @SmallTest @SmallTest @TestableLooper.RunWithLooper @TestableLooper.RunWithLooper @RunWith(AndroidTestingRunner.class) @EnableFlags(Flags.FLAG_ENABLE_PIP2) @RunWith(ParameterizedAndroidJunit4.class) public class PipAlphaAnimatorTest { public class PipAlphaAnimatorTest { private static final float TEST_CORNER_RADIUS = 1f; private static final float TEST_SHADOW_RADIUS = 2f; @Mock private Context mMockContext; @Mock private Context mMockContext; @Mock private Resources mMockResources; @Mock private Resources mMockResources; Loading @@ -64,7 +69,8 @@ public class PipAlphaAnimatorTest { @Mock private SurfaceControl.Transaction mMockAnimateTransaction; @Mock private SurfaceControl.Transaction mMockAnimateTransaction; @Mock private SurfaceControl.Transaction mMockStartTransaction; @Mock private SurfaceControl.Transaction mMockStartTransaction; @Mock private SurfaceControl.Transaction mMockFinishTransaction; @Mock private SurfaceControl.Transaction mMockFinishTransaction; @Mock private PipSurfaceTransactionHelper mPipSurfaceTransactionHelper; @Mock private Runnable mMockStartCallback; @Mock private Runnable mMockStartCallback; @Mock private Runnable mMockEndCallback; @Mock private Runnable mMockEndCallback; Loading @@ -72,21 +78,29 @@ public class PipAlphaAnimatorTest { private PipAlphaAnimator mPipAlphaAnimator; private PipAlphaAnimator mPipAlphaAnimator; private SurfaceControl mTestLeash; private SurfaceControl mTestLeash; @Parameters(name = "{0}") public static List<FlagsParameterization> getParams() { return FlagsParameterization.allCombinationsOf( Flags.FLAG_ENABLE_PIP_BOX_SHADOWS); } @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); public PipAlphaAnimatorTest(FlagsParameterization flags) { mSetFlagsRule.setFlagsParameterization(flags); } @Before @Before public void setUp() { public void setUp() { MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this); when(mMockContext.getResources()).thenReturn(mMockResources); when(mMockContext.getResources()).thenReturn(mMockResources); when(mMockResources.getInteger(anyInt())).thenReturn(0); when(mMockResources.getInteger(anyInt())).thenReturn(0); when(mMockFactory.getTransaction()).thenReturn(mMockAnimateTransaction); when(mMockFactory.getTransaction()).thenReturn(mMockAnimateTransaction); when(mMockResources.getDimensionPixelSize(R.dimen.pip_corner_radius)) .thenReturn((int) TEST_CORNER_RADIUS); when(mMockResources.getDimensionPixelSize(R.dimen.pip_shadow_radius)) .thenReturn((int) TEST_SHADOW_RADIUS); prepareTransaction(mMockAnimateTransaction); prepareTransaction(mMockAnimateTransaction); prepareTransaction(mMockStartTransaction); prepareTransaction(mMockStartTransaction); prepareTransaction(mMockFinishTransaction); prepareTransaction(mMockFinishTransaction); mTestLeash = new SurfaceControl.Builder() mTestLeash = new SurfaceControl.Builder() .setContainerLayer() .setContainerLayer() .setName("PipAlphaAnimatorTest") .setName("PipAlphaAnimatorTest") Loading @@ -97,7 +111,7 @@ public class PipAlphaAnimatorTest { @Test @Test public void setAnimationStartCallback_fadeInAnimator_callbackStartCallback() { public void setAnimationStartCallback_fadeInAnimator_callbackStartCallback() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setAnimationStartCallback(mMockStartCallback); mPipAlphaAnimator.setAnimationStartCallback(mMockStartCallback); Loading @@ -114,7 +128,7 @@ public class PipAlphaAnimatorTest { @Test @Test public void setAnimationEndCallback_fadeInAnimator_callbackStartAndEndCallback() { public void setAnimationEndCallback_fadeInAnimator_callbackStartAndEndCallback() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setAnimationStartCallback(mMockStartCallback); mPipAlphaAnimator.setAnimationStartCallback(mMockStartCallback); Loading @@ -131,7 +145,7 @@ public class PipAlphaAnimatorTest { @Test @Test public void onAnimationStart_fadeInAnimator_setCornerAndShadowRadii() { public void onAnimationStart_fadeInAnimator_setCornerAndShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -140,16 +154,16 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.pause(); mPipAlphaAnimator.pause(); }); }); verify(mMockStartTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockStartTransaction), eq(mTestLeash), eq(true)); verify(mMockStartTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockStartTransaction), eq(mTestLeash), eq(true)); } } @Test @Test public void onAnimationStart_fadeOutAnimator_setCornerNoShadowRadii() { public void onAnimationStart_fadeOutAnimator_setCornerNoShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -158,18 +172,18 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.pause(); mPipAlphaAnimator.pause(); }); }); verify(mMockStartTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockStartTransaction), eq(mTestLeash), eq(true)); verify(mMockStartTransaction, never()) verify(mPipSurfaceTransactionHelper, never()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockStartTransaction), eq(mTestLeash), eq(true)); verify(mMockStartTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(0f)); .shadow(eq(mMockStartTransaction), eq(mTestLeash), eq(false)); } } @Test @Test public void onAnimationUpdate_fadeInAnimator_setCornerAndShadowRadii() { public void onAnimationUpdate_fadeInAnimator_setCornerAndShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -178,16 +192,16 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.pause(); mPipAlphaAnimator.pause(); }); }); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); } } @Test @Test public void onAnimationUpdate_fadeOutAnimator_setCornerNoShadowRadii() { public void onAnimationUpdate_fadeOutAnimator_setCornerNoShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -196,18 +210,18 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.pause(); mPipAlphaAnimator.pause(); }); }); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, never()) verify(mPipSurfaceTransactionHelper, never()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(0f)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(false)); } } @Test @Test public void onAnimationEnd_fadeInAnimator_setCornerAndShadowRadii() { public void onAnimationEnd_fadeInAnimator_setCornerAndShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -216,16 +230,16 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.end(); mPipAlphaAnimator.end(); }); }); verify(mMockFinishTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockFinishTransaction), eq(mTestLeash), eq(true)); verify(mMockFinishTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockFinishTransaction), eq(mTestLeash), eq(true)); } } @Test @Test public void onAnimationEnd_fadeOutAnimator_setCornerNoShadowRadii() { public void onAnimationEnd_fadeOutAnimator_setCornerNoShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -234,18 +248,18 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.end(); mPipAlphaAnimator.end(); }); }); verify(mMockFinishTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockFinishTransaction), eq(mTestLeash), eq(true)); verify(mMockFinishTransaction, never()) verify(mPipSurfaceTransactionHelper, never()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockFinishTransaction), eq(mTestLeash), eq(true)); verify(mMockFinishTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(0f)); .shadow(eq(mMockFinishTransaction), eq(mTestLeash), eq(false)); } } @Test @Test public void onAnimationEnd_fadeInAnimator_leashVisibleAtEnd() { public void onAnimationEnd_fadeInAnimator_leashVisibleAtEnd() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -261,7 +275,7 @@ public class PipAlphaAnimatorTest { @Test @Test public void onAnimationEnd_fadeOutAnimator_leashInvisibleAtEnd() { public void onAnimationEnd_fadeOutAnimator_leashInvisibleAtEnd() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/animation/PipEnterAnimatorTest.java +46 −27 Original line number Original line Diff line number Diff line Loading @@ -32,7 +32,9 @@ import android.content.pm.ActivityInfo; import android.content.res.Resources; import android.content.res.Resources; import android.graphics.Matrix; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.Rect; import android.testing.AndroidTestingRunner; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.FlagsParameterization; import android.platform.test.flag.junit.SetFlagsRule; import android.testing.TestableLooper; import android.testing.TestableLooper; import android.view.Surface; import android.view.Surface; import android.view.SurfaceControl; import android.view.SurfaceControl; Loading @@ -40,26 +42,30 @@ import android.view.SurfaceControl; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.platform.app.InstrumentationRegistry; import com.android.wm.shell.R; import com.android.wm.shell.Flags; import com.android.wm.shell.pip2.PipSurfaceTransactionHelper; import com.android.wm.shell.pip2.PipSurfaceTransactionHelper; import com.android.wm.shell.pip2.phone.PipAppIconOverlay; import com.android.wm.shell.pip2.phone.PipAppIconOverlay; import org.junit.Before; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations; import platform.test.runner.parameterized.ParameterizedAndroidJunit4; import platform.test.runner.parameterized.Parameters; import java.util.List; /** /** * Unit test against {@link PipEnterAnimator}. * Unit test against {@link PipEnterAnimator}. */ */ @SmallTest @SmallTest @TestableLooper.RunWithLooper @TestableLooper.RunWithLooper @RunWith(AndroidTestingRunner.class) @EnableFlags(Flags.FLAG_ENABLE_PIP2) @RunWith(ParameterizedAndroidJunit4.class) public class PipEnterAnimatorTest { public class PipEnterAnimatorTest { private static final float TEST_CORNER_RADIUS = 1f; private static final float TEST_SHADOW_RADIUS = 2f; @Mock private Context mMockContext; @Mock private Context mMockContext; @Mock private Resources mMockResources; @Mock private Resources mMockResources; @Mock private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory mMockFactory; @Mock private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory mMockFactory; Loading @@ -77,6 +83,22 @@ public class PipEnterAnimatorTest { private Rect mEndBounds; private Rect mEndBounds; private PipEnterAnimator mPipEnterAnimator; private PipEnterAnimator mPipEnterAnimator; @Mock private PipSurfaceTransactionHelper mPipSurfaceTransactionHelper; @Parameters(name = "{0}") public static List<FlagsParameterization> getParams() { return FlagsParameterization.allCombinationsOf( Flags.FLAG_ENABLE_PIP_BOX_SHADOWS); } @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); public PipEnterAnimatorTest(FlagsParameterization flags) { mSetFlagsRule.setFlagsParameterization(flags); } @Before @Before public void setUp() { public void setUp() { MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this); Loading @@ -84,10 +106,6 @@ public class PipEnterAnimatorTest { when(mMockResources.getInteger(anyInt())).thenReturn(0); when(mMockResources.getInteger(anyInt())).thenReturn(0); when(mMockFactory.getTransaction()).thenReturn(mMockAnimateTransaction); when(mMockFactory.getTransaction()).thenReturn(mMockAnimateTransaction); when(mMockPipAppIconOverlay.getLeash()).thenReturn(mMockAppIconOverlayLeash); when(mMockPipAppIconOverlay.getLeash()).thenReturn(mMockAppIconOverlayLeash); when(mMockResources.getDimensionPixelSize(R.dimen.pip_corner_radius)) .thenReturn((int) TEST_CORNER_RADIUS); when(mMockResources.getDimensionPixelSize(R.dimen.pip_shadow_radius)) .thenReturn((int) TEST_SHADOW_RADIUS); prepareTransaction(mMockAnimateTransaction); prepareTransaction(mMockAnimateTransaction); prepareTransaction(mMockStartTransaction); prepareTransaction(mMockStartTransaction); Loading @@ -105,7 +123,7 @@ public class PipEnterAnimatorTest { mRotation = Surface.ROTATION_0; mRotation = Surface.ROTATION_0; mEndBounds = new Rect(100, 100, 500, 500); mEndBounds = new Rect(100, 100, 500, 500); mPipEnterAnimator = new PipEnterAnimator(mMockContext, mPipEnterAnimator = new PipEnterAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, mMockStartTransaction, mMockFinishTransaction, mEndBounds, mRotation); mEndBounds, mRotation); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -121,10 +139,11 @@ public class PipEnterAnimatorTest { verifyNoMoreInteractions(mMockEndCallback); verifyNoMoreInteractions(mMockEndCallback); // Check corner and shadow radii were set // Check corner and shadow radii were set verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); } } @Test @Test Loading @@ -132,7 +151,7 @@ public class PipEnterAnimatorTest { mRotation = Surface.ROTATION_0; mRotation = Surface.ROTATION_0; mEndBounds = new Rect(100, 100, 500, 500); mEndBounds = new Rect(100, 100, 500, 500); mPipEnterAnimator = new PipEnterAnimator(mMockContext, mPipEnterAnimator = new PipEnterAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, mMockStartTransaction, mMockFinishTransaction, mEndBounds, mRotation); mEndBounds, mRotation); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -148,10 +167,10 @@ public class PipEnterAnimatorTest { verify(mMockEndCallback).run(); verify(mMockEndCallback).run(); // Check corner and shadow radii were set // Check corner and shadow radii were set verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); } } @Test @Test Loading @@ -159,7 +178,7 @@ public class PipEnterAnimatorTest { mRotation = Surface.ROTATION_0; mRotation = Surface.ROTATION_0; mEndBounds = new Rect(100, 100, 500, 500); mEndBounds = new Rect(100, 100, 500, 500); mPipEnterAnimator = new PipEnterAnimator(mMockContext, mPipEnterAnimator = new PipEnterAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, mMockStartTransaction, mMockFinishTransaction, mEndBounds, mRotation); mEndBounds, mRotation); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -177,7 +196,7 @@ public class PipEnterAnimatorTest { mRotation = Surface.ROTATION_0; mRotation = Surface.ROTATION_0; mEndBounds = new Rect(100, 100, 500, 500); mEndBounds = new Rect(100, 100, 500, 500); mPipEnterAnimator = new PipEnterAnimator(mMockContext, mPipEnterAnimator = new PipEnterAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, mMockStartTransaction, mMockFinishTransaction, mEndBounds, mRotation); mEndBounds, mRotation); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -196,7 +215,7 @@ public class PipEnterAnimatorTest { mRotation = Surface.ROTATION_0; mRotation = Surface.ROTATION_0; mEndBounds = new Rect(100, 100, 500, 500); mEndBounds = new Rect(100, 100, 500, 500); mPipEnterAnimator = new PipEnterAnimator(mMockContext, mPipEnterAnimator = new PipEnterAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, mMockStartTransaction, mMockFinishTransaction, mEndBounds, mRotation); mEndBounds, mRotation); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -212,10 +231,10 @@ public class PipEnterAnimatorTest { eq(mMockAnimateTransaction), anyFloat(), eq(fraction), eq(mEndBounds)); eq(mMockAnimateTransaction), anyFloat(), eq(fraction), eq(mEndBounds)); // Check corner and shadow radii were set // Check corner and shadow radii were set verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); } } // set up transaction chaining // set up transaction chaining Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java +3 −1 Original line number Original line Diff line number Diff line Loading @@ -267,13 +267,15 @@ public abstract class Pip2Module { @WMSingleton @WMSingleton @Provides @Provides static PipTaskListener providePipTaskListener(Context context, static PipTaskListener providePipTaskListener(Context context, @NonNull PipSurfaceTransactionHelper pipSurfaceTransactionHelper, ShellTaskOrganizer shellTaskOrganizer, ShellTaskOrganizer shellTaskOrganizer, PipTransitionState pipTransitionState, PipTransitionState pipTransitionState, PipScheduler pipScheduler, PipScheduler pipScheduler, PipBoundsState pipBoundsState, PipBoundsState pipBoundsState, PipBoundsAlgorithm pipBoundsAlgorithm, PipBoundsAlgorithm pipBoundsAlgorithm, @ShellMainThread ShellExecutor mainExecutor) { @ShellMainThread ShellExecutor mainExecutor) { return new PipTaskListener(context, shellTaskOrganizer, pipTransitionState, return new PipTaskListener(context, pipSurfaceTransactionHelper, shellTaskOrganizer, pipTransitionState, pipScheduler, pipBoundsState, pipBoundsAlgorithm, mainExecutor); pipScheduler, pipBoundsState, pipBoundsAlgorithm, mainExecutor); } } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -75,6 +75,7 @@ public class PipTaskListener implements ShellTaskOrganizer.TaskListener, private final @NonNull PipSurfaceTransactionHelper mSurfaceTransactionHelper; private final @NonNull PipSurfaceTransactionHelper mSurfaceTransactionHelper; public PipTaskListener(Context context, public PipTaskListener(Context context, @NonNull PipSurfaceTransactionHelper pipSurfaceTransactionHelper, ShellTaskOrganizer shellTaskOrganizer, ShellTaskOrganizer shellTaskOrganizer, PipTransitionState pipTransitionState, PipTransitionState pipTransitionState, PipScheduler pipScheduler, PipScheduler pipScheduler, Loading Loading @@ -103,7 +104,7 @@ public class PipTaskListener implements ShellTaskOrganizer.TaskListener, mPipBoundsState.addOnPipComponentChangedListener(((oldPipComponent, newPipComponent) -> mPipBoundsState.addOnPipComponentChangedListener(((oldPipComponent, newPipComponent) -> mPictureInPictureParams = new PictureInPictureParams.Builder().build())); mPictureInPictureParams = new PictureInPictureParams.Builder().build())); mSurfaceTransactionHelper = new PipSurfaceTransactionHelper(context); mSurfaceTransactionHelper = pipSurfaceTransactionHelper; } } void setPictureInPictureParams(@Nullable PictureInPictureParams params) { void setPictureInPictureParams(@Nullable PictureInPictureParams params) { Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelperTest.java +23 −2 Original line number Original line Diff line number Diff line Loading @@ -31,9 +31,10 @@ import android.content.res.Resources; import android.graphics.Rect; import android.graphics.Rect; import android.gui.BorderSettings; import android.gui.BorderSettings; import android.gui.BoxShadowSettings; import android.gui.BoxShadowSettings; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.FlagsParameterization; import android.platform.test.flag.junit.SetFlagsRule; import android.platform.test.flag.junit.SetFlagsRule; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.testing.TestableLooper; import android.view.SurfaceControl; import android.view.SurfaceControl; Loading @@ -53,12 +54,19 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations; import platform.test.runner.parameterized.ParameterizedAndroidJunit4; import platform.test.runner.parameterized.Parameters; import java.util.List; /** /** * Unit test against {@link PipSurfaceTransactionHelper}. * Unit test against {@link PipSurfaceTransactionHelper}. */ */ @SmallTest @SmallTest @TestableLooper.RunWithLooper @TestableLooper.RunWithLooper @RunWith(AndroidTestingRunner.class) @EnableFlags(Flags.FLAG_ENABLE_PIP2) @RunWith(ParameterizedAndroidJunit4.class) public class PipSurfaceTransactionHelperTest { public class PipSurfaceTransactionHelperTest { private static final int CORNER_RADIUS = 10; private static final int CORNER_RADIUS = 10; Loading Loading @@ -94,6 +102,17 @@ public class PipSurfaceTransactionHelperTest { .mockStatic(PipUtils.class) .mockStatic(PipUtils.class) .build(); .build(); @Parameters(name = "{0}") public static List<FlagsParameterization> getParams() { return FlagsParameterization.allCombinationsOf( Flags.FLAG_ENABLE_PIP_BOX_SHADOWS); } public PipSurfaceTransactionHelperTest(FlagsParameterization flags) { mSetFlagsRule.setFlagsParameterization(flags); } @Before @Before public void setUp() { public void setUp() { MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this); Loading Loading @@ -156,6 +175,7 @@ public class PipSurfaceTransactionHelperTest { } } @Test @Test @DisableFlags(Flags.FLAG_ENABLE_PIP_BOX_SHADOWS) public void shadow_doNotApply_setZeroShadowRadius() { public void shadow_doNotApply_setZeroShadowRadius() { mPipSurfaceTransactionHelper.shadow(mMockTransaction, mTestLeash, false /* apply */); mPipSurfaceTransactionHelper.shadow(mMockTransaction, mTestLeash, false /* apply */); Loading @@ -163,6 +183,7 @@ public class PipSurfaceTransactionHelperTest { } } @Test @Test @DisableFlags(Flags.FLAG_ENABLE_PIP_BOX_SHADOWS) public void shadow_doApply_setExactShadowRadius() { public void shadow_doApply_setExactShadowRadius() { mPipSurfaceTransactionHelper.shadow(mMockTransaction, mTestLeash, true /* apply */); mPipSurfaceTransactionHelper.shadow(mMockTransaction, mTestLeash, true /* apply */); Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/animation/PipAlphaAnimatorTest.java +67 −53 Original line number Original line Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyFloat; 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.atLeastOnce; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.never; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; Loading @@ -29,32 +28,38 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.Context; import android.content.res.Resources; import android.content.res.Resources; import android.testing.AndroidTestingRunner; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.FlagsParameterization; import android.platform.test.flag.junit.SetFlagsRule; import android.testing.TestableLooper; import android.testing.TestableLooper; import android.view.SurfaceControl; import android.view.SurfaceControl; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.platform.app.InstrumentationRegistry; import com.android.wm.shell.R; import com.android.wm.shell.Flags; import com.android.wm.shell.pip2.PipSurfaceTransactionHelper; import com.android.wm.shell.pip2.PipSurfaceTransactionHelper; import org.junit.Before; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations; import platform.test.runner.parameterized.ParameterizedAndroidJunit4; import platform.test.runner.parameterized.Parameters; import java.util.List; /** /** * Unit test against {@link PipAlphaAnimator}. * Unit test against {@link PipAlphaAnimator}. */ */ @SmallTest @SmallTest @TestableLooper.RunWithLooper @TestableLooper.RunWithLooper @RunWith(AndroidTestingRunner.class) @EnableFlags(Flags.FLAG_ENABLE_PIP2) @RunWith(ParameterizedAndroidJunit4.class) public class PipAlphaAnimatorTest { public class PipAlphaAnimatorTest { private static final float TEST_CORNER_RADIUS = 1f; private static final float TEST_SHADOW_RADIUS = 2f; @Mock private Context mMockContext; @Mock private Context mMockContext; @Mock private Resources mMockResources; @Mock private Resources mMockResources; Loading @@ -64,7 +69,8 @@ public class PipAlphaAnimatorTest { @Mock private SurfaceControl.Transaction mMockAnimateTransaction; @Mock private SurfaceControl.Transaction mMockAnimateTransaction; @Mock private SurfaceControl.Transaction mMockStartTransaction; @Mock private SurfaceControl.Transaction mMockStartTransaction; @Mock private SurfaceControl.Transaction mMockFinishTransaction; @Mock private SurfaceControl.Transaction mMockFinishTransaction; @Mock private PipSurfaceTransactionHelper mPipSurfaceTransactionHelper; @Mock private Runnable mMockStartCallback; @Mock private Runnable mMockStartCallback; @Mock private Runnable mMockEndCallback; @Mock private Runnable mMockEndCallback; Loading @@ -72,21 +78,29 @@ public class PipAlphaAnimatorTest { private PipAlphaAnimator mPipAlphaAnimator; private PipAlphaAnimator mPipAlphaAnimator; private SurfaceControl mTestLeash; private SurfaceControl mTestLeash; @Parameters(name = "{0}") public static List<FlagsParameterization> getParams() { return FlagsParameterization.allCombinationsOf( Flags.FLAG_ENABLE_PIP_BOX_SHADOWS); } @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); public PipAlphaAnimatorTest(FlagsParameterization flags) { mSetFlagsRule.setFlagsParameterization(flags); } @Before @Before public void setUp() { public void setUp() { MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this); when(mMockContext.getResources()).thenReturn(mMockResources); when(mMockContext.getResources()).thenReturn(mMockResources); when(mMockResources.getInteger(anyInt())).thenReturn(0); when(mMockResources.getInteger(anyInt())).thenReturn(0); when(mMockFactory.getTransaction()).thenReturn(mMockAnimateTransaction); when(mMockFactory.getTransaction()).thenReturn(mMockAnimateTransaction); when(mMockResources.getDimensionPixelSize(R.dimen.pip_corner_radius)) .thenReturn((int) TEST_CORNER_RADIUS); when(mMockResources.getDimensionPixelSize(R.dimen.pip_shadow_radius)) .thenReturn((int) TEST_SHADOW_RADIUS); prepareTransaction(mMockAnimateTransaction); prepareTransaction(mMockAnimateTransaction); prepareTransaction(mMockStartTransaction); prepareTransaction(mMockStartTransaction); prepareTransaction(mMockFinishTransaction); prepareTransaction(mMockFinishTransaction); mTestLeash = new SurfaceControl.Builder() mTestLeash = new SurfaceControl.Builder() .setContainerLayer() .setContainerLayer() .setName("PipAlphaAnimatorTest") .setName("PipAlphaAnimatorTest") Loading @@ -97,7 +111,7 @@ public class PipAlphaAnimatorTest { @Test @Test public void setAnimationStartCallback_fadeInAnimator_callbackStartCallback() { public void setAnimationStartCallback_fadeInAnimator_callbackStartCallback() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setAnimationStartCallback(mMockStartCallback); mPipAlphaAnimator.setAnimationStartCallback(mMockStartCallback); Loading @@ -114,7 +128,7 @@ public class PipAlphaAnimatorTest { @Test @Test public void setAnimationEndCallback_fadeInAnimator_callbackStartAndEndCallback() { public void setAnimationEndCallback_fadeInAnimator_callbackStartAndEndCallback() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setAnimationStartCallback(mMockStartCallback); mPipAlphaAnimator.setAnimationStartCallback(mMockStartCallback); Loading @@ -131,7 +145,7 @@ public class PipAlphaAnimatorTest { @Test @Test public void onAnimationStart_fadeInAnimator_setCornerAndShadowRadii() { public void onAnimationStart_fadeInAnimator_setCornerAndShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -140,16 +154,16 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.pause(); mPipAlphaAnimator.pause(); }); }); verify(mMockStartTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockStartTransaction), eq(mTestLeash), eq(true)); verify(mMockStartTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockStartTransaction), eq(mTestLeash), eq(true)); } } @Test @Test public void onAnimationStart_fadeOutAnimator_setCornerNoShadowRadii() { public void onAnimationStart_fadeOutAnimator_setCornerNoShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -158,18 +172,18 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.pause(); mPipAlphaAnimator.pause(); }); }); verify(mMockStartTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockStartTransaction), eq(mTestLeash), eq(true)); verify(mMockStartTransaction, never()) verify(mPipSurfaceTransactionHelper, never()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockStartTransaction), eq(mTestLeash), eq(true)); verify(mMockStartTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(0f)); .shadow(eq(mMockStartTransaction), eq(mTestLeash), eq(false)); } } @Test @Test public void onAnimationUpdate_fadeInAnimator_setCornerAndShadowRadii() { public void onAnimationUpdate_fadeInAnimator_setCornerAndShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -178,16 +192,16 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.pause(); mPipAlphaAnimator.pause(); }); }); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); } } @Test @Test public void onAnimationUpdate_fadeOutAnimator_setCornerNoShadowRadii() { public void onAnimationUpdate_fadeOutAnimator_setCornerNoShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -196,18 +210,18 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.pause(); mPipAlphaAnimator.pause(); }); }); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, never()) verify(mPipSurfaceTransactionHelper, never()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(0f)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(false)); } } @Test @Test public void onAnimationEnd_fadeInAnimator_setCornerAndShadowRadii() { public void onAnimationEnd_fadeInAnimator_setCornerAndShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -216,16 +230,16 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.end(); mPipAlphaAnimator.end(); }); }); verify(mMockFinishTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockFinishTransaction), eq(mTestLeash), eq(true)); verify(mMockFinishTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockFinishTransaction), eq(mTestLeash), eq(true)); } } @Test @Test public void onAnimationEnd_fadeOutAnimator_setCornerNoShadowRadii() { public void onAnimationEnd_fadeOutAnimator_setCornerNoShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -234,18 +248,18 @@ public class PipAlphaAnimatorTest { mPipAlphaAnimator.end(); mPipAlphaAnimator.end(); }); }); verify(mMockFinishTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockFinishTransaction), eq(mTestLeash), eq(true)); verify(mMockFinishTransaction, never()) verify(mPipSurfaceTransactionHelper, never()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockFinishTransaction), eq(mTestLeash), eq(true)); verify(mMockFinishTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper) .setShadowRadius(eq(mTestLeash), eq(0f)); .shadow(eq(mMockFinishTransaction), eq(mTestLeash), eq(false)); } } @Test @Test public void onAnimationEnd_fadeInAnimator_leashVisibleAtEnd() { public void onAnimationEnd_fadeInAnimator_leashVisibleAtEnd() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -261,7 +275,7 @@ public class PipAlphaAnimatorTest { @Test @Test public void onAnimationEnd_fadeOutAnimator_leashInvisibleAtEnd() { public void onAnimationEnd_fadeOutAnimator_leashInvisibleAtEnd() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mMockStartTransaction, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/animation/PipEnterAnimatorTest.java +46 −27 Original line number Original line Diff line number Diff line Loading @@ -32,7 +32,9 @@ import android.content.pm.ActivityInfo; import android.content.res.Resources; import android.content.res.Resources; import android.graphics.Matrix; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.Rect; import android.testing.AndroidTestingRunner; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.FlagsParameterization; import android.platform.test.flag.junit.SetFlagsRule; import android.testing.TestableLooper; import android.testing.TestableLooper; import android.view.Surface; import android.view.Surface; import android.view.SurfaceControl; import android.view.SurfaceControl; Loading @@ -40,26 +42,30 @@ import android.view.SurfaceControl; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.platform.app.InstrumentationRegistry; import com.android.wm.shell.R; import com.android.wm.shell.Flags; import com.android.wm.shell.pip2.PipSurfaceTransactionHelper; import com.android.wm.shell.pip2.PipSurfaceTransactionHelper; import com.android.wm.shell.pip2.phone.PipAppIconOverlay; import com.android.wm.shell.pip2.phone.PipAppIconOverlay; import org.junit.Before; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations; import platform.test.runner.parameterized.ParameterizedAndroidJunit4; import platform.test.runner.parameterized.Parameters; import java.util.List; /** /** * Unit test against {@link PipEnterAnimator}. * Unit test against {@link PipEnterAnimator}. */ */ @SmallTest @SmallTest @TestableLooper.RunWithLooper @TestableLooper.RunWithLooper @RunWith(AndroidTestingRunner.class) @EnableFlags(Flags.FLAG_ENABLE_PIP2) @RunWith(ParameterizedAndroidJunit4.class) public class PipEnterAnimatorTest { public class PipEnterAnimatorTest { private static final float TEST_CORNER_RADIUS = 1f; private static final float TEST_SHADOW_RADIUS = 2f; @Mock private Context mMockContext; @Mock private Context mMockContext; @Mock private Resources mMockResources; @Mock private Resources mMockResources; @Mock private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory mMockFactory; @Mock private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory mMockFactory; Loading @@ -77,6 +83,22 @@ public class PipEnterAnimatorTest { private Rect mEndBounds; private Rect mEndBounds; private PipEnterAnimator mPipEnterAnimator; private PipEnterAnimator mPipEnterAnimator; @Mock private PipSurfaceTransactionHelper mPipSurfaceTransactionHelper; @Parameters(name = "{0}") public static List<FlagsParameterization> getParams() { return FlagsParameterization.allCombinationsOf( Flags.FLAG_ENABLE_PIP_BOX_SHADOWS); } @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); public PipEnterAnimatorTest(FlagsParameterization flags) { mSetFlagsRule.setFlagsParameterization(flags); } @Before @Before public void setUp() { public void setUp() { MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this); Loading @@ -84,10 +106,6 @@ public class PipEnterAnimatorTest { when(mMockResources.getInteger(anyInt())).thenReturn(0); when(mMockResources.getInteger(anyInt())).thenReturn(0); when(mMockFactory.getTransaction()).thenReturn(mMockAnimateTransaction); when(mMockFactory.getTransaction()).thenReturn(mMockAnimateTransaction); when(mMockPipAppIconOverlay.getLeash()).thenReturn(mMockAppIconOverlayLeash); when(mMockPipAppIconOverlay.getLeash()).thenReturn(mMockAppIconOverlayLeash); when(mMockResources.getDimensionPixelSize(R.dimen.pip_corner_radius)) .thenReturn((int) TEST_CORNER_RADIUS); when(mMockResources.getDimensionPixelSize(R.dimen.pip_shadow_radius)) .thenReturn((int) TEST_SHADOW_RADIUS); prepareTransaction(mMockAnimateTransaction); prepareTransaction(mMockAnimateTransaction); prepareTransaction(mMockStartTransaction); prepareTransaction(mMockStartTransaction); Loading @@ -105,7 +123,7 @@ public class PipEnterAnimatorTest { mRotation = Surface.ROTATION_0; mRotation = Surface.ROTATION_0; mEndBounds = new Rect(100, 100, 500, 500); mEndBounds = new Rect(100, 100, 500, 500); mPipEnterAnimator = new PipEnterAnimator(mMockContext, mPipEnterAnimator = new PipEnterAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, mMockStartTransaction, mMockFinishTransaction, mEndBounds, mRotation); mEndBounds, mRotation); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -121,10 +139,11 @@ public class PipEnterAnimatorTest { verifyNoMoreInteractions(mMockEndCallback); verifyNoMoreInteractions(mMockEndCallback); // Check corner and shadow radii were set // Check corner and shadow radii were set verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); } } @Test @Test Loading @@ -132,7 +151,7 @@ public class PipEnterAnimatorTest { mRotation = Surface.ROTATION_0; mRotation = Surface.ROTATION_0; mEndBounds = new Rect(100, 100, 500, 500); mEndBounds = new Rect(100, 100, 500, 500); mPipEnterAnimator = new PipEnterAnimator(mMockContext, mPipEnterAnimator = new PipEnterAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, mMockStartTransaction, mMockFinishTransaction, mEndBounds, mRotation); mEndBounds, mRotation); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -148,10 +167,10 @@ public class PipEnterAnimatorTest { verify(mMockEndCallback).run(); verify(mMockEndCallback).run(); // Check corner and shadow radii were set // Check corner and shadow radii were set verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); } } @Test @Test Loading @@ -159,7 +178,7 @@ public class PipEnterAnimatorTest { mRotation = Surface.ROTATION_0; mRotation = Surface.ROTATION_0; mEndBounds = new Rect(100, 100, 500, 500); mEndBounds = new Rect(100, 100, 500, 500); mPipEnterAnimator = new PipEnterAnimator(mMockContext, mPipEnterAnimator = new PipEnterAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, mMockStartTransaction, mMockFinishTransaction, mEndBounds, mRotation); mEndBounds, mRotation); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -177,7 +196,7 @@ public class PipEnterAnimatorTest { mRotation = Surface.ROTATION_0; mRotation = Surface.ROTATION_0; mEndBounds = new Rect(100, 100, 500, 500); mEndBounds = new Rect(100, 100, 500, 500); mPipEnterAnimator = new PipEnterAnimator(mMockContext, mPipEnterAnimator = new PipEnterAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, mMockStartTransaction, mMockFinishTransaction, mEndBounds, mRotation); mEndBounds, mRotation); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -196,7 +215,7 @@ public class PipEnterAnimatorTest { mRotation = Surface.ROTATION_0; mRotation = Surface.ROTATION_0; mEndBounds = new Rect(100, 100, 500, 500); mEndBounds = new Rect(100, 100, 500, 500); mPipEnterAnimator = new PipEnterAnimator(mMockContext, mPipEnterAnimator = new PipEnterAnimator(mMockContext, new PipSurfaceTransactionHelper(mMockContext), mTestLeash, mPipSurfaceTransactionHelper, mTestLeash, mMockStartTransaction, mMockFinishTransaction, mMockStartTransaction, mMockFinishTransaction, mEndBounds, mRotation); mEndBounds, mRotation); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); mPipEnterAnimator.setSurfaceControlTransactionFactory(mMockFactory); Loading @@ -212,10 +231,10 @@ public class PipEnterAnimatorTest { eq(mMockAnimateTransaction), anyFloat(), eq(fraction), eq(mEndBounds)); eq(mMockAnimateTransaction), anyFloat(), eq(fraction), eq(mEndBounds)); // Check corner and shadow radii were set // Check corner and shadow radii were set verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); .round(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); verify(mMockAnimateTransaction, atLeastOnce()) verify(mPipSurfaceTransactionHelper, atLeastOnce()) .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); .shadow(eq(mMockAnimateTransaction), eq(mTestLeash), eq(true)); } } // set up transaction chaining // set up transaction chaining Loading