diff options
author | 2025-03-12 16:59:07 -0700 | |
---|---|---|
committer | 2025-03-13 11:20:13 -0700 | |
commit | 9dd6f00c630fb5071804002025cbeb60d2385814 (patch) | |
tree | 93a9d766adc37119ad06109ad45aa4f0659d3442 | |
parent | 620d39409e53609318b35e5c69c4cf42a549c34f (diff) |
Update BubbleBarLayerViewTest for bubble to fullscreen flag
With the new drop target manager, the left / right zones for
bubbles are different (as per UX spec) than they were before.
Updated the existing test to require bubble flags to be
disabled and added new tests that use the new zones.
Flag: com.android.wm.shell.enable_bubble_to_fullscreen
Test: atest BubbleBarLayerViewTest
Bug: 402891988
Change-Id: I0e0109d96cf083054434cde6d48f60509ffb5e00
-rw-r--r-- | libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt | 93 |
1 files changed, 90 insertions, 3 deletions
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt index 14c15210252a..90011f4018f6 100644 --- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt +++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt @@ -24,6 +24,9 @@ import android.graphics.PointF import android.graphics.Rect import android.os.Handler import android.os.UserManager +import android.platform.test.annotations.DisableFlags +import android.platform.test.annotations.EnableFlags +import android.platform.test.flag.junit.SetFlagsRule import android.view.IWindowManager import android.view.MotionEvent import android.view.View @@ -36,6 +39,7 @@ import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation import com.android.internal.logging.testing.UiEventLoggerFake import com.android.internal.protolog.ProtoLog import com.android.internal.statusbar.IStatusBarService +import com.android.wm.shell.Flags import com.android.wm.shell.R import com.android.wm.shell.ShellTaskOrganizer import com.android.wm.shell.bubbles.Bubble @@ -64,6 +68,10 @@ import com.android.wm.shell.shared.TransactionPool import com.android.wm.shell.shared.animation.PhysicsAnimatorTestUtils import com.android.wm.shell.shared.bubbles.BubbleBarLocation import com.android.wm.shell.shared.bubbles.DeviceConfig +import com.android.wm.shell.shared.bubbles.DragZone +import com.android.wm.shell.shared.bubbles.DragZoneFactory +import com.android.wm.shell.shared.bubbles.DragZoneFactory.SplitScreenModeChecker.SplitScreenMode +import com.android.wm.shell.shared.bubbles.DraggedObject import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.sysui.ShellController import com.android.wm.shell.sysui.ShellInit @@ -88,6 +96,8 @@ class BubbleBarLayerViewTest { const val SCREEN_HEIGHT = 1000 } + @get:Rule val setFlagsRule = SetFlagsRule() + @get:Rule val animatorTestRule: AnimatorTestRule = AnimatorTestRule(this) private val context = ApplicationProvider.getApplicationContext<Context>() @@ -101,6 +111,7 @@ class BubbleBarLayerViewTest { private lateinit var bgExecutor: TestShellExecutor private lateinit var bubbleLogger: BubbleLogger private lateinit var testBubblesList: MutableList<Bubble> + private lateinit var dragZoneFactory: DragZoneFactory @Before fun setUp() { @@ -134,6 +145,10 @@ class BubbleBarLayerViewTest { whenever(bubbleData.bubbles).thenReturn(testBubblesList) whenever(bubbleData.hasBubbles()).thenReturn(!testBubblesList.isEmpty()) + dragZoneFactory = DragZoneFactory(context, deviceConfig, + { SplitScreenMode.UNSUPPORTED }, + { false }) + bubbleController = createBubbleController( bubbleData, @@ -280,6 +295,7 @@ class BubbleBarLayerViewTest { assertThat(uiEventLoggerFake.logs[0]).hasBubbleInfo(bubble) } + @DisableFlags(Flags.FLAG_ENABLE_BUBBLE_TO_FULLSCREEN, Flags.FLAG_ENABLE_BUBBLE_ANYTHING) @Test fun testEventLogging_dragExpandedViewLeft() { val bubble = createBubble("first") @@ -287,7 +303,7 @@ class BubbleBarLayerViewTest { getInstrumentation().runOnMainSync { bubbleBarLayerView.showExpandedView(bubble) - bubble.bubbleBarExpandedView!!.onContentVisibilityChanged(true) + bubble.bubbleBarExpandedView!!.onContentVisibilityChanged(true /* visible */) } waitForExpandedViewAnimation() @@ -305,6 +321,7 @@ class BubbleBarLayerViewTest { assertThat(uiEventLoggerFake.logs[0]).hasBubbleInfo(bubble) } + @DisableFlags(Flags.FLAG_ENABLE_BUBBLE_TO_FULLSCREEN, Flags.FLAG_ENABLE_BUBBLE_ANYTHING) @Test fun testEventLogging_dragExpandedViewRight() { val bubble = createBubble("first") @@ -312,7 +329,7 @@ class BubbleBarLayerViewTest { getInstrumentation().runOnMainSync { bubbleBarLayerView.showExpandedView(bubble) - bubble.bubbleBarExpandedView!!.onContentVisibilityChanged(true) + bubble.bubbleBarExpandedView!!.onContentVisibilityChanged(true /* visible */) } waitForExpandedViewAnimation() @@ -330,6 +347,76 @@ class BubbleBarLayerViewTest { assertThat(uiEventLoggerFake.logs[0]).hasBubbleInfo(bubble) } + @EnableFlags(Flags.FLAG_ENABLE_BUBBLE_TO_FULLSCREEN, Flags.FLAG_ENABLE_CREATE_ANY_BUBBLE) + @Test + fun testEventLogging_dragExpandedViewLeft_bubbleAnything() { + val bubble = createBubble("first") + bubblePositioner.bubbleBarLocation = BubbleBarLocation.RIGHT + + getInstrumentation().runOnMainSync { + bubbleBarLayerView.showExpandedView(bubble) + bubble.bubbleBarExpandedView!!.onContentVisibilityChanged(true /* visible */) + } + waitForExpandedViewAnimation() + + val handleView = bubbleBarLayerView.findViewById<View>(R.id.bubble_bar_handle_view) + assertThat(handleView).isNotNull() + + val dragZones = dragZoneFactory.createSortedDragZones( + DraggedObject.ExpandedView(BubbleBarLocation.RIGHT)) + val rightDragZone = dragZones.filterIsInstance<DragZone.Bubble.Right>().first() + val rightPoint = PointF(rightDragZone.bounds.centerX().toFloat(), + rightDragZone.bounds.centerY().toFloat()) + val leftDragZone = dragZones.filterIsInstance<DragZone.Bubble.Left>().first() + val leftPoint = PointF(leftDragZone.bounds.centerX().toFloat(), + leftDragZone.bounds.centerY().toFloat()) + + // Drag from right to left + handleView.dispatchTouchEvent(0L, MotionEvent.ACTION_DOWN, rightPoint) + handleView.dispatchTouchEvent(10L, MotionEvent.ACTION_MOVE, leftPoint) + handleView.dispatchTouchEvent(20L, MotionEvent.ACTION_UP, leftPoint) + + assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1) + assertThat(uiEventLoggerFake.logs[0].eventId) + .isEqualTo(BubbleLogger.Event.BUBBLE_BAR_MOVED_LEFT_DRAG_EXP_VIEW.id) + assertThat(uiEventLoggerFake.logs[0]).hasBubbleInfo(bubble) + } + + @EnableFlags(Flags.FLAG_ENABLE_BUBBLE_TO_FULLSCREEN, Flags.FLAG_ENABLE_CREATE_ANY_BUBBLE) + @Test + fun testEventLogging_dragExpandedViewRight_bubbleAnything() { + val bubble = createBubble("first") + bubblePositioner.bubbleBarLocation = BubbleBarLocation.LEFT + + getInstrumentation().runOnMainSync { + bubbleBarLayerView.showExpandedView(bubble) + bubble.bubbleBarExpandedView!!.onContentVisibilityChanged(true /* visible */) + } + waitForExpandedViewAnimation() + + val handleView = bubbleBarLayerView.findViewById<View>(R.id.bubble_bar_handle_view) + assertThat(handleView).isNotNull() + + val dragZones = dragZoneFactory.createSortedDragZones( + DraggedObject.ExpandedView(BubbleBarLocation.LEFT)) + val rightDragZone = dragZones.filterIsInstance<DragZone.Bubble.Right>().first() + val rightPoint = PointF(rightDragZone.bounds.centerX().toFloat(), + rightDragZone.bounds.centerY().toFloat()) + val leftDragZone = dragZones.filterIsInstance<DragZone.Bubble.Left>().first() + val leftPoint = PointF(leftDragZone.bounds.centerX().toFloat(), + leftDragZone.bounds.centerY().toFloat()) + + // Drag from left to right + handleView.dispatchTouchEvent(0L, MotionEvent.ACTION_DOWN, leftPoint) + handleView.dispatchTouchEvent(10L, MotionEvent.ACTION_MOVE, rightPoint) + handleView.dispatchTouchEvent(20L, MotionEvent.ACTION_UP, rightPoint) + + assertThat(uiEventLoggerFake.numLogs()).isEqualTo(1) + assertThat(uiEventLoggerFake.logs[0].eventId) + .isEqualTo(BubbleLogger.Event.BUBBLE_BAR_MOVED_RIGHT_DRAG_EXP_VIEW.id) + assertThat(uiEventLoggerFake.logs[0]).hasBubbleInfo(bubble) + } + @Test fun testUpdateExpandedView_updateLocation() { bubblePositioner.bubbleBarLocation = BubbleBarLocation.RIGHT @@ -385,7 +472,7 @@ class BubbleBarLayerViewTest { bubbleLogger, ) // Mark visible so we don't wait for task view before animations can start - bubbleBarExpandedView.onContentVisibilityChanged(true) + bubbleBarExpandedView.onContentVisibilityChanged(true /* visible */) val viewInfo = FakeBubbleFactory.createViewInfo(bubbleBarExpandedView) return FakeBubbleFactory.createChatBubble(context, key, viewInfo).also { |