* Patch fix for Android 13 and below
tested in Android 9, 10 and 13 and works fine.
* fix crash dragging the icons from drawer to home screen
* use LawnchairWindowManagerProxy
---------
Co-authored-by: MrSluffy <werdna.jac@gmail.com>
Pull #4417 implemented this incompletely, resulting in breakage in
NothingOS 2.6.
Transaction needs to be applied so that the animation chain can
continue.
Signed-off-by: Juhyung Park <qkrwngud825@gmail.com>
Currently the recents activity is started by a pending intent created
by launcher. And the sender is system server.
(HIERARCHY_OP_TYPE_PENDING_INTENT in WindowOrganizerController)
If the intent creator doesn't have visible windows, e.g. launcher is
occluded by its another embedded of another package, then the background
launch policy will check whether the intent sender is allowed. But
system server also doesn't have visible windows, which causes
BackgroundActivityStartController#
checkBackgroundActivityStartAllowedBySender to return BalVerdict.BLOCK.
Which will set MOVE_TO_FRONT_AVOID_PI_ONLY_CREATOR_ALLOWS to disallow
moving the target task to front.
See I72a6c22a5fb27aeac52a4e5d46c6a16e28ee6757 for the block policy.
Although currently the recents activity can still move to front because
some places miss to check blocking the launch. Then it is like just
using a security hole.
By adding the background launch permission hint to ActivityOptions,
BackgroundActivityStartController#hasBalPermission will check if the
real caller has permission START_ACTIVITIES_FROM_BACKGROUND. Then
it will pass because the intent sender is system server.
Bug: 341618283
Flag: EXEMPT bugfix
Test: atest NexusLauncherTests: \
com.android.quickstep.TaskAnimationManagerTest
Test: Swipe to minus one screen. Click a news item to Launch chrome.
Swipe from bottom to return to home. There should not have an
error log:
"Without Android 15 BAL hardening this activity would be moved
to the foreground ... only the creator of the PendingIntent
allows BAL. realCallingPackage: android.uid.system:1000 ..."
(from ActivityStarter#logPIOnlyCreatorAllowsBAL)
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:a37161182e76cf445b660d1d4ac138476cfa278e)
Merged-In: I19153f6553c09421bca248d4ff9110d168b34f98
Change-Id: I19153f6553c09421bca248d4ff9110d168b34f98
When using a 3rd party launcher most likely
Log:
E AndroidRuntime: Process: com.android.launcher3, PID: 2783
E AndroidRuntime: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.USER_UNLOCKED flg=0x50000010 (has extras) } in com.android.launcher3.util.SimpleBroadcastReceiver@89bb61a
E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1818)
E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.$r8$lambda$mcNAAl1SQ4MyJPyDg8TJ2x2h0Rk(Unknown Source:0)
E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:959)
E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:100)
E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:232)
E AndroidRuntime: at android.os.Looper.loop(Looper.java:317)
E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8502)
E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:554)
E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
E AndroidRuntime: Caused by: java.lang.IllegalStateException: Existing input consumer found with name: recents_animation_input_consumer, display: 0, user: UserHandle{0}
E AndroidRuntime: at android.os.Parcel.createExceptionOrNull(Parcel.java:3190)
E AndroidRuntime: at android.os.Parcel.createException(Parcel.java:3166)
E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:3149)
E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:3091)
E AndroidRuntime: at android.view.IWindowManager$Stub$Proxy.createInputConsumer(IWindowManager.java:4872)
E AndroidRuntime: at com.android.systemui.shared.system.InputConsumerController.registerInputConsumer(go/retraceme 015d387a8a548af421dcff814eada6998d8d1f185998fc40f30bbeef937dbdc3:24)
E AndroidRuntime: at com.android.quickstep.TouchInteractionService.onUserUnlocked(go/retraceme 015d387a8a548af421dcff814eada6998d8d1f185998fc40f30bbeef937dbdc3:51)
E AndroidRuntime: at com.android.quickstep.TouchInteractionService$$ExternalSyntheticLambda0.run(go/retraceme 015d387a8a548af421dcff814eada6998d8d1f185998fc40f30bbeef937dbdc3:12)
E AndroidRuntime: at com.android.launcher3.util.RunnableList.executeAllAndClear(go/retraceme 015d387a8a548af421dcff814eada6998d8d1f185998fc40f30bbeef937dbdc3:21)
E AndroidRuntime: at com.android.launcher3.util.RunnableList.executeAllAndDestroy(go/retraceme 015d387a8a548af421dcff814eada6998d8d1f185998fc40f30bbeef937dbdc3:4)
E AndroidRuntime: at com.android.launcher3.util.LockedUserState.access$notifyUserUnlocked(go/retraceme 015d387a8a548af421dcff814eada6998d8d1f185998fc40f30bbeef937dbdc3:3)
E AndroidRuntime: at com.android.launcher3.util.LockedUserState$mUserUnlockedReceiver$1.accept(go/retraceme 015d387a8a548af421dcff814eada6998d8d1f185998fc40f30bbeef937dbdc3:22)
E AndroidRuntime: at com.android.launcher3.util.SimpleBroadcastReceiver.onReceive(go/retraceme 015d387a8a548af421dcff814eada6998d8d1f185998fc40f30bbeef937dbdc3:3)
E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1810)
E AndroidRuntime: ... 10 more
E AndroidRuntime: Caused by: android.os.RemoteException: Remote stack trace:
E AndroidRuntime: at com.android.server.wm.InputMonitor.createInputConsumer(InputMonitor.java:226)
E AndroidRuntime: at com.android.server.wm.WindowManagerService.createInputConsumer(WindowManagerService.java:6543)
E AndroidRuntime: at android.view.IWindowManager$Stub.onTransact(IWindowManager.java:2612)
E AndroidRuntime: at com.android.server.wm.WindowManagerService.onTransact(WindowManagerService.java:1406)
E AndroidRuntime: at android.os.Binder.execTransactInternal(Binder.java:1496)
Co-authored-by: Ido Ben-Hur <idoybh2@gmail.com>
- This fixed a regression caused by ag/27904180, where -1 is no longer considered `visibleLauncher`. -1 still have Launcher being top activity, and recents animation will always fail
- Added isInMinusOne in LauncherActivityInterface, and return Launcher in getVisibleLauncher for -1 case
- -1 should be the only case where Launcher is top activity, but is not started
Fix: 352254279
Test: Recents button from the following scenarios: Home, -1, apps, transparent apps, video from -1
Flag: EXEMPT bugfix
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:1cd3fe27f229da4f7bb80a2e04d1416cc050fc94)
Merged-In: I0898d202b9dd4742c0c7d2c0d6b340c748e8acf7
Change-Id: I0898d202b9dd4742c0c7d2c0d6b340c748e8acf7
- Also updated AnimatedFloat to accept a Consumer<Float>, so a lambda can be used as updateCallback with refernce to udpated value
- Also updated PendingAnimation to accept Animator with TimedInterpolator without specifying SpringProperty
Fix: 352195519
Test: manual
Flag: EXEMPT bugfix
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:c378e64b757dbb83b6024be462a6752bc6a2c5f2)
Merged-In: Ifb78c1bcd3ca215a5d214f986a107d0988bff13b
Change-Id: Ifb78c1bcd3ca215a5d214f986a107d0988bff13b
* RecentsView#onAttachedToWindow relies on splitSelectStateController
being initialized, so we now do it before RecentsActivity calls
setContentView()
Bug: 332643607
Test: Couldn't repro before or after :(
Flag: EXEMPT bugfix
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:4276ee4897f59cfb1a2e432adfe54196b1a0dd2d)
Merged-In: Ic26460e08ca74adcf6dcf31abc956ad57f4061c2
Change-Id: Ic26460e08ca74adcf6dcf31abc956ad57f4061c2
In an effort to encourage users to look at Taskbar edu more thoroughly,
this change makes it so users have to press the 'Done' button explicitly
to close the taskbar edu window. This change also adds the ability for
it to be dismissed by the back gesture. It only applies to the features
edu, and not other taskbar educations.
Fix: 349612575
Test: Manually run all versions of taskbar edu and ensure that the edu only goes away with back gesture, swipe up or clicking on the DONE button
Flag: EXEMPT bugfix
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:17339843e76cb507413e1d22dcf0c7982e024379)
Merged-In: I9c456b9efddc6de5f292d6a14b1ce9daee7efaa3
Change-Id: I9c456b9efddc6de5f292d6a14b1ce9daee7efaa3
This CL prevents returning launcher in getVisibleLauncher method when isHomeVisible is true but Launcher is not started.
Bug: 337954957
Bug: 331947116
Flag: EXEMPT bugfix
Test: Manual. With 3-button-nav. Open a video from -1 scren (not in Youtube app), press recent button. More instructions in b/337954957#comment26.
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:6a4c142b5b77ccb8c439e29209b6dfd04a4690d0)
Merged-In: I40edafdab5457666474de2c0368158a9c1c05fb0
Change-Id: I40edafdab5457666474de2c0368158a9c1c05fb0
The banner should be aligned to the start of the screen, not the center. This CL fixes DWB position for split tasks when device is unfolded.
Fix: 348200661
Bug: 345789862
Flag: EXEMPT bugfix
Test: Manual. Add a Digital Wellbeing (DWB) timer to 2 apps. Open these two apps in split mode. Unfold the device and go to Overview. The DWB banner should aligned correctly.
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:3d088e3899cfca516dfa8ae9699691ece2b914d9)
Merged-In: I0544b4a8eb85b00196373c8a4368e680abab222b
Change-Id: I0544b4a8eb85b00196373c8a4368e680abab222b
When the app provided source rect hint does not match the aspect ratio,
by a certain threshold, we ignore that and in turn apply content overlay
during the enter animation, to avoid size change at the end.
In button-navigation mode, some special logical's applied as to crop the
content to its shorter edge for this case, which is inconsistent and we
will address that later in a separate change set.
Video: http://recall/-/aaaaaabFQoRHlzixHdtY/d4kLspMrqb7Xsc2JtkTW0m
Flag: NONE bug fix
Bug: 338616637
Test: Enter PiP from zoomed and non-zoomed video
Change-Id: I5059553cb9b6c02810e9638bfaf29dde9ab6140f
Added animation for the updates of bubble bar icon sizes and padding
Fixes: 335575529
Flag: com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: BubbleBarViewAnimatorTest
Change-Id: I07d66b3a9d565f4fa6040c3c4bf4866e4d81a3a6
This CL makes changes to the "split divider placeholder view", which was intended to cover up the backdrop a little during the split confirm animation. The placeholder view is now larger (fullscreen) and fades in with the animation movement, so there is no longer a period of time when it looks like an awkward rectangle.
New timings and interpolators confirmed with UX. Also renamed some variables and added comments for clarity.
Fixes: 344573331
Test: Manually verified that the visual bug no longer happens on large and small screen, and from desktop and Overview.
Flag: EXEMPT bugfix
Change-Id: I3b37f2b0478035d7a3181ae7c23962fe75a13b2c