Implement launch bounds logic in Android (2/3)
This CL implements the biggest chunk of launch bounds logic in Android branch and combine ActivityLaunchParamsModifier logic into TaskLaunchParamsModifier. It left some things to be implemented: 1) It didn't yet consider persisting/recovering data; 2) It didn't implement letterboxing/pillarboxing, but according to offline chat this should be enforced after launch bounds policies by system; 3) Immersive mode is not yet implemented, but that's more tied to recovering previous immersive mode and we won't launch apps to immersive mode directly in any case; 4) No last seen non-fullscreen bounds are set if display is fullscreen, which could be useful when display windowing mode changes from fullscreen to freeform at later time. There are also some topics that for sure need future discussions, so I left them out of this CL as well: 1) App controlled apps (not only bounds specified in ActivityOptions); 2) Metadata indicating that the app prefers tablet-like bounds for freeform windows (i.e. w/o limiting window size to Nexus 5x screen size); 3) Fixed maximized size, which indicates that the maximized size shouldn't be changed due to display resolution or orientation changes; 4) What to do if app requests to launch an activity without any flag that indicates a new task should be used, but with a preferred display ID/bounds set to a different value than its current window; 5) Should insets be considered in launch bounds (AM side) or on WM side, IIUC freeform windows don't need to consider insets, and fullscreen windows are covered by WM. Our policy also has special treatment for Chrome snapped windows (side-by-side mode in our tablet), which may not make much sense in Android. Bug: 113252871 Test: go/wm-smoke. Try launching some freeform windows on secondary displays. atest FrameworksServicesTests:TaskLaunchParamsModifierTests atest ActivityManagerManifestLayoutTests Change-Id: I974031725015b6283f33b9076788e7ce45134690
Loading
Please register or sign in to comment