Merge "Update task bar height update logic to consider screen rotation cases" into main
diff --git a/Android.bp b/Android.bp
index e2dd48d..75902c8 100644
--- a/Android.bp
+++ b/Android.bp
@@ -107,10 +107,10 @@
         "launcher-testing-shared",
     ],
     srcs: [
-        "tests/tapl/**/*.java",
+        "tests/multivalentTests/tapl/**/*.java",
     ],
     resource_dirs: [],
-    manifest: "tests/tapl/AndroidManifest.xml",
+    manifest: "tests/multivalentTests/tapl/AndroidManifest.xml",
     platform_apis: true,
 }
 
diff --git a/aconfig/Android.bp b/aconfig/Android.bp
index 5413601..dc30a35 100644
--- a/aconfig/Android.bp
+++ b/aconfig/Android.bp
@@ -20,7 +20,6 @@
 aconfig_declarations {
     name: "com_android_launcher3_flags",
     package: "com.android.launcher3",
-    container: "system",
     srcs: ["**/*.aconfig"],
 }
 
diff --git a/aconfig/launcher.aconfig b/aconfig/launcher.aconfig
index f34105a..98dd4d6 100644
--- a/aconfig/launcher.aconfig
+++ b/aconfig/launcher.aconfig
@@ -1,5 +1,4 @@
 package: "com.android.launcher3"
-container: "system"
 
 flag {
     name: "enable_expanding_pause_work_button"
diff --git a/aconfig/launcher_search.aconfig b/aconfig/launcher_search.aconfig
index bdce0f3..97e56b7 100644
--- a/aconfig/launcher_search.aconfig
+++ b/aconfig/launcher_search.aconfig
@@ -1,5 +1,4 @@
 package: "com.android.launcher3"
-container: "system"
 
 flag {
     name: "enable_private_space"
diff --git a/go/quickstep/src/com/android/launcher3/AppSharing.java b/go/quickstep/src/com/android/launcher3/AppSharing.java
index 78524d1..e15b132 100644
--- a/go/quickstep/src/com/android/launcher3/AppSharing.java
+++ b/go/quickstep/src/com/android/launcher3/AppSharing.java
@@ -31,6 +31,8 @@
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
 import android.widget.Toast;
 
 import androidx.core.content.FileProvider;
@@ -45,6 +47,9 @@
 import com.android.launcher3.views.ActivityContext;
 
 import java.io.File;
+import java.util.Collections;
+import java.util.Set;
+import java.util.WeakHashMap;
 
 /**
  * Defines the Share system shortcut and its factory.
@@ -112,6 +117,9 @@
         private final PopupDataProvider mPopupDataProvider;
         private final boolean mSharingEnabledForUser;
 
+        private final Set<View> mBoundViews = Collections.newSetFromMap(new WeakHashMap<>());
+        private boolean mIsEnabled = true;
+
         public Share(Launcher target, ItemInfo itemInfo, View originalView) {
             super(R.drawable.ic_share, R.string.app_share_drop_target_label, target, itemInfo,
                     originalView);
@@ -128,10 +136,23 @@
         }
 
         @Override
+        public void setIconAndLabelFor(View iconView, TextView labelView) {
+            super.setIconAndLabelFor(iconView, labelView);
+            mBoundViews.add(iconView);
+            mBoundViews.add(labelView);
+        }
+
+        @Override
+        public void setIconAndContentDescriptionFor(ImageView view) {
+            super.setIconAndContentDescriptionFor(view);
+            mBoundViews.add(view);
+        }
+
+        @Override
         public void onClick(View view) {
             ActivityContext.lookupContext(view.getContext())
                     .getStatsLogManager().logger().log(LAUNCHER_SYSTEM_SHORTCUT_APP_SHARE_TAP);
-            if (!isEnabled()) {
+            if (!mIsEnabled) {
                 showCannotShareToast(view.getContext());
                 return;
             }
@@ -179,7 +200,6 @@
                 return;
             }
             checkShareability(/* requestUpdateIfUnknown */ false);
-            mTarget.runOnUiThread(mPopupDataProvider::redrawSystemShortcuts);
         }
 
         private void checkShareability(boolean requestUpdateIfUnknown) {
@@ -209,6 +229,17 @@
             int duration = Toast.LENGTH_SHORT;
             Toast.makeText(context, text, duration).show();
         }
+
+        public void setEnabled(boolean isEnabled) {
+            if (mIsEnabled != isEnabled) {
+                mIsEnabled = isEnabled;
+                mBoundViews.forEach(v -> v.setEnabled(isEnabled));
+            }
+        }
+
+        public boolean isEnabled() {
+            return mIsEnabled;
+        }
     }
 
     /**
diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
index 8c9dc6a..656af31 100644
--- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
+++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
@@ -93,6 +93,7 @@
 import android.os.UserHandle;
 import android.provider.Settings;
 import android.provider.Settings.Global;
+import android.util.Log;
 import android.util.Pair;
 import android.util.Size;
 import android.view.CrossWindowBlurListeners;
@@ -1764,6 +1765,7 @@
                 RemoteAnimationTarget[] wallpaperTargets,
                 RemoteAnimationTarget[] nonAppTargets,
                 LauncherAnimationRunner.AnimationResult result) {
+            Log.d("b/318394698", "AppLaunchAnimationRunner: onAnimationStart");
             AnimatorSet anim = new AnimatorSet();
             boolean launcherClosing =
                     launcherIsATargetWithMode(appTargets, MODE_CLOSING);
@@ -1799,6 +1801,7 @@
 
         @Override
         public void onAnimationCancelled() {
+            Log.d("b/318394698", "AppLaunchAnimationRunner: onAnimationCancelled");
             mOnEndCallback.executeAllAndDestroy();
         }
     }
diff --git a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
index fd0d655..f258b47 100644
--- a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
@@ -155,7 +155,7 @@
         });
         initRegionSampler();
         if (mActivity.isPhoneGestureNavMode()) {
-            onIsStashedChanged();
+            onIsStashedChanged(true);
         }
     }
 
@@ -238,8 +238,8 @@
     }
 
     /** Called when taskbar is stashed or unstashed. */
-    public void onIsStashedChanged() {
-        mIsStashed = isStashedHandleVisible();
+    public void onIsStashedChanged(boolean isStashed) {
+        mIsStashed = isStashed;
         updateSamplingState();
     }
 
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java
index a667dca..ca192c8 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java
@@ -40,7 +40,6 @@
 import com.android.launcher3.notification.NotificationListener;
 import com.android.launcher3.popup.PopupContainerWithArrow;
 import com.android.launcher3.popup.PopupDataProvider;
-import com.android.launcher3.popup.PopupLiveUpdateHandler;
 import com.android.launcher3.popup.SystemShortcut;
 import com.android.launcher3.shortcuts.DeepShortcutView;
 import com.android.launcher3.splitscreen.SplitShortcut;
@@ -166,13 +165,6 @@
                     R.layout.popup_container, context.getDragLayer(), false);
         container.populateAndShowRows(icon, deepShortcutCount, systemShortcuts);
 
-        container.addOnAttachStateChangeListener(
-                new PopupLiveUpdateHandler<BaseTaskbarContext>(context, container) {
-                    @Override
-                    protected void showPopupContainerForIcon(BubbleTextView originalIcon) {
-                        showForIcon(originalIcon);
-                    }
-                });
         // TODO (b/198438631): configure for taskbar/context
         container.setPopupItemDragHandler(new TaskbarPopupItemDragHandler());
         mControllers.taskbarDragController.addDragListener(container);
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
index eced202..c883759 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
@@ -590,7 +590,7 @@
             mAnimator.addListener(AnimatorListeners.forEndCallback(() -> {
                 mAnimator = null;
                 mIsStashed = isStashed;
-                onIsStashedChanged();
+                onIsStashedChanged(mIsStashed);
             }));
             return;
         }
@@ -605,7 +605,7 @@
             @Override
             public void onAnimationStart(Animator animation) {
                 mIsStashed = isStashed;
-                onIsStashedChanged();
+                onIsStashedChanged(mIsStashed);
 
                 cancelTimeoutIfExists();
             }
@@ -830,9 +830,10 @@
                 .setDuration(TASKBAR_HINT_STASH_DURATION).start();
     }
 
-    private void onIsStashedChanged() {
+    private void onIsStashedChanged(boolean isStashed) {
         mControllers.runAfterInit(() -> {
-            mControllers.stashedHandleViewController.onIsStashedChanged();
+            mControllers.stashedHandleViewController.onIsStashedChanged(
+                    isStashed && supportsVisualStashing());
             mControllers.taskbarInsetsController.onTaskbarOrBubblebarWindowHeightOrInsetsChanged();
         });
     }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
index f0ab08c..c3bcde0 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
@@ -365,6 +365,8 @@
     public RunnableList startActivitySafely(View v, Intent intent, ItemInfo item) {
         // Only pause is taskbar controller is not present until the transition (if it exists) ends
         mHotseatPredictionController.setPauseUIUpdate(getTaskbarUIController() == null);
+        Log.d("b/318394698", "startActivitySafely being run, getTaskbarUIController is: "
+                + getTaskbarUIController());
         RunnableList result = super.startActivitySafely(v, intent, item);
         if (result == null) {
             mHotseatPredictionController.setPauseUIUpdate(false);
diff --git a/src/com/android/launcher3/popup/LauncherPopupLiveUpdateHandler.java b/src/com/android/launcher3/popup/LauncherPopupLiveUpdateHandler.java
index c0a04b1..89b5ba1 100644
--- a/src/com/android/launcher3/popup/LauncherPopupLiveUpdateHandler.java
+++ b/src/com/android/launcher3/popup/LauncherPopupLiveUpdateHandler.java
@@ -87,9 +87,4 @@
             }
         }
     }
-
-    @Override
-    protected void showPopupContainerForIcon(BubbleTextView originalIcon) {
-        PopupContainerWithArrow.showForIcon(originalIcon);
-    }
 }
diff --git a/src/com/android/launcher3/popup/PopupDataProvider.java b/src/com/android/launcher3/popup/PopupDataProvider.java
index 962dffd..5f17959 100644
--- a/src/com/android/launcher3/popup/PopupDataProvider.java
+++ b/src/com/android/launcher3/popup/PopupDataProvider.java
@@ -241,13 +241,6 @@
         writer.println(prefix + "\tmPackageUserToDotInfos:" + mPackageUserToDotInfos);
     }
 
-    /**
-     * Tells the listener that the system shortcuts have been updated, causing them to be redrawn.
-     */
-    public void redrawSystemShortcuts() {
-        mChangeListener.onSystemShortcutsUpdated();
-    }
-
     public interface PopupDataChangeListener {
 
         PopupDataChangeListener INSTANCE = new PopupDataChangeListener() { };
@@ -256,8 +249,5 @@
 
         /** A callback to get notified when recommended widgets are bound. */
         default void onRecommendedWidgetsBound() { }
-
-        /** A callback to get notified when system shortcuts have been updated. */
-        default void onSystemShortcutsUpdated() { }
     }
 }
diff --git a/src/com/android/launcher3/popup/PopupLiveUpdateHandler.java b/src/com/android/launcher3/popup/PopupLiveUpdateHandler.java
index 9d6f2a5..4c94f94 100644
--- a/src/com/android/launcher3/popup/PopupLiveUpdateHandler.java
+++ b/src/com/android/launcher3/popup/PopupLiveUpdateHandler.java
@@ -18,7 +18,6 @@
 import android.content.Context;
 import android.view.View;
 
-import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.views.ActivityContext;
 
 /**
@@ -56,12 +55,4 @@
             popupDataProvider.setChangeListener(null);
         }
     }
-
-    @Override
-    public void onSystemShortcutsUpdated() {
-        mPopupContainerWithArrow.close(true);
-        showPopupContainerForIcon(mPopupContainerWithArrow.getOriginalIcon());
-    }
-
-    protected abstract void showPopupContainerForIcon(BubbleTextView originalIcon);
 }
diff --git a/src/com/android/launcher3/popup/RemoteActionShortcut.java b/src/com/android/launcher3/popup/RemoteActionShortcut.java
index eab0969..8df58d2 100644
--- a/src/com/android/launcher3/popup/RemoteActionShortcut.java
+++ b/src/com/android/launcher3/popup/RemoteActionShortcut.java
@@ -119,9 +119,4 @@
                     .show();
         }
     }
-
-    @Override
-    public boolean isLeftGroup() {
-        return true;
-    }
 }
diff --git a/src/com/android/launcher3/popup/SystemShortcut.java b/src/com/android/launcher3/popup/SystemShortcut.java
index fa7700b..3030ed4 100644
--- a/src/com/android/launcher3/popup/SystemShortcut.java
+++ b/src/com/android/launcher3/popup/SystemShortcut.java
@@ -49,7 +49,6 @@
 public abstract class SystemShortcut<T extends Context & ActivityContext> extends ItemInfo
         implements View.OnClickListener {
 
-    private static final String TAG = SystemShortcut.class.getSimpleName();
     private final int mIconResId;
     protected final int mLabelResId;
     protected int mAccessibilityActionId;
@@ -58,11 +57,6 @@
     protected final ItemInfo mItemInfo;
     protected final View mOriginalView;
 
-    /**
-     * Indicates if it's invokable or not through some disabled UI
-     */
-    private boolean isEnabled = true;
-
     public SystemShortcut(int iconResId, int labelResId, T target, ItemInfo itemInfo,
             View originalView) {
         mIconResId = iconResId;
@@ -82,24 +76,14 @@
         mOriginalView = other.mOriginalView;
     }
 
-    /**
-     * Should be in the left group of icons in app's context menu header.
-     */
-    public boolean isLeftGroup() {
-        return false;
-    }
-
     public void setIconAndLabelFor(View iconView, TextView labelView) {
         iconView.setBackgroundResource(mIconResId);
-        iconView.setEnabled(isEnabled);
         labelView.setText(mLabelResId);
-        labelView.setEnabled(isEnabled);
     }
 
     public void setIconAndContentDescriptionFor(ImageView view) {
         view.setImageResource(mIconResId);
         view.setContentDescription(view.getContext().getText(mLabelResId));
-        view.setEnabled(isEnabled);
     }
 
     public AccessibilityNodeInfo.AccessibilityAction createAccessibilityAction(Context context) {
@@ -107,14 +91,6 @@
                 mAccessibilityActionId, context.getText(mLabelResId));
     }
 
-    public void setEnabled(boolean enabled) {
-        isEnabled = enabled;
-    }
-
-    public boolean isEnabled() {
-        return isEnabled;
-    }
-
     public boolean hasHandlerForAction(int action) {
         return mAccessibilityActionId == action;
     }
diff --git a/tests/Android.bp b/tests/Android.bp
index dd0ba9e..a236954 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -22,7 +22,9 @@
     name: "launcher-tests-src",
     srcs: [
       "src/**/*.java",
-      "src/**/*.kt"
+      "src/**/*.kt",
+      "multivalentTests/src/**/*.java",
+      "multivalentTests/src/**/*.kt",
     ],
     exclude_srcs: [
         ":launcher-non-quickstep-tests-src"
@@ -31,25 +33,27 @@
 
 // Source code used for screenshot tests
 filegroup {
-    name: "launcher-image-tests-src",
+    name: "launcher-image-tests-helpers",
     srcs: [
-      "src/com/android/launcher3/celllayout/board/*.java",
-      "src/com/android/launcher3/celllayout/board/*.kt",
-      "src/com/android/launcher3/celllayout/FavoriteItemsTransaction.java",
-      "src/com/android/launcher3/ui/AbstractLauncherUiTest.java",
-      "src/com/android/launcher3/ui/PortraitLandscapeRunner.java",
-      "src/com/android/launcher3/ui/TestViewHelpers.java",
-      "src/com/android/launcher3/util/LauncherLayoutBuilder.java",
-      "src/com/android/launcher3/util/ModelTestExtensions.kt",
-      "src/com/android/launcher3/util/TestConstants.java",
-      "src/com/android/launcher3/util/TestUtil.java",
-      "src/com/android/launcher3/util/Wait.java",
-      "src/com/android/launcher3/util/WidgetUtils.java",
-      "src/com/android/launcher3/util/rule/*.java",
-      "src/com/android/launcher3/util/rule/*.kt",
-      "src/com/android/launcher3/util/viewcapture_analysis/*.java",
-      "src/com/android/launcher3/testcomponent/*.java",
-      "src/com/android/launcher3/testcomponent/*.kt",
+      "multivalentTests/src/com/android/launcher3/celllayout/board/*.java",
+      "multivalentTests/src/com/android/launcher3/celllayout/board/*.kt",
+      "multivalentTests/src/com/android/launcher3/celllayout/FavoriteItemsTransaction.java",
+      "multivalentTests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java",
+      "multivalentTests/src/com/android/launcher3/ui/PortraitLandscapeRunner.java",
+      "multivalentTests/src/com/android/launcher3/ui/TestViewHelpers.java",
+      "multivalentTests/src/com/android/launcher3/util/LauncherLayoutBuilder.java",
+      "multivalentTests/src/com/android/launcher3/util/ModelTestExtensions.kt",
+      "multivalentTests/src/com/android/launcher3/util/TestConstants.java",
+      "multivalentTests/src/com/android/launcher3/util/TestUtil.java",
+      "multivalentTests/src/com/android/launcher3/util/Wait.java",
+      "multivalentTests/src/com/android/launcher3/util/WidgetUtils.java",
+      "multivalentTests/src/com/android/launcher3/util/rule/*.java",
+      "multivalentTests/src/com/android/launcher3/util/rule/*.kt",
+      "multivalentTests/src/com/android/launcher3/util/rule/*.java",
+      "multivalentTests/src/com/android/launcher3/util/rule/*.kt",
+      "multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/*.java",
+      "multivalentTests/src/com/android/launcher3/testcomponent/*.java",
+      "multivalentTests/src/com/android/launcher3/testcomponent/*.kt",
     ],
 }
 
@@ -71,30 +75,30 @@
       "src/com/android/launcher3/appiconmenu/TaplAppIconMenuTest.java",
       "src/com/android/launcher3/dragging/TaplDragTest.java",
       "src/com/android/launcher3/dragging/TaplUninstallRemoveTest.java",
-      "src/com/android/launcher3/ui/AbstractLauncherUiTest.java",
-      "src/com/android/launcher3/ui/PortraitLandscapeRunner.java",
+      "multivalentTests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java",
+      "multivalentTests/src/com/android/launcher3/ui/PortraitLandscapeRunner.java",
       "src/com/android/launcher3/ui/TaplTestsLauncher3Test.java",
       "src/com/android/launcher3/ui/widget/TaplWidgetPickerTest.java",
       "src/com/android/launcher3/ui/workspace/TaplWorkspaceTest.java",
-      "src/com/android/launcher3/util/LauncherLayoutBuilder.java",
-      "src/com/android/launcher3/util/TestConstants.java",
-      "src/com/android/launcher3/util/TestUtil.java",
-      "src/com/android/launcher3/util/Wait.java",
-      "src/com/android/launcher3/util/WidgetUtils.java",
-      "src/com/android/launcher3/util/rule/FailureWatcher.java",
-      "src/com/android/launcher3/util/rule/ViewCaptureRule.kt",
-      "src/com/android/launcher3/util/rule/SamplerRule.java",
-      "src/com/android/launcher3/util/rule/ScreenRecordRule.java",
-      "src/com/android/launcher3/util/rule/ShellCommandRule.java",
-      "src/com/android/launcher3/util/rule/TestIsolationRule.java",
-      "src/com/android/launcher3/util/rule/TestStabilityRule.java",
-      "src/com/android/launcher3/util/viewcapture_analysis/*.java",
-      "src/com/android/launcher3/testcomponent/BaseTestingActivity.java",
-      "src/com/android/launcher3/testcomponent/OtherBaseTestingActivity.java",
-      "src/com/android/launcher3/testcomponent/CustomShortcutConfigActivity.java",
-      "src/com/android/launcher3/testcomponent/TestCommandReceiver.java",
-      "src/com/android/launcher3/testcomponent/TestLauncherActivity.java",
-      "src/com/android/launcher3/testcomponent/ImeTestActivity.java",
+      "multivalentTests/src/com/android/launcher3/util/LauncherLayoutBuilder.java",
+      "multivalentTests/src/com/android/launcher3/util/TestConstants.java",
+      "multivalentTests/src/com/android/launcher3/util/TestUtil.java",
+      "multivalentTests/src/com/android/launcher3/util/Wait.java",
+      "multivalentTests/src/com/android/launcher3/util/WidgetUtils.java",
+      "multivalentTests/src/com/android/launcher3/util/rule/FailureWatcher.java",
+      "multivalentTests/src/com/android/launcher3/util/rule/ViewCaptureRule.kt",
+      "multivalentTests/src/com/android/launcher3/util/rule/SamplerRule.java",
+      "multivalentTests/src/com/android/launcher3/util/rule/ScreenRecordRule.java",
+      "multivalentTests/src/com/android/launcher3/util/rule/ShellCommandRule.java",
+      "multivalentTests/src/com/android/launcher3/util/rule/TestIsolationRule.java",
+      "multivalentTests/src/com/android/launcher3/util/rule/TestStabilityRule.java",
+      "multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/*.java",
+      "multivalentTests/src/com/android/launcher3/testcomponent/BaseTestingActivity.java",
+      "multivalentTests/src/com/android/launcher3/testcomponent/OtherBaseTestingActivity.java",
+      "multivalentTests/src/com/android/launcher3/testcomponent/CustomShortcutConfigActivity.java",
+      "multivalentTests/src/com/android/launcher3/testcomponent/TestCommandReceiver.java",
+      "multivalentTests/src/com/android/launcher3/testcomponent/TestLauncherActivity.java",
+      "multivalentTests/src/com/android/launcher3/testcomponent/ImeTestActivity.java",
     ],
 }
 
@@ -167,10 +171,10 @@
 android_library {
     name: "launcher-testing-shared",
     srcs: [
-        "shared/com/android/launcher3/testing/shared/**/*.java"
+        "multivalentTests/shared/com/android/launcher3/testing/shared/**/*.java"
     ],
     resource_dirs: [ ],
-    manifest: "shared/AndroidManifest.xml",
+    manifest: "multivalentTests/shared/AndroidManifest.xml",
     sdk_version: "current",
     min_sdk_version: min_launcher3_sdk_version,
  }
@@ -180,14 +184,18 @@
     srcs: [
       "src/**/*.java",
       "src/**/*.kt",
-      "src/com/android/launcher3/ui/AbstractLauncherUiTest.java",
-      "tapl/com/android/launcher3/tapl/*.java",
-      "tapl/com/android/launcher3/tapl/*.kt",
+      "multivalentTests/src/**/*.java",
+      "multivalentTests/src/**/*.kt",
+      "multivalentTests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java",
+      "multivalentTests/tapl/com/android/launcher3/tapl/*.java",
+      "multivalentTests/tapl/com/android/launcher3/tapl/*.kt",
     ],
     exclude_srcs: [
         // Test classes
         "src/**/*Test.java",
         "src/**/*Test.kt",
+        "multivalentTests/src/**/*Test.java",
+        "multivalentTests/src/**/*Test.kt",
     ],
 }
 
@@ -206,23 +214,21 @@
 android_robolectric_test {
     enabled: true,
     name: "Launcher3RoboTests",
+    // multivalentTests directory is a shared folder for not only robolectric converted test
+    // classes but also shared helper classes.
     srcs: [
-        "src/com/android/launcher3/util/*.java",
-        "src/com/android/launcher3/util/*.kt",
+        "multivalentTests/src/com/android/launcher3/util/*.java",
+        "multivalentTests/src/com/android/launcher3/util/*.kt",
 
         // Test util classes
         ":launcher-testing-helpers",
         ":launcher-testing-shared",
     ],
     exclude_srcs: [
-        "src/com/android/launcher3/util/CellContentDimensionsTest.kt", // Failing - b/316553889
+        //"src/com/android/launcher3/util/CellContentDimensionsTest.kt", // Failing - b/316553889
 
         // requires modification to work with inline mock maker
         "src/com/android/launcher3/util/rule/StaticMockitoRule.java",
-
-        // requires kotlin mockito
-        "src/com/android/launcher3/util/LockedUserStateTest.kt",
-        "src/com/android/launcher3/util/DisplayControllerTest.kt",
     ],
     java_resource_dirs: ["config"],
     static_libs: [
diff --git a/tests/dummy_app/Android.bp b/tests/multivalentTests/dummy_app/Android.bp
similarity index 100%
rename from tests/dummy_app/Android.bp
rename to tests/multivalentTests/dummy_app/Android.bp
diff --git a/tests/dummy_app/AndroidManifest.xml b/tests/multivalentTests/dummy_app/AndroidManifest.xml
similarity index 100%
rename from tests/dummy_app/AndroidManifest.xml
rename to tests/multivalentTests/dummy_app/AndroidManifest.xml
diff --git a/tests/dummy_app/res/layout/empty_activity.xml b/tests/multivalentTests/dummy_app/res/layout/empty_activity.xml
similarity index 100%
rename from tests/dummy_app/res/layout/empty_activity.xml
rename to tests/multivalentTests/dummy_app/res/layout/empty_activity.xml
diff --git a/tests/dummy_app/res/mipmap-anydpi/ic_launcher1.xml b/tests/multivalentTests/dummy_app/res/mipmap-anydpi/ic_launcher1.xml
similarity index 100%
rename from tests/dummy_app/res/mipmap-anydpi/ic_launcher1.xml
rename to tests/multivalentTests/dummy_app/res/mipmap-anydpi/ic_launcher1.xml
diff --git a/tests/dummy_app/res/mipmap-anydpi/ic_launcher2.xml b/tests/multivalentTests/dummy_app/res/mipmap-anydpi/ic_launcher2.xml
similarity index 100%
rename from tests/dummy_app/res/mipmap-anydpi/ic_launcher2.xml
rename to tests/multivalentTests/dummy_app/res/mipmap-anydpi/ic_launcher2.xml
diff --git a/tests/dummy_app/res/mipmap-xxhdpi/ic_launcher1.png b/tests/multivalentTests/dummy_app/res/mipmap-xxhdpi/ic_launcher1.png
similarity index 100%
rename from tests/dummy_app/res/mipmap-xxhdpi/ic_launcher1.png
rename to tests/multivalentTests/dummy_app/res/mipmap-xxhdpi/ic_launcher1.png
Binary files differ
diff --git a/tests/dummy_app/res/mipmap-xxhdpi/ic_launcher2.png b/tests/multivalentTests/dummy_app/res/mipmap-xxhdpi/ic_launcher2.png
similarity index 100%
rename from tests/dummy_app/res/mipmap-xxhdpi/ic_launcher2.png
rename to tests/multivalentTests/dummy_app/res/mipmap-xxhdpi/ic_launcher2.png
Binary files differ
diff --git a/tests/dummy_app/res/mipmap-xxhdpi/icon_back_1.png b/tests/multivalentTests/dummy_app/res/mipmap-xxhdpi/icon_back_1.png
similarity index 100%
rename from tests/dummy_app/res/mipmap-xxhdpi/icon_back_1.png
rename to tests/multivalentTests/dummy_app/res/mipmap-xxhdpi/icon_back_1.png
Binary files differ
diff --git a/tests/dummy_app/res/mipmap-xxhdpi/icon_fore_1.png b/tests/multivalentTests/dummy_app/res/mipmap-xxhdpi/icon_fore_1.png
similarity index 100%
rename from tests/dummy_app/res/mipmap-xxhdpi/icon_fore_1.png
rename to tests/multivalentTests/dummy_app/res/mipmap-xxhdpi/icon_fore_1.png
Binary files differ
diff --git a/tests/dummy_app/res/mipmap-xxxhdpi/ic_launcher1.png b/tests/multivalentTests/dummy_app/res/mipmap-xxxhdpi/ic_launcher1.png
similarity index 100%
rename from tests/dummy_app/res/mipmap-xxxhdpi/ic_launcher1.png
rename to tests/multivalentTests/dummy_app/res/mipmap-xxxhdpi/ic_launcher1.png
Binary files differ
diff --git a/tests/dummy_app/res/mipmap-xxxhdpi/ic_launcher2.png b/tests/multivalentTests/dummy_app/res/mipmap-xxxhdpi/ic_launcher2.png
similarity index 100%
rename from tests/dummy_app/res/mipmap-xxxhdpi/ic_launcher2.png
rename to tests/multivalentTests/dummy_app/res/mipmap-xxxhdpi/ic_launcher2.png
Binary files differ
diff --git a/tests/dummy_app/res/mipmap-xxxhdpi/icon_back_1.png b/tests/multivalentTests/dummy_app/res/mipmap-xxxhdpi/icon_back_1.png
similarity index 100%
rename from tests/dummy_app/res/mipmap-xxxhdpi/icon_back_1.png
rename to tests/multivalentTests/dummy_app/res/mipmap-xxxhdpi/icon_back_1.png
Binary files differ
diff --git a/tests/dummy_app/res/mipmap-xxxhdpi/icon_fore_1.png b/tests/multivalentTests/dummy_app/res/mipmap-xxxhdpi/icon_fore_1.png
similarity index 100%
rename from tests/dummy_app/res/mipmap-xxxhdpi/icon_fore_1.png
rename to tests/multivalentTests/dummy_app/res/mipmap-xxxhdpi/icon_fore_1.png
Binary files differ
diff --git a/tests/dummy_app/res/values/colors.xml b/tests/multivalentTests/dummy_app/res/values/colors.xml
similarity index 100%
rename from tests/dummy_app/res/values/colors.xml
rename to tests/multivalentTests/dummy_app/res/values/colors.xml
diff --git a/tests/dummy_app/src/com/example/android/aardwolf/Activity1.java b/tests/multivalentTests/dummy_app/src/com/example/android/aardwolf/Activity1.java
similarity index 100%
rename from tests/dummy_app/src/com/example/android/aardwolf/Activity1.java
rename to tests/multivalentTests/dummy_app/src/com/example/android/aardwolf/Activity1.java
diff --git a/tests/shared/AndroidManifest.xml b/tests/multivalentTests/shared/AndroidManifest.xml
similarity index 100%
rename from tests/shared/AndroidManifest.xml
rename to tests/multivalentTests/shared/AndroidManifest.xml
diff --git a/tests/shared/com/android/launcher3/testing/OWNERS b/tests/multivalentTests/shared/com/android/launcher3/testing/OWNERS
similarity index 100%
rename from tests/shared/com/android/launcher3/testing/OWNERS
rename to tests/multivalentTests/shared/com/android/launcher3/testing/OWNERS
diff --git a/tests/shared/com/android/launcher3/testing/shared/HotseatCellCenterRequest.java b/tests/multivalentTests/shared/com/android/launcher3/testing/shared/HotseatCellCenterRequest.java
similarity index 100%
rename from tests/shared/com/android/launcher3/testing/shared/HotseatCellCenterRequest.java
rename to tests/multivalentTests/shared/com/android/launcher3/testing/shared/HotseatCellCenterRequest.java
diff --git a/tests/shared/com/android/launcher3/testing/shared/ResourceUtils.java b/tests/multivalentTests/shared/com/android/launcher3/testing/shared/ResourceUtils.java
similarity index 100%
rename from tests/shared/com/android/launcher3/testing/shared/ResourceUtils.java
rename to tests/multivalentTests/shared/com/android/launcher3/testing/shared/ResourceUtils.java
diff --git a/tests/shared/com/android/launcher3/testing/shared/TestInformationRequest.java b/tests/multivalentTests/shared/com/android/launcher3/testing/shared/TestInformationRequest.java
similarity index 100%
rename from tests/shared/com/android/launcher3/testing/shared/TestInformationRequest.java
rename to tests/multivalentTests/shared/com/android/launcher3/testing/shared/TestInformationRequest.java
diff --git a/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java b/tests/multivalentTests/shared/com/android/launcher3/testing/shared/TestProtocol.java
similarity index 100%
rename from tests/shared/com/android/launcher3/testing/shared/TestProtocol.java
rename to tests/multivalentTests/shared/com/android/launcher3/testing/shared/TestProtocol.java
diff --git a/tests/shared/com/android/launcher3/testing/shared/WorkspaceCellCenterRequest.java b/tests/multivalentTests/shared/com/android/launcher3/testing/shared/WorkspaceCellCenterRequest.java
similarity index 100%
rename from tests/shared/com/android/launcher3/testing/shared/WorkspaceCellCenterRequest.java
rename to tests/multivalentTests/shared/com/android/launcher3/testing/shared/WorkspaceCellCenterRequest.java
diff --git a/tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java b/tests/multivalentTests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java
diff --git a/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java b/tests/multivalentTests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java
diff --git a/tests/src/com/android/launcher3/celllayout/FavoriteItemsTransaction.java b/tests/multivalentTests/src/com/android/launcher3/celllayout/FavoriteItemsTransaction.java
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/FavoriteItemsTransaction.java
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/FavoriteItemsTransaction.java
diff --git a/tests/src/com/android/launcher3/celllayout/ReorderAlgorithmUnitTestCase.java b/tests/multivalentTests/src/com/android/launcher3/celllayout/ReorderAlgorithmUnitTestCase.java
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/ReorderAlgorithmUnitTestCase.java
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/ReorderAlgorithmUnitTestCase.java
diff --git a/tests/src/com/android/launcher3/celllayout/ReorderTestCase.java b/tests/multivalentTests/src/com/android/launcher3/celllayout/ReorderTestCase.java
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/ReorderTestCase.java
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/ReorderTestCase.java
diff --git a/tests/src/com/android/launcher3/celllayout/board/CellLayoutBoard.java b/tests/multivalentTests/src/com/android/launcher3/celllayout/board/CellLayoutBoard.java
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/board/CellLayoutBoard.java
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/board/CellLayoutBoard.java
diff --git a/tests/src/com/android/launcher3/celllayout/board/CellType.java b/tests/multivalentTests/src/com/android/launcher3/celllayout/board/CellType.java
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/board/CellType.java
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/board/CellType.java
diff --git a/tests/src/com/android/launcher3/celllayout/board/FolderPoint.java b/tests/multivalentTests/src/com/android/launcher3/celllayout/board/FolderPoint.java
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/board/FolderPoint.java
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/board/FolderPoint.java
diff --git a/tests/src/com/android/launcher3/celllayout/board/IconPoint.java b/tests/multivalentTests/src/com/android/launcher3/celllayout/board/IconPoint.java
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/board/IconPoint.java
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/board/IconPoint.java
diff --git a/tests/src/com/android/launcher3/celllayout/board/IdenticalBoardComparator.kt b/tests/multivalentTests/src/com/android/launcher3/celllayout/board/IdenticalBoardComparator.kt
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/board/IdenticalBoardComparator.kt
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/board/IdenticalBoardComparator.kt
diff --git a/tests/src/com/android/launcher3/celllayout/board/PermutedBoardComparator.kt b/tests/multivalentTests/src/com/android/launcher3/celllayout/board/PermutedBoardComparator.kt
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/board/PermutedBoardComparator.kt
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/board/PermutedBoardComparator.kt
diff --git a/tests/src/com/android/launcher3/celllayout/board/TestWorkspaceBuilder.java b/tests/multivalentTests/src/com/android/launcher3/celllayout/board/TestWorkspaceBuilder.java
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/board/TestWorkspaceBuilder.java
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/board/TestWorkspaceBuilder.java
diff --git a/tests/src/com/android/launcher3/celllayout/board/WidgetRect.java b/tests/multivalentTests/src/com/android/launcher3/celllayout/board/WidgetRect.java
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/board/WidgetRect.java
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/board/WidgetRect.java
diff --git a/tests/src/com/android/launcher3/celllayout/testgenerator/DeterministicRandomGenerator.kt b/tests/multivalentTests/src/com/android/launcher3/celllayout/testgenerator/DeterministicRandomGenerator.kt
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/testgenerator/DeterministicRandomGenerator.kt
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/testgenerator/DeterministicRandomGenerator.kt
diff --git a/tests/src/com/android/launcher3/celllayout/testgenerator/RandomBoardGenerator.kt b/tests/multivalentTests/src/com/android/launcher3/celllayout/testgenerator/RandomBoardGenerator.kt
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/testgenerator/RandomBoardGenerator.kt
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/testgenerator/RandomBoardGenerator.kt
diff --git a/tests/src/com/android/launcher3/celllayout/testgenerator/RandomMultiBoardGenerator.kt b/tests/multivalentTests/src/com/android/launcher3/celllayout/testgenerator/RandomMultiBoardGenerator.kt
similarity index 100%
rename from tests/src/com/android/launcher3/celllayout/testgenerator/RandomMultiBoardGenerator.kt
rename to tests/multivalentTests/src/com/android/launcher3/celllayout/testgenerator/RandomMultiBoardGenerator.kt
diff --git a/tests/src/com/android/launcher3/model/AbstractWorkspaceModelTest.kt b/tests/multivalentTests/src/com/android/launcher3/model/AbstractWorkspaceModelTest.kt
similarity index 100%
rename from tests/src/com/android/launcher3/model/AbstractWorkspaceModelTest.kt
rename to tests/multivalentTests/src/com/android/launcher3/model/AbstractWorkspaceModelTest.kt
diff --git a/tests/src/com/android/launcher3/model/FactitiousDbController.kt b/tests/multivalentTests/src/com/android/launcher3/model/FactitiousDbController.kt
similarity index 100%
rename from tests/src/com/android/launcher3/model/FactitiousDbController.kt
rename to tests/multivalentTests/src/com/android/launcher3/model/FactitiousDbController.kt
diff --git a/tests/src/com/android/launcher3/testcomponent/AppWidgetDynamicColors.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/AppWidgetDynamicColors.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/AppWidgetDynamicColors.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/AppWidgetDynamicColors.java
diff --git a/tests/src/com/android/launcher3/testcomponent/AppWidgetHidden.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/AppWidgetHidden.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/AppWidgetHidden.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/AppWidgetHidden.java
diff --git a/tests/src/com/android/launcher3/testcomponent/AppWidgetNoConfig.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/AppWidgetNoConfig.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/AppWidgetNoConfig.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/AppWidgetNoConfig.java
diff --git a/tests/src/com/android/launcher3/testcomponent/AppWidgetWithConfig.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/AppWidgetWithConfig.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/AppWidgetWithConfig.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/AppWidgetWithConfig.java
diff --git a/tests/src/com/android/launcher3/testcomponent/AppWidgetWithDialog.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/AppWidgetWithDialog.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/AppWidgetWithDialog.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/AppWidgetWithDialog.java
diff --git a/tests/src/com/android/launcher3/testcomponent/BaseTestingActivity.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/BaseTestingActivity.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/BaseTestingActivity.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/BaseTestingActivity.java
diff --git a/tests/src/com/android/launcher3/testcomponent/CustomShortcutConfigActivity.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/CustomShortcutConfigActivity.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/CustomShortcutConfigActivity.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/CustomShortcutConfigActivity.java
diff --git a/tests/src/com/android/launcher3/testcomponent/DialogTestActivity.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/DialogTestActivity.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/DialogTestActivity.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/DialogTestActivity.java
diff --git a/tests/src/com/android/launcher3/testcomponent/ImeTestActivity.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/ImeTestActivity.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/ImeTestActivity.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/ImeTestActivity.java
diff --git a/tests/src/com/android/launcher3/testcomponent/ListViewService.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/ListViewService.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/ListViewService.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/ListViewService.java
diff --git a/tests/src/com/android/launcher3/testcomponent/OtherBaseTestingActivity.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/OtherBaseTestingActivity.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/OtherBaseTestingActivity.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/OtherBaseTestingActivity.java
diff --git a/tests/src/com/android/launcher3/testcomponent/RequestPinItemActivity.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/RequestPinItemActivity.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/RequestPinItemActivity.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/RequestPinItemActivity.java
diff --git a/tests/src/com/android/launcher3/testcomponent/TestCommandProvider.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/TestCommandProvider.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/TestCommandProvider.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/TestCommandProvider.java
diff --git a/tests/src/com/android/launcher3/testcomponent/TestCommandReceiver.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/TestCommandReceiver.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/TestCommandReceiver.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/TestCommandReceiver.java
diff --git a/tests/src/com/android/launcher3/testcomponent/TestLauncherActivity.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/TestLauncherActivity.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/TestLauncherActivity.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/TestLauncherActivity.java
diff --git a/tests/src/com/android/launcher3/testcomponent/TouchEventGenerator.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/TouchEventGenerator.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/TouchEventGenerator.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/TouchEventGenerator.java
diff --git a/tests/src/com/android/launcher3/testcomponent/WidgetConfigActivity.java b/tests/multivalentTests/src/com/android/launcher3/testcomponent/WidgetConfigActivity.java
similarity index 100%
rename from tests/src/com/android/launcher3/testcomponent/WidgetConfigActivity.java
rename to tests/multivalentTests/src/com/android/launcher3/testcomponent/WidgetConfigActivity.java
diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/multivalentTests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
similarity index 100%
rename from tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
rename to tests/multivalentTests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
diff --git a/tests/src/com/android/launcher3/ui/PortraitLandscapeRunner.java b/tests/multivalentTests/src/com/android/launcher3/ui/PortraitLandscapeRunner.java
similarity index 100%
rename from tests/src/com/android/launcher3/ui/PortraitLandscapeRunner.java
rename to tests/multivalentTests/src/com/android/launcher3/ui/PortraitLandscapeRunner.java
diff --git a/tests/src/com/android/launcher3/ui/TestViewHelpers.java b/tests/multivalentTests/src/com/android/launcher3/ui/TestViewHelpers.java
similarity index 100%
rename from tests/src/com/android/launcher3/ui/TestViewHelpers.java
rename to tests/multivalentTests/src/com/android/launcher3/ui/TestViewHelpers.java
diff --git a/tests/src/com/android/launcher3/util/ActivityContextWrapper.java b/tests/multivalentTests/src/com/android/launcher3/util/ActivityContextWrapper.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/ActivityContextWrapper.java
rename to tests/multivalentTests/src/com/android/launcher3/util/ActivityContextWrapper.java
diff --git a/tests/src/com/android/launcher3/util/ExecutorRunnableTest.kt b/tests/multivalentTests/src/com/android/launcher3/util/ExecutorRunnableTest.kt
similarity index 74%
rename from tests/src/com/android/launcher3/util/ExecutorRunnableTest.kt
rename to tests/multivalentTests/src/com/android/launcher3/util/ExecutorRunnableTest.kt
index 972b592..6634577 100644
--- a/tests/src/com/android/launcher3/util/ExecutorRunnableTest.kt
+++ b/tests/multivalentTests/src/com/android/launcher3/util/ExecutorRunnableTest.kt
@@ -20,6 +20,7 @@
 import androidx.test.filters.SmallTest
 import com.android.launcher3.util.rule.TestStabilityRule
 import java.util.concurrent.ExecutorService
+import java.util.concurrent.locks.ReentrantLock
 import junit.framework.Assert.assertEquals
 import junit.framework.Assert.assertFalse
 import junit.framework.Assert.assertTrue
@@ -35,6 +36,7 @@
 
     private lateinit var underTest: ExecutorRunnable<Int>
 
+    private val lock = ReentrantLock()
     private var result: Int = -1
     private var isTaskExecuted = false
     private var isCallbackExecuted = false
@@ -44,6 +46,10 @@
     @Before
     fun setup() {
         reset()
+        submitJob()
+    }
+
+    private fun submitJob() {
         underTest =
             ExecutorRunnable.createAndExecute(
                 Executors.UI_HELPER_EXECUTOR,
@@ -69,13 +75,36 @@
     }
 
     @Test
-    @TestStabilityRule.Stability(
-        flavors = TestStabilityRule.LOCAL or TestStabilityRule.PLATFORM_POSTSUBMIT
-    ) // b/316588649
-    fun run_and_cancel_cancelCallback() {
-        underTest.cancel(false)
+    fun run_and_cancel_cancelTaskAndCallback() {
         awaitAllExecutorCompleted()
+        reset()
+        lock.lock()
+        Executors.UI_HELPER_EXECUTOR.submit { lock.lock() }
+        submitJob()
 
+        underTest.cancel(false)
+
+        lock.unlock() // unblock task on UI_HELPER_EXECUTOR
+        awaitAllExecutorCompleted()
+        assertFalse("task should not be executed.", isTaskExecuted)
+        assertFalse("callback should not be executed.", isCallbackExecuted)
+        assertEquals(0, result)
+    }
+
+    @Test
+    fun run_and_cancel_cancelCallback() {
+        awaitAllExecutorCompleted()
+        reset()
+        lock.lock()
+        Executors.VIEW_PREINFLATION_EXECUTOR.submit { lock.lock() }
+        submitJob()
+        awaitExecutorCompleted(Executors.UI_HELPER_EXECUTOR)
+        assertTrue("task should be executed.", isTaskExecuted)
+
+        underTest.cancel(false)
+
+        lock.unlock() // unblock callback on VIEW_PREINFLATION_EXECUTOR
+        awaitExecutorCompleted(Executors.VIEW_PREINFLATION_EXECUTOR)
         assertFalse("callback should not be executed.", isCallbackExecuted)
         assertEquals(0, result)
     }
diff --git a/tests/src/com/android/launcher3/util/GridOccupancyTest.java b/tests/multivalentTests/src/com/android/launcher3/util/GridOccupancyTest.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/GridOccupancyTest.java
rename to tests/multivalentTests/src/com/android/launcher3/util/GridOccupancyTest.java
diff --git a/tests/src/com/android/launcher3/util/IconSizeStepsTest.kt b/tests/multivalentTests/src/com/android/launcher3/util/IconSizeStepsTest.kt
similarity index 100%
rename from tests/src/com/android/launcher3/util/IconSizeStepsTest.kt
rename to tests/multivalentTests/src/com/android/launcher3/util/IconSizeStepsTest.kt
diff --git a/tests/src/com/android/launcher3/util/IntArrayTest.java b/tests/multivalentTests/src/com/android/launcher3/util/IntArrayTest.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/IntArrayTest.java
rename to tests/multivalentTests/src/com/android/launcher3/util/IntArrayTest.java
diff --git a/tests/src/com/android/launcher3/util/IntSetTest.java b/tests/multivalentTests/src/com/android/launcher3/util/IntSetTest.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/IntSetTest.java
rename to tests/multivalentTests/src/com/android/launcher3/util/IntSetTest.java
diff --git a/tests/src/com/android/launcher3/util/LauncherLayoutBuilder.java b/tests/multivalentTests/src/com/android/launcher3/util/LauncherLayoutBuilder.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/LauncherLayoutBuilder.java
rename to tests/multivalentTests/src/com/android/launcher3/util/LauncherLayoutBuilder.java
diff --git a/tests/src/com/android/launcher3/util/LauncherModelHelper.java b/tests/multivalentTests/src/com/android/launcher3/util/LauncherModelHelper.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/LauncherModelHelper.java
rename to tests/multivalentTests/src/com/android/launcher3/util/LauncherModelHelper.java
diff --git a/tests/src/com/android/launcher3/util/ModelTestExtensions.kt b/tests/multivalentTests/src/com/android/launcher3/util/ModelTestExtensions.kt
similarity index 100%
rename from tests/src/com/android/launcher3/util/ModelTestExtensions.kt
rename to tests/multivalentTests/src/com/android/launcher3/util/ModelTestExtensions.kt
diff --git a/tests/src/com/android/launcher3/util/MultiPropertyFactoryTest.kt b/tests/multivalentTests/src/com/android/launcher3/util/MultiPropertyFactoryTest.kt
similarity index 100%
rename from tests/src/com/android/launcher3/util/MultiPropertyFactoryTest.kt
rename to tests/multivalentTests/src/com/android/launcher3/util/MultiPropertyFactoryTest.kt
diff --git a/tests/src/com/android/launcher3/util/MultiScalePropertyTest.kt b/tests/multivalentTests/src/com/android/launcher3/util/MultiScalePropertyTest.kt
similarity index 100%
rename from tests/src/com/android/launcher3/util/MultiScalePropertyTest.kt
rename to tests/multivalentTests/src/com/android/launcher3/util/MultiScalePropertyTest.kt
diff --git a/tests/src/com/android/launcher3/util/PackageUserKeyTest.java b/tests/multivalentTests/src/com/android/launcher3/util/PackageUserKeyTest.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/PackageUserKeyTest.java
rename to tests/multivalentTests/src/com/android/launcher3/util/PackageUserKeyTest.java
diff --git a/tests/src/com/android/launcher3/util/ReflectionHelpers.java b/tests/multivalentTests/src/com/android/launcher3/util/ReflectionHelpers.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/ReflectionHelpers.java
rename to tests/multivalentTests/src/com/android/launcher3/util/ReflectionHelpers.java
diff --git a/tests/src/com/android/launcher3/util/TestConstants.java b/tests/multivalentTests/src/com/android/launcher3/util/TestConstants.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/TestConstants.java
rename to tests/multivalentTests/src/com/android/launcher3/util/TestConstants.java
diff --git a/tests/src/com/android/launcher3/util/TestUtil.java b/tests/multivalentTests/src/com/android/launcher3/util/TestUtil.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/TestUtil.java
rename to tests/multivalentTests/src/com/android/launcher3/util/TestUtil.java
diff --git a/tests/src/com/android/launcher3/util/TouchUtilTest.kt b/tests/multivalentTests/src/com/android/launcher3/util/TouchUtilTest.kt
similarity index 100%
rename from tests/src/com/android/launcher3/util/TouchUtilTest.kt
rename to tests/multivalentTests/src/com/android/launcher3/util/TouchUtilTest.kt
diff --git a/tests/src/com/android/launcher3/util/Wait.java b/tests/multivalentTests/src/com/android/launcher3/util/Wait.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/Wait.java
rename to tests/multivalentTests/src/com/android/launcher3/util/Wait.java
diff --git a/tests/src/com/android/launcher3/util/WidgetUtils.java b/tests/multivalentTests/src/com/android/launcher3/util/WidgetUtils.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/WidgetUtils.java
rename to tests/multivalentTests/src/com/android/launcher3/util/WidgetUtils.java
diff --git a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java b/tests/multivalentTests/src/com/android/launcher3/util/rule/FailureWatcher.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/rule/FailureWatcher.java
rename to tests/multivalentTests/src/com/android/launcher3/util/rule/FailureWatcher.java
diff --git a/tests/src/com/android/launcher3/util/rule/SamplerRule.java b/tests/multivalentTests/src/com/android/launcher3/util/rule/SamplerRule.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/rule/SamplerRule.java
rename to tests/multivalentTests/src/com/android/launcher3/util/rule/SamplerRule.java
diff --git a/tests/src/com/android/launcher3/util/rule/ScreenRecordRule.java b/tests/multivalentTests/src/com/android/launcher3/util/rule/ScreenRecordRule.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/rule/ScreenRecordRule.java
rename to tests/multivalentTests/src/com/android/launcher3/util/rule/ScreenRecordRule.java
diff --git a/tests/src/com/android/launcher3/util/rule/SetFlagsRuleExt.kt b/tests/multivalentTests/src/com/android/launcher3/util/rule/SetFlagsRuleExt.kt
similarity index 100%
rename from tests/src/com/android/launcher3/util/rule/SetFlagsRuleExt.kt
rename to tests/multivalentTests/src/com/android/launcher3/util/rule/SetFlagsRuleExt.kt
diff --git a/tests/src/com/android/launcher3/util/rule/ShellCommandRule.java b/tests/multivalentTests/src/com/android/launcher3/util/rule/ShellCommandRule.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/rule/ShellCommandRule.java
rename to tests/multivalentTests/src/com/android/launcher3/util/rule/ShellCommandRule.java
diff --git a/tests/src/com/android/launcher3/util/rule/TestIsolationRule.java b/tests/multivalentTests/src/com/android/launcher3/util/rule/TestIsolationRule.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/rule/TestIsolationRule.java
rename to tests/multivalentTests/src/com/android/launcher3/util/rule/TestIsolationRule.java
diff --git a/tests/src/com/android/launcher3/util/rule/TestStabilityRule.java b/tests/multivalentTests/src/com/android/launcher3/util/rule/TestStabilityRule.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/rule/TestStabilityRule.java
rename to tests/multivalentTests/src/com/android/launcher3/util/rule/TestStabilityRule.java
diff --git a/tests/src/com/android/launcher3/util/rule/ViewCaptureRule.kt b/tests/multivalentTests/src/com/android/launcher3/util/rule/ViewCaptureRule.kt
similarity index 100%
rename from tests/src/com/android/launcher3/util/rule/ViewCaptureRule.kt
rename to tests/multivalentTests/src/com/android/launcher3/util/rule/ViewCaptureRule.kt
diff --git a/tests/src/com/android/launcher3/util/viewcapture_analysis/AlphaJumpDetector.java b/tests/multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/AlphaJumpDetector.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/viewcapture_analysis/AlphaJumpDetector.java
rename to tests/multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/AlphaJumpDetector.java
diff --git a/tests/src/com/android/launcher3/util/viewcapture_analysis/AnomalyDetector.java b/tests/multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/AnomalyDetector.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/viewcapture_analysis/AnomalyDetector.java
rename to tests/multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/AnomalyDetector.java
diff --git a/tests/src/com/android/launcher3/util/viewcapture_analysis/FlashDetector.java b/tests/multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/FlashDetector.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/viewcapture_analysis/FlashDetector.java
rename to tests/multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/FlashDetector.java
diff --git a/tests/src/com/android/launcher3/util/viewcapture_analysis/PositionJumpDetector.java b/tests/multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/PositionJumpDetector.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/viewcapture_analysis/PositionJumpDetector.java
rename to tests/multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/PositionJumpDetector.java
diff --git a/tests/src/com/android/launcher3/util/viewcapture_analysis/ViewCaptureAnalyzer.java b/tests/multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/ViewCaptureAnalyzer.java
similarity index 100%
rename from tests/src/com/android/launcher3/util/viewcapture_analysis/ViewCaptureAnalyzer.java
rename to tests/multivalentTests/src/com/android/launcher3/util/viewcapture_analysis/ViewCaptureAnalyzer.java
diff --git a/tests/tapl/AndroidManifest.xml b/tests/multivalentTests/tapl/AndroidManifest.xml
similarity index 100%
rename from tests/tapl/AndroidManifest.xml
rename to tests/multivalentTests/tapl/AndroidManifest.xml
diff --git a/tests/tapl/README b/tests/multivalentTests/tapl/README
similarity index 100%
rename from tests/tapl/README
rename to tests/multivalentTests/tapl/README
diff --git a/tests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java
diff --git a/tests/tapl/com/android/launcher3/tapl/AllApps.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/AllApps.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/AllApps.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/AllApps.java
diff --git a/tests/tapl/com/android/launcher3/tapl/AllAppsAppIcon.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/AllAppsAppIcon.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/AllAppsAppIcon.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/AllAppsAppIcon.java
diff --git a/tests/tapl/com/android/launcher3/tapl/AllAppsQsb.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/AllAppsQsb.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/AllAppsQsb.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/AllAppsQsb.java
diff --git a/tests/tapl/com/android/launcher3/tapl/AppIcon.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/AppIcon.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/AppIcon.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/AppIcon.java
diff --git a/tests/tapl/com/android/launcher3/tapl/AppIconMenu.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/AppIconMenu.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/AppIconMenu.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/AppIconMenu.java
diff --git a/tests/tapl/com/android/launcher3/tapl/AppIconMenuItem.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/AppIconMenuItem.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/AppIconMenuItem.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/AppIconMenuItem.java
diff --git a/tests/tapl/com/android/launcher3/tapl/Background.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/Background.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/Background.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/Background.java
diff --git a/tests/tapl/com/android/launcher3/tapl/BaseOverview.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/BaseOverview.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/BaseOverview.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/BaseOverview.java
diff --git a/tests/tapl/com/android/launcher3/tapl/Folder.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/Folder.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/Folder.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/Folder.java
diff --git a/tests/tapl/com/android/launcher3/tapl/FolderDragTarget.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/FolderDragTarget.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/FolderDragTarget.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/FolderDragTarget.java
diff --git a/tests/tapl/com/android/launcher3/tapl/FolderIcon.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/FolderIcon.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/FolderIcon.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/FolderIcon.java
diff --git a/tests/tapl/com/android/launcher3/tapl/Home.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/Home.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/Home.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/Home.java
diff --git a/tests/tapl/com/android/launcher3/tapl/HomeAllApps.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/HomeAllApps.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/HomeAllApps.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/HomeAllApps.java
diff --git a/tests/tapl/com/android/launcher3/tapl/HomeAppIcon.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/HomeAppIcon.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/HomeAppIcon.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/HomeAppIcon.java
diff --git a/tests/tapl/com/android/launcher3/tapl/HomeAppIconMenu.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/HomeAppIconMenu.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/HomeAppIconMenu.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/HomeAppIconMenu.java
diff --git a/tests/tapl/com/android/launcher3/tapl/HomeAppIconMenuItem.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/HomeAppIconMenuItem.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/HomeAppIconMenuItem.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/HomeAppIconMenuItem.java
diff --git a/tests/tapl/com/android/launcher3/tapl/HomeQsb.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/HomeQsb.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/HomeQsb.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/HomeQsb.java
diff --git a/tests/tapl/com/android/launcher3/tapl/KeyboardQuickSwitch.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/KeyboardQuickSwitch.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/KeyboardQuickSwitch.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/KeyboardQuickSwitch.java
diff --git a/tests/tapl/com/android/launcher3/tapl/KeyboardQuickSwitchSource.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/KeyboardQuickSwitchSource.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/KeyboardQuickSwitchSource.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/KeyboardQuickSwitchSource.java
diff --git a/tests/tapl/com/android/launcher3/tapl/Launchable.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/Launchable.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/Launchable.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/Launchable.java
diff --git a/tests/tapl/com/android/launcher3/tapl/LaunchedAppState.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/LaunchedAppState.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/LaunchedAppState.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/LaunchedAppState.java
diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
diff --git a/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/LogEventChecker.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/LogEventChecker.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/LogEventChecker.java
diff --git a/tests/tapl/com/android/launcher3/tapl/Overview.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/Overview.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/Overview.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/Overview.java
diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewActions.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/OverviewActions.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/OverviewActions.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/OverviewActions.java
diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewTask.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/OverviewTask.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/OverviewTask.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/OverviewTask.java
diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewTaskMenu.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/OverviewTaskMenu.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/OverviewTaskMenu.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/OverviewTaskMenu.java
diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewTaskMenuItem.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/OverviewTaskMenuItem.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/OverviewTaskMenuItem.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/OverviewTaskMenuItem.java
diff --git a/tests/tapl/com/android/launcher3/tapl/Qsb.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/Qsb.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/Qsb.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/Qsb.java
diff --git a/tests/tapl/com/android/launcher3/tapl/SearchInputSource.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/SearchInputSource.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/SearchInputSource.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/SearchInputSource.java
diff --git a/tests/tapl/com/android/launcher3/tapl/SearchResultFromQsb.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/SearchResultFromQsb.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/SearchResultFromQsb.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/SearchResultFromQsb.java
diff --git a/tests/tapl/com/android/launcher3/tapl/SearchResultFromTaskbarQsb.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/SearchResultFromTaskbarQsb.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/SearchResultFromTaskbarQsb.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/SearchResultFromTaskbarQsb.java
diff --git a/tests/tapl/com/android/launcher3/tapl/SearchWebSuggestion.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/SearchWebSuggestion.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/SearchWebSuggestion.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/SearchWebSuggestion.java
diff --git a/tests/tapl/com/android/launcher3/tapl/SelectModeButtons.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/SelectModeButtons.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/SelectModeButtons.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/SelectModeButtons.java
diff --git a/tests/tapl/com/android/launcher3/tapl/SplitScreenMenuItem.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/SplitScreenMenuItem.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/SplitScreenMenuItem.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/SplitScreenMenuItem.java
diff --git a/tests/tapl/com/android/launcher3/tapl/SplitScreenSelect.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/SplitScreenSelect.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/SplitScreenSelect.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/SplitScreenSelect.java
diff --git a/tests/tapl/com/android/launcher3/tapl/SplitscreenDragSource.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/SplitscreenDragSource.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/SplitscreenDragSource.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/SplitscreenDragSource.java
diff --git a/tests/tapl/com/android/launcher3/tapl/Taskbar.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/Taskbar.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/Taskbar.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/Taskbar.java
diff --git a/tests/tapl/com/android/launcher3/tapl/TaskbarAllApps.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarAllApps.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/TaskbarAllApps.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarAllApps.java
diff --git a/tests/tapl/com/android/launcher3/tapl/TaskbarAllAppsQsb.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarAllAppsQsb.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/TaskbarAllAppsQsb.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarAllAppsQsb.java
diff --git a/tests/tapl/com/android/launcher3/tapl/TaskbarAppIcon.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarAppIcon.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/TaskbarAppIcon.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarAppIcon.java
diff --git a/tests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenu.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenu.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenu.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenu.java
diff --git a/tests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenuItem.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenuItem.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenuItem.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenuItem.java
diff --git a/tests/tapl/com/android/launcher3/tapl/TaskbarSearchWebSuggestion.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarSearchWebSuggestion.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/TaskbarSearchWebSuggestion.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/TaskbarSearchWebSuggestion.java
diff --git a/tests/tapl/com/android/launcher3/tapl/TestHelpers.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/TestHelpers.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/TestHelpers.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/TestHelpers.java
diff --git a/tests/tapl/com/android/launcher3/tapl/Widget.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/Widget.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/Widget.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/Widget.java
diff --git a/tests/tapl/com/android/launcher3/tapl/WidgetResizeFrame.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/WidgetResizeFrame.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/WidgetResizeFrame.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/WidgetResizeFrame.java
diff --git a/tests/tapl/com/android/launcher3/tapl/Widgets.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/Widgets.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/Widgets.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/Widgets.java
diff --git a/tests/tapl/com/android/launcher3/tapl/Workspace.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/Workspace.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/Workspace.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/Workspace.java
diff --git a/tests/tapl/com/android/launcher3/tapl/WorkspaceAppIcon.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/WorkspaceAppIcon.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/WorkspaceAppIcon.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/WorkspaceAppIcon.java
diff --git a/tests/tapl/com/android/launcher3/tapl/WorkspaceDragSource.java b/tests/multivalentTests/tapl/com/android/launcher3/tapl/WorkspaceDragSource.java
similarity index 100%
rename from tests/tapl/com/android/launcher3/tapl/WorkspaceDragSource.java
rename to tests/multivalentTests/tapl/com/android/launcher3/tapl/WorkspaceDragSource.java
diff --git a/tests/multivalentTestsForDevice b/tests/multivalentTestsForDevice
new file mode 120000
index 0000000..20ee34a
--- /dev/null
+++ b/tests/multivalentTestsForDevice
@@ -0,0 +1 @@
+multivalentTests
\ No newline at end of file
diff --git a/tests/multivalentTestsForDeviceless b/tests/multivalentTestsForDeviceless
new file mode 120000
index 0000000..20ee34a
--- /dev/null
+++ b/tests/multivalentTestsForDeviceless
@@ -0,0 +1 @@
+multivalentTests
\ No newline at end of file
diff --git a/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java b/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java
index f4a2906..69edd0f 100644
--- a/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java
+++ b/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java
@@ -47,7 +47,9 @@
 import com.android.launcher3.util.rule.TestStabilityRule;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
@@ -59,6 +61,9 @@
 @RunWith(AndroidJUnit4.class)
 public class PrivateProfileManagerTest {
 
+    @Rule(order = 0)
+    public TestRule testStabilityRule = new TestStabilityRule();
+
     private static final UserHandle MAIN_HANDLE = Process.myUserHandle();
     private static final UserHandle PRIVATE_HANDLE = new UserHandle(11);
     private static final UserIconInfo MAIN_ICON_INFO =