diff options
| author | 2024-09-12 13:39:15 +0000 | |
|---|---|---|
| committer | 2024-09-12 13:39:15 +0000 | |
| commit | fb01df17c5dab8dd7464a77565aad3469f060f73 (patch) | |
| tree | f708a6498a7ffb56cd0b220b24fe1dd4221baacc | |
| parent | 43dcc0ef9be13f7e84d01f5153e2dfd4efbe34db (diff) | |
| parent | 571fea26b2d034907446fc29b591242f72b96a7a (diff) | |
Merge "Show even dimmer upgrade dialog on QS" into main
12 files changed, 171 insertions, 124 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManagerTest.kt index 1386092ef93e..b7b98d41da93 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManagerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManagerTest.kt @@ -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), ) } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractorTest.kt index 313331286b45..75b090c4034b 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractorTest.kt @@ -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 = - ReduceBrightColorsTileUserActionInteractor( - context.resources, - inputHandler, - controller, - ) - - private val underTestEvenDimmerEnabled = - ReduceBrightColorsTileUserActionInteractor( - context.orCreateTestableResources - .apply { addOverride(R.bool.config_evenDimmerEnabled, true) } - .resources, - inputHandler, - controller, - ) + @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, + ) + + 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()) } } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManager.kt b/packages/SystemUI/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManager.kt index e1297d32504b..60d80efe6426 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManager.kt +++ b/packages/SystemUI/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManager.kt @@ -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() } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsController.java b/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsController.java index cf1dca3cbb23..893ef7e00579 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsController.java @@ -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 diff --git a/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsControllerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsControllerImpl.java index 4d6cf78610d9..ca6e40d8cbd5 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsControllerImpl.java @@ -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); - } - } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/autoaddable/ReduceBrightColorsAutoAddable.kt b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/autoaddable/ReduceBrightColorsAutoAddable.kt index 4d823ab216f0..bde682074780 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/autoaddable/ReduceBrightColorsAutoAddable.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/autoaddable/ReduceBrightColorsAutoAddable.kt @@ -42,7 +42,7 @@ constructor( ) : CallbackControllerAutoAddable< ReduceBrightColorsController.Listener, - ReduceBrightColorsController + ReduceBrightColorsController, >(controller) { override val spec: TileSpec @@ -55,12 +55,6 @@ constructor( sendAdd() } } - - override fun onFeatureEnabledChanged(enabled: Boolean) { - if (!enabled) { - available = false - } - } } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ReduceBrightColorsTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ReduceBrightColorsTile.java index af5b31180159..d624d989f42a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ReduceBrightColorsTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ReduceBrightColorsTile.java @@ -29,6 +29,7 @@ import androidx.annotation.Nullable; import com.android.internal.R; import com.android.internal.logging.MetricsLogger; +import com.android.systemui.accessibility.extradim.ExtraDimDialogManager; import com.android.systemui.animation.Expandable; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; @@ -55,6 +56,7 @@ public class ReduceBrightColorsTile extends QSTileImpl<QSTile.BooleanState> private final ReduceBrightColorsController mReduceBrightColorsController; private boolean mIsListening; private final boolean mInUpgradeMode; + private final ExtraDimDialogManager mExtraDimDialogManager; @Inject public ReduceBrightColorsTile( @@ -68,12 +70,14 @@ public class ReduceBrightColorsTile extends QSTileImpl<QSTile.BooleanState> MetricsLogger metricsLogger, StatusBarStateController statusBarStateController, ActivityStarter activityStarter, - QSLogger qsLogger + QSLogger qsLogger, + ExtraDimDialogManager extraDimDialogManager ) { super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger, statusBarStateController, activityStarter, qsLogger); mReduceBrightColorsController = reduceBrightColorsController; mReduceBrightColorsController.observe(getLifecycle(), this); + mExtraDimDialogManager = extraDimDialogManager; mInUpgradeMode = reduceBrightColorsController.isInUpgradeMode(mContext.getResources()); mIsAvailable = isAvailable || mInUpgradeMode; @@ -102,19 +106,24 @@ public class ReduceBrightColorsTile extends QSTileImpl<QSTile.BooleanState> private boolean goToEvenDimmer() { if (mInUpgradeMode) { - mHost.removeTile(getTileSpec()); - mIsAvailable = false; return true; } return false; } @Override - protected void handleClick(@Nullable Expandable expandable) { + protected void handleLongClick(@Nullable Expandable expandable) { + if (goToEvenDimmer()) { + mExtraDimDialogManager.dismissKeyguardIfNeededAndShowDialog(expandable); + } else { + super.handleLongClick(expandable); + } + } + @Override + protected void handleClick(@Nullable Expandable expandable) { if (goToEvenDimmer()) { - mActivityStarter.postStartActivityDismissingKeyguard( - new Intent(Settings.ACTION_DISPLAY_SETTINGS), 0); + mExtraDimDialogManager.dismissKeyguardIfNeededAndShowDialog(expandable); } else { mReduceBrightColorsController.setReduceBrightColorsActivated(!mState.value); } @@ -146,9 +155,4 @@ public class ReduceBrightColorsTile extends QSTileImpl<QSTile.BooleanState> public void onActivated(boolean activated) { refreshState(); } - - @Override - public void onFeatureEnabledChanged(boolean enabled) { - refreshState(); - } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractor.kt index 00b1e41461f5..536c5f1d17cf 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractor.kt @@ -23,13 +23,13 @@ import com.android.systemui.qs.dagger.QSFlagsModule.RBC_AVAILABLE import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger import com.android.systemui.qs.tiles.base.interactor.QSTileDataInteractor import com.android.systemui.qs.tiles.impl.reducebrightness.domain.model.ReduceBrightColorsTileModel -import com.android.systemui.util.kotlin.isAvailable import com.android.systemui.util.kotlin.isEnabled import javax.inject.Inject import javax.inject.Named import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map @@ -44,7 +44,7 @@ constructor( override fun tileData( user: UserHandle, - triggers: Flow<DataUpdateTrigger> + triggers: Flow<DataUpdateTrigger>, ): Flow<ReduceBrightColorsTileModel> { return reduceBrightColorsController .isEnabled() @@ -53,6 +53,5 @@ constructor( .flowOn(bgCoroutineContext) } - override fun availability(user: UserHandle): Flow<Boolean> = - reduceBrightColorsController.isAvailable() + override fun availability(user: UserHandle): Flow<Boolean> = flowOf(isAvailable) } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractor.kt index de49e70587ca..15c9901d10c2 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractor.kt @@ -19,6 +19,7 @@ package com.android.systemui.qs.tiles.impl.reducebrightness.domain.interactor import android.content.Intent import android.content.res.Resources import android.provider.Settings +import com.android.systemui.accessibility.extradim.ExtraDimDialogManager import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.qs.ReduceBrightColorsController import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler @@ -35,6 +36,7 @@ constructor( @Main private val resources: Resources, private val qsTileIntentUserActionHandler: QSTileIntentUserInputHandler, private val reduceBrightColorsController: ReduceBrightColorsController, + private val extraDimDialogManager: ExtraDimDialogManager, ) : QSTileUserActionInteractor<ReduceBrightColorsTileModel> { val isInUpgradeMode: Boolean = reduceBrightColorsController.isInUpgradeMode(resources) @@ -44,12 +46,9 @@ constructor( when (action) { is QSTileUserAction.Click -> { if (isInUpgradeMode) { - reduceBrightColorsController.setReduceBrightColorsFeatureAvailable(false) - qsTileIntentUserActionHandler.handle( - action.expandable, - Intent(Settings.ACTION_DISPLAY_SETTINGS) + extraDimDialogManager.dismissKeyguardIfNeededAndShowDialog( + action.expandable ) - // TODO(b/349458355): show dialog return@with } reduceBrightColorsController.setReduceBrightColorsActivated( @@ -58,17 +57,14 @@ constructor( } is QSTileUserAction.LongClick -> { if (isInUpgradeMode) { - reduceBrightColorsController.setReduceBrightColorsFeatureAvailable(false) - qsTileIntentUserActionHandler.handle( - action.expandable, - Intent(Settings.ACTION_DISPLAY_SETTINGS) + extraDimDialogManager.dismissKeyguardIfNeededAndShowDialog( + action.expandable ) - // TODO(b/349458355): show dialog return@with } qsTileIntentUserActionHandler.handle( action.expandable, - Intent(Settings.ACTION_REDUCE_BRIGHT_COLORS_SETTINGS) + Intent(Settings.ACTION_REDUCE_BRIGHT_COLORS_SETTINGS), ) } is QSTileUserAction.ToggleClick -> {} diff --git a/packages/SystemUI/src/com/android/systemui/util/kotlin/ReduceBrightColorsControllerExt.kt b/packages/SystemUI/src/com/android/systemui/util/kotlin/ReduceBrightColorsControllerExt.kt index e6e2a0767012..ee00e8b04ef1 100644 --- a/packages/SystemUI/src/com/android/systemui/util/kotlin/ReduceBrightColorsControllerExt.kt +++ b/packages/SystemUI/src/com/android/systemui/util/kotlin/ReduceBrightColorsControllerExt.kt @@ -35,17 +35,3 @@ fun ReduceBrightColorsController.isEnabled(): Flow<Boolean> { } .onStart { emit(isReduceBrightColorsActivated) } } - -fun ReduceBrightColorsController.isAvailable(): Flow<Boolean> { - return conflatedCallbackFlow { - val callback = - object : ReduceBrightColorsController.Listener { - override fun onFeatureEnabledChanged(enabled: Boolean) { - trySend(enabled) - } - } - addCallback(callback) - awaitClose { removeCallback(callback) } - } - .onStart { emit(isReduceBrightColorsFeatureAvailable) } -} diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java index d6bde27dfb62..1aff45bf581d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java @@ -18,6 +18,8 @@ package com.android.systemui.qs.tiles; import static junit.framework.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -25,6 +27,7 @@ import static org.mockito.Mockito.when; import android.os.Handler; import android.platform.test.annotations.RequiresFlagsDisabled; +import android.platform.test.annotations.RequiresFlagsEnabled; import android.service.quicksettings.Tile; import android.testing.TestableLooper; @@ -35,6 +38,7 @@ import com.android.internal.R; import com.android.internal.logging.MetricsLogger; import com.android.server.display.feature.flags.Flags; import com.android.systemui.SysuiTestCase; +import com.android.systemui.accessibility.extradim.ExtraDimDialogManager; import com.android.systemui.classifier.FalsingManagerFake; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.qs.QSTile; @@ -74,6 +78,8 @@ public class ReduceBrightColorsTileTest extends SysuiTestCase { private ReduceBrightColorsController mReduceBrightColorsController; @Mock private QsEventLogger mUiEventLogger; + @Mock + private ExtraDimDialogManager mExtraDimDialogManager; private TestableLooper mTestableLooper; private ReduceBrightColorsTile mTile; @@ -97,7 +103,8 @@ public class ReduceBrightColorsTileTest extends SysuiTestCase { mMetricsLogger, mStatusBarStateController, mActivityStarter, - mQSLogger + mQSLogger, + mExtraDimDialogManager ); mTile.initialize(); @@ -148,6 +155,78 @@ public class ReduceBrightColorsTileTest extends SysuiTestCase { } @Test + @RequiresFlagsEnabled(Flags.FLAG_EVEN_DIMMER) + public void testDialogueShownOnClick() { + when(mReduceBrightColorsController.isReduceBrightColorsActivated()).thenReturn(true); + when(mReduceBrightColorsController.isInUpgradeMode(mContext.getResources())) + .thenReturn(true); + mTile = new ReduceBrightColorsTile( + true, + mReduceBrightColorsController, + mHost, + mUiEventLogger, + mTestableLooper.getLooper(), + new Handler(mTestableLooper.getLooper()), + new FalsingManagerFake(), + mMetricsLogger, + mStatusBarStateController, + mActivityStarter, + mQSLogger, + mExtraDimDialogManager + ); + + mTile.initialize(); + mTestableLooper.processAllMessages(); + + // Validity check + assertEquals(Tile.STATE_ACTIVE, mTile.getState().state); + mTile.handleClick(null /* view */); + + verify(mExtraDimDialogManager, times(1)) + .dismissKeyguardIfNeededAndShowDialog(any()); + verify(mReduceBrightColorsController, times(0)) + .setReduceBrightColorsActivated(anyBoolean()); + mTile.destroy(); + mTestableLooper.processAllMessages(); + } + + @Test + @RequiresFlagsEnabled(Flags.FLAG_EVEN_DIMMER) + public void testDialogueShownOnLongClick() { + when(mReduceBrightColorsController.isReduceBrightColorsActivated()).thenReturn(true); + when(mReduceBrightColorsController.isInUpgradeMode(mContext.getResources())) + .thenReturn(true); + mTile = new ReduceBrightColorsTile( + true, + mReduceBrightColorsController, + mHost, + mUiEventLogger, + mTestableLooper.getLooper(), + new Handler(mTestableLooper.getLooper()), + new FalsingManagerFake(), + mMetricsLogger, + mStatusBarStateController, + mActivityStarter, + mQSLogger, + mExtraDimDialogManager + ); + + mTile.initialize(); + mTestableLooper.processAllMessages(); + + // Validity check + assertEquals(Tile.STATE_ACTIVE, mTile.getState().state); + mTile.handleLongClick(null /* view */); + + verify(mExtraDimDialogManager, times(1)) + .dismissKeyguardIfNeededAndShowDialog(any()); + verify(mReduceBrightColorsController, times(0)) + .setReduceBrightColorsActivated(anyBoolean()); + mTile.destroy(); + mTestableLooper.processAllMessages(); + } + + @Test public void testIcon_whenTileEnabled_isOnState() { when(mReduceBrightColorsController.isReduceBrightColorsActivated()).thenReturn(true); mTile.refreshState(); diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/FakeReduceBrightColorsController.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/FakeReduceBrightColorsController.kt index e02042d26d45..ab745efe97c6 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/FakeReduceBrightColorsController.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/FakeReduceBrightColorsController.kt @@ -47,14 +47,6 @@ class FakeReduceBrightColorsController : ReduceBrightColorsController { } } - override fun setReduceBrightColorsFeatureAvailable(enabled: Boolean) { - // do nothing - } - - override fun isReduceBrightColorsFeatureAvailable(): Boolean { - return true - } - override fun isInUpgradeMode(resources: Resources?): Boolean { if (resources != null) { return Flags.evenDimmer() && |