summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt23
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt16
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/domain/startable/ShadeStartable.kt17
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/startable/ShadeStartableKosmos.kt4
5 files changed, 68 insertions, 0 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
index 09580c5f17be..d472d98c03d4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
@@ -24,9 +24,11 @@ import androidx.asynclayoutinflater.view.AsyncLayoutInflater
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
+import com.android.systemui.biometrics.domain.interactor.displayStateInteractor
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.display.data.repository.displayStateRepository
import com.android.systemui.dump.DumpManager
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testCase
@@ -117,6 +119,7 @@ class QSSceneAdapterImplTest : SysuiTestCase() {
}
private val shadeInteractor = kosmos.shadeInteractor
+ private val displayStateInteractor = kosmos.displayStateInteractor
private val dumpManager = mock<DumpManager>()
private val underTest =
@@ -124,6 +127,7 @@ class QSSceneAdapterImplTest : SysuiTestCase() {
qsSceneComponentFactory,
qsImplProvider,
shadeInteractor,
+ displayStateInteractor,
dumpManager,
testDispatcher,
testScope.backgroundScope,
@@ -583,6 +587,25 @@ class QSSceneAdapterImplTest : SysuiTestCase() {
}
@Test
+ fun setIsNotificationPanelFullWidth() =
+ testScope.runTest {
+ val qsImpl by collectLastValue(underTest.qsImpl)
+
+ underTest.inflate(context)
+ runCurrent()
+
+ kosmos.displayStateRepository.setIsLargeScreen(true)
+ runCurrent()
+
+ verify(qsImpl!!).setIsNotificationPanelFullWidth(false)
+
+ underTest.inflate(context)
+ runCurrent()
+
+ verify(qsImpl!!).setIsNotificationPanelFullWidth(false)
+ }
+
+ @Test
fun setBrightnessMirrorController() =
testScope.runTest {
val qsImpl by collectLastValue(underTest.qsImpl)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt
index cecc70cae60d..d37e0fb2f047 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt
@@ -27,6 +27,7 @@ import com.android.systemui.authentication.data.repository.fakeAuthenticationRep
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository
import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.display.data.repository.displayStateRepository
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.flags.parameterizeSceneContainerFlag
import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
@@ -41,6 +42,8 @@ import com.android.systemui.shade.ShadeExpansionListener
import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.shade.shared.flag.DualShade
import com.android.systemui.shade.shared.model.ShadeMode
+import com.android.systemui.statusbar.notification.stack.notificationStackScrollLayoutController
+import com.android.systemui.statusbar.phone.scrimController
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
@@ -54,6 +57,7 @@ import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.kotlin.verify
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
@@ -167,6 +171,18 @@ class ShadeStartableTest(flags: FlagsParameterization) : SysuiTestCase() {
}
}
+ @Test
+ @EnableSceneContainer
+ fun hydrateFullWidth() =
+ testScope.runTest {
+ underTest.start()
+
+ kosmos.displayStateRepository.setIsLargeScreen(true)
+ runCurrent()
+ verify(kosmos.notificationStackScrollLayoutController).setIsFullWidth(false)
+ assertThat(kosmos.scrimController.clipQsScrim).isFalse()
+ }
+
private fun TestScope.changeScene(
toScene: SceneKey,
transitionState: MutableStateFlow<ObservableTransitionState>,
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
index bb36fd5ea979..ae2f32aae874 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
@@ -24,6 +24,7 @@ import androidx.annotation.VisibleForTesting
import androidx.asynclayoutinflater.view.AsyncLayoutInflater
import com.android.settingslib.applications.InterestingConfigChanges
import com.android.systemui.Dumpable
+import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractor
import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
@@ -196,6 +197,7 @@ constructor(
private val qsSceneComponentFactory: QSSceneComponent.Factory,
private val qsImplProvider: Provider<QSImpl>,
shadeInteractor: ShadeInteractor,
+ displayStateInteractor: DisplayStateInteractor,
dumpManager: DumpManager,
@Main private val mainDispatcher: CoroutineDispatcher,
@Application applicationScope: CoroutineScope,
@@ -208,6 +210,7 @@ constructor(
qsSceneComponentFactory: QSSceneComponent.Factory,
qsImplProvider: Provider<QSImpl>,
shadeInteractor: ShadeInteractor,
+ displayStateInteractor: DisplayStateInteractor,
dumpManager: DumpManager,
@Main dispatcher: CoroutineDispatcher,
@Application scope: CoroutineScope,
@@ -216,6 +219,7 @@ constructor(
qsSceneComponentFactory,
qsImplProvider,
shadeInteractor,
+ displayStateInteractor,
dumpManager,
dispatcher,
scope,
@@ -319,6 +323,10 @@ constructor(
qsImpl.value?.setInSplitShade(it == ShadeMode.Split)
}
}
+ launch {
+ combine(displayStateInteractor.isLargeScreen, qsImpl.filterNotNull(), ::Pair)
+ .collect { it.second.setIsNotificationPanelFullWidth(!it.first) }
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/startable/ShadeStartable.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/startable/ShadeStartable.kt
index 5eb3a1cc1348..330f53fc3701 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/startable/ShadeStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/startable/ShadeStartable.kt
@@ -18,6 +18,7 @@ package com.android.systemui.shade.domain.startable
import android.content.Context
import com.android.systemui.CoreStartable
+import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractor
import com.android.systemui.common.ui.data.repository.ConfigurationRepository
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
@@ -32,6 +33,7 @@ import com.android.systemui.shade.domain.interactor.PanelExpansionInteractor
import com.android.systemui.shade.transition.ScrimShadeTransitionController
import com.android.systemui.statusbar.PulseExpansionHandler
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
+import com.android.systemui.statusbar.phone.ScrimController
import com.android.systemui.statusbar.policy.SplitShadeStateController
import javax.inject.Inject
import javax.inject.Provider
@@ -56,11 +58,14 @@ constructor(
private val panelExpansionInteractorProvider: Provider<PanelExpansionInteractor>,
private val shadeExpansionStateManager: ShadeExpansionStateManager,
private val pulseExpansionHandler: PulseExpansionHandler,
+ private val displayStateInteractor: DisplayStateInteractor,
private val nsslc: NotificationStackScrollLayoutController,
+ private val scrimController: ScrimController,
) : CoreStartable {
override fun start() {
hydrateShadeLayoutWidth()
+ hydrateFullWidth()
hydrateShadeExpansionStateManager()
logTouchesTo(touchLog)
scrimShadeTransitionController.init()
@@ -98,4 +103,16 @@ constructor(
}
}
}
+
+ private fun hydrateFullWidth() {
+ if (SceneContainerFlag.isEnabled) {
+ applicationScope.launch {
+ displayStateInteractor.isLargeScreen.collect {
+ val isFullWidth = !it
+ nsslc.setIsFullWidth(isFullWidth)
+ scrimController.setClipsQsScrim(isFullWidth)
+ }
+ }
+ }
+ }
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/startable/ShadeStartableKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/startable/ShadeStartableKosmos.kt
index 79b80bc71c58..a1f157f13210 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/startable/ShadeStartableKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/startable/ShadeStartableKosmos.kt
@@ -17,6 +17,7 @@
package com.android.systemui.shade.domain.startable
import android.content.applicationContext
+import com.android.systemui.biometrics.domain.interactor.displayStateInteractor
import com.android.systemui.common.ui.data.repository.configurationRepository
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
@@ -28,6 +29,7 @@ import com.android.systemui.shade.data.repository.shadeRepository
import com.android.systemui.shade.domain.interactor.panelExpansionInteractor
import com.android.systemui.shade.transition.ScrimShadeTransitionController
import com.android.systemui.statusbar.notification.stack.notificationStackScrollLayoutController
+import com.android.systemui.statusbar.phone.scrimController
import com.android.systemui.statusbar.policy.splitShadeStateController
import com.android.systemui.statusbar.pulseExpansionHandler
import com.android.systemui.util.mockito.mock
@@ -48,6 +50,8 @@ val Kosmos.shadeStartable by Fixture {
panelExpansionInteractorProvider = { panelExpansionInteractor },
shadeExpansionStateManager = shadeExpansionStateManager,
pulseExpansionHandler = pulseExpansionHandler,
+ displayStateInteractor = displayStateInteractor,
nsslc = notificationStackScrollLayoutController,
+ scrimController = scrimController,
)
}