| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When letterbox is repositioned, window configuration bounds are changed.
Because we currently only report public config changes in
diffPublicOnly, the client doesn't report changes in window
configuration.
We should always report window configuration bounds change to notify
that the position of window has changed.
Bug: 262900133
Test: atest FrameworksCoreTests:android.app.activity.ActivityThreadTest
Manual test with app in bug
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:70187af25ce3f56f85ddd703f982caa82f685605)
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:2d435949ef08a2219feb23dba035f5a78b038f3f)
Merged-In: I9fc10876c03933ac8aac05205d56ad6537df72a8
Change-Id: I9fc10876c03933ac8aac05205d56ad6537df72a8
|
| |
|
|
|
|
|
|
|
|
| |
It should never be null. We had a bug where the IME callback can be
unexpectedly GC-ed and jam back nav. This is to verify if we need its
fix ag/21301891 in QPR as well.
Bug: 274911901
Test: atest WindowOnBackInvokedDispatcherTest
Change-Id: Ic2a576655ca16577ca35f3544f5b26d4a0db8f90
|
| |\
| |
| |
| | |
tm-qpr-dev
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
A few apps in Kids Space request "reverseLandscape" orientation when
Display#getRotation returns ROTATION_270 expecting it to correspond
to the seascape display orientation while it may correspond to the
landscape one when config_reverseDefaultRotation is set to true.
This CL overrides the "reverseLandscape" orientation with "landscape"
in the context of apps running in the Kids space when
config_reverseDefaultRotation is set to true
Fixes: 265589619
Test: Run `atest WmTests:WindowManagerServiceTests`
Run `atest WMShellUnitTests:KidsModeTaskOrganizerTest`
Run `atest WmTests:LetterboxUiControllerTest`
Change-Id: I85688413571478f5acaa340624bb470f5aeb422f
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new API to WindowContainerTransaction to support updating the
container density.
This allows us to update the configuration object with a new density
value that would get applied by the WindowOrganizerController.
Allow list density changes in WindowOrganizerController as an allowed
configuration change.
Update DesktopTasksController to change the density value when moving a
task to desktop or back to fullscreen (if enabled).
Use system property persist.wm.desktop_mode_density to override the
density for desktop tasks. Allowed range for the density override is 100
to 1000.
Bug: 272529050
Test: atest DesktopTasksControllerTest
Change-Id: I96539176252fdd5b69b02e3bd1b6a4231990decb
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Store 0 in a named constant as the default animation background color.
Update the animation background color usage to make sure it is not
transparent.
Bug: 267955776
Test: verify the behavior is not changed with demo app
Change-Id: I23fcab10a516de2c7646639e5773cf8c67143bcb
|
| |/
|
|
|
|
|
|
|
|
| |
The conditional permission was introduced for TaskFragmentOrganizer, but
not really needed. Remove the conditional check.
Bug: 259938771
Test: pass existing tests
Merged-In: I666b9ee6b6076766513b97e675fdbaa002428601
Change-Id: I666b9ee6b6076766513b97e675fdbaa002428601
|
| |\
| |
| |
| | |
re-created" into tm-qpr-dev
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When recreating the Activity, if the window is preserved, we would set
the actual dispatcher from the preserved window to the new Activiy's
proxy dispatcher, and expect the new callback could be re-registered
in the recreating flow.
This CL clears the old callbacks of the preserved dispatcher before it
attach to the new proxy dispatcher, this could prevent it access the
wrong top callback after other new callbacks have been unregistered.
Also provide dump log for WindowOnBackInvokedDispatcher.
Bug: 259500250
Test: atest BackNavigationTests
Change-Id: Idc9a6a95f5669a009762570d7bc9acc2c538e4cb
|
| |\ \
| |/
|/|
| | |
into tm-qpr-dev
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add cancel and the cancel callback in BackProgressAnimator so it could
animate to start position and invoke the callback after finished.
Bug: 259608500
Test: atest BackAnimationControllerTest BackNavigationControllerTests
Test: atest BackProgressAnimatorTest
Change-Id: I94303ba530d155f4b264dafa21bd23185a6b44bd
|
| |\ \
| |/
|/| |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Task view task should animate itself so we should avoid load
animation in core.
Also add a new create root task api for auto to create a task
with removeWithTaskOrganizer flag to be determined as task
view task.
Bug: 263199423
Test: manual
Test: pass existing tests
Change-Id: Ib49afc71b04c66a346147d1af2207dc0dcdf5018
|
| |\ \
| | |
| | |
| | | |
public BackEvent." into tm-qpr-dev
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
BackEvent.
The constructor of BackEvent has diverged on QPR and master, which will
create merge conflicts for all subsequent SysUI back animations to be
added from QPR. This cherry-picks ag/20445076 minus the public API
changes to solve this problem.
Test: atest BackAnimationControllerTest
Test: atest BackNavigationControllerTests
Test: atest WindowOnBackInvokedDispatcherTest
Test: atest TouchTrackerTest
Test: m -j
Bug: 238475284
Change-Id: Ib9100a9d667a9a17e8f357a1bfc3ee2b52ec17c7
|
| |\ \ \
| |_|/
|/| | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
1. When the primary TaskFragment is finished with shouldFinishDependent
= false, it should still finish the placeholder TaskFragment.
Otherwise it may leave the placeholder there forever.
2. In case the app starts two activities one after another, if the first
Intent is not handled, but the second is, when the first activity
onCreate reach the organizer, it may be reparented to a new
TaskFragment that is on top of the second activity. We want to make
sure that the TaskFragment is created at the same position as the
reparent Activity.
Bug: 255628567
Test: manually verify with the test app in the bug.
Test: atest WMJetpackUnitTests:TaskFragmentContainerTest
Test: atest WmTests:TaskFragmentOrganizerControllerTest
Change-Id: Ie48d7e46786cabcf3a1ededa9275f0223e2f477f
|
| |\ \ \
| |/ /
|/| |
| | | |
ImeOnBackInvokedDispatcher#switchRootView." into tm-qpr-dev
|
| | |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
ImeOnBackInvokedDispatcher#switchRootView.
This has the same purpose as ag/20766528, which only addressed one of
the two occurances of IME registering callbacks.
Bug: 262727745
Test: CtsInputMethodTestCases
Test: KeyboardVisibilityControlTest
Change-Id: I0ad892f17211a132d8a69b7f68a6c10f5740c457
|
| |/
|
|
|
|
|
|
|
|
|
|
|
| |
Pass the animationBackgroundColor set in WM Jetpack to WM Core through
TaskFragmentAnimationParams.
Introduce TaskFragmentOperation for all the future TaskFragment related
WindowContainerTransaction operations.
Bug: 263047900
Test: atest WmTests:TaskFragmentOrganizerControllerTest
Merged-In: Ia8da5ea7cb6a9ba0615b77ba06b16339d78c11fd
Change-Id: Ia8da5ea7cb6a9ba0615b77ba06b16339d78c11fd
|
| |
|
|
|
|
|
|
|
|
|
| |
It's perfectly valid to register system callbacks (which have negative
priority) from the IME process from framework code, once it is opted in.
We should still reject negative priority for registration through public APIs though. Will follow up separately in b/262930093.
Test: atest android.view.inputmethod.cts.KeyboardVisibilityControlTest#testHideImeAfterBackPressed_legacyAppMigratedIme
Fixes: 262727745
Change-Id: Ie13c738d0d4a10f4265fbf116ff7b4206d3bfc62
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There are multiple components in both WM core and WM shell that add
child layers to task layers. Most of them used to use the max and min
value of integers to put themselves in front of and behind activities,
and occasionally there were inadvertent occlusions among them. This CL
adds a few regions to known components who don't need to interleave
themselves with activities and/or task fragments. Since we own all these
components we can trust all components use the defined value so
enforcement isn't necessary.
Bug: 244455401
Test: Build.
Change-Id: Iaa267b2ba53053bf25f3c6d590f50ceafafbf0a3
|
| |\ \ |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
There can be 2 reasons that we need to apply compatible scale to a
window:
1. The app doesn't support large screen. We would layout the window as
if it is on a small display. And then we need to scale its window up
to match the display.
2. We put a running app into a container that the size doesn't fit. We
need to down-scale the app so that it can fit the container.
The scaling of case 2 is also known as size-compat-scale which is fully
controlled at the server side. The client shouldn't know about it. And
this CL refines the naming.
Fix: 258393096
Bug: 254187021
Test: presubmit
Change-Id: Ifbd2ca725bed231d9e6dd8190df3dc773d4402b7
(cherry picked from commit bcbd60c45c047c625bd66d7cc018b0c65f02d3fd)
Merged-In: Ifbd2ca725bed231d9e6dd8190df3dc773d4402b7
|
| |/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Before, we always place the new created TaskFragment on the top of the
Task. Now, when creating TaskFragment for placeholder, we place the new
TasKFragment right above the primary TaskFragment.
In case there is a fullscreen transparent Activity on top of the primary
Activity, this prevents us from launching the placeholder on top of the
transparent Activity.
Bug: 261550242
Test: atest WmTests:TaskFragmentOrganizerControllerTest
Change-Id: I163e9ca1637db45e8695d40a31f2a2c6a4f05189
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This CL allows disassociating the leaf task if relaunched and
reparented it to TDA as root task for split-screen.
Bug: 236317871
Test: atest WindowOrganizerTests
Change-Id: I6704fab733ed7d239d7004c93d3d2f471ac94822
Merged-In: I6704fab733ed7d239d7004c93d3d2f471ac94822
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This removes the corner animation flickering happening when
starting a letterboxed app after a configuration change
(eg. Dark/Light mode)
Test: Manual
Fixes: 234107097
Change-Id: Iad9f4aaeb8edeeb56b0c88d7d0239843cd66a8f9
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Even though these surfaces/transactions are unreachable, it still
takes time for the GC/NativeRegistry/FinalizerQueue to actually
flush/free references (even if you force GC, it won't flush the
NativeRegistry/FinalizerQueue). This skews the results of our
memory benchmark tests since they measure instantaneous memory.
So, add logic to manually release Transactions/SurfaceControls
when we know they won't be used. This is extra tricky due to
unparceling creating new refcounts. To resolve this, we assume
that all remotes are getting a COPY of all surfaces and then we
make deep-ish copies on the CALLER side if the binder is actually
local. We can't alter the logic on the receiver side because the
binders are one-way and thus PID information isn't available.
Bug: 258913831
Test: systemui-notification-memory-suite-demo and check aggregates
Change-Id: If094e7eeb248a8674e8094cf5cf3019b2cd58047
|
| | |
| |
| |
| |
| |
| |
| | |
Test: none
Bug: 237342281
Change-Id: Ia9e971152b7e297a78d79cbb79690f66d3029c9f
|
| |\ \
| | |
| | |
| | | |
into tm-qpr-dev
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Before, we check if there is any split rule meeting the bounds
requirement for the given Task bounds in order to determine whether or
not to override the animation.
This can cause issue when the apps later unregister the split rules
while there is existing split. Also, this is hard to determine as we now
have SplitAttributesCalculator which can change the split state for the
same bounds.
To fix these problem, we now check if the app transition contains any
embedded activity (embedded TaskFragment that is not filling Task), to
determine if the animation should be played by the organizer.
Fix: 242051445
Test: atest WmTests:AppTransitionControllerTest
Change-Id: Ie90ba085cab3d4072f47cc3599d0494324fa39a9
|
| |\ \ \
| | | |
| | | |
| | | | |
WindowProviderService to broadcast configuration changes to listeners." into tm-qpr-dev
|
| | | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
WindowProviderService to broadcast configuration changes to listeners.
This is needed to allow IME to listen to WindowLayoutInfo changes.
Bug: 237342281
Test: CTS InputMethodServiceTest
Change-Id: Id8ddce5889b52859172caf3b4f0763bb5010b5dc
|
| |\ \ \
| | | |
| | | |
| | | | |
FLAG_ACTIVITY_REORDER_TO_FRONT" into tm-qpr-dev
|
| | |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Application was crashed while starting an embedded Activity with
FLAG_ACTIVITY_REORDER_TO_FRONT, because the embedded Activity was
not the direct child of the Task.
In this CL, the embedded activity is now moved to the top-most
position of the Task and dismissed from being embedded in order
to honer FLAG_ACTIVITY_REORDER_TO_FRONT.
Bug: 255701223
Test: locally verified with app
Test: atest TaskTests
Change-Id: I491139e5e1d712993f1fef9aebbd75e9ccfc539e
|
| |\ \ \
| |_|/
|/| |
| | | |
tm-qpr-dev
|
| | |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
... of the secondary (or the primary) container.
The primary container was removed along with the secondary container
while the last Activity in the secondary container was finished by
back event. Therefore, starting window will be shown if starting the
app again from Launcher.
However, the last Activity in the secondary container should be
considered as a relative task root if the Activity is displayed
adjacently or being a companion with the task root activity.
The task should be moved to back vs. finishes the Activities to
speed up the launch next time, like commit 2dec42fa does.
Bug: 240669850
Test: launch Settings
Test: atest WindowOrganizerTests
Change-Id: I13b33afb8602f63062f6b33742453c3e93fdfc20
|
| |/
|
|
|
|
|
|
|
|
|
|
|
| |
Allows WM Shell to indicate the start/end of drag resizing, which
core can use as a signal to reuse a single (larger) surface size
for the entire drag resize operation to avoid continuous buffer
allocations after each size change.
Bug: 249808500
Test: drag resize a freeform window, verify WindowLayout requests
a fullscreen sized surface; atest TaskPositionerTest
Change-Id: I27e2b44270d7ea4f701fa8037f93b20dc691284b
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There may have multiple transitions when launching a task with
embedded activities. In the last transition info, it may contain
activities occluded by starting window and a closing wallpaper.
By default, all of them will be animated with edge extension,
that looks like showing some noise.
Because the animation of embedded activities under a task level
starting window is not visible, it can be skipped. But for
non-embedded activity, the activity level starting window can be
changed or closed with the host activity, so the case should not
be skipped.
Besides by default, wallpaper is no animation, especially it
shouldn't apply any task/activity style animation.
Also make sure the leash of starting window is always on top of
the task with embedded activities. This just makes the surface
hierarchy consistent.
Bug: 255269113
Test: No flickering when cold launch Settings on a large screen
device with support of activity embedded.
Change-Id: I8fd1137e806aeb4060a83a71dc5aa02acdc42429
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This CL introduces BackProgressAnimator which runs in app's main thread.
It receives target progress values from SysUI and drives the actual
progress value passed to the app with a high stiffness, no bounce
spring.
Bug: 238475284
Test: atest WindowOnBackDispatcherTest
Test: atest BackAnimationControllerTest
Test: atest TouchTrackerTest
Change-Id: Ib0d3ebe43929c405b10681000fb4e7ef8bccce34
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The collected WindowToken's (e.g. status bar, navigation bar)
isVisibleRequested may be changed according to its WindowState's
visibility policy or the visibility of who is controlling the insets.
They are not aware of the WindowToken surface visibility, so keep
them untouched unless shell transition supports general window
animation or even insets animation.
Bug: 251214841
Test: atest FlickerTests:CloseImeAutoOpenWindowToAppTest
Test: Launch an activity that requests to hide system bars.
And use shell command to change display size at the same time.
After the launch transition is finished, the system bars
can still be visible when swiping from bottom or top.
Change-Id: I2403e2dcbc6684774c9c3b74768a32c7b7a3b8ae
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. When moveActivityToPinnedRootTask with creating a new Task for PiP,
make sure the Task's initial bounds is the same as the activity
parent TaskFragment so the animation starts from the correct bounds.
2. When exit PiP to previous Task, make sure we are animating the
correct window surface. For the previous implementation. there can
also be TRANSIT_CHANGE change for entering ActivityEmbedding split
(from PiP) in the same transition.
Bug: 207070762
Test: atest WmTests:RootWindowContainerTests
Test: atest WmTests:TransitionTests
Merged-In: Ifba090ad9ac9fb7033d343eab1c87c1a67bb9c11
Change-Id: Ifba090ad9ac9fb7033d343eab1c87c1a67bb9c11
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The root cause is that TaskFragmentParentInfo wasn't be dispatched
when there's a display or visibility change because we didn't
implement getTaskFragment() in TaskFragment and it led to
the TskFragment can't return itself if the predicate function
returns true.
This CL fixes WC#getTaskFragment and changes to dispatch
Task#shouldBeVisible instead of Task#isVisibleRequested.
The reason is that the visibleRequested change is not early enough for
the scenario that device is folded from unfolded state, and lead to
Settings flickering.
Test: manual - open Settings and fold the device
Test: atest TaskTests#testGetTaskFragment
Test: atest TaskFragmentOrganizerControllerTest ActivityRecordTests
fixes: 249055633
Change-Id: Ie1c56758697d14b426c9ed713da84e49c9f880d8
|
| |\ \
| | |
| | |
| | | |
into tm-qpr-dev
|
| | |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Activity could call setTranslucent during a transition playing, if the
task of an activity was in transition and that activity should become
invisible, it would be defer until transition finish.
However, since the activity wasn't participant the running transition,
there won't do commitVisibility for it after transition finish.
To correct the visibility status, trigger another transition so the
activities which visibility changed can be collect and commit.
Bug: 246518648
Test: atest testConvertTranslucentOnTranslucentActivity
Test: atest testConvertTranslucentOnNonTopTranslucentActivity
Change-Id: Ic1cda79da37162cca2a1a3fbc73311cc325b3874
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
| |
If shell is starting an existing transition, it doesn't need the
returned transition token so it can be an async call then it won't
block shell's thread to execute other operations.
If shell is starting a new transition, then use the new added 2-way
startNewTransition which is the same as the original path.
Bug: 248550757
Test: atest ShellTransitionTests
Test: CtsWindowManagerDeviceTestCases with shell transition
Change-Id: I5f64d19475d5b857a461775dd6f3002567e93ad8
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before, we call Activity#finish() to finish activities when removing
TaskFragment. This may start a CLOSE transition before the organizer has
a chance to request the actual transition type.
Now, we allow the organizer to finish activities through WCT so that the
operation is atomic and the organizer can request the correct transition
type.
Bug: 240519866
Test: atest WmTests:TaskFragmentOrganizerControllerTest
Test: atest CtsWindowManagerDeviceTestCases:TaskFragmentOrganizerTest
Change-Id: I54671fb2dd34dca952468305429a90d89953de69
|