History log of /frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
48458e1d8b86ec067d921876fdf45e1ee725395b 06-Jun-2017 Wale Ogunwale <ogunwale@google.com> Fixed NPE in TaskStack.stepAppWindowAnimation

It is possible for an app token to be removed from the list if its last
window is removed. The problem was probably exposed by ag/2267916

Change-Id: Ie4f36dfd0977e8a47b987e47a6ca97889bd3ef27
Fixes: 62368998
Test: go/wm-smoke
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ef4e38f96fa696e92629e87edaabad151e5248f8 25-May-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Ensure that windows are drawn before starting transition into PiP." into oc-dev
e7ba686f63682246d2e2d856208d23e23c801079 24-May-2017 Winson Chung <winsonc@google.com> Ensure that windows are drawn before starting transition into PiP.

- Building upon ag/2125930, we ensure that all windows are drawn before
starting the enter PiP animation.

Bug: 37420370
Test: bit FrameworksServicesTests:com.android.server.wm.BoundsAnimationControllerTests
Test: android.server.cts.ActivityManagerPinnedStackTests

Change-Id: I73fb71681f62bbc684efedbd3d40c3e1a670db46
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
f7fb5e39882eb73ec46c21cfcd088a350fd5a99b 24-May-2017 Winson Chung <winsonc@google.com> Fixing crash when checking for home task resizeability.

- If there is no home task, assume non-resizeable until user goes
home.

Bug: 62033711
Test: Reboot phone, launch settings from QS, dock and ensure no
crash. Go home and ensure that launcher is still resizeable
and bounds are correct.

Change-Id: Id7ccd6f54cc4dc248f90a1acb54509713c69b11b
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
18f622f08ce84bfb1a6cf19bca33d3ef0ad4aca9 08-May-2017 Robert Carr <racarr@google.com> Preserve non-floating state when entering pinned stack.

When transitioning between the fullscreen and pinned states
we often have a situation where we go from having a navigation and
status bar in the window to not. We'd like to use the source bounds
animation to crop these out rather than a sudden jump or scaling
but in order to do so we need to ensure they last until the end
of the animation. We track this state, and return the appropriate
value from isFloating. Furthermore, we add support to the bounds
animation to use the content frame as a source bounds when there
is no source bounds present, this means that we can crop out the
navigation and status bar so they will be invisible by the end of
the animation.

Bug: 37531386
Test: Manual
Change-Id: I72c549e3a3318534428d17b68ebee5832c32e6d7
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
649c160cb4d89efa806ea8dfe89892259ced967c 24-Apr-2017 Wale Ogunwale <ogunwale@google.com> Don't specify stack bounds for unsizeable home stack in dock mode

Doing so will put the stack in multi-window mode which means it
can't affect the device orientation which can cause the app to
to put in a configuration it doesn't support when in split-screen
multi-window mode.

Test: manual
Change-Id: I9f08187d8880c8f2b486f477123342a9a2f7effc
Fixes: 37334914
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ecc06b32305ac234db24e3f76bcae0199b80c395 18-Apr-2017 Robert Carr <racarr@google.com> Delay PiP transition to fullscreen until activities draw.

To avoid awful stretching.

Bug: 37473110
Test: Transition app fullscreen verify no awful video stretching.
Change-Id: I810a72207e45b8f83a63c9f0b3cc9a433569852c
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
8bca9e47c17c86a3092d5384b14713c5b50dd78c 17-Apr-2017 Winson Chung <winsonc@google.com> Schedule PIP mode changes at the beginning/end of the transitions.

- When transitioning from fullscreen to PiP, ensure all PiP/MW/Config
changes come after the transition completes, and inversely, from PiP to
fullscreen, ensure that all changes come before the transition up starts
- Add a series of tests to verify the callback state when the animation
is canceled
- Also fixes an issue where the surface is preserved when we don't want

Bug: 37169080
Bug: 37103000
Test: bit FrameworksServicesTests:com.android.server.wm.BoundsAnimationControllerTests
Test: android.server.cts.ActivityManagerPinnedStackTests
Change-Id: I6425c95df358358ed76d9cc8a130606c2124062e
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
40a5f935acea488086ea1b6df7d5d09e74ea518f 14-Apr-2017 Winson Chung <winsonc@google.com> Fixing animating bounds regression.

- Prior to ag/1954388, we used getAnimatingBounds() to get the final target
bounds if animating or the current otherwise, but since we needed the
target bounds to calculate the window scale even after the animation
completes, the clearing of mBoundsAnimationTarget was removed.

This inadvertently broke the check in getAnimatingBounds() from ever
returning the current bounds (as it's never empty)! This CL fixes the
issue, and renames the related methods to better reflect what they are
doing going forward.

This caused a regression when calculating and notifying SysUI of the
movement bounds, which was never the current bounds, but the default
bounds. Leading the IME change to trigger the PIP to move down.

Bug: 37242422
Test: android.server.cts.ActivityManagerPinnedStackTests
Test: Source hint rect animation still works

Change-Id: I532b0928ebfeaf95e9754a0254306af6fbb35833
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
19953caad316a6afc6446bb268bdc062a3f5ab90 11-Apr-2017 Winson Chung <winsonc@google.com> Tightening up rotation behavior for PIP (2/3)

- Change BoundsAnimationController to be more consistent:
1) Ensure that on animation end is always called even when cancelled to
ensure animation start/end parity in the callbacks
2) Ensure that setPinnedStackSize() is only called between start/end
3) Prevent calling setPinnedStackSize() to the final bounds if the
animation is cancelled
- With that, we add a flag to cancel the current bounds animation when a
rotation happens while the bounds are animating. In addition, we also
add a check from AM to WM before applying the resize during the animation
in the case where WM sends the bounds to AM, but AM lock is held while
updating the exact stack bounds (once that finishes the old stale bounds
would have been applied)
- In addition, we can then move the handling of the of the rotation to the
config change update in WM, if we handle it before the other checks.

Bug: 36879891
Test: android.server.cts.ActivityManagerPinnedStackTests
Change-Id: I62c6df8b349971cc82a7898ae8b26834723faec5
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
3a68287c6cbb5327f824515fa128117300806fac 10-Apr-2017 Winson Chung <winsonc@google.com> Tightening up rotation behavior for PIP (1/3)

- Defer getting the default bounds until after the task has been reparented
to the pinned stack
- Also move pinned stack-related methods into pinned stack window
controller and listener

Bug: 36879891
Test: android.server.cts.ActivityManagerPinnedStackTests

Change-Id: Ib2bd81ad9e2a3829b556177010f39c7512ba35bf
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
34ecbaa9910685012e7688bd9cf92a6163d1e0c2 03-Apr-2017 Winson Chung <winsonc@google.com> Merge "Ensuring multi-window callbacks contain new configuration and are in order" into oc-dev
5af42fc3052ecaf35c937278a986143a65f6ce5f 25-Mar-2017 Winson Chung <winsonc@google.com> Ensuring multi-window callbacks contain new configuration and are in order

- This CL has two main changes:
1) It modifies the activity multi-window and picture-in-picture mode
changed callbacks to provide the configuration of the activity with
the mode applied.
2) It modifies the order in which the multi-window and picture-in-picture
mode callbacks are made, to ensure that when going in and out of
picture-in-picture: first PiP, then MW, and then the config change.
- Previously, the ordering of the two callbacks was inconsistent. When
calling moveActivityToPinnedStack(), we reparent the task into the pinned
stack (triggering the picture-in-picture mode change), followed by the
resize animation (causes configuration changes). Inversely, when we
expand the task to fullscreen (and not just remove it), we run the
animation first, which resizes the task to the final size (causes
configuration changes) then reparent after the animation completes
(triggering the picture-in-picture mode change).

In this CL, we ensure that for both the transition in and out of PiP, we
defer to the bounds animation to trigger the PiP mode change. Normal
calls to reparent or adding a new task are unchanged. When the PiP
mode change is called from the animation, it provides the final target
bounds which we use to calculate the target configuration of the activity
for the callback. If the bounds animation is interrupted, an update will
also be scheduled if we change the fullscreen state we are animating to.

To work around the issue where we are scheduling MW/PiP mode changes in
both the animation and the configuration change, we also now keep track
of each state internally in the ActivityRecord.

Bug: 36099777
Test: android.server.cts.ActivityManagerPinnedStackTests
Test: #testConfigurationChangeOrderDuringTransition

Change-Id: I03513bc3a4d4a72c250983f22f079ce9d7a2cb40
Signed-off-by: Winson Chung <winsonc@google.com>
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
a2249ac4e0a516f169ea6a79683623d548e989f9 31-Mar-2017 Winson Chung <winsonc@google.com> Fixing rotation issues.

- Ensuring that we can update the stack bounds of non-docked stacks upon
rotation while split screen is enabled (previously disabled)
- Fix issue where subsequent bounds calculations were using the animation
target bounds from the prior orientation

Bug: 36657966
Test: android.server.cts.ActivityManagerPinnedStackTests
Change-Id: I810e35f907721ef5c781b914adac3273ea8da5c8
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
08f81890bc70a0c8f4d25817a1dd0c93f8927e78 03-Mar-2017 Winson Chung <winsonc@google.com> Adding source bounds hint to support better PiP transition.

Bug: 35396882
Test: Start a transition with source bounds hint.
Change-Id: I4897242af84744bc05a093111a15ea52e49815e8
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
aa2b620cb76cb8a710c3c4500bc5f6975ddc7a84 10-Feb-2017 Matthew Ng <ngmatthew@google.com> Fixes minimized state to match task and stack bounds for cts test

Fixes minimized state for its task and stack bounds to always match
inline with the cts test that was failing.

This also fixes multiple state issues related to splitting home and
recents into different stacks when recents incorrectly reads home stack
bounds to determine bounds for recents.

Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test
CtsServicesHostTestCases
android.server.cts.ActivityManagerActivityVisibilityTests or
ActivityManagerDockedStackTests
Fixes: 35351074, 35145587
Change-Id: I6417a567e937c647818ff26dc08df463e6ef4257
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
85d3998aa39f412f269806114b3e6154ccbee73f 25-Feb-2017 Winson Chung <winsonc@google.com> Prevent PiP movement while the resize animation is running.

- This was causing numerous artifacts when the user starts touching while
transitioning into PiP where the move rects clobber the animating rect.

Bug: 35764922
Test: Try touching the PiP while it is entering or exiting PiP
Change-Id: I5a72b5bea694b01aab401d2bb78a493688a9c655
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
6d41026f1b3dc910c9d34ab89993a280dc9679cf 01-Mar-2017 Bryce Lee <brycelee@google.com> Clean up closing apps list when clearing anAppWindowToken's task.

Previously it was possible for an AppWindowToken to be removed while
on the closing apps list, used in transition animations. During these
transitions, the visibility of the token is modified. Since
visibility relies on the WindowContainer parent, a
NullPointerException would occur.

This changelist addresses the issue by making sure to remove any
AppWindowToken from this list when its task is set to null.

Change-Id: Id9234822b228f4658f04d42ac0fe7b49ded6f5a1
Fixes: 35352214
Test: manual (primarily code inspection)
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
b6c47cd1b443abcfcf4849a0209d4c729589ff67 01-Mar-2017 Robert Carr <racarr@google.com> Pinned animation: Avoid expensive defensive programming.

Sys-trace revealed contention here as the overwhelming
cause of missed frames during the animation (typically contention
with relayout). The checks aren't necessary, and there is a visible
gain from removing the contention here.

Bug: 35396882
Test: Manual
Change-Id: I5151c603ac445c7832c9c499b663e5b9ec54e9f4
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
47f2bf605f13eeccf3dbef8b797226262409b824 17-Feb-2017 Winson Chung <winsonc@google.com> Fix PiP being out of bounds when launched into forced orientation

- Ensure that we use the right bounds when calculating the post-rotation
bounds (it should always be the target bounds)
- Ensure that we update the controller when the task stack bounds change

Bug: 35402420
Test: android.server.cts.ActivityManagerPinnedStackTests
Test: #testEnterPipToOtherOrientation
Change-Id: Ie0e3fc6a93b4eb6250c60584e80afb029b3c599a
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
55893331fb3c23067ede1463fe06c7bb6519141c 18-Feb-2017 Winson Chung <winsonc@google.com> Ensure we use the fullscreen stack bounds when expanding PiP.

- When in split screen, the PiP needs to animate to the fullscreen stack
bounds when expanding.
- Created PinnedStackWindowController to house pinned-stack specific
logic.

Bug: 35396882
Test: Expand PiP activity while split

Change-Id: If7397843743ce11b676f5566eba90e3442289fec
Signed-off-by: Winson Chung <winsonc@google.com>
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
2d8f7e80beb0c4762faca9d37539524377da43c2 21-Feb-2017 Rob Carr <racarr@google.com> Merge changes I670fe942,I87eaf866,I4a729457

* changes:
Pinned stack animation: Fix inset logic.
Pinned stack animation: Trigger window preservation when dropping shadows.
Pinned stack animation: Prevent window preservation during animation.
7e4c90e5441e344a1e2b58f46f5785db8409d609 16-Feb-2017 Robert Carr <racarr@google.com> Pinned stack animation: Fix inset logic.

When animating to the fullscreen size, we need
to immediately report insets as if we were fullscreen so that
the app will draw its content in the appropriate aspect ratio
depending on whether or not it plans to paint behind the insets.
Two things were preventing this, first the pinned stack is
skipped for temp task inset calculation, and second we were
passing null as the temp inset bounds.

Bug: 35396882
Test: Move skeleton pinned app to fullscreen. Verify no aspect jump at end.
Change-Id: I670fe9423fbde45d55b95801c6dcbad97b0280d1
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
8f0a3ad8c7ee6495eba8c0b6ddae42ca48403f56 16-Feb-2017 Robert Carr <racarr@google.com> Pinned stack animation: Prevent window preservation during animation.

When moving to the fullscreen stack, we were triggering the
resized while not drag resizing logic, causing a window preservation
in the middle of the animation.

Bug: 35396882
Test: Move skeleton pinned app between states. Verify no freezes or size jumps during animation.
Change-Id: I4a72945742241b3a039b997a8da6aba89e935346
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
bdc646f5d514259d9aae975bac64363947db0d32 13-Feb-2017 Winson Chung <winsonc@google.com> Reducing number of configuration changes during PiP transition.

- Fixes issue with the incorrect calculation of configuration smallest
width for floating and always-fullscreen stacks. Fullscreen stacks
now have the smallest width matching the display, and floating stacks
are set to the smallest size of their bounds.
- This CL also ensures that we test the combined global/override configs
for changes in case changes when moving between stacks results in a
shift in the configuration between the parent to the override of the
child (ie. when going from fullscreen -> pinned)
- Also ensure that we are animating to the right fullscreen bounds for
the PiP transition, accounting for the insets when calculating the config
change the same way we would do for fullscreen tasks.

Bug: 33779483
Test: android.server.cts.ActivityManagerConfigChangeTests passes
Test: android.server.cts.ActivityManagerPinnedStackTests
Test: #testSingleConfigurationChangeDuringTransition
Change-Id: I2c2b695572cd17087d522cf6c8ebd105e57e08b8
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
fa378d84a2ee574782a2185abad0bc72d5dd22c8 14-Feb-2017 Bryce Lee <brycelee@google.com> Do not use docked stack bounds unless all conditions are met.

TaskStack currently refers to the DockedStackDividerControler to
calculate the docked stack. However, only a partial set of the
conditions when this is valid were mirrored. The code now checks the
base condition (that we are dealing with the docked stack) and then
checks a null value before applying. Null is passed back from the
controller in the case all conditions are not met.

Change-Id: I388c2eb0b8b9312cd9ee6380ace1837e2eca8450
Fixes: 35233502
Test: manual from bug repro steps.
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
2a82fe587b850061ace024d2025047554987c10d 02-Feb-2017 Winson Chung <winsonc@google.com> Refactor PiP logic in preparation for expanded state.

- #1: Move logic for handling IME size changes into SysUI, and only rely
on PinnedStackController to provide bounds when first entering
PiP and on rotation
- #2: Doing #1 allows us to move PipMotionHelper to SysUI completely, which
lets us aggregate the animation calls out of PipTouchHandler
- #3: Add proper callbacks to the listeners when the movement bounds
changed from config change, ime change, or aspect ratio change. This
allows SysUI to calculate the associated movement bounds for the
expanded state, and we can then remove the corresponding WM call.
It also means that SysUI is the only thing that needs to know about
the expanded state.
- #4: Fix issue where TV was getting the default bounds, not taking the
aspect ratio when the PiP was entered into account. Doing #3
allows us to report the right bounds.
- #5: Remove dead code related to edge snapping/minimizing now that they
are on by default and associated tuner setting, and controller
callbacks

Test: android.server.cts.ActivityManagerPinnedStackTests (all existing tests pass)

Change-Id: I3ef361bdf8d44094b4c0a11c70ba4db7d697fdec
Signed-off-by: Winson Chung <winsonc@google.com>
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
069bbd382898d3330d284912b3a472495045c363 03-Feb-2017 Wale Ogunwale <ogunwale@google.com> Removed android.R.attr#onTopLauncher

The product that the feature was intended for never launched, so
removing the complexity from the code base.

Test: builds
Change-Id: I75e60ee2da46f6012f03a6077f77bc6b9acecad5
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
fd4c9891f332292e3116b913b2a0c5e8e2273c43 01-Feb-2017 Robert Carr <racarr@google.com> Scale PiP to stack instead of crop.

When changing stacks the finalCrop or crop may not be set
so relying on either one for the scaling factor is error prone.
Just scale to the stack size. I initially avoided this because I
thought some of the crop code may be relevant in computing the size
we wan't...but I'm now pretty sure it won't.

Test: Expand PiP back to fullscreen on phone, verify no crash.
Change-Id: I172daade74bec7374b5fd3310c1bf554e46d8832
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
e15352e516fb6ecde12866f0eb27c32470ddbded 21-Dec-2016 Matthew Ng <ngmatthew@google.com> Splitscreen for minimized state that works with resizable launchers

If a launcher is resizable, going to minimized mode (dock task and then
press home) would show a cropped height of the task at the top in a
minimized state and the fullscreen stack would show the home launcher
which takes the rest of the remaining height. If the launcher is not
resizable, it will default the original behavior.

To enable this in a launcher, add android:resizeableActivity="true" in
the AndroidManifest.xml in the <application/> tag.

Test: manual - rotating while minimized, minimizing using dragging task
or holding overview nav button, installing resizable launcher with a
non-resizable launcher
Fixes: 32504542
Change-Id: Idf4015b40f9bec81b70f146f0f2d7df8ccfb4cf0
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
1666e317dc1a17e9435246ec6c8209dbb6ee3696 16-Dec-2016 Wale Ogunwale <ogunwale@google.com> Added StackWindowContainerController

For linking ActivityStack in AMS to TaskStack window container in WMS.

Change-Id: I8b9eaef49e62854d59b22d27f80f5935a5a4d7fc
Bug: 30060889
Test: bit FrameworksServicesTests:com.android.server.wm.StackWindowContainerControllerTests
Test: bit FrameworksServicesTests:com.android.server.wm.TaskWindowContainerControllerTests
Test: Existing test pass and manual testing.
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
b4fb0ca6b5d81585cec726fe4e661cefe6071306 19-Jan-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Workaround for leaked dim layer."
f0a60a9c60d9973e10a859dd8c31b8f18adb5a0e 19-Jan-2017 Wale Ogunwale <ogunwale@google.com> Workaround for leaked dim layer.

Tasks are some how leaking their dim layer. The root cause of Task
not properly cleaning-up its dim layer in Task.removeImmediately()
hasn't being identified, but the CL will prevent user devices from
getting into a bad state until we figure-out the cause for the leak.

Note that when this occurs the task has been completely removed from
the system and the only reference left to it is for the dim layer...

Bug: 34395537
Test: This is a workaround until the real problem is identified.
Change-Id: Id8d45edb3b6858be82e4f057ae3da480da4f4b59
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
114aeea51677345daca89c392adaef84d4499bd9 10-Jan-2017 Winson Chung <winsonc@google.com> Ensure we account for insets in minimized state.

- When dragging slightly offscreen to minimize the PIP,
ensure that the bounds take the insets into account so
that the user can still interact with the PIP.

Test: Enter PIP in landscape, try to minimize it.

Change-Id: I093a37ba600722d44e50cc68dac77365a2ba062e
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
e1fe7fa288a34ecaaab390f49ef540edc4a6c52d 16-Dec-2016 Wale Ogunwale <ogunwale@google.com> Added TaskWindowContainerController

For linking TaskRecord in AMS to Task window container in WMS.

Bug: 30060889
Test: bit FrameworksServicesTests:com.android.server.wm.AppWindowContainerControllerTests
Test: bit FrameworksServicesTests:com.android.server.wm.TaskWindowContainerControllerTests
Test: Existing test pass and manual testing.
Change-Id: I16248f3e96e5087ba24198a48a3bd10a12ae76a6
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
d276563b38907647ce70940e1e90603826df6ab4 13-Dec-2016 Andrii Kulian <akulian@google.com> Add positionChildAt method to WindowContainer

Added method to change the position of a child among siblings.
It accepts int value, which can either specify a target position
or POSITION_TOP/POSITION_BOTTOM.
When child is moved to top or bottom, there is an option to also
perform same action on parents. This will effectively move the
entire branch of the hierarchy tree to top/bottom.

Test: bit FrameworksServicesTests:com.android.server.wm.WindowContainerTests
Test: #testPositionChildAt
Test: #testPositionChildAtIncludeParents
Test: #testPositionChildAtInvalid
Test: bit FrameworksServicesTests:com.android.server.wm.TaskStackContainersTests
Test: bit FrameworksServicesTests:com.android.server.wm.TaskStackTests
Change-Id: I6ade787487055f1c9a305afea64270c243196614
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
6213caa42d89cc446de4f8f9ba00630f166f23cc 02-Dec-2016 Wale Ogunwale <ogunwale@google.com> Revert "Revert "WindowList be gone!""

This reverts commit ffa5a9de0c127cb77ddec625fea101ddddb7ad32.

Bug: 33098800
Bug: 33098294
Test: Existing tests pass.
Change-Id: I5803a010c5a224dd1cf452a4a7beb3a4c0a043f4
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ae1ff4f85ffd12ab8a14c610b1474a012536888f 11-Nov-2016 Matthew Ng <ngmatthew@google.com> Split home stack into home and recents stack

Refactored functionality of home stack (HOME_STACK_ID) in the code
base to home stack and recents stack (RECENTS_STACK_ID). Also changed
function and variable names from homeStack to homeOrRecentsStack.

Differentiating home and recents stack will allow readablilty and
managing logic between home and recents stacks. For example, for
multi-window minimized dock state, the home and recents stacks can
be set to different rects where the home stack needs to be a fixed
large size while the recents stack is hidden and the dock stack is
animating to be minimized.

Fixes: 32839371
Test: ./run-test android.server.cts and manually tested split and
rotation
Change-Id: I7603359c2dc20e35924664178634eb761e0367a6
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
84a3834a0c23c4fee4f909f986ba6975a87c807b 09-Nov-2016 Winson Chung <winsonc@google.com> Adding API for apps to specify their aspect ratio when entering PIP.

Test: android.server.cts.ActivityManagerPinnedStackTests
Test: #testEnterPipAspectRatio
Test: #testEnterPipExtremeAspectRatios

Change-Id: I9efba942b9a6451dec07428fe1e428ef4a896867
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
839def9b549b6279aabd4150b304999e58d15762 02-Nov-2016 Andrii Kulian <akulian@google.com> Add shell command to move activity stacks between displays

Also rename "stack movetask" command to be consistent with other
shell commands.

Test: New CTS tests coming soon.
Change-Id: I3d7e04e0ae8ea76c27c3e4c1e286d5cd4539870c
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
4cd3e8c0a9a68df78ae6b8b472912ff2f5cf02a8 02-Nov-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Fixing issue with PIP while IME is showing."
14fefc26d337ac23b6ae8cf0511f94239e1dd875 02-Nov-2016 Winson Chung <winsonc@google.com> Fixing issue with PIP while IME is showing.

- Unifying logic to ensure that the PIP is moved consistently as its
movement bounds are shifted. This is done by adding a snap fraction
which is a fraction relative to one set of movement bounds, and applied
to a new movement bounds. This is flexible to work with all of the
current snap modes being tested.
- Fixing issue where you can drag out of bounds when touching the PIP
before the IME shows.

Test: android.server.cts.ActivityManagerPinnedStackTests
Test: #testPinnedStackOffsetForIME
Change-Id: Ie68c1ca599f6196726b8224585974a0972b93701
Signed-off-by: Winson Chung <winsonc@google.com>
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
fe762344f4475a3a336bb46aef2d59c1fabf32ab 13-Oct-2016 Jorim Jaggi <jjaggi@google.com> The big keyguard transition refactor (1/n)

The heart of this change are two things:
1) Instead of using the force hide mechanism to hide windows behind
Keyguard, we actually make the activities invisible in activity manager.
2) When Keyguard is going away, we change the visibilities in activity
manager and run an app transition.

At the very core we move the responsibility of hiding activities to
ActivityStack, which checks whether Keyguard is showing, and then
hides all non-show-when-locked activities. For that, we need to check
whether any window of an activity has SHOW_WHEN_LOCKED set. We
introduce a callback from WM -> AM in case these Keyguard flags have
changed.

Furthermore, we decide whether to occlude Keyguard in KeyguardController,
which just checks whether the top activity has SHOW_WHEN_LOCKED set. When
this state changes, we prepare an occlude/unocclude app transition, and
in PWM we just inform the Keyguard about the animation so SysUI can play
along this animations in a mostly synchronized manner.

Since we now use an app transition when unlocking the phone, we get
lockscreen launch animations for free - window manager automatically
waits until the activity is drawn, or directly executes the transition
if there is nothing to animate. Thus, we can remove all the infrastructure
around "waitingForActivityDrawn".

The logic to show/hide non-app windows is moved to policy, and we add the
ability to run animations on non-app windows when executing an app
transition.

Test:
1) runtest frameworks-services -c com.android.server.wm.AppTransitionTests
2) Manually test unlocking Keyguard:
2a) Without security
2b) With security
2c) With security but trusted
2d) Portrait while activity behind is in landscape
3) Test launching things from Keyguard
3a) Without security
3b) With security
3c) Launch camera without security
3d) Launch camera with security
3e) Launch camera with securtiy and trusted
3f) Launch voice affordance
4) Set no notifications on lockscreen, drag down, make sure you get
the correct animation
5) Test clicking "emergency" on bouncer
5b) Test "Emergency info" on emergency dialer
5c) Test clicking edit button on emergency info, should show pattern on
Keyguard

Bug: 32057734
Change-Id: Icada03cca74d6a612c1f988845f4d4f601087558
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
655332c641ccb12ee1ae3ce89135ca847fba1abf 31-Oct-2016 Winson Chung <winsonc@google.com> Creating PinnedStackController.

- Creating a PinnedStackController to keep track of the state of the PIP
to prevent changes in the system (ie. IME showing) and user interaction
from clobbering each other.
- Refactoring calls in AM into WM/controller

Test: android.server.cts.ActivityManagerPinnedStackTests

Change-Id: Ie59dfd45d5c54764ba69a589b3b8148845e92cc3
Signed-off-by: Winson Chung <winsonc@google.com>
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
cd1ff64683cf9664d52a153d98863953591d44f8 26-Oct-2016 Winson Chung <winsonc@google.com> Ensure PIP retains bounds on device rotation.

- When device rotates, ensure that the PIP continues to show in the
same aspect ratio, snapped to the same logical snap point.
- Move common snapping code to policy so that it can be shared between
SystemUI and the framework.

Test: android.server.cts.ActivityManagerPinnedStackTests
Test: #testPinnedStackInBoundsAfterRotation

Change-Id: I2d9f1a2dc077a55c39acc1ccba982c255e2ff3a4
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
303c6b78b645a9a655e09677e4856269d278a85d 25-Oct-2016 Winson Chung <winsonc@google.com> Fix wrong bounds being used in landscape.

- Ensure we use the right display size when calculating PIP bounds.
- Also update interface to take the display id.

Test: android.server.cts.ActivityManagerPinnedStackTests
Test: #testPinnedStackDefaultBounds
Test: #testPinnedStackMovementBounds

Change-Id: I01fd8ba6dee212c29a9a092673ee8f7843e41af6
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
5406e7ade87c33f70c83a283781dcc48fb67cdb9 21-Oct-2016 Andrii Kulian <akulian@google.com> Apply display override config for secondary displays

Now display-specific settings, such as dimensions and orientation,
are stored in display override config. For default display it is
mirroring the global config. Each time when global config is updated,
override of the default display should be updated too and vice versa.

Test: Existing and manual tests still pass.
Change-Id: Ic6c2190092d328820f314a05bed43c875db18170
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ae9adbfb758712caaf11b4ba5c5fd15848dcc3c5 19-Oct-2016 Wale Ogunwale <ogunwale@google.com> Removed WindowState.getWindowList()

2nd step in trying to make the WindowList private to DisplayContent.
WindowState.getWindowList() was an indirect way to the the window list
from the display content.

Test: Manual testing and existing tests pass.
Change-Id: I634ed446661371e70b99c701c23e1bdd59ada0bc
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
b0f3b836b9fe98d395fdbadf2cdd3603f4e0145a 17-Oct-2016 Wale Ogunwale <ogunwale@google.com> Clean up use of DisplayContent from WindowState.

Follow up to ag/1483993 where WindowTokens can now only be on one display.
Clean-up some existing code that dealt with having WindowTokens on
multiple displays.

Test: Existing tests pass.
Change-Id: Ie908eda37bc44097dea773b0fc163d35cc9baf35
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
02319a61927041cc4d3632e94c501b7277f0bda5 27-Sep-2016 Wale Ogunwale <ogunwale@google.com> Associate WindowToken object with only one display at a time

WindowTokens were global objects that contained windows that could
be on multiple displays. This model does not work with the
WindowContainer hierarachy as children (window tokens) can not have
mulitple parents (displays).
We now:
- Track the mapping of binder tokens to window tokens per display
instead of globally . So, you can have a binder token map to
individual WindowToken objects per display.
- WMS.addWindowToken is used to create a WindowToken that clients
can then later add windows to. However, when addWindowToken is called
we don't know the display the client(s) would like to add window to.
So, we track binder tokens that we are allowed to add window for in
the RootWindowContainer and create a window token for the binder on
a specific display when we try to add a window.

Bug: 30060889
Test: Manual testing and existing tests pass.
Change-Id: I81a52a32b01c33ed32169d2da0506b688ea9bc8a
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
834bbbd753b73e7a84403910cab9e27f688b74a8 30-Sep-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Add override and merged config to WindowContainer"
441e4494682144aec2ec7f19060464af3d29c319 30-Sep-2016 Andrii Kulian <akulian@google.com> Add override and merged config to WindowContainer

This consolidates usages of override and full (merged)
configs in WM objects and also adds support of per-display
configurations. Having full configs allows us to get
current applied config at any level.

Test: Manual tests pass. Added some new to WindowContainerTests.
Change-Id: I996770433c80da41265f3e14048bd23cead097f9
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
2b06bfc6e90aa293c7058fc6b1d1cf22fbb2ada2 28-Sep-2016 Wale Ogunwale <ogunwale@google.com> Made DisplayContent.mLayoutNeeded private scoped.

And, added accessor methods for it to make it easier to
debug who is setting it.

Bug: 31794753
Test: Existing tests pass.
Change-Id: I517c3e5cc7535cb90c47c112d42fa1dbf0b81583
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ba51ca2c8c100ccd5f1bb7a5f34f674b12184399 23-Sep-2016 Wale Ogunwale <ogunwale@google.com> Fixed some test failure and log warnings.

- Make DisplayContent.attachStack and moveStack use the same code
path for adding child stack so they both account for the presence
of pinnded stack.
- Don't call DC.attachStack on a stack that is already on the
display. Use DC.removeStack instead to just make sure it is at the
right z-order on the display.
- Use WindowContainer.getName() when for exception messages to have
a more concise print-out for the error.
- Only try to remove a task from a stack when positioning if the task
is contained in the stack.
- Throw an exception if we try to remove a task that isn't contained
in a stack.
- Skip checking of exiting or waiting for replacement when rebuilding
window list for app tokens that are exiting.
- Properly display and intent output from WC.dumpChildrenNames().
- Have DisplayContent WindowContainer type always return true for
fillsParent() and isVisible() as displays always fill their parent
and always visible for now.

Bug: 31624623
Test: Failing test passes.
Change-Id: I8a84770feb1fd278716755cdec2900fddb9940de
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
1012458343643e899ed8ca2684380b92d73fb47b 16-Sep-2016 Wale Ogunwale <ogunwale@google.com> Switched DisplayContent to use WindowContainer

Bug: 30060889
Test: Manual testing and existing tests still pass.
Change-Id: I99f2e38da417f62e8aa65bb6582aba53fd528c1b
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
14a3fb98e5ec5f366e810ad4d1f2a73ef8407ac6 12-Sep-2016 Wale Ogunwale <ogunwale@google.com> Switched TaskStack to use WindowContainer

Bug: 30060889
Test: Manual testing and existing tests still pass.
Change-Id: Id29c4aaf6580623a748bd69316fc6a4663ff1d37
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
f6192868fa4fcf85130ef40a90d0c96fbbca761d 10-Sep-2016 Wale Ogunwale <ogunwale@google.com> Switched Task to use WindowContainer

Bug: 30060889
Test: Manual testing and existing tests still pass.
Change-Id: Ia56767e47ad3df400e3aa2650f6386cca14659a7
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
828882a2da9c56c8a983b00da5d9902722aab7ea 17-Sep-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Configuration renaming and minor cleanup in AM and WM"
8072d11f6a41a68600a15623ca5316ca0def1856 16-Sep-2016 Andrii Kulian <akulian@google.com> Configuration renaming and minor cleanup in AM and WM

- Configuration members in AM and WM are renamed to
mGlobalConfiguration.
- Renamed parameters names in some methods to better represent
their meaning.
- Added and fixed some docs.

Change-Id: Ie51f687fe4c10dbce776435f29d6b853fda50eec
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
3f4433dadb7627153939ebb7d88d080c132b7f7f 19-Aug-2016 Wale Ogunwale <ogunwale@google.com> Made Task.mAppTokens private scoped

Also, remove TaskStack.getTask() method.

Bug: 30060889
Change-Id: I1ed9710ff630b390d28e6f2146db4202e2bc860b
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
9adfe5776d42c9ddfd4394958993304c9d355229 09-Sep-2016 Wale Ogunwale <ogunwale@google.com> Moved rebuilding of display WindowList to DisplayContent

Some of this is also in WindowContainer and its children.
However, I hope we can remove the concept of window list in
the future.

Bug: 30060889
Change-Id: I9e531327643c28a0ba35baa812b9c2942993d7b7
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ec73115b0902f5ffe3a0d9dcdd51badc4a99bc0a 09-Sep-2016 Wale Ogunwale <ogunwale@google.com> Moved adding to display WindowList to DisplayContent

In prep. for using WindowContainer.

Bug: 30060889

Change-Id: Ife8e03b53ce89f5b932f765850d072194d49fcb3
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
63d4ecc7a5c23f1ebbd3d71e5054041d90df9762 09-Sep-2016 Wale Ogunwale <ogunwale@google.com> Moved window focus calculation to DisplayContent

In prep. for using WindowContainer.

Bug: 30060889
Change-Id: Ide3022b3129b3d190f631a07d7589a27c434e0c3
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
5136249a7147fb205e1b861c1d42a7d1f13b73cc 09-Sep-2016 Wale Ogunwale <ogunwale@google.com> Support for specifying orientation in WindowContainer

Also,
- Fixed failing tests when they are ran as a package vs.
individual classes due to multiple window manager instance.
- Correct some isVisible logic to so a window container that
is invisible is not said to be visible, because one of its
children is visible.

Bug: 30060889
Change-Id: I1bb8730361be2a9f5ce88cd59b7d57d5a459bde6
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
15ead903c69b043eeb44fc627929d4919e985df3 02-Sep-2016 Wale Ogunwale <ogunwale@google.com> Some code clean-up in WindowManager.

- Renamed DisplayContent.findTaskForControlPoint to
DisplayContent.findTaskForResizePoint as it is trying to find a task
from the resize point.
- Renamed DisplayContent.checkForDeferredActions to
DisplayContent.onCompleteDeferredRemoval as the method removes containers
whose removal were deferred.
- Added methods TaskStack.hasMultipleTaskWithHomeTaskNotTop() and
topTaskIsOnTopLauncher()
- And some other minor clean-up relating to me trying to break-up a big CL.

Change-Id: I64d03cbd9ee69bf8fa0013a49283cd434b7c8fbe
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
44f2180c554684d8ce015116ad057dca06bba87d 02-Sep-2016 Wale Ogunwale <ogunwale@google.com> Introduced WindowContainer.hasContentToDisplay

We have lots of "is visible" methods and this change is an attempt
to rename one of the methods to match closer to what is actually does
and differentiate it from other "is visible" methods.

WC.hasContentToDisplay() returns true if the container or one of its
children as some content it can display or wants to display
(e.g. app views or saved surface).

WC.isVisible() returns true if the container or one of its children
is considered visible from the WindowManager perspective which usually
means valid surface and some other internal state are true.

Bug: 30060889
Change-Id: Ifbd6c277eb65a53b8035b6f34fc45196962632c1
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
d1c3791659572529dbc749b70d1c33bda1bdbc32 16-Aug-2016 Wale Ogunwale <ogunwale@google.com> Switched WindowToken/AppWindowToken to use WindowContainer

Bug: 30060889
Change-Id: Ia82aedfd9ea86410acdcd3a55a7a7fc456be2fc3
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
32cbdcc8c098b4a42212b3da345b929abad8ad6e 31-Aug-2016 Jorim Jaggi <jjaggi@google.com> resolve merge conflicts of c5bafe2 to master

Change-Id: I19dd5c88c664313c2f8b47d8f8fd556f630c8bf1
83ff4b54b2ece5d85a443ea8c7ed885e65d2009a 31-Aug-2016 Jorim Jaggi <jjaggi@google.com> resolve merge conflicts of d33f893 to master

Change-Id: I5851917387af16425f6c4c633931ba75937ffb26
6626f54e658e3da44fab8a5cd6d9d3d4852e2cd1 22-Aug-2016 Jorim Jaggi <jjaggi@google.com> Add animation when unoccluding windows (1/2)

Before there was a jump-cut when a window that was occluding Keyguard
was going away, leading to an ugly flicker. To fix this, we do the
following.

- Always show windows with FLAG_SHOW_WHEN_LOCKED above lockscreen, even
if they don't "match" the currently occluding app (which is null in the
animation case)
- Move wallpaper behind last window that is not hidden by policy, so the
window doesn't get occluded by the wallpaper.
- Add a flag in the setOccluded call whether to animate or not. SystemUI
then plays a nice animation when it's set.
- Override the animation to always be the animation that happens when we
exit a window which is revealing the wallpaper behind, to make it
consistent with the home screen case.

Fixes: 30829255
Change-Id: Ib3fe20fc9003a0f9f291c974740f044ed8707e75
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
160a3c578c5cbbe31f3dbb51fc0a78ee6d80c5cd 26-Aug-2016 Jorim Jaggi <jjaggi@google.com> Fix invalid divider state while rotating

- Sometimes there is no window attached to the app token during a
rotation. In this case, we also want to return a valid dock side, so
we check for hiddenRequested instead of traversing the windows
of an app window token.
- The logic to notify SystemUI about rotation changes never really
worked. Remove the dock side check as the dock side is guaranteed
to change if we change the screen rotation
- Also clean up visibility methods a bit.

Test: Manually tested the interaction when in docked state landscape,
and going home with locked home rotation like 20 times. Also tested
multi-user interaction with docking.

Change-Id: Ibcd181cadc9bc5a97dbd20e67d15bb1c88de5b97
Fixes: 29569499
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
9f25beee3a8cd6f452534006ea9068178cbb4ce1 02-Aug-2016 Wale Ogunwale <ogunwale@google.com> Made AppWindowToken.allAppWindows private

Pre-clean-up before switching class to using WindowContainer.

Bug: 30060889
Change-Id: Ic3d47d47b922668eeb70988ce883267b46ca9d72
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
2e2c81a8d67f6ceccf178c5c7264d27e8c72e9ff 15-Jul-2016 Chong Zhang <chz@google.com> Remove two-finger scroll specific code

Revert changes in ag/845161, ag/843943 and ag/817515 that's added
specifically for two-finger scroll mode.

Change-Id: I8679a3bd5b3907180d33d99e3a071e7edfb2ed96
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
741c0ba8aa84f2879c50884f53955bceb5b6e7f2 27-May-2016 Chong Zhang <chz@google.com> Revert commits related to wallpaper cropping

bug: 28763785
related-to: 27989717
related-to: 28887408

Revert "Fix wallpaper crop during unlock animation"

This reverts commit 616c7c10b9ca461da44a1eead2a6cb8260c82b22.

Revert "Fix wallpaper cropped too soon when unminimizing dock"

This reverts commit f0b76b071c8434fbf4a76798e9cdd56ab67e523d.

Revert "Set final crop on wallpaper instead of intersect clip with stack bounds"

This reverts commit dcf0183cea1f93f20073cb04fa64f111ea880005.

Revert "Crop wallpaper windows to their current target stack bounds"

This reverts commit e6cb450b0db119d71601a8329bed380bb2b4e275.
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
a1984286d397e4198d4e26572fb54cd55dce6d20 26-May-2016 Andrii Kulian <akulian@google.com> Merge "Fix exception when trying to update config of detached stack" into nyc-dev
73d4b44ce3198b0b4ac477a64d5f12a152dba549 25-May-2016 Chong Zhang <chz@google.com> Update dock stack create mode after rotation if dock side changed

On some devices (such as tablets) dock stack could be created on top,
but put to right after rotation. Dock create mode needs to be updated
in this case, otherwise when a new stack is attached to the display
(for example launch into now-cropped fullscreen stack),
attachDisplayContent() will use wrong dock mode to derive the bounds.

bug: 28942558
Change-Id: I83e66aeac94bd3f96c4b6a0a740acf76234bbe82
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
0be2cfec46cebe44b638c2a95f613de53bb4526a 25-May-2016 Andrii Kulian <akulian@google.com> Fix exception when trying to update config of detached stack

There is an NullPointerException which can be reproduced with following steps
on angler:
1. In split-screen open activities from the same app.
Make sure to launch them from launcher.
2. Rotate device to landscape.
3. Force-stop the app using adb command.

After killing the app it will try to open launcher, which is fixed in
portrait mode on that device. This will update the configuration for all the
stacks, including already detached.

Bug: 28786255
Change-Id: Ia326c09cff9f1a3fb43cca5b48db29718553346a
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
c7294607fc0debc54e92abac18bec2601a21ce27 13-May-2016 Robert Carr <racarr@google.com> Fixes for ending PiP animation.

During the PiP animation, we have two basic requirements:
1. We need to scale windows to the pinned stack bounds.
2. We need to halt resize and movement notifications to the client.
As we end the animation, we need to disable these states at differing
times. First we need to deliver a final resize and movement notification
to the client for it's new position. However, Surfaces may not
immediately resize (in particular in the case of child windows,
it may be some time!), furthermore Surfaces may resize at different
times so we need to persist scaling on a Surface by Surface
basis after reenabling resize notifications.

Bug: 28559097
Change-Id: I6d52a3e213e08a34f4c0eea892b2a84cd4c20e18
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
daa0d214dd07caa8dc99abe635211ed94200bc2e 18-May-2016 Chong Zhang <chz@google.com> Merge "Fix wallpaper cropped too soon when unminimizing dock" into nyc-dev
b8da4a7fa86155022f5a8d177c288d0817ce8c3e 18-May-2016 Chong Zhang <chz@google.com> Use focused app's stack for IME adjustment

Don't use mInputMethodTarget as it could be set to some system alert
window that has both FLAG_NOT_FOCUSABLE and FLAG_ALT_FOCUSABLE_IM,
and it's not actually taking inputs.

bug: 28328085
Change-Id: I38263f64fec13a5e10357499ebc97671389ba69a
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
f0b76b071c8434fbf4a76798e9cdd56ab67e523d 14-May-2016 Chong Zhang <chz@google.com> Fix wallpaper cropped too soon when unminimizing dock

Set adjusted bounds on the stack that's side-by-side to the docked
stack, so that TaskStack.getDimBounds returns the adjusted bounds
during unminimizing dock animation. This way wallpaper is not cropped
too soon to the final stack bounds.

The adjusted bounds won't be used for alignment for minimizing.

bug: 28763785
Change-Id: Ifea4366dd4b1bd35f2ed720dd1819a10bdfd86fa
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
918084e9ae9620c745e4d6212f6648771051e706 13-May-2016 Chong Zhang <chz@google.com> Merge "Update stack bounds for fullscreen if rotated after updateDisplayInfo" into nyc-dev
e208bd4cbea7468c989d25ef582e5a9ed7ecabf1 13-May-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Fixed some issues with fullscreen dimming" into nyc-dev
ccc335cfc799163424d6c3cc457213cbcb4d49ee 13-May-2016 Chong Zhang <chz@google.com> Update stack bounds for fullscreen if rotated after updateDisplayInfo

Rotation could change again after updateDisplayInfo is called. We
need to set stack bounds even for fullscreen stacks in this case.
Otherwise the bounds will be incorrect until it's rotated again.

bug: 28611814
Change-Id: I31289524a9ceacaaaa66924e9bf6cbe88fd83f99
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
36d1296cf4f074599015b424161402f9b07da8ab 13-May-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Adjust divider when IME height is changed." into nyc-dev
29bfbb878d54db14204e9b02dc17bfc6e127b6b2 13-May-2016 Wale Ogunwale <ogunwale@google.com> Fixed some issues with fullscreen dimming

- Always dim home stack and task fullscreen. The home stack could be
in split-screen mode, but we still want to dim dialogs that are
associated with the stack or task in fullscreen. The dialogs are not
really activities, but they are associated with the home stack for
things like dimming. Don't ask me why...
- Update the fullscreen dim layer bounds anytime the dim layer is
adjusted so we always have up-to-date bounds after rotation.

Bug: 28575624
Change-Id: I805c771153a2d25fb199bd9987bbf78a5967f6b9
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
19d9a8f47625319406f593d4ec71de0c8df1fcfe 13-May-2016 Keisuke Kuroyanagi <ksk@google.com> Adjust divider when IME height is changed.

Previously, divider was adjusted for IME when IME window visibility is
changed. However, IME size can be changed without changing IME window
visibility. For example, when hardware keyboard key is pressed to show
emoji layout.
This CL checks if IME height has been changed and adjust divider position
properly.

Bug: 28389933
Change-Id: I9a561bd4796a0513c8b5c493884946883f160907
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
8563943bd39107b5a7ff9ea475592d0040423ba1 07-May-2016 Jorim Jaggi <jjaggi@google.com> Fix smallest width configuration calculation

For calculating the smallest width, we need to iterate through all possible
orientations, snap the task bounds to a valid snap target and then use the
smallest width across all orientations.

In addition to that, when flinging the divider handle to the bottom of the
screen, we need to pass in fullscreen task bounds to avoid that this new
logic applies so the maximizing app only receives one configuration change.

Change-Id: I37aa9a40938517dfaf26770eb41327d76aec7c62
Fixes: 28469673
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
5117e273eca0b15ef057d0c2440546799c17edf4 03-May-2016 Chong Zhang <chz@google.com> Apply IME adjust to newly added window

bug: 28390108
Change-Id: I72132d68cb41056fb69f2fe38fa13f2b3c9ce3d6
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
d3ec507160eec964f687d3b03b0f126b3394e95f 29-Apr-2016 Jorim Jaggi <jjaggi@google.com> Fix minimized dock stack for translucent activity over home task

Previously, we only looked at whether home task is going away or
getting visible. This doesn't work anymore, as we also need to
un-minimize docked stack if another task is visible with translucency
over the home task.

Change-Id: I993f58a25d99d2ef9f562f7d1587c2dec0d05142
Fixes: 28434466
Fixes: 27906038
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
af558e1419aba5b89b9ee8c2fdafa508e6de8d84 28-Apr-2016 Jorim Jaggi <jjaggi@google.com> Fix issues with docked stack not un-minimizing

- Add minimize state to dump
- If the docked app goes through a configuration change while the
docked stack is minimizing, the window list becomes temporarily empty,
and thus Task.isVisibleForCurrentUserLocked == false. Since we already
check at the beginning of the animation, we need to finish the minimize
animation on the docked stack no matter what happens.
- Adjust the condition when to notify divider controller about app
visibility. It turns out that under some conditions an animation is set,
but the app is not an element of mClosingApps nor mOpeningApps, so we
missed the visibility change of the home task
- Use getTopAppToken instead of getTopVisibleAppToken. When the token is
about to hide, it's already hiddenRequested, so we skipped changing the
minimize adjustment.

Change-Id: Ib9e2e3f6a5da7b7854b49857299a236e47baa6fc
Fixes: 28184044
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
eb1cb927adf4b10296dfd9cdb975514d85a1116a 28-Apr-2016 Jorim Jaggi <jjaggi@google.com> Clean up updating bounds after config/display info change

We always update the display info before handling the configuration
change. Thus, we remove this weird interleaving asynchronous beast
of code and handle rotation and density in updateBoundsAfterConfigChange
and everything else in updateDisplayInfo.

Sending an asynchronous message to resize the stack only causes race
condition and issues.

Change-Id: Ifa86f62e816917822a8c1d42d13d4bf1ad9bc5bf
Fixes: 28316517
Bug: 28184044
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
5952f9aea4d0f5242d9678eb491ea7aa54734e66 25-Apr-2016 Wale Ogunwale <ogunwale@google.com> Fixed issue with wrong stack fullscreen state on configuration change

- No need to run TaskStack#updateBoundsAfterConfigChange if the stack
is fullscreen as the bounds will already be updated to when the display
content changed due to rotation.
- Correctly set mTmpRect2 that we are using to calculate the rotated
bounds to the current mBounds.

Bug: 28319277
Bug: 27870534
Change-Id: Ic3d9407b735210351c28297de79bf035909afcfe
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
e67960ecae2ba008a7d1d364b5fdb1b95a179e52 22-Apr-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Force pinned windows to always be scaleable." into nyc-dev
42a6dc9bd6cd5028ab65f456fe7cc4d8a7fd77c8 22-Apr-2016 Jorim Jaggi <jjaggi@google.com> Merge "Fix squished UI elements" into nyc-dev
65002e1d17031b76ecc67bff809494c158566408 22-Apr-2016 Jorim Jaggi <jjaggi@google.com> Fix squished UI elements

Stack bounds were wrong after moving all tasks from docked stack to
fullscreen stack, if fullscreen stack was created while moving.
This lead to very wrong bounds when rotating the screen the next
time.

Bug: 27870534
Change-Id: I6d054922ffc7baa7cd1a86d0d3448050cbacd21f
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
a51388d6536bd57c2bbcf18e84d87763d388dbf7 22-Apr-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge changes I7261cf87,Icabfcf47,I09e6b032,I252cf139,If85ade73, ... into nyc-dev

* changes:
Revert "Death to synchronous transactions (2/2)"
Fix a few weird state issues from race-conditions
Fix lifecycle bug in when calling positionTask
Animation fixes when task is not resumed
Keep stack from mReuseTask
Final fixes for growing recents transition
1402c2efe815bbdfdbc2d3e8e25fff367d272dd4 22-Apr-2016 Chong Zhang <chz@google.com> Update divider controller's dim layer when the layer is changed

The divider's layer assignment could change after the initial adjust
animation has finished.

bug: 28255739
Change-Id: I5899fe22e4fec680c49c881437c7f85d8ee9ca74
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
5c80c41ee0ef808e7c8234087c5538531a16f5bb 20-Apr-2016 Jorim Jaggi <jjaggi@google.com> Final fixes for growing recents transition

- Make sure to reposition windows during animations to avoid that
they lag one frame behind.
- Don't put windows that are gone for layout into resizing mode.
- Don't layout windows that are gone for layout, to avoid resizing
the surface but the client won't draw anymore.

Change-Id: I809feffef00f9a086b44504126e03f509eb7f190
Fixes: 27855229
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
1b5ea72b3cd946ae27e92743339f1fcb117a0520 20-Apr-2016 Robert Carr <racarr@google.com> Force pinned windows to always be scaleable.

Otherwise we have a race when switching it off at the end
of the animation when we don't move to fullscreen. Ensure
SCALE_TO_WINDOW is always enabled for windows while they
are in the pinned stack.

Bug: 27793381
Change-Id: Ia92465fd0d854f799caa8ed31edb4621af9fdecd
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
f347ab5eddd63dbcbb4a70a94ec0916b3db46569 19-Apr-2016 Chong Zhang <chz@google.com> Fix IME adjust when stack focus changes while IME is visible

- Use two values to animate divider width adjustment separately
from stack position adjustment. For example IME is visible
with focus on bottom stack, then user clicks top stack. In this
case bottom stack position should go back to unadjusted, but
divider should remain thinner.

- If we need to start a new animation during an existing animation,
start the motion from where the existing animation left off, so
that it doesn't look discontinuous.

- Do not adjust if IME is not actually focused on any stack. This
could happen when swiping down the status bar.

bug: 28175599
Change-Id: I802def5d1c13ebe11094eb28fc5a0b0c309e4d76
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
1ca6a33f36357281b3445e85d9e67cacd1a12ede 12-Apr-2016 Robert Carr <racarr@google.com> Force windows to be scalable during pinned animation.

We resize windows at the beginning of the pinned stack
animation when animating to a larger size, and so for some
duration a resize will be pending. We need to force the window
out of SCALING_MODE_FREEZE so we can animate during this period.

Bug: 27891386
Change-Id: I5cff599ed67f2c179e938662b6f0d99bd790aaba
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
198afac5ce6c8b85d5d8b374f4a7169104ef6eed 15-Apr-2016 Chong Zhang <chz@google.com> Misc fixes for IME adjust

- Use thinner divider when IME adjusted

- Dim non-focused stack

- Restrict IME adjustment so that top pane is shrunk to 30% at most

- Move top stack up together with IME adjust

- Move bottom stack up even when not focused for thinner divider

bug: 28175599

Change-Id: I83556535e5a171f0ec28d88429186fa1315b910c
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ff71d20ff357a33c30e1e3b474e51ad47d5c5d3a 14-Apr-2016 Jorim Jaggi <jjaggi@google.com> Put windows into resizing during IME adjust animation

Because the IME animates in with translucency there was a black hole
visible at the bottom. This CL puts the window into resizing mode,
waits until the change is commited, and then starts the animation

Bug: 28175599
Change-Id: Ib31c1e765639e5490208bccba77b25318ec8dc71
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
eb88d83fc5da8ea05033c03bbb9f0d4b804ba162 14-Apr-2016 Jorim Jaggi <jjaggi@google.com> Add nice animation when adjusting for IME in multi-window

- Run a separate animation when we need to adjust for the IME. We
can't use the attached animation because the adjustment animation
needs to be longer than the IME animation.
- Also run an animation when IME is disappearing.
- Adjust IME exit animation to better match with adjustment exit
animation.
- Make sure to update adjust for IME when entry/exit animation of
IME is starting, to avoid flickers.
- Don't update the IME window in PhoneWindowManager for layout
until the animation has started. This lead to an issue where the
content inset was set too large too early.

Bug: 27154882
Bug: 28175599
Change-Id: I09a33413e307f84d6c3cf4ae928c280f7ad48348
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
2917dc4918ab2061f6cab3d181d19ea8375df9f6 11-Apr-2016 Jorim Jaggi <jjaggi@google.com> Add shadow for minimized dock

Bug: 27972642
Change-Id: Ic4c8145f61694ff2bb0e237da1142093c6a4d965
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
5ac2ba25ceab29a6adc1a2ca2d685678c86258d8 12-Apr-2016 Jorim Jaggi <jjaggi@google.com> Fix a small issue with IME adjustment

For some keyboards, display frame is the same as the fullscreen, because
the way they layout their stuff is different. In such cases, the stack
bounds were moved too far.

Bug: 28126905
Change-Id: Id3c2c8d9d16e27634006a8ef70d35d8826302da0
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ef3b27224b12de71e11eade54f66742068dedf79 08-Apr-2016 Andrii Kulian <akulian@google.com> Fix invalid stack position when docked on right

If task is dragged from fullscreen recents to right to perform
dock-to-right, it's stack is initially positioned incorrectly.
This CL shifts position in correct direction.

Bug: 27621228
Change-Id: I14df76a036aa0f6f7b500e4e8b5ce04fbc03de9a
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
11c62e17af9096f76d4532f26cacd809c3a5ef53 06-Apr-2016 Jorim Jaggi <jjaggi@google.com> Dynamic density change handling

- In PWM, make sure to read the height values after the new
configuration has been applied.
- Reset all navigation bar button icons when density changes.
- Adjust height of notification bar.
- Reload divider height values in SysUI and WM.
- Snap divider handle to a new position after loading the
new configuration, as the snap points change.

Bug: 26844819
Bug: 27450471
Bug: 27921696
Change-Id: I9e28f0c49f6367c5fcfac010e7a6e98a42e85996
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
bcff1431ddec8f6c484b92ca539f743a95a06991 02-Apr-2016 Jorim Jaggi <jjaggi@google.com> Move docked stack to the side in landscape instead of clip

Bug: 27154882
Bug: 27972642
Change-Id: Ie170571e356199bfbde014c80d670fd238825828
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
409635b20bca7f13ad36ecb55c34efda5d523b1c 02-Apr-2016 Jorim Jaggi <jjaggi@google.com> Allow app to force orientation if dock minimized

Change-Id: I4bf1346de83922f866095465470e1a1c305b71a1
Fixes: 27437129
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
167bbfac24b1e78576b18c0522218838dfdf57bb 31-Mar-2016 Chong Zhang <chz@google.com> Avoid extra relaunch when rotating side-by-side apps

Update configuration with WM first and check if the stacks need to be
resized due to the update. If so, let activity manager resize the stacks
inline, instead of letting WM schedule another pass of resizeStack. This
way the configuration will be updated to the latest before ensureActivity-
ConfigurationLocked, and we don't need another relaunch there.

bug: 27834014

Change-Id: Ib761a96cada0c3247b0480f18370670c593159da
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
baba78319b954e8e42b8ecfc03b5fedc28a6168b 24-Mar-2016 Chong Zhang <chz@google.com> Animate IME adjustment for docked stack through the divider

This makes sure the top stack crop, divider position and bottom stack
surface position moves together with the IME window. Currently the
bottom stack and divider are moving together but top stack crop is
changed immediately.

bug: 27779495
Change-Id: I653ad9093621b218d9c11b0bb2efdddb1d33763e
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
b58bbccd2d230901e93191bf8b244708014b0a38 23-Mar-2016 Chong Zhang <chz@google.com> Do not adjust bounds for IME until IME is actually displayed

When the IME window is just relayout to visibe but not drawn yet,
the given insets of the IME window may not be set. Adjusting the docked
stack at the time may cause wrong bounds to be used. So we wait until
the IME window is actually displayed before moving the bottom stack.

Also move the divider together with the bottom stack when adjusting
for the IME window. This makes it look less janky.

We still have issues with the top stack's bounds changed too early,
which has to be fixed separately.

bug: 27779495
Change-Id: Ic53dc261d430a40677154be5b312a992aab49c79
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
e75a9adfbd37f9ec1a9324caceb9d5d7ceed217c 19-Mar-2016 Wale Ogunwale <ogunwale@google.com> Added support to specify animation duration when resizing stack

Needed for sys-ui to control the duration of various Pip transitions.

Bug: 27674339
Change-Id: I7bad27aaa19755a73c594e88b88b56db033e1a45
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
899327f5cbbfb0eae5562b262ccea860c98f6bc4 26-Feb-2016 Jorim Jaggi <jjaggi@google.com> Animation for docking task gesture

- Don't move recents window around during the animation
- Set the correct task size shortly after docking, so recents
starts with the correct size to avoid jank.
- Add staggered animation in recents.

Bug: 27154882
Change-Id: I7c56102feba9c3f6cb86cb5f1d87f0ad3b29c721
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
bc5425cdb9b302fe4c746bd79de87f56dadb9955 01-Mar-2016 Jorim Jaggi <jjaggi@google.com> Don't apply dim if there is no docked stack

Also add proper names for the different dim layer surfaces, so we
better know where they are coming from when we see it in the
surface flinger dump.

Bug: 27270126
Bug: 27200491
Change-Id: Ic085e8505d20a941f4631ec914f00eefda74a766
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
0d00c2e25bf8816dbd99f4fcd5c8221e80826a95 01-Mar-2016 Robert Carr <racarr@google.com> Reimplement PIP animation to not use drag resizing.

When using drag resizing it is difficult to keep big surface
surfaces (e.g. main app windows) and child windows in sync
as we resize. Furthermore it's difficult to resize child windows
quick enough to achieve more than a few frames a second as we have
to propagate through the client UI thread. Our new implementation
uses window scaling.

Bug: 26454664

Change-Id: Iac96619cefc075b1412cfeba3d3c9bcd7ce22f52
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
7587e38992af85ea1f488f2155ff3576d65f2c18 22-Feb-2016 Jorim Jaggi <jjaggi@google.com> Merge "Restrict dock sides after rotation" into nyc-dev
5060bd891068b78bcbe72e1d8b61efac2da02c20 20-Feb-2016 Jorim Jaggi <jjaggi@google.com> Restrict dock sides after rotation

Bug: 27167078
Change-Id: If51626b75321eebc277eb2399ee753ffe489642b
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ecbcadd27d1c00fddebbd2893251b05096252ee5 21-Feb-2016 Wale Ogunwale <ogunwale@google.com> Fixed bug with stack bounds getting out of alignment with screen rotation

Before updating the stack bounds due to rotation change, we need to make
sure both the configuration and the current display info. the stack is
using have been updated for the current rotation. Previously we were
updating is after configuration change, but the rotation might have changed
again by the time we get the configuraiton changed call and
TaskSack.updateDisplayInfo not called yet.

Bug: 26744649
Change-Id: Idfd30e78dc9c2fb521ff1957f043c3b1696a2a31
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
f97ed9271fef192f5411206e781eb3519c144ace 19-Feb-2016 Jorim Jaggi <jjaggi@google.com> Improve maximizing dock/clip reveal animation

There was a very visible hole at the end of the transition when both
the docked stack expands and the other app is doing a clip reveal
animation, but only if the app had to travel a far distance to
meet it's target rectangle.

To fix this, we interpolate between two animation curves for maximizing
divider: One is the original curve, and the other one is an adjusted
one which simulate if the divider would start at the edge of the app
surface that plays the clip reveal animation. At the start of the
animation, we use the original curve, but then about in the middle of
the animation we interpolated towards the adjusted curve, so the divider
meets the edge of the app surface that plays the clip reveal animation,
eliminating that gap while still preserving the overall motion.

Bug: 27154882
Change-Id: I37716588f88ddc643ed6176c2ccd56ca174e8919
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
9ecf7cfee8c681587bd7cf6468aff80178e2d2d9 20-Feb-2016 Wale Ogunwale <ogunwale@google.com> Merge "Clean-up WindowState if exit animation is done before app finishes" into nyc-dev
c48a354733ff150e4a07f6b0743009001aa4f48d 20-Feb-2016 Wale Ogunwale <ogunwale@google.com> Clean-up WindowState if exit animation is done before app finishes

In ag/862571 we prevent window states from been removed before the
app is stopped since it can still be rendering to the surface.
The CL also left WindowState.mExiting as true after the exit
transition animation runs. This is okay if the app finishes before
the exit animation is done, but if the exit animation finishes before
the app finishes, then we will always think we need to run an exit
animation and not remove the windows when the app and later activity
manager tries to remove the windows.
mExiting is used to mean exiting animation is running, if it is set to
true then all the code assumes an exit animation is still running and
doesn't remove the window state.
- Always set mExiting when animation is done.
- Renamed mExiting to mAnimatingExit so it is more clear what it is used
for
- Allow window state to be removed is the current surface isn't shown.
This should be save since there won't be any visual effect to the user.
- Rename WindowState.mClientRemoveRequested to WindowState.mWindowRemovalAllowed
and move setting it to true into WMS.removeWindow() so it catches all cases.
- Cleaned-up the code some to be a little clearer.

Bug: 27112965
Change-Id: I6f03d3c75b5b7728e42ceadc8703df40a3b4ae63
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
42625d1bc7ef99c4d4435e8cdebfe3eee57b8d97 12-Feb-2016 Jorim Jaggi <jjaggi@google.com> New behavior for docked stack when going home

- We keep the docked stack visible when home task is visible even
though it's not resizable.
- We introduce the a new concept called "minimizing" the docked stack,
which happens when going home. In this state, the docked stack is
clipped of almost completely.
- To achieve that, we introduce TaskStackBoundsAdjustController,
which adjusts the bounds of the docked stack when minimized. Also,
migrate the IME handling to this new class.
- We also need to inform SysUI that it is now minimized so it can
remove the drag affordance on the divider, and also make it a bit
smaller.
- When we detect an app transition, we check whether the home stack
gets visible/invisible. We then start an animation which runs in
sync with the normal app transition. For that we introduce
DockedStackDividerController.animate(), which performs the animation.

Bug: 27137961
Change-Id: I8623bc73cc6872bf28c5b1b8d5795974576811b2
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
7998e48ce3240d09f28cd365fb6ba58f8987470f 13-Feb-2016 Jorim Jaggi <jjaggi@google.com> Fix unlock transition when docked stack is visible

- Keep surface of docked divider when lockscreen is showing, like
all other apps, so we don't run into synchronization issues when
unlocking. We do this by setting policy visibily to false, but
keep clientVisibility=true
- Update docked stack visibility when starting unlock sequence to
visible.

Bug: 27154882
Change-Id: I6def5c18831e23579fcfc904133749f149eaf376
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
c662d8e94620c84b2fa57bfd6e45690f0c349d89 06-Feb-2016 Jorim Jaggi <jjaggi@google.com> Make sure we call reportResized exactly once when drag starting

If there was another layout happening before the app called
relayoutWindow(), we were issuing multiple reportResized calls,
leading to multiple relayoutWindow() calls, slowing everything
down.

Change-Id: I1f3da04bb7581c655567e1d1a6fe0f8c83c0ffda
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
480dca0d1b08f8895f66f857e9bd341033fab2d9 06-Feb-2016 Wale Ogunwale <ogunwale@google.com> Reduce jank during pinned stack animation

- Don’t launch Pip overlay activities during pinned stack animation.
This causes extra CPU load and takes a way resources from the running
animation.
- Finish Pip overlay activities before starting pinned stack resize
animation. Reduces the amount of work the system needs to do to keep
the overlays in-sync with the other activities in the pinned stack.
- Use AM.resizeStack with null bounds to take Pip to fullscreen so that
we can animate the bounds changed.
- Also, fixed Activity.enterPictureInPicture API to animate the transition
if Pip is entered from the app instead of Pip manager.

Bug: 25672053
Change-Id: I82399c10f1b8c675ea3861ba973dc8ecfbfbe50f
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ce14452a27acf0492d799ec88c619add3a630a88 06-Feb-2016 Wale Ogunwale <ogunwale@google.com> Fixed issue with drag resize state when animating pinned stack.

When animating the pinned stack, we set drag resizing on the top
most task in the stack. This has a couple of issues.
- Only the top most task is put in drag sizing mode and all other
task in the stack will not be in resizing mode.
- The top most task of the stack can change during the animation,
so we fail to clear the drag resize flag on the previous top task.

We now track drag sizing at the stack level and have the stack
drag resizing state affect its tasks drag resizing states.

Also added concept of continuing a bounds animation if the same
target called BoundsAnimationController.animateBounds before the
current animation is done. We don't send onAnimationEnd() for the
current animation that is been cancelled and don't send
onAnimationStarted() for the animation that will be replacing it.

Bug: 25672053
Change-Id: I64e89ed09d81e4802dacebc5818dfa1deb0d588f
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
a9f9b37823a5f046078594c96c262c127afdee1c 05-Feb-2016 Wale Ogunwale <ogunwale@google.com> Reset docked divider to the middle of the screen if sys-ui dies

It is possible for the docked divider to be in an unstable location
when sys-ui dies. E.g sys-ui animating the divider from behind the
nav bar. When this occurs we reset the divider to the middle of the
screen so that the system remains in a useable state. Otherwise, the
docked stack can be fullscreen always preventing the user from going
into any other application.

Bug: 26965731
Change-Id: Icd254fffe69da4ee3f2efb4ff1d210a778703f64
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
067e817585524aeb0fb2c5ff4444c21fadc3f0d3 04-Feb-2016 Jorim Jaggi <jjaggi@google.com> Only treat "null" bounds as fullscreen

When long pressing on the recents button, we made it one pixel smaller
than fullscreen so we don't dismiss the stack immediately again.
However, this is a huge hack, and lead to problems with navigation bar
background because there we actually rely on the fact whether
the window is fullscreen or not to determine whether to draw the
navigation bar background, which lead to flickering.

Bug: 26777526
Change-Id: Ifdfcf3ad4138bc88c5164177cd20f1ff1635085f
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
c17d8b79afd02133b021d89b536c812578308329 04-Feb-2016 Filip Gruszczynski <gruszczy@google.com> Infrastructure for animating of maximizing pip activity.

Bug: 25672053
Change-Id: Ie8a83c626680e01ff7115f40731ab9e6c13769c0
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
961f4858f2a401366a6691c95b702a2baac67ea1 02-Feb-2016 Wale Ogunwale <ogunwale@google.com> Window resize reporting improvement when docked stack is created

There were a few issues with window resize reporting when a docked
stack is created that caused the client to get frames for fulscreen
even though the task was in split-screen mode.

- Ignore docked stack visibility when get bounds for other stack when
resizing due to docked stack.
- Immediately resize all other stacks in activity manager when the
docked stack is attached to the display.
- Defer surface layouts for the uncheck portion of moving a task to a
stack.
- Don't perform layout of all windows on a display when a stack is
attached to the display since it doesn't have any windows yet.

Bug: 26861802
Change-Id: I2c7f31153da48618e90607c98ec5b29492b6ef38
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
49918b95e863b119d9c57fca698abb19ce429427 28-Jan-2016 Chong Zhang <chz@google.com> Merge "Shift bottom stack upward and fold top stack when IME is visible"
b816b862b0c73033f1ebd8070e77fcfe33605171 25-Jan-2016 Chong Zhang <chz@google.com> Shift bottom stack upward and fold top stack when IME is visible

bug: 26293982
Change-Id: If5f22037e12edb6d67b80ff1deb1be7a028aa76c
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
84fa3351a21b37d02fafd634a8de65cf6cd04c4d 26-Jan-2016 Filip Gruszczynski <gruszczy@google.com> Animate pinned stack resizing.

This introduces animating of stack bounds within window manager
module. It also uses this type of animation when moving an activity from
fullscreen stack to pinned stack.

Bug: 25672053
Change-Id: I75914a685d10021f8a7535b47ef12b6920b3fd5e
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
08b372f71ad24ce29b86ace726bd12d2326ae87e 27-Jan-2016 Jorim Jaggi <jjaggi@google.com> Fix flicker when dismissing non-docked stack

Because the right/bottom side of divider moves offscreen when dismissing non
docked stack, it results in empty bounds which then results in window manager
thinking the just dismissed activity is fullscreen, which leads to a black
flicker. Make sure not to calculate garbage when calculating the bounds for the
non-docked stack.

Bug: 26070457
Change-Id: I65ce9a23dc216971a3ae4df8058d5b86b1b792a5
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
df012d5102735412d9f38513c103aa53df4bcab9 16-Jan-2016 Jorim Jaggi <jjaggi@google.com> Divider tuning

- Make it harder to dismiss
- When dragging from the bottom, don't allow dismissing at the top

Change-Id: Ifd2de38abece7b996a813af41dcf777fa5cd1c18
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
21e0917d73c4fe5c3f67ff3918d114b078499101 16-Jan-2016 Wale Ogunwale <ogunwale@google.com> Merge "Fix split-screen visible apps issue when screen is rotated on lockscreen"
4846ee3cc378001128680f2a3309c7e60bfcac75 07-Jan-2016 Jorim Jaggi <jjaggi@google.com> Optimize window relayouts when dragging divider

- Communicate the resize mode to ViewRootImpl. If it is a docked
divider resize, do not call relayout for every traversal.
- Do not call Task.resizeWindows() unconditionally when changing
Stack bounds. It might be just a move.
- However, not calling relayout breaks layout bounds while
relaunching. To fix that, do the following:
-- Inform ViewRootImpl that the activity just relaunched, and force
a relayout call in the next traversal so the client can pick up
the unfrozen bounds.
-- When unfreezing the bounds, cause a traversal in window manager.

Bug: 25015474
Change-Id: Iab9a445dabce4f6ec1e25957038fe40a4be65246
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ccb6ce2dcd8b833692f6c8a4a568fb938acfe058 15-Jan-2016 Wale Ogunwale <ogunwale@google.com> Fix split-screen visible apps issue when screen is rotated on lockscreen

When the keyguard is showing we say the docked stack is invisible so that
any activity that displays on top of the keyguard isn't cropped by the
docked stack. However this causes issues when the docked stack is resized
due to orientation change while the keyguard is showing.
We now ignore the visibility state of the docked stack when trying to get
bounds information for resizing while the keyguard is showing.

Bug: 25970565
Change-Id: I7479a1d0afed3b2edfb17848c56c5c3902b3709e
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
fdbdb9f9c6cd2f2cd1a494fb9b295dcaf4fd101c 14-Jan-2016 Jorim Jaggi <jjaggi@google.com> Merge changes I55d96ec3,I0ebc4639

* changes:
Reenable task preloading in recents
When creating docked stack, use SnapAlgorithm
d434dcbfc9407baad28b6b40fea75b1b6050ad7e 06-Jan-2016 Jorim Jaggi <jjaggi@google.com> When creating docked stack, use SnapAlgorithm

To make sure the bounds snapped to a snap position are
set from the very beginning.

Change-Id: I0ebc463926dd17e0deeefc211b097f28a6456b96
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
f66db43063e4409206f1572fa1bac4f87c431f9a 13-Jan-2016 Chong Zhang <chz@google.com> Several fixes for docking non-resizeable tasks

- Keep track of original task bounds and scrolled bounds separately,
so that we can reset the scrolling when the it's no longer in effect.

- Calculate the vertical offset for the toast on top half using the
content rect. The original toast position was relative to the bottom
of the content rect, not the display rect.

- Move toast display to prepareSurfaceLocked, as performShowLocked() may
not be called if the app surface is already shown.

related-to: b/26451625
related-to: b/26447921

Change-Id: I82113683c9e3c3beb4938dbd0829d0abf491efd9
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
dce2d161701f318ec71f8fe8de03031e1c4b0046 13-Jan-2016 Filip Gruszczynski <gruszczy@google.com> Only request stack resize after non full screen bounds were set.

Also make sure that the bounds passed to stacks and tasks are not bogus,
as these would mess up the configuration.

Bug: 26512887
Change-Id: I1a3a9c867a2c258a326b31df2bac614ccbb00579
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
f2c9628cac0240b9a39b8eadddf4c0528cd45c2d 12-Jan-2016 Chong Zhang <chz@google.com> Merge "Apply scroll to windows added to a non-resizeble task that's docked"
2a88fc31cf16b419fdd23c9841ffdbfe7af9d966 12-Jan-2016 Chong Zhang <chz@google.com> Apply scroll to windows added to a non-resizeble task that's docked

bug: 26447921
Change-Id: I933e277137fb127a9e961035cf48cba2bef52042
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
737af724eb31f513386e91ee5510cc6991350937 31-Dec-2015 Jorim Jaggi <jjaggi@google.com> Snap docked stack after screen rotation

- Move DividerSnapAlgorithm to com.android.internal, also move
some utility stuff into DividerUtils which is used from both
SystemUI and window manager
- When the screen rotation changes, rotate the stacks like before
but then also snap the docked stack to a valid snap position.

Change-Id: I9e1aa13f42f398a25c9016e6f20395ee212e405b
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
3dc52ed1799f96deaf802a5304f7301463dec58f 11-Jan-2016 Winson Chung <winsonc@google.com> Revert "Snap docked stack after screen rotation"

This reverts commit e65d6bb2072471e63b93aa14a288bc59ed86208f.

Change-Id: I245aa9be3ea98ff742e02b02f6f1d344bc2e8182
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
e65d6bb2072471e63b93aa14a288bc59ed86208f 31-Dec-2015 Jorim Jaggi <jjaggi@google.com> Snap docked stack after screen rotation

- Move DividerSnapAlgorithm to com.android.internal, also move
some utility stuff into DividerUtils which is used from both
SystemUI and window manager
- When the screen rotation changes, rotate the stacks like before
but then also snap the docked stack to a valid snap position.

Change-Id: Ifb0c65dfbdfca2343a76b12de982c0701fe0c3ab
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
b429e6826d394a63f81d1702efd714d640ddfb49 06-Jan-2016 Wale Ogunwale <ogunwale@google.com> Improved output for 'dumpsys window displays'

New format makes it easier to parse during CTS testing.

Bug: 19225708
Change-Id: Ia9a75ca92b6c10eefcb07cabea9852e514807b08
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
0429f3522bca5bb86378dd3f013f995484ddbed6 22-Dec-2015 Jorim Jaggi <jjaggi@google.com> Freeze task bounds when relaunching

To make sure that task is only laid out with the size
that matches the current configuration, we have to "freeze"
the task bounds when we send a configuration change. Without this
change, it could happen that the app already laid out with the new
task bounds, but still had the old configuration, leading to
wrong layouts.

Bug: 26311778
Bug: 25015474

Change-Id: I8d3a3fdf3735f446a4affbbdb4986dafc97623a5
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
dc249c4ae7c7838928f53f151bfda8a6817b8784 15-Dec-2015 Jorim Jaggi <jjaggi@google.com> Change behavior when resizing docked stack

- Add an API resizeDockedStack to resize the docked stack
and supply temporary task bounds, which can be different from
the stack bounds.
- Use that API in SystemUI to only switch task bounds when
crossing thresholds, so we have less flickering and more
predictable resizing.

Bug: 25015474
Bug: 26311778
Change-Id: Id5c9277dd908ccc28f95dab023efc914757a50d0
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
b4ec0a312de422440374638195d4709cc74227e9 14-Dec-2015 Wale Ogunwale <ogunwale@google.com> Fixed bug with task record not updating to fullscreen sometimes

null is normally passed in to AMS.resizeStack API if the caller wants
to change the stack size to fullscreen. However, it is possible for the
caller to also pass in a bounds that corresponds to the fullscreen bounds
of the display the stack is on. When this happens, the call to window
manager to resize the stack correctly detects that the bounds is equal
to the fullsceen bounds of the display and sets the stack to fullscreen,
but the task record state isn't updated to fullscreen since they were
previously calculated on the activity manager side.
We now check if the bounds corresponds to the fullscreen bounds on the
activity manager side and set it to null so that the task record state
is correctly updated.

Bug: 25683717
Change-Id: Ife753c6e6c034fd8df663ab897d245f1d354bda7
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
0bd180d8880b3d1b9677f154c034a2af840b4796 08-Dec-2015 Filip Gruszczynski <gruszczy@google.com> Improve debugging setup for window manager package.

This moves debug flags to a dedicated class and also provides a
mechanism to either have fine grained tags or one common tag for easier
grepping the logcat. This mimicks the approach in activity manager
package.

Change-Id: Ie8c08b9a3d8b182335ee5547ee05d21b5933db6b
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
75b3720c50752d988d361a57b2d32f8baaee3e28 04-Dec-2015 Chong Zhang <chz@google.com> Fix app over lockscreen being cropped by docked stack

When secure apps are launched over lockscreen, the bounds should always
be fullscreen. Also docked stack and divider shouldn't be visible while
lockscreen is shown.

bug: 25837786
Change-Id: I0bc681cdb46404fb79e9332d1f82fee51f338da9
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
298a4dc8dd60700684f98dd6e959b854ea70faec 02-Dec-2015 Wale Ogunwale <ogunwale@google.com> Merge "Prevent windows in pinned stack from gaining window focus."
d045c829a470b7c95daaa4786f7164ee8130546c 02-Dec-2015 Wale Ogunwale <ogunwale@google.com> Prevent windows in pinned stack from gaining window focus.

Windows in the pinned stack shouldn't receive input keys, so we prevent
they from gaining window focus so the focus/input keys goes to the stack
below the pinned stack.

Also, cleaned up some code.

Bug: 25580816
Change-Id: Iea1f944d167310233c3dbaea140a4ada568bb815
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
6449a9567ac204e0c9be71a7f983a753d8061220 02-Dec-2015 Wale Ogunwale <ogunwale@google.com> Merge "Add bounds information to stack/task WM dump"
c806d90e656a24dc8f50ef0d3f8bc99b9ac65afe 30-Nov-2015 Chong Zhang <chz@google.com> Show toast for non-resizeble docked task under the task itself

Move the show toast code to WM, so that we can schedule to show the
toast when the app becomes visible. Otherwise the toast always shows
up a long time before the app itself.

bug: 25433902
bug: 25873338

Change-Id: I879f8e0570829934fac806c2861bda9f65e08969
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
56b88afcbdd190e8448fd17db91f2bf94e00c1fa 01-Dec-2015 Wale Ogunwale <ogunwale@google.com> Add bounds information to stack/task WM dump

Change-Id: I01b0bf1feb2412f9ce73b2317ba6a56b48bc1a97
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ba5488123152d215caa19b2b0e6d8dcaa8b5eae3 25-Nov-2015 Jorim Jaggi <jjaggi@google.com> Merge "Allow stacks to be placed outside of display"
b15758ab7a6481717d0d29612e870d7241061c31 17-Nov-2015 Chong Zhang <chz@google.com> Support scrolling for non-resizeable tasks in side-by-side mode

Display toast when a non-resizeable task is put into side-by-side mode.

Scroll the task upon a two-finger scroll gesture.

bug: 25433902

Change-Id: I69967056a564cfe7773afb80aa7e7ea7167a791a
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
2fbe033f9d634505ff9e90f232c0339f616d7b86 25-Nov-2015 Jorim Jaggi <jjaggi@google.com> Allow stacks to be placed outside of display

When dismissing the docked stack, we animate the divider to position
-12dp, so the full-screen stack is exactly full-screen when the dismiss
animation is done. Previously, this was prevented by window manager.
Allow it to fix the animation.

Change-Id: Iee4505023dc3f6907d56851965b156235f9f97f2
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
9ea2f7ba3155a455724f64e2d6a964ad4e99dfa5 24-Nov-2015 Jorim Jaggi <jjaggi@google.com> Add ability to supply initial bounds when docking task

Add an optional parameter in moveTaskToDockedStack to supply an
initial rect to be used when creating the dockeds tack. Pass in
the adjusted rect when dragging up from the navbar so it doesn't
flicker anymore.

Change-Id: Ieb3c8c73b9e2a769a2ec6270bd76a713201a2aed
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
3856bf7fb9ed3987cd08760d92ca3e19dc3b5f51 20-Nov-2015 Wale Ogunwale <ogunwale@google.com> Fixed unexpected configuration change causing activity relaunch

In commit ebcc875f we migrated the setting of the task override
configuration from WM to AM. However, the migration changed the
construction of the override configuration to take in the service
configuration as the starting value. This is incorrect since the
only values that should be set in the override configuration are
the ones that change due to resizing. We now seed the override
configuration with the EMPTY value to make it obvious that the
object should be constructed with the default values.

Also, fixed issue with WM telling activity manager to resize a stack
when the stack is already the size it wants.

Bug: 25776219
Change-Id: I882979aa87b49e7a5dc993bd9223fbd6e6cf6471
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
4c9ba52acad52f1c1087415e04b2a17614707e40 11-Nov-2015 Chong Zhang <chz@google.com> Fixes for dim bounds and touch bounds

- Change dimming and touch related usage to use task's "max visible
bounds", which is the app within a task that's covering the maximum
visible area looking down from top. This solves the problem where
an app pops up a dialog window. We should dimming (and allow touch)
the entire task area, not just the dialog's visible area.

- Fix initial bounds used in drag moving/resizing, this should be
visible bounds of the app main window, not the original task bounds.

- Fix touch region set up for freeform apps, even when task is not
full screen, we should get the max visible bounds first (as freeform
app could have dialogs too).

bug: 25494928
bug: 25487005
bug: 25613403

Change-Id: Ib1c6a1665fb83ded2fcb0a7ea92cf1def5372edd
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
1fcbab6ae5c99acab70eacc015d194e2c6ddd4e2 04-Nov-2015 Jorim Jaggi <jjaggi@google.com> Implement divider UX interactions

- Update visuals to spec
- Divider lifts when touching
- Implement basic version of snap points and animations
- Implement touch conflict behavior: If touched around 48x48dp
area around the handle, the divider handles all these touches.
If touched outside of the black background divider, touch goes
directly to underlying window. If touch on the black background
divider, touch is considered slippery and thus the window in
which the touch trace moves gets the touches.

Change-Id: I0307c191ae032672c4b73d439c23cf9833d3fce6
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
61f39a7b988f6a22681a3f9e0bf8121f72ff88c4 29-Oct-2015 Jorim Jaggi <jjaggi@google.com> Migrate docked divider drawing to SysUI

Move docked divider drawing to SysUI. This let's us have real
time shadows in the future. Keep DockedStackDividerController
for placing/visibility in window manager.

Change-Id: I82c10add626d30f2ba180ee2a21cdbe6ddfe0371
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
57f76f1c549f37ffb4c0eaac40b6ab633404b0f7 05-Nov-2015 Filip Gruszczynski <gruszczy@google.com> Animate the dock divider appearance/disappearance.

We want to animate the dock divider appearance only after the entrance
animation of the docked activity finishes, so these two don't clash. For
disappearance they will animate together.

Bug: 24913915
Change-Id: Ibe5c3960f21fcc5e64039b158605fa09017c5c34
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
112eb8c1f76fff6a670d7c5f85e8c3d656cd3aa8 02-Nov-2015 Chong Zhang <chz@google.com> Save window when an app died while it's visible

- If an app died visible, keep the dead window and leave it on screen.

- Apply 50% dim over the dead window to indicate it's no longer active.

- Monitor touch inputs on the dead window and restart the app on tap.

bug: 24913379
Change-Id: I911da4e6135f2bffaf3b1bbe6f911ff689a278ff
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
3797c22ea16e932329ebffdc7e7ce09f9ecd9545 27-Oct-2015 Wale Ogunwale <ogunwale@google.com> Added StackId object for checking what features a stack supports

Helps make the code easier to follow since we are no longer checking
multiple stack ids at various decision points.

Bug: 25282299
Change-Id: Ifa6864a1ef56ce2eca4c94f87a4e0b993de987cd
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ba47f81446d2fa3120e607ddfd045144fb7d7a77 29-Oct-2015 Filip Gruszczynski <gruszczy@google.com> Fix bounds of secondary stack when docked one is visible.

Bug: 25346448
Change-Id: I35f4bc0ae518904b760a38449c2687392dda91f4
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
99db1863a84364339fc5dc9142f15910cdd96ed8 24-Oct-2015 Wale Ogunwale <ogunwale@google.com> Added support for pinned stack.

Used to support picture-in-picture use case for multi-window

Bug: 25006507
Change-Id: I3bef3f75e0c003f5974274294f1250171d424625
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
54977fe9e402f6a616c41232540efd3a45b196d7 20-Oct-2015 Filip Gruszczynski <gruszczy@google.com> Don't throw when request size and docked stack is not visible.

When requesting size for the stack that is next to the dock stack, we
shouldn't crash if the dock stack is not visible (which we would treat
as if it was not availble). We continue to throw an exception if the
docked stack really isn't there, but if it's only not visible, we give
the other stack full screen bounds.

Bug: 25019182
Change-Id: Ia611733590a6cb5a4ef4cc636aa0a2a6a0958ceb
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ffc11bb712343b634901fe2d0e0022e7e578dd5c 10-Oct-2015 Wale Ogunwale <ogunwale@google.com> Don't set incorrect stack bounds when rotating screen in docked mode

Both window manager and activity manager could decide what the bounds
of other stacks should be when the docked stack exist which can get
out of sync. Now window manager does the bounds calculation and
activity manager asks window manager what the bounds should be when
it needs to resize the stack.

Bug: 24738105
Change-Id: I97356f008b676d2f58a8b54fdb08735ab51394af
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
57b6ccecc07274884b425839691fa04274b832bc 06-Oct-2015 Filip Gruszczynski <gruszczy@google.com> Dismissing of docked stack by dragging to the side.

Bug: 24623909
Change-Id: Ic93b169442de1eb4dca9f65a87ae2b813bcef043
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
0689ae903628f12ff073376b655b9d972533796b 01-Oct-2015 Filip Gruszczynski <gruszczy@google.com> Fix lack of dim layer behind "Power off" window.

This enables dim behind functionality for both tasks and stacks and
groups it inside a controller that manages the dim layers (including
shared dim layers for full screen tasks/stacks).

Bug: 24331704

Change-Id: I0d1ba996d9e00d05e0203166b82268da00fbb35e
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
e45899ae4a1414560b979168412fb3d3b575d486 01-Oct-2015 Wale Ogunwale <ogunwale@google.com> Create non-docked stack with right bounds if docked stack exist

We previously created a new stack with a bounds of half the screen
instead of using whatever space is left by the docked stack.

Change also takes care of issue where the adjustment bounds was
slightly off for non-docked stack.

Bug: 24460346
Bug: 24501077
Change-Id: Ib7f6c62bdf9309ca8916527dbb206e3719a36d9e
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
b186388b673035f3a19bcc5d6f9dd8545549a224 30-Sep-2015 Wale Ogunwale <ogunwale@google.com> Merge "Report re-sized stacks/task as fullscreen when docked stack isn't visible"
f175e8a6d0d3f3ce6be94bde451e6e03f67d0705 29-Sep-2015 Wale Ogunwale <ogunwale@google.com> Report re-sized stacks/task as fullscreen when docked stack isn't visible

When a docked stack exist we resize all other stacks and crop their
window content to the stack size. This was also been done when the
docked stack exist, but not visible. E.g the primary user has a docked
stack, but the secondary user doesn't, so the windows of the secondary
user get cropped.
We now report stacks/task sizes as fullscreen whenever the docked stack
isn't visible.

Bug: 24366804
Change-Id: Ia3f24e6f7d33fc175348e27db24a15ce3027e6f7
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
1ed0d89e7e9a28a5dd52fdc40425466efd8d08ef 28-Sep-2015 Wale Ogunwale <ogunwale@google.com> Inform activity manager of stack/task rotation bounds changes in WM

Change-Id: I342093d8af1d397ab4894146f9b288bdfdc464f0
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
f370a5b3035766dab1237f74a4439eb2dddeb24b 28-Sep-2015 Filip Gruszczynski <gruszczy@google.com> Merge "Resizing docked stack by dragging dock divider."
3ddc5d60967a5daa2ebf0ede98b71093bb8cc4ae 24-Sep-2015 Filip Gruszczynski <gruszczy@google.com> Resizing docked stack by dragging dock divider.

Change-Id: Icc9df00446780f8cd81df4654ace07f33346e901
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
49b80afaf9e71d6b5d4cab26f1459d84d1070f19 24-Sep-2015 Filip Gruszczynski <gruszczy@google.com> Entry animation for docking windows.

We achieve the animation in the same way we would do that for maximizing
windows. We preserve the exiting window of relaunched activity until the
activity adds a new one. Then we animation the new window from the
bounds of the old window to the dock bounds.

This mostly reuses existing infrastructure for maximize animations, but
unfortunately needs scaling. The before window might be have one
dimension larger than after window and using cropping is not sufficient.

Change-Id: I9538ba983a0af1e64ea48aad6836173d6fd25f3b
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
466f3216505bd039a285881e06ead631331fe368 22-Sep-2015 Filip Gruszczynski <gruszczy@google.com> Showing docked stack divider window.

When there is docked stack, we want to show a "handle" through which the
user will resize the docked stack. We add it from the system process,
because we want to avoid IPC calls.

Change-Id: If15fd2a0fcb7077446d1ba6c533acb3028a42039
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
7794c359c76843300f191901d36d0c2d03154081 23-Sep-2015 Wale Ogunwale <ogunwale@google.com> Merge "Fixed issue with stack size when rotating screen."
9474421a56c8bf66086a9d253013687eb5207331 22-Sep-2015 Wale Ogunwale <ogunwale@google.com> Fixed issue with stack size when rotating screen.

Stack bounds needs to be adjusted when the screen is rotated
so it occupies the same bounds on screen.

Change-Id: Id00031f2e1275f2d095f6e6b2e76b5b5d5c13864
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
a6e902ec61ab1cd8f7d5df84deab6f26471c22fd 22-Sep-2015 Wale Ogunwale <ogunwale@google.com> Properly size tasks based on stack size.

There were a few places we weren’t doing this correctly

* When a new task is created the bounds should be the stack bounds
if the task is resizeable and not in freeform mode.
* When resizing a stack each task in the stack should be resized
base on if it is resizable vs. using the top running activity in
the stack to determine if all the tasks should be resized.

Change-Id: If3448c5629313e7e7fb91ffe8506014f16ad72db
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
923f82670c2d8f3c1f01423ad56d038e8a86a712 18-Sep-2015 Filip Gruszczynski <gruszczy@google.com> Provide anchor of the docked stack.

This is necessary for further work on dock divider. This provides an api
inside the window manager to determine, where the dock originates. From
that we can determine where to place the divider and how to apply
resizing operations.

Change-Id: I607be9297b28c926d447d83c0578594247c099c3
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
59a73ca331a786f95e08a99bbd16fbdf59280ae0 14-Sep-2015 Wale Ogunwale <ogunwale@google.com> Support creating docked stack at top/left/bottom/right half of screen

Change-Id: Id8d6f639ed67baadb856ce84a20af8929e04cb2e
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
8e89b31a62fb9ec5ad33908c5e8e9c7ab2fd949f 10-Sep-2015 Chong Zhang <chz@google.com> Move window moving and resizing handling to WindowManager

- add a startMoving API to initiate a window move from app, once
the move starts WindowManager will take over the event handling.

- detect touch events along window's outside border and start
a resize if necessary

Change-Id: Ic7e8baba34e0aa27a43173e044ffb46e93e219e0
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
24966d4789c7a2054650ec1a5ed7450f0d691224 06-Sep-2015 Filip Gruszczynski <gruszczy@google.com> Refactorings for Window Manager module.

Following improvements were applied:
* extract code from a very large method
WindowSurfacePlacer.performSurfacePlacementInner into
WindowsurfacePlacer.applySurfaceChangesTransaction; smaller methods
are easier to understand;
* WindowStateAnimator.showSurfaceRobustlyLocked can be privatized, it
is only called from one place; also there is unnecessary check for
whether mSurfaceControl is not null;
* prepareAppTransition code can be mostly moved into AppTransition;
it calls mostly methods from this class; as a result some methods
from AppTransition can be privatized;
* requestTraversalLocked can be moved into WindowSurfacePlacer, which
allows mTraversalScheduled to be a private field inside the placer;
this way WindowSurfacePlacer can nicely control and hide the need for
layouts.

Change-Id: I99006c859ef224f5dad933f5c15d2cb2b9738a9e
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
8dd46f7d81d50b7b24c26a46112369693bb143db 03-Sep-2015 Filip Gruszczynski <gruszczy@google.com> resolved conflicts for merge of 1ae66595 to master

Change-Id: I3ea98f0c6eaf3c9339ef00b6e5a8ae97c7b88655
dbf8c0d9260f83b0d4d60c1dea1fbcd023ee5d29 02-Sep-2015 Filip Gruszczynski <gruszczy@google.com> am 991e4936: am cbacd4f0: Merge "Don\'t perform layout while adjusting displays/stacks state." into mnc-dev

* commit '991e493616a644b6bb7fdea9a99990520d77348a':
Don't perform layout while adjusting displays/stacks state.
ebcc875f10f05db7365cd8afbf4e9425221ab14d 26-Aug-2015 Filip Gruszczynski <gruszczy@google.com> Move Configuration creation from Window Manager to Activity Manager.

Currently the construction of configuration is split between thease
two entities. This poses two problems: it's harder to follow the
construction logic and more importantly we can't determine if
configuration changes significantly before delegating work to the
Window Manager. This CL moves the configuration override logic to
the Activity Manager, since it both detects configuration changes and
informs clients about them. Window Manager becomes purely a recipient
of the information.

Change-Id: I075570ee055cce9c5665772fa8d4fe8ccb5c6313
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
d66af6a65533e86468db402907b35ed3e96e6bec 31-Aug-2015 Filip Gruszczynski <gruszczy@google.com> Don't perform layout while adjusting displays/stacks state.

When we detach the stack from the display we are in an inconsistent
state. We need to finish that operation, before we start laying out
things again. Otherwise we will encounter subtle bugs, where stack is
partially closed, but still used during the layout.

Display detachment was already doing the right thing and scheduling a
layout after it finishes the display detach. However, removing the
stack's windows was triggering immediate relayout and causing a crash.

This CL also adds some missing synchronization around
WindowManagerService.mStackIdToStack, which is in most cases protected by
mWindowMap.

Bug: 22191609
Bug: 23615329
Change-Id: I1e2fc42e1a5b673be808acdec473f85f138d7062
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
4d0a2d22fd2cb956e6d64a8511bbc03187a53a85 24-Aug-2015 Erik Wolsheimer <ewol@google.com> DO NOT MERGE
guard against null DimLayer instances in TaskStack
BUG: 23452983

Change-Id: I8edaafe01b7bca93bfa6a15be0ae49c5e34eff40
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
b34a7ad1af54132b6b046ab8f768e0ffb81cf581 14-Aug-2015 Wale Ogunwale <ogunwale@google.com> Added support for docked stack

Docked stacks occupy a dedicated region on a display.
When a docked stack is present all other static stacks bounds
are restricted to the region of the screen not occupied by
the docked stack.

Change-Id: I6aec3aa19c41a7e756375002f3a925977b5533b5
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
f0d15a752c9954906b18048aba59b99014e7f55e 12-Aug-2015 Filip Gruszczynski <gruszczy@google.com> am d994c254: am d200aa4c: am a546e5be: am ba1e3915: am 59123b9b: Merge "When closing task stack remove reference to display content." into mnc-dev

* commit 'd994c254dafc224ca78c00f4df11cfa5e7f5c03b':
When closing task stack remove reference to display content.
26ed265ceea18a42fddb95777c51a60063b0ef13 10-Aug-2015 Filip Gruszczynski <gruszczy@google.com> When closing task stack remove reference to display content.

This tightens the guarantee that detached stack won't be used. We also
add logging to detecting a situation where a stack not belonging to a
display is being moved on that display.

Bug: 22191609
Change-Id: Ia674bb5960018104a56c5138775ab5216906675b
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
868a5e16c3f40a1c36bc2bd15891e930800e781a 03-Aug-2015 Wale Ogunwale <ogunwale@google.com> Support for an activity to change and/or query it's associated stack

Change-Id: I4fc1b47e5d6196a56a6e40f10fae97219554722c
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
ddc1cb2c15549ed23dce9d416680a009fa6ae23c 26-Jul-2015 Wale Ogunwale <ogunwale@google.com> Added support for static vs. dynamic stacks

Now that stacks represent workspaces we can define static
stacks which help shape the characteristics of the tasks
they contain. For example, fullscreen tasks/activities will
normally be launched in the stack with id
FULLSCREEN_WORKSPACE_STACK_ID, while freeform tasks/activities
will normally be launched in the stack with id
FREEFORM_WORKSPACE_STACK_ID.

Also, added ability to position a task at any index in a stack.

Bug: 22068114
Change-Id: Ib6c62a84b5f204fbf072755264c5c5eda6184f97
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
e4a0c5722b1d8db95dfc842d716452dbbf02c86d 30-Jun-2015 Wale Ogunwale <ogunwale@google.com> Allow stacks to hold tasks on various sizes.

Tasks are now resizeable just like stacks. Adjusting the size
of a stack will also adjust the size of all it's containing
tasks. This model allows us to be more flexible
in using stacks as workspaces (like you would have in a
desktop environment) and tasks as the resizeable windows
within the workspace.

Also added "adb shell dumpsys window visible-apps" for
getting the list of visible app windows.

Bug: 22068114
Bug: 19182363

Change-Id: I5bf77063252a5abae4e327f6fc42e607091749f9
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
06d582d4e42893e7e061477004d991d35b5f0d78 01-Jun-2015 Doris Liu <tianliu@google.com> Fix calls to Rect.intersect(Rect) in package com.android.server.wm

This CL checks for the return value for Rect.intersect(Rect) for whether
there is actually an intersection before taking the calling rect as the
intersection. In addtion, this CL handles the cases where there is no
intersection (Rect.intersect(Rect) returns false).

bug: 7368679
Change-Id: I7d5ef7059ac432170470a108c0d6dece230ec0b3
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
6dfdfd6741c5a3dd8d8a49ddbd6ee5dfe2fd292d 15-Apr-2015 Wale Ogunwale <ogunwale@google.com> Added attribute showForAllUsers that deprecates showOnLockScreen

The new name is more meaningful to what the attribute actually does.

Also, force the FLAG_SHOWN_WHEN_LOCKED flag for windows that belong
to acitivties with the showForAllUsers attribute set.

Bug: 20227306
Change-Id: Ifd49166c3ec0e67ae43addc0fb30038523332ea5
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
3fcb4a89750d6df42f850021cd754500fc084086 06-Apr-2015 Wale Ogunwale <ogunwale@google.com> Fixed bug with ActivityInfo.FLAG_SHOW_ON_LOCK_SCREEN not working

There were a few places in ActivityManager and WindowManager that we
were not taking the value of the flag into account when deciding
which task to be up top in multi-user mode.

Bug: 10533764
Change-Id: If2032ccd5f1a67b3ad4af376b4db7043e9070796
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
0ade61bc97d0cef149c2338d753fda6ccc2bb964 24-Mar-2015 Wale Ogunwale <ogunwale@google.com> Fixed build breakage caused by AOSP submission http://go/oag/c/143360

Change-Id: I64288bd49e6713ab40b52735802210abc91348a7
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
a44c1bbf7283b3160aaeff831f8fd4294cb85bb0 24-Mar-2015 Olawale Ogunwale <ogunwale@google.com> am 4f8783de: am fecfadb5: am 07520c94: Merge "DimLayer : remove unnecessary surface transaction calls"

* commit '4f8783de72633188e4a52ffdf79e5b8f91282974':
DimLayer : remove unnecessary surface transaction calls
6ce3a37f6b06585c5c0c045d1df69f21f8200067 23-Mar-2015 Dohyun Lee <dohyun.lee@lge.com> DimLayer : remove unnecessary surface transaction calls

There is the case that adjustSurface() get called even if
the size of the surface of DimLayer is not changed actually.
Since changing the size of a surface is processed synchronously
in the SurfacFlinger, there is usually a few milliseconds delay
(up to 1 vsync interval) when we launch an application.
This patch avoids such cases.

Change-Id: Ib1f76d54f9f2364ac54b70120e4b781e8534e750
Signed-off-by: Dohyun Lee <dohyun.lee@lge.com>
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
00a6675461dda409869a1af56107506e24cf6f9e 23-Mar-2015 Craig Mautner <cmautner@google.com> Add null check and call destroy from single point.

Ensure that calling destroy() on a DimLayer surface only happens
once.

Fixes bug 19660387.

Change-Id: Iee8ea20b5d7c3a8f81f14a3ecff66a1dc1a8d719
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
f9c814978e41e56d07701a6795d768abbf7b2be8 26-Feb-2015 Wale Ogunwale <ogunwale@google.com> Account for IME and screen decors when laying out a resized window.

* Adjust position of target IME resized window if it is been obscured
by the IME.
* Make sure resized window frame is within content frame so it doesn't
extend to the screen decoration regions.

Bug: 19424276
Bug: 19500488
Change-Id: I561338101697e10ea5072ee65a180dd0155d0da4
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
b605f4af143bd129ec84bdafe89400cdc022ddc2 18-Feb-2015 Craig Mautner <cmautner@google.com> Refactor computeScreenConfigurationLocked and more.

- Recognizing that computeScreenConfigurationLocked() only returned
false if mDisplayReady was false allows multiple code
simplifications.
- Make computeNewConfigurationLocked() always return a non-null
value.
- Remove unused Session parameter from removeWindowInnerLocked().
- Just allocate mForceRemoves one time.
- Since ADJUST_WALLPAPER_VISIBILITY_CHANGED was unused have
adjustWallpaperWindowsLocked() return a boolean.
- Remove unused long parameter from handleNotObscuredLocked().

Change-Id: Ifd15736b163ab6e989f8ca32cf8f94b316386216
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
b1193ade255385d899d81e8d62ceaa97c7d6aeb6 17-Feb-2015 Wale Ogunwale <ogunwale@google.com> Merge "Apply stack dim layer to entire screen for system windows."
498e8c92d71ff4ccfd2a77bdc53160e8dc93c7fe 13-Feb-2015 Wale Ogunwale <ogunwale@google.com> Apply stack dim layer to entire screen for system windows.

System windows like alert dialogs are attached to the currently
focused stack even when the stack isn't full screen. This causes
the dim not to apply to other visible stacks when a system
window is up. Change applies the dim to the entire screen for
system windows since they extend outside a resized stack.

Bug: 19332229
Change-Id: I94affa6a652326bf2cf14b1b8bf54862c111c540
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
4a02d8133bb8bda109404c78002f80cda1f1179e 13-Feb-2015 Wale Ogunwale <ogunwale@google.com> Don't move multi-window stacks on orientation change.

Change allows resized stacks to remain in the same location
while their content change orientation.

Bug: 19358195
Change-Id: I5a9898c1cf85cb5c4c2eab0f4969b339defb199a
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
a928127a74d6ffe9334774e64a4470aedbe6c28b 07-Feb-2015 Wale Ogunwale <ogunwale@google.com> Set TaskStack config orientation based on dimensions

The TaskStack override configuration is set based on the
stack dimensions so we can load the most acturate resources
for activities in the stack in a multi-window environment.

Also, disabled fixed screen orientation for resizeable
activities.

Bug: 19305402
Change-Id: I7b182554523b12f2ef77f8bbc7b16891231125bf
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
dd11d4d6d35fd33625116a97e53b1026879b80bf 03-Feb-2015 Wale Ogunwale <ogunwale@google.com> Fixed issue with resized stack sticking to the top of the screen.

WindowState.mUnderStatusBar wasn't set correctly when the stack was
resized before the window was added to it. Changed to use
TaskStack.mUnderStatusBar instead which will always have the
correct answer.

Bug: 19204013
Change-Id: Ib4660302c6a2aebd47bff354c1efab93a1e1a255
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
9d3de4cfb42519fefe9d8b03c38ba440bd6bc886 02-Feb-2015 Wale Ogunwale <ogunwale@google.com> Support for activity to opt-in/out of resizeable/multi-window support.

Bug: 19178148
Change-Id: I5819a71cdc48e0af4add11a6d4a503ec5cbe5d63
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
aab56dbc1ef5c91afad1e61d633305bb3aa3cb1b 30-Jan-2015 Todd Kennedy <toddke@google.com> Show stacks underneath a resized stack

When a stack is resized, make sure any non-fullscreen stack beneath it
becomes visible. This may mean additional activities are resumed in the
process.

Bug: 19083171
Change-Id: I5e7a3f82d76932ea2b9dbf0324ea183c42ee5496
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
783f28691e27b7b116730fad4f9fd9c083bab283 27-Jan-2015 Wale Ogunwale <ogunwale@google.com> Merge "Support activities in the same process having different resources."
83162a90278d9d52d8fca7ee20ba314b452261de 26-Jan-2015 Craig Mautner <cmautner@google.com> Eliminate groupId and add task to AppWindowToken

Simplifies access by eliminating indirect referencing.

Fixes bug 18088522 item #15.

Change-Id: I9049192a7f3e1028d60c4f2d4d4a0d4aad590aa4
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
60454dbc4d815c90ff2713e224953d6547fc3ad5 24-Jan-2015 Wale Ogunwale <ogunwale@google.com> Support activities in the same process having different resources.

Activities can be of various sizes in a multi-window environment.
This change allows them to have override configurations that allows
different resources to the loaded if needed.

Bug: 19002213
Change-Id: Ib2c7be0b427f5ce05e7a362bcdd496ddbc9164f0
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
e3119b7d353e71d1f94ddff932b722b4d285931e 21-Jan-2015 Craig Mautner <cmautner@google.com> Refactor removeApp and removeTask for last removals.

Move app token removal to the AppWindowToken class so cleanup can
be done locally. Move task removal to the Task class so cleanup can
be done locally. Call task removal when the last app is removed.
Merge actions done prior to method calls into methods.

Fixes bug 18088522 item #12.

Change-Id: I5ce85d2bb309ceb82bd7404e27a56a7c31cd7359
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
00a2725683177e97e02f474332a1b64dafa0ceba 11-Nov-2014 raysb.kim <raysb.kim@lge.com> Only one task within the stack should moveToBack

In case of the last stack of application move to back,
ONLY one stack within stack should move to back.
but stack itseft move to back.

Default bahavior of ActivityManager is that the stack will
go back within stack when the last stack of application move
to back. The stack is managed by DisplayContent of WindowManagerService
should be same but taking one more action that move stack itself.

Change-Id: If394ddf16b0fcda2ae3252e8f3b5336322ef6808
Signed-off-by: Seunghyun Lee <seunghyun85.lee@lge.com>
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
7c9ee19cbd0360a62dc4322169afc1b0b9c9e022 15-Aug-2014 Craig Mautner <cmautner@google.com> Fix race condition between binder deaths

If a Binder dies there is a race between activity manager and window
manager to see who can handle the binderDied call first. If the
activity manager wins the race it will remove the activity and task
but leave the windows around. Until the WindowState.binderDied call
is made and all animation is complete the windows will try to access
the task that they were associated with.

This fix removes the windows of an activity when the activity is
removed. It also defers removal of the activity and task until
exiting windows have completed their animation.

Fixes bug 17031518.

Change-Id: Idf52f55c5feb0cad4e3664ef2eae5b7e95bbf490
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
bc2a6dff1f0edfb2856377fbdb6378158621bd16 14-Jun-2014 Craig Mautner <cmautner@google.com> Do not treat the dummy animation as an animation

The dummy animation is a place holder. When the task stack is being
removed treating it as a true animation forced us through a path
where we deferred the detachment and made a call to tmpRemoveWindows.

Also replaced call to tmpRemoveWindows with a real remove windows
call. The tmpRemoveWindows call does not clean up the Session
and this leaves a surface on the screen.

Fixes bug 15591610.

Change-Id: I05f7bc276bfed2366bbcd8443c92a4bbbc8a4491
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
e0d50cc15be2c8aa9e4a4aa6cf34cc7cf23c9109 02-Jun-2014 Craig Mautner <cmautner@google.com> Compare task userId with userId profiles.

Change comparison of Task.mUserId from comparing with only the
current user id to comparing with all current profile user ids.

Fixes bug 14930145.

Change-Id: Ibbae08da6f4eaa31b171becdd8957293758f527b
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
95da1087ed3c7b9983b571bc5409827ae390f15f 25-Feb-2014 Craig Mautner <cmautner@google.com> Clean up activities and displays when done

More maintenance fixes.

Fix bug 13157352.

Change-Id: Ic86d39a84452a1cf1dc1762cec517b419ad0a852
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
474f1fbe8d87563909c3cb69ec921d427cd1f0b0 13-Feb-2014 Craig Mautner <cmautner@google.com> Merge "Don't null class member before using it." into klp-modular-dev
991146f8ef2ba3e5610191b82a6144013ce7e8c1 13-Feb-2014 Craig Mautner <cmautner@google.com> Don't null class member before using it.

Changing the order of detachStack() and usage of mDisplayContent
fixes NPE.

Fixes bug 12823709.

Change-Id: I04760b1d6fd5d3ffc49b99ca4acb47bf7e61cb46
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
b660b9d8cf6b951b85a35599d636c470795e9a1a 13-Feb-2014 Craig Mautner <cmautner@google.com> Update DimLayer sizes on rotation.

Required replumbing and updating the TaskStack bounds calculations
to match the new separation of TaskStack from DisplayContent.

Fixes bug 12780687.

Change-Id: I061c92831c06f4eb3e673ad6296e721b0c0f3202
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
9ef471f7f2f59de032d7cb9c3c7241486109979e 07-Feb-2014 Craig Mautner <cmautner@google.com> Don't remove Activities and Tasks until animation done

Just like stacks and displays, activities and tasks need to stick
around until animations have completed.

Change-Id: I54fe8f6855d60cbc3a25cbc6e762defd5ac50bf5
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
1bf2b873470d2ba8a4ac218da73516cc2b20aa76 06-Feb-2014 Craig Mautner <cmautner@google.com> Defer detach until animations are complete.

Allowing the detach of ActivityStack from DisplayContent to happen
immediately was causing all sorts of problems associated with not
having a Display to complete the animations.

Waiting for animations to complete before either the detach or the
display removal fixes those problems.

Change-Id: I8a5663bfac5c3c1084ff4fcc451e0e38e8080265
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
dc548483ae90ba26ad9e2e2cb79f4673140edb49 05-Feb-2014 Craig Mautner <cmautner@google.com> Move activities from DisplayContent to TaskStack

Now that activities and tasks can be detached from a display do not
keep their state within the DisplayContent class. All such state is
now moved to the TaskStack class with this change.

Change-Id: Ie6b1811e9ec3f545782bad8c3461bd4f2d336b93
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
df88d73092c62a1a3cd2b2056ca63ae2e70cc238 27-Jan-2014 Craig Mautner <cmautner@google.com> Add IIntentSender to ActivityContainer.startActivity

PendingIntents and IntentSenders can now be launched. Still does not
work once the host activity has been paused and resumed.

Window manager TaskStacks now exist independently of Displays and app
windows persist after Displays are removed below them. Attaching the
stack to a new Display does not yet restore the windows to it.

Fixes bug 12747909.

Change-Id: I509007ee23fda400b353f483cf6ecce08177763b
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
04a0ea60ac7e20369e63edc4f3f8cedf8425a439 13-Jan-2014 Craig Mautner <cmautner@google.com> Retain stacks even if they are empty.

Previously stacks would be removed when the last ActivityRecord was
removed. This causes problems for ActivityContainers which persist and
permit activities to be launched into an empty stack.

Change-Id: Ia79ac65d17c42eff3a7b1321980c21b29996001b
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java
9158825f9c41869689d6b1786d7c7aa8bdd524ce 22-Nov-2013 Amith Yamasani <yamasani@google.com> Move some system services to separate directories

Refactored the directory structure so that services can be optionally
excluded. This is step 1. Will be followed by another change that makes
it possible to remove services from the build.

Change-Id: Ideacedfd34b5e213217ad3ff4ebb21c4a8e73f85
/frameworks/base/services/core/java/com/android/server/wm/TaskStack.java