Merge "[Motion][Split shade] Fix left side of split shade sometimes not overscrolling" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
3845cbd933
@@ -178,7 +178,7 @@ class LockscreenShadeTransitionController @Inject constructor(
|
|||||||
val touchHelper = DragDownHelper(falsingManager, falsingCollector, this, context)
|
val touchHelper = DragDownHelper(falsingManager, falsingCollector, this, context)
|
||||||
|
|
||||||
private val splitShadeOverScroller: SplitShadeLockScreenOverScroller by lazy {
|
private val splitShadeOverScroller: SplitShadeLockScreenOverScroller by lazy {
|
||||||
splitShadeOverScrollerFactory.create(qS, nsslController)
|
splitShadeOverScrollerFactory.create({ qS }, { nsslController })
|
||||||
}
|
}
|
||||||
|
|
||||||
private val phoneShadeOverScroller: SingleShadeLockScreenOverScroller by lazy {
|
private val phoneShadeOverScroller: SingleShadeLockScreenOverScroller by lazy {
|
||||||
@@ -911,4 +911,4 @@ class DragDownHelper(
|
|||||||
host.getLocationOnScreen(temp2)
|
host.getLocationOnScreen(temp2)
|
||||||
return expandCallback.getChildAtRawPosition(x + temp2[0], y + temp2[1])
|
return expandCallback.getChildAtRawPosition(x + temp2[0], y + temp2[1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import android.view.animation.PathInterpolator
|
|||||||
import com.android.internal.annotations.VisibleForTesting
|
import com.android.internal.annotations.VisibleForTesting
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.animation.Interpolators
|
import com.android.systemui.animation.Interpolators
|
||||||
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.plugins.qs.QS
|
import com.android.systemui.plugins.qs.QS
|
||||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
|
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
|
||||||
import com.android.systemui.statusbar.phone.ScrimController
|
import com.android.systemui.statusbar.phone.ScrimController
|
||||||
@@ -16,16 +17,18 @@ import com.android.systemui.statusbar.policy.ConfigurationController
|
|||||||
import dagger.assisted.Assisted
|
import dagger.assisted.Assisted
|
||||||
import dagger.assisted.AssistedFactory
|
import dagger.assisted.AssistedFactory
|
||||||
import dagger.assisted.AssistedInject
|
import dagger.assisted.AssistedInject
|
||||||
|
import java.io.PrintWriter
|
||||||
|
|
||||||
class SplitShadeLockScreenOverScroller
|
class SplitShadeLockScreenOverScroller
|
||||||
@AssistedInject
|
@AssistedInject
|
||||||
constructor(
|
constructor(
|
||||||
configurationController: ConfigurationController,
|
configurationController: ConfigurationController,
|
||||||
|
dumpManager: DumpManager,
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val scrimController: ScrimController,
|
private val scrimController: ScrimController,
|
||||||
private val statusBarStateController: SysuiStatusBarStateController,
|
private val statusBarStateController: SysuiStatusBarStateController,
|
||||||
@Assisted private val qS: QS,
|
@Assisted private val qSProvider: () -> QS,
|
||||||
@Assisted private val nsslController: NotificationStackScrollLayoutController
|
@Assisted private val nsslControllerProvider: () -> NotificationStackScrollLayoutController
|
||||||
) : LockScreenShadeOverScroller {
|
) : LockScreenShadeOverScroller {
|
||||||
|
|
||||||
private var releaseOverScrollAnimator: Animator? = null
|
private var releaseOverScrollAnimator: Animator? = null
|
||||||
@@ -34,6 +37,12 @@ constructor(
|
|||||||
private var maxOverScrollAmount = 0
|
private var maxOverScrollAmount = 0
|
||||||
private var previousOverscrollAmount = 0
|
private var previousOverscrollAmount = 0
|
||||||
|
|
||||||
|
private val qS: QS
|
||||||
|
get() = qSProvider()
|
||||||
|
|
||||||
|
private val nsslController: NotificationStackScrollLayoutController
|
||||||
|
get() = nsslControllerProvider()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
updateResources()
|
updateResources()
|
||||||
configurationController.addCallback(
|
configurationController.addCallback(
|
||||||
@@ -42,6 +51,9 @@ constructor(
|
|||||||
updateResources()
|
updateResources()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
dumpManager.registerDumpable("SplitShadeLockscreenOverScroller") { printWriter, _ ->
|
||||||
|
dump(printWriter)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateResources() {
|
private fun updateResources() {
|
||||||
@@ -114,11 +126,25 @@ constructor(
|
|||||||
releaseOverScrollAnimator = null
|
releaseOverScrollAnimator = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun dump(printWriter: PrintWriter) {
|
||||||
|
printWriter.println(
|
||||||
|
"""
|
||||||
|
SplitShadeLockScreenOverScroller:
|
||||||
|
Resources:
|
||||||
|
transitionToFullShadeDistance: $transitionToFullShadeDistance
|
||||||
|
maxOverScrollAmount: $maxOverScrollAmount
|
||||||
|
releaseOverScrollDuration: $releaseOverScrollDuration
|
||||||
|
State:
|
||||||
|
previousOverscrollAmount: $previousOverscrollAmount
|
||||||
|
expansionDragDownAmount: $expansionDragDownAmount
|
||||||
|
""".trimIndent())
|
||||||
|
}
|
||||||
|
|
||||||
@AssistedFactory
|
@AssistedFactory
|
||||||
fun interface Factory {
|
fun interface Factory {
|
||||||
fun create(
|
fun create(
|
||||||
qS: QS,
|
qSProvider: () -> QS,
|
||||||
nsslController: NotificationStackScrollLayoutController
|
nsslControllerProvider: () -> NotificationStackScrollLayoutController
|
||||||
): SplitShadeLockScreenOverScroller
|
): SplitShadeLockScreenOverScroller
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import android.content.Context
|
|||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.plugins.qs.QS
|
import com.android.systemui.plugins.qs.QS
|
||||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
|
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
|
||||||
import com.android.systemui.statusbar.phone.NotificationPanelViewController
|
import com.android.systemui.statusbar.phone.NotificationPanelViewController
|
||||||
@@ -11,6 +12,7 @@ import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent
|
|||||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
|
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
|
||||||
import com.android.systemui.statusbar.phone.panelstate.PanelState
|
import com.android.systemui.statusbar.phone.panelstate.PanelState
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||||
|
import java.io.PrintWriter
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
/** Controls the shade expansion transition on non-lockscreen. */
|
/** Controls the shade expansion transition on non-lockscreen. */
|
||||||
@@ -20,6 +22,7 @@ class ShadeTransitionController
|
|||||||
constructor(
|
constructor(
|
||||||
configurationController: ConfigurationController,
|
configurationController: ConfigurationController,
|
||||||
panelExpansionStateManager: PanelExpansionStateManager,
|
panelExpansionStateManager: PanelExpansionStateManager,
|
||||||
|
dumpManager: DumpManager,
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val splitShadeOverScrollerFactory: SplitShadeOverScroller.Factory,
|
private val splitShadeOverScrollerFactory: SplitShadeOverScroller.Factory,
|
||||||
private val noOpOverScroller: NoOpOverScroller,
|
private val noOpOverScroller: NoOpOverScroller,
|
||||||
@@ -33,7 +36,7 @@ constructor(
|
|||||||
private var inSplitShade = false
|
private var inSplitShade = false
|
||||||
|
|
||||||
private val splitShadeOverScroller by lazy {
|
private val splitShadeOverScroller by lazy {
|
||||||
splitShadeOverScrollerFactory.create(qs, notificationStackScrollLayoutController)
|
splitShadeOverScrollerFactory.create({ qs }, { notificationStackScrollLayoutController })
|
||||||
}
|
}
|
||||||
private val shadeOverScroller: ShadeOverScroller
|
private val shadeOverScroller: ShadeOverScroller
|
||||||
get() =
|
get() =
|
||||||
@@ -53,6 +56,9 @@ constructor(
|
|||||||
})
|
})
|
||||||
panelExpansionStateManager.addExpansionListener(this::onPanelExpansionChanged)
|
panelExpansionStateManager.addExpansionListener(this::onPanelExpansionChanged)
|
||||||
panelExpansionStateManager.addStateListener(this::onPanelStateChanged)
|
panelExpansionStateManager.addStateListener(this::onPanelStateChanged)
|
||||||
|
dumpManager.registerDumpable("ShadeTransitionController") { printWriter, _ ->
|
||||||
|
dump(printWriter)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateResources() {
|
private fun updateResources() {
|
||||||
@@ -72,4 +78,15 @@ constructor(
|
|||||||
this::qs.isInitialized &&
|
this::qs.isInitialized &&
|
||||||
this::notificationPanelViewController.isInitialized &&
|
this::notificationPanelViewController.isInitialized &&
|
||||||
this::notificationStackScrollLayoutController.isInitialized
|
this::notificationStackScrollLayoutController.isInitialized
|
||||||
|
|
||||||
|
private fun dump(pw: PrintWriter) {
|
||||||
|
pw.println(
|
||||||
|
"""
|
||||||
|
ShadeTransitionController:
|
||||||
|
inSplitShade: $inSplitShade
|
||||||
|
qs.isInitialized: ${this::qs.isInitialized}
|
||||||
|
npvc.isInitialized: ${this::notificationPanelViewController.isInitialized}
|
||||||
|
nssl.isInitialized: ${this::notificationStackScrollLayoutController.isInitialized}
|
||||||
|
""".trimIndent())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ constructor(
|
|||||||
dumpManager: DumpManager,
|
dumpManager: DumpManager,
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val scrimController: ScrimController,
|
private val scrimController: ScrimController,
|
||||||
@Assisted private val qS: QS,
|
@Assisted private val qSProvider: () -> QS,
|
||||||
@Assisted private val nsslController: NotificationStackScrollLayoutController
|
@Assisted private val nsslControllerProvider: () -> NotificationStackScrollLayoutController
|
||||||
) : ShadeOverScroller {
|
) : ShadeOverScroller {
|
||||||
|
|
||||||
private var releaseOverScrollDuration = 0L
|
private var releaseOverScrollDuration = 0L
|
||||||
@@ -39,6 +39,12 @@ constructor(
|
|||||||
@PanelState private var panelState: Int = STATE_CLOSED
|
@PanelState private var panelState: Int = STATE_CLOSED
|
||||||
private var releaseOverScrollAnimator: Animator? = null
|
private var releaseOverScrollAnimator: Animator? = null
|
||||||
|
|
||||||
|
private val qS: QS
|
||||||
|
get() = qSProvider()
|
||||||
|
|
||||||
|
private val nsslController: NotificationStackScrollLayoutController
|
||||||
|
get() = nsslControllerProvider()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
updateResources()
|
updateResources()
|
||||||
configurationController.addCallback(
|
configurationController.addCallback(
|
||||||
@@ -47,7 +53,9 @@ constructor(
|
|||||||
updateResources()
|
updateResources()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
dumpManager.registerDumpable(this::dump)
|
dumpManager.registerDumpable("SplitShadeOverScroller") { printWriter, _ ->
|
||||||
|
dump(printWriter)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateResources() {
|
private fun updateResources() {
|
||||||
@@ -118,7 +126,7 @@ constructor(
|
|||||||
releaseOverScrollAnimator = null
|
releaseOverScrollAnimator = null
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun dump(pw: PrintWriter, strings: Array<String>) {
|
private fun dump(pw: PrintWriter) {
|
||||||
pw.println(
|
pw.println(
|
||||||
"""
|
"""
|
||||||
SplitShadeOverScroller:
|
SplitShadeOverScroller:
|
||||||
@@ -129,15 +137,14 @@ constructor(
|
|||||||
previousOverscrollAmount: $previousOverscrollAmount
|
previousOverscrollAmount: $previousOverscrollAmount
|
||||||
dragDownAmount: $dragDownAmount
|
dragDownAmount: $dragDownAmount
|
||||||
panelState: $panelState
|
panelState: $panelState
|
||||||
""".trimIndent()
|
""".trimIndent())
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@AssistedFactory
|
@AssistedFactory
|
||||||
fun interface Factory {
|
fun interface Factory {
|
||||||
fun create(
|
fun create(
|
||||||
qS: QS,
|
qSProvider: () -> QS,
|
||||||
nsslController: NotificationStackScrollLayoutController
|
nsslControllerProvider: () -> NotificationStackScrollLayoutController
|
||||||
): SplitShadeOverScroller
|
): SplitShadeOverScroller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.android.systemui.statusbar
|
package com.android.systemui.statusbar
|
||||||
|
|
||||||
import org.mockito.Mockito.`when` as whenever
|
|
||||||
import android.testing.AndroidTestingRunner
|
import android.testing.AndroidTestingRunner
|
||||||
import android.testing.TestableLooper
|
import android.testing.TestableLooper
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.plugins.qs.QS
|
import com.android.systemui.plugins.qs.QS
|
||||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
|
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
|
||||||
import com.android.systemui.statusbar.phone.ScrimController
|
import com.android.systemui.statusbar.phone.ScrimController
|
||||||
@@ -19,6 +19,7 @@ import org.mockito.Mockito.reset
|
|||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.Mockito.verifyNoMoreInteractions
|
import org.mockito.Mockito.verifyNoMoreInteractions
|
||||||
import org.mockito.Mockito.verifyZeroInteractions
|
import org.mockito.Mockito.verifyZeroInteractions
|
||||||
|
import org.mockito.Mockito.`when` as whenever
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
|
|
||||||
@RunWith(AndroidTestingRunner::class)
|
@RunWith(AndroidTestingRunner::class)
|
||||||
@@ -32,6 +33,7 @@ class SplitShadeLockScreenOverScrollerTest : SysuiTestCase() {
|
|||||||
@Mock private lateinit var statusBarStateController: SysuiStatusBarStateController
|
@Mock private lateinit var statusBarStateController: SysuiStatusBarStateController
|
||||||
@Mock private lateinit var qS: QS
|
@Mock private lateinit var qS: QS
|
||||||
@Mock private lateinit var nsslController: NotificationStackScrollLayoutController
|
@Mock private lateinit var nsslController: NotificationStackScrollLayoutController
|
||||||
|
@Mock private lateinit var dumpManager: DumpManager
|
||||||
|
|
||||||
private lateinit var overScroller: SplitShadeLockScreenOverScroller
|
private lateinit var overScroller: SplitShadeLockScreenOverScroller
|
||||||
|
|
||||||
@@ -44,11 +46,12 @@ class SplitShadeLockScreenOverScrollerTest : SysuiTestCase() {
|
|||||||
overScroller =
|
overScroller =
|
||||||
SplitShadeLockScreenOverScroller(
|
SplitShadeLockScreenOverScroller(
|
||||||
configurationController,
|
configurationController,
|
||||||
|
dumpManager,
|
||||||
context,
|
context,
|
||||||
scrimController,
|
scrimController,
|
||||||
statusBarStateController,
|
statusBarStateController,
|
||||||
qS,
|
{ qS },
|
||||||
nsslController)
|
{ nsslController })
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import android.testing.AndroidTestingRunner
|
|||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.plugins.qs.QS
|
import com.android.systemui.plugins.qs.QS
|
||||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
|
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
|
||||||
import com.android.systemui.statusbar.phone.NotificationPanelViewController
|
import com.android.systemui.statusbar.phone.NotificationPanelViewController
|
||||||
@@ -29,6 +30,7 @@ class ShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
@Mock private lateinit var noOpOverScroller: NoOpOverScroller
|
@Mock private lateinit var noOpOverScroller: NoOpOverScroller
|
||||||
@Mock private lateinit var splitShadeOverScroller: SplitShadeOverScroller
|
@Mock private lateinit var splitShadeOverScroller: SplitShadeOverScroller
|
||||||
@Mock private lateinit var scrimShadeTransitionController: ScrimShadeTransitionController
|
@Mock private lateinit var scrimShadeTransitionController: ScrimShadeTransitionController
|
||||||
|
@Mock private lateinit var dumpManager: DumpManager
|
||||||
|
|
||||||
private lateinit var controller: ShadeTransitionController
|
private lateinit var controller: ShadeTransitionController
|
||||||
|
|
||||||
@@ -43,6 +45,7 @@ class ShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
ShadeTransitionController(
|
ShadeTransitionController(
|
||||||
configurationController,
|
configurationController,
|
||||||
panelExpansionStateManager,
|
panelExpansionStateManager,
|
||||||
|
dumpManager,
|
||||||
context,
|
context,
|
||||||
splitShadeOverScrollerFactory = { _, _ -> splitShadeOverScroller },
|
splitShadeOverScrollerFactory = { _, _ -> splitShadeOverScroller },
|
||||||
noOpOverScroller,
|
noOpOverScroller,
|
||||||
|
|||||||
@@ -43,8 +43,12 @@ class SplitShadeOverScrollerTest : SysuiTestCase() {
|
|||||||
whenever(nsslController.height).thenReturn(1000)
|
whenever(nsslController.height).thenReturn(1000)
|
||||||
overScroller =
|
overScroller =
|
||||||
SplitShadeOverScroller(
|
SplitShadeOverScroller(
|
||||||
configurationController, dumpManager, context, scrimController, qs, nsslController
|
configurationController,
|
||||||
)
|
dumpManager,
|
||||||
|
context,
|
||||||
|
scrimController,
|
||||||
|
{ qs },
|
||||||
|
{ nsslController })
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user