diff options
| author | 2024-04-12 19:03:38 +0000 | |
|---|---|---|
| committer | 2024-04-12 19:03:38 +0000 | |
| commit | 26c0338ed08c4788401720d13a2d649923bdf7d7 (patch) | |
| tree | 0d9db363401d296e7cd1e8bd5246521fdb4bf442 | |
| parent | ebb7133fddc65f987159e7d0f35062796239476c (diff) | |
| parent | 295b52349e87d581c8a9d985d1c4c972fb14780e (diff) | |
Merge changes I14dbccfe,Ife90d8bc into main
* changes:
[flexiglass] Add onClick handling to ShadeCarrierGroup
Convert ShadeHeaderViewModel to Kosmos
12 files changed, 184 insertions, 184 deletions
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt index 02a12e4e0814..c6c6f5773101 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt @@ -407,15 +407,16 @@ private fun ShadeCarrierGroup( AndroidView( factory = { context -> ModernShadeCarrierGroupMobileView.constructAndBind( - context = context, - logger = viewModel.mobileIconsViewModel.logger, - slot = "mobile_carrier_shade_group", - viewModel = - (viewModel.mobileIconsViewModel.viewModelForSub( - subId, - StatusBarLocation.SHADE_CARRIER_GROUP - ) as ShadeCarrierGroupMobileIconViewModel), - ) + context = context, + logger = viewModel.mobileIconsViewModel.logger, + slot = "mobile_carrier_shade_group", + viewModel = + (viewModel.mobileIconsViewModel.viewModelForSub( + subId, + StatusBarLocation.SHADE_CARRIER_GROUP + ) as ShadeCarrierGroupMobileIconViewModel), + ) + .also { it.setOnClickListener { viewModel.onShadeCarrierGroupClicked() } } }, ) } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt index 139289ae4299..3727c113a58e 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt @@ -24,8 +24,8 @@ import com.android.compose.animation.scene.SwipeDirection import com.android.compose.animation.scene.UserActionResult import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue -import com.android.systemui.flags.FakeFeatureFlagsClassic import com.android.systemui.flags.Flags +import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.kosmos.testScope import com.android.systemui.qs.FooterActionsController import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel @@ -34,18 +34,8 @@ import com.android.systemui.res.R import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.settings.brightness.ui.viewmodel.brightnessMirrorViewModel -import com.android.systemui.shade.domain.interactor.privacyChipInteractor -import com.android.systemui.shade.domain.interactor.shadeHeaderClockInteractor -import com.android.systemui.shade.domain.interactor.shadeInteractor -import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel +import com.android.systemui.shade.ui.viewmodel.shadeHeaderViewModel import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModel -import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository -import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor -import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeMobileConnectionsRepository -import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconsInteractor -import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel -import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy -import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository import com.android.systemui.testKosmos import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.mock @@ -64,8 +54,6 @@ class QuickSettingsSceneViewModelTest : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope - private val mobileIconsInteractor = FakeMobileIconsInteractor(FakeMobileMappingsProxy(), mock()) - private val flags = FakeFeatureFlagsClassic().also { it.set(Flags.NEW_NETWORK_SLICE_UI, false) } private val qsFlexiglassAdapter = FakeQSSceneAdapter({ mock() }) private val footerActionsViewModel = mock<FooterActionsViewModel>() private val footerActionsViewModelFactory = @@ -74,45 +62,18 @@ class QuickSettingsSceneViewModelTest : SysuiTestCase() { } private val footerActionsController = mock<FooterActionsController>() - private var mobileIconsViewModel: MobileIconsViewModel = - MobileIconsViewModel( - logger = mock(), - verboseLogger = mock(), - interactor = mobileIconsInteractor, - airplaneModeInteractor = - AirplaneModeInteractor( - FakeAirplaneModeRepository(), - FakeConnectivityRepository(), - FakeMobileConnectionsRepository(), - ), - constants = mock(), - flags, - scope = testScope.backgroundScope, - ) private val sceneInteractor = kosmos.sceneInteractor - private lateinit var shadeHeaderViewModel: ShadeHeaderViewModel - private lateinit var underTest: QuickSettingsSceneViewModel @Before fun setUp() { - shadeHeaderViewModel = - ShadeHeaderViewModel( - applicationScope = testScope.backgroundScope, - context = context, - shadeInteractor = kosmos.shadeInteractor, - mobileIconsInteractor = mobileIconsInteractor, - mobileIconsViewModel = mobileIconsViewModel, - privacyChipInteractor = kosmos.privacyChipInteractor, - clockInteractor = kosmos.shadeHeaderClockInteractor, - broadcastDispatcher = fakeBroadcastDispatcher, - ) + kosmos.fakeFeatureFlagsClassic.set(Flags.NEW_NETWORK_SLICE_UI, false) underTest = QuickSettingsSceneViewModel( brightnessMirrorViewModel = kosmos.brightnessMirrorViewModel, - shadeHeaderViewModel = shadeHeaderViewModel, + shadeHeaderViewModel = kosmos.shadeHeaderViewModel, qsSceneAdapter = qsFlexiglassAdapter, notifications = kosmos.notificationsPlaceholderViewModel, footerActionsViewModelFactory = footerActionsViewModelFactory, diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt index 93302e32b607..a277fe03daba 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt @@ -75,21 +75,13 @@ import com.android.systemui.scene.shared.model.fakeSceneDataSource import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel import com.android.systemui.settings.FakeDisplayTracker import com.android.systemui.settings.brightness.ui.viewmodel.brightnessMirrorViewModel -import com.android.systemui.shade.domain.interactor.privacyChipInteractor -import com.android.systemui.shade.domain.interactor.shadeHeaderClockInteractor import com.android.systemui.shade.domain.interactor.shadeInteractor -import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel import com.android.systemui.shade.ui.viewmodel.ShadeSceneViewModel +import com.android.systemui.shade.ui.viewmodel.shadeHeaderViewModel import com.android.systemui.statusbar.notification.stack.domain.interactor.headsUpNotificationInteractor import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModel -import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository -import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeMobileConnectionsRepository import com.android.systemui.statusbar.pipeline.mobile.data.repository.fakeMobileConnectionsRepository -import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconsInteractor -import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel -import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy -import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository import com.android.systemui.statusbar.policy.domain.interactor.deviceProvisioningInteractor import com.android.systemui.telephony.data.repository.fakeTelephonyRepository import com.android.systemui.testKosmos @@ -180,25 +172,6 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { ) } - private val mobileIconsInteractor = FakeMobileIconsInteractor(FakeMobileMappingsProxy(), mock()) - - private var mobileIconsViewModel: MobileIconsViewModel = - MobileIconsViewModel( - logger = mock(), - verboseLogger = mock(), - interactor = mobileIconsInteractor, - airplaneModeInteractor = - AirplaneModeInteractor( - FakeAirplaneModeRepository(), - FakeConnectivityRepository(), - FakeMobileConnectionsRepository(), - ), - constants = mock(), - flags = kosmos.fakeFeatureFlagsClassic, - scope = testScope.backgroundScope, - ) - - private lateinit var shadeHeaderViewModel: ShadeHeaderViewModel private lateinit var shadeSceneViewModel: ShadeSceneViewModel private val keyguardInteractor by lazy { kosmos.keyguardInteractor } @@ -241,23 +214,11 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { bouncerActionButtonInteractor = kosmos.bouncerActionButtonInteractor bouncerViewModel = kosmos.bouncerViewModel - shadeHeaderViewModel = - ShadeHeaderViewModel( - applicationScope = testScope.backgroundScope, - context = context, - shadeInteractor = kosmos.shadeInteractor, - mobileIconsInteractor = mobileIconsInteractor, - mobileIconsViewModel = mobileIconsViewModel, - privacyChipInteractor = kosmos.privacyChipInteractor, - clockInteractor = kosmos.shadeHeaderClockInteractor, - broadcastDispatcher = fakeBroadcastDispatcher, - ) - shadeSceneViewModel = ShadeSceneViewModel( applicationScope = testScope.backgroundScope, deviceEntryInteractor = deviceEntryInteractor, - shadeHeaderViewModel = shadeHeaderViewModel, + shadeHeaderViewModel = kosmos.shadeHeaderViewModel, qsSceneAdapter = qsFlexiglassAdapter, notifications = kosmos.notificationsPlaceholderViewModel, brightnessMirrorViewModel = kosmos.brightnessMirrorViewModel, diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt index 4c573d3b83ea..f89f18ac29f1 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt @@ -2,29 +2,18 @@ package com.android.systemui.shade.ui.viewmodel import android.content.Intent import android.provider.AlarmClock +import android.provider.Settings import android.telephony.SubscriptionManager.PROFILE_CLASS_UNSET import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue -import com.android.systemui.flags.FakeFeatureFlagsClassic -import com.android.systemui.flags.Flags import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.activityStarter -import com.android.systemui.shade.domain.interactor.privacyChipInteractor -import com.android.systemui.shade.domain.interactor.shadeHeaderClockInteractor -import com.android.systemui.shade.domain.interactor.shadeInteractor -import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository -import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel -import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeMobileConnectionsRepository -import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconsInteractor -import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel -import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy -import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository +import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.fakeMobileIconsInteractor import com.android.systemui.testKosmos import com.android.systemui.util.mockito.argThat -import com.android.systemui.util.mockito.mock import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.runTest import org.junit.Before @@ -40,43 +29,13 @@ import org.mockito.MockitoAnnotations class ShadeHeaderViewModelTest : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope + private val mobileIconsInteractor = kosmos.fakeMobileIconsInteractor - private val mobileIconsInteractor = FakeMobileIconsInteractor(FakeMobileMappingsProxy(), mock()) - private val flags = FakeFeatureFlagsClassic().also { it.set(Flags.NEW_NETWORK_SLICE_UI, false) } - - private var mobileIconsViewModel: MobileIconsViewModel = - MobileIconsViewModel( - logger = mock(), - verboseLogger = mock(), - interactor = mobileIconsInteractor, - airplaneModeInteractor = - AirplaneModeInteractor( - FakeAirplaneModeRepository(), - FakeConnectivityRepository(), - FakeMobileConnectionsRepository(), - ), - constants = mock(), - flags, - scope = testScope.backgroundScope, - ) - - private lateinit var underTest: ShadeHeaderViewModel + private val underTest: ShadeHeaderViewModel = kosmos.shadeHeaderViewModel @Before fun setUp() { MockitoAnnotations.initMocks(this) - - underTest = - ShadeHeaderViewModel( - applicationScope = testScope.backgroundScope, - context = context, - shadeInteractor = kosmos.shadeInteractor, - mobileIconsInteractor = mobileIconsInteractor, - mobileIconsViewModel = mobileIconsViewModel, - privacyChipInteractor = kosmos.privacyChipInteractor, - clockInteractor = kosmos.shadeHeaderClockInteractor, - broadcastDispatcher = fakeBroadcastDispatcher, - ) } @Test @@ -105,6 +64,19 @@ class ShadeHeaderViewModelTest : SysuiTestCase() { ) } + @Test + fun onShadeCarrierGroupClicked_launchesNetworkSettings() = + testScope.runTest { + val activityStarter = kosmos.activityStarter + underTest.onShadeCarrierGroupClicked() + + verify(activityStarter) + .postStartActivityDismissingKeyguard( + argThat(IntentMatcherAction(Settings.ACTION_WIRELESS_SETTINGS)), + anyInt(), + ) + } + companion object { private val SUB_1 = SubscriptionModel( diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt index 7a681b383aad..ab95e2c2e449 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt @@ -27,8 +27,6 @@ import com.android.systemui.authentication.shared.model.AuthenticationMethodMode import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor -import com.android.systemui.flags.FakeFeatureFlagsClassic -import com.android.systemui.flags.Flags import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus import com.android.systemui.kosmos.testScope @@ -41,19 +39,10 @@ import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.settings.brightness.ui.viewmodel.brightnessMirrorViewModel import com.android.systemui.shade.data.repository.shadeRepository -import com.android.systemui.shade.domain.interactor.privacyChipInteractor -import com.android.systemui.shade.domain.interactor.shadeHeaderClockInteractor import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.shade.domain.startable.shadeStartable import com.android.systemui.shade.shared.model.ShadeMode import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModel -import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository -import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor -import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeMobileConnectionsRepository -import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconsInteractor -import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel -import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy -import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository import com.android.systemui.testKosmos import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever @@ -79,29 +68,8 @@ class ShadeSceneViewModelTest : SysuiTestCase() { private val deviceEntryInteractor by lazy { kosmos.deviceEntryInteractor } private val shadeRepository by lazy { kosmos.shadeRepository } - private val mobileIconsInteractor = FakeMobileIconsInteractor(FakeMobileMappingsProxy(), mock()) - private val flags = FakeFeatureFlagsClassic().also { it.set(Flags.NEW_NETWORK_SLICE_UI, false) } - - private var mobileIconsViewModel: MobileIconsViewModel = - MobileIconsViewModel( - logger = mock(), - verboseLogger = mock(), - interactor = mobileIconsInteractor, - airplaneModeInteractor = - AirplaneModeInteractor( - FakeAirplaneModeRepository(), - FakeConnectivityRepository(), - FakeMobileConnectionsRepository(), - ), - constants = mock(), - flags, - scope = testScope.backgroundScope, - ) - private val qsSceneAdapter = FakeQSSceneAdapter({ mock() }) - private lateinit var shadeHeaderViewModel: ShadeHeaderViewModel - private lateinit var underTest: ShadeSceneViewModel @Mock private lateinit var mediaDataManager: MediaDataManager @@ -109,23 +77,12 @@ class ShadeSceneViewModelTest : SysuiTestCase() { @Before fun setUp() { MockitoAnnotations.initMocks(this) - shadeHeaderViewModel = - ShadeHeaderViewModel( - applicationScope = testScope.backgroundScope, - context = context, - shadeInteractor = kosmos.shadeInteractor, - mobileIconsInteractor = mobileIconsInteractor, - mobileIconsViewModel = mobileIconsViewModel, - privacyChipInteractor = kosmos.privacyChipInteractor, - clockInteractor = kosmos.shadeHeaderClockInteractor, - broadcastDispatcher = fakeBroadcastDispatcher, - ) underTest = ShadeSceneViewModel( applicationScope = testScope.backgroundScope, deviceEntryInteractor = deviceEntryInteractor, - shadeHeaderViewModel = shadeHeaderViewModel, + shadeHeaderViewModel = kosmos.shadeHeaderViewModel, qsSceneAdapter = qsSceneAdapter, notifications = kosmos.notificationsPlaceholderViewModel, brightnessMirrorViewModel = kosmos.brightnessMirrorViewModel, diff --git a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt index 72a9c8d01554..6c7606170d9f 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt @@ -22,9 +22,11 @@ import android.content.IntentFilter import android.icu.text.DateFormat import android.icu.text.DisplayContext import android.os.UserHandle +import android.provider.Settings import com.android.systemui.broadcast.BroadcastDispatcher import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application +import com.android.systemui.plugins.ActivityStarter import com.android.systemui.privacy.OngoingPrivacyChip import com.android.systemui.privacy.PrivacyItem import com.android.systemui.res.R @@ -54,6 +56,7 @@ class ShadeHeaderViewModel constructor( @Application private val applicationScope: CoroutineScope, context: Context, + private val activityStarter: ActivityStarter, shadeInteractor: ShadeInteractor, mobileIconsInteractor: MobileIconsInteractor, val mobileIconsViewModel: MobileIconsViewModel, @@ -136,6 +139,14 @@ constructor( clockInteractor.launchClockActivity() } + /** Notifies that the shadeCarrierGroup was clicked. */ + fun onShadeCarrierGroupClicked() { + activityStarter.postStartActivityDismissingKeyguard( + Intent(Settings.ACTION_WIRELESS_SETTINGS), + 0 + ) + } + private fun updateDateTexts(invalidateFormats: Boolean) { if (invalidateFormats) { longerDateFormat.value = getFormatFromPattern(longerPattern) diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt new file mode 100644 index 000000000000..8d653f7212aa --- /dev/null +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.shade.ui.viewmodel + +import android.content.applicationContext +import com.android.systemui.broadcast.broadcastDispatcher +import com.android.systemui.kosmos.Kosmos +import com.android.systemui.kosmos.applicationCoroutineScope +import com.android.systemui.plugins.activityStarter +import com.android.systemui.shade.domain.interactor.privacyChipInteractor +import com.android.systemui.shade.domain.interactor.shadeHeaderClockInteractor +import com.android.systemui.shade.domain.interactor.shadeInteractor +import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.mobileIconsInteractor +import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.mobileIconsViewModel + +val Kosmos.shadeHeaderViewModel: ShadeHeaderViewModel by + Kosmos.Fixture { + ShadeHeaderViewModel( + applicationScope = applicationCoroutineScope, + context = applicationContext, + activityStarter = activityStarter, + shadeInteractor = shadeInteractor, + mobileIconsInteractor = mobileIconsInteractor, + mobileIconsViewModel = mobileIconsViewModel, + privacyChipInteractor = privacyChipInteractor, + clockInteractor = shadeHeaderClockInteractor, + broadcastDispatcher = broadcastDispatcher, + ) + } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/FakeAirplaneModeRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/FakeAirplaneModeRepository.kt index 638925d0a705..74b2da49d43f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/FakeAirplaneModeRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/FakeAirplaneModeRepository.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 The Android Open Source Project + * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/airplane/domain/interactor/AirplaneModeInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/airplane/domain/interactor/AirplaneModeInteractorKosmos.kt new file mode 100644 index 000000000000..386c7c52b152 --- /dev/null +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/airplane/domain/interactor/AirplaneModeInteractorKosmos.kt @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.pipeline.airplane.domain.interactor + +import com.android.systemui.kosmos.Kosmos +import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository +import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeMobileConnectionsRepository +import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository + +val Kosmos.airplaneModeInteractor: AirplaneModeInteractor by + Kosmos.Fixture { + AirplaneModeInteractor( + FakeAirplaneModeRepository(), + FakeConnectivityRepository(), + FakeMobileConnectionsRepository(), + ) + } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorKosmos.kt new file mode 100644 index 000000000000..eb6265affb1c --- /dev/null +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorKosmos.kt @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.pipeline.mobile.domain.interactor + +import com.android.systemui.kosmos.Kosmos +import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy +import com.android.systemui.util.mockito.mock + +val Kosmos.mobileIconsInteractor: MobileIconsInteractor by + Kosmos.Fixture { fakeMobileIconsInteractor } +val Kosmos.fakeMobileIconsInteractor: FakeMobileIconsInteractor by + Kosmos.Fixture { FakeMobileIconsInteractor(FakeMobileMappingsProxy(), mock()) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelKosmos.kt new file mode 100644 index 000000000000..c5f65578a8bb --- /dev/null +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelKosmos.kt @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel + +import com.android.systemui.flags.featureFlagsClassic +import com.android.systemui.kosmos.Kosmos +import com.android.systemui.kosmos.applicationCoroutineScope +import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.airplaneModeInteractor +import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.mobileIconsInteractor +import com.android.systemui.util.mockito.mock + +val Kosmos.mobileIconsViewModel: MobileIconsViewModel by + Kosmos.Fixture { + MobileIconsViewModel( + logger = mock(), + verboseLogger = mock(), + interactor = mobileIconsInteractor, + airplaneModeInteractor = airplaneModeInteractor, + constants = mock(), + flags = featureFlagsClassic, + scope = applicationCoroutineScope, + ) + } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/data/repository/FakeConnectivityRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/shared/data/repository/FakeConnectivityRepository.kt index 28d632d9fcea..331e2fad19cb 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/data/repository/FakeConnectivityRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/shared/data/repository/FakeConnectivityRepository.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 The Android Open Source Project + * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. |