Commit Graph

231 Commits

Author SHA1 Message Date
Evan Rosky
317e669870 Merge "Fix some shell transitions bugs breaking splashscreen cts" into sc-v2-dev 2021-07-21 18:01:08 +00:00
Evan Rosky
00d3ad743e Fix some shell transitions bugs breaking splashscreen cts
Splashscreen CTS uses its own HOME activity that gets placed
on top of the normal launcher. Prevent the launcher's remote
transition from responding in that case by adding a component
filter to the TransitionFilter class.

Bug: 194112093
Test: atest SplashscreenTests
Change-Id: Iaf4572279b84953ca20abd7e34c64d7e19700b09
2021-07-20 16:08:26 -07:00
Chris Li
964d297792 Add default implementation of TaskFragmentOrganizer
Bug: 190433398
Test: N/A
Change-Id: I84fdba974ef308aebe19348fa76f565311e06f2e
2021-07-19 19:32:30 -07:00
Evan Rosky
6139cf51b2 Create a LegacyTransitions to manage combined WCT + remoteanimation
Use this to implement Drag-to-split transition

BYPASS_INCLUSIVE_LANGUAGE_REASON=using existing API.

Bug: 192291727
Test: drag from taskbar into split and observe. Also,
      drag same-app into split and observe no-op.
Change-Id: I710805c85c7d57ae8eebe18e5df7fca899f1b882
2021-07-16 19:06:14 -07:00
Chris Li
5849a2b5e3 Merge "Allow TaskFragmentOrganizer to apply WCT without permission" into sc-v2-dev 2021-07-16 06:50:53 +00:00
Chris Li
d5555da37a Allow TaskFragmentOrganizer to apply WCT without permission
TaskFragmentOrganizer will be used by regular apps without the
permission to manage Task. We are allow it to apply transactions if it
is operating on TaskFragment that is organized by itself.

Bug: 193191599
Test: atest WmTests:TaskFragmentOrganizerControllerTest
Change-Id: I82e5d49260680bd496ff184c6795ec817c65d858
2021-07-15 13:07:14 -07:00
Tony Huang
b9559a6f80 Migrate rotation animation to shell transition
Migrate rotation animation in wm core to wm shell and used in
shell transition.

Bug: 190002115
Test: manual rotation the device
Change-Id: Ib3404eeb7ac647774ea3be2707c9515371ab0976
2021-07-15 10:33:49 +08:00
Chris Li
6accbd24e2 Merge "Add unit test for TaskFragmentOrganizer" into sc-v2-dev 2021-07-13 05:25:34 +00:00
Chris Li
457b3348c8 Include the list of child Activities in TaskFragmentInfo
When we get a call to start activity to side, we can check the list to
know which TaskFragment it belongs to.

Bug: 190433129
Test: N/A
Change-Id: I7fc5772769bf9971c3e21723f9d4c09a183bac31
2021-07-12 14:51:04 -07:00
Chris Li
7f5c891325 Add unit test for TaskFragmentOrganizer
Bug: 190433129
Test: atest WmTests:TaskFragmentOrganizerTest
Change-Id: I1665921c4ec27fa3e08f250fc639e290977298c2
2021-07-10 19:31:15 +00:00
Charles Chen
427a66fa71 Merge "Send DA's config directly when attaching to DA" into sc-v2-dev 2021-07-10 05:02:32 +00:00
Chris Li
fec7d6ec1e Merge "Add onErrorCallback for TaskFragmentOrganizer" into sc-v2-dev 2021-07-10 03:43:08 +00:00
Jeff Chang
ad40d06f0e Merge "Embedded Activities in TaskFragments" into sc-v2-dev 2021-07-08 10:23:33 +00:00
Jeff Chang
397b1509bb Embedded Activities in TaskFragments
- Adding TaskFragments into the leaf Task to embed activities when
  activity started to the side.
- Delete TaskFragment
- Reparent TaskFragments

Bug: 189385246
Bug: 190433129
Test: wm presubmit and have test case in updating CL.
Change-Id: I7e7f5109457dd083d3b148d3ce676ad9aa5ad89f
2021-07-08 12:40:28 +08:00
Chris Li
ae54032e9a Remove TaskInfo#topActivityToken usage in size compat for security
Security report shows that this can cause leak token of different app.

Replace the functionality with a callback to the TaskOrganizerController
to restart activity when size compat restart button is clicked.

Bug: 186776724
Test: manually verify the restart button still works
Change-Id: I097b9f02e8435e6765695b9d5a531a4e165bac66
2021-07-07 12:50:53 -07:00
Vadim Caen
c56fa470bd Merge "Implement the legacy splash screen behavior" into sc-dev am: 2be72d030b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14920934

Change-Id: If3cb25fa466589eed613c1b122e638533631a549
2021-07-05 15:46:35 +00:00
Charles Chen
eb07884f01 Send DA's config directly when attaching to DA
WindowContext relies on WindowTokenClient#onConfigurationChanged after
calling WMS#attachWindowContextToDisplayArea.
However, it took some time to wait for onConfigurationChanged callback
from the server side so that we may get a stale value right after
creating WindowContext.
This confuses developers especially when the foreground activity is in
size compat mode or freeform because the process config is overridden
by activity's config.
This CL makes #attachWindowContextToDisplayArea return DA's configuration
and applies to WindowContext direcly.
It also benefits WindowProviderService because it can obtain DA's
 configuration before onCreate() based on [1] and this CL.

Bug: 190019118
Bug: 190745506
Test: manual - 1. launch an Activity in size compat mode
               2. create a WindowContext and verify if WindowMetrics
                  matches DA bounds.
Test: atest WindowContextTest WindowContextTests
Test: atest WindowContextControllerTest ContextGetDisplayTest
[1]: dd4a748af0

Change-Id: I8dd3987b731662502bc01e9d2ed67e718ada5f46
2021-07-05 14:02:02 +08:00
Chris Li
ccff5a6a8b Add onErrorCallback for TaskFragmentOrganizer
When app wants to create activity through sidecar (for example,
startActivityToSide), we need a callback in case it failed to finish the
request.

Allow the caller to set a token for the WCT, which will be passed back
if there is any error, so that the caller can identify the error
callback.

Bug: 190433129
Test: N/A
Change-Id: Icffb7255e75465b90ed822559296f147a7e3418a
2021-07-01 22:06:22 -07:00
Vadim Caen
f08dae3158 Implement the legacy splash screen behavior
For apps opted out of the new splash screen, we show the full background
drawable.
Ensure there has send the splash screen background color to
StartingWindowListener.

Bug: 182880656
Test: manual set useLegacy to true then verify legacy splash screen.
Test: atest WmTests:ActivityRecordTests
Test: atest StartingSurfaceDrawerTests

Change-Id: Icf662f3c5f368f447e718f82f78dc25b909ca9be
2021-07-01 15:05:06 +08:00
Chris Li
3a00e2b213 Merge "Notify TaskFragmentOrganizer onConfigurationChanged" into sc-v2-dev 2021-06-24 21:44:16 +00:00
Chris Li
ad2dc01882 Notify TaskFragmentOrganizer onConfigurationChanged
Bug: 190433129
Bug: 190433500
Test: N/A
Change-Id: I383a434d536ac08f7cf82dfd87cd24bfc53a6d58
2021-06-24 10:58:40 -07:00
Wei Sheng Shih
a5c89744ab Merge "Clear padding and background after create view from context." into sc-dev am: f2d2fb5292
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15026547

Change-Id: I61065bea95ebcefa8b498a3abe63e3006ef649f1
2021-06-24 11:08:07 +00:00
wilsonshih
0797c86219 Clear padding and background after create view from context.
When create view with Context, there will also load some view
attributes from the Context and pre-set to the View object, to ensure
the splash screen view not affected by those attributes, clear padding
and background after create those view objects.

Bug: 191339594
Test: manual launch several apps from Launcher/Notification.
Tets: atest SplashscreenTests
Change-Id: I05be9c296a04cd49a0896ad8aef57643720d60ce
2021-06-24 11:10:07 +08:00
Chris Li
324f6df9cf Add WindowingMode in TaskFragmentCreationParams
Allow organizer to set the initial windowing mode for creating
TaskFragment.

Bug: 190433129
Test: N/A
Change-Id: I8848a27f69108ebc62be3342cd6f1656ec488433
2021-06-23 14:16:05 -07:00
Chris Li
f555a8a0e6 Merge changes from topic "task_fragment_organizer" into sc-v2-dev
* changes:
  Implement WCT#create/deleteTaskFragment
  Add TaskFragmentOrganizer API
  Add WindowContainerTransaction APIs for create/deleteTaskFragment
2021-06-23 04:44:23 +00:00
Chris Li
8c946d6594 Implement WCT#create/deleteTaskFragment
Also update setAdjacentRoots to accept TaskFragment.
Pass the WCT to WM Core. The implementation on WM Core side will be in a
separate cl.

Bug: 190433129
Test: N/A
Change-Id: I1ee8a7ba0a43e18e180c05a7fcf0467967564782
2021-06-22 15:56:24 -07:00
Chris Li
cf717a20eb Add TaskFragmentOrganizer API
Mainly the API surface.

Bug: 190433129
Test: N/A
Change-Id: I426b7fdbe62d58213c5e49a4773dd5fda0eb4dfe
2021-06-22 15:54:38 -07:00
Chris Li
80897e90ff Add WindowContainerTransaction APIs for create/deleteTaskFragment
This change contains mainly the function signatures and data classes.
The actual implemenation will come in a separate cl.

Bug: 190433129
Test: N/A
Change-Id: I4f9695cea270cc06f2f6b1a2c56245cd2a43b9fd
2021-06-22 15:00:24 -07:00
Charles Chen
dd4a748af0 Move initialization from onCreate to attachBaseContext
Previously we initialize WindowManager and associate DisplayArea in onCreate,
but apps may use WindowManager before WindowProviderService#onCreate.
The code may be like:
```
public void onCreate() {
    WindowManager wm = getSystemService(Windowmanager.class);
    wm.getCurrentWindowMetrics().getBounds(); // <--- crash here
    super.onCreate()
    ...
}
```
This CL move the initialization step to attachBaseContext to prevent
the crash.

Test: atest WindowContextTests
Test: run gsi_avd/boot_health/vendor_img_rvc on ABTD
Bug: 191635763
Change-Id: Id8bad73a749813a90b307ac2b4d020f740631ea3
2021-06-22 13:55:12 +08:00
Charles Chen
235a0bf9bd Merge changes from topic "ime_migration" into sc-v2-dev
* changes:
  Move IME log to WindowTokenClient
  Migrate InputMethodService to WindowProviderService
2021-06-21 08:46:33 +00:00
Chris Li
5f17dfe9f0 Merge "Add Builder for WindowContainerTransaction#HierarchyOp" into sc-v2-dev 2021-06-18 22:48:17 +00:00
Evan Rosky
2ed4561187 Merge "Some fixes to shell transitions lifecycle handling" into sc-v2-dev 2021-06-18 21:39:23 +00:00
Chris Li
58d1216088 Add Builder for WindowContainerTransaction#HierarchyOp
Refactor it as we are adding more options.

Bug: 190433129
Test: just refactor
Change-Id: I316899427c1c8e12d97fd5f018c455a246da30bb
2021-06-18 12:40:34 -07:00
Evan Rosky
6173c26649 Some fixes to shell transitions lifecycle handling
Added a remote transitionfilter for container ordering. This way
launcher animation won't engage if it is appearing behind a
translucent task.

Modify commitVisibility to properly update client visibility
when shell transitions are enabled.

Fixed issue where activity start was deferring sync-engine
readiness even for "delivered-to-top" or cancelled activity
starts. This meant it would wait forever.

Hooked up the "enter animation complete" reporting to shell
transitions.

Removed interference by legacy freeform/maximize animation
logic (which was calling setReady at incorrect times).

Bug: 183993924
Test: atest ActivityLifecycleTests
Change-Id: I1138079b1ae05248cefa211e0597fd6723a8bbba
2021-06-18 09:11:02 -07:00
Charles Chen
41fc06529b Merge "Handle WindowProviderService#onConfigurationChanged" into sc-v2-dev 2021-06-18 06:37:49 +00:00
Charles Chen
79cb3c5288 Move IME log to WindowTokenClient
IMF has the requirement to debug if the configuration is dispatched
to InputMethodService. Since we migrated InputMethodService to
WindowProviderService, we should also move the debug logic to
WindowContext module because config updates will be no longer from
ActivityThread.

Test: build & run
Bug: 135719017
Change-Id: I248c90f36249a6a4537228f7b0204f0d4466ebc7
2021-06-18 11:45:05 +08:00
Charles Chen
fc7a1b5b34 Migrate InputMethodService to WindowProviderService
Also introduce IWindowManager#getDisplayIdToLaunchIme to make IMS
be aware of the launched display to prevent extra onConfigurationChanged
callback

Bug: 149463653
Test: atest MultiDisplaySystemDecorationTests CtsInputMethodTestCases
Test: atest ContextTest ContextIsUiContextTest
Test: manual - moving IME between 2 displays and displayArea within
      display - config change received
Test: manual - the app to show IME crashed and focus is set to the
      next task - no config change

Change-Id: Ie565e30ed5dd3f2cfe27355a6dded76dc3adc14b
2021-06-18 11:44:30 +08:00
Charles Chen
0a3126f408 Handle WindowProviderService#onConfigurationChanged
This CL makes WindowProviderService receive onConfigurationChanged
callback when there's a config update from WM side.

Test: atest WindowContextTests
Test: atest ActivityThreadTest ActivityClientTest ConfigurationHelperTest
fixes: 185766946

Change-Id: I922d52c1c38aecc1a948c79039cc03354adc646f
2021-06-18 11:44:20 +08:00
Vadim Caen
ab9a4b9a5a Merge "Release the SurfacePackageViewHost on splash screen removed" into sc-dev am: dc07d29bd0
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14775423

Change-Id: I41c53ecabb544054bbe522baf5ffddaac211975b
2021-06-16 12:31:00 +00:00
Vadim Caen
a46ff113be Release the SurfacePackageViewHost on splash screen removed
The SurfacePackageViewHost was never release, leading to a leak of its
surfaces.

This CL ensure it is released:
  - Directly in the shell if the SplashScreenView was not copied
  - From the client, through the window manger and then to the shell if
  the splash screen was copied in the client process

Test: Manually tested with app setting by checking if the surfaces
are actually removed (winscope + logs) in the following scenarios:
    - When the application registers an OnExitAnimationListener
      and calls remove(),
    - When the application registers an OnExitAnimationListener
      and dies without calling remove()
    - When the applicaiton does not register an OnExitAnimationListener
    and the shell removes the splash screen
Bug: 189759180

Change-Id: Ib68bfffad6720911368739d7dd87d8a03034c589
2021-06-15 15:39:09 +02:00
Selim Cinek
b77c0a3d8a Merge "Always do the app reveal animation when dismissing the splash screen" into sc-dev am: bfa0487b7a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14934416

Change-Id: Id5d4519dd0c96ee044a31c5ecac97cfd644d5cc5
2021-06-14 08:19:26 +00:00
wilsonshih
192aef77d7 Always do the app reveal animation when dismissing the splash screen
Let empty-style splash screen do reveal animation.
Also remove the extra animation duration if the icon is empty.

Bug: 190695897
Bug: 190695665
Test: manual
Test: atest SplashscreenTests
Change-Id: I8b3b52369c12fbddc32af8c40f37650cc84a88dd
2021-06-11 11:34:33 +08:00
Wei Sheng Shih
e80879f307 Merge "Introduce setSplashscreenStyle to specify splash screen style." into sc-dev am: 6b0741b3fe
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14609925

Change-Id: I4fb4f4a78d02a77ee6df4450dfc84366c1eb513e
2021-06-08 12:29:50 +00:00
wilsonshih
72a03ff774 Introduce setSplashscreenStyle to specify splash screen style.
Provide a method ActivityOptions#setSplashscreenStyle to specify
splash screen style if needed.

If not set, the default option will be empty-style splash screen, so
without any other change, the activity launched from systemui with
ActivityOptions will become empty style splash screen.

Bug: 188023621
Bug: 189293785

Test: manual test start application from Launcher and Notification.

Change-Id: I299320db8f32fbd835c7ec0acaad3df3486a13f5
2021-06-08 12:21:27 +08:00
Vadim Caen
be2ac213fe Merge changes from topic "splashscreen-surface" into sc-dev am: fc1efcb428
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14186656

Change-Id: Ie0e17006e404de22c20cce84cf7a43fdf0eb85e7
2021-05-25 15:24:45 +00:00
Evan Rosky
46ba708bb8 Enable remote transition animations to append to the finish transaction
Adds a parameter to the IRemoteTransitionFinishedCallback. This
transaction will be merged into the finish transaction before it is
applied. This is needed by transitions like live-tile recents where
the end-state of the transition is altered during the "animation".

Bug: 172695387
Test: open app, swipe up to overview, resume that same app, screen
      shouldn't turn black anymore.
Change-Id: I6fa1e22288ce087ad17fdfc950a8419e6ba61a47
2021-05-24 09:14:46 -07:00
Vadim Caen
cb81f1716d Display Splashscreen AVD in a SurfaceView
If the splashscreen uses an animated icon, we need to display it in a
surface view to avoid any jank if the view is passed to the client.

Test: CtsWindowManagerDeviceTestCases:SplashscreenTests#testHandleExitIconAnimatingActivity
Bug: 181757194

Change-Id: I7e2745a68626849374f5ebb9011c2e8c3b3b92c3
2021-05-21 13:13:15 +02:00
Tony Huang
c3acdff9e8 Merge changes I1ea02fa9,I033a79dc,Iac219a8e into sc-v2-dev
* changes:
  Make AppTransition animations sharable (6/n)
  Make AppTransition animations sharable (5/n)
  Make AppTransition animations sharable (4/n)
2021-05-21 07:46:13 +00:00
Wei Sheng Shih
919405b38d Merge "Tracking launch activity to decide next splash screen style." into sc-dev am: 9e14f714d4
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14326844

Change-Id: I6d064be052444131f04143fa96fa2c861b6ce804
2021-05-21 05:02:52 +00:00
Wei Sheng Shih
8fde873208 Merge "Drawing the legacy icon similar to the Launcher." into sc-dev am: fffb1502cf
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14234712

Change-Id: I1b800fdc2d6501e27e2937e01e58e21e6dd28fe8
2021-05-21 05:02:38 +00:00