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

Commit 571fea26 authored by Fiona Campbell's avatar Fiona Campbell
Browse files

Show even dimmer upgrade dialog on QS

- Show even dimmer upgrade dialog on quick settings short & long click
- Remove QS tile removal logic - this is now done in showDialog and a11y
  manager
- This is a re-upload removing Ravenwood annotation to make tests pass.

Bug: 356326685
Flag: com.android.server.display.feature.flags.even_dimmer
Test: atest ReduceBrightColorsTileMapperTest
Test: atest com.android.systemui.qs.tiles.impl.reducebrightness.domain.interactor.ReduceBrightColorsTileDataInteractorTest
Test: atest com.android.systemui.qs.tiles.ReduceBrightColorsTileTest
Test: atest com.android.systemui.qs.tiles.impl.reducebrightness.domain.interactor.ReduceBrightColorsTileUserActionInteractorTest
Change-Id: Ia6d9f99f279f17d9aee0c36c3c42e4705f479b09
parent 4addccb4
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.accessibility.extradim
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.plugins.ActivityStarter
import javax.inject.Provider
import org.junit.Before
@@ -41,10 +42,12 @@ class ExtraDimDialogManagerTest : SysuiTestCase() {

    @Mock private lateinit var activityStarter: ActivityStarter
    @Mock private lateinit var dialogProvider: Provider<ExtraDimDialogDelegate>
    @Mock private lateinit var dialogTransitionAnimator: DialogTransitionAnimator

    @Before
    fun setUp() {
        extraDimDialogManager = ExtraDimDialogManager(dialogProvider, activityStarter)
        extraDimDialogManager =
            ExtraDimDialogManager(dialogProvider, activityStarter, dialogTransitionAnimator)
    }

    @Test
@@ -56,7 +59,7 @@ class ExtraDimDialogManagerTest : SysuiTestCase() {
                /* cancelAction= */ eq(null),
                /* dismissShade= */ eq(false),
                /* afterKeyguardGone= */ eq(true),
                /* deferred= */ eq(false)
                /* deferred= */ eq(false),
            )
    }
}
+39 −24
Original line number Diff line number Diff line
@@ -16,15 +16,17 @@

package com.android.systemui.qs.tiles.impl.reducebrightness.domain.interactor

import android.platform.test.annotations.EnabledOnRavenwood
import android.platform.test.annotations.RequiresFlagsDisabled
import android.platform.test.annotations.RequiresFlagsEnabled
import android.platform.test.flag.junit.CheckFlagsRule
import android.platform.test.flag.junit.DeviceFlagsValueProvider
import android.provider.Settings
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.R
import com.android.server.display.feature.flags.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.accessibility.extradim.ExtraDimDialogManager
import com.android.systemui.accessibility.reduceBrightColorsController
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.qs.tiles.base.actions.FakeQSTileIntentUserInputHandler
@@ -33,11 +35,16 @@ import com.android.systemui.qs.tiles.base.interactor.QSTileInputTestKtx
import com.android.systemui.qs.tiles.impl.reducebrightness.domain.model.ReduceBrightColorsTileModel
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.anyOrNull
import org.mockito.kotlin.verify

@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
class ReduceBrightColorsTileUserActionInteractorTest : SysuiTestCase() {

@@ -45,21 +52,34 @@ class ReduceBrightColorsTileUserActionInteractorTest : SysuiTestCase() {
    private val inputHandler = FakeQSTileIntentUserInputHandler()
    private val controller = kosmos.reduceBrightColorsController

    private val underTest =
    @Mock private lateinit var mExtraDimDialogManager: ExtraDimDialogManager

    @get:Rule val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()

    private lateinit var underTest: ReduceBrightColorsTileUserActionInteractor
    private lateinit var underTestEvenDimmerEnabled: ReduceBrightColorsTileUserActionInteractor

    @Before
    fun setup() {
        MockitoAnnotations.initMocks(this)
        underTest =
            ReduceBrightColorsTileUserActionInteractor(
                context.resources,
                inputHandler,
                controller,
                mExtraDimDialogManager,
            )

    private val underTestEvenDimmerEnabled =
        underTestEvenDimmerEnabled =
            ReduceBrightColorsTileUserActionInteractor(
                context.orCreateTestableResources
                    .apply { addOverride(R.bool.config_evenDimmerEnabled, true) }
                    .resources,
                inputHandler,
                controller,
                mExtraDimDialogManager,
            )
    }

    @Test
    @RequiresFlagsDisabled(Flags.FLAG_EVEN_DIMMER)
@@ -142,9 +162,7 @@ class ReduceBrightColorsTileUserActionInteractorTest : SysuiTestCase() {
            QSTileInputTestKtx.longClick(ReduceBrightColorsTileModel(enabled))
        )

        QSTileIntentUserInputHandlerSubject.assertThat(inputHandler).handledOneIntentInput {
            assertThat(it.intent.action).isEqualTo(Settings.ACTION_DISPLAY_SETTINGS)
        }
        verify(mExtraDimDialogManager).dismissKeyguardIfNeededAndShowDialog(anyOrNull())
    }

    @Test
@@ -155,9 +173,6 @@ class ReduceBrightColorsTileUserActionInteractorTest : SysuiTestCase() {
        underTestEvenDimmerEnabled.handleInput(
            QSTileInputTestKtx.longClick(ReduceBrightColorsTileModel(enabled))
        )

        QSTileIntentUserInputHandlerSubject.assertThat(inputHandler).handledOneIntentInput {
            assertThat(it.intent.action).isEqualTo(Settings.ACTION_DISPLAY_SETTINGS)
        }
        verify(mExtraDimDialogManager).dismissKeyguardIfNeededAndShowDialog(anyOrNull())
    }
}
+21 −9
Original line number Diff line number Diff line
@@ -15,7 +15,9 @@
 */
package com.android.systemui.accessibility.extradim

import androidx.annotation.VisibleForTesting
import com.android.systemui.animation.DialogCuj
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.animation.Expandable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.statusbar.phone.SystemUIDialog
@@ -28,25 +30,35 @@ class ExtraDimDialogManager
@Inject
constructor(
    private val extraDimDialogDelegateProvider: Provider<ExtraDimDialogDelegate>,
    private val mActivityStarter: ActivityStarter
    private val mActivityStarter: ActivityStarter,
    private val dialogTransitionAnimator: DialogTransitionAnimator,
) {
    private var dialog: SystemUIDialog? = null

    @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
    fun dismissKeyguardIfNeededAndShowDialog() {
    @JvmOverloads
    fun dismissKeyguardIfNeededAndShowDialog(expandable: Expandable? = null) {
        mActivityStarter.executeRunnableDismissingKeyguard(
            { showRemoveExtraDimShortcutsDialog() },
            { showRemoveExtraDimShortcutsDialog(expandable) },
            /* cancelAction= */ null,
            /* dismissShade= */ false,
            /* afterKeyguardGone= */ true,
            /* deferred= */ false
            /* deferred= */ false,
        )
    }

    /** Show the dialog for removing all Extra Dim shortcuts. */
    private fun showRemoveExtraDimShortcutsDialog() {
    private fun showRemoveExtraDimShortcutsDialog(expandable: Expandable?) {
        dialog?.dismiss()
        dialog = extraDimDialogDelegateProvider.get().createDialog()
        dialog!!.show()
        val dialog2 = extraDimDialogDelegateProvider.get().createDialog()
        dialog = dialog2

        val controller =
            expandable?.dialogTransitionController(
                DialogCuj(com.android.internal.jank.Cuj.CUJ_SHADE_DIALOG_OPEN)
            )

        controller?.let {
            dialogTransitionAnimator.show(dialog2, it, animateBackgroundBoundsChange = true)
        } ?: dialog2.show()
    }
}
+0 −13
Original line number Diff line number Diff line
@@ -29,12 +29,6 @@ public interface ReduceBrightColorsController extends
    /** Sets the activation state of Reduce Bright Colors */
    void setReduceBrightColorsActivated(boolean activated);

    /** Sets whether Reduce Bright Colors is enabled */
    void setReduceBrightColorsFeatureAvailable(boolean enabled);

    /** Gets whether Reduce Bright Colors is enabled */
    boolean isReduceBrightColorsFeatureAvailable();

    /** Gets whether Reduce Bright Colors is being transitioned to Even Dimmer */
    boolean isInUpgradeMode(Resources resources);
    /**
@@ -48,12 +42,5 @@ public interface ReduceBrightColorsController extends
         */
        default void onActivated(boolean activated) {
        }
        /**
         * Listener invoked when the feature enabled state changes.
         *
         * @param enabled {@code true} if Reduce Bright Colors feature is enabled.
         */
        default void onFeatureEnabledChanged(boolean enabled) {
        }
    }
}
 No newline at end of file
+0 −20
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ public class ReduceBrightColorsControllerImpl implements
    private final ContentObserver mContentObserver;
    private final SecureSettings mSecureSettings;
    private final ArrayList<ReduceBrightColorsController.Listener> mListeners = new ArrayList<>();
    private boolean mAvailable = true;

    @Inject
    public ReduceBrightColorsControllerImpl(UserTracker userTracker,
@@ -77,7 +76,6 @@ public class ReduceBrightColorsControllerImpl implements
        mCurrentUserTrackerCallback = new UserTracker.Callback() {
            @Override
            public void onUserChanged(int newUser, Context userContext) {
                mAvailable = true;
                synchronized (mListeners) {
                    if (mListeners.size() > 0) {
                        if (com.android.systemui.Flags.registerContentObserversAsync()) {
@@ -141,17 +139,6 @@ public class ReduceBrightColorsControllerImpl implements
        mManager.setReduceBrightColorsActivated(activated);
    }

    @Override
    public void setReduceBrightColorsFeatureAvailable(boolean enabled) {
        mAvailable = enabled;
        dispatchOnEnabledChanged(enabled);
        mAvailable = true;
    }

    @Override
    public boolean isReduceBrightColorsFeatureAvailable() {
        return mAvailable;
    }

    @Override
    public boolean isInUpgradeMode(Resources resources) {
@@ -166,11 +153,4 @@ public class ReduceBrightColorsControllerImpl implements
            l.onActivated(activated);
        }
    }

    private void dispatchOnEnabledChanged(boolean enabled) {
        ArrayList<Listener> copy = new ArrayList<>(mListeners);
        for (Listener l : copy) {
            l.onFeatureEnabledChanged(enabled);
        }
    }
}
Loading