With this change, WallpaperController sends "freeze" / "unfreeze" commands when the app window is letterboxed / not letterboxed indicating that:
- "freeze": a screenshot of the wallpaper is taken by WallpaperServices and put on top of the main surface while the wallpaper host is notified through onVisibilityChanged(false) callback that it's no longer visible.
- "unfreeze": a screenshot of the wallpaper is removed and the wallpaper host is notified through onVisibilityChanged(true) callback if the wallpaper is visible again (e.g., if transitioned from an app to the Home screen).
Logic isn't applied to static wallpapers.
When wallpaper size changes while being frozen, the screenshot is scaled and cropped to adjust to the new size.
Fix: 177884751
Test: Manual, atest WallpaperServiceTest, WallpaperServiceTests
Change-Id: If0300478cdccc07d226117e01ce3d43aa0b432a0
MediaProjection is used by apps to capture the contents of
a display. Apps consume the content from a surface passed
in to MediaProjection#createVirtualDisplay. The images
written out to the surface can be used for saving
screenshots of the current display, screen recording,
or casting to a different display.
MediaProjection is currently tied to capturing a physical
display. This change instead captures the DisplayArea
the app is launched on. This is consistent with Display API
sandboxing, which returns the DisplayArea bounds rather
than the physical display bounds.
Note that apps use the Display APIs to size the
VirtualDisplay and output surface.
Verified: screenshots, screen recording, and casting
Bug: 180624777
Test: atest WmTests:DisplayContentTests
Change-Id: I909e9d32f573aec33869d9f49d6caffc8d7420aa
Freeze the configuration size when shifting split layout so that client
apps can calculate insets properly and won't get config or relaunch.
Fix: 192410210
Test: atest WMShellUnitTests
Test: verified the content of the bottom split won't be truncated when
adjusting split layout with IME and won't get relaunch.
Change-Id: I38da063ffacc19b691c14b74d118949293414492
Currently, mMobileIfaces is accessed from multiple threads, and
should be protected from concurrent accessing. However, since the
variable could be accessed frequently, holding the mStatsLock
would make this be blocked by network stats I/O operations.
Thus, protect the variable by making it volatile.
Test: Wifi on/off stress test
Bug: 192758557
Original-Change: https://android-review.googlesource.com/1765686
Merged-In: Ie7694a63f5203ee7c83830ca13d97219b7949fd7
Change-Id: Ie7694a63f5203ee7c83830ca13d97219b7949fd7
Creates and registers remote transitions that deal with situations
where keyguard might be occluded/unoccluded.
Bug: 191799478
Test: atest KeyguardInputTests
Change-Id: I625a810aef915de7a01ded9ddbe3042f0e124b52
When an app is in size compat mode, the configuration bounds
and layout bounds are not the same such as the app keeps
a larger configuration bounds and needs to be scaled when
drawing on screen. The size compat bounds are the scaled
bounds in screen coordinates so it should be used if available.
Fix: 194820928
Test: SizeCompatTests#testFixedScreenBoundsWhenDisplaySizeChanged
Change-Id: Ib97038560e65699f5275d6f5dc4b8e5881024e57
Before, when there is a collecting transition, finishing activity/task
will unset the ready state. It can cause issue if the existing
transition has already in ready, because there may not be other setReady
call for finishing.
Bug: 183993924
Test: manually on acloud with resolve activity for two launchers
Change-Id: Ibafaf0b9bd7842a30eedbeb02271ab6f96c838ff