Merge "Enable DemoMode for new QS clock" into tm-qpr-dev
This commit is contained in:
@@ -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) {
|
||||
@@ -298,6 +311,7 @@ class LargeScreenShadeHeaderController @Inject constructor(
|
||||
|
||||
dumpManager.registerDumpable(this)
|
||||
configurationController.addCallback(configurationControllerListener)
|
||||
demoModeController.addCallback(demoModeReceiver)
|
||||
|
||||
updateVisibility()
|
||||
updateTransition()
|
||||
@@ -307,6 +321,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) {
|
||||
@@ -524,4 +539,7 @@ class LargeScreenShadeHeaderController @Inject constructor(
|
||||
updateConstraints(LARGE_SCREEN_HEADER_CONSTRAINT, updates.largeScreenConstraintsChanges)
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
internal fun simulateViewDetached() = this.onViewDetached()
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
@@ -149,7 +154,7 @@ class LargeScreenShadeHeaderControllerCombinedTest : 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)
|
||||
@@ -196,7 +201,8 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() {
|
||||
dumpManager,
|
||||
featureFlags,
|
||||
qsCarrierGroupControllerBuilder,
|
||||
combinedShadeHeadersConstraintManager
|
||||
combinedShadeHeadersConstraintManager,
|
||||
demoModeController
|
||||
)
|
||||
whenever(view.isAttachedToWindow).thenReturn(true)
|
||||
controller.init()
|
||||
@@ -617,6 +623,23 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() {
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun demoMode_attachDemoMode() {
|
||||
val cb = argumentCaptor<DemoMode>()
|
||||
verify(demoModeController).addCallback(cb.capture())
|
||||
cb.value.onDemoModeStarted()
|
||||
verify(clock).onDemoModeStarted()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun demoMode_detachDemoMode() {
|
||||
controller.simulateViewDetached()
|
||||
val cb = argumentCaptor<DemoMode>()
|
||||
verify(demoModeController).removeCallback(cb.capture())
|
||||
cb.value.onDemoModeFinished()
|
||||
verify(clock).onDemoModeFinished()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun animateOutOnStartCustomizing() {
|
||||
val animator = Mockito.mock(ViewPropertyAnimator::class.java, Answers.RETURNS_SELF)
|
||||
|
||||
@@ -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,11 @@ 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.google.common.truth.Truth.assertThat
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
@@ -52,7 +56,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 +70,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 +81,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,8 +116,9 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() {
|
||||
dumpManager,
|
||||
featureFlags,
|
||||
qsCarrierGroupControllerBuilder,
|
||||
combinedShadeHeadersConstraintManager
|
||||
)
|
||||
combinedShadeHeadersConstraintManager,
|
||||
demoModeController
|
||||
)
|
||||
whenever(view.isAttachedToWindow).thenReturn(true)
|
||||
mLargeScreenShadeHeaderController.init()
|
||||
carrierIconSlots = listOf(
|
||||
@@ -230,4 +236,21 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() {
|
||||
verify(animator).setInterpolator(Interpolators.ALPHA_IN)
|
||||
verify(animator).start()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun demoMode_attachDemoMode() {
|
||||
val cb = argumentCaptor<DemoMode>()
|
||||
verify(demoModeController).addCallback(cb.capture())
|
||||
cb.value.onDemoModeStarted()
|
||||
verify(clock).onDemoModeStarted()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun demoMode_detachDemoMode() {
|
||||
mLargeScreenShadeHeaderController.simulateViewDetached()
|
||||
val cb = argumentCaptor<DemoMode>()
|
||||
verify(demoModeController).removeCallback(cb.capture())
|
||||
cb.value.onDemoModeFinished()
|
||||
verify(clock).onDemoModeFinished()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user