Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt +61 −73 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ * limitations under the License. */ @file:OptIn(ExperimentalCoroutinesApi::class) package com.android.systemui.statusbar.notification.collection.coordinator import android.app.Notification Loading @@ -22,83 +24,92 @@ import android.app.NotificationManager import android.os.UserHandle import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.FlagsParameterization import android.service.notification.StatusBarNotification import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.keyguardUpdateMonitor import com.android.server.notification.Flags.FLAG_SCREENSHARE_NOTIFICATION_HIDING import com.android.systemui.SysuiTestCase import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.flags.andSceneContainer import com.android.systemui.plugins.statusbar.fakeStatusBarStateController import com.android.systemui.plugins.statusbar.statusBarStateController import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.statusbar.NotificationLockscreenUserManager import com.android.systemui.statusbar.RankingBuilder import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.statusbar.notification.DynamicPrivacyController import com.android.systemui.statusbar.notification.collection.ListEntry import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Invalidator import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable import com.android.systemui.statusbar.notification.collection.notifPipeline import com.android.systemui.statusbar.notification.dynamicPrivacyController import com.android.systemui.statusbar.notification.mockDynamicPrivacyController import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.statusbar.notificationLockscreenUserManager import com.android.systemui.statusbar.policy.SensitiveNotificationProtectionController import com.android.systemui.statusbar.policy.mockSensitiveNotificationProtectionController import com.android.systemui.statusbar.policy.sensitiveNotificationProtectionController import com.android.systemui.testKosmos import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.withArgCaptor import dagger.BindsInstance import dagger.Component import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.kotlin.any import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.never import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import platform.test.runner.parameterized.ParameterizedAndroidJunit4 import platform.test.runner.parameterized.Parameters @SmallTest @RunWith(AndroidJUnit4::class) class SensitiveContentCoordinatorTest : SysuiTestCase() { val kosmos = testKosmos() val dynamicPrivacyController: DynamicPrivacyController = mock() val lockscreenUserManager: NotificationLockscreenUserManager = mock() val pipeline: NotifPipeline = mock() val keyguardUpdateMonitor: KeyguardUpdateMonitor = mock() val statusBarStateController: StatusBarStateController = mock() val keyguardStateController: KeyguardStateController = mock() val mSelectedUserInteractor: SelectedUserInteractor = mock() @RunWith(ParameterizedAndroidJunit4::class) class SensitiveContentCoordinatorTest(flags: FlagsParameterization) : SysuiTestCase() { val kosmos = testKosmos().apply { // Override some Kosmos objects with mocks or fakes for easier testability dynamicPrivacyController = mockDynamicPrivacyController sensitiveNotificationProtectionController = mockSensitiveNotificationProtectionController statusBarStateController = fakeStatusBarStateController } val dynamicPrivacyController: DynamicPrivacyController = kosmos.mockDynamicPrivacyController val lockscreenUserManager: NotificationLockscreenUserManager = kosmos.notificationLockscreenUserManager val pipeline: NotifPipeline = kosmos.notifPipeline val keyguardUpdateMonitor: KeyguardUpdateMonitor = kosmos.keyguardUpdateMonitor val statusBarStateController: SysuiStatusBarStateController = kosmos.fakeStatusBarStateController val sensitiveNotificationProtectionController: SensitiveNotificationProtectionController = mock() val deviceEntryInteractor: DeviceEntryInteractor = mock() val sceneInteractor: SceneInteractor = mock() val coordinator: SensitiveContentCoordinator = DaggerTestSensitiveContentCoordinatorComponent.factory() .create( dynamicPrivacyController, lockscreenUserManager, keyguardUpdateMonitor, statusBarStateController, keyguardStateController, mSelectedUserInteractor, sensitiveNotificationProtectionController, deviceEntryInteractor, sceneInteractor, kosmos.applicationCoroutineScope, ) .coordinator kosmos.mockSensitiveNotificationProtectionController val sceneInteractor: SceneInteractor = kosmos.sceneInteractor val coordinator: SensitiveContentCoordinator by lazy { kosmos.sensitiveContentCoordinator } companion object { @JvmStatic @Parameters(name = "{0}") fun getParams(): List<FlagsParameterization> { return FlagsParameterization.allCombinationsOf().andSceneContainer() } } init { mSetFlagsRule.setFlagsParameterization(flags) } @Test fun onDynamicPrivacyChanged_invokeInvalidationListener() { Loading Loading @@ -143,7 +154,7 @@ class SensitiveContentCoordinatorTest : SysuiTestCase() { fun screenshareSecretFilter_flagDisabled_filterNoAdded() { coordinator.attach(pipeline) verify(pipeline, never()).addFinalizeFilter(any(NotifFilter::class.java)) verify(pipeline, never()).addFinalizeFilter(any()) } @Test Loading Loading @@ -675,13 +686,13 @@ class SensitiveContentCoordinatorTest : SysuiTestCase() { whenever(lockscreenUserManager.isLockscreenPublicMode(1)).thenReturn(true) whenever(lockscreenUserManager.userAllowsPrivateNotificationsInPublic(1)).thenReturn(false) whenever(dynamicPrivacyController.isDynamicallyUnlocked).thenReturn(true) whenever(statusBarStateController.getState()).thenReturn(StatusBarState.KEYGUARD) whenever(keyguardUpdateMonitor.getUserUnlockedWithBiometricAndIsBypassing(any())) .thenReturn(true) val entry = fakeNotification(2, true) whenever(sensitiveNotificationProtectionController.isSensitiveStateActive).thenReturn(true) whenever(sensitiveNotificationProtectionController.shouldProtectNotification(any())) .thenReturn(true) statusBarStateController.state = StatusBarState.KEYGUARD onBeforeRenderListListener.onBeforeRenderList(listOf(entry)) Loading Loading @@ -733,26 +744,3 @@ class SensitiveContentCoordinatorTest : SysuiTestCase() { return notificationEntry } } @CoordinatorScope @Component(modules = [SensitiveContentCoordinatorModule::class]) interface TestSensitiveContentCoordinatorComponent { val coordinator: SensitiveContentCoordinator @Component.Factory interface Factory { fun create( @BindsInstance dynamicPrivacyController: DynamicPrivacyController, @BindsInstance lockscreenUserManager: NotificationLockscreenUserManager, @BindsInstance keyguardUpdateMonitor: KeyguardUpdateMonitor, @BindsInstance statusBarStateController: StatusBarStateController, @BindsInstance keyguardStateController: KeyguardStateController, @BindsInstance selectedUserInteractor: SelectedUserInteractor, @BindsInstance sensitiveNotificationProtectionController: SensitiveNotificationProtectionController, @BindsInstance deviceEntryInteractor: DeviceEntryInteractor, @BindsInstance sceneInteractor: SceneInteractor, @BindsInstance @Application scope: CoroutineScope, ): TestSensitiveContentCoordinatorComponent } } packages/SystemUI/tests/utils/src/com/android/systemui/plugins/statusbar/StatusBarStateControllerKosmos.kt +4 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.systemui.scene.domain.interactor.sceneBackInteractor import com.android.systemui.scene.domain.interactor.sceneContainerOcclusionInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.statusbar.FakeStatusBarStateController import com.android.systemui.statusbar.StatusBarStateControllerImpl import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.util.mockito.mock Loading @@ -49,3 +50,6 @@ var Kosmos.statusBarStateController: SysuiStatusBarStateController by { alternateBouncerInteractor }, ) } var Kosmos.fakeStatusBarStateController: SysuiStatusBarStateController by Kosmos.Fixture { FakeStatusBarStateController() } packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/DynamicPrivacyControllerKosmos.kt 0 → 100644 +34 −0 Original line number Diff line number Diff line /* * 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.notification import com.android.systemui.kosmos.Kosmos import com.android.systemui.plugins.statusbar.statusBarStateController import com.android.systemui.statusbar.notificationLockscreenUserManager import com.android.systemui.statusbar.policy.keyguardStateController import org.mockito.kotlin.mock var Kosmos.dynamicPrivacyController: DynamicPrivacyController by Kosmos.Fixture { DynamicPrivacyController( notificationLockscreenUserManager, keyguardStateController, statusBarStateController, ) } var Kosmos.mockDynamicPrivacyController: DynamicPrivacyController by Kosmos.Fixture { mock() } packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorKosmos.kt 0 → 100644 +47 −0 Original line number Diff line number Diff line /* * 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.notification.collection.coordinator import com.android.keyguard.keyguardUpdateMonitor import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.statusbar.statusBarStateController import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.statusbar.notification.dynamicPrivacyController import com.android.systemui.statusbar.notificationLockscreenUserManager import com.android.systemui.statusbar.policy.keyguardStateController import com.android.systemui.statusbar.policy.sensitiveNotificationProtectionController import com.android.systemui.user.domain.interactor.selectedUserInteractor import kotlinx.coroutines.ExperimentalCoroutinesApi @OptIn(ExperimentalCoroutinesApi::class) var Kosmos.sensitiveContentCoordinator: SensitiveContentCoordinator by Kosmos.Fixture { SensitiveContentCoordinatorImpl( dynamicPrivacyController, notificationLockscreenUserManager, keyguardUpdateMonitor, statusBarStateController, keyguardStateController, selectedUserInteractor, sensitiveNotificationProtectionController, deviceEntryInteractor, sceneInteractor, testScope, ) } packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerKosmos.kt 0 → 100644 +26 −0 Original line number Diff line number Diff line /* * 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.policy import com.android.systemui.kosmos.Kosmos import org.mockito.kotlin.mock var Kosmos.sensitiveNotificationProtectionController: SensitiveNotificationProtectionController by Kosmos.Fixture { mockSensitiveNotificationProtectionController } val Kosmos.mockSensitiveNotificationProtectionController: SensitiveNotificationProtectionController by Kosmos.Fixture { mock<SensitiveNotificationProtectionController>() } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt +61 −73 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ * limitations under the License. */ @file:OptIn(ExperimentalCoroutinesApi::class) package com.android.systemui.statusbar.notification.collection.coordinator import android.app.Notification Loading @@ -22,83 +24,92 @@ import android.app.NotificationManager import android.os.UserHandle import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.FlagsParameterization import android.service.notification.StatusBarNotification import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.keyguardUpdateMonitor import com.android.server.notification.Flags.FLAG_SCREENSHARE_NOTIFICATION_HIDING import com.android.systemui.SysuiTestCase import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.flags.andSceneContainer import com.android.systemui.plugins.statusbar.fakeStatusBarStateController import com.android.systemui.plugins.statusbar.statusBarStateController import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.statusbar.NotificationLockscreenUserManager import com.android.systemui.statusbar.RankingBuilder import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.statusbar.notification.DynamicPrivacyController import com.android.systemui.statusbar.notification.collection.ListEntry import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Invalidator import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable import com.android.systemui.statusbar.notification.collection.notifPipeline import com.android.systemui.statusbar.notification.dynamicPrivacyController import com.android.systemui.statusbar.notification.mockDynamicPrivacyController import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.statusbar.notificationLockscreenUserManager import com.android.systemui.statusbar.policy.SensitiveNotificationProtectionController import com.android.systemui.statusbar.policy.mockSensitiveNotificationProtectionController import com.android.systemui.statusbar.policy.sensitiveNotificationProtectionController import com.android.systemui.testKosmos import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.withArgCaptor import dagger.BindsInstance import dagger.Component import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.kotlin.any import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.never import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import platform.test.runner.parameterized.ParameterizedAndroidJunit4 import platform.test.runner.parameterized.Parameters @SmallTest @RunWith(AndroidJUnit4::class) class SensitiveContentCoordinatorTest : SysuiTestCase() { val kosmos = testKosmos() val dynamicPrivacyController: DynamicPrivacyController = mock() val lockscreenUserManager: NotificationLockscreenUserManager = mock() val pipeline: NotifPipeline = mock() val keyguardUpdateMonitor: KeyguardUpdateMonitor = mock() val statusBarStateController: StatusBarStateController = mock() val keyguardStateController: KeyguardStateController = mock() val mSelectedUserInteractor: SelectedUserInteractor = mock() @RunWith(ParameterizedAndroidJunit4::class) class SensitiveContentCoordinatorTest(flags: FlagsParameterization) : SysuiTestCase() { val kosmos = testKosmos().apply { // Override some Kosmos objects with mocks or fakes for easier testability dynamicPrivacyController = mockDynamicPrivacyController sensitiveNotificationProtectionController = mockSensitiveNotificationProtectionController statusBarStateController = fakeStatusBarStateController } val dynamicPrivacyController: DynamicPrivacyController = kosmos.mockDynamicPrivacyController val lockscreenUserManager: NotificationLockscreenUserManager = kosmos.notificationLockscreenUserManager val pipeline: NotifPipeline = kosmos.notifPipeline val keyguardUpdateMonitor: KeyguardUpdateMonitor = kosmos.keyguardUpdateMonitor val statusBarStateController: SysuiStatusBarStateController = kosmos.fakeStatusBarStateController val sensitiveNotificationProtectionController: SensitiveNotificationProtectionController = mock() val deviceEntryInteractor: DeviceEntryInteractor = mock() val sceneInteractor: SceneInteractor = mock() val coordinator: SensitiveContentCoordinator = DaggerTestSensitiveContentCoordinatorComponent.factory() .create( dynamicPrivacyController, lockscreenUserManager, keyguardUpdateMonitor, statusBarStateController, keyguardStateController, mSelectedUserInteractor, sensitiveNotificationProtectionController, deviceEntryInteractor, sceneInteractor, kosmos.applicationCoroutineScope, ) .coordinator kosmos.mockSensitiveNotificationProtectionController val sceneInteractor: SceneInteractor = kosmos.sceneInteractor val coordinator: SensitiveContentCoordinator by lazy { kosmos.sensitiveContentCoordinator } companion object { @JvmStatic @Parameters(name = "{0}") fun getParams(): List<FlagsParameterization> { return FlagsParameterization.allCombinationsOf().andSceneContainer() } } init { mSetFlagsRule.setFlagsParameterization(flags) } @Test fun onDynamicPrivacyChanged_invokeInvalidationListener() { Loading Loading @@ -143,7 +154,7 @@ class SensitiveContentCoordinatorTest : SysuiTestCase() { fun screenshareSecretFilter_flagDisabled_filterNoAdded() { coordinator.attach(pipeline) verify(pipeline, never()).addFinalizeFilter(any(NotifFilter::class.java)) verify(pipeline, never()).addFinalizeFilter(any()) } @Test Loading Loading @@ -675,13 +686,13 @@ class SensitiveContentCoordinatorTest : SysuiTestCase() { whenever(lockscreenUserManager.isLockscreenPublicMode(1)).thenReturn(true) whenever(lockscreenUserManager.userAllowsPrivateNotificationsInPublic(1)).thenReturn(false) whenever(dynamicPrivacyController.isDynamicallyUnlocked).thenReturn(true) whenever(statusBarStateController.getState()).thenReturn(StatusBarState.KEYGUARD) whenever(keyguardUpdateMonitor.getUserUnlockedWithBiometricAndIsBypassing(any())) .thenReturn(true) val entry = fakeNotification(2, true) whenever(sensitiveNotificationProtectionController.isSensitiveStateActive).thenReturn(true) whenever(sensitiveNotificationProtectionController.shouldProtectNotification(any())) .thenReturn(true) statusBarStateController.state = StatusBarState.KEYGUARD onBeforeRenderListListener.onBeforeRenderList(listOf(entry)) Loading Loading @@ -733,26 +744,3 @@ class SensitiveContentCoordinatorTest : SysuiTestCase() { return notificationEntry } } @CoordinatorScope @Component(modules = [SensitiveContentCoordinatorModule::class]) interface TestSensitiveContentCoordinatorComponent { val coordinator: SensitiveContentCoordinator @Component.Factory interface Factory { fun create( @BindsInstance dynamicPrivacyController: DynamicPrivacyController, @BindsInstance lockscreenUserManager: NotificationLockscreenUserManager, @BindsInstance keyguardUpdateMonitor: KeyguardUpdateMonitor, @BindsInstance statusBarStateController: StatusBarStateController, @BindsInstance keyguardStateController: KeyguardStateController, @BindsInstance selectedUserInteractor: SelectedUserInteractor, @BindsInstance sensitiveNotificationProtectionController: SensitiveNotificationProtectionController, @BindsInstance deviceEntryInteractor: DeviceEntryInteractor, @BindsInstance sceneInteractor: SceneInteractor, @BindsInstance @Application scope: CoroutineScope, ): TestSensitiveContentCoordinatorComponent } }
packages/SystemUI/tests/utils/src/com/android/systemui/plugins/statusbar/StatusBarStateControllerKosmos.kt +4 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.systemui.scene.domain.interactor.sceneBackInteractor import com.android.systemui.scene.domain.interactor.sceneContainerOcclusionInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.statusbar.FakeStatusBarStateController import com.android.systemui.statusbar.StatusBarStateControllerImpl import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.util.mockito.mock Loading @@ -49,3 +50,6 @@ var Kosmos.statusBarStateController: SysuiStatusBarStateController by { alternateBouncerInteractor }, ) } var Kosmos.fakeStatusBarStateController: SysuiStatusBarStateController by Kosmos.Fixture { FakeStatusBarStateController() }
packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/DynamicPrivacyControllerKosmos.kt 0 → 100644 +34 −0 Original line number Diff line number Diff line /* * 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.notification import com.android.systemui.kosmos.Kosmos import com.android.systemui.plugins.statusbar.statusBarStateController import com.android.systemui.statusbar.notificationLockscreenUserManager import com.android.systemui.statusbar.policy.keyguardStateController import org.mockito.kotlin.mock var Kosmos.dynamicPrivacyController: DynamicPrivacyController by Kosmos.Fixture { DynamicPrivacyController( notificationLockscreenUserManager, keyguardStateController, statusBarStateController, ) } var Kosmos.mockDynamicPrivacyController: DynamicPrivacyController by Kosmos.Fixture { mock() }
packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorKosmos.kt 0 → 100644 +47 −0 Original line number Diff line number Diff line /* * 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.notification.collection.coordinator import com.android.keyguard.keyguardUpdateMonitor import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.statusbar.statusBarStateController import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.statusbar.notification.dynamicPrivacyController import com.android.systemui.statusbar.notificationLockscreenUserManager import com.android.systemui.statusbar.policy.keyguardStateController import com.android.systemui.statusbar.policy.sensitiveNotificationProtectionController import com.android.systemui.user.domain.interactor.selectedUserInteractor import kotlinx.coroutines.ExperimentalCoroutinesApi @OptIn(ExperimentalCoroutinesApi::class) var Kosmos.sensitiveContentCoordinator: SensitiveContentCoordinator by Kosmos.Fixture { SensitiveContentCoordinatorImpl( dynamicPrivacyController, notificationLockscreenUserManager, keyguardUpdateMonitor, statusBarStateController, keyguardStateController, selectedUserInteractor, sensitiveNotificationProtectionController, deviceEntryInteractor, sceneInteractor, testScope, ) }
packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerKosmos.kt 0 → 100644 +26 −0 Original line number Diff line number Diff line /* * 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.policy import com.android.systemui.kosmos.Kosmos import org.mockito.kotlin.mock var Kosmos.sensitiveNotificationProtectionController: SensitiveNotificationProtectionController by Kosmos.Fixture { mockSensitiveNotificationProtectionController } val Kosmos.mockSensitiveNotificationProtectionController: SensitiveNotificationProtectionController by Kosmos.Fixture { mock<SensitiveNotificationProtectionController>() }