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

Commit 3db69593 authored by Ivan Tkachenko's avatar Ivan Tkachenko Committed by Android (Google) Code Review
Browse files

Merge changes from topic "b309014605_wallpaper_activity" into main

* changes:
  Desktop windowing wallpaper flag
  Desktop windowing wallpaper
parents c99a3299 1c2f24c0
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -49,3 +49,10 @@ flag {
    description: "Shows running apps in Desktop Mode Taskbar"
    bug: "332504528"
}

flag {
    name: "enable_desktop_windowing_wallpaper_activity"
    namespace: "lse_desktop_experience"
    description: "Enables desktop wallpaper activity to show wallpaper in the desktop mode"
    bug: "309014605"
}
+8 −0
Original line number Diff line number Diff line
@@ -23,4 +23,12 @@
    <uses-permission android:name="android.permission.ROTATE_SURFACE_FLINGER" />
    <uses-permission android:name="android.permission.WAKEUP_SURFACE_FLINGER" />
    <uses-permission android:name="android.permission.READ_FRAME_BUFFER" />

    <application>
        <activity
            android:name=".desktopmode.DesktopWallpaperActivity"
            android:excludeFromRecents="true"
            android:launchMode="singleInstance"
            android:theme="@style/DesktopWallpaperTheme" />
    </application>
</manifest>
+8 −0
Original line number Diff line number Diff line
@@ -23,6 +23,14 @@
        <item name="android:windowAnimationStyle">@style/Animation.ForcedResizable</item>
    </style>

    <!-- Theme used for the activity that shows below the desktop mode windows to show wallpaper -->
    <style name="DesktopWallpaperTheme" parent="@android:style/Theme.Wallpaper.NoTitleBar">
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:navigationBarColor">@android:color/transparent</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:windowAnimationStyle">@null</item>
    </style>

    <style name="Animation.ForcedResizable" parent="@android:style/Animation">
        <item name="android:activityOpenEnterAnimation">@anim/forced_resizable_enter</item>

+15 −1
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ import com.android.wm.shell.desktopmode.DesktopModeLoggerTransitionObserver;
import com.android.wm.shell.desktopmode.DesktopModeStatus;
import com.android.wm.shell.desktopmode.DesktopModeTaskRepository;
import com.android.wm.shell.desktopmode.DesktopTasksController;
import com.android.wm.shell.desktopmode.DesktopTasksTransitionObserver;
import com.android.wm.shell.desktopmode.DragToDesktopTransitionHandler;
import com.android.wm.shell.desktopmode.EnterDesktopTaskTransitionHandler;
import com.android.wm.shell.desktopmode.ExitDesktopTaskTransitionHandler;
@@ -567,6 +568,18 @@ public abstract class WMShellModule {
        return new DesktopModeTaskRepository();
    }

    @WMSingleton
    @Provides
    static Optional<DesktopTasksTransitionObserver> provideDesktopTasksTransitionObserver(
            Optional<DesktopModeTaskRepository> desktopModeTaskRepository,
            Transitions transitions,
            ShellInit shellInit
    ) {
        return desktopModeTaskRepository.flatMap(repository ->
                Optional.of(new DesktopTasksTransitionObserver(repository, transitions, shellInit))
        );
    }

    @WMSingleton
    @Provides
    static DesktopModeLoggerTransitionObserver provideDesktopModeLoggerTransitionObserver(
@@ -623,7 +636,8 @@ public abstract class WMShellModule {
    @Provides
    static Object provideIndependentShellComponentsToCreate(
            DragAndDropController dragAndDropController,
            DefaultMixedHandler defaultMixedHandler) {
            DefaultMixedHandler defaultMixedHandler,
            Optional<DesktopTasksTransitionObserver> desktopTasksTransitionObserverOptional) {
        return new Object();
    }
}
+12 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.util.ArrayMap
import android.util.ArraySet
import android.util.SparseArray
import android.view.Display.INVALID_DISPLAY
import android.window.WindowContainerToken
import androidx.core.util.forEach
import androidx.core.util.keyIterator
import androidx.core.util.valueIterator
@@ -49,6 +50,8 @@ class DesktopModeTaskRepository {
        var stashed: Boolean = false
    )

    // Token of the current wallpaper activity, used to remove it when the last task is removed
    var wallpaperActivityToken: WindowContainerToken? = null
    // Tasks currently in freeform mode, ordered from top to bottom (top is at index 0).
    private val freeformTasksInZOrder = mutableListOf<Int>()
    private val activeTasksListeners = ArraySet<ActiveTasksListener>()
@@ -199,6 +202,15 @@ class DesktopModeTaskRepository {
        }
    }

    /**
     *  Check if a task with the given [taskId] is the only active task on its display
     */
    fun isOnlyActiveTask(taskId: Int): Boolean {
        return displayData.valueIterator().asSequence().any { data ->
            data.activeTasks.singleOrNull() == taskId
        }
    }

    /**
     * Get a set of the active tasks for given [displayId]
     */
Loading