Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f5a29eaf authored by Pat Manning's avatar Pat Manning Committed by Android (Google) Code Review
Browse files

Merge "Add widget resize CUJ test." into main

parents 793a9d99 9d7ff6f0
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -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();
    }
}
+42 −0
Original line number Diff line number Diff line
@@ -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;
            }
        }
    }
}