summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-10-16 20:24:49 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-10-16 20:24:49 +0000
commitecb82d9f35cc3f38a5689a02dc3cda67a98c593f (patch)
treecf6735c9c5cc5d13cde2caed43b50cf7f262ef90
parent6c47c99a0047786f2abcd1dbe0c3da835866b62e (diff)
parent706dbcbb6d406b38936cc3127c0c4074e5d368d0 (diff)
Merge "Pass in window layout when setting initial state."
-rw-r--r--services/core/java/com/android/server/am/ActivityStarter.java4
-rw-r--r--services/core/java/com/android/server/am/TaskLaunchParamsModifier.java20
-rw-r--r--services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java5
-rw-r--r--services/tests/servicestests/src/com/android/server/am/TaskLaunchParamsModifierTests.java21
4 files changed, 20 insertions, 30 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java
index c92e48fd5f1a..afcf9f98caa2 100644
--- a/services/core/java/com/android/server/am/ActivityStarter.java
+++ b/services/core/java/com/android/server/am/ActivityStarter.java
@@ -1606,8 +1606,8 @@ class ActivityStarter {
mLaunchParams.reset();
- mSupervisor.getLaunchParamsController().calculate(inTask, null /*layout*/, r, sourceRecord,
- options, mLaunchParams);
+ mSupervisor.getLaunchParamsController().calculate(inTask, r.info.windowLayout, r,
+ sourceRecord, options, mLaunchParams);
if (mLaunchParams.hasPreferredDisplay()) {
mPreferredDisplayId = mLaunchParams.mPreferredDisplayId;
diff --git a/services/core/java/com/android/server/am/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/am/TaskLaunchParamsModifier.java
index 7bd84e23af81..eae28127a67f 100644
--- a/services/core/java/com/android/server/am/TaskLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/am/TaskLaunchParamsModifier.java
@@ -131,16 +131,16 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier {
}
// STEP 2: Resolve launch windowing mode.
// STEP 2.1: Determine if any parameter has specified initial bounds. That might be the
- // launch bounds from activity options, or size/gravity passed in layout. It also treat the
+ // launch bounds from activity options, or size/gravity passed in layout. It also treats the
// launch windowing mode in options as a suggestion for future resolution.
int launchMode = options != null ? options.getLaunchWindowingMode()
: WINDOWING_MODE_UNDEFINED;
// hasInitialBounds is set if either activity options or layout has specified bounds. If
// that's set we'll skip some adjustments later to avoid overriding the initial bounds.
boolean hasInitialBounds = false;
- final boolean canApplyFreeformPolicy =
- canApplyFreeformWindowPolicy(display, root, launchMode);
- if (mSupervisor.canUseActivityOptionsLaunchBounds(options) && canApplyFreeformPolicy) {
+ final boolean canApplyFreeformPolicy = canApplyFreeformWindowPolicy(display, launchMode);
+ if (mSupervisor.canUseActivityOptionsLaunchBounds(options)
+ && (canApplyFreeformPolicy || canApplyPipWindowPolicy(launchMode))) {
hasInitialBounds = true;
launchMode = launchMode == WINDOWING_MODE_UNDEFINED
? WINDOWING_MODE_FREEFORM
@@ -279,10 +279,14 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier {
return displayId;
}
- private boolean canApplyFreeformWindowPolicy(@NonNull ActivityDisplay display,
- @NonNull ActivityRecord root, int launchMode) {
- return display.inFreeformWindowingMode() || launchMode == WINDOWING_MODE_FREEFORM
- || root.isResizeable();
+ private boolean canApplyFreeformWindowPolicy(@NonNull ActivityDisplay display, int launchMode) {
+ return mSupervisor.mService.mSupportsFreeformWindowManagement
+ && (display.inFreeformWindowingMode() || launchMode == WINDOWING_MODE_FREEFORM);
+ }
+
+ private boolean canApplyPipWindowPolicy(int launchMode) {
+ return mSupervisor.mService.mSupportsPictureInPicture
+ && launchMode == WINDOWING_MODE_PINNED;
}
private void getLayoutBounds(@NonNull ActivityDisplay display, @NonNull ActivityRecord root,
diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java
index f143e3541cc0..062c044ac3e3 100644
--- a/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java
+++ b/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java
@@ -411,8 +411,9 @@ public class ActivityStarterTests extends ActivityTestsBase {
.setActivityOptions(new SafeActivityOptions(options))
.execute();
- // verify that values are passed to the modifier.
- verify(modifier, times(1)).onCalculate(any(), eq(windowLayout), any(), any(), eq(options),
+ // verify that values are passed to the modifier. Values are passed twice -- once for
+ // setting initial state, another when task is created.
+ verify(modifier, times(2)).onCalculate(any(), eq(windowLayout), any(), any(), eq(options),
any(), any());
}
diff --git a/services/tests/servicestests/src/com/android/server/am/TaskLaunchParamsModifierTests.java b/services/tests/servicestests/src/com/android/server/am/TaskLaunchParamsModifierTests.java
index 0d1302f78316..ea1320ce3b83 100644
--- a/services/tests/servicestests/src/com/android/server/am/TaskLaunchParamsModifierTests.java
+++ b/services/tests/servicestests/src/com/android/server/am/TaskLaunchParamsModifierTests.java
@@ -189,7 +189,7 @@ public class TaskLaunchParamsModifierTests extends ActivityTestsBase {
assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null,
mActivity, /* source */ null, options, mCurrent, mResult));
- assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode,
+ assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode,
WINDOWING_MODE_FULLSCREEN);
}
@@ -277,7 +277,7 @@ public class TaskLaunchParamsModifierTests extends ActivityTestsBase {
}
@Test
- public void testNonEmptyLayoutInfersFreeformWithResizeableActivity() {
+ public void testNonEmptyLayoutUsesFullscreenWithResizeableActivity() {
final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder()
.setWidth(120).setHeight(80).build();
@@ -286,7 +286,7 @@ public class TaskLaunchParamsModifierTests extends ActivityTestsBase {
assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity,
/* source */ null, /* options */ null, mCurrent, mResult));
- assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode,
+ assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode,
WINDOWING_MODE_FULLSCREEN);
}
@@ -713,21 +713,6 @@ public class TaskLaunchParamsModifierTests extends ActivityTestsBase {
}
@Test
- public void testNonEmptyLayoutBoundsWithResizeableActivity() {
- final ActivityDisplay display = mSupervisor.getActivityDisplay(DEFAULT_DISPLAY);
- display.setBounds(new Rect(0, 0, 1920, 1080));
- final ActivityInfo.WindowLayout layout = new WindowLayoutBuilder()
- .setWidth(120).setHeight(80).build();
-
- mCurrent.mPreferredDisplayId = DEFAULT_DISPLAY;
-
- assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, layout, mActivity,
- /* source */ null, /* options */ null, mCurrent, mResult));
-
- assertEquals(new Rect(900, 500, 1020, 580), mResult.mBounds);
- }
-
- @Test
public void testRespectBoundsFromFullyResolvedCurrentParam_NonEmptyBounds() {
final TestActivityDisplay freeformDisplay = createNewActivityDisplay(
WINDOWING_MODE_FREEFORM);