summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-08-25 19:03:35 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-08-25 19:03:35 +0000
commit71a02b2f555d1286f51de4beef1dc6a019c6f602 (patch)
tree106785ff61c6a09a3c4199062e6ca187eca56add
parent9e20d9db9fff9a9f7f5cf0d895a2b26af59da00a (diff)
parenta9800ce05db1b8f5e2ee8682e2b8a92f70187a77 (diff)
Merge changes I91673d51,I50bc9e06
* changes: Corrected typo in magnification spec crop calculation. Generate stack override config in AM vs. WM
-rw-r--r--core/java/android/app/ActivityManager.java32
-rw-r--r--core/java/android/app/WindowConfiguration.java5
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java20
-rw-r--r--services/core/java/com/android/server/am/PinnedActivityStack.java4
-rw-r--r--services/core/java/com/android/server/wm/ConfigurationContainer.java3
-rw-r--r--services/core/java/com/android/server/wm/PinnedStackWindowController.java4
-rw-r--r--services/core/java/com/android/server/wm/StackWindowController.java10
-rw-r--r--services/core/java/com/android/server/wm/TaskStack.java26
-rw-r--r--services/core/java/com/android/server/wm/WindowStateAnimator.java9
-rw-r--r--services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java8
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java3
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java5
13 files changed, 74 insertions, 57 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 1c1df432f5fc..b2f3add3b4bd 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -16,6 +16,12 @@
package android.app;
+import static android.app.WindowConfiguration.WINDOWING_MODE_DOCKED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
+
import android.Manifest;
import android.annotation.IntDef;
import android.annotation.NonNull;
@@ -852,6 +858,32 @@ public class ActivityManager {
|| stackId == ASSISTANT_STACK_ID
|| isDynamicStack(stackId);
}
+
+ /** Returns the windowing mode that should be used for this input stack id. */
+ // TODO: To be removed once we are not using stack id for stuff...
+ public static int getWindowingModeForStackId(int stackId) {
+ final int windowingMode;
+ switch (stackId) {
+ case FULLSCREEN_WORKSPACE_STACK_ID:
+ case HOME_STACK_ID:
+ case RECENTS_STACK_ID:
+ case ASSISTANT_STACK_ID:
+ windowingMode = WINDOWING_MODE_FULLSCREEN;
+ break;
+ case PINNED_STACK_ID:
+ windowingMode = WINDOWING_MODE_PINNED;
+ break;
+ case DOCKED_STACK_ID:
+ windowingMode = WINDOWING_MODE_DOCKED;
+ break;
+ case FREEFORM_WORKSPACE_STACK_ID:
+ windowingMode = WINDOWING_MODE_FREEFORM;
+ break;
+ default :
+ windowingMode = WINDOWING_MODE_UNDEFINED;
+ }
+ return windowingMode;
+ }
}
/**
diff --git a/core/java/android/app/WindowConfiguration.java b/core/java/android/app/WindowConfiguration.java
index d5d7107a6cc9..11922ec804aa 100644
--- a/core/java/android/app/WindowConfiguration.java
+++ b/core/java/android/app/WindowConfiguration.java
@@ -24,9 +24,6 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.view.DisplayInfo;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
/**
* Class that contains windowing configuration/state for other objects that contain windows directly
* or indirectly. E.g. Activities, Task, Displays, ...
@@ -65,7 +62,6 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu
WINDOWING_MODE_DOCKED,
WINDOWING_MODE_FREEFORM,
})
- @Retention(RetentionPolicy.SOURCE)
public @interface WindowingMode {}
/** Bit that indicates that the {@link #mAppBounds} changed. */
@@ -78,7 +74,6 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu
WINDOW_CONFIG_APP_BOUNDS,
WINDOW_CONFIG_WINDOWING_MODE,
})
- @Retention(RetentionPolicy.SOURCE)
public @interface WindowConfig {}
public WindowConfiguration() {
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 78a16794b8d4..3e141b6ce775 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -24,6 +24,8 @@ import static android.app.ActivityManager.StackId.HOME_STACK_ID;
import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
import static android.app.ActivityManager.StackId.RECENTS_STACK_ID;
+import static android.app.ActivityManager.StackId.getWindowingModeForStackId;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.content.pm.ActivityInfo.CONFIG_SCREEN_LAYOUT;
import static android.content.pm.ActivityInfo.FLAG_RESUME_WHILE_PAUSING;
import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS;
@@ -460,24 +462,32 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
mTaskPositioner = mStackId == FREEFORM_WORKSPACE_STACK_ID
? new LaunchingTaskPositioner() : null;
mTmpRect2.setEmpty();
- final Configuration overrideConfig = getOverrideConfiguration();
+ updateOverrideConfiguration();
mWindowContainerController = createStackWindowController(display.mDisplayId, onTop,
- mTmpRect2, overrideConfig);
- onOverrideConfigurationChanged(overrideConfig);
+ mTmpRect2, getOverrideConfiguration());
mStackSupervisor.mStacks.put(mStackId, this);
postAddToDisplay(display, mTmpRect2.isEmpty() ? null : mTmpRect2, onTop);
}
T createStackWindowController(int displayId, boolean onTop, Rect outBounds,
- Configuration outOverrideConfig) {
+ Configuration overrideConfig) {
return (T) new StackWindowController(mStackId, this, displayId, onTop, outBounds,
- outOverrideConfig);
+ overrideConfig);
}
T getWindowContainerController() {
return mWindowContainerController;
}
+ // TODO: Not needed once we are no longer using stack ids as the override config. can be passed
+ // in.
+ private void updateOverrideConfiguration() {
+ final int windowingMode = getWindowingModeForStackId(mStackId);
+ if (windowingMode != WINDOWING_MODE_UNDEFINED) {
+ setWindowingMode(windowingMode);
+ }
+ }
+
/** Adds the stack to specified display and calls WindowManager to do the same. */
void reparent(ActivityStackSupervisor.ActivityDisplay activityDisplay, boolean onTop) {
removeFromDisplay();
diff --git a/services/core/java/com/android/server/am/PinnedActivityStack.java b/services/core/java/com/android/server/am/PinnedActivityStack.java
index c825b314e69e..a1b95f9de05a 100644
--- a/services/core/java/com/android/server/am/PinnedActivityStack.java
+++ b/services/core/java/com/android/server/am/PinnedActivityStack.java
@@ -39,9 +39,9 @@ class PinnedActivityStack extends ActivityStack<PinnedStackWindowController>
@Override
PinnedStackWindowController createStackWindowController(int displayId, boolean onTop,
- Rect outBounds, Configuration outOverrideConfig) {
+ Rect outBounds, Configuration overrideConfig) {
return new PinnedStackWindowController(mStackId, this, displayId, onTop, outBounds,
- outOverrideConfig);
+ overrideConfig);
}
Rect getDefaultPictureInPictureBounds(float aspectRatio) {
diff --git a/services/core/java/com/android/server/wm/ConfigurationContainer.java b/services/core/java/com/android/server/wm/ConfigurationContainer.java
index 1d3f19857ac0..a682a1e64d67 100644
--- a/services/core/java/com/android/server/wm/ConfigurationContainer.java
+++ b/services/core/java/com/android/server/wm/ConfigurationContainer.java
@@ -120,8 +120,7 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> {
}
/** Sets the windowing mode for the configuration container. */
- void setWindowingMode(/*@WindowConfiguration.WindowingMode TODO: causes build error...why?*/
- int windowingMode) {
+ public void setWindowingMode(@WindowConfiguration.WindowingMode int windowingMode) {
mOverrideConfiguration.windowConfiguration.setWindowingMode(windowingMode);
onOverrideConfigurationChanged(mOverrideConfiguration);
}
diff --git a/services/core/java/com/android/server/wm/PinnedStackWindowController.java b/services/core/java/com/android/server/wm/PinnedStackWindowController.java
index 3f81b389b31c..135f4000dd81 100644
--- a/services/core/java/com/android/server/wm/PinnedStackWindowController.java
+++ b/services/core/java/com/android/server/wm/PinnedStackWindowController.java
@@ -40,8 +40,8 @@ public class PinnedStackWindowController extends StackWindowController {
private Rect mTmpToBounds = new Rect();
public PinnedStackWindowController(int stackId, PinnedStackWindowListener listener,
- int displayId, boolean onTop, Rect outBounds, Configuration outOverrideConfig) {
- super(stackId, listener, displayId, onTop, outBounds, outOverrideConfig,
+ int displayId, boolean onTop, Rect outBounds, Configuration overrideConfig) {
+ super(stackId, listener, displayId, onTop, outBounds, overrideConfig,
WindowManagerService.getInstance());
}
diff --git a/services/core/java/com/android/server/wm/StackWindowController.java b/services/core/java/com/android/server/wm/StackWindowController.java
index 3f6378a2ad24..aaacef5c5e57 100644
--- a/services/core/java/com/android/server/wm/StackWindowController.java
+++ b/services/core/java/com/android/server/wm/StackWindowController.java
@@ -58,14 +58,14 @@ public class StackWindowController
private final Rect mTmpDisplayBounds = new Rect();
public StackWindowController(int stackId, StackWindowListener listener,
- int displayId, boolean onTop, Rect outBounds, Configuration outOverriderConfig) {
- this(stackId, listener, displayId, onTop, outBounds, outOverriderConfig,
+ int displayId, boolean onTop, Rect outBounds, Configuration overriderConfig) {
+ this(stackId, listener, displayId, onTop, outBounds, overriderConfig,
WindowManagerService.getInstance());
}
@VisibleForTesting
public StackWindowController(int stackId, StackWindowListener listener,
- int displayId, boolean onTop, Rect outBounds, Configuration outOverrideConfig,
+ int displayId, boolean onTop, Rect outBounds, Configuration overrideConfig,
WindowManagerService service) {
super(listener, service);
mStackId = stackId;
@@ -79,9 +79,11 @@ public class StackWindowController
}
final TaskStack stack = dc.addStackToDisplay(stackId, onTop);
+ if (overrideConfig != null) {
+ stack.onOverrideConfigurationChanged(overrideConfig);
+ }
stack.setController(this);
getRawBounds(outBounds);
- outOverrideConfig.setTo(mContainer.getOverrideConfiguration());
}
}
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 8a4a49af1223..1a6e2c87e695 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -163,32 +163,6 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
mDockedStackMinimizeThickness = service.mContext.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.docked_stack_minimize_thickness);
EventLog.writeEvent(EventLogTags.WM_STACK_CREATED, stackId);
-
- // TODO: Remove once we are no longer using Stacks for windowing mode or grouping tasks.
- final int windowingMode;
- switch (stackId) {
- case FULLSCREEN_WORKSPACE_STACK_ID:
- case HOME_STACK_ID:
- case RECENTS_STACK_ID:
- case ASSISTANT_STACK_ID:
- windowingMode = WINDOWING_MODE_FULLSCREEN;
- break;
- case PINNED_STACK_ID:
- windowingMode = WINDOWING_MODE_PINNED;
- break;
- case DOCKED_STACK_ID:
- windowingMode = WINDOWING_MODE_DOCKED;
- break;
- case FREEFORM_WORKSPACE_STACK_ID:
- windowingMode = WINDOWING_MODE_FREEFORM;
- break;
- default :
- windowingMode = WINDOWING_MODE_UNDEFINED;
- }
-
- if (windowingMode != WINDOWING_MODE_UNDEFINED) {
- setWindowingMode(windowingMode);
- }
}
DisplayContent getDisplayContent() {
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index d0b6be6fa133..5f1e42ccb2e4 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -1164,11 +1164,10 @@ class WindowStateAnimator {
transform.postScale(spec.scale, spec.scale);
transform.postTranslate(-spec.offsetX, -spec.offsetY);
transform.mapRect(finalCrop);
- finalClipRect.top = (int)finalCrop.top;
- finalClipRect.left = (int)finalCrop.left;
- // TODO: Are the assignments below a mistake?
- finalClipRect.right = (int)finalClipRect.right;
- finalClipRect.bottom = (int)finalClipRect.bottom;
+ finalClipRect.top = (int) finalCrop.top;
+ finalClipRect.left = (int) finalCrop.left;
+ finalClipRect.right = (int) finalCrop.right;
+ finalClipRect.bottom = (int) finalCrop.bottom;
}
return true;
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 f64de001371d..55a1c2a0e837 100644
--- a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java
+++ b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java
@@ -272,7 +272,7 @@ public class ActivityTestsBase {
@Override
protected T createStackWindowController(int displayId, boolean onTop, Rect outBounds,
- Configuration outOverrideConfig) {
+ Configuration overrideConfig) {
mContainerController = (T) WindowTestUtils.createMockStackWindowContainerController();
return mContainerController;
}
diff --git a/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java b/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java
index efe766771673..52f66ae40cf3 100644
--- a/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java
@@ -29,6 +29,7 @@ import android.platform.test.annotations.Presubmit;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
+import static android.app.ActivityManager.StackId.getWindowingModeForStackId;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -51,9 +52,12 @@ public class TaskStackContainersTests extends WindowTestsBase {
@Before
public void setUp() throws Exception {
super.setUp();
+ final Configuration overrideConfig = new Configuration();
+ overrideConfig.windowConfiguration.setWindowingMode(
+ getWindowingModeForStackId(PINNED_STACK_ID));
mPinnedStack = new StackWindowController(PINNED_STACK_ID, null,
- mDisplayContent.getDisplayId(), true /* onTop */, new Rect(), new Configuration(),
- sWm).mContainer;
+ mDisplayContent.getDisplayId(), true /* onTop */, new Rect(),
+ overrideConfig, sWm).mContainer;
// Stack should contain visible app window to be considered visible.
final Task pinnedTask = createTaskInStack(mPinnedStack, 0 /* userId */);
diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java
index bd0e0dfb4900..a1ff2d7f9267 100644
--- a/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java
@@ -197,8 +197,7 @@ public class WindowConfigurationTests extends WindowTestsBase {
false /*overrideHeight*/, mDisplayInfo.logicalDensityDpi, config, parentConfig);
// Assert that both expected and actual are null or are equal to each other
- assertTrue((expectedConfigBounds == null && winConfig.getAppBounds() == null)
- || expectedConfigBounds.equals(winConfig.getAppBounds()));
+ assertEquals(expectedConfigBounds, winConfig.getAppBounds());
}
}
diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java
index eb8cf9160d5b..bce740bce669 100644
--- a/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java
+++ b/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import static android.app.ActivityManager.StackId.getWindowingModeForStackId;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.View.VISIBLE;
@@ -238,8 +239,10 @@ class WindowTestsBase {
StackWindowController createStackControllerOnStackOnDisplay(int stackId,
DisplayContent dc) {
+ final Configuration overrideConfig = new Configuration();
+ overrideConfig.windowConfiguration.setWindowingMode(getWindowingModeForStackId(stackId));
return new StackWindowController(stackId, null, dc.getDisplayId(),
- true /* onTop */, new Rect(), new Configuration(), sWm);
+ true /* onTop */, new Rect(), overrideConfig, sWm);
}
/** Creates a {@link Task} and adds it to the specified {@link TaskStack}. */