From a6ac70eddfe243dd3739721eb7e5873c1ed6ee26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ciche=C5=84ski?= Date: Tue, 22 Mar 2022 17:34:30 +0000 Subject: [PATCH] Pass the keep clear areas to PipBoundsState. Bug: 183746978 Test: atest PipControllerTest Change-Id: Ic1cfe6e51298f172a09d3ab31dd599b7002e99b7 --- .../android/wm/shell/pip/phone/PipController.java | 11 ++++++++++- .../wm/shell/pip/phone/PipControllerTest.java | 12 ++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java index e86ebaaabbfe3..c744492a11d75 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java @@ -89,13 +89,14 @@ import com.android.wm.shell.transition.Transitions; import java.io.PrintWriter; import java.util.Optional; +import java.util.Set; import java.util.function.Consumer; /** * Manages the picture-in-picture (PIP) UI and states for Phones. */ public class PipController implements PipTransitionController.PipTransitionCallback, - RemoteCallable { + RemoteCallable, DisplayController.OnDisplaysChangedListener { private static final String TAG = "PipController"; private Context mContext; @@ -454,6 +455,14 @@ public class PipController implements PipTransitionController.PipTransitionCallb return mMainExecutor; } + @Override + public void onKeepClearAreasChanged(int displayId, Set restricted, + Set unrestricted) { + if (mPipBoundsState.getDisplayId() == displayId) { + mPipBoundsState.setKeepClearAreas(restricted, unrestricted); + } + } + private void onConfigurationChanged(Configuration newConfig) { mPipBoundsAlgorithm.onConfigurationChanged(mContext); mTouchHandler.onConfigurationChanged(); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java index 935f6695538de..af6e5d4c6f1aa 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java @@ -59,6 +59,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.Optional; +import java.util.Set; /** * Unit tests for {@link PipController} @@ -209,4 +210,15 @@ public class PipControllerTest extends ShellTestCase { verify(mMockPipMotionHelper, never()).movePip(any(Rect.class)); } + + @Test + public void onKeepClearAreasChanged_updatesPipBoundsState() { + final int displayId = 1; + final Rect keepClearArea = new Rect(0, 0, 10, 10); + when(mMockPipBoundsState.getDisplayId()).thenReturn(displayId); + + mPipController.onKeepClearAreasChanged(displayId, Set.of(keepClearArea), Set.of()); + + verify(mMockPipBoundsState).setKeepClearAreas(Set.of(keepClearArea), Set.of()); + } }