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

Commit ba1ef450 authored by Jay Aliomer's avatar Jay Aliomer Committed by Automerger Merge Worker
Browse files

Merge "Revert "Revert "Enable DemoMode for new QS clock""" into tm-qpr-dev am: 1f0592c9

parents 40d91204 1f0592c9
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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
@@ -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 {
@@ -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)
@@ -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) {
@@ -300,6 +313,7 @@ class LargeScreenShadeHeaderController @Inject constructor(

        dumpManager.registerDumpable(this)
        configurationController.addCallback(configurationControllerListener)
        demoModeController.addCallback(demoModeReceiver)

        updateVisibility()
        updateTransition()
@@ -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) {
@@ -521,4 +536,7 @@ class LargeScreenShadeHeaderController @Inject constructor(
            updateConstraints(LARGE_SCREEN_HEADER_CONSTRAINT, updates.largeScreenConstraintsChanges)
        }
    }

    @VisibleForTesting
    internal fun simulateViewDetached() = this.onViewDetached()
}
+26 −3
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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
@@ -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()
@@ -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)
@@ -195,7 +202,8 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() {
            dumpManager,
            featureFlags,
            qsCarrierGroupControllerBuilder,
            combinedShadeHeadersConstraintManager
            combinedShadeHeadersConstraintManager,
            demoModeController
        )
        whenever(view.isAttachedToWindow).thenReturn(true)
        controller.init()
@@ -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)
+28 −4
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)
@@ -111,7 +117,8 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() {
                dumpManager,
                featureFlags,
                qsCarrierGroupControllerBuilder,
                combinedShadeHeadersConstraintManager
                combinedShadeHeadersConstraintManager,
                demoModeController
                )
        whenever(view.isAttachedToWindow).thenReturn(true)
        mLargeScreenShadeHeaderController.init()
@@ -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()
    }
}