Merge "Add more tests for {request,hide}Window." into main
diff --git a/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayControllerTest.kt b/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayControllerTest.kt
index 8768cb9..eebd8f9 100644
--- a/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayControllerTest.kt
+++ b/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayControllerTest.kt
@@ -30,6 +30,7 @@
 import com.android.launcher3.taskbar.TaskbarUnitTestRule.InjectController
 import com.android.launcher3.util.LauncherMultivalentJUnit
 import com.android.launcher3.util.LauncherMultivalentJUnit.EmulatedDevices
+import com.android.launcher3.views.BaseDragLayer
 import com.android.systemui.shared.system.TaskStackChangeListeners
 import com.google.common.truth.Truth.assertThat
 import org.junit.Rule
@@ -66,6 +67,17 @@
 
     @Test
     @UiThreadTest
+    fun testRequestWindow_afterHidingOverlay_createsNewWindow() {
+        val context1 = overlayController.requestWindow()
+        TestOverlayView.show(context1)
+        overlayController.hideWindow()
+
+        val context2 = overlayController.requestWindow()
+        assertThat(context1).isNotSameInstanceAs(context2)
+    }
+
+    @Test
+    @UiThreadTest
     fun testRequestWindow_addsProxyView() {
         TestOverlayView.show(overlayController.requestWindow())
         assertThat(hasOpenView(taskbarContext, TYPE_TASKBAR_OVERLAY_PROXY)).isTrue()
@@ -80,6 +92,17 @@
     }
 
     @Test
+    fun testRequestWindow_attachesDragLayer() {
+        lateinit var dragLayer: BaseDragLayer<*>
+        getInstrumentation().runOnMainSync {
+            dragLayer = overlayController.requestWindow().dragLayer
+        }
+
+        // Allow drag layer to attach before checking.
+        getInstrumentation().runOnMainSync { assertThat(dragLayer.isAttachedToWindow).isTrue() }
+    }
+
+    @Test
     @UiThreadTest
     fun testHideWindow_closesOverlay() {
         val overlay = TestOverlayView.show(overlayController.requestWindow())
@@ -88,6 +111,20 @@
     }
 
     @Test
+    fun testHideWindow_detachesDragLayer() {
+        lateinit var dragLayer: BaseDragLayer<*>
+        getInstrumentation().runOnMainSync {
+            dragLayer = overlayController.requestWindow().dragLayer
+        }
+
+        // Wait for drag layer to be attached to window before hiding.
+        getInstrumentation().runOnMainSync {
+            overlayController.hideWindow()
+            assertThat(dragLayer.isAttachedToWindow).isFalse()
+        }
+    }
+
+    @Test
     @UiThreadTest
     fun testTwoOverlays_closeOne_windowStaysOpen() {
         val context = overlayController.requestWindow()