Loading packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt +0 −4 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import com.android.systemui.communal.domain.model.CommunalContentModel import com.android.systemui.communal.domain.model.CommunalTransitionProgressModel import com.android.systemui.communal.shared.model.CommunalContentSize import com.android.systemui.communal.shared.model.CommunalScenes import com.android.systemui.communal.shared.model.EditModeState import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository Loading Loading @@ -594,11 +593,8 @@ class CommunalInteractorTest(flags: FlagsParameterization) : SysuiTestCase() { @Test fun testShowWidgetEditorStartsActivity() = kosmos.runTest { val editModeState by collectLastValue(communalSceneInteractor.editModeState) underTest.showWidgetEditor() assertThat(editModeState).isEqualTo(EditModeState.STARTING) verify(editWidgetsActivityStarter).startActivity() } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityStarterTest.kt +73 −4 Original line number Diff line number Diff line Loading @@ -16,11 +16,14 @@ package com.android.systemui.communal.widgets import android.app.ActivityManager import android.content.ComponentName import android.content.Intent import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.communal.domain.interactor.communalSceneInteractor import com.android.systemui.communal.shared.model.EditModeState import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.ActivityStarter import com.android.systemui.testKosmos Loading @@ -31,9 +34,10 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.kotlin.any import org.mockito.kotlin.argumentCaptor import org.mockito.kotlin.clearInvocations import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.times import org.mockito.kotlin.never import org.mockito.kotlin.verify @SmallTest Loading @@ -53,9 +57,59 @@ class EditWidgetsActivityStarterTest : SysuiTestCase() { EditWidgetsActivityStarterImpl( context.applicationContext, activityStarter, kosmos.communalSceneInteractor, ) } @Test fun activityLaunch_editModeClearedWhenActivityLaunchCancelled() { with(kosmos) { testScope.runTest { underTest.startActivity(shouldOpenWidgetPickerOnStart = true) val captor = argumentCaptor<ActivityStarter.Callback>() verify(activityStarter) .startActivityDismissingKeyguard( any(), eq(true), eq(true), any(), captor.capture(), ) assertThat(communalSceneInteractor.editModeState.value) .isEqualTo(EditModeState.STARTING) captor.lastValue.onActivityStarted(ActivityManager.START_CANCELED) assertThat(communalSceneInteractor.editModeState.value).isNull() } } } @Test fun activityLaunch_suppressesSubsequentLaunchesWhenPending() { with(kosmos) { testScope.runTest { underTest.startActivity(shouldOpenWidgetPickerOnStart = true) verify(activityStarter) .startActivityDismissingKeyguard(any(), eq(true), eq(true), any(), any()) clearInvocations(activityStarter) underTest.startActivity(shouldOpenWidgetPickerOnStart = false) verify(activityStarter, never()) .startActivityDismissingKeyguard(any(), eq(true), eq(true), any(), any()) communalSceneInteractor.setEditModeState(null) underTest.startActivity(shouldOpenWidgetPickerOnStart = true) verify(activityStarter) .startActivityDismissingKeyguard(any(), eq(true), eq(true), any(), any()) } } } @Test fun activityLaunch_intentIsWellFormed() { with(kosmos) { Loading @@ -64,7 +118,13 @@ class EditWidgetsActivityStarterTest : SysuiTestCase() { val captor = argumentCaptor<Intent>() verify(activityStarter) .startActivityDismissingKeyguard(captor.capture(), eq(true), eq(true), any()) .startActivityDismissingKeyguard( captor.capture(), eq(true), eq(true), any(), any(), ) assertThat(captor.lastValue.component).isEqualTo(component) assertThat(captor.lastValue.flags and Intent.FLAG_ACTIVITY_NEW_TASK).isNotEqualTo(0) assertThat(captor.lastValue.flags and Intent.FLAG_ACTIVITY_CLEAR_TASK) Loading @@ -76,10 +136,19 @@ class EditWidgetsActivityStarterTest : SysuiTestCase() { ) .isEqualTo(true) clearInvocations(activityStarter) communalSceneInteractor.setEditModeState(null) underTest.startActivity(shouldOpenWidgetPickerOnStart = false) verify(activityStarter, times(2)) .startActivityDismissingKeyguard(captor.capture(), eq(true), eq(true), any()) verify(activityStarter) .startActivityDismissingKeyguard( captor.capture(), eq(true), eq(true), any(), any(), ) assertThat(captor.lastValue.component).isEqualTo(component) assertThat(captor.lastValue.flags and Intent.FLAG_ACTIVITY_NEW_TASK).isNotEqualTo(0) assertThat(captor.lastValue.flags and Intent.FLAG_ACTIVITY_CLEAR_TASK) Loading packages/SystemUI/plugin/src/com/android/systemui/plugins/ActivityStarter.java +7 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,13 @@ public interface ActivityStarter { boolean dismissShade, @Nullable String customMessage); /** Starts an activity and dismisses keyguard. */ void startActivityDismissingKeyguard(Intent intent, boolean onlyProvisioned, boolean dismissShade, @Nullable String customMessage, Callback callback); /** Starts an activity and dismisses keyguard. */ void startActivityDismissingKeyguard(Intent intent, boolean onlyProvisioned, Loading packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt +0 −2 Original line number Diff line number Diff line Loading @@ -42,7 +42,6 @@ import com.android.systemui.communal.shared.model.CommunalContentSize.FixedSize. import com.android.systemui.communal.shared.model.CommunalContentSize.FixedSize.THIRD import com.android.systemui.communal.shared.model.CommunalScenes import com.android.systemui.communal.shared.model.CommunalWidgetContentModel import com.android.systemui.communal.shared.model.EditModeState import com.android.systemui.communal.widgets.EditWidgetsActivityStarter import com.android.systemui.communal.widgets.WidgetConfigurator import com.android.systemui.dagger.SysUISingleton Loading Loading @@ -369,7 +368,6 @@ constructor( /** Show the widget editor Activity. */ fun showWidgetEditor(shouldOpenWidgetPickerOnStart: Boolean = false) { communalSceneInteractor.setEditModeState(EditModeState.STARTING) editWidgetsActivityStarter.startActivity(shouldOpenWidgetPickerOnStart) } Loading packages/SystemUI/src/com/android/systemui/communal/widgets/EditWidgetsActivityStarter.kt +16 −4 Original line number Diff line number Diff line Loading @@ -16,8 +16,11 @@ package com.android.systemui.communal.widgets import android.app.ActivityManager import android.content.Context import android.content.Intent import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor import com.android.systemui.communal.shared.model.EditModeState import com.android.systemui.communal.widgets.EditWidgetsActivity.Companion.EXTRA_OPEN_WIDGET_PICKER_ON_START import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.plugins.ActivityStarter Loading @@ -25,9 +28,7 @@ import com.android.systemui.res.R import javax.inject.Inject interface EditWidgetsActivityStarter { fun startActivity( shouldOpenWidgetPickerOnStart: Boolean = false, ) fun startActivity(shouldOpenWidgetPickerOnStart: Boolean = false) } class EditWidgetsActivityStarterImpl Loading @@ -35,9 +36,16 @@ class EditWidgetsActivityStarterImpl constructor( @Application private val applicationContext: Context, private val activityStarter: ActivityStarter, private val communalSceneInteractor: CommunalSceneInteractor, ) : EditWidgetsActivityStarter { override fun startActivity(shouldOpenWidgetPickerOnStart: Boolean) { if (communalSceneInteractor.editModeState.value != null) { return } communalSceneInteractor.setEditModeState(EditModeState.STARTING) activityStarter.startActivityDismissingKeyguard( Intent(applicationContext, EditWidgetsActivity::class.java) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) Loading @@ -47,6 +55,10 @@ constructor( /* onlyProvisioned = */ true, /* dismissShade = */ true, applicationContext.resources.getString(R.string.unlock_reason_to_customize_widgets), ) ) { resultCode -> if (resultCode == ActivityManager.START_CANCELED) { communalSceneInteractor.setEditModeState(null) } } } } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt +0 −4 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import com.android.systemui.communal.domain.model.CommunalContentModel import com.android.systemui.communal.domain.model.CommunalTransitionProgressModel import com.android.systemui.communal.shared.model.CommunalContentSize import com.android.systemui.communal.shared.model.CommunalScenes import com.android.systemui.communal.shared.model.EditModeState import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository Loading Loading @@ -594,11 +593,8 @@ class CommunalInteractorTest(flags: FlagsParameterization) : SysuiTestCase() { @Test fun testShowWidgetEditorStartsActivity() = kosmos.runTest { val editModeState by collectLastValue(communalSceneInteractor.editModeState) underTest.showWidgetEditor() assertThat(editModeState).isEqualTo(EditModeState.STARTING) verify(editWidgetsActivityStarter).startActivity() } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityStarterTest.kt +73 −4 Original line number Diff line number Diff line Loading @@ -16,11 +16,14 @@ package com.android.systemui.communal.widgets import android.app.ActivityManager import android.content.ComponentName import android.content.Intent import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.communal.domain.interactor.communalSceneInteractor import com.android.systemui.communal.shared.model.EditModeState import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.ActivityStarter import com.android.systemui.testKosmos Loading @@ -31,9 +34,10 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.kotlin.any import org.mockito.kotlin.argumentCaptor import org.mockito.kotlin.clearInvocations import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.times import org.mockito.kotlin.never import org.mockito.kotlin.verify @SmallTest Loading @@ -53,9 +57,59 @@ class EditWidgetsActivityStarterTest : SysuiTestCase() { EditWidgetsActivityStarterImpl( context.applicationContext, activityStarter, kosmos.communalSceneInteractor, ) } @Test fun activityLaunch_editModeClearedWhenActivityLaunchCancelled() { with(kosmos) { testScope.runTest { underTest.startActivity(shouldOpenWidgetPickerOnStart = true) val captor = argumentCaptor<ActivityStarter.Callback>() verify(activityStarter) .startActivityDismissingKeyguard( any(), eq(true), eq(true), any(), captor.capture(), ) assertThat(communalSceneInteractor.editModeState.value) .isEqualTo(EditModeState.STARTING) captor.lastValue.onActivityStarted(ActivityManager.START_CANCELED) assertThat(communalSceneInteractor.editModeState.value).isNull() } } } @Test fun activityLaunch_suppressesSubsequentLaunchesWhenPending() { with(kosmos) { testScope.runTest { underTest.startActivity(shouldOpenWidgetPickerOnStart = true) verify(activityStarter) .startActivityDismissingKeyguard(any(), eq(true), eq(true), any(), any()) clearInvocations(activityStarter) underTest.startActivity(shouldOpenWidgetPickerOnStart = false) verify(activityStarter, never()) .startActivityDismissingKeyguard(any(), eq(true), eq(true), any(), any()) communalSceneInteractor.setEditModeState(null) underTest.startActivity(shouldOpenWidgetPickerOnStart = true) verify(activityStarter) .startActivityDismissingKeyguard(any(), eq(true), eq(true), any(), any()) } } } @Test fun activityLaunch_intentIsWellFormed() { with(kosmos) { Loading @@ -64,7 +118,13 @@ class EditWidgetsActivityStarterTest : SysuiTestCase() { val captor = argumentCaptor<Intent>() verify(activityStarter) .startActivityDismissingKeyguard(captor.capture(), eq(true), eq(true), any()) .startActivityDismissingKeyguard( captor.capture(), eq(true), eq(true), any(), any(), ) assertThat(captor.lastValue.component).isEqualTo(component) assertThat(captor.lastValue.flags and Intent.FLAG_ACTIVITY_NEW_TASK).isNotEqualTo(0) assertThat(captor.lastValue.flags and Intent.FLAG_ACTIVITY_CLEAR_TASK) Loading @@ -76,10 +136,19 @@ class EditWidgetsActivityStarterTest : SysuiTestCase() { ) .isEqualTo(true) clearInvocations(activityStarter) communalSceneInteractor.setEditModeState(null) underTest.startActivity(shouldOpenWidgetPickerOnStart = false) verify(activityStarter, times(2)) .startActivityDismissingKeyguard(captor.capture(), eq(true), eq(true), any()) verify(activityStarter) .startActivityDismissingKeyguard( captor.capture(), eq(true), eq(true), any(), any(), ) assertThat(captor.lastValue.component).isEqualTo(component) assertThat(captor.lastValue.flags and Intent.FLAG_ACTIVITY_NEW_TASK).isNotEqualTo(0) assertThat(captor.lastValue.flags and Intent.FLAG_ACTIVITY_CLEAR_TASK) Loading
packages/SystemUI/plugin/src/com/android/systemui/plugins/ActivityStarter.java +7 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,13 @@ public interface ActivityStarter { boolean dismissShade, @Nullable String customMessage); /** Starts an activity and dismisses keyguard. */ void startActivityDismissingKeyguard(Intent intent, boolean onlyProvisioned, boolean dismissShade, @Nullable String customMessage, Callback callback); /** Starts an activity and dismisses keyguard. */ void startActivityDismissingKeyguard(Intent intent, boolean onlyProvisioned, Loading
packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt +0 −2 Original line number Diff line number Diff line Loading @@ -42,7 +42,6 @@ import com.android.systemui.communal.shared.model.CommunalContentSize.FixedSize. import com.android.systemui.communal.shared.model.CommunalContentSize.FixedSize.THIRD import com.android.systemui.communal.shared.model.CommunalScenes import com.android.systemui.communal.shared.model.CommunalWidgetContentModel import com.android.systemui.communal.shared.model.EditModeState import com.android.systemui.communal.widgets.EditWidgetsActivityStarter import com.android.systemui.communal.widgets.WidgetConfigurator import com.android.systemui.dagger.SysUISingleton Loading Loading @@ -369,7 +368,6 @@ constructor( /** Show the widget editor Activity. */ fun showWidgetEditor(shouldOpenWidgetPickerOnStart: Boolean = false) { communalSceneInteractor.setEditModeState(EditModeState.STARTING) editWidgetsActivityStarter.startActivity(shouldOpenWidgetPickerOnStart) } Loading
packages/SystemUI/src/com/android/systemui/communal/widgets/EditWidgetsActivityStarter.kt +16 −4 Original line number Diff line number Diff line Loading @@ -16,8 +16,11 @@ package com.android.systemui.communal.widgets import android.app.ActivityManager import android.content.Context import android.content.Intent import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor import com.android.systemui.communal.shared.model.EditModeState import com.android.systemui.communal.widgets.EditWidgetsActivity.Companion.EXTRA_OPEN_WIDGET_PICKER_ON_START import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.plugins.ActivityStarter Loading @@ -25,9 +28,7 @@ import com.android.systemui.res.R import javax.inject.Inject interface EditWidgetsActivityStarter { fun startActivity( shouldOpenWidgetPickerOnStart: Boolean = false, ) fun startActivity(shouldOpenWidgetPickerOnStart: Boolean = false) } class EditWidgetsActivityStarterImpl Loading @@ -35,9 +36,16 @@ class EditWidgetsActivityStarterImpl constructor( @Application private val applicationContext: Context, private val activityStarter: ActivityStarter, private val communalSceneInteractor: CommunalSceneInteractor, ) : EditWidgetsActivityStarter { override fun startActivity(shouldOpenWidgetPickerOnStart: Boolean) { if (communalSceneInteractor.editModeState.value != null) { return } communalSceneInteractor.setEditModeState(EditModeState.STARTING) activityStarter.startActivityDismissingKeyguard( Intent(applicationContext, EditWidgetsActivity::class.java) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) Loading @@ -47,6 +55,10 @@ constructor( /* onlyProvisioned = */ true, /* dismissShade = */ true, applicationContext.resources.getString(R.string.unlock_reason_to_customize_widgets), ) ) { resultCode -> if (resultCode == ActivityManager.START_CANCELED) { communalSceneInteractor.setEditModeState(null) } } } }