From a50e0e791df6f1d4632a00acbd6c95ff8a312046 Mon Sep 17 00:00:00 2001 From: "jorgegil@google.com" Date: Mon, 19 Apr 2021 10:11:17 -0700 Subject: [PATCH] Add tests for PIP exclusion bounds updates Bug: 176302696 Test: atest PipTaskOrganizerTest && atest PipBoundsStateTest Change-Id: I7de14865cc944d35452dedc054ad917afd2ecb18 --- .../wm/shell/pip/PipBoundsStateTest.java | 18 ++++++++++++++++++ .../wm/shell/pip/PipTaskOrganizerTest.java | 12 ++++++++++++ 2 files changed, 30 insertions(+) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java index dea24d3c2ec0b..a6215d3347a83 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java @@ -38,6 +38,8 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import java.util.function.Consumer; + /** * Tests for {@link PipBoundsState}. */ @@ -178,4 +180,20 @@ public class PipBoundsStateTest extends ShellTestCase { mPipBoundsState.setOverrideMinSize(new Size(15, 10)); assertEquals(10, mPipBoundsState.getOverrideMinEdgeSize()); } + + @Test + public void testSetBounds_updatesPipExclusionBounds() { + final Consumer callback = mock(Consumer.class); + final Rect currentBounds = new Rect(10, 10, 20, 15); + final Rect newBounds = new Rect(50, 50, 100, 75); + mPipBoundsState.setBounds(currentBounds); + + mPipBoundsState.setPipExclusionBoundsChangeCallback(callback); + // Setting the listener immediately calls back with the current bounds. + verify(callback).accept(currentBounds); + + mPipBoundsState.setBounds(newBounds); + // Updating the bounds makes the listener call back back with the new rect. + verify(callback).accept(newBounds); + } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java index d687e8d76d911..e6143f2456eda 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java @@ -19,6 +19,7 @@ package com.android.wm.shell.pip; import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_TO_PIP; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; @@ -31,6 +32,7 @@ import android.app.ActivityManager; import android.app.PictureInPictureParams; import android.content.ComponentName; import android.content.pm.ActivityInfo; +import android.graphics.Rect; import android.os.RemoteException; import android.test.suitebuilder.annotation.SmallTest; import android.testing.AndroidTestingRunner; @@ -221,6 +223,16 @@ public class PipTaskOrganizerTest extends ShellTestCase { assertEquals(minSize, mPipBoundsState.getOverrideMinSize()); } + @Test + public void onTaskVanished_clearsPipBounds() { + mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, + createPipParams(null)), null /* leash */); + mPipBoundsState.setBounds(new Rect(100, 100, 200, 150)); + + mSpiedPipTaskOrganizer.onTaskVanished(createTaskInfo(mComponent1, createPipParams(null))); + assertTrue(mPipBoundsState.getBounds().isEmpty()); + } + private void preparePipTaskOrg() { final DisplayInfo info = new DisplayInfo(); mPipBoundsState.setDisplayLayout(new DisplayLayout(info,