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

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

Merge "Remove tint from Loaded shortcut icons" into main

parents a8e198a2 472769ea
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -2040,6 +2040,16 @@ flag {
    }
}

flag {
   name: "clear_shortcut_icon_tint"
   namespace: "systemui"
   description: "Clear any tint present on incoming lockscreen shortcuts icons"
   bug: "394282762"
   metadata {
       purpose: PURPOSE_BUGFIX
   }
}

flag {
    name: "screen_off_animation_guard_enabled"
    namespace: "systemui"
+14 −4
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ package com.android.systemui.keyguard.ui.viewmodel
import androidx.annotation.VisibleForTesting
import com.android.app.tracing.FlowTracing.traceEmissionCount
import com.android.app.tracing.coroutines.flow.flowName
import com.android.systemui.Flags
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardQuickAffordanceInteractor
@@ -29,7 +31,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.quickaffordance.ActivationState
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancePosition
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.shared.Flags
import com.android.systemui.shared.Flags as SharedFlags
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
import com.android.systemui.utils.coroutines.flow.flatMapLatestConflated
import javax.inject.Inject
@@ -159,7 +161,7 @@ constructor(

    /** An observable for the view-model of the "start button" quick affordance. */
    val startButton: Flow<KeyguardQuickAffordanceViewModel> =
        if (Flags.newCustomizationPickerUi()) {
        if (SharedFlags.newCustomizationPickerUi()) {
            previewAffordances.flatMapLatestConflated {
                button(
                    position = KeyguardQuickAffordancePosition.BOTTOM_START,
@@ -172,7 +174,7 @@ constructor(

    /** An observable for the view-model of the "end button" quick affordance. */
    val endButton: Flow<KeyguardQuickAffordanceViewModel> =
        if (Flags.newCustomizationPickerUi()) {
        if (SharedFlags.newCustomizationPickerUi()) {
            previewAffordances.flatMapLatestConflated {
                button(
                    position = KeyguardQuickAffordancePosition.BOTTOM_END,
@@ -297,7 +299,7 @@ constructor(
                    configKey = configKey,
                    isVisible = true,
                    animateReveal = animateReveal,
                    icon = icon,
                    icon = nonTintedIcon(icon),
                    onClicked = { parameters ->
                        quickAffordanceInteractor.onQuickAffordanceTriggered(
                            configKey = parameters.configKey,
@@ -317,6 +319,14 @@ constructor(
        }
    }

    @VisibleForTesting
    fun nonTintedIcon(icon: Icon): Icon =
        if (Flags.clearShortcutIconTint() && icon is Icon.Loaded) {
            icon.apply { drawable.setTintList(null) }
        } else {
            icon
        }

    companion object {
        // We select a value that's less than 1.0 because we want floating point math precision to
        // not be a factor in determining whether the affordance UI is fully opaque. The number we
+31 −0
Original line number Diff line number Diff line
@@ -19,7 +19,9 @@ package com.android.systemui.keyguard.ui.viewmodel

import android.app.admin.DevicePolicyManager
import android.content.Intent
import android.graphics.drawable.Drawable
import android.os.UserHandle
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
@@ -89,6 +91,9 @@ import org.mockito.ArgumentMatchers
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.isNull
import org.mockito.kotlin.verify
import org.mockito.kotlin.verifyNoInteractions

@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -350,6 +355,32 @@ class KeyguardQuickAffordancesCombinedViewModelTest : SysuiTestCase() {
            )
        }

    @Test
    @EnableFlags(com.android.systemui.Flags.FLAG_CLEAR_SHORTCUT_ICON_TINT)
    fun nonTintedIcon_clearsTintFromIcon() =
        testScope.runTest {
            val icon: Icon.Loaded = mock()
            val drawable: Drawable = mock()
            whenever(icon.drawable).thenReturn(drawable)

            underTest.nonTintedIcon(icon)

            verify(drawable).setTintList(isNull())
        }

    @Test
    @DisableFlags(com.android.systemui.Flags.FLAG_CLEAR_SHORTCUT_ICON_TINT)
    fun nonTintedIcon_noInteractionWithDrawable() =
        testScope.runTest {
            val icon: Icon.Loaded = mock()
            val drawable: Drawable = mock()
            whenever(icon.drawable).thenReturn(drawable)

            underTest.nonTintedIcon(icon)

            verifyNoInteractions(drawable)
        }

    @Test
    fun startButton_hiddenWhenDevicePolicyDisablesAllKeyguardFeatures() =
        testScope.runTest {