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

Commit 3be861b2 authored by alinazaidi's avatar alinazaidi Committed by Alina Zaidi
Browse files

Mention userId when using WallpaperManager#getWallpaperColors in DesktopWallpaperActivity

DesktopWallpaperActivity runs on user 0 which gives incorrect wallpaper
colors for HSUM user 10

Test: mp droid and locally tested status bar icons are in correct color in desktop mode. Also tested wallpaper change. Tested on both HSUM and non-HSUM
Flag: com.android.window.flags.enable_desktop_windowing_wallpaper_activity
Bug: 415332896
Change-Id: I4ce264f491086280e53fce36792f4ca066aea43e
parent e3ac82a2
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.wm.shell.desktopmode

import android.app.ActivityManager.getCurrentUser
import android.app.TaskInfo
import android.app.WallpaperColors
import android.app.WallpaperManager
@@ -41,11 +42,19 @@ import androidx.fragment.app.FragmentActivity
class DesktopWallpaperActivity : FragmentActivity() {

    private var wallpaperManager: WallpaperManager? = null
    // TODO(b/432710419): Refresh current user on user change if needed
    private var currentUser: Int = getCurrentUser()

    private val wallpaperColorsListener =
        WallpaperManager.OnColorsChangedListener { colors, which ->
        object : WallpaperManager.OnColorsChangedListener {
            override fun onColorsChanged(colors: WallpaperColors?, which: Int) {}

            override fun onColorsChanged(colors: WallpaperColors?, which: Int, userId: Int) {
                if (userId == currentUser) {
                    updateStatusBarIconColors(colors)
                }
            }
        }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
@@ -72,9 +81,7 @@ class DesktopWallpaperActivity : FragmentActivity() {
        wallpaperManager?.addOnColorsChangedListener(wallpaperColorsListener, mainThreadHandler)

        // Set the initial color of status bar icons on activity creation.
        updateStatusBarIconColors(
            wallpaperManager?.getWallpaperColors(WallpaperManager.FLAG_SYSTEM)
        )
        updateStatusBarIconColors(wallpaperManager?.getWallpaperColors(WallpaperManager.FLAG_SYSTEM, currentUser))
    }

    override fun onDestroy() {
@@ -106,10 +113,8 @@ class DesktopWallpaperActivity : FragmentActivity() {
        }
    }

    private fun getWindowInsetsController(): WindowInsetsControllerCompat {
        val window = getWindow()
        return WindowCompat.getInsetsController(window, window.decorView)
    }
    private fun getWindowInsetsController(): WindowInsetsControllerCompat =
        WindowCompat.getInsetsController(window, window.decorView)

    companion object {
        private const val TAG = "DesktopWallpaperActivity"