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

Commit 479b9b66 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Exclude Wallpaper activity from system modal transition handling" into main

parents 8ee167ec 1ec1a000
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.wm.shell.desktopmode.compatui

import android.animation.ValueAnimator
import android.app.ActivityManager.RunningTaskInfo
import android.content.Context
import android.os.IBinder
import android.view.Display.DEFAULT_DISPLAY
@@ -30,6 +31,7 @@ import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.common.ShellExecutor
import com.android.wm.shell.compatui.isTopActivityExemptFromDesktopWindowing
import com.android.wm.shell.desktopmode.DesktopUserRepositories
import com.android.wm.shell.desktopmode.DesktopWallpaperActivity
import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
import com.android.wm.shell.shared.TransitionUtil.isClosingMode
import com.android.wm.shell.shared.TransitionUtil.isClosingType
@@ -128,7 +130,7 @@ class SystemModalsTransitionHandler(
                return@find false
            }
            val taskInfo = change.taskInfo ?: return@find false
            return@find isTopActivityExemptFromDesktopWindowing(context, taskInfo)
            return@find isSystemModal(context, taskInfo)
        }

    private fun getClosingSystemModal(info: TransitionInfo): TransitionInfo.Change? =
@@ -137,10 +139,14 @@ class SystemModalsTransitionHandler(
                return@find false
            }
            val taskInfo = change.taskInfo ?: return@find false
            return@find isTopActivityExemptFromDesktopWindowing(context, taskInfo) ||
            return@find isSystemModal(context, taskInfo) ||
                showingSystemModalsIds.contains(taskInfo.taskId)
        }

    private fun isSystemModal(context: Context, taskInfo: RunningTaskInfo): Boolean =
        !DesktopWallpaperActivity.isWallpaperTask(taskInfo) &&
            isTopActivityExemptFromDesktopWindowing(context, taskInfo)

    private fun createAlphaAnimator(
        transaction: SurfaceControl.Transaction,
        leash: SurfaceControl,
+8 −4
Original line number Diff line number Diff line
@@ -74,10 +74,14 @@ object DesktopTestHelpers {
            .setLastActiveTime(100)
            .build()

    /**
     * Create a new System Modal task builder, i.e. a builder for a task with only transparent
     * activities.
     */
    fun createSystemModalTaskBuilder(displayId: Int = DEFAULT_DISPLAY): TestRunningTaskInfoBuilder =
        createFullscreenTaskBuilder(displayId).setActivityStackTransparent(true).setNumActivities(1)

    /** Create a new System Modal task, i.e. a task with only transparent activities. */
    fun createSystemModalTask(displayId: Int = DEFAULT_DISPLAY): RunningTaskInfo =
        createFullscreenTaskBuilder(displayId)
            .setActivityStackTransparent(true)
            .setNumActivities(1)
            .build()
        createSystemModalTaskBuilder(displayId).build()
}
+16 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.wm.shell.desktopmode.compatui

import android.content.Intent
import android.os.Binder
import android.testing.AndroidTestingRunner
import android.view.SurfaceControl
@@ -29,7 +30,9 @@ import com.android.wm.shell.desktopmode.DesktopRepository
import com.android.wm.shell.desktopmode.DesktopTestHelpers.createFullscreenTask
import com.android.wm.shell.desktopmode.DesktopTestHelpers.createFullscreenTaskBuilder
import com.android.wm.shell.desktopmode.DesktopTestHelpers.createSystemModalTask
import com.android.wm.shell.desktopmode.DesktopTestHelpers.createSystemModalTaskBuilder
import com.android.wm.shell.desktopmode.DesktopUserRepositories
import com.android.wm.shell.desktopmode.DesktopWallpaperActivity
import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.transition.TransitionInfoBuilder
import com.android.wm.shell.transition.Transitions
@@ -115,6 +118,19 @@ class SystemModalsTransitionHandlerTest : ShellTestCase() {
        assertThat(transitionHandler.startAnimation(Binder(), info, startT, finishT) {}).isFalse()
    }

    @Test
    fun startAnimation_launchingWallpaperTask_doesNotAnimate() {
        val wallpaperTask =
            createSystemModalTaskBuilder().setBaseIntent(createWallpaperIntent()).build()
        val info =
            TransitionInfoBuilder(TRANSIT_OPEN).addChange(TRANSIT_OPEN, wallpaperTask).build()

        assertThat(transitionHandler.startAnimation(Binder(), info, startT, finishT) {}).isFalse()
    }

    private fun createWallpaperIntent() =
        Intent().apply { setComponent(DesktopWallpaperActivity.wallpaperActivityComponent) }

    @Test
    fun startAnimation_launchingFullscreenTask_doesNotAnimate() {
        val info =