Loading packages/SystemUI/src/com/android/keyguard/mediator/ScreenOnCoordinator.kt +9 −2 Original line number Diff line number Diff line Loading @@ -17,8 +17,10 @@ package com.android.keyguard.mediator import android.annotation.BinderThread import android.os.Handler import android.os.Trace import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.unfold.SysUIUnfoldComponent import com.android.systemui.util.concurrency.PendingTasksContainer import com.android.systemui.util.kotlin.getOrNull Loading @@ -33,7 +35,8 @@ import javax.inject.Inject */ @SysUISingleton class ScreenOnCoordinator @Inject constructor( unfoldComponent: Optional<SysUIUnfoldComponent> unfoldComponent: Optional<SysUIUnfoldComponent>, @Main private val mainHandler: Handler ) { private val unfoldLightRevealAnimation = unfoldComponent.map( Loading @@ -55,7 +58,11 @@ class ScreenOnCoordinator @Inject constructor( unfoldLightRevealAnimation?.onScreenTurningOn(pendingTasks.registerTask("unfold-reveal")) foldAodAnimationController?.onScreenTurningOn(pendingTasks.registerTask("fold-to-aod")) pendingTasks.onTasksComplete { onDrawn.run() } pendingTasks.onTasksComplete { mainHandler.post { onDrawn.run() } } Trace.endSection() } Loading packages/SystemUI/tests/src/com/android/keyguard/mediator/ScreenOnCoordinatorTest.kt +13 −7 Original line number Diff line number Diff line Loading @@ -16,29 +16,25 @@ package com.android.keyguard.mediator import android.os.Handler import android.os.Looper import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.keyguard.ScreenLifecycle import com.android.systemui.unfold.FoldAodAnimationController import com.android.systemui.unfold.SysUIUnfoldComponent import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation import com.android.systemui.util.concurrency.FakeExecution import com.android.systemui.util.mockito.capture import java.util.Optional import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.`when` import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations import java.util.Optional @SmallTest @RunWith(AndroidTestingRunner::class) Loading @@ -55,6 +51,8 @@ class ScreenOnCoordinatorTest : SysuiTestCase() { @Captor private lateinit var readyCaptor: ArgumentCaptor<Runnable> private val testHandler = Handler(Looper.getMainLooper()) private lateinit var screenOnCoordinator: ScreenOnCoordinator @Before Loading @@ -68,6 +66,7 @@ class ScreenOnCoordinatorTest : SysuiTestCase() { screenOnCoordinator = ScreenOnCoordinator( Optional.of(unfoldComponent), testHandler ) } Loading @@ -77,6 +76,7 @@ class ScreenOnCoordinatorTest : SysuiTestCase() { onUnfoldOverlayReady() onFoldAodReady() waitHandlerIdle(testHandler) // Should be called when both unfold overlay and keyguard drawn ready verify(runnable).run() Loading @@ -87,8 +87,10 @@ class ScreenOnCoordinatorTest : SysuiTestCase() { // Recreate with empty unfoldComponent screenOnCoordinator = ScreenOnCoordinator( Optional.empty(), testHandler ) screenOnCoordinator.onScreenTurningOn(runnable) waitHandlerIdle(testHandler) // Should be called when only keyguard drawn verify(runnable).run() Loading @@ -103,4 +105,8 @@ class ScreenOnCoordinatorTest : SysuiTestCase() { verify(foldAodAnimationController).onScreenTurningOn(capture(readyCaptor)) readyCaptor.value.run() } private fun waitHandlerIdle(handler: Handler) { handler.runWithScissors({}, /* timeout= */ 0) } } Loading
packages/SystemUI/src/com/android/keyguard/mediator/ScreenOnCoordinator.kt +9 −2 Original line number Diff line number Diff line Loading @@ -17,8 +17,10 @@ package com.android.keyguard.mediator import android.annotation.BinderThread import android.os.Handler import android.os.Trace import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.unfold.SysUIUnfoldComponent import com.android.systemui.util.concurrency.PendingTasksContainer import com.android.systemui.util.kotlin.getOrNull Loading @@ -33,7 +35,8 @@ import javax.inject.Inject */ @SysUISingleton class ScreenOnCoordinator @Inject constructor( unfoldComponent: Optional<SysUIUnfoldComponent> unfoldComponent: Optional<SysUIUnfoldComponent>, @Main private val mainHandler: Handler ) { private val unfoldLightRevealAnimation = unfoldComponent.map( Loading @@ -55,7 +58,11 @@ class ScreenOnCoordinator @Inject constructor( unfoldLightRevealAnimation?.onScreenTurningOn(pendingTasks.registerTask("unfold-reveal")) foldAodAnimationController?.onScreenTurningOn(pendingTasks.registerTask("fold-to-aod")) pendingTasks.onTasksComplete { onDrawn.run() } pendingTasks.onTasksComplete { mainHandler.post { onDrawn.run() } } Trace.endSection() } Loading
packages/SystemUI/tests/src/com/android/keyguard/mediator/ScreenOnCoordinatorTest.kt +13 −7 Original line number Diff line number Diff line Loading @@ -16,29 +16,25 @@ package com.android.keyguard.mediator import android.os.Handler import android.os.Looper import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.keyguard.ScreenLifecycle import com.android.systemui.unfold.FoldAodAnimationController import com.android.systemui.unfold.SysUIUnfoldComponent import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation import com.android.systemui.util.concurrency.FakeExecution import com.android.systemui.util.mockito.capture import java.util.Optional import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.`when` import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations import java.util.Optional @SmallTest @RunWith(AndroidTestingRunner::class) Loading @@ -55,6 +51,8 @@ class ScreenOnCoordinatorTest : SysuiTestCase() { @Captor private lateinit var readyCaptor: ArgumentCaptor<Runnable> private val testHandler = Handler(Looper.getMainLooper()) private lateinit var screenOnCoordinator: ScreenOnCoordinator @Before Loading @@ -68,6 +66,7 @@ class ScreenOnCoordinatorTest : SysuiTestCase() { screenOnCoordinator = ScreenOnCoordinator( Optional.of(unfoldComponent), testHandler ) } Loading @@ -77,6 +76,7 @@ class ScreenOnCoordinatorTest : SysuiTestCase() { onUnfoldOverlayReady() onFoldAodReady() waitHandlerIdle(testHandler) // Should be called when both unfold overlay and keyguard drawn ready verify(runnable).run() Loading @@ -87,8 +87,10 @@ class ScreenOnCoordinatorTest : SysuiTestCase() { // Recreate with empty unfoldComponent screenOnCoordinator = ScreenOnCoordinator( Optional.empty(), testHandler ) screenOnCoordinator.onScreenTurningOn(runnable) waitHandlerIdle(testHandler) // Should be called when only keyguard drawn verify(runnable).run() Loading @@ -103,4 +105,8 @@ class ScreenOnCoordinatorTest : SysuiTestCase() { verify(foldAodAnimationController).onScreenTurningOn(capture(readyCaptor)) readyCaptor.value.run() } private fun waitHandlerIdle(handler: Handler) { handler.runWithScissors({}, /* timeout= */ 0) } }