Loading libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZone.kt +3 −3 Original line number Diff line number Diff line Loading @@ -57,17 +57,17 @@ sealed interface DragZone { /** Represents the bubble drag area on the screen. */ sealed class Bubble( override val bounds: Bounds.RectZone, override val dropTarget: DropTargetRect, override val dropTarget: DropTargetRect?, ) : DragZone { data class Left( override val bounds: Bounds.RectZone, override val dropTarget: DropTargetRect, override val dropTarget: DropTargetRect?, override val secondDropTarget: DropTargetRect? = null, ) : Bubble(bounds, dropTarget) data class Right( override val bounds: Bounds.RectZone, override val dropTarget: DropTargetRect, override val dropTarget: DropTargetRect?, override val secondDropTarget: DropTargetRect? = null, ) : Bubble(bounds, dropTarget) } Loading libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZoneFactory.kt +8 −4 Original line number Diff line number Diff line Loading @@ -240,8 +240,9 @@ class DragZoneFactory( dragZones.addAll(createBubbleHalfScreenDragZones(forBubbleBar = false)) } is DraggedObject.LauncherIcon -> { val showDropTarget = draggedObject.showDropTarget val showSecondDropTarget = !draggedObject.bubbleBarHasBubbles dragZones.addAll(createBubbleCornerDragZones(showSecondDropTarget)) dragZones.addAll(createBubbleCornerDragZones(showDropTarget, showSecondDropTarget)) } } return dragZones Loading Loading @@ -273,16 +274,19 @@ class DragZoneFactory( ) } private fun createBubbleCornerDragZones(showSecondDropTarget: Boolean = false): List<DragZone> { private fun createBubbleCornerDragZones( showDropTarget: Boolean = true, showSecondDropTarget: Boolean = false ): List<DragZone> { return listOf( DragZone.Bubble.Left( bounds = RectZone(getBubbleBarDropRect(isLeftSide = true)), dropTarget = expandedViewDropTargetLeft, dropTarget = if (showDropTarget) expandedViewDropTargetLeft else null, secondDropTarget = if (showSecondDropTarget) bubbleBarDropTargetLeft else null ), DragZone.Bubble.Right( bounds = RectZone(getBubbleBarDropRect(isLeftSide = false)), dropTarget = expandedViewDropTargetRight, dropTarget = if (showDropTarget) expandedViewDropTargetRight else null, secondDropTarget = if (showSecondDropTarget) bubbleBarDropTargetRight else null ) ) Loading libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DraggedObject.kt +6 −3 Original line number Diff line number Diff line Loading @@ -25,7 +25,10 @@ sealed interface DraggedObject { data class ExpandedView(val initialLocation: BubbleBarLocation) : DraggedObject // TODO(b/411505605) Remove onDropAction data class LauncherIcon(val bubbleBarHasBubbles: Boolean, val onDropAction: Runnable) : DraggedObject // TODO(b/411505605) Remove onDropAction and move showDropTarget up data class LauncherIcon( val bubbleBarHasBubbles: Boolean, val showDropTarget: Boolean = true, val onDropAction: Runnable ) : DraggedObject } libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DragZoneFactoryTest.kt +28 −0 Original line number Diff line number Diff line Loading @@ -412,10 +412,38 @@ class DragZoneFactoryTest { } } @Test fun dragZonesForLauncherIcon_bubbleBarHasNoBubblesDoNotShowDropTarget() { dragZoneFactory = DragZoneFactory( context, tabletPortrait, splitScreenModeChecker, desktopWindowModeChecker, bubbleBarPropertiesProvider, ) val dragZones = dragZoneFactory.createSortedDragZones( DraggedObject.LauncherIcon(showDropTarget = false, bubbleBarHasBubbles = false) { } ) val expectedZones: List<DragZoneVerifier> = listOf(verifyInstance<DragZone.Bubble.Left>(), verifyInstance<DragZone.Bubble.Right>()) assertThat(dragZones).hasSize(expectedZones.size) dragZones.zip(expectedZones).forEach { (zone, instanceVerifier) -> instanceVerifier(zone) zone.verifyDropZone(isPresent = false) zone.verifySecondaryDropZone(isPresent = true) } } private inline fun <reified T> verifyInstance(): DragZoneVerifier = { dragZone -> assertThat(dragZone).isInstanceOf(T::class.java) } private fun DragZone.verifyDropZone(isPresent: Boolean) { assertThat(dropTarget != null == isPresent).isTrue() } private fun DragZone.verifySecondaryDropZone(isPresent: Boolean) { assertThat(secondDropTarget != null == isPresent).isTrue() } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DropTargetManagerTest.kt +49 −12 Original line number Diff line number Diff line Loading @@ -61,6 +61,12 @@ class DropTargetManagerTest { bounds = RectZone(Rect(0, 0, 100, 100)), dropTarget = DropTargetRect(Rect(0, 0, 50, 200), cornerRadius = 30f) ) private val bubbleLeftDragZoneOnlySecondDropTarget = DragZone.Bubble.Left( bounds = RectZone(Rect(0, 0, 100, 100)), dropTarget = null, secondDropTarget = DropTargetRect(Rect(0, 250, 50, 300), cornerRadius = 25f) ) private val bubbleLeftDragZoneWithSecondDropTarget = DragZone.Bubble.Left( bounds = RectZone(Rect(0, 0, 100, 100)), Loading @@ -74,6 +80,12 @@ class DropTargetManagerTest { bounds = RectZone(Rect(200, 0, 300, 100)), dropTarget = DropTargetRect(Rect(200, 0, 280, 150), cornerRadius = 30f) ) private val bubbleRightDragZoneOnlySecondDropTarget = DragZone.Bubble.Right( bounds = RectZone(Rect(200, 0, 300, 100)), dropTarget = null, secondDropTarget = DropTargetRect(Rect(200, 200, 80, 280), cornerRadius = 25f) ) private val bubbleRightDragZoneWithSecondDropTarget = DragZone.Bubble.Right( bounds = RectZone(Rect(200, 0, 300, 100)), Loading Loading @@ -321,7 +333,7 @@ class DropTargetManagerTest { } assertThat(dropTargetView.alpha).isEqualTo(1) verifyDropTargetPosition(bubbleRightDragZone.dropTarget.rect) verifyDropTargetPosition(bubbleRightDragZone.dropTarget!!.rect) } @Test Loading Loading @@ -358,7 +370,7 @@ class DropTargetManagerTest { } assertThat(dropTargetView.alpha).isEqualTo(1) verifyDropTargetPosition(bubbleRightDragZone.dropTarget.rect) verifyDropTargetPosition(bubbleRightDragZone.dropTarget!!.rect) InstrumentationRegistry.getInstrumentation().runOnMainSync { val dragZone = dropTargetManager.onDragUpdated( Loading @@ -370,7 +382,7 @@ class DropTargetManagerTest { } assertThat(dropTargetView.alpha).isEqualTo(1) verifyDropTargetPosition(bubbleLeftDragZone.dropTarget.rect) verifyDropTargetPosition(bubbleLeftDragZone.dropTarget!!.rect) } @Test Loading Loading @@ -403,7 +415,7 @@ class DropTargetManagerTest { fun onDragUpdated_noZoneToZoneWithDropTargetView_listenerNotified() { val onDropAction = Runnable { } dropTargetManager.onDragStarted( DraggedObject.LauncherIcon(bubbleBarHasBubbles = true, onDropAction), DraggedObject.LauncherIcon(bubbleBarHasBubbles = true, onDropAction = onDropAction), listOf(bubbleLeftDragZone, bubbleRightDragZone) ) Loading Loading @@ -441,7 +453,7 @@ class DropTargetManagerTest { assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT) assertThat(dropTargetView.alpha).isEqualTo(1) assertThat(secondDropTargetView).isNull() verifyDropTargetPosition(bubbleLeftDragZone.dropTarget.rect) verifyDropTargetPosition(bubbleLeftDragZone.dropTarget!!.rect) } @Test Loading @@ -460,16 +472,41 @@ class DropTargetManagerTest { animatorTestRule.advanceTimeBy(250) } assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_LAUNCHER_ICON) assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS) assertThat(dropTargetView.alpha).isEqualTo(1) assertThat(secondDropTargetView!!.alpha).isEqualTo(1) verifyDropTargetPosition(bubbleRightDragZoneWithSecondDropTarget.dropTarget.rect) verifyDropTargetPosition(bubbleRightDragZoneWithSecondDropTarget.dropTarget!!.rect) verifyDropTargetPosition( secondDropTargetView!!, bubbleRightDragZoneWithSecondDropTarget.secondDropTarget!!.rect ) } @Test fun onDragUpdated_noZoneToZoneWithOnlySecondDropTargetView_secondDropTargetShown() { dropTargetManager.onDragStarted( DraggedObject.LauncherIcon(bubbleBarHasBubbles = false) {}, listOf(bubbleLeftDragZoneOnlySecondDropTarget, bubbleRightDragZoneOnlySecondDropTarget) ) InstrumentationRegistry.getInstrumentation().runOnMainSync { val dragZone = dropTargetManager.onDragUpdated( bubbleRightDragZoneOnlySecondDropTarget.bounds.rect.centerX(), bubbleRightDragZoneOnlySecondDropTarget.bounds.rect.centerY() ) assertThat(dragZone).isNotNull() animatorTestRule.advanceTimeBy(250) } assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS) assertThat(dropTargetView.alpha).isEqualTo(0) assertThat(secondDropTargetView!!.alpha).isEqualTo(1) verifyDropTargetPosition( secondDropTargetView!!, bubbleRightDragZoneOnlySecondDropTarget.secondDropTarget!!.rect ) } @Test fun runOnDropTargetsRemoved_dropTargetViewsAdded_notExecutedUntilAllViewsRemoved() { var runnableExecuted = false Loading @@ -478,14 +515,14 @@ class DropTargetManagerTest { DraggedObject.LauncherIcon(bubbleBarHasBubbles = false) {}, listOf(bubbleLeftDragZoneWithSecondDropTarget, bubbleRightDragZoneWithSecondDropTarget) ) assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_LAUNCHER_ICON) assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS) dropTargetManager.onDropTargetRemoved(action) assertThat(runnableExecuted).isFalse() InstrumentationRegistry.getInstrumentation().runOnMainSync { dropTargetManager.onDragEnded() } assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_LAUNCHER_ICON) assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS) assertThat(runnableExecuted).isFalse() InstrumentationRegistry.getInstrumentation().runOnMainSync { Loading Loading @@ -543,10 +580,10 @@ class DropTargetManagerTest { ) animatorTestRule.advanceTimeBy(250) } assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_LAUNCHER_ICON) assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS) assertThat(dropTargetView.alpha).isEqualTo(1) assertThat(secondDropTargetView!!.alpha).isEqualTo(1) verifyDropTargetPosition(bubbleRightDragZoneWithSecondDropTarget.dropTarget.rect) verifyDropTargetPosition(bubbleRightDragZoneWithSecondDropTarget.dropTarget!!.rect) verifyDropTargetPosition( secondDropTargetView!!, bubbleRightDragZoneWithSecondDropTarget.secondDropTarget!!.rect Loading Loading @@ -592,6 +629,6 @@ class DropTargetManagerTest { companion object { const val DROP_VIEWS_COUNT = 1 const val DROP_VIEWS_COUNT_FOR_LAUNCHER_ICON = 2 const val DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS = 2 } } No newline at end of file Loading
libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZone.kt +3 −3 Original line number Diff line number Diff line Loading @@ -57,17 +57,17 @@ sealed interface DragZone { /** Represents the bubble drag area on the screen. */ sealed class Bubble( override val bounds: Bounds.RectZone, override val dropTarget: DropTargetRect, override val dropTarget: DropTargetRect?, ) : DragZone { data class Left( override val bounds: Bounds.RectZone, override val dropTarget: DropTargetRect, override val dropTarget: DropTargetRect?, override val secondDropTarget: DropTargetRect? = null, ) : Bubble(bounds, dropTarget) data class Right( override val bounds: Bounds.RectZone, override val dropTarget: DropTargetRect, override val dropTarget: DropTargetRect?, override val secondDropTarget: DropTargetRect? = null, ) : Bubble(bounds, dropTarget) } Loading
libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZoneFactory.kt +8 −4 Original line number Diff line number Diff line Loading @@ -240,8 +240,9 @@ class DragZoneFactory( dragZones.addAll(createBubbleHalfScreenDragZones(forBubbleBar = false)) } is DraggedObject.LauncherIcon -> { val showDropTarget = draggedObject.showDropTarget val showSecondDropTarget = !draggedObject.bubbleBarHasBubbles dragZones.addAll(createBubbleCornerDragZones(showSecondDropTarget)) dragZones.addAll(createBubbleCornerDragZones(showDropTarget, showSecondDropTarget)) } } return dragZones Loading Loading @@ -273,16 +274,19 @@ class DragZoneFactory( ) } private fun createBubbleCornerDragZones(showSecondDropTarget: Boolean = false): List<DragZone> { private fun createBubbleCornerDragZones( showDropTarget: Boolean = true, showSecondDropTarget: Boolean = false ): List<DragZone> { return listOf( DragZone.Bubble.Left( bounds = RectZone(getBubbleBarDropRect(isLeftSide = true)), dropTarget = expandedViewDropTargetLeft, dropTarget = if (showDropTarget) expandedViewDropTargetLeft else null, secondDropTarget = if (showSecondDropTarget) bubbleBarDropTargetLeft else null ), DragZone.Bubble.Right( bounds = RectZone(getBubbleBarDropRect(isLeftSide = false)), dropTarget = expandedViewDropTargetRight, dropTarget = if (showDropTarget) expandedViewDropTargetRight else null, secondDropTarget = if (showSecondDropTarget) bubbleBarDropTargetRight else null ) ) Loading
libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DraggedObject.kt +6 −3 Original line number Diff line number Diff line Loading @@ -25,7 +25,10 @@ sealed interface DraggedObject { data class ExpandedView(val initialLocation: BubbleBarLocation) : DraggedObject // TODO(b/411505605) Remove onDropAction data class LauncherIcon(val bubbleBarHasBubbles: Boolean, val onDropAction: Runnable) : DraggedObject // TODO(b/411505605) Remove onDropAction and move showDropTarget up data class LauncherIcon( val bubbleBarHasBubbles: Boolean, val showDropTarget: Boolean = true, val onDropAction: Runnable ) : DraggedObject }
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DragZoneFactoryTest.kt +28 −0 Original line number Diff line number Diff line Loading @@ -412,10 +412,38 @@ class DragZoneFactoryTest { } } @Test fun dragZonesForLauncherIcon_bubbleBarHasNoBubblesDoNotShowDropTarget() { dragZoneFactory = DragZoneFactory( context, tabletPortrait, splitScreenModeChecker, desktopWindowModeChecker, bubbleBarPropertiesProvider, ) val dragZones = dragZoneFactory.createSortedDragZones( DraggedObject.LauncherIcon(showDropTarget = false, bubbleBarHasBubbles = false) { } ) val expectedZones: List<DragZoneVerifier> = listOf(verifyInstance<DragZone.Bubble.Left>(), verifyInstance<DragZone.Bubble.Right>()) assertThat(dragZones).hasSize(expectedZones.size) dragZones.zip(expectedZones).forEach { (zone, instanceVerifier) -> instanceVerifier(zone) zone.verifyDropZone(isPresent = false) zone.verifySecondaryDropZone(isPresent = true) } } private inline fun <reified T> verifyInstance(): DragZoneVerifier = { dragZone -> assertThat(dragZone).isInstanceOf(T::class.java) } private fun DragZone.verifyDropZone(isPresent: Boolean) { assertThat(dropTarget != null == isPresent).isTrue() } private fun DragZone.verifySecondaryDropZone(isPresent: Boolean) { assertThat(secondDropTarget != null == isPresent).isTrue() } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DropTargetManagerTest.kt +49 −12 Original line number Diff line number Diff line Loading @@ -61,6 +61,12 @@ class DropTargetManagerTest { bounds = RectZone(Rect(0, 0, 100, 100)), dropTarget = DropTargetRect(Rect(0, 0, 50, 200), cornerRadius = 30f) ) private val bubbleLeftDragZoneOnlySecondDropTarget = DragZone.Bubble.Left( bounds = RectZone(Rect(0, 0, 100, 100)), dropTarget = null, secondDropTarget = DropTargetRect(Rect(0, 250, 50, 300), cornerRadius = 25f) ) private val bubbleLeftDragZoneWithSecondDropTarget = DragZone.Bubble.Left( bounds = RectZone(Rect(0, 0, 100, 100)), Loading @@ -74,6 +80,12 @@ class DropTargetManagerTest { bounds = RectZone(Rect(200, 0, 300, 100)), dropTarget = DropTargetRect(Rect(200, 0, 280, 150), cornerRadius = 30f) ) private val bubbleRightDragZoneOnlySecondDropTarget = DragZone.Bubble.Right( bounds = RectZone(Rect(200, 0, 300, 100)), dropTarget = null, secondDropTarget = DropTargetRect(Rect(200, 200, 80, 280), cornerRadius = 25f) ) private val bubbleRightDragZoneWithSecondDropTarget = DragZone.Bubble.Right( bounds = RectZone(Rect(200, 0, 300, 100)), Loading Loading @@ -321,7 +333,7 @@ class DropTargetManagerTest { } assertThat(dropTargetView.alpha).isEqualTo(1) verifyDropTargetPosition(bubbleRightDragZone.dropTarget.rect) verifyDropTargetPosition(bubbleRightDragZone.dropTarget!!.rect) } @Test Loading Loading @@ -358,7 +370,7 @@ class DropTargetManagerTest { } assertThat(dropTargetView.alpha).isEqualTo(1) verifyDropTargetPosition(bubbleRightDragZone.dropTarget.rect) verifyDropTargetPosition(bubbleRightDragZone.dropTarget!!.rect) InstrumentationRegistry.getInstrumentation().runOnMainSync { val dragZone = dropTargetManager.onDragUpdated( Loading @@ -370,7 +382,7 @@ class DropTargetManagerTest { } assertThat(dropTargetView.alpha).isEqualTo(1) verifyDropTargetPosition(bubbleLeftDragZone.dropTarget.rect) verifyDropTargetPosition(bubbleLeftDragZone.dropTarget!!.rect) } @Test Loading Loading @@ -403,7 +415,7 @@ class DropTargetManagerTest { fun onDragUpdated_noZoneToZoneWithDropTargetView_listenerNotified() { val onDropAction = Runnable { } dropTargetManager.onDragStarted( DraggedObject.LauncherIcon(bubbleBarHasBubbles = true, onDropAction), DraggedObject.LauncherIcon(bubbleBarHasBubbles = true, onDropAction = onDropAction), listOf(bubbleLeftDragZone, bubbleRightDragZone) ) Loading Loading @@ -441,7 +453,7 @@ class DropTargetManagerTest { assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT) assertThat(dropTargetView.alpha).isEqualTo(1) assertThat(secondDropTargetView).isNull() verifyDropTargetPosition(bubbleLeftDragZone.dropTarget.rect) verifyDropTargetPosition(bubbleLeftDragZone.dropTarget!!.rect) } @Test Loading @@ -460,16 +472,41 @@ class DropTargetManagerTest { animatorTestRule.advanceTimeBy(250) } assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_LAUNCHER_ICON) assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS) assertThat(dropTargetView.alpha).isEqualTo(1) assertThat(secondDropTargetView!!.alpha).isEqualTo(1) verifyDropTargetPosition(bubbleRightDragZoneWithSecondDropTarget.dropTarget.rect) verifyDropTargetPosition(bubbleRightDragZoneWithSecondDropTarget.dropTarget!!.rect) verifyDropTargetPosition( secondDropTargetView!!, bubbleRightDragZoneWithSecondDropTarget.secondDropTarget!!.rect ) } @Test fun onDragUpdated_noZoneToZoneWithOnlySecondDropTargetView_secondDropTargetShown() { dropTargetManager.onDragStarted( DraggedObject.LauncherIcon(bubbleBarHasBubbles = false) {}, listOf(bubbleLeftDragZoneOnlySecondDropTarget, bubbleRightDragZoneOnlySecondDropTarget) ) InstrumentationRegistry.getInstrumentation().runOnMainSync { val dragZone = dropTargetManager.onDragUpdated( bubbleRightDragZoneOnlySecondDropTarget.bounds.rect.centerX(), bubbleRightDragZoneOnlySecondDropTarget.bounds.rect.centerY() ) assertThat(dragZone).isNotNull() animatorTestRule.advanceTimeBy(250) } assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS) assertThat(dropTargetView.alpha).isEqualTo(0) assertThat(secondDropTargetView!!.alpha).isEqualTo(1) verifyDropTargetPosition( secondDropTargetView!!, bubbleRightDragZoneOnlySecondDropTarget.secondDropTarget!!.rect ) } @Test fun runOnDropTargetsRemoved_dropTargetViewsAdded_notExecutedUntilAllViewsRemoved() { var runnableExecuted = false Loading @@ -478,14 +515,14 @@ class DropTargetManagerTest { DraggedObject.LauncherIcon(bubbleBarHasBubbles = false) {}, listOf(bubbleLeftDragZoneWithSecondDropTarget, bubbleRightDragZoneWithSecondDropTarget) ) assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_LAUNCHER_ICON) assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS) dropTargetManager.onDropTargetRemoved(action) assertThat(runnableExecuted).isFalse() InstrumentationRegistry.getInstrumentation().runOnMainSync { dropTargetManager.onDragEnded() } assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_LAUNCHER_ICON) assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS) assertThat(runnableExecuted).isFalse() InstrumentationRegistry.getInstrumentation().runOnMainSync { Loading Loading @@ -543,10 +580,10 @@ class DropTargetManagerTest { ) animatorTestRule.advanceTimeBy(250) } assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_LAUNCHER_ICON) assertThat(container.childCount).isEqualTo(DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS) assertThat(dropTargetView.alpha).isEqualTo(1) assertThat(secondDropTargetView!!.alpha).isEqualTo(1) verifyDropTargetPosition(bubbleRightDragZoneWithSecondDropTarget.dropTarget.rect) verifyDropTargetPosition(bubbleRightDragZoneWithSecondDropTarget.dropTarget!!.rect) verifyDropTargetPosition( secondDropTargetView!!, bubbleRightDragZoneWithSecondDropTarget.secondDropTarget!!.rect Loading Loading @@ -592,6 +629,6 @@ class DropTargetManagerTest { companion object { const val DROP_VIEWS_COUNT = 1 const val DROP_VIEWS_COUNT_FOR_LAUNCHER_ICON = 2 const val DROP_VIEWS_COUNT_FOR_TWO_DROP_TARGETS = 2 } } No newline at end of file