History log of /frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
4c36b55fc53b1d5f29fe530c00992f6be5c46e3e 24-Apr-2018 Yuki Awano <yawano@google.com> Do not magnify if surface control is not set

Bug: 77938723
Test: None
Change-Id: I93fc306bf6287016ba86b4404507df4ae926dcad
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
8a4af9c3e830a5d456486593f3047e833f76b4b5 24-Apr-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Update surface position once created." into pi-dev
b1ea7ca7d3d0bb834056315cf7191524e043291a 06-Apr-2018 Evan Rosky <erosky@google.com> Update surface position once created.

Otherwise starting freeform activities leaves the surface at
origin until something else updates it.

Bug: 72026789
Test: WmTestApp23 starts without offset surface. Added
WindowContainerTests#testAddChildSetsSurfacePosition
Change-Id: I707cd6924dab190ec84f4a05134c9dce4ff49468
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
39179062c5a0b8cde180344f7370ebb40e7851d1 18-Apr-2018 Jorim Jaggi <jjaggi@google.com> Animate home in separate layer

Such that it always stays at the bottom.

Test: Open app in split-screen
Test: go/wm-smoke
Change-Id: If713c6c04e6616ff04d8475ea2da0241ed863628
Fixes: 77144130
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
be4182939fc414adaa54cb1fd9b5185e83d64579 26-Mar-2018 Jorim Jaggi <jjaggi@google.com> Fix issues with z-ordering during animations

- Make sure to use DC pending transaction when updating z-layers,
as it could lead to reordering of z-order assignment due to how
we apply pending transactions in the hierarchy

- Create a separate boosted animation layer in which AWT with
zOrder=top animate, which happens above all stack. This brings
back the boosting logic in O without boosting non-boosted stack
above non-animating tokens

Bug: 70730519
Bug: 72649981
Bug: 72686618
Bug: 37953606
Test: Share link from Chrome to Clipboard, make sure disappear
animation happens properly
Test: go/wm-smoke
Change-Id: I3957daac76b991402bf3f520c4a3d3f519933f72
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
32ca41d02880686148cfa730897c575104cf045c 21-Mar-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Remove am/wm.proto which is redundant. The naming convention is defined in core/proto/README.md" into pi-dev
6c6e9cab42bccb44ebb4b30e7eab7394c0dbb759 21-Mar-2018 Yi Jin <jinyithu@google.com> Remove am/wm.proto which is redundant. The naming convention is defined
in core/proto/README.md

Bug: 72474563
Test: make sure the Android build
Change-Id: I2a90cbb6bb0b0c62fe4a0b81cb5bb3ea36381871
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
6728e2f3692df6e9684bd472244f483a1ea14e42 19-Mar-2018 chaviw <chaviw@google.com> Merge transactions to parent if layer is going to be removed.

Transaction objects are stored in each WindowContainer. There are cases
where a transaction is added for a layer by using the WindowContainer
transaction object. The WindowContainer can be removed before its
transaction is merged to the global transaction. If that occurs, the
layer can remain around in SF until gc cleans it up.

Bug: 74078662
Test: Open new app. The snapshot animation leash should be gone from
dumpsys.
Test: Open app in split screen. Exit split screen. Open app again in
split screen. There shouldn't be any empty stacks in dumpsys.

Change-Id: I31a61773edf1f541726691b4510c544bbd5beea4
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
f12f9d3ded0d947b1b0c9fd71cf75bdb83f5005a 02-Mar-2018 Robert Carr <racarr@google.com> Assign leash layer when starting animations.

Currently AppWindowToken does this but WindowContainer does not
ending in a situation where WindowState level animations can cause
child windows to be ordered below the IME when they would otherwise
be above. I couldn't find any reason for the assignLayer call that
was here, as the parent won't view the leash as a child from the WindowContainer
perspective and thus assignment will never happen. I've just replaced
the old call with the new layer assignment.

Bug: 72173720
Test: Manual. go/wm-smoke
Change-Id: Iba57158645e27c2ff74ce6e0b59cd15b15bfe3f5
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
13b154893a19cbeb27e0e6d980d3c6f11d71c3e3 01-Mar-2018 Chavi Weingarten <chaviw@google.com> Merge "Use destroy in transaction for animation"
123e07a47f3056020d6f4d574acba2b7b37a423a 27-Feb-2018 Winson Chung <winsonc@google.com> Fix issue with stack order positioning when ending recents animation.

- When moving the home stack from a higher index to behind a stack with a
lower index, the position does not need to be adjusted in order to move
the stack (since positionChildAt first removes the stack before adding
it). Updated the existing tests with a case to move the stack to a
non-bottom index to verify this.

Bug: 73901604
Test: atest ActivityStackTests

Change-Id: If1d3af0f35d60569d8a3d86898483bacaaa98bb9
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
b736e3215b8e0afeecd053a43fde6c002ca5c2a0 23-Feb-2018 Chavi Weingarten <chaviw@google.com> Use destroy in transaction for animation

Previously, the code calls destroy which will be invoked immediately so there
needed to be ways to delay destroy. This caused some overhead where there
needed to be Runnables to ensure client state updates were called before the
destroy. Instead, use the Transaction.destroy so the destroy doesn't get invoked
until apply is called. This allows any other client states to get updated before
the destroy is called.

This is specifically necessary for reparent calls since a Surface can be
reparented from a Surface that's about to get destroyed to a valid Surface
that's not getting destroyed. This change ensures that Surfaces will get
reparented before Surfaces are destroyed when Transactions are applied.

Original CL: ag/3573288
Reason for revert: Original issue is fixed in ag/3647191.

Fixes: 72953020
Test: SurfaceAnimatorTest
Change-Id: I8bc58e0efc2ae1558c122a40eb52e9c874c0c997
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
a860141390ad48b3606c38a8db934d35bd54dc4e 16-Feb-2018 Chavi Weingarten <chaviw@google.com> Merge "Revert "Use destroy in transaction for animation""
38804384df93fb94a1e411ef8752e7aff2249bf4 15-Feb-2018 Chavi Weingarten <chaviw@google.com> Revert "Use destroy in transaction for animation"

This reverts commit 1aa12755a98488599de1b240732e16c44b0e3fe0.

Reason for revert: 73448047, 73448319

Change-Id: Ieb5d1f8a7bfd9ba0a2ac6df35dbf76f76698120f

Fixes: 73448047
Fixes: 73448319
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
b0707717315eae52161b363560636098a5c81b64 15-Feb-2018 Rob Carr <racarr@google.com> Merge "Assign animation layer above highest animation target."
2f8aa394f4c3cac043e67095f180db63e4790f6a 31-Jan-2018 Robert Carr <racarr@google.com> Assign animation layer above highest animation target.

Rather than above all stacks. This fixes the case where when
transitioning to the minimized home state, the secondary split
screen app and home are in a transition, but this transition needs
to occur under the primary split-screen app which is not a part
of any transition.

Bug: 69553456
Test: Manual. go/wm-smoke.
Change-Id: I3069e4a1bc3a30a1567eb51731c44f927cc0cefc
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
1aa12755a98488599de1b240732e16c44b0e3fe0 07-Feb-2018 chaviw <chaviw@google.com> Use destroy in transaction for animation

Previously, the code calls destroy which will be invoked immediately so
there needed to be ways to delay destroy. This caused some overhead
where there needed to be Runnables to ensure client state updates were
called before the destroy. Instead, use the Transaction.destroy so the
destroy doesn't get invoked until apply is called. This allows any other
client states to get updated before the destroy is called.

This is specifically necessary for reparent calls since a Surface can be
reparented from a Surface that's about to get destroyed to a valid
Surface that's not getting destroyed. This change ensures that Surfaces
will get reparented before Surfaces are destroyed when Transactions are
applied.

Change-Id: I25bb94378de2c03565ee7df8ab5ef393b57f3aec
Fixes: 72953020
Fixes: 71499373
Test: Tested issue from bug
Test: Set animation duration to 0. Ensure no crash
Test: SurfaceAnimatorTest
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
2f0567b00d22edba0b87c0d06766c3cacaa0e041 30-Jan-2018 chaviw <chaviw@google.com> Use self's pendingTransaction object when setting position.

When iterating through each child to set its updated position,
the transaction object was passed to the children. This could allow
multiple transactions to update the same property on the same child.
If that occurs, then the merge does not guarantee the same order.
This could cause earlier transactions to overwrite later ones. Instead,
have each WC update its own transaction object.

Change-Id: Ie1bb758e4efd74fa012c7ec945d9c1c586162df4
Fixes: 72198558
Fixes: 72463091
Test: Issues from bugs no longer occur.
Test: go/wm-smoke-auto
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
55c47ab2e5b39dd66e7f8a16045b47d624161341 30-Jan-2018 Chavi Weingarten <chaviw@google.com> Merge "Added animations to dim layers"
2fb06bc31f06ac046c94e41dbcaf019623052de8 20-Jan-2018 chaviw <chaviw@google.com> Added animations to dim layers

Added animations to dim layers when dims are set for
WindowState surfaces since they're controlled by the system.

Test: Dims for dialogs now animate.
Test: DimmerTests
Fixes: 71841698
Fixes: 69553362
Fixes: 71614627
Fixes: 72333587

Change-Id: I34f6f3d7885d5c9c0075a941e40d68bc5618a016
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
a2a55b3b36831b609acb6da9a4d45787e453ec5a 29-Jan-2018 Bryce Lee <brycelee@google.com> Merge "Do not propagate parent bound changes from task as onResize."
66f0026f3f27e71dfb764df438ce9016d7c5f08d 26-Jan-2018 Winson Chung <winsonc@google.com> Merge changes from topics "reland_recents_animation", " reland_recents_animation"

* changes:
Fix issue with reparenting stacks on displays.
Revert "Revert "4/ Update SysUI shared lib for Recents transition""
Revert "Revert "3/ Add input consumer to capture touches during a Recents transition""
Revert "Revert "2/ Add support for remote Recents animation""
Revert "Revert "1/ Create display content window controller to position stacks in the display""
e2d721781fc024cbd9a14929741e5b476242291f 25-Jan-2018 Winson Chung <winsonc@google.com> Revert "Revert "2/ Add support for remote Recents animation""

This reverts commit 9f8518e532e41ba57916afc49bba72bc23ad3eda.

Reason for revert: Testing relanding changes with ag/3515280

Change-Id: I410bd752c815a5b998a719453def01e00a9d47c8
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
7f1fa997a9f0ff049406fba2c7717445769cbc4b 10-Jan-2018 chaviw <chaviw@google.com> Don't take screenshot when no WSA surfaces are visible.

Currently screenshots are taken even when no WSA surfaces are visible.
This results in black screenshots geting taken and later used to show in
recents. Restore previous behavior where screenshots are not taken for
apps that don't have any WSA surfaces visible.

Test: Enter split screen. Put an app in the secondary screen. Exit
split screen and enter recents. App that was secondary should now contain
a correct screenshot instead of displaying a black screenshot.

Change-Id: I1417afa0bf6602f3ca7ed55e96fc94bce5f5b4fe
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
9f8518e532e41ba57916afc49bba72bc23ad3eda 25-Jan-2018 Jorim Jaggi <jjaggi@google.com> Revert "2/ Add support for remote Recents animation"

This reverts commit 0026a5152c427f9cf2c04da2b23a5ece2fcdb36d.

Breaks presubmits
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
0026a5152c427f9cf2c04da2b23a5ece2fcdb36d 17-Jan-2018 Winson Chung <winsonc@google.com> 2/ Add support for remote Recents animation

- Allow the recents component to drive the animation from an app into
Recents using the remote animation framework. When initialized, the
animation repositions the recents activity behind the currently visible
tasks and provides the set of surface controls for the visible tasks.
Once complete, the recents component notifies the system whether it
has completed the animation into the recents activity, or whether it
should restore the previous state. In addition, there is a prescribed
delay after which the system automatically cancels the recents animation.

Bug: 70180552
Test: go/wm-smoke
Test: Manual, swipe up with suitable launcher build

Change-Id: Id32f03c7ad2288dce06231cfaa4b21916da511d7
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
d92ae48606fd89f0fffd570db8d3175cd6f82728 22-Jan-2018 Bryce Lee <brycelee@google.com> Do not propagate parent bound changes from task as onResize.

When a stack is resized on the WindowManager side, it does not
itself signal a resize in any children. The children themselves will
receive updated override configurations for this. It is therefore not
necesssary to propagate calls from the task to the children when the
stack is resized.

This changelist separates out the callback for parent resizing into
onParentResize. The default implementation is to call onResize. The
default implementation of onResize now calls onParentResize on its
children. For Task, onParentResize is overridden to prevent
propagation.

Change-Id: If7990c88f12245774d085650b15da9abc96bf622
Fixes: 70558903
Test: atest FrameworksServicesTests:com.android.server.wm.WindowContainerTests#testOnParentResizePropagation
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
6db6679a1a365fab545e9be5964645fafeb9a25d 12-Jan-2018 Chavi Weingarten <chaviw@google.com> Merge changes from topic "fixTurnOnScreen"

* changes:
Remove TURN_ON_SCREEN from bulkUpdate and set mTurnOnScreen.
Revert "Revert "Call prepareSurfaces in applySurfacesChangesTransaction""
Revert "Revert "Revert "Revert "Avoid setting size/position on Transaction if not needed""""
3e751afd4e526d9e8627eabc57d15d6b357f4065 11-Jan-2018 chaviw <chaviw@google.com> Revert "Revert "Revert "Revert "Avoid setting size/position on Transaction if not needed""""

This reverts commit b38a6704e09b80b9b4fe4f3ad0d16ad6179f612e.
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
a28ed766c4c21da06b83faee93776225a4673897 11-Jan-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Add WindowContainer proto definitions"
b38a6704e09b80b9b4fe4f3ad0d16ad6179f612e 10-Jan-2018 chaviw <chaviw@google.com> Revert "Revert "Revert "Avoid setting size/position on Transaction if not needed"""

This reverts commit 1e8c4c8c0c9111b7ae90e110c73122c7bff1df81.

Fixes: 71789344
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
04ab439865c0697940453380b05040044f2e04e3 10-Jan-2018 Vishnu Nair <vishnun@google.com> Add WindowContainer proto definitions

Bug: 64831661
Test: verified proto dump from winscope
Change-Id: Id4d595a58f4ce0ce1891b3731ecbb5ce9b938006
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
1e8c4c8c0c9111b7ae90e110c73122c7bff1df81 09-Jan-2018 Jorim Jaggi <jjaggi@google.com> Revert "Revert "Avoid setting size/position on Transaction if not needed""

Original issue will be fixed with CL in same topic

This reverts commit d70feb234f47d6088c751f8c5529a29ac3aa029b.

Bug: 71694437
Bug: 71692657
Bug: 71510789
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
4130a68a92b2c5264917d9ac37b51b74aa7993b9 09-Jan-2018 Jorim Jaggi <jjaggi@google.com> Fix SurfaceAnimator and SurfaceAnimationRunner tests

Since we marked mAnimator.mInitialized to true in the tests,
WM executed things from another thread during tests leading to
concurrency bugs.

Instead, we stub out addAfterPrepareSurfacesRunnable to a consumer
which executes the runnable directly during tests, avoiding the
need to let WM process animation frames.

Also attempts to fix flakyness in SurfaceAnimationRunner

Test: go/wm-smoke
Test: SurfaceAnimatorTest
Test: SurfaceAnimationRunnerTest

Change-Id: Ic9522e1afef6ce62667aefca80e58d6fb1db3424
Fixes: 71650763
Fixes: 71602314
Bug: 71719744
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
d70feb234f47d6088c751f8c5529a29ac3aa029b 08-Jan-2018 Jorim Jaggi <jjaggi@google.com> Revert "Avoid setting size/position on Transaction if not needed"

Reason: Causes weird issues with transaction reordering

Fixes: 71694437
Fixes: 71692657
This reverts commit 88f620534f9fe2c3a32765b2a34d3092ab889b1a.
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
9454d58f576e0386b7cafcab567372415d9f7c18 04-Jan-2018 Jorim Jaggi <jjaggi@google.com> Merge "Avoid setting size/position on Transaction if not needed"
88f620534f9fe2c3a32765b2a34d3092ab889b1a 03-Jan-2018 Jorim Jaggi <jjaggi@google.com> Avoid setting size/position on Transaction if not needed

Passing the JNI layer is quite expensive. Avoid updating the
position/size if not needed by storing the last size.

Test: AppTransitionTests
Test: go/wm-smoke
Bug: 71510789
Change-Id: Ibb3660114fb0e573c9cd2144e5af11f57a96a9d6
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
596a199dd80e872a1b35c1e0af69786af190f98b 29-Dec-2017 Jorim Jaggi <jjaggi@google.com> Fix z-order when transfering animations

We need to reparent the transfered leash to the the animation
layer, not the original parent

Test: Open Play Movies, observe correct z-order during cold-launch
Test: go/wm-smoke
Test: SurfaceAnimatorTest
Change-Id: Ic5a68c68514bb3560b6877a9a29c506aeccee2bf
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
619c9f7c5cd2a19912f9a4f2dbfe1a32d944a75b 19-Dec-2017 Jorim Jaggi <jjaggi@google.com> Handle z-layering in animation layer

We use the prefix order to determine base layer within the
animation layer. This ensure that for the animation windows, the
z-ordering during animations doesn't change.

We then boost anything that needs a z-boost to 800570000 + prefix
order, such order within the boosted layers is preserved as well.

Also fix an issue where the thumbnail wasn't attached to the
animation layer.

Test: WindowContainerTests
Test: go/wm-smoke
Bug: 64674361
Change-Id: If5909bd87a12f1d8920c7232acab0f3d17be0f6c
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
23ee71c8c2a65382166db88423af2dbf2cfacfa4 18-Dec-2017 chaviw <chaviw@google.com> Set initial position for WindowAnimation and reparent animation leash.

1. Set the initial position for the WindowAnimationSpec to be the stack
position.
2. Reparent the animation leash to mAnimationLayer
3. Updated Surface names for clarity.

Test: Opening apps animate from the correct start location. When apps
are animating, their layers are reparented to the correct animation
layer.

Change-Id: I3e3a1e45f0a0cf9d471dee105abd9bce05d1e91d
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
e07246ad7bfa2fad8e6122301a460c2f6b783680 13-Dec-2017 chaviw <chaviw@google.com> Set stack size and position and update children surface position.

Update the stack's size and position to represent the bounds. Then
update all children's positions so they are in the correct place within
the stack's bounds.

Test: Split screen, pip
Change-Id: I0372a8d20407ec35d1e8c0fc8165253f68d2f18f
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
980c9de9766668f7d8899067fe34833560197108 17-Nov-2017 Jorim Jaggi <jjaggi@google.com> Lock free app animations (3/n): Implement transfering animations

Test: go/wm-smoke
Bug: 64674361
Change-Id: I2170c31c1a95cea049bcc66978bb7737337503b3
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
f5f9e12146a3857c28b8c0fc96c2fa68a2ae40de 24-Oct-2017 Jorim Jaggi <jjaggi@google.com> Lock free app animations (2/n): Use SurfaceAninimator

This is the main CL that switches over from using the legacy
animation system to using the new SurfaceAnimator for app
window animations. Also moves applyAnimationLocked to
AppWindowToken.

AppWindowAnimator still has a bunch of state that needs to be moved
into AppWindowToken in future CL's.

Test: go/wm-smoke
Bug: 64674361
Change-Id: Ifc83cbac281ce0654ecd8a1c2ca9c24a4d87c1d1
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
a5e105728fb87264b9dc2e66b3703168f8864110 15-Nov-2017 Jorim Jaggi <jjaggi@google.com> Lock free animations (2/2)

Second CL that migrates WSA to use SurfaceAnimator

We start our synchronized app transition journey by showing that
the concept works by using WindowState animations as proof of
concept.

The main class in this CL are SurfaceAnimator and
SurfaceAnimatorRunner. When we start an animation on a Window, we
create a new bufferless surface, called "The Leash", in the
hierarchy and attach the surface of WindowState onto it, while
attaching the leash onto the old surface parent which is still
responsible for z-layering.

Then, we pass off the Leash into SurfaceAnimationRunner, which then
changes the surface properties of Leash in every animation frame,
without holding the WM lock. While it's doing that we can still
update the z-layering of the window, or even relayout the window
of needed - the important surfaces for this are still under WM's
control.

In case the animation is finished the window surface gets
reparented to its original parent, and the leash is abandoned.
Note that the reparenting is done in the same transaction as
processing the animation finish, such that we don't end up with
a flicker in case of a disappearing animation, where the window
surface gets destroyed.

In case the animation needs to be cancelled, WM can revoke control
of the leash by reparenting the window surface. Even if the
cancellation signal is heavily delayed, WM immediately regains
control over the surface by reparenting it within a transaction.

We also introduce the concept of animating a WindowContainer. We
clean up isAnimating:
- isLocalAnimating: is the container itself animating
- isAnimating: is the container or one of its parents animating
- isSelfOrChildAnimating: is local animating or any child
animating.

SurfaceAnimationRunner also needs it's own thread so it's not getting
bogged down by any WM lock contention by processing regular
animation frames. We call that thread android.anim.lf (lockfree).

Now, imagine that SurfaceAnimationAnimator would sit behind an IPC in
another process and instead of animating WindowState, we'd animate
AppWindowToken. Then, synchronized app transitions would be done.

Test: go/wm-smoke
Test: SurfaceAnimatorTest
Test: SurfaceAnimationRunnerTest
Test: WindowContainerTests
Bug: 64674361

Change-Id: Idf59daa90361af57fce1128d19a0c0dbf5971d18
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
ffe128d46dc45939df08231c8ec382b33306a77f 30-Nov-2017 Jorim Jaggi <jjaggi@google.com> Optimize surface hierarchy

- Do not reset layer if layer doesn't change. JNI is expensive.
- Only assign child layers once if we have to do multiple passes.
- Fix issue where layouting the starting window caused the surface
to be resized, leading to a blocking SF transaction.

Test: go/wm-smoke
Test: adb logcat -b events | grep 319, inspect transition times.
Fixes: 69632880
Change-Id: I8fffca30591730fae87ed3aeb9df0bdf7d4b55dd
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
df262f5e8990405d3b5d3e4550556eac9b057278 08-Dec-2017 Wale Ogunwale <ogunwale@google.com> Don't send non-resizeable notification in some cases.

Don't send non-resizeable notification when putting other stacks in
the system in split-screen secondary windowing mode due to us entering
split screen mode since they won't be visible.

Also, added isVisible to containers in the window manager proto.

Change-Id: If83076514c160ad7b2a639e32d6f9fc85e70bd53
Fixes: 70355262
Test: go/wm-smoke and steps from bug.
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
ee4d4b96657ce45d8f555dffb2f7f200f667b2a4 22-Nov-2017 Robert Carr <racarr@google.com> Rip out WindowContainer#isScreenOverlay

Messes up ordering of the windows that should be above
the navigation bar and status bar. It seems better to
achieve the IME layering we need directly.

Bug: 69591927
Test: Manual
Change-Id: I69202bca0b84cec5d9f5176645e31c5bd0af767e
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
f3c6a47bdd009de616b6c490bbb52a82d11cc870 14-Nov-2017 Bryce Lee <brycelee@google.com> Store bounds in WindowConfiguration.

This changelist consolidates the usage of frame bounds in containers
into the WindowConfiguration. As a result, the bounds are now shared
across AM and WM. Any changes to the bounds on one side are
propagated to the other via override configuration changes. Previous
instrumentation to synchronize the two sides is no longer necessary.

This changelist does not attempt to consolidate common logic shared
between WM or AM components for setting bounds.

Bug: 68719294
Test: go/wm-smoke
Change-Id: Ia8978dba8525b83201640e159caefe16e626b7c1
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
f59b8ddd93a52b72a09150d0e19dbebb4b6ecf39 03-Oct-2017 Robert Carr <racarr@google.com> Reimplement DimLayer's using hierarchy.

Still missing the fade in/out animation. See Dimmer.java for details.

Bug: 64815723
Bug: 64816140
Test: DimmerTests.java. Existing tests pass. go/wm-smoke. Docked resizing Dim layer works, various dialog dim layers work.
Change-Id: I19a03f1b6b602475410fcfb2c9728aae1d0bed85
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
b1579c8d898811010b60eab4e996f3d071980155 05-Sep-2017 Robert Carr <racarr@google.com> Re-implement Z-ordering based off SurfaceControl hierarchy.

First steps in using the SurfaceControl hierarchy pervasively through
the WindowManager. For each level of the WindowContainer hierarchy
we instantiate a buffer-less SurfaceControl which is used to apply
constraints to all of it's children. For now we use full-screen surfaces
at every non-leaf level and so the only constraint we apply is Z-ordering.

Calculation of Z-ordering is done through the WindowContainer#assignLayers
pass and begins with DisplayContent. Changes are accumulated in-to a pending
transaction which is applied as part of prepareSurfaces (which now applies
to each level of the WindowContainer hierarchy rather than just windows).

Bug: 64815723
Test: Existing tests pass. go/wm-smoke. ZOrderTests.
Change-Id: Ib31bc3107c7fa398cf2ed72430fcb7596fad6fd5
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
4921ccf501717c378ae239f9f02b6170860472d4 28-Sep-2017 Adrian Roos <roosa@google.com> Add trim levels to writeToProto

Enables faster dumping without information that is not relevant in
certain scenarios.

Bug: 64831661
Test: adb shell dumpsys window --proto | hexdump -C
Change-Id: I10827f2dd092fb53b2d452bb12ef76a6adb50f41
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
ab5de37d093ba26b75796c614636aaee36a937d9 18-Oct-2017 Wale Ogunwale <ogunwale@google.com> Made creation of multiple stacks more intentional.

Previous it was unintentional due to the following fixes:
- Made ACTIVITY_TYPE_UNDEFINED compatible with stacks of
ACTIVITY_TYPE_STANDARD. Any request to create an undefined stack type
ends up creates a standard type, so it makes sense for them to be
compatible.
- Made standard types of WINDOWING_MODE_UNDEFINED compatible with the
display's windowing mode. Any request to cerate a stack in an undefined
windowing mode end up creating a stack in the display's windowing mode.
- Added 'dumspys activity containers' for dumping the activity
hierarchy.
Now it is more intentional where we always create a stack for specific
stack activity types and windowing modes when getOrCreateStack is
called.

Bug: 67747409
Bug: 64146578
Test: go/wm-test
Test: Existing tests pass

Change-Id: I85935e8681113a0c06dfc15ef9891e3f91b98a02
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
6191149c9c8d41a08c0167d94d21ac463c144b71 11-Oct-2017 Wale Ogunwale <ogunwale@google.com> Cache reference to stack objects we use a lot in WM.

This helps with fast access since we are no longer using stack ids
to look-up stack objects.

Test: Existing tests pass.
Test: go/wm-smoke
Change-Id: I98cb6f4eb1e6d6acb81b2077aee03265a075a227
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
0d5609ba8c64710dbab020d99c832f8d470c716a 13-Sep-2017 Wale Ogunwale <ogunwale@google.com> Added WindowConfigurationProto and friends

Also added WindowContainerProto and ConfigurationContainerProto
Will be used by cts tests in upcoming CLs that replace StackId APIs.

Test: adb shell dumpsys window --proto
Bug: 64146578
Change-Id: Id6ca2a93e3d15ac696ab54cb241870e973985967
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
e7d2b85068dfda580983a510f60983984c37e7ca 28-Aug-2017 Jorim Jaggi <jjaggi@google.com> Nuke everything obsoleted by task snapshots

Test: go/wm-smoke
Change-Id: If9c9c2e66d97d6a5fa94d0d62ae7459fdde2a9a0
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
7ff3ff33df372a00489c5c8761f8914698c4974f 14-Aug-2017 Wale Ogunwale <ogunwale@google.com> Merge "Switch WindowContainer to use ConfigurationContainer"
00d586d8f0bcd6233fd21970582ec27621fbceed 29-Jul-2017 Bryce Lee <brycelee@google.com> Allow foreground AppWindowToken to influence orientation.

It is possible for an activity to request an orientation after
finish has been called, causing the system orientation to be
re-evaluated. Since the activity is closing, it will no longer be
eligible to influence orientation. If another stack/task is brought
to the foreground, it will as well won't be able to participate
since it is not considered an opening app and won't be visible. As a
result, we set the orientation to unspecified, leading to the
foreground activity to be resumed in the wrong orientation.

This changelist addresses the issue by allowing an AppWindowToken to
participate in orientation calculations if it is not closing and is
on top of the wm hierarchy, regardless of its visibility.

Change-Id: I0f316d6d824398d084c7648cf2dc2c2d07b4410d
Fixes: 63982461
Fixes: 63513655
Test: bit FrameworksServicesTests:com.android.server.wm.AppWindowTokenTests#testGetOrientation
Test: go/wm-smoke
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
98d6231f02bec2d55880db36fd7d49281333f286 12-Jul-2017 Wale Ogunwale <ogunwale@google.com> Switch WindowContainer to use ConfigurationContainer

To reduce implementation dupication.
This also involved moving ConfigurationContainer to the wm package.

Test: bit FrameworksServicesTests:com.android.server.wm.ConfigurationContainerTests
Test: bit FrameworksServicesTests:com.android.server.wm.WindowContainerTests
Test: go/wm-smoke
Change-Id: Ibeca7e2ad2685f0984fccc66852d53ed9af0925f
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
64900ad13ccaa78b163d73783d484ccc4a7c607d 19-May-2017 Jorim Jaggi <jjaggi@google.com> Merge "Take snapshot when screen is turning off" into oc-dev
51304d7380b6122ac55645fd9085ba071b04afa9 17-May-2017 Jorim Jaggi <jjaggi@google.com> Take snapshot when screen is turning off

Since we can't take a snapshot when screen is turned off, we need
to snapshot before we are turning the screen off. For this, we
- Add a callback from DisplayPowerController to give policy a
chance to do something before display will be turned off.
- Implement this callback by taking snapshots of all visible
tasks.

Test: Inspect logs/traces about screen off blocking to make sure
callback is working correctly.
Test: Insert artificial 500ms delay in onScreenTurningOff and make
sure we are unblocking screen off when turning on screen in the
meantime.
Test: Open Maps, go to recents, open maps again, scroll to another
location, toggle power button, make sure the old location isn't
shown during unlock.

Change-Id: I489f31358f838d418f894f996495946084f136a4
Fixes: 37107783
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
4448e1ebb2d00f31292abcc7c5161a4e6f050c2e 16-May-2017 Jorim Jaggi <jjaggi@google.com> Fix GraphicBuffer leaks in system_server

IWindowId is being kept alive by binder in certain cases, which
will leak WindowState, which can leak a whole lot including
the snapshot GraphicBuffer.

- Fix a leak in WindowContainer.mTmpChain1/2
- When the window gets removed, make sure to release the reference
to the window state so even if Binder keeps IWindowId alive, we
don't keep WindowState alive
- Make sure that even if we leak TaskSnapshotSurface we don't leak
the GraphicBuffer.

Test: Boot, some basic sanity testing.
Bug: 36279079
Change-Id: I4a0a784b32bc2df47934b1bed1d62b0682beb2dd
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
612bb885bcef87034070e8e3bfc0b0e953c0f606 16-May-2017 Jorim Jaggi <jjaggi@google.com> Use ArrayList as children

Such that traversal is O(n) instead of O(n²)

Test: WindowContainerTests
Bug: 32668632
Change-Id: Ie52026a76a0f65c71ff6bd35d13b3d0c5d44bb3f
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
5e5a68dc063a3692ec8dcd9c07c9861680a18a52 25-Mar-2017 Wale Ogunwale <ogunwale@google.com> Fixed issue with SCREEN_ORIENTATION_BEHIND not working correctly

If an app specifies SCREEN_ORIENTATION_BEHIND, then use the orientation
of the app behind it regardless of the visibility state of the app
behind.

Fixes: 35281868
Test: bit FrameworksServicesTests:com.android.server.wm.WindowContainerTests
Test: bit FrameworksServicesTests:com.android.server.wm.AppWindowTokenTests
Test: bit FrameworksServicesTests:com.android.server.wm.TaskStackTests
Change-Id: Ieba4e4bb1a7f47cd6f082491d37fcabcf5bd5199
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
55ddf8f9e5d8241130aeac6be7b4978860f41bf8 20-Mar-2017 Wale Ogunwale <ogunwale@google.com> Added support for maxAspectRatio manifest attribute.

- Allows an app to specify the maximum aspect ratio it supports.
- Support for overriding configuration and bounds at the activity
record and app window token level.

Test: cts/.../run-test CtsAppTestCases android.app.cts.AspectRatioTests
Test: bit FrameworksServicesTests:com.android.server.wm.WindowContainerTests
Test: bit FrameworksServicesTests:com.android.server.wm.WindowFrameTests
Bug: 36505427
Bug: 33205955
Bug: 35810513
Change-Id: Ib2d46ed0c546dd903d09d6bb7162a98bd390ba81
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
a163b76570d15e0bbfd318b2962c4966a8a538e5 24-Jan-2017 Bryce Lee <brycelee@google.com> Allow opening activity to specify orientation.

An activity's window is initially not visible. This means it is not
accounted for until it becomes visible, which means requested
orientations will not be honored until after onCreate.

This changelist removes the visibility check previously used determining
the orientation.

This changelist also addresses an issue where an ActivityRecord member
variable tracking the last configuration sent was not being initially
updated.

Fixes: 33844887
Fixes: 33814250
Fixes: 34165818
Fixes: 34177026
Fixes: 33809086
Fixes: 34111451
Fixes: 33844423

Test: Verified reported issues fixed in apps mentioned in bugs
Test: bit FrameworksServicesTests:com.android.server.wm.WindowContainerTests
Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test android.server.cts.ActivityManagerAppConfigurationTests
Change-Id: If9243792b9f2d137dc5addbf6fb735a0048fa192
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
2ec59897cf892666146f378825d2adcf972248ac 18-Jan-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge changes I01e81b9c,I532c2d74

* changes:
Add a listener when task snapshots change
When app dies, destroy snapshot
10abe2fe297ce1ec60c15a3bd947757aee5b14b3 03-Jan-2017 Jorim Jaggi <jjaggi@google.com> When app dies, destroy snapshot

Also destroy snapshot when we remove the AppWindowToken.

Test: runtest frameworks-services -c
com.android.server.wm.SnapshotCacheTest
Test: Open app, go home, kill app, make sure snapshots are
destroyed.

Change-Id: I532c2d7499a86164175f9fcbc8b77c6eb6bfeae6
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
c5cc301689649695e03f502e7d1c1492ef5e5d1e 13-Jan-2017 Wale Ogunwale <ogunwale@google.com> Have better separation between adding, positioning, and reparenting task

Several methods in activity manager and window manager performed adding,
positioning, and reparenting a task operation and sometimes failed silently
when things don't work due the callers using the methods for a particular
operation, but getting a different operation due to programmer error.
This CL better separate the methods responsible for adding, positioning, and
reparenting a task and also fails hard when there is an error.

Test: bit FrameworksServicesTests:com.android.server.wm.TaskWindowContainerControllerTests
Test: Manual testing existing PiP doesn't leave the device in a bad state.
Bug: 34260633
Change-Id: Id64367da30fc6214eb6f95b2bd5e58ed0e953a88
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.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/WindowContainer.java
26c0dfed7a0cd54abafdd0ccbb5b757506d51c76 14-Dec-2016 Wale Ogunwale <ogunwale@google.com> Support for WindowContainer controllers and listeners

- WindowContainerController class allows a component outside window manager
to create a window container and communicate directly with it to make
changes. For example, the ActivityRecord class in activity manager uses the
AppWindowContainerController class to create and communicate with
AppWindowToken window container class which is its counterpart on the window
manager side.
- WindowContainerListener interface allows a component outside WM to get
notified of changes to a window container. For example, the ActivityRecord
class in AM implements the AppWindowContainerListener interface to get
notified of changes to the AppWindowToken container.

Bug: 30060889
Test: Existing tests pass and manual testing.
Test: bit FrameworksServicesTests:com.android.server.wm.WindowContainerControllerTests
Test: bit FrameworksServicesTests:com.android.server.wm.WindowContainerTests
Change-Id: I2896bfa46a80b227052528c7da8cf4e56beab4bc
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
cd5dcb8b3d7d8b6759232a02c0a5c8ae21e22e33 04-Jan-2017 Andrii Kulian <akulian@google.com> Always place stacks below pinned stack

When positioning or adding stacks we must make sure
that no stack is above pinned stack.

Bug: 34049027
Test: runtest frameworks-services -c com.android.server.wm.TaskStackContainersTests
Change-Id: Ic92a4e07e9cde42deed53912ac1419fde4ab2f08
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.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/WindowContainer.java
72919d2c310db04fdb860e926ccb0bfe6e3aef08 09-Dec-2016 Wale Ogunwale <ogunwale@google.com> Untangle creation of Task from addition of AppToken in WM.

Makes it easier to follow what is going on and also clean-up in
preparation of stand way for AM to interact with containers in WM.

Test: Existing tests pass and manual testing
Change-Id: I91754b6d974dce2f696453cdaed175efb0f10c73
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
1e129a4212ec3b388c65db8f6ce18896362ac35c 21-Nov-2016 Wale Ogunwale <ogunwale@google.com> Reduce object allocations in WM in some frequently called methods

With the use of lambdas to get all windows in the window container
hierarchy, we need to be careful in frequently called code paths to
make sure the number of objects we allocate isn't crazy. This CL
converts some commonly called code paths that use lambda to use a
method reference for the lambda so we only need to allocate once vs.
each time the code path is executed.

Test: Perform some common operations on the phone and make sure
the object allocations that show-up in Allocator Tracker for
window manager seems reasonable

Change-Id: Ie0f245980de96ec68a4e62e76130db7d98c3f7d9
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
ee41d4afcb089eac6a6a569557905f71bdd33f6c 21-Nov-2016 Wale Ogunwale <ogunwale@google.com> Introduced WindowContainer.mConsumerWrapperPool

WindowContainer.forAllWindows(Consumer<WindowState>...) requires a lambda
to be allocated each time it is called since we need to capture the callback.
Switched to using an object pool for the process to reduce allocations.

Test: Run the allocation traker and make sure there aren't lambda allocations
for WindowContainer.forAllWindows() method.
Change-Id: If49c1b0bd2e0a5d6d7a30ff686b5235e69a61750
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.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/WindowContainer.java
ffa5a9de0c127cb77ddec625fea101ddddb7ad32 23-Nov-2016 Jorim Jaggi <jjaggi@google.com> Revert "WindowList be gone!"

This reverts commit 4551c8bbee4114fa884938dbe90ac0d06ca78fc5.

Reason for revert: Broke a lot of things!

Bug: 33098800
Bug: 33098294
Change-Id: I307b1c7ee39445d6155a4bbce2bf5f289de55285
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
4551c8bbee4114fa884938dbe90ac0d06ca78fc5 10-Nov-2016 Wale Ogunwale <ogunwale@google.com> WindowList be gone!

The use of DisplayContent.mWindow list to track all windows is
no longer needed as we can now get windows through the window
container hierarchy with methods like forAllWindows. The window
list was also a very complicated logic to understand and maintain,
so it won't be missed :)

Bug: 30060889
Test: Existing tests pass
Change-Id: I590cb33aa0f42bcd4a26ddce102f05e657f54144
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
f4ebe2e2ccfcbce9de7ad0c3b5399971201f66fd 09-Nov-2016 Wale Ogunwale <ogunwale@google.com> Removed WallpaperController dependency on WindowList.

WallpaperController now accesses the container hierarchy directly
to determine the state of the wallpaper windows and targets.

Bug: 30060889
Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test \
android.server.cts.ActivityManagerTransitionSelectionTests

Change-Id: Ib70beaf340f257ad4e1093cc127f81e7adf41636
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
d1880960581d526cbaed0566d522987d9301b293 08-Nov-2016 Wale Ogunwale <ogunwale@google.com> Removed used of DisplayContent.getReadOnlyWindowList()

Changed the call points to use DisplayContent.forAllWindows() to
get windows on the display.

Test: Existing tests pass.
Change-Id: I6f8bf15ba246fac69c4a496ebb1d9e0b9b6a95a2
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
b783fd8a0866ad0c18dff333af73e2d49ff2b680 04-Nov-2016 Wale Ogunwale <ogunwale@google.com> Traverse window hierarchy without window list

Added support for to get all windows in the hierarchy without needing
to use WindowList concept which is a very complicated implementation
in the code base.
This implementation walks the hierarchy node by node returns windows
in order to the caller using a callback.

Test: bit FrameworksServicesTests:com.android.server.wm.DisplayContentTests
Change-Id: I2719f7c96f26dad23f91c1c589be88712bd224b8
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.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/WindowContainer.java
b94292e5fe18a459aa521b9b9631d2db0485ac1b 19-Oct-2016 Andrii Kulian <akulian@google.com> Fix NPEs when display is added or removed

- In WindowContainer set parent of the child after it is actually
added. This way if the child class depends on this in overridden
methods it will be in correct state.
- Reconfigure display only if it is attached. Otherwise there is no
corresponding DisplayContent record with configuration.

Change-Id: I20c51522d82f9d0ca98f098070585e6472a23e98
Test: Updated WindowContainerTests.
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.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/WindowContainer.java
360a8bce7386dc9b231c698af1730e04362b6c2e 10-Oct-2016 Wale Ogunwale <ogunwale@google.com> Switch WindowState to get display content from its window token

WindowState no longer needs to track what display it is on now
that the window token can only be on one display.

Test: Existing tests pass.
Change-Id: Ia0530d73da0b1ecc17f596ec62c933637bd1c2c3
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.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/WindowContainer.java
9d9d8f1c0f66172d89e50e8fd12a8c2a3de221ac 29-Sep-2016 Wale Ogunwale <ogunwale@google.com> Cleaned-up RootWindowContainer.applySurfaceChangesTransaction

- Move functionality for determining interesting and all drawn states
of an app token based on the current window we are processing into
AppWindowToken.updateDrawnWindowStates() since it is mostly touching
AppWindowToken variables. Some of the fields can now be made private.
- Removed WindowContainer.updateAllDrawn() and related overrides. We
now have RootWindowContainer collect the app tokens that need to be
processed and call them directly.
- Move code to report window move to client into
WindowState.reportWindowMovedIfNeeded().
- Move WMS.updateResizingWindows() functionality to
WindowState.updateResizingWindow() as it mostly updates window state
internals.

Bug: 31794753
Test: Manual testing and existing unit tests pass.
Change-Id: I7588217d05d3e8971ce61795cb8568d835779c5e
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
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/WindowContainer.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/WindowContainer.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/WindowContainer.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/WindowContainer.java
d90546abd1425873f9a8baa8e6ba6c8fa35f970d 10-Sep-2016 Wale Ogunwale <ogunwale@google.com> Changed WindowContainer to take child type as a generic

Removes the need for sub-classes to cast the children list.
Also means the children list can only contain a single type,
but that is okay.

Bug: 30060889
Test: Existing unit tests still pass.
Change-Id: Ie880f389b8ab790ee65adcdba23b32bdb568854f
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.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/WindowContainer.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/WindowContainer.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/WindowContainer.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/WindowContainer.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/WindowContainer.java
571771c3fc912e63f83b75693c0f3c85ec9622da 26-Aug-2016 Wale Ogunwale <ogunwale@google.com> Added WindowContainer.removeImmediately to support immediate removal

There are 2 types of window conatiner removals. The ones that happen
immediately and the ones that are deferred until the system is in
a good state to handle them. WindowContainer and its child classes
now support both through WC.removeImmediately() and WC.removeIfPossible()
methods.
The method names create a consistency in the codebase and also makes is
obvious what the methods will do.

Bug: 30060889
Change-Id: I459c2eef17e20cefc42e9cc542c9a3c69fc9b898
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.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/WindowContainer.java
9bc47736362d03b3f099bf018255571457403c1f 10-Aug-2016 Wale Ogunwale <ogunwale@google.com> Removed child windows from WindowToken window list

With the window container hierarchy model, containers should only
link to their direct children and delegate any operation on
decendants of their children to their children.

Bug: 30060889
Change-Id: I99ca0d181d54cfe75bbe24c1b0daaa06cf7cfd9a
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java
d63594a8d116b9fb25a031cb489ca033f716226a 18-Jul-2016 Wale Ogunwale <ogunwale@google.com> Added WindowContainer and WindowContainerTest classes.

The WindowContainer class defines common functionality for objects that
can hold windows directly or through their children
(e.g. WindowState, Task, AppWindowToken, ...). The WindowContainerTest
class as the name implies contains tests for the WindowContainer class.

Bug: 30060889
Change-Id: I1dd2c460c56cfc82aee67c033032a96843ed051d
/frameworks/base/services/core/java/com/android/server/wm/WindowContainer.java