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

Commit 14102ff4 authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Changing BaseIconFactory to kotlin

Bug: 427523903
Test: Launcher screenshot tests
Flag: EXEMPT refactor
Change-Id: I393693abc5b9432e39fc3f95a248e082fb196e02
parent a770e5d7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ import android.util.Slog
import androidx.tracing.Trace
import com.android.internal.annotations.VisibleForTesting
import com.android.launcher3.icons.BaseIconFactory
import com.android.launcher3.icons.BaseIconFactory.MODE_DEFAULT
import com.android.launcher3.icons.BaseIconFactory.Companion.MODE_DEFAULT
import com.android.launcher3.icons.IconProvider
import com.android.wm.shell.R
import com.android.wm.shell.common.UserProfileContexts
+4 −3
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ import android.testing.AndroidTestingRunner
import android.testing.TestableContext
import androidx.test.filters.SmallTest
import com.android.launcher3.icons.BaseIconFactory
import com.android.launcher3.icons.BaseIconFactory.MODE_DEFAULT
import com.android.launcher3.icons.BaseIconFactory.Companion.MODE_DEFAULT
import com.android.launcher3.icons.IconProvider
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.TestRunningTaskInfoBuilder
@@ -41,11 +41,11 @@ import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.sysui.UserChangeListener
import com.android.wm.shell.windowdecor.common.WindowDecorTaskResourceLoader.AppResources
import com.google.common.truth.Truth.assertThat
import java.util.Locale
import org.junit.Assert.assertThrows
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.ArgumentMatchers.anyFloat
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.kotlin.any
@@ -58,6 +58,7 @@ import org.mockito.kotlin.spy
import org.mockito.kotlin.verify
import org.mockito.kotlin.verifyNoMoreInteractions
import org.mockito.kotlin.whenever
import java.util.Locale

/**
 * Tests for [WindowDecorTaskResourceLoader].
@@ -155,7 +156,7 @@ class WindowDecorTaskResourceLoaderTest : ShellTestCase() {

        loader.getHeaderIcon(task)

        verify(mockHeaderIconFactory).createIconBitmap(any(), anyFloat())
        verify(mockHeaderIconFactory).createIconBitmap(any(), anyFloat(), anyInt(), anyBoolean())
        assertThat(loader.taskToResourceCache[task.taskId]?.appIcon).isNotNull()
    }

+3 −3
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ public class ConversationIconFactory extends BaseIconFactory {
     * Returns the conversation info drawable
     */
    public Drawable getBaseIconDrawable(ShortcutInfo shortcutInfo) {
        return mLauncherApps.getShortcutIconDrawable(shortcutInfo, mFullResIconDpi);
        return mLauncherApps.getShortcutIconDrawable(shortcutInfo, fullResIconDpi);
    }

    /**
@@ -99,7 +99,7 @@ public class ConversationIconFactory extends BaseIconFactory {
        try {
            final ApplicationInfo appInfo = mPackageManager.getApplicationInfoAsUser(
                    packageName, PackageManager.GET_META_DATA, userId);
            badge = Utils.getBadgedIcon(mContext, appInfo);
            badge = Utils.getBadgedIcon(context, appInfo);
        } catch (PackageManager.NameNotFoundException e) {
            badge = mPackageManager.getDefaultActivityIcon();
        }
@@ -123,7 +123,7 @@ public class ConversationIconFactory extends BaseIconFactory {
            boolean important) {
        return new ConversationIconDrawable(baseIcon,
                getAppBadge(packageName, UserHandle.getUserId(uid)),
                mIconBitmapSize,
                iconBitmapSize,
                mImportantConversationColor,
                important);
    }
+40 −44
Original line number Diff line number Diff line
@@ -111,56 +111,52 @@ constructor(
    private val densityDpi: Int
        get() = sysuiContext.resources.configuration.densityDpi

    private class StandardNotificationIcons(
        context: Context,
        fillResIconDpi: Int,
        iconBitmapSize: Int,
    ) : BaseIconFactory(context, fillResIconDpi, iconBitmapSize) {

        init {
            if (notificationsRedesignThemedAppIcons()) {
    private val standardIconFactory: BaseIconFactory
        get() =
            BaseIconFactory(
                context = sysuiContext,
                fullResIconDpi = densityDpi,
                iconBitmapSize = iconSize,
                // Initialize the controller so that we can support themed icons.
                mThemeController =
                themeController =
                    if (notificationsRedesignThemedAppIcons())
                        MonoIconThemeController(
                            shouldForceThemeIcon = true,
                            colorProvider = { ctx ->
                                val res = ctx.resources
                                intArrayOf(
                                    /* background */ res.getColor(R.color.materialColorPrimary),
                                /* icon */ res.getColor(R.color.materialColorSurfaceContainerHigh),
                                /* adaptive background */ res.getColor(R.color.materialColorPrimary)
                                    /* icon */ res.getColor(
                                        R.color.materialColorSurfaceContainerHigh
                                    ),
                                    /* adaptive background */ res.getColor(
                                        R.color.materialColorPrimary
                                    ),
                                )
                            },
                        )
            }
        }
    }
                    else null,
            )

    private class SkeletonNotificationIcons(
        context: Context,
        fillResIconDpi: Int,
        iconBitmapSize: Int,
    ) : BaseIconFactory(context, fillResIconDpi, iconBitmapSize) {
        init {
            mThemeController =
    private val skeletonIconFactory: BaseIconFactory
        get() =
            BaseIconFactory(
                context = sysuiContext,
                fullResIconDpi = densityDpi,
                iconBitmapSize = iconSize,
                themeController =
                    MonoIconThemeController(
                        shouldForceThemeIcon = true,
                        colorProvider = { _ ->
                            intArrayOf(
                            /* background */ Color.BLACK,
                            /* icon */ Color.WHITE,
                            /* adaptive background */ Color.BLACK
                                /* background */ Color.BLACK, /* icon */
                                Color.WHITE,

                                /* adaptive background */ Color.BLACK,
                            )
                        },
                    ),
            )
        }
    }

    private val standardIconFactory: BaseIconFactory
        get() = StandardNotificationIcons(sysuiContext, densityDpi, iconSize)

    private val skeletonIconFactory: BaseIconFactory
        get() = SkeletonNotificationIcons(sysuiContext, densityDpi, iconSize)

    /** Cache of standard-appearance icons as used in the notification row and guts */
    private val standardCache = AppIconCache(systemClock = systemClock)