Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ConnectedDisplaysStatusBarNotificationIconViewStoreTest.kt +0 −2 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.display.domain.interactor.displayWindowPropertiesInteractor import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.statusbar.RankingBuilder Loading Loading @@ -58,7 +57,6 @@ class ConnectedDisplaysStatusBarNotificationIconViewStoreTest : SysuiTestCase() kosmos.iconManager, kosmos.displayWindowPropertiesInteractor, kosmos.notifPipeline, kosmos.testDispatcher, ) private val notifCollectionListeners = mutableListOf<NotifCollectionListener>() Loading packages/SystemUI/src/com/android/systemui/lifecycle/SysUiViewModel.kt +2 −24 Original line number Diff line number Diff line Loading @@ -21,13 +21,8 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.remember import com.android.app.tracing.coroutines.launchTraced as launch import com.android.app.tracing.coroutines.launchTraced import com.android.app.tracing.coroutines.traceCoroutine import com.android.systemui.Flags.rememberViewModelOffMainThread import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers /** * Returns a remembered view-model of the type [T]. If the returned instance is also an Loading @@ -41,27 +36,10 @@ import kotlinx.coroutines.Dispatchers * of some complex concatenation or templating scheme. */ @Composable fun <T> rememberViewModel( traceName: String, key: Any = Unit, context: CoroutineContext = EmptyCoroutineContext, factory: () -> T, ): T { fun <T> rememberViewModel(traceName: String, key: Any = Unit, factory: () -> T): T { val instance = remember(key) { factory() } if (instance is Activatable) { LaunchedEffect(instance) { launchTraced( spanName = traceName, context = when { context != EmptyCoroutineContext -> context rememberViewModelOffMainThread() -> Dispatchers.Default else -> coroutineContext }, ) { instance.activate() } } LaunchedEffect(instance) { traceCoroutine(traceName) { instance.activate() } } } return instance } Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ConnectedDisplaysStatusBarNotificationIconViewStore.kt +5 −14 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.systemui.statusbar.notification.icon.ui.viewbinder import android.util.Log import com.android.dream.lowlight.dagger.qualifiers.Main import com.android.systemui.display.domain.interactor.DisplayWindowPropertiesInteractor import com.android.systemui.lifecycle.Activatable import com.android.systemui.statusbar.StatusBarIconView Loading @@ -31,10 +30,8 @@ import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import java.util.concurrent.ConcurrentHashMap import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.withContext /** [IconViewStore] for the status bar on multiple displays. */ class ConnectedDisplaysStatusBarNotificationIconViewStore Loading @@ -45,7 +42,6 @@ constructor( private val iconManager: IconManager, private val displayWindowPropertiesInteractor: DisplayWindowPropertiesInteractor, private val notifPipeline: NotifPipeline, @Main private val mainDispatcher: CoroutineDispatcher, ) : IconViewStore, Activatable { private val cachedIcons = ConcurrentHashMap<String, StatusBarIconView>() Loading Loading @@ -83,10 +79,6 @@ constructor( } override suspend fun activate() = coroutineScope { // In case activate is being invoked off the main thread, make sure to switch to the main // thread to do the work here as some of the downstream calls assert they've been called on // the main thread. withContext(mainDispatcher) { start() try { awaitCancellation() Loading @@ -94,7 +86,6 @@ constructor( stop() } } } private fun start() { notifPipeline.addCollectionListener(notifCollectionListener) Loading packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ConnectedDisplayStatusBarNotificationIconViewStoreKosmos.kt +0 −2 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.systemui.statusbar.notification.icon.ui.viewbinder import android.content.testableContext import com.android.systemui.display.domain.interactor.displayWindowPropertiesInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testDispatcher import com.android.systemui.statusbar.notification.collection.mockNotifCollection import com.android.systemui.statusbar.notification.collection.notifPipeline import com.android.systemui.statusbar.notification.icon.iconManager Loading @@ -37,7 +36,6 @@ var Kosmos.connectedDisplaysStatusBarNotificationIconViewStoreFactory: iconManager, displayWindowPropertiesInteractor, notifPipeline, testDispatcher, ) } } Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ConnectedDisplaysStatusBarNotificationIconViewStoreTest.kt +0 −2 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.display.domain.interactor.displayWindowPropertiesInteractor import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.statusbar.RankingBuilder Loading Loading @@ -58,7 +57,6 @@ class ConnectedDisplaysStatusBarNotificationIconViewStoreTest : SysuiTestCase() kosmos.iconManager, kosmos.displayWindowPropertiesInteractor, kosmos.notifPipeline, kosmos.testDispatcher, ) private val notifCollectionListeners = mutableListOf<NotifCollectionListener>() Loading
packages/SystemUI/src/com/android/systemui/lifecycle/SysUiViewModel.kt +2 −24 Original line number Diff line number Diff line Loading @@ -21,13 +21,8 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.remember import com.android.app.tracing.coroutines.launchTraced as launch import com.android.app.tracing.coroutines.launchTraced import com.android.app.tracing.coroutines.traceCoroutine import com.android.systemui.Flags.rememberViewModelOffMainThread import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers /** * Returns a remembered view-model of the type [T]. If the returned instance is also an Loading @@ -41,27 +36,10 @@ import kotlinx.coroutines.Dispatchers * of some complex concatenation or templating scheme. */ @Composable fun <T> rememberViewModel( traceName: String, key: Any = Unit, context: CoroutineContext = EmptyCoroutineContext, factory: () -> T, ): T { fun <T> rememberViewModel(traceName: String, key: Any = Unit, factory: () -> T): T { val instance = remember(key) { factory() } if (instance is Activatable) { LaunchedEffect(instance) { launchTraced( spanName = traceName, context = when { context != EmptyCoroutineContext -> context rememberViewModelOffMainThread() -> Dispatchers.Default else -> coroutineContext }, ) { instance.activate() } } LaunchedEffect(instance) { traceCoroutine(traceName) { instance.activate() } } } return instance } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ConnectedDisplaysStatusBarNotificationIconViewStore.kt +5 −14 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.systemui.statusbar.notification.icon.ui.viewbinder import android.util.Log import com.android.dream.lowlight.dagger.qualifiers.Main import com.android.systemui.display.domain.interactor.DisplayWindowPropertiesInteractor import com.android.systemui.lifecycle.Activatable import com.android.systemui.statusbar.StatusBarIconView Loading @@ -31,10 +30,8 @@ import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import java.util.concurrent.ConcurrentHashMap import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.withContext /** [IconViewStore] for the status bar on multiple displays. */ class ConnectedDisplaysStatusBarNotificationIconViewStore Loading @@ -45,7 +42,6 @@ constructor( private val iconManager: IconManager, private val displayWindowPropertiesInteractor: DisplayWindowPropertiesInteractor, private val notifPipeline: NotifPipeline, @Main private val mainDispatcher: CoroutineDispatcher, ) : IconViewStore, Activatable { private val cachedIcons = ConcurrentHashMap<String, StatusBarIconView>() Loading Loading @@ -83,10 +79,6 @@ constructor( } override suspend fun activate() = coroutineScope { // In case activate is being invoked off the main thread, make sure to switch to the main // thread to do the work here as some of the downstream calls assert they've been called on // the main thread. withContext(mainDispatcher) { start() try { awaitCancellation() Loading @@ -94,7 +86,6 @@ constructor( stop() } } } private fun start() { notifPipeline.addCollectionListener(notifCollectionListener) Loading
packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ConnectedDisplayStatusBarNotificationIconViewStoreKosmos.kt +0 −2 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.systemui.statusbar.notification.icon.ui.viewbinder import android.content.testableContext import com.android.systemui.display.domain.interactor.displayWindowPropertiesInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testDispatcher import com.android.systemui.statusbar.notification.collection.mockNotifCollection import com.android.systemui.statusbar.notification.collection.notifPipeline import com.android.systemui.statusbar.notification.icon.iconManager Loading @@ -37,7 +36,6 @@ var Kosmos.connectedDisplaysStatusBarNotificationIconViewStoreFactory: iconManager, displayWindowPropertiesInteractor, notifPipeline, testDispatcher, ) } } Loading