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

Commit a55e611c authored by Christian Göllner's avatar Christian Göllner Committed by Automerger Merge Worker
Browse files

Merge "[Motion][Split shade] Fix left side of split shade sometimes not...

Merge "[Motion][Split shade] Fix left side of split shade sometimes not overscrolling" into tm-qpr-dev am: 3845cbd9 am: 2ec801c7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18909601



Change-Id: I95b2b33e979ce25b3e0c3ef66725db690ff9af36
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents a099aff2 2ec801c7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -178,7 +178,7 @@ class LockscreenShadeTransitionController @Inject constructor(
    val touchHelper = DragDownHelper(falsingManager, falsingCollector, this, context)

    private val splitShadeOverScroller: SplitShadeLockScreenOverScroller by lazy {
        splitShadeOverScrollerFactory.create(qS, nsslController)
        splitShadeOverScrollerFactory.create({ qS }, { nsslController })
    }

    private val phoneShadeOverScroller: SingleShadeLockScreenOverScroller by lazy {
+30 −4
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ import android.view.animation.PathInterpolator
import com.android.internal.annotations.VisibleForTesting
import com.android.systemui.R
import com.android.systemui.animation.Interpolators
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.qs.QS
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
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.AssistedFactory
import dagger.assisted.AssistedInject
import java.io.PrintWriter

class SplitShadeLockScreenOverScroller
@AssistedInject
constructor(
    configurationController: ConfigurationController,
    dumpManager: DumpManager,
    private val context: Context,
    private val scrimController: ScrimController,
    private val statusBarStateController: SysuiStatusBarStateController,
    @Assisted private val qS: QS,
    @Assisted private val nsslController: NotificationStackScrollLayoutController
    @Assisted private val qSProvider: () -> QS,
    @Assisted private val nsslControllerProvider: () -> NotificationStackScrollLayoutController
) : LockScreenShadeOverScroller {

    private var releaseOverScrollAnimator: Animator? = null
@@ -34,6 +37,12 @@ constructor(
    private var maxOverScrollAmount = 0
    private var previousOverscrollAmount = 0

    private val qS: QS
        get() = qSProvider()

    private val nsslController: NotificationStackScrollLayoutController
        get() = nsslControllerProvider()

    init {
        updateResources()
        configurationController.addCallback(
@@ -42,6 +51,9 @@ constructor(
                    updateResources()
                }
            })
        dumpManager.registerDumpable("SplitShadeLockscreenOverScroller") { printWriter, _ ->
            dump(printWriter)
        }
    }

    private fun updateResources() {
@@ -114,11 +126,25 @@ constructor(
        releaseOverScrollAnimator = null
    }

    private fun dump(printWriter: PrintWriter) {
        printWriter.println(
            """
            SplitShadeLockScreenOverScroller:
                Resources:
                    transitionToFullShadeDistance: $transitionToFullShadeDistance
                    maxOverScrollAmount: $maxOverScrollAmount
                    releaseOverScrollDuration: $releaseOverScrollDuration
                State:
                    previousOverscrollAmount: $previousOverscrollAmount
                    expansionDragDownAmount: $expansionDragDownAmount
            """.trimIndent())
    }

    @AssistedFactory
    fun interface Factory {
        fun create(
            qS: QS,
            nsslController: NotificationStackScrollLayoutController
            qSProvider: () -> QS,
            nsslControllerProvider: () -> NotificationStackScrollLayoutController
        ): SplitShadeLockScreenOverScroller
    }

+18 −1
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ import android.content.Context
import android.content.res.Configuration
import com.android.systemui.R
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.qs.QS
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
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.PanelState
import com.android.systemui.statusbar.policy.ConfigurationController
import java.io.PrintWriter
import javax.inject.Inject

/** Controls the shade expansion transition on non-lockscreen. */
@@ -20,6 +22,7 @@ class ShadeTransitionController
constructor(
    configurationController: ConfigurationController,
    panelExpansionStateManager: PanelExpansionStateManager,
    dumpManager: DumpManager,
    private val context: Context,
    private val splitShadeOverScrollerFactory: SplitShadeOverScroller.Factory,
    private val noOpOverScroller: NoOpOverScroller,
@@ -33,7 +36,7 @@ constructor(
    private var inSplitShade = false

    private val splitShadeOverScroller by lazy {
        splitShadeOverScrollerFactory.create(qs, notificationStackScrollLayoutController)
        splitShadeOverScrollerFactory.create({ qs }, { notificationStackScrollLayoutController })
    }
    private val shadeOverScroller: ShadeOverScroller
        get() =
@@ -53,6 +56,9 @@ constructor(
            })
        panelExpansionStateManager.addExpansionListener(this::onPanelExpansionChanged)
        panelExpansionStateManager.addStateListener(this::onPanelStateChanged)
        dumpManager.registerDumpable("ShadeTransitionController") { printWriter, _ ->
            dump(printWriter)
        }
    }

    private fun updateResources() {
@@ -72,4 +78,15 @@ constructor(
        this::qs.isInitialized &&
            this::notificationPanelViewController.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())
    }
}
+15 −8
Original line number Diff line number Diff line
@@ -28,8 +28,8 @@ constructor(
    dumpManager: DumpManager,
    private val context: Context,
    private val scrimController: ScrimController,
    @Assisted private val qS: QS,
    @Assisted private val nsslController: NotificationStackScrollLayoutController
    @Assisted private val qSProvider: () -> QS,
    @Assisted private val nsslControllerProvider: () -> NotificationStackScrollLayoutController
) : ShadeOverScroller {

    private var releaseOverScrollDuration = 0L
@@ -39,6 +39,12 @@ constructor(
    @PanelState private var panelState: Int = STATE_CLOSED
    private var releaseOverScrollAnimator: Animator? = null

    private val qS: QS
        get() = qSProvider()

    private val nsslController: NotificationStackScrollLayoutController
        get() = nsslControllerProvider()

    init {
        updateResources()
        configurationController.addCallback(
@@ -47,7 +53,9 @@ constructor(
                    updateResources()
                }
            })
        dumpManager.registerDumpable(this::dump)
        dumpManager.registerDumpable("SplitShadeOverScroller") { printWriter, _ ->
            dump(printWriter)
        }
    }

    private fun updateResources() {
@@ -118,7 +126,7 @@ constructor(
        releaseOverScrollAnimator = null
    }

    private fun dump(pw: PrintWriter, strings: Array<String>) {
    private fun dump(pw: PrintWriter) {
        pw.println(
            """
            SplitShadeOverScroller:
@@ -129,15 +137,14 @@ constructor(
                    previousOverscrollAmount: $previousOverscrollAmount
                    dragDownAmount: $dragDownAmount
                    panelState: $panelState
            """.trimIndent()
        )
            """.trimIndent())
    }

    @AssistedFactory
    fun interface Factory {
        fun create(
            qS: QS,
            nsslController: NotificationStackScrollLayoutController
            qSProvider: () -> QS,
            nsslControllerProvider: () -> NotificationStackScrollLayoutController
        ): SplitShadeOverScroller
    }
}
+6 −3
Original line number Diff line number Diff line
package com.android.systemui.statusbar

import org.mockito.Mockito.`when` as whenever
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.qs.QS
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
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.verifyNoMoreInteractions
import org.mockito.Mockito.verifyZeroInteractions
import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations

@RunWith(AndroidTestingRunner::class)
@@ -32,6 +33,7 @@ class SplitShadeLockScreenOverScrollerTest : SysuiTestCase() {
    @Mock private lateinit var statusBarStateController: SysuiStatusBarStateController
    @Mock private lateinit var qS: QS
    @Mock private lateinit var nsslController: NotificationStackScrollLayoutController
    @Mock private lateinit var dumpManager: DumpManager

    private lateinit var overScroller: SplitShadeLockScreenOverScroller

@@ -44,11 +46,12 @@ class SplitShadeLockScreenOverScrollerTest : SysuiTestCase() {
        overScroller =
            SplitShadeLockScreenOverScroller(
                configurationController,
                dumpManager,
                context,
                scrimController,
                statusBarStateController,
                qS,
                nsslController)
                { qS },
                { nsslController })
    }

    @Test
Loading