Loading services/core/java/com/android/server/wm/TaskStack.java +14 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ import android.view.DisplayCutout; import android.view.DisplayInfo; import android.view.SurfaceControl; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.policy.DividerSnapAlgorithm; import com.android.internal.policy.DividerSnapAlgorithm.SnapTarget; import com.android.internal.policy.DockedDividerUtils; Loading Loading @@ -787,6 +788,14 @@ public class TaskStack extends WindowContainer<Task> implements return 0; } @Override void getRelativeDisplayedPosition(Point outPos) { super.getRelativeDisplayedPosition(outPos); final int outset = getStackOutset(); outPos.x -= outset; outPos.y -= outset; } private void updateSurfaceSize(SurfaceControl.Transaction transaction) { if (mSurfaceControl == null) { return; Loading @@ -807,6 +816,11 @@ public class TaskStack extends WindowContainer<Task> implements mLastSurfaceSize.set(width, height); } @VisibleForTesting Point getLastSurfaceSize() { return mLastSurfaceSize; } @Override void onDisplayChanged(DisplayContent dc) { if (mDisplayContent != null && mDisplayContent != dc) { Loading services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java +21 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ package com.android.server.wm; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; Loading Loading @@ -168,4 +171,22 @@ public class TaskStackTests extends WindowTestsBase { assertEquals(stack1PositionInParent, stack2PositionInParent + 1); assertTrue(task1.mOnDisplayChangedCalled); } @Test public void testStackOutset() { final TaskStack stack = createTaskStackOnDisplay(mDisplayContent); spyOn(stack); final int stackOutset = 10; doReturn(stackOutset).when(stack).getStackOutset(); final Rect stackBounds = new Rect(200, 200, 800, 1000); // Update surface position and size by the given bounds. stack.setBounds(stackBounds); assertEquals(stackBounds.width() + 2 * stackOutset, stack.getLastSurfaceSize().x); assertEquals(stackBounds.height() + 2 * stackOutset, stack.getLastSurfaceSize().y); assertEquals(stackBounds.left - stackOutset, stack.getLastSurfacePosition().x); assertEquals(stackBounds.top - stackOutset, stack.getLastSurfacePosition().y); } } Loading
services/core/java/com/android/server/wm/TaskStack.java +14 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ import android.view.DisplayCutout; import android.view.DisplayInfo; import android.view.SurfaceControl; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.policy.DividerSnapAlgorithm; import com.android.internal.policy.DividerSnapAlgorithm.SnapTarget; import com.android.internal.policy.DockedDividerUtils; Loading Loading @@ -787,6 +788,14 @@ public class TaskStack extends WindowContainer<Task> implements return 0; } @Override void getRelativeDisplayedPosition(Point outPos) { super.getRelativeDisplayedPosition(outPos); final int outset = getStackOutset(); outPos.x -= outset; outPos.y -= outset; } private void updateSurfaceSize(SurfaceControl.Transaction transaction) { if (mSurfaceControl == null) { return; Loading @@ -807,6 +816,11 @@ public class TaskStack extends WindowContainer<Task> implements mLastSurfaceSize.set(width, height); } @VisibleForTesting Point getLastSurfaceSize() { return mLastSurfaceSize; } @Override void onDisplayChanged(DisplayContent dc) { if (mDisplayContent != null && mDisplayContent != dc) { Loading
services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java +21 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ package com.android.server.wm; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; Loading Loading @@ -168,4 +171,22 @@ public class TaskStackTests extends WindowTestsBase { assertEquals(stack1PositionInParent, stack2PositionInParent + 1); assertTrue(task1.mOnDisplayChangedCalled); } @Test public void testStackOutset() { final TaskStack stack = createTaskStackOnDisplay(mDisplayContent); spyOn(stack); final int stackOutset = 10; doReturn(stackOutset).when(stack).getStackOutset(); final Rect stackBounds = new Rect(200, 200, 800, 1000); // Update surface position and size by the given bounds. stack.setBounds(stackBounds); assertEquals(stackBounds.width() + 2 * stackOutset, stack.getLastSurfaceSize().x); assertEquals(stackBounds.height() + 2 * stackOutset, stack.getLastSurfaceSize().y); assertEquals(stackBounds.left - stackOutset, stack.getLastSurfacePosition().x); assertEquals(stackBounds.top - stackOutset, stack.getLastSurfacePosition().y); } }