Consolidate updating bounds in ActivityStarter.
ActivityStarter updates the bounds of the host stack or task in
multiple places. This changelist consolidates this duplicated logic
into a single place and adds tests to ensure the expected behavior.
This change also makes ActivityStack create its controller using the
same WindowManagerService instance as its ActivityStackSupervisor.
Fixes: 67091889
Bug: 64144308
Test: bit FrameworksServicesTests:com.android.server.am.ActivityStarterTests
Change-Id: Ibaa8f7966bbeb190723caab0d2788c79cf848f04
diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java
index b4bfa62..1f6dda1 100644
--- a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java
+++ b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java
@@ -22,6 +22,7 @@
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.spy;
import org.mockito.invocation.InvocationOnMock;
@@ -38,8 +39,8 @@
import android.support.test.InstrumentationRegistry;
import com.android.server.AttributeCache;
import com.android.server.wm.AppWindowContainerController;
+import com.android.server.wm.PinnedStackWindowController;
import com.android.server.wm.StackWindowController;
-
import com.android.server.wm.TaskWindowContainerController;
import com.android.server.wm.WindowManagerService;
import com.android.server.wm.WindowTestUtils;
@@ -71,8 +72,8 @@
}
protected ActivityManagerService createActivityManagerService() {
- final ActivityManagerService service = new TestActivityManagerService(mContext);
- service.mWindowManager = WindowTestUtils.getMockWindowManagerService();
+ final ActivityManagerService service = spy(new TestActivityManagerService(mContext));
+ service.mWindowManager = prepareMockWindowManager();
return service;
}
@@ -237,6 +238,12 @@
Rect getDefaultPictureInPictureBounds(float aspectRatio) {
return new Rect(50, 50, 100, 100);
}
+
+ @Override
+ PinnedStackWindowController createStackWindowController(int displayId,
+ boolean onTop, Rect outBounds) {
+ return mock(PinnedStackWindowController.class);
+ }
};
} else {
return (T) new TestActivityStack(
@@ -246,7 +253,7 @@
}
private static WindowManagerService prepareMockWindowManager() {
- final WindowManagerService service = mock(WindowManagerService.class);
+ final WindowManagerService service = WindowTestUtils.getMockWindowManagerService();
doAnswer((InvocationOnMock invocationOnMock) -> {
final Runnable runnable = invocationOnMock.<Runnable>getArgument(0);
@@ -264,7 +271,7 @@
}
/**
- * Override of {@link ActivityStack} that tracks test metrics, such as the number of times a
+ * Overrided of {@link ActivityStack} that tracks test metrics, such as the number of times a
* method is called. Note that its functionality depends on the implementations of the
* construction arguments.
*/