Push the frame to InsetsSourceProvider
This CL stops InsetsSourceProvider from reading the frame from the
window. Instead, the caller sets the frame via #updateSourceFrame.
When the window layout is moved to the client side, when the rotation is
changed, we need to dispatch the InsetsState computed from the new
rotation to all the clients. At this moment, the window frames of insets
source windows are not up-to-date yet, and we cannot use them to
generate insets sources. Instead, we pre-compute the window frames based
on the new rotation at the server side, and use them to update
InsetsState. In this way, the first InsetsState dispatched to the client
after rotation will be correct.
This CL also
- unbundles the calling order of setServerVisible and updateSourceFrame.
The calling order won't affect the result.
- moves logic from DisplayPolicy#layoutWindowLw to WindowState#setFrames
because we plan to remove layoutWindowLw in the future.
- removes redundant logs about layout. The log in
WindowLayout#computeFrames can cover them all.
Bug: 161810301
Test: Perform fixed rotation, seamless rotation, and regular rotation
and see if the layout of each window is expected.
Change-Id: Ie7845de2830cdbdfd0049b8eef5a5f0704f796e8
9 files changed