Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a480927 authored by Chris Göllner's avatar Chris Göllner Committed by Android (Google) Code Review
Browse files

Merge "PSS: Task Switcher - Use Kosmos for test dependencies" into main

parents b6bab730 2a399f63
Loading
Loading
Loading
Loading
+10 −17
Original line number Original line Diff line number Diff line
@@ -21,32 +21,25 @@ import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createTask
import com.android.systemui.kosmos.testScope
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createToken
import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask
import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createToken
import com.android.systemui.mediaprojection.taskswitcher.activityTaskManagerTasksRepository
import com.android.systemui.mediaprojection.taskswitcher.fakeActivityTaskManager
import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherKosmos
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith


@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidTestingRunner::class)
@RunWith(AndroidTestingRunner::class)
@SmallTest
@SmallTest
class ActivityTaskManagerTasksRepositoryTest : SysuiTestCase() {
class ActivityTaskManagerTasksRepositoryTest : SysuiTestCase() {


    private val fakeActivityTaskManager = FakeActivityTaskManager()
    private val kosmos = taskSwitcherKosmos()

    private val fakeActivityTaskManager = kosmos.fakeActivityTaskManager
    private val dispatcher = UnconfinedTestDispatcher()
    private val testScope = kosmos.testScope
    private val testScope = TestScope(dispatcher)
    private val repo = kosmos.activityTaskManagerTasksRepository

    private val repo =
        ActivityTaskManagerTasksRepository(
            activityTaskManager = fakeActivityTaskManager.activityTaskManager,
            applicationScope = testScope.backgroundScope,
            backgroundDispatcher = dispatcher
        )


    @Test
    @Test
    fun launchRecentTask_taskIsMovedToForeground() =
    fun launchRecentTask_taskIsMovedToForeground() =
+14 −29
Original line number Original line Diff line number Diff line
@@ -17,50 +17,35 @@
package com.android.systemui.mediaprojection.taskswitcher.data.repository
package com.android.systemui.mediaprojection.taskswitcher.data.repository


import android.os.Binder
import android.os.Binder
import android.os.Handler
import android.testing.AndroidTestingRunner
import android.testing.AndroidTestingRunner
import android.view.ContentRecordingSession
import android.view.ContentRecordingSession
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask
import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createToken
import com.android.systemui.mediaprojection.taskswitcher.data.model.MediaProjectionState
import com.android.systemui.mediaprojection.taskswitcher.data.model.MediaProjectionState
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createTask
import com.android.systemui.mediaprojection.taskswitcher.fakeActivityTaskManager
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createToken
import com.android.systemui.mediaprojection.taskswitcher.fakeMediaProjectionManager
import com.android.systemui.mediaprojection.taskswitcher.mediaProjectionManagerRepository
import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherKosmos
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith


@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidTestingRunner::class)
@RunWith(AndroidTestingRunner::class)
@SmallTest
@SmallTest
class MediaProjectionManagerRepositoryTest : SysuiTestCase() {
class MediaProjectionManagerRepositoryTest : SysuiTestCase() {


    private val dispatcher = UnconfinedTestDispatcher()
    private val kosmos = taskSwitcherKosmos()
    private val testScope = TestScope(dispatcher)
    private val testScope = kosmos.testScope


    private val fakeMediaProjectionManager = FakeMediaProjectionManager()
    private val fakeMediaProjectionManager = kosmos.fakeMediaProjectionManager
    private val fakeActivityTaskManager = FakeActivityTaskManager()
    private val fakeActivityTaskManager = kosmos.fakeActivityTaskManager


    private val tasksRepo =
    private val repo = kosmos.mediaProjectionManagerRepository
        ActivityTaskManagerTasksRepository(
            activityTaskManager = fakeActivityTaskManager.activityTaskManager,
            applicationScope = testScope.backgroundScope,
            backgroundDispatcher = dispatcher
        )

    private val repo =
        MediaProjectionManagerRepository(
            mediaProjectionManager = fakeMediaProjectionManager.mediaProjectionManager,
            handler = Handler.getMain(),
            applicationScope = testScope.backgroundScope,
            tasksRepository = tasksRepo,
            backgroundDispatcher = dispatcher,
            mediaProjectionServiceHelper = fakeMediaProjectionManager.helper
        )


    @Test
    @Test
    fun switchProjectedTask_stateIsUpdatedWithNewTask() =
    fun switchProjectedTask_stateIsUpdatedWithNewTask() =
+13 −35
Original line number Original line Diff line number Diff line
@@ -17,55 +17,33 @@
package com.android.systemui.mediaprojection.taskswitcher.domain.interactor
package com.android.systemui.mediaprojection.taskswitcher.domain.interactor


import android.content.Intent
import android.content.Intent
import android.os.Handler
import android.testing.AndroidTestingRunner
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.mediaprojection.taskswitcher.data.repository.ActivityTaskManagerTasksRepository
import com.android.systemui.kosmos.testScope
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager
import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createTask
import com.android.systemui.mediaprojection.taskswitcher.FakeMediaProjectionManager
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager
import com.android.systemui.mediaprojection.taskswitcher.FakeMediaProjectionManager.Companion.createSingleTaskSession
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager.Companion.createSingleTaskSession
import com.android.systemui.mediaprojection.taskswitcher.data.repository.MediaProjectionManagerRepository
import com.android.systemui.mediaprojection.taskswitcher.domain.model.TaskSwitchState
import com.android.systemui.mediaprojection.taskswitcher.domain.model.TaskSwitchState
import com.android.systemui.mediaprojection.taskswitcher.fakeActivityTaskManager
import com.android.systemui.mediaprojection.taskswitcher.fakeMediaProjectionManager
import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherInteractor
import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherKosmos
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith


@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidTestingRunner::class)
@RunWith(AndroidTestingRunner::class)
@SmallTest
@SmallTest
class TaskSwitchInteractorTest : SysuiTestCase() {
class TaskSwitchInteractorTest : SysuiTestCase() {


    private val dispatcher = UnconfinedTestDispatcher()
    private val kosmos = taskSwitcherKosmos()
    private val testScope = TestScope(dispatcher)
    private val testScope = kosmos.testScope

    private val fakeActivityTaskManager = kosmos.fakeActivityTaskManager
    private val fakeActivityTaskManager = FakeActivityTaskManager()
    private val fakeMediaProjectionManager = kosmos.fakeMediaProjectionManager
    private val fakeMediaProjectionManager = FakeMediaProjectionManager()
    private val interactor = kosmos.taskSwitcherInteractor

    private val tasksRepo =
        ActivityTaskManagerTasksRepository(
            activityTaskManager = fakeActivityTaskManager.activityTaskManager,
            applicationScope = testScope.backgroundScope,
            backgroundDispatcher = dispatcher
        )

    private val mediaRepo =
        MediaProjectionManagerRepository(
            mediaProjectionManager = fakeMediaProjectionManager.mediaProjectionManager,
            handler = Handler.getMain(),
            applicationScope = testScope.backgroundScope,
            tasksRepository = tasksRepo,
            backgroundDispatcher = dispatcher,
            mediaProjectionServiceHelper = fakeMediaProjectionManager.helper,
        )

    private val interactor = TaskSwitchInteractor(mediaRepo, tasksRepo)


    @Test
    @Test
    fun taskSwitchChanges_notProjecting_foregroundTaskChange_emitsNotProjectingTask() =
    fun taskSwitchChanges_notProjecting_foregroundTaskChange_emitsNotProjectingTask() =
+12 −39
Original line number Original line Diff line number Diff line
@@ -18,26 +18,22 @@ package com.android.systemui.mediaprojection.taskswitcher.ui


import android.app.Notification
import android.app.Notification
import android.app.NotificationManager
import android.app.NotificationManager
import android.os.Handler
import android.testing.AndroidTestingRunner
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.mediaprojection.taskswitcher.data.repository.ActivityTaskManagerTasksRepository
import com.android.systemui.kosmos.testScope
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager
import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createTask
import com.android.systemui.mediaprojection.taskswitcher.FakeMediaProjectionManager
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager
import com.android.systemui.mediaprojection.taskswitcher.fakeActivityTaskManager
import com.android.systemui.mediaprojection.taskswitcher.data.repository.MediaProjectionManagerRepository
import com.android.systemui.mediaprojection.taskswitcher.fakeMediaProjectionManager
import com.android.systemui.mediaprojection.taskswitcher.domain.interactor.TaskSwitchInteractor
import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherKosmos
import com.android.systemui.mediaprojection.taskswitcher.ui.viewmodel.TaskSwitcherNotificationViewModel
import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherViewModel
import com.android.systemui.res.R
import com.android.systemui.res.R
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertEquals
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Before
import org.junit.Test
import org.junit.Test
@@ -46,39 +42,16 @@ import org.mockito.ArgumentCaptor
import org.mockito.Mockito.never
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.Mockito.verify


@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidTestingRunner::class)
@RunWith(AndroidTestingRunner::class)
@SmallTest
@SmallTest
class TaskSwitcherNotificationCoordinatorTest : SysuiTestCase() {
class TaskSwitcherNotificationCoordinatorTest : SysuiTestCase() {


    private val notificationManager = mock<NotificationManager>()
    private val notificationManager = mock<NotificationManager>()

    private val kosmos = taskSwitcherKosmos()
    private val dispatcher = UnconfinedTestDispatcher()
    private val testScope = kosmos.testScope
    private val testScope = TestScope(dispatcher)
    private val fakeActivityTaskManager = kosmos.fakeActivityTaskManager

    private val fakeMediaProjectionManager = kosmos.fakeMediaProjectionManager
    private val fakeActivityTaskManager = FakeActivityTaskManager()
    private val viewModel = kosmos.taskSwitcherViewModel
    private val fakeMediaProjectionManager = FakeMediaProjectionManager()

    private val tasksRepo =
        ActivityTaskManagerTasksRepository(
            activityTaskManager = fakeActivityTaskManager.activityTaskManager,
            applicationScope = testScope.backgroundScope,
            backgroundDispatcher = dispatcher
        )

    private val mediaRepo =
        MediaProjectionManagerRepository(
            mediaProjectionManager = fakeMediaProjectionManager.mediaProjectionManager,
            handler = Handler.getMain(),
            applicationScope = testScope.backgroundScope,
            tasksRepository = tasksRepo,
            backgroundDispatcher = dispatcher,
            mediaProjectionServiceHelper = fakeMediaProjectionManager.helper,
        )

    private val interactor = TaskSwitchInteractor(mediaRepo, tasksRepo)
    private val viewModel =
        TaskSwitcherNotificationViewModel(interactor, backgroundDispatcher = dispatcher)


    private lateinit var coordinator: TaskSwitcherNotificationCoordinator
    private lateinit var coordinator: TaskSwitcherNotificationCoordinator


+13 −42
Original line number Original line Diff line number Diff line
@@ -17,64 +17,35 @@
package com.android.systemui.mediaprojection.taskswitcher.ui.viewmodel
package com.android.systemui.mediaprojection.taskswitcher.ui.viewmodel


import android.content.Intent
import android.content.Intent
import android.os.Handler
import android.testing.AndroidTestingRunner
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.mediaprojection.taskswitcher.data.repository.ActivityTaskManagerTasksRepository
import com.android.systemui.kosmos.testScope
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager
import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createTask
import com.android.systemui.mediaprojection.taskswitcher.FakeMediaProjectionManager.Companion.createDisplaySession
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager
import com.android.systemui.mediaprojection.taskswitcher.FakeMediaProjectionManager.Companion.createSingleTaskSession
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager.Companion.createDisplaySession
import com.android.systemui.mediaprojection.taskswitcher.fakeActivityTaskManager
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager.Companion.createSingleTaskSession
import com.android.systemui.mediaprojection.taskswitcher.fakeMediaProjectionManager
import com.android.systemui.mediaprojection.taskswitcher.data.repository.MediaProjectionManagerRepository
import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherKosmos
import com.android.systemui.mediaprojection.taskswitcher.domain.interactor.TaskSwitchInteractor
import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherViewModel
import com.android.systemui.mediaprojection.taskswitcher.ui.model.TaskSwitcherNotificationUiState
import com.android.systemui.mediaprojection.taskswitcher.ui.model.TaskSwitcherNotificationUiState
import com.android.systemui.mediaprojection.taskswitcher.ui.viewmodel.TaskSwitcherNotificationViewModel.Companion.NOTIFICATION_MAX_SHOW_DURATION
import com.android.systemui.mediaprojection.taskswitcher.ui.viewmodel.TaskSwitcherNotificationViewModel.Companion.NOTIFICATION_MAX_SHOW_DURATION
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestCoroutineScheduler
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith


@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidTestingRunner::class)
@RunWith(AndroidTestingRunner::class)
@SmallTest
@SmallTest
class TaskSwitcherNotificationViewModelTest : SysuiTestCase() {
class TaskSwitcherNotificationViewModelTest : SysuiTestCase() {


    private val scheduler = TestCoroutineScheduler()
    private val kosmos = taskSwitcherKosmos()
    private val dispatcher = UnconfinedTestDispatcher(scheduler)
    private val testScope = kosmos.testScope
    private val testScope = TestScope(dispatcher)
    private val fakeActivityTaskManager = kosmos.fakeActivityTaskManager

    private val fakeMediaProjectionManager = kosmos.fakeMediaProjectionManager
    private val fakeActivityTaskManager = FakeActivityTaskManager()
    private val viewModel = kosmos.taskSwitcherViewModel
    private val fakeMediaProjectionManager = FakeMediaProjectionManager()

    private val tasksRepo =
        ActivityTaskManagerTasksRepository(
            activityTaskManager = fakeActivityTaskManager.activityTaskManager,
            applicationScope = testScope.backgroundScope,
            backgroundDispatcher = dispatcher
        )

    private val mediaRepo =
        MediaProjectionManagerRepository(
            mediaProjectionManager = fakeMediaProjectionManager.mediaProjectionManager,
            handler = Handler.getMain(),
            applicationScope = testScope.backgroundScope,
            tasksRepository = tasksRepo,
            backgroundDispatcher = dispatcher,
            mediaProjectionServiceHelper = fakeMediaProjectionManager.helper,
        )

    private val interactor = TaskSwitchInteractor(mediaRepo, tasksRepo)

    private val viewModel =
        TaskSwitcherNotificationViewModel(interactor, backgroundDispatcher = dispatcher)


    @Test
    @Test
    fun uiState_notProjecting_emitsNotShowing() =
    fun uiState_notProjecting_emitsNotShowing() =
Loading