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

Commit 5261776d authored by Benno Lin's avatar Benno Lin
Browse files

Update TAPL to operate on folder icons.

The change updates features listed as follow:

1. Create a new class for folder icon.
2. Implement function to drag a icon to the other.
   (create a folder)
3. Find folders in a workspace.

Bug: 199120092
Test: Launcher3Tests:com.android.launcher3.ui.TaplTestsLauncher3#testDragToFolder
Change-Id: I3044025f8297f6e442446d70238f4b56f38a798a
parent 85da1db1
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -41,7 +41,6 @@ public class AccessibilityManagerCompat {
    }

    /**
     *
     * @param target The view the accessibility event is initialized on.
     *               If null, this method has no effect.
     * @param type   See TYPE_ constants defined in {@link AccessibilityEvent}.
@@ -97,6 +96,16 @@ public class AccessibilityManagerCompat {
                null);
    }

    /**
     * Notify running tests of a folder opened.
     */
    public static void sendFolderOpenedEventToTest(Context context) {
        final AccessibilityManager accessibilityManager = getAccessibilityManagerForTest(context);
        if (accessibilityManager == null) return;

        sendEventToTest(accessibilityManager, context, TestProtocol.FOLDER_OPENED_MESSAGE, null);
    }

    private static void sendEventToTest(
            AccessibilityManager accessibilityManager,
            Context context, String eventTag, Bundle data) {
+4 −1
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ import com.android.launcher3.Utilities;
import com.android.launcher3.accessibility.AccessibleDragListenerAdapter;
import com.android.launcher3.accessibility.FolderAccessibilityHelper;
import com.android.launcher3.anim.KeyboardInsetAnimationCallback;
import com.android.launcher3.compat.AccessibilityManagerCompat;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.dragndrop.DragController;
import com.android.launcher3.dragndrop.DragController.DragListener;
@@ -687,6 +688,7 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo
            public void onAnimationEnd(Animator animation) {
                mState = STATE_OPEN;
                announceAccessibilityChanges();
                AccessibilityManagerCompat.sendFolderOpenedEventToTest(getContext());

                mContent.setFocusOnFirstChild();
            }
@@ -1265,7 +1267,8 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo

        PendingAddShortcutInfo pasi = d.dragInfo instanceof PendingAddShortcutInfo
                ? (PendingAddShortcutInfo) d.dragInfo : null;
        WorkspaceItemInfo pasiSi = pasi != null ? pasi.activityInfo.createWorkspaceItemInfo() : null;
        WorkspaceItemInfo pasiSi =
                pasi != null ? pasi.activityInfo.createWorkspaceItemInfo() : null;
        if (pasi != null && pasiSi == null) {
            // There is no WorkspaceItemInfo, so we have to go through a configuration activity.
            pasi.container = mInfo.id;
+10 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Insets;
import android.os.Build;
import android.os.Bundle;
@@ -148,6 +149,14 @@ public class TestInformationHandler implements ResourceBasedOverride {
                        TestProtocol.TEST_INFO_RESPONSE_FIELD, TestLogging.sHadEventsNotFromTest);
                return response;

            case TestProtocol.REQUEST_START_DRAG_THRESHOLD: {
                final Resources resources = mContext.getResources();
                response.putInt(TestProtocol.TEST_INFO_RESPONSE_FIELD,
                        resources.getDimensionPixelSize(R.dimen.deep_shortcuts_start_drag_threshold)
                                + resources.getDimensionPixelSize(R.dimen.pre_drag_view_scale));
                return response;
            }

            default:
                return null;
        }
@@ -193,6 +202,7 @@ public class TestInformationHandler implements ResourceBasedOverride {

    /**
     * Generic interface for setting a fiend in bundle
     *
     * @param <T> the type of value being set
     */
    public interface BundleSetter<T> {
+2 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ public final class TestProtocol {
    public static final String SCROLL_FINISHED_MESSAGE = "TAPL_SCROLL_FINISHED";
    public static final String PAUSE_DETECTED_MESSAGE = "TAPL_PAUSE_DETECTED";
    public static final String DISMISS_ANIMATION_ENDS_MESSAGE = "TAPL_DISMISS_ANIMATION_ENDS";
    public static final String FOLDER_OPENED_MESSAGE = "TAPL_FOLDER_OPENED";
    public static final int NORMAL_STATE_ORDINAL = 0;
    public static final int SPRING_LOADED_STATE_ORDINAL = 1;
    public static final int OVERVIEW_STATE_ORDINAL = 2;
@@ -99,6 +100,7 @@ public final class TestProtocol {
    public static final String REQUEST_CLEAR_DATA = "clear-data";
    public static final String REQUEST_IS_TABLET = "is-tablet";
    public static final String REQUEST_IS_TWO_PANELS = "is-two-panel";
    public static final String REQUEST_START_DRAG_THRESHOLD = "start-drag-threshold";
    public static final String REQUEST_GET_ACTIVITIES_CREATED_COUNT =
            "get-activities-created-count";
    public static final String REQUEST_GET_ACTIVITIES = "get-activities";
+44 −0
Original line number Diff line number Diff line
@@ -34,6 +34,8 @@ import com.android.launcher3.tapl.AllApps;
import com.android.launcher3.tapl.AppIcon;
import com.android.launcher3.tapl.AppIconMenu;
import com.android.launcher3.tapl.AppIconMenuItem;
import com.android.launcher3.tapl.Folder;
import com.android.launcher3.tapl.FolderIcon;
import com.android.launcher3.tapl.Widgets;
import com.android.launcher3.tapl.Workspace;
import com.android.launcher3.views.OptionsPopupView;
@@ -369,6 +371,48 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest {
        }
    }

    private AppIcon createShortcutIfNotExist(String name) {
        AppIcon appIcon = mLauncher.getWorkspace().tryGetWorkspaceAppIcon(name);
        if (appIcon == null) {
            AllApps allApps = mLauncher.getWorkspace().switchToAllApps();
            allApps.freeze();
            try {
                appIcon = allApps.getAppIcon(name);
                appIcon.dragToWorkspace(false, false);
            } finally {
                allApps.unfreeze();
            }
            appIcon = mLauncher.getWorkspace().getWorkspaceAppIcon(name);
        }
        return appIcon;
    }

    @Test
    @PortraitLandscape
    public void testDragToFolder() throws Exception {
        final AppIcon playStoreIcon = createShortcutIfNotExist("Play Store");
        final AppIcon gmailIcon = createShortcutIfNotExist("Gmail");

        FolderIcon folderIcon = gmailIcon.dragToIcon(playStoreIcon);

        Folder folder = folderIcon.open();
        folder.getAppIcon("Play Store");
        folder.getAppIcon("Gmail");
        Workspace workspace = folder.close();

        assertNull("Gmail should be moved to a folder.",
                workspace.tryGetWorkspaceAppIcon("Gmail"));
        assertNull("Play Store should be moved to a folder.",
                workspace.tryGetWorkspaceAppIcon("Play Store"));

        final AppIcon youTubeIcon = createShortcutIfNotExist("YouTube");

        folderIcon = youTubeIcon.dragToIcon(folderIcon);
        folder = folderIcon.open();
        folder.getAppIcon("YouTube");
        folder.close();
    }

    public static String getAppPackageName() {
        return getInstrumentation().getContext().getPackageName();
    }
Loading