diff --git a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java index 9dca24bb28..64ab206830 100644 --- a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java +++ b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java @@ -16,7 +16,6 @@ package com.android.launcher3.ui.widget; import static com.android.launcher3.ui.TaplTestsLauncher3.getAppPackageName; - import static org.junit.Assert.assertNotNull; import android.platform.test.annotations.PlatinumTest; @@ -96,4 +95,26 @@ public class AddWidgetTest extends AbstractLauncherUiTest { mLauncher.getWorkspace().getWorkspaceAppIcon("Shortcut") .launch(getAppPackageName()); } + + /** + * Test dragging a widget to the workspace and resize it. + */ + @Test + public void testResizeWidget() throws Throwable { + new FavoriteItemsTransaction(mTargetContext).commitAndLoadHome(mLauncher); + + waitForLauncherCondition("Workspace didn't finish loading", l -> !l.isWorkspaceLoading()); + + final LauncherAppWidgetProviderInfo widgetInfo = + TestViewHelpers.findWidgetProvider(false /* hasConfigureScreen */); + + WidgetResizeFrame resizeFrame = mLauncher + .getWorkspace() + .openAllWidgets() + .getWidget(widgetInfo.getLabel(mTargetContext.getPackageManager())) + .dragWidgetToWorkspace(); + + assertNotNull("Widget resize frame not shown after widget add", resizeFrame); + resizeFrame.resize(); + } } diff --git a/tests/tapl/com/android/launcher3/tapl/WidgetResizeFrame.java b/tests/tapl/com/android/launcher3/tapl/WidgetResizeFrame.java index 8f51d04c3d..ec1cbd8ec1 100644 --- a/tests/tapl/com/android/launcher3/tapl/WidgetResizeFrame.java +++ b/tests/tapl/com/android/launcher3/tapl/WidgetResizeFrame.java @@ -15,6 +15,16 @@ */ package com.android.launcher3.tapl; +import static com.android.launcher3.tapl.Launchable.DEFAULT_DRAG_STEPS; +import static org.junit.Assert.assertTrue; + +import android.graphics.Point; +import android.graphics.Rect; +import android.os.SystemClock; +import android.view.MotionEvent; + +import androidx.test.uiautomator.UiObject2; + /** The resize frame that is shown for a widget on the workspace. */ public class WidgetResizeFrame { @@ -34,4 +44,36 @@ public class WidgetResizeFrame { mLauncher.getDevice().pressHome(); } } + + /** Resizes the widget to double its height, and returns the resize frame. */ + public WidgetResizeFrame resize() { + try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck(); + LauncherInstrumentation.Closable c = mLauncher.addContextLayer( + "want to resize the widget frame.")) { + UiObject2 widget = mLauncher.waitForLauncherObject("widget_resize_frame"); + UiObject2 bottomResizeHandle = + mLauncher.waitForLauncherObject("widget_resize_bottom_handle"); + Rect originalWidgetSize = widget.getVisibleBounds(); + Point targetStart = bottomResizeHandle.getVisibleCenter(); + Point targetDest = bottomResizeHandle.getVisibleCenter(); + targetDest.offset(0, originalWidgetSize.height()); + + final long downTime = SystemClock.uptimeMillis(); + mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_DOWN, targetStart, + LauncherInstrumentation.GestureScope.DONT_EXPECT_PILFER); + mLauncher.movePointer(targetStart, targetDest, DEFAULT_DRAG_STEPS, + true, downTime, downTime, true, + LauncherInstrumentation.GestureScope.DONT_EXPECT_PILFER); + mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_UP, targetDest, + LauncherInstrumentation.GestureScope.DONT_EXPECT_PILFER); + + try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer( + "want to return resized widget resize frame")) { + float newHeight = mLauncher.waitForLauncherObject( + "widget_resize_frame").getVisibleBounds().height(); + assertTrue("Widget not resized.", newHeight >= originalWidgetSize.height() * 2); + return this; + } + } + } }