Fix NPE in LauncherSwipeHandlerV2Test.setup (follow up)
Since there is no display being used for LauncherSwipeHandlerV2Test, then no RecentsDisplayResource gets created for the DEFAULT_DISPLAY (and so RecentsDisplayModel.getFallbackWindowInterface returns null). Adding a mock display
Flag: com.android.launcher3.enable_fallback_overview_in_window
Bug: 377678992
Test: pre/postsubmit
Change-Id: I43754eafb4f6a9b393e6a7b7fbd5b27903d2f9b9
diff --git a/quickstep/src/com/android/quickstep/fallback/window/RecentsDisplayModel.kt b/quickstep/src/com/android/quickstep/fallback/window/RecentsDisplayModel.kt
index 505f2cb..e7e9f51 100644
--- a/quickstep/src/com/android/quickstep/fallback/window/RecentsDisplayModel.kt
+++ b/quickstep/src/com/android/quickstep/fallback/window/RecentsDisplayModel.kt
@@ -17,7 +17,6 @@
package com.android.quickstep.fallback.window
import android.content.Context
-import android.os.Handler
import android.util.Log
import android.view.Display
import com.android.launcher3.Flags
@@ -25,7 +24,7 @@
import com.android.launcher3.dagger.LauncherAppSingleton
import com.android.launcher3.util.DaggerSingletonObject
import com.android.launcher3.util.DaggerSingletonTracker
-import com.android.launcher3.util.Executors.MAIN_EXECUTOR
+import com.android.launcher3.util.Executors
import com.android.quickstep.DisplayModel
import com.android.quickstep.FallbackWindowInterface
import com.android.quickstep.dagger.QuickstepBaseAppComponent
@@ -51,15 +50,13 @@
init {
if (Flags.enableFallbackOverviewInWindow() || Flags.enableLauncherOverviewInWindow()) {
- MAIN_EXECUTOR.execute {
- displayManager.registerDisplayListener(displayListener, Handler.getMain())
- // In the scenario where displays were added before this display listener was
- // registered, we should store the RecentsDisplayResources for those displays
- // directly.
- displayManager.displays
- .filter { getDisplayResource(it.displayId) == null }
- .forEach { storeRecentsDisplayResource(it.displayId, it) }
- }
+ displayManager.registerDisplayListener(displayListener, Executors.MAIN_EXECUTOR.handler)
+ // In the scenario where displays were added before this display listener was
+ // registered, we should store the RecentsDisplayResources for those displays
+ // directly.
+ displayManager.displays
+ .filter { getDisplayResource(it.displayId) == null }
+ .forEach { storeRecentsDisplayResource(it.displayId, it) }
tracker.addCloseable { destroy() }
}
}
diff --git a/quickstep/tests/multivalentTests/src/com/android/quickstep/LauncherSwipeHandlerV2Test.kt b/quickstep/tests/multivalentTests/src/com/android/quickstep/LauncherSwipeHandlerV2Test.kt
index 0738336..2b337c7 100644
--- a/quickstep/tests/multivalentTests/src/com/android/quickstep/LauncherSwipeHandlerV2Test.kt
+++ b/quickstep/tests/multivalentTests/src/com/android/quickstep/LauncherSwipeHandlerV2Test.kt
@@ -17,6 +17,12 @@
package com.android.quickstep
import android.graphics.PointF
+import android.hardware.display.DisplayManager
+import android.hardware.display.DisplayManagerGlobal
+import android.view.Display
+import android.view.Display.DEFAULT_DISPLAY
+import android.view.DisplayAdjustments.DEFAULT_DISPLAY_ADJUSTMENTS
+import android.view.DisplayInfo
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.launcher3.R
@@ -39,6 +45,7 @@
import org.mockito.junit.MockitoJUnit
import org.mockito.kotlin.eq
import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -63,8 +70,21 @@
private val flingSpeed =
-(sandboxContext.resources.getDimension(R.dimen.quickstep_fling_threshold_speed) + 1)
+ private val displayManager: DisplayManager =
+ sandboxContext.spyService(DisplayManager::class.java)
+
@Before
fun setup() {
+ val display =
+ Display(
+ DisplayManagerGlobal.getInstance(),
+ DEFAULT_DISPLAY,
+ DisplayInfo(),
+ DEFAULT_DISPLAY_ADJUSTMENTS,
+ )
+ whenever(displayManager.getDisplay(eq(DEFAULT_DISPLAY))).thenReturn(display)
+ whenever(displayManager.displays).thenReturn(arrayOf(display))
+
sandboxContext.initDaggerComponent(
DaggerTestComponent.builder().bindSystemUiProxy(systemUiProxy)
)
@@ -72,8 +92,10 @@
RotationTouchHelper.INSTANCE,
mock(RotationTouchHelper::class.java),
)
- val deviceState = mock(RecentsAnimationDeviceState::class.java)
- sandboxContext.putObject(RecentsAnimationDeviceState.INSTANCE, deviceState)
+ sandboxContext.putObject(
+ RecentsAnimationDeviceState.INSTANCE,
+ mock(RecentsAnimationDeviceState::class.java),
+ )
gestureState = spy(GestureState(OverviewComponentObserver.INSTANCE.get(sandboxContext), 0))