Loading packages/SystemUI/src/com/android/systemui/shade/LargeScreenShadeHeaderController.kt +20 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.shade import android.annotation.IdRes import android.app.StatusBarManager import android.content.res.Configuration import android.os.Bundle import android.os.Trace import android.os.Trace.TRACE_TAG_APP import android.util.Pair Loading @@ -34,6 +35,8 @@ import com.android.systemui.animation.Interpolators import com.android.systemui.animation.ShadeInterpolation import com.android.systemui.battery.BatteryMeterView import com.android.systemui.battery.BatteryMeterViewController import com.android.systemui.demomode.DemoMode import com.android.systemui.demomode.DemoModeController import com.android.systemui.dump.DumpManager import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags Loading @@ -53,6 +56,7 @@ import com.android.systemui.statusbar.phone.StatusIconContainer import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent.CentralSurfacesScope import com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.LARGE_SCREEN_BATTERY_CONTROLLER import com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.LARGE_SCREEN_SHADE_HEADER import com.android.systemui.statusbar.policy.Clock import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.VariableDateView import com.android.systemui.statusbar.policy.VariableDateViewController Loading Loading @@ -89,7 +93,8 @@ class LargeScreenShadeHeaderController @Inject constructor( private val dumpManager: DumpManager, private val featureFlags: FeatureFlags, private val qsCarrierGroupControllerBuilder: QSCarrierGroupController.Builder, private val combinedShadeHeadersConstraintManager: CombinedShadeHeadersConstraintManager private val combinedShadeHeadersConstraintManager: CombinedShadeHeadersConstraintManager, private val demoModeController: DemoModeController ) : ViewController<View>(header), Dumpable { companion object { Loading Loading @@ -126,7 +131,7 @@ class LargeScreenShadeHeaderController @Inject constructor( private lateinit var qsCarrierGroupController: QSCarrierGroupController private val batteryIcon: BatteryMeterView = header.findViewById(R.id.batteryRemainingIcon) private val clock: TextView = header.findViewById(R.id.clock) private val clock: Clock = header.findViewById(R.id.clock) private val date: TextView = header.findViewById(R.id.date) private val iconContainer: StatusIconContainer = header.findViewById(R.id.statusIcons) private val qsCarrierGroup: QSCarrierGroup = header.findViewById(R.id.carrier_group) Loading Loading @@ -212,6 +217,14 @@ class LargeScreenShadeHeaderController @Inject constructor( view.onApplyWindowInsets(insets) } private val demoModeReceiver = object : DemoMode { override fun demoCommands() = listOf(DemoMode.COMMAND_CLOCK) override fun dispatchDemoCommand(command: String, args: Bundle) = clock.dispatchDemoCommand(command, args) override fun onDemoModeStarted() = clock.onDemoModeStarted() override fun onDemoModeFinished() = clock.onDemoModeFinished() } private val chipVisibilityListener: ChipVisibilityListener = object : ChipVisibilityListener { override fun onChipVisibilityRefreshed(visible: Boolean) { if (header is MotionLayout) { Loading Loading @@ -300,6 +313,7 @@ class LargeScreenShadeHeaderController @Inject constructor( dumpManager.registerDumpable(this) configurationController.addCallback(configurationControllerListener) demoModeController.addCallback(demoModeReceiver) updateVisibility() updateTransition() Loading @@ -309,6 +323,7 @@ class LargeScreenShadeHeaderController @Inject constructor( privacyIconsController.chipVisibilityListener = null dumpManager.unregisterDumpable(this::class.java.simpleName) configurationController.removeCallback(configurationControllerListener) demoModeController.removeCallback(demoModeReceiver) } fun disable(state1: Int, state2: Int, animate: Boolean) { Loading Loading @@ -521,4 +536,7 @@ class LargeScreenShadeHeaderController @Inject constructor( updateConstraints(LARGE_SCREEN_HEADER_CONSTRAINT, updates.largeScreenConstraintsChanges) } } @VisibleForTesting internal fun simulateViewDetached() = this.onViewDetached() } packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerCombinedTest.kt +26 −3 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ import com.android.systemui.animation.Interpolators import com.android.systemui.animation.ShadeInterpolation import com.android.systemui.battery.BatteryMeterView import com.android.systemui.battery.BatteryMeterViewController import com.android.systemui.demomode.DemoMode import com.android.systemui.demomode.DemoModeController import com.android.systemui.dump.DumpManager import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags Loading @@ -50,10 +52,12 @@ import com.android.systemui.shade.LargeScreenShadeHeaderController.Companion.QS_ import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider import com.android.systemui.statusbar.phone.StatusBarIconController import com.android.systemui.statusbar.phone.StatusIconContainer import com.android.systemui.statusbar.policy.Clock import com.android.systemui.statusbar.policy.FakeConfigurationController import com.android.systemui.statusbar.policy.VariableDateView import com.android.systemui.statusbar.policy.VariableDateViewController import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.capture import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock Loading Loading @@ -104,7 +108,7 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { @Mock private lateinit var featureFlags: FeatureFlags @Mock private lateinit var clock: TextView private lateinit var clock: Clock @Mock private lateinit var date: VariableDateView @Mock Loading Loading @@ -138,6 +142,7 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { private lateinit var qsConstraints: ConstraintSet @Mock private lateinit var largeScreenConstraints: ConstraintSet @Mock private lateinit var demoModeController: DemoModeController @JvmField @Rule val mockitoRule = MockitoJUnit.rule() Loading @@ -146,10 +151,12 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { private lateinit var controller: LargeScreenShadeHeaderController private lateinit var carrierIconSlots: List<String> private val configurationController = FakeConfigurationController() private lateinit var demoModeControllerCapture: ArgumentCaptor<DemoMode> @Before fun setUp() { whenever<TextView>(view.findViewById(R.id.clock)).thenReturn(clock) demoModeControllerCapture = argumentCaptor<DemoMode>() whenever<Clock>(view.findViewById(R.id.clock)).thenReturn(clock) whenever(clock.context).thenReturn(mockedContext) whenever<TextView>(view.findViewById(R.id.date)).thenReturn(date) Loading Loading @@ -195,7 +202,8 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { dumpManager, featureFlags, qsCarrierGroupControllerBuilder, combinedShadeHeadersConstraintManager combinedShadeHeadersConstraintManager, demoModeController ) whenever(view.isAttachedToWindow).thenReturn(true) controller.init() Loading Loading @@ -616,6 +624,21 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { ) } @Test fun demoMode_attachDemoMode() { verify(demoModeController).addCallback(capture(demoModeControllerCapture)) demoModeControllerCapture.value.onDemoModeStarted() verify(clock).onDemoModeStarted() } @Test fun demoMode_detachDemoMode() { controller.simulateViewDetached() verify(demoModeController).removeCallback(capture(demoModeControllerCapture)) demoModeControllerCapture.value.onDemoModeFinished() verify(clock).onDemoModeFinished() } @Test fun animateOutOnStartCustomizing() { val animator = Mockito.mock(ViewPropertyAnimator::class.java, Answers.RETURNS_SELF) Loading packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerTest.kt +28 −4 Original line number Diff line number Diff line Loading @@ -13,6 +13,8 @@ import com.android.systemui.animation.Interpolators import com.android.systemui.animation.ShadeInterpolation import com.android.systemui.battery.BatteryMeterView import com.android.systemui.battery.BatteryMeterViewController import com.android.systemui.demomode.DemoMode import com.android.systemui.demomode.DemoModeController import com.android.systemui.dump.DumpManager import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags Loading @@ -22,9 +24,12 @@ import com.android.systemui.qs.carrier.QSCarrierGroupController import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider import com.android.systemui.statusbar.phone.StatusBarIconController import com.android.systemui.statusbar.phone.StatusIconContainer import com.android.systemui.statusbar.policy.Clock import com.android.systemui.statusbar.policy.FakeConfigurationController import com.android.systemui.statusbar.policy.VariableDateViewController import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.capture import com.google.common.truth.Truth.assertThat import org.junit.After import org.junit.Before Loading Loading @@ -52,7 +57,7 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { @Mock private lateinit var qsCarrierGroupController: QSCarrierGroupController @Mock private lateinit var qsCarrierGroupControllerBuilder: QSCarrierGroupController.Builder @Mock private lateinit var featureFlags: FeatureFlags @Mock private lateinit var clock: TextView @Mock private lateinit var clock: Clock @Mock private lateinit var date: TextView @Mock private lateinit var carrierGroup: QSCarrierGroup @Mock private lateinit var batteryMeterView: BatteryMeterView Loading @@ -66,6 +71,7 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { CombinedShadeHeadersConstraintManager @Mock private lateinit var mockedContext: Context @Mock private lateinit var demoModeController: DemoModeController @JvmField @Rule val mockitoRule = MockitoJUnit.rule() var viewVisibility = View.GONE Loading @@ -76,7 +82,7 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { @Before fun setup() { whenever<TextView>(view.findViewById(R.id.clock)).thenReturn(clock) whenever<Clock>(view.findViewById(R.id.clock)).thenReturn(clock) whenever(clock.context).thenReturn(mockedContext) whenever<TextView>(view.findViewById(R.id.date)).thenReturn(date) whenever(date.context).thenReturn(mockedContext) Loading Loading @@ -111,7 +117,8 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { dumpManager, featureFlags, qsCarrierGroupControllerBuilder, combinedShadeHeadersConstraintManager combinedShadeHeadersConstraintManager, demoModeController ) whenever(view.isAttachedToWindow).thenReturn(true) mLargeScreenShadeHeaderController.init() Loading Loading @@ -230,4 +237,21 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { verify(animator).setInterpolator(Interpolators.ALPHA_IN) verify(animator).start() } @Test fun demoMode_attachDemoMode() { val cb = argumentCaptor<DemoMode>() verify(demoModeController).addCallback(capture(cb)) cb.value.onDemoModeStarted() verify(clock).onDemoModeStarted() } @Test fun demoMode_detachDemoMode() { mLargeScreenShadeHeaderController.simulateViewDetached() val cb = argumentCaptor<DemoMode>() verify(demoModeController).removeCallback(capture(cb)) cb.value.onDemoModeFinished() verify(clock).onDemoModeFinished() } } Loading
packages/SystemUI/src/com/android/systemui/shade/LargeScreenShadeHeaderController.kt +20 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.shade import android.annotation.IdRes import android.app.StatusBarManager import android.content.res.Configuration import android.os.Bundle import android.os.Trace import android.os.Trace.TRACE_TAG_APP import android.util.Pair Loading @@ -34,6 +35,8 @@ import com.android.systemui.animation.Interpolators import com.android.systemui.animation.ShadeInterpolation import com.android.systemui.battery.BatteryMeterView import com.android.systemui.battery.BatteryMeterViewController import com.android.systemui.demomode.DemoMode import com.android.systemui.demomode.DemoModeController import com.android.systemui.dump.DumpManager import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags Loading @@ -53,6 +56,7 @@ import com.android.systemui.statusbar.phone.StatusIconContainer import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent.CentralSurfacesScope import com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.LARGE_SCREEN_BATTERY_CONTROLLER import com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.LARGE_SCREEN_SHADE_HEADER import com.android.systemui.statusbar.policy.Clock import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.VariableDateView import com.android.systemui.statusbar.policy.VariableDateViewController Loading Loading @@ -89,7 +93,8 @@ class LargeScreenShadeHeaderController @Inject constructor( private val dumpManager: DumpManager, private val featureFlags: FeatureFlags, private val qsCarrierGroupControllerBuilder: QSCarrierGroupController.Builder, private val combinedShadeHeadersConstraintManager: CombinedShadeHeadersConstraintManager private val combinedShadeHeadersConstraintManager: CombinedShadeHeadersConstraintManager, private val demoModeController: DemoModeController ) : ViewController<View>(header), Dumpable { companion object { Loading Loading @@ -126,7 +131,7 @@ class LargeScreenShadeHeaderController @Inject constructor( private lateinit var qsCarrierGroupController: QSCarrierGroupController private val batteryIcon: BatteryMeterView = header.findViewById(R.id.batteryRemainingIcon) private val clock: TextView = header.findViewById(R.id.clock) private val clock: Clock = header.findViewById(R.id.clock) private val date: TextView = header.findViewById(R.id.date) private val iconContainer: StatusIconContainer = header.findViewById(R.id.statusIcons) private val qsCarrierGroup: QSCarrierGroup = header.findViewById(R.id.carrier_group) Loading Loading @@ -212,6 +217,14 @@ class LargeScreenShadeHeaderController @Inject constructor( view.onApplyWindowInsets(insets) } private val demoModeReceiver = object : DemoMode { override fun demoCommands() = listOf(DemoMode.COMMAND_CLOCK) override fun dispatchDemoCommand(command: String, args: Bundle) = clock.dispatchDemoCommand(command, args) override fun onDemoModeStarted() = clock.onDemoModeStarted() override fun onDemoModeFinished() = clock.onDemoModeFinished() } private val chipVisibilityListener: ChipVisibilityListener = object : ChipVisibilityListener { override fun onChipVisibilityRefreshed(visible: Boolean) { if (header is MotionLayout) { Loading Loading @@ -300,6 +313,7 @@ class LargeScreenShadeHeaderController @Inject constructor( dumpManager.registerDumpable(this) configurationController.addCallback(configurationControllerListener) demoModeController.addCallback(demoModeReceiver) updateVisibility() updateTransition() Loading @@ -309,6 +323,7 @@ class LargeScreenShadeHeaderController @Inject constructor( privacyIconsController.chipVisibilityListener = null dumpManager.unregisterDumpable(this::class.java.simpleName) configurationController.removeCallback(configurationControllerListener) demoModeController.removeCallback(demoModeReceiver) } fun disable(state1: Int, state2: Int, animate: Boolean) { Loading Loading @@ -521,4 +536,7 @@ class LargeScreenShadeHeaderController @Inject constructor( updateConstraints(LARGE_SCREEN_HEADER_CONSTRAINT, updates.largeScreenConstraintsChanges) } } @VisibleForTesting internal fun simulateViewDetached() = this.onViewDetached() }
packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerCombinedTest.kt +26 −3 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ import com.android.systemui.animation.Interpolators import com.android.systemui.animation.ShadeInterpolation import com.android.systemui.battery.BatteryMeterView import com.android.systemui.battery.BatteryMeterViewController import com.android.systemui.demomode.DemoMode import com.android.systemui.demomode.DemoModeController import com.android.systemui.dump.DumpManager import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags Loading @@ -50,10 +52,12 @@ import com.android.systemui.shade.LargeScreenShadeHeaderController.Companion.QS_ import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider import com.android.systemui.statusbar.phone.StatusBarIconController import com.android.systemui.statusbar.phone.StatusIconContainer import com.android.systemui.statusbar.policy.Clock import com.android.systemui.statusbar.policy.FakeConfigurationController import com.android.systemui.statusbar.policy.VariableDateView import com.android.systemui.statusbar.policy.VariableDateViewController import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.capture import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock Loading Loading @@ -104,7 +108,7 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { @Mock private lateinit var featureFlags: FeatureFlags @Mock private lateinit var clock: TextView private lateinit var clock: Clock @Mock private lateinit var date: VariableDateView @Mock Loading Loading @@ -138,6 +142,7 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { private lateinit var qsConstraints: ConstraintSet @Mock private lateinit var largeScreenConstraints: ConstraintSet @Mock private lateinit var demoModeController: DemoModeController @JvmField @Rule val mockitoRule = MockitoJUnit.rule() Loading @@ -146,10 +151,12 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { private lateinit var controller: LargeScreenShadeHeaderController private lateinit var carrierIconSlots: List<String> private val configurationController = FakeConfigurationController() private lateinit var demoModeControllerCapture: ArgumentCaptor<DemoMode> @Before fun setUp() { whenever<TextView>(view.findViewById(R.id.clock)).thenReturn(clock) demoModeControllerCapture = argumentCaptor<DemoMode>() whenever<Clock>(view.findViewById(R.id.clock)).thenReturn(clock) whenever(clock.context).thenReturn(mockedContext) whenever<TextView>(view.findViewById(R.id.date)).thenReturn(date) Loading Loading @@ -195,7 +202,8 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { dumpManager, featureFlags, qsCarrierGroupControllerBuilder, combinedShadeHeadersConstraintManager combinedShadeHeadersConstraintManager, demoModeController ) whenever(view.isAttachedToWindow).thenReturn(true) controller.init() Loading Loading @@ -616,6 +624,21 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { ) } @Test fun demoMode_attachDemoMode() { verify(demoModeController).addCallback(capture(demoModeControllerCapture)) demoModeControllerCapture.value.onDemoModeStarted() verify(clock).onDemoModeStarted() } @Test fun demoMode_detachDemoMode() { controller.simulateViewDetached() verify(demoModeController).removeCallback(capture(demoModeControllerCapture)) demoModeControllerCapture.value.onDemoModeFinished() verify(clock).onDemoModeFinished() } @Test fun animateOutOnStartCustomizing() { val animator = Mockito.mock(ViewPropertyAnimator::class.java, Answers.RETURNS_SELF) Loading
packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerTest.kt +28 −4 Original line number Diff line number Diff line Loading @@ -13,6 +13,8 @@ import com.android.systemui.animation.Interpolators import com.android.systemui.animation.ShadeInterpolation import com.android.systemui.battery.BatteryMeterView import com.android.systemui.battery.BatteryMeterViewController import com.android.systemui.demomode.DemoMode import com.android.systemui.demomode.DemoModeController import com.android.systemui.dump.DumpManager import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags Loading @@ -22,9 +24,12 @@ import com.android.systemui.qs.carrier.QSCarrierGroupController import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider import com.android.systemui.statusbar.phone.StatusBarIconController import com.android.systemui.statusbar.phone.StatusIconContainer import com.android.systemui.statusbar.policy.Clock import com.android.systemui.statusbar.policy.FakeConfigurationController import com.android.systemui.statusbar.policy.VariableDateViewController import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.capture import com.google.common.truth.Truth.assertThat import org.junit.After import org.junit.Before Loading Loading @@ -52,7 +57,7 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { @Mock private lateinit var qsCarrierGroupController: QSCarrierGroupController @Mock private lateinit var qsCarrierGroupControllerBuilder: QSCarrierGroupController.Builder @Mock private lateinit var featureFlags: FeatureFlags @Mock private lateinit var clock: TextView @Mock private lateinit var clock: Clock @Mock private lateinit var date: TextView @Mock private lateinit var carrierGroup: QSCarrierGroup @Mock private lateinit var batteryMeterView: BatteryMeterView Loading @@ -66,6 +71,7 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { CombinedShadeHeadersConstraintManager @Mock private lateinit var mockedContext: Context @Mock private lateinit var demoModeController: DemoModeController @JvmField @Rule val mockitoRule = MockitoJUnit.rule() var viewVisibility = View.GONE Loading @@ -76,7 +82,7 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { @Before fun setup() { whenever<TextView>(view.findViewById(R.id.clock)).thenReturn(clock) whenever<Clock>(view.findViewById(R.id.clock)).thenReturn(clock) whenever(clock.context).thenReturn(mockedContext) whenever<TextView>(view.findViewById(R.id.date)).thenReturn(date) whenever(date.context).thenReturn(mockedContext) Loading Loading @@ -111,7 +117,8 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { dumpManager, featureFlags, qsCarrierGroupControllerBuilder, combinedShadeHeadersConstraintManager combinedShadeHeadersConstraintManager, demoModeController ) whenever(view.isAttachedToWindow).thenReturn(true) mLargeScreenShadeHeaderController.init() Loading Loading @@ -230,4 +237,21 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { verify(animator).setInterpolator(Interpolators.ALPHA_IN) verify(animator).start() } @Test fun demoMode_attachDemoMode() { val cb = argumentCaptor<DemoMode>() verify(demoModeController).addCallback(capture(cb)) cb.value.onDemoModeStarted() verify(clock).onDemoModeStarted() } @Test fun demoMode_detachDemoMode() { mLargeScreenShadeHeaderController.simulateViewDetached() val cb = argumentCaptor<DemoMode>() verify(demoModeController).removeCallback(capture(cb)) cb.value.onDemoModeFinished() verify(clock).onDemoModeFinished() } }