Loading packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorTest.kt +2 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import com.android.systemui.display.shared.model.DisplayWindowProperties import com.android.systemui.scene.ui.view.WindowRootView import com.android.systemui.shade.data.repository.FakeShadeDisplayRepository import com.android.systemui.statusbar.phone.ConfigurationForwarder import java.util.Optional import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher Loading Loading @@ -65,7 +66,7 @@ class ShadeDisplaysInteractorTest : SysuiTestCase() { private val interactor = ShadeDisplaysInteractor( shadeRootview, Optional.of(shadeRootview), positionRepository, MutableContextWrapper(defaultContext), resources, Loading packages/SystemUI/src/com/android/systemui/shade/ShadeDisplayAwareModule.kt +21 −1 Original line number Diff line number Diff line Loading @@ -29,16 +29,20 @@ import com.android.systemui.common.ui.data.repository.ConfigurationRepositoryImp import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractorImpl import com.android.systemui.dagger.SysUISingleton import com.android.systemui.scene.ui.view.WindowRootView import com.android.systemui.shade.data.repository.ShadeDisplaysRepository import com.android.systemui.shade.data.repository.ShadeDisplaysRepositoryImpl import com.android.systemui.shade.domain.interactor.ShadeDisplaysInteractor import com.android.systemui.shade.shared.flag.ShadeWindowGoesAround import com.android.systemui.statusbar.phone.ConfigurationControllerImpl import com.android.systemui.statusbar.phone.ConfigurationForwarder import com.android.systemui.statusbar.policy.ConfigurationController import dagger.BindsOptionalOf import dagger.Module import dagger.Provides import dagger.multibindings.ClassKey import dagger.multibindings.IntoMap import javax.inject.Provider /** * Module responsible for managing display-specific components and resources for the notification Loading @@ -52,7 +56,7 @@ import dagger.multibindings.IntoMap * By using this dedicated module, we ensure the notification shade window always utilizes the * correct display context and resources, regardless of the display it's on. */ @Module @Module(includes = [OptionalShadeDisplayAwareBindings::class]) object ShadeDisplayAwareModule { /** Creates a new context for the shade window. */ Loading Loading @@ -169,4 +173,20 @@ object ShadeDisplayAwareModule { CoreStartable.NOP } } @Provides @IntoMap @ClassKey(ShadeDisplaysInteractor::class) fun provideShadeDisplaysInteractor(impl: Provider<ShadeDisplaysInteractor>): CoreStartable { return if (ShadeWindowGoesAround.isEnabled) { impl.get() } else { CoreStartable.NOP } } } @Module internal interface OptionalShadeDisplayAwareBindings { @BindsOptionalOf fun bindOptionalOfWindowRootView(): WindowRootView } packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractor.kt +12 −1 Original line number Diff line number Diff line Loading @@ -38,6 +38,8 @@ import com.android.systemui.shade.ShadeWindowLayoutParams import com.android.systemui.shade.data.repository.ShadeDisplaysRepository import com.android.systemui.shade.shared.flag.ShadeWindowGoesAround import com.android.systemui.statusbar.phone.ConfigurationForwarder import com.android.systemui.util.kotlin.getOrNull import java.util.Optional import javax.inject.Inject import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.CoroutineScope Loading @@ -48,7 +50,7 @@ import kotlinx.coroutines.withContext class ShadeDisplaysInteractor @Inject constructor( private val shadeRootView: WindowRootView, optionalShadeRootView: Optional<WindowRootView>, private val shadePositionRepository: ShadeDisplaysRepository, @ShadeDisplayAware private val shadeContext: Context, @ShadeDisplayAware private val shadeResources: Resources, Loading @@ -58,6 +60,15 @@ constructor( @Main private val mainThreadContext: CoroutineContext, ) : CoreStartable { private val shadeRootView = optionalShadeRootView.getOrNull() ?: error( """ ShadeRootView must be provided for this ShadeDisplayInteractor to work. If it is not, it means this is being instantiated in a SystemUI variant that shouldn't. """ .trimIndent() ) // TODO: b/362719719 - Get rid of this callback as the root view should automatically get the // correct configuration once it's moved to another window. private var unregisterConfigChangedCallbacks: (() -> Unit)? = null Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorTest.kt +2 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import com.android.systemui.display.shared.model.DisplayWindowProperties import com.android.systemui.scene.ui.view.WindowRootView import com.android.systemui.shade.data.repository.FakeShadeDisplayRepository import com.android.systemui.statusbar.phone.ConfigurationForwarder import java.util.Optional import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher Loading Loading @@ -65,7 +66,7 @@ class ShadeDisplaysInteractorTest : SysuiTestCase() { private val interactor = ShadeDisplaysInteractor( shadeRootview, Optional.of(shadeRootview), positionRepository, MutableContextWrapper(defaultContext), resources, Loading
packages/SystemUI/src/com/android/systemui/shade/ShadeDisplayAwareModule.kt +21 −1 Original line number Diff line number Diff line Loading @@ -29,16 +29,20 @@ import com.android.systemui.common.ui.data.repository.ConfigurationRepositoryImp import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractorImpl import com.android.systemui.dagger.SysUISingleton import com.android.systemui.scene.ui.view.WindowRootView import com.android.systemui.shade.data.repository.ShadeDisplaysRepository import com.android.systemui.shade.data.repository.ShadeDisplaysRepositoryImpl import com.android.systemui.shade.domain.interactor.ShadeDisplaysInteractor import com.android.systemui.shade.shared.flag.ShadeWindowGoesAround import com.android.systemui.statusbar.phone.ConfigurationControllerImpl import com.android.systemui.statusbar.phone.ConfigurationForwarder import com.android.systemui.statusbar.policy.ConfigurationController import dagger.BindsOptionalOf import dagger.Module import dagger.Provides import dagger.multibindings.ClassKey import dagger.multibindings.IntoMap import javax.inject.Provider /** * Module responsible for managing display-specific components and resources for the notification Loading @@ -52,7 +56,7 @@ import dagger.multibindings.IntoMap * By using this dedicated module, we ensure the notification shade window always utilizes the * correct display context and resources, regardless of the display it's on. */ @Module @Module(includes = [OptionalShadeDisplayAwareBindings::class]) object ShadeDisplayAwareModule { /** Creates a new context for the shade window. */ Loading Loading @@ -169,4 +173,20 @@ object ShadeDisplayAwareModule { CoreStartable.NOP } } @Provides @IntoMap @ClassKey(ShadeDisplaysInteractor::class) fun provideShadeDisplaysInteractor(impl: Provider<ShadeDisplaysInteractor>): CoreStartable { return if (ShadeWindowGoesAround.isEnabled) { impl.get() } else { CoreStartable.NOP } } } @Module internal interface OptionalShadeDisplayAwareBindings { @BindsOptionalOf fun bindOptionalOfWindowRootView(): WindowRootView }
packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractor.kt +12 −1 Original line number Diff line number Diff line Loading @@ -38,6 +38,8 @@ import com.android.systemui.shade.ShadeWindowLayoutParams import com.android.systemui.shade.data.repository.ShadeDisplaysRepository import com.android.systemui.shade.shared.flag.ShadeWindowGoesAround import com.android.systemui.statusbar.phone.ConfigurationForwarder import com.android.systemui.util.kotlin.getOrNull import java.util.Optional import javax.inject.Inject import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.CoroutineScope Loading @@ -48,7 +50,7 @@ import kotlinx.coroutines.withContext class ShadeDisplaysInteractor @Inject constructor( private val shadeRootView: WindowRootView, optionalShadeRootView: Optional<WindowRootView>, private val shadePositionRepository: ShadeDisplaysRepository, @ShadeDisplayAware private val shadeContext: Context, @ShadeDisplayAware private val shadeResources: Resources, Loading @@ -58,6 +60,15 @@ constructor( @Main private val mainThreadContext: CoroutineContext, ) : CoreStartable { private val shadeRootView = optionalShadeRootView.getOrNull() ?: error( """ ShadeRootView must be provided for this ShadeDisplayInteractor to work. If it is not, it means this is being instantiated in a SystemUI variant that shouldn't. """ .trimIndent() ) // TODO: b/362719719 - Get rid of this callback as the root view should automatically get the // correct configuration once it's moved to another window. private var unregisterConfigChangedCallbacks: (() -> Unit)? = null Loading