Improve support for reparent operations in app transitions
This addresses several issues that come up when reparenting
is part of an app-transition (as happens during split-screen).
1. If a windowingMode change is part of a WCTransaction, bundle
it up with the other changes before calling a single
onConfigurationChange. This is needed for change transitions
because they freeze during onConfigurationChange so if the
bounds has already changed in a prior onConfigChange, it
won't freeze the correct start-bounds.
2. Actually unset task-org if the task is reparented out of
an organizable parent (ie. it becomes non-root). Also unset
the last OrganizedWindowingMode properly.
3. Because tasks can go into and out-of organized mode, maintain
consistent surface positioning through reparent operations by
updating the position on reparent if either the before or after
state is organized. Why? If we are going from non-organized
to organized, the initial position should be relative to the
parent where we started organizing -- esp. because there is
a delay before the organizer gets the leash, so during that
time the surface can pop if not updated. In the other direction,
because the task is no-longer organized, WM needs to sync its
surface info.
Bug: 151881448
Test: tests pass -- android-on-chrome tests pass
Change-Id: I16e74ea0cc79a6c76ac08a3cbd55416e034753c0
5 files changed