diff options
5 files changed, 18 insertions, 4 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ModesTileTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ModesTileTest.kt index f005375a2ef9..0b5192f02543 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ModesTileTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ModesTileTest.kt @@ -28,6 +28,7 @@ import com.android.internal.logging.MetricsLogger import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingManagerFake import com.android.systemui.common.shared.model.asIcon +import com.android.systemui.kosmos.mainCoroutineContext import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.ActivityStarter @@ -125,6 +126,7 @@ class ModesTileTest : SysuiTestCase() { userActionInteractor = ModesTileUserActionInteractor( + kosmos.mainCoroutineContext, inputHandler, dialogDelegate, kosmos.zenModeInteractor, diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorTest.kt index 89b8e9171076..b57dc377b465 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorTest.kt @@ -30,6 +30,7 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.animation.Expandable import com.android.systemui.common.shared.model.asIcon import com.android.systemui.coroutines.collectLastValue +import com.android.systemui.kosmos.mainCoroutineContext import com.android.systemui.kosmos.testScope import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandlerSubject import com.android.systemui.qs.tiles.base.actions.qsTileIntentUserInputHandler @@ -62,6 +63,7 @@ class ModesTileUserActionInteractorTest : SysuiTestCase() { private val underTest = ModesTileUserActionInteractor( + kosmos.mainCoroutineContext, inputHandler, mockDialogDelegate, zenModeInteractor, diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractor.kt index 5ce7f0d039c8..14b6ed68060c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractor.kt @@ -21,6 +21,7 @@ import android.provider.Settings import android.util.Log import com.android.systemui.animation.Expandable import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.qs.flags.QSComposeFragment import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler import com.android.systemui.qs.tiles.base.interactor.QSTileInput @@ -31,11 +32,14 @@ import com.android.systemui.statusbar.policy.domain.interactor.ZenModeInteractor import com.android.systemui.statusbar.policy.ui.dialog.ModesDialogDelegate import com.android.systemui.statusbar.policy.ui.dialog.ModesDialogEventLogger import javax.inject.Inject +import kotlin.coroutines.CoroutineContext +import kotlinx.coroutines.withContext @SysUISingleton class ModesTileUserActionInteractor @Inject constructor( + @Main private val mainContext: CoroutineContext, private val qsTileIntentUserInputHandler: QSTileIntentUserInputHandler, // TODO(b/353896370): The domain layer should not have to depend on the UI layer. private val dialogDelegate: ModesDialogDelegate, @@ -65,7 +69,7 @@ constructor( dialogDelegate.showDialog(expandable) } - fun handleToggleClick(modesTileModel: ModesTileModel) { + suspend fun handleToggleClick(modesTileModel: ModesTileModel) { if (QSComposeFragment.isUnexpectedlyInLegacyMode()) { return } @@ -83,9 +87,11 @@ constructor( if (zenModeInteractor.shouldAskForZenDuration(dnd)) { dialogEventLogger.logOpenDurationDialog(dnd) - // NOTE: The dialog handles turning on the mode itself. - val dialog = dialogDelegate.makeDndDurationDialog() - dialog.show() + withContext(mainContext) { + // NOTE: The dialog handles turning on the mode itself. + val dialog = dialogDelegate.makeDndDurationDialog() + dialog.show() + } } else { dialogEventLogger.logModeOn(dnd) zenModeInteractor.activateMode(dnd) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegate.kt index db5f1301823b..2fc22867e702 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegate.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegate.kt @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.policy.ui.dialog +import android.annotation.UiThread; import android.app.Dialog import android.content.Context import android.content.Intent @@ -205,6 +206,7 @@ constructor( * Special dialog to ask the user for the duration of DND. Not to be confused with the modes * dialog itself. */ + @UiThread fun makeDndDurationDialog(): Dialog { val dialog = EnableDndDialogFactory( diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorKosmos.kt index 13cbddff8803..3f07d05a4786 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorKosmos.kt @@ -17,6 +17,7 @@ package com.android.systemui.qs.tiles.impl.modes.domain.interactor import com.android.systemui.kosmos.Kosmos +import com.android.systemui.kosmos.mainCoroutineContext import com.android.systemui.qs.tiles.base.actions.qsTileIntentUserInputHandler import com.android.systemui.statusbar.policy.domain.interactor.zenModeInteractor import com.android.systemui.statusbar.policy.ui.dialog.modesDialogDelegate @@ -26,6 +27,7 @@ import javax.inject.Provider val Kosmos.modesTileUserActionInteractor: ModesTileUserActionInteractor by Kosmos.Fixture { ModesTileUserActionInteractor( + mainCoroutineContext, qsTileIntentUserInputHandler, Provider { modesDialogDelegate }.get(), zenModeInteractor, |