summaryrefslogtreecommitdiff
path: root/core/java/android/window
Commit message (Collapse)AuthorAgeFilesLines
* Send update config change when letterbox is movedGraciela Wissen Putri2023-06-161-1/+1
| | | | | | | | | | | | | | | | | | 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
* DO NOT MERGE Add logging for when IOnBackInvokedCallback is null.Shan Huang2023-04-041-0/+1
| | | | | | | | | | 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
* Merge "Force Kids app to use LANDSCAPE when in REVERSE_LANDSCAPE" into ↵Massimo Carli2023-03-172-8/+21
|\ | | | | | | tm-qpr-dev
| * Force Kids app to use LANDSCAPE when in REVERSE_LANDSCAPEMassimo Carli2023-03-172-8/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Enable overriding density for desktop tasksAts Jenk2023-03-131-0/+13
|/ | | | | | | | | | | | | | | | | | 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
* Merge "Update WM Extensions aar for animation background color" into tm-qpr-devTreeHugger Robot2023-02-141-2/+10
|\
| * Update WM Extensions aar for animation background colorChris Li2023-02-141-2/+10
| | | | | | | | | | | | | | | | | | | | 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
* | Re-enforce MANAGE_ACTIVITY_TASKS for applySyncTransactionChris Li2023-02-131-5/+2
|/ | | | | | | | | | 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
* Merge "DO NOT MERGE Prevent back navigation not working after activity ↵Arthur Hung2023-02-093-10/+28
|\ | | | | | | re-created" into tm-qpr-dev
| * DO NOT MERGE Prevent back navigation not working after activity re-createdArthur Hung2023-02-013-10/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Merge "DO NOT MERGE Let BackProgressAnimator could play cancel animation" ↵Arthur Hung2023-02-023-6/+44
|\ \ | |/ |/| | | into tm-qpr-dev
| * DO NOT MERGE Let BackProgressAnimator could play cancel animationArthur Hung2023-01-113-6/+44
| | | | | | | | | | | | | | | | | | | | 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
* | Merge "Ignore task view task when loadAnimation" into tm-qpr-devTony Huang2023-01-112-4/+21
|\ \ | |/ |/|
| * Ignore task view task when loadAnimationTony Huang2023-01-112-4/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Merge "DO NOT MERGE Split BackEvent into an internal BackMotionEvent and ↵Shan Huang2023-01-106-38/+191
|\ \ | | | | | | | | | public BackEvent." into tm-qpr-dev
| * | DO NOT MERGE Split BackEvent into an internal BackMotionEvent and public ↵Shan Huang2022-12-306-38/+191
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Merge "Fix ActivityEmbedding issues with REORDER_TO_FRONT" into tm-qpr-devChris Li2023-01-101-2/+62
|\ \ \ | |_|/ |/| |
| * | Fix ActivityEmbedding issues with REORDER_TO_FRONTChris Li2023-01-091-2/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Merge "Allow IME to register system back callbacks in ↵Shan Huang2023-01-061-4/+2
|\ \ \ | |/ / |/| | | | | ImeOnBackInvokedDispatcher#switchRootView." into tm-qpr-dev
| * | Allow IME to register system back callbacks inShan Huang2023-01-041-4/+2
| |/ | | | | | | | | | | | | | | | | | | | | | | | | 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 TaskFragmentAnimationParams to TaskFragmentChris Li2023-01-055-1/+394
|/ | | | | | | | | | | | | 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
* Allow IME to register callbacks with negative priorities.Shan Huang2022-12-171-3/+3
| | | | | | | | | | | 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
* Merge "Add z-order regions for task child layers" into tm-qpr-devTreeHugger Robot2022-12-121-0/+106
|\
| * Add z-order regions for task child layersGarfield Tan2022-11-071-0/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Merge "Refine the naming about compatible scale" into tm-qpr-devMassimo Carli2022-12-091-5/+5
|\ \
| * | Refine the naming about compatible scaleTiger2022-12-091-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Fix ActivityEmbedding placeholder launching above fullscreen activityChris Li2022-12-081-8/+58
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | [RESTRICT AUTOMERGE] WCT#setReparentLeafTaskIfRelaunchJeff Chang2022-12-061-0/+41
| | | | | | | | | | | | | | | | | | | | | | 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
* | Apply rounded corners to startWindowMassimo Carli2022-12-031-0/+9
| | | | | | | | | | | | | | | | | | | | | | 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
* | Manually manage memory of native objectsEvan Rosky2022-11-281-0/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Remove @Nullable annotation for onConfigurationChanged.An An Yu2022-11-281-1/+1
| | | | | | | | | | | | | | Test: none Bug: 237342281 Change-Id: Ia9e971152b7e297a78d79cbb79690f66d3029c9f
* | Merge "Only override ActivityEmbedding animation for embedded activities" ↵Chris Li2022-11-192-10/+7
|\ \ | | | | | | | | | into tm-qpr-dev
| * | Only override ActivityEmbedding animation for embedded activitiesChris Li2022-11-172-10/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Merge "Add WindowProvider support to WindowLayoutComponentImpl and allow ↵An An Yu2022-11-172-0/+57
|\ \ \ | | | | | | | | | | | | WindowProviderService to broadcast configuration changes to listeners." into tm-qpr-dev
| * | | Add WindowProvider support to WindowLayoutComponentImpl and allowAn An Yu2022-11-172-0/+57
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Merge "Fixes app crash when starts activity with ↵Louis Chang2022-11-171-3/+19
|\ \ \ | | | | | | | | | | | | FLAG_ACTIVITY_REORDER_TO_FRONT" into tm-qpr-dev
| * | | Fixes app crash when starts activity with FLAG_ACTIVITY_REORDER_TO_FRONTLouis Chang2022-11-161-3/+19
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Merge "Move the task to back while pressing back on the last activity" into ↵Louis Chang2022-11-171-0/+32
|\ \ \ | |_|/ |/| | | | | tm-qpr-dev
| * | Move the task to back while pressing back on the last activityLouis Chang2022-11-161-0/+32
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... 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
* / Add WCT#setDragResizing to optimize fluid resizingJorge Gil2022-11-111-0/+36
|/ | | | | | | | | | | | | 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
* Exclude unnecessary animations of shell transitionRiddle Hsu2022-10-281-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* DO NOT MERGE Spring controlled back progress APIShan Huang2022-10-215-13/+187
| | | | | | | | | | | | | | 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
* Do not change surface of system window token for transitionRiddle Hsu2022-10-131-9/+39
| | | | | | | | | | | | | | | | | 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
* Polish ActivityEmbedding enter/exit PiP (1/n)Chris Li2022-10-131-0/+23
| | | | | | | | | | | | | | | | 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
* Merge "Fix SplitContainer not updated when folded." into tm-qpr-devCharles Chen2022-10-071-13/+13
|\
| * Fix SplitContainer not updated when folded.Charles Chen2022-10-061-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Merge "[Shell Transition] Schedule another transition to update visibility." ↵Wei Sheng Shih2022-10-061-1/+8
|\ \ | | | | | | | | | into tm-qpr-dev
| * | [Shell Transition] Schedule another transition to update visibility.wilsonshih2022-09-291-1/+8
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* / Make startTransition one-wayRiddle Hsu2022-09-272-11/+27
|/ | | | | | | | | | | | | | 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
* Allow ActivityEmbedding to finish Activity through WCTChris Li2022-09-231-0/+20
| | | | | | | | | | | | | | | 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