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

Commit 9d7ff6f0 authored by Pat Manning's avatar Pat Manning
Browse files

Add widget resize CUJ test.

Fix: 241385885
Test: TaplTestsLauncher3
Change-Id: I9e6a3fe5c8371b362afb8c5361d8b6b86e8e62d6
parent 2a0d7b5a
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;
            }
        }
    }
}