Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79a87309 authored by wilsonshih's avatar wilsonshih
Browse files

Apply root task for launch activity animation.

When launch task embedded, the opening targets will includes the root
task and other TaskFragments, so the animation should choose the root
task as the animating target.

Bug: 279542263
Test: manual, launch task embedded task from notification shade several
times.

Change-Id: I90278e22580b9afb356ab68057bd187f9d59dbc7
parent c58528f3
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -508,6 +508,26 @@ class ActivityLaunchAnimator(
            startAnimation(apps, nonApps, callback)
        }

        private fun findRootTaskIfPossible(
            apps: Array<out RemoteAnimationTarget>?
        ): RemoteAnimationTarget? {
            if (apps == null) {
                return null
            }
            var candidate: RemoteAnimationTarget? = null
            for (it in apps) {
                if (it.mode == RemoteAnimationTarget.MODE_OPENING) {
                    if (it.taskInfo != null && !it.hasAnimatingParent) {
                        return it
                    }
                    if (candidate == null) {
                        candidate = it
                    }
                }
            }
            return candidate
        }

        private fun startAnimation(
            apps: Array<out RemoteAnimationTarget>?,
            nonApps: Array<out RemoteAnimationTarget>?,
@@ -517,8 +537,7 @@ class ActivityLaunchAnimator(
                Log.d(TAG, "Remote animation started")
            }

            val window = apps?.firstOrNull { it.mode == RemoteAnimationTarget.MODE_OPENING }

            val window = findRootTaskIfPossible(apps)
            if (window == null) {
                Log.i(TAG, "Aborting the animation as no window is opening")
                removeTimeout()