Loading packages/SystemUI/tests/src/com/android/systemui/unfold/updates/RotationChangeProviderTest.kt +23 −16 Original line number Diff line number Diff line Loading @@ -16,22 +16,24 @@ package com.android.systemui.unfold.updates import android.content.Context import android.hardware.display.DisplayManager import android.os.Looper import android.testing.AndroidTestingRunner import android.view.IRotationWatcher import android.view.IWindowManager import android.view.Display import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.unfold.updates.RotationChangeProvider.RotationListener import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.time.FakeSystemClock import com.android.systemui.util.mockito.whenever import com.android.systemui.utils.os.FakeHandler import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.anyInt import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.spy import org.mockito.Mockito.verify import org.mockito.Mockito.verifyNoMoreInteractions import org.mockito.MockitoAnnotations Loading @@ -42,19 +44,23 @@ class RotationChangeProviderTest : SysuiTestCase() { private lateinit var rotationChangeProvider: RotationChangeProvider @Mock lateinit var windowManagerInterface: IWindowManager @Mock lateinit var displayManager: DisplayManager @Mock lateinit var listener: RotationListener @Captor lateinit var rotationWatcher: ArgumentCaptor<IRotationWatcher> private val fakeExecutor = FakeExecutor(FakeSystemClock()) @Mock lateinit var display: Display @Captor lateinit var displayListener: ArgumentCaptor<DisplayManager.DisplayListener> private val fakeHandler = FakeHandler(Looper.getMainLooper()) private lateinit var spyContext: Context @Before fun setup() { MockitoAnnotations.initMocks(this) rotationChangeProvider = RotationChangeProvider(windowManagerInterface, context, fakeExecutor) spyContext = spy(context) whenever(spyContext.display).thenReturn(display) rotationChangeProvider = RotationChangeProvider(displayManager, spyContext, fakeHandler) rotationChangeProvider.addCallback(listener) fakeExecutor.runAllReady() verify(windowManagerInterface).watchRotation(rotationWatcher.capture(), anyInt()) fakeHandler.dispatchQueuedMessages() verify(displayManager).registerDisplayListener(displayListener.capture(), any()) } @Test Loading @@ -70,15 +76,16 @@ class RotationChangeProviderTest : SysuiTestCase() { verify(listener).onRotationChanged(42) rotationChangeProvider.removeCallback(listener) fakeExecutor.runAllReady() fakeHandler.dispatchQueuedMessages() sendRotationUpdate(43) verify(windowManagerInterface).removeRotationWatcher(any()) verify(displayManager).unregisterDisplayListener(any()) verifyNoMoreInteractions(listener) } private fun sendRotationUpdate(newRotation: Int) { rotationWatcher.value.onRotationChanged(newRotation) fakeExecutor.runAllReady() whenever(display.rotation).thenReturn(newRotation) displayListener.allValues.forEach { it.onDisplayChanged(display.displayId) } fakeHandler.dispatchQueuedMessages() } } packages/SystemUI/unfold/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ android_library { ], kotlincflags: ["-Xjvm-default=enable"], java_version: "1.8", sdk_version: "current", min_sdk_version: "current", plugins: ["dagger2-compiler"], } packages/SystemUI/unfold/src/com/android/systemui/unfold/UnfoldSharedComponent.kt +4 −3 Original line number Diff line number Diff line Loading @@ -19,8 +19,8 @@ package com.android.systemui.unfold import android.content.ContentResolver import android.content.Context import android.hardware.SensorManager import android.hardware.display.DisplayManager import android.os.Handler import android.view.IWindowManager import com.android.systemui.unfold.config.UnfoldTransitionConfig import com.android.systemui.unfold.dagger.UnfoldMain import com.android.systemui.unfold.dagger.UnfoldSingleThreadBg Loading Loading @@ -61,7 +61,7 @@ interface UnfoldSharedComponent { @BindsInstance @UnfoldMain executor: Executor, @BindsInstance @UnfoldSingleThreadBg singleThreadBgExecutor: Executor, @BindsInstance @UnfoldTransitionATracePrefix tracingTagPrefix: String, @BindsInstance windowManager: IWindowManager, @BindsInstance displayManager: DisplayManager, @BindsInstance contentResolver: ContentResolver = context.contentResolver ): UnfoldSharedComponent } Loading @@ -84,8 +84,9 @@ interface RemoteUnfoldSharedComponent { @BindsInstance context: Context, @BindsInstance config: UnfoldTransitionConfig, @BindsInstance @UnfoldMain executor: Executor, @BindsInstance @UnfoldMain handler: Handler, @BindsInstance @UnfoldSingleThreadBg singleThreadBgExecutor: Executor, @BindsInstance windowManager: IWindowManager, @BindsInstance displayManager: DisplayManager, @BindsInstance @UnfoldTransitionATracePrefix tracingTagPrefix: String, ): RemoteUnfoldSharedComponent } Loading packages/SystemUI/unfold/src/com/android/systemui/unfold/UnfoldTransitionFactory.kt +7 −5 Original line number Diff line number Diff line Loading @@ -19,8 +19,8 @@ package com.android.systemui.unfold import android.content.Context import android.hardware.SensorManager import android.hardware.display.DisplayManager import android.os.Handler import android.view.IWindowManager import com.android.systemui.unfold.config.UnfoldTransitionConfig import com.android.systemui.unfold.updates.FoldProvider import com.android.systemui.unfold.updates.screen.ScreenStatusProvider Loading @@ -47,7 +47,7 @@ fun createUnfoldSharedComponent( mainExecutor: Executor, singleThreadBgExecutor: Executor, tracingTagPrefix: String, windowManager: IWindowManager, displayManager: DisplayManager, ): UnfoldSharedComponent = DaggerUnfoldSharedComponent.factory() .create( Loading @@ -61,7 +61,7 @@ fun createUnfoldSharedComponent( mainExecutor, singleThreadBgExecutor, tracingTagPrefix, windowManager, displayManager, ) /** Loading @@ -73,16 +73,18 @@ fun createRemoteUnfoldSharedComponent( context: Context, config: UnfoldTransitionConfig, mainExecutor: Executor, mainHandler: Handler, singleThreadBgExecutor: Executor, tracingTagPrefix: String, windowManager: IWindowManager, displayManager: DisplayManager, ): RemoteUnfoldSharedComponent = DaggerRemoteUnfoldSharedComponent.factory() .create( context, config, mainExecutor, mainHandler, singleThreadBgExecutor, windowManager, displayManager, tracingTagPrefix, ) packages/SystemUI/unfold/src/com/android/systemui/unfold/progress/PhysicsBasedUnfoldTransitionProgressProvider.kt +1 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.systemui.unfold.progress import android.os.Trace import android.os.Trace.TRACE_TAG_APP import android.util.Log import androidx.dynamicanimation.animation.DynamicAnimation import androidx.dynamicanimation.animation.FloatPropertyCompat Loading Loading @@ -110,7 +109,7 @@ class PhysicsBasedUnfoldTransitionProgressProvider @Inject constructor( if (DEBUG) { Log.d(TAG, "onFoldUpdate = ${update.name()}") Trace.traceCounter(Trace.TRACE_TAG_APP, "fold_update", update) Trace.setCounter("fold_update", update.toLong()) } } Loading Loading
packages/SystemUI/tests/src/com/android/systemui/unfold/updates/RotationChangeProviderTest.kt +23 −16 Original line number Diff line number Diff line Loading @@ -16,22 +16,24 @@ package com.android.systemui.unfold.updates import android.content.Context import android.hardware.display.DisplayManager import android.os.Looper import android.testing.AndroidTestingRunner import android.view.IRotationWatcher import android.view.IWindowManager import android.view.Display import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.unfold.updates.RotationChangeProvider.RotationListener import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.time.FakeSystemClock import com.android.systemui.util.mockito.whenever import com.android.systemui.utils.os.FakeHandler import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.anyInt import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.spy import org.mockito.Mockito.verify import org.mockito.Mockito.verifyNoMoreInteractions import org.mockito.MockitoAnnotations Loading @@ -42,19 +44,23 @@ class RotationChangeProviderTest : SysuiTestCase() { private lateinit var rotationChangeProvider: RotationChangeProvider @Mock lateinit var windowManagerInterface: IWindowManager @Mock lateinit var displayManager: DisplayManager @Mock lateinit var listener: RotationListener @Captor lateinit var rotationWatcher: ArgumentCaptor<IRotationWatcher> private val fakeExecutor = FakeExecutor(FakeSystemClock()) @Mock lateinit var display: Display @Captor lateinit var displayListener: ArgumentCaptor<DisplayManager.DisplayListener> private val fakeHandler = FakeHandler(Looper.getMainLooper()) private lateinit var spyContext: Context @Before fun setup() { MockitoAnnotations.initMocks(this) rotationChangeProvider = RotationChangeProvider(windowManagerInterface, context, fakeExecutor) spyContext = spy(context) whenever(spyContext.display).thenReturn(display) rotationChangeProvider = RotationChangeProvider(displayManager, spyContext, fakeHandler) rotationChangeProvider.addCallback(listener) fakeExecutor.runAllReady() verify(windowManagerInterface).watchRotation(rotationWatcher.capture(), anyInt()) fakeHandler.dispatchQueuedMessages() verify(displayManager).registerDisplayListener(displayListener.capture(), any()) } @Test Loading @@ -70,15 +76,16 @@ class RotationChangeProviderTest : SysuiTestCase() { verify(listener).onRotationChanged(42) rotationChangeProvider.removeCallback(listener) fakeExecutor.runAllReady() fakeHandler.dispatchQueuedMessages() sendRotationUpdate(43) verify(windowManagerInterface).removeRotationWatcher(any()) verify(displayManager).unregisterDisplayListener(any()) verifyNoMoreInteractions(listener) } private fun sendRotationUpdate(newRotation: Int) { rotationWatcher.value.onRotationChanged(newRotation) fakeExecutor.runAllReady() whenever(display.rotation).thenReturn(newRotation) displayListener.allValues.forEach { it.onDisplayChanged(display.displayId) } fakeHandler.dispatchQueuedMessages() } }
packages/SystemUI/unfold/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ android_library { ], kotlincflags: ["-Xjvm-default=enable"], java_version: "1.8", sdk_version: "current", min_sdk_version: "current", plugins: ["dagger2-compiler"], }
packages/SystemUI/unfold/src/com/android/systemui/unfold/UnfoldSharedComponent.kt +4 −3 Original line number Diff line number Diff line Loading @@ -19,8 +19,8 @@ package com.android.systemui.unfold import android.content.ContentResolver import android.content.Context import android.hardware.SensorManager import android.hardware.display.DisplayManager import android.os.Handler import android.view.IWindowManager import com.android.systemui.unfold.config.UnfoldTransitionConfig import com.android.systemui.unfold.dagger.UnfoldMain import com.android.systemui.unfold.dagger.UnfoldSingleThreadBg Loading Loading @@ -61,7 +61,7 @@ interface UnfoldSharedComponent { @BindsInstance @UnfoldMain executor: Executor, @BindsInstance @UnfoldSingleThreadBg singleThreadBgExecutor: Executor, @BindsInstance @UnfoldTransitionATracePrefix tracingTagPrefix: String, @BindsInstance windowManager: IWindowManager, @BindsInstance displayManager: DisplayManager, @BindsInstance contentResolver: ContentResolver = context.contentResolver ): UnfoldSharedComponent } Loading @@ -84,8 +84,9 @@ interface RemoteUnfoldSharedComponent { @BindsInstance context: Context, @BindsInstance config: UnfoldTransitionConfig, @BindsInstance @UnfoldMain executor: Executor, @BindsInstance @UnfoldMain handler: Handler, @BindsInstance @UnfoldSingleThreadBg singleThreadBgExecutor: Executor, @BindsInstance windowManager: IWindowManager, @BindsInstance displayManager: DisplayManager, @BindsInstance @UnfoldTransitionATracePrefix tracingTagPrefix: String, ): RemoteUnfoldSharedComponent } Loading
packages/SystemUI/unfold/src/com/android/systemui/unfold/UnfoldTransitionFactory.kt +7 −5 Original line number Diff line number Diff line Loading @@ -19,8 +19,8 @@ package com.android.systemui.unfold import android.content.Context import android.hardware.SensorManager import android.hardware.display.DisplayManager import android.os.Handler import android.view.IWindowManager import com.android.systemui.unfold.config.UnfoldTransitionConfig import com.android.systemui.unfold.updates.FoldProvider import com.android.systemui.unfold.updates.screen.ScreenStatusProvider Loading @@ -47,7 +47,7 @@ fun createUnfoldSharedComponent( mainExecutor: Executor, singleThreadBgExecutor: Executor, tracingTagPrefix: String, windowManager: IWindowManager, displayManager: DisplayManager, ): UnfoldSharedComponent = DaggerUnfoldSharedComponent.factory() .create( Loading @@ -61,7 +61,7 @@ fun createUnfoldSharedComponent( mainExecutor, singleThreadBgExecutor, tracingTagPrefix, windowManager, displayManager, ) /** Loading @@ -73,16 +73,18 @@ fun createRemoteUnfoldSharedComponent( context: Context, config: UnfoldTransitionConfig, mainExecutor: Executor, mainHandler: Handler, singleThreadBgExecutor: Executor, tracingTagPrefix: String, windowManager: IWindowManager, displayManager: DisplayManager, ): RemoteUnfoldSharedComponent = DaggerRemoteUnfoldSharedComponent.factory() .create( context, config, mainExecutor, mainHandler, singleThreadBgExecutor, windowManager, displayManager, tracingTagPrefix, )
packages/SystemUI/unfold/src/com/android/systemui/unfold/progress/PhysicsBasedUnfoldTransitionProgressProvider.kt +1 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.systemui.unfold.progress import android.os.Trace import android.os.Trace.TRACE_TAG_APP import android.util.Log import androidx.dynamicanimation.animation.DynamicAnimation import androidx.dynamicanimation.animation.FloatPropertyCompat Loading Loading @@ -110,7 +109,7 @@ class PhysicsBasedUnfoldTransitionProgressProvider @Inject constructor( if (DEBUG) { Log.d(TAG, "onFoldUpdate = ${update.name()}") Trace.traceCounter(Trace.TRACE_TAG_APP, "fold_update", update) Trace.setCounter("fold_update", update.toLong()) } } Loading