Merge "Remove Unused parts of LauncherPrefs causing cyclical dependency." into main
diff --git a/quickstep/res/drawable/button_taskbar_edu_colored.xml b/quickstep/res/drawable/button_taskbar_edu_colored.xml
index a94a996..104c4b2 100644
--- a/quickstep/res/drawable/button_taskbar_edu_colored.xml
+++ b/quickstep/res/drawable/button_taskbar_edu_colored.xml
@@ -20,7 +20,7 @@
         android:color="?android:attr/colorControlHighlight">
         <item>
             <shape android:shape="rectangle">
-                <corners android:radius="16dp"/>
+                <corners android:radius="28dp"/>
                 <solid android:color="@color/taskbar_edu_button_color"/>
             </shape>
         </item>
diff --git a/quickstep/res/layout/taskbar_edu_features.xml b/quickstep/res/layout/taskbar_edu_features.xml
index 15de74c..a7bd184 100644
--- a/quickstep/res/layout/taskbar_edu_features.xml
+++ b/quickstep/res/layout/taskbar_edu_features.xml
@@ -122,7 +122,8 @@
         style="@style/TaskbarEdu.Button.Done"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginTop="32dp"
+        android:layout_marginTop="20dp"
+        android:paddingVertical="12dp"
         android:text="@string/taskbar_edu_done"
         android:textColor="?androidprv:attr/textColorOnAccent"
 
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
index 491938d..f6478df 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
@@ -147,6 +147,15 @@
     }
 
     @Override
+    protected boolean isEventWithinSystemGestureRegion(MotionEvent ev) {
+        final float x = ev.getX();
+        final float y = ev.getY();
+
+        return x >= mSystemGestureRegion.left && x < getWidth() - mSystemGestureRegion.right
+                && y >= mSystemGestureRegion.top;
+    }
+
+    @Override
     protected boolean canFindActiveController() {
         // Unlike super class, we want to be able to find controllers when touches occur in the
         // gesture area. For example, this allows Folder to close itself when touching the Taskbar.
diff --git a/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt b/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt
index f1dca7c..1eb71fc 100644
--- a/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt
+++ b/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt
@@ -40,6 +40,7 @@
 import androidx.annotation.VisibleForTesting
 import com.android.app.animation.Interpolators
 import com.android.launcher3.DeviceProfile
+import com.android.launcher3.Flags.enableOverviewIconMenu
 import com.android.launcher3.Launcher
 import com.android.launcher3.QuickstepTransitionManager
 import com.android.launcher3.Utilities
@@ -51,12 +52,14 @@
 import com.android.launcher3.statemanager.StateManager
 import com.android.launcher3.statemanager.StatefulActivity
 import com.android.launcher3.taskbar.TaskbarActivityContext
+import com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE
 import com.android.launcher3.util.SplitConfigurationOptions.SplitSelectSource
 import com.android.launcher3.views.BaseDragLayer
 import com.android.quickstep.TaskViewUtils
 import com.android.quickstep.views.FloatingAppPairView
 import com.android.quickstep.views.FloatingTaskView
 import com.android.quickstep.views.GroupedTaskView
+import com.android.quickstep.views.IconAppChipView
 import com.android.quickstep.views.RecentsView
 import com.android.quickstep.views.SplitInstructionsView
 import com.android.quickstep.views.TaskThumbnailView
@@ -156,16 +159,36 @@
         val iconView: View = taskIdAttributeContainer.iconView.asView()
         builder.add(ObjectAnimator.ofFloat(thumbnail, TaskThumbnailView.SPLASH_ALPHA, 1f))
         thumbnail.setShowSplashForSplitSelection(true)
+        // With the new `IconAppChipView`, we always want to keep the chip pinned to the
+        // top left of the task / thumbnail.
+        if (enableOverviewIconMenu()) {
+            builder.add(
+                ObjectAnimator.ofFloat(
+                    (iconView as IconAppChipView).splitTranslationX,
+                    MULTI_PROPERTY_VALUE,
+                    0f
+                )
+            )
+            builder.add(
+                ObjectAnimator.ofFloat(
+                    iconView.splitTranslationY,
+                    MULTI_PROPERTY_VALUE,
+                    0f
+                )
+            )
+        }
         if (deviceProfile.isLeftRightSplit) {
             // Center view first so scaling happens uniformly, alternatively we can move pivotX to 0
             val centerThumbnailTranslationX: Float = (taskViewWidth - thumbnail.width) / 2f
-            val centerIconTranslationX: Float = (taskViewWidth - iconView.width) / 2f
             val finalScaleX: Float = taskViewWidth.toFloat() / thumbnail.width
             builder.add(ObjectAnimator.ofFloat(thumbnail,
                     TaskThumbnailView.SPLIT_SELECT_TRANSLATE_X, centerThumbnailTranslationX))
-            // icons are anchored from Gravity.END, so need to use negative translation
-            builder.add(ObjectAnimator.ofFloat(iconView, View.TRANSLATION_X,
+            if (!enableOverviewIconMenu()) {
+                // icons are anchored from Gravity.END, so need to use negative translation
+                val centerIconTranslationX: Float = (taskViewWidth - iconView.width) / 2f
+                builder.add(ObjectAnimator.ofFloat(iconView, View.TRANSLATION_X,
                     -centerIconTranslationX))
+            }
             builder.add(ObjectAnimator.ofFloat(thumbnail, View.SCALE_X, finalScaleX))
 
             // Reset other dimensions
@@ -184,7 +207,6 @@
             // asymmetry causes problems..
 
             // Icon defaults to center | horizontal, we add additional translation for split
-            val centerIconTranslationX = 0f
             var centerThumbnailTranslationY: Float
 
             // TODO(b/271468547), primary thumbnail has layout margin above it, so secondary
@@ -201,9 +223,10 @@
             builder.add(ObjectAnimator.ofFloat(thumbnail,
                     TaskThumbnailView.SPLIT_SELECT_TRANSLATE_Y, centerThumbnailTranslationY))
 
-            // icons are anchored from Gravity.END, so need to use negative translation
-            builder.add(ObjectAnimator.ofFloat(iconView, View.TRANSLATION_X,
-                    centerIconTranslationX))
+            if (!enableOverviewIconMenu())  {
+                // icons are anchored from Gravity.END, so need to use negative translation
+                builder.add(ObjectAnimator.ofFloat(iconView, View.TRANSLATION_X, 0f))
+            }
             builder.add(ObjectAnimator.ofFloat(thumbnail, View.SCALE_Y, finalScaleY))
 
             // Reset other dimensions
diff --git a/quickstep/src/com/android/quickstep/views/IconAppChipView.java b/quickstep/src/com/android/quickstep/views/IconAppChipView.java
index 6bb98e1..ba42594 100644
--- a/quickstep/src/com/android/quickstep/views/IconAppChipView.java
+++ b/quickstep/src/com/android/quickstep/views/IconAppChipView.java
@@ -97,11 +97,25 @@
     private final MultiPropertyFactory<View> mViewTranslationY;
 
     /**
+     * Gets the view split x-axis translation
+     */
+    public MultiPropertyFactory<View>.MultiProperty getSplitTranslationX() {
+        return mViewTranslationX.get(INDEX_SPLIT_TRANSLATION);
+    }
+
+    /**
      * Sets the view split x-axis translation
      * @param translationX x-axis translation
      */
     public void setSplitTranslationX(float translationX) {
-        mViewTranslationX.get(INDEX_SPLIT_TRANSLATION).setValue(translationX);
+        getSplitTranslationX().setValue(translationX);
+    }
+
+    /**
+     * Gets the view split y-axis translation
+     */
+    public MultiPropertyFactory<View>.MultiProperty getSplitTranslationY() {
+        return mViewTranslationY.get(INDEX_SPLIT_TRANSLATION);
     }
 
     /**
@@ -109,7 +123,7 @@
      * @param translationY y-axis translation
      */
     public void setSplitTranslationY(float translationY) {
-        mViewTranslationY.get(INDEX_SPLIT_TRANSLATION).setValue(translationY);
+        getSplitTranslationY().setValue(translationY);
     }
 
     /**
diff --git a/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java b/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java
index 7c1b7f3..3f3b9ed 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java
@@ -29,7 +29,6 @@
 import com.android.launcher3.ui.AbstractLauncherUiTest;
 import com.android.launcher3.util.rule.TestStabilityRule;
 
-import org.junit.Before;
 import org.junit.Test;
 
 /**
@@ -41,12 +40,6 @@
     private static final String CALCULATOR_APP_PACKAGE =
             resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR);
 
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        initialize(this);
-    }
-
     @PlatinumTest(focusArea = "launcher")
     @Test
     public void testOverviewActionsMenu() {
diff --git a/quickstep/tests/src/com/android/quickstep/TaplStartLauncherViaGestureTests.java b/quickstep/tests/src/com/android/quickstep/TaplStartLauncherViaGestureTests.java
index 7e274e8..b31f470 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplStartLauncherViaGestureTests.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplStartLauncherViaGestureTests.java
@@ -22,7 +22,6 @@
 import androidx.test.filters.LargeTest;
 import androidx.test.runner.AndroidJUnit4;
 
-import com.android.launcher3.ui.AbstractLauncherUiTest;
 import com.android.launcher3.util.rule.TestStabilityRule.Stability;
 import com.android.quickstep.NavigationModeSwitchRule.NavigationModeSwitch;
 
@@ -40,7 +39,6 @@
     @Before
     public void setUp() throws Exception {
         super.setUp();
-        AbstractLauncherUiTest.initialize(this);
         // b/143488140
         mLauncher.goHome();
         // Start an activity where the gestures start.
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsKeyboardQuickSwitch.java b/quickstep/tests/src/com/android/quickstep/TaplTestsKeyboardQuickSwitch.java
index 36c591e..7c2d41d 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplTestsKeyboardQuickSwitch.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsKeyboardQuickSwitch.java
@@ -23,7 +23,6 @@
 
 import com.android.launcher3.tapl.KeyboardQuickSwitch;
 import com.android.launcher3.taskbar.KeyboardQuickSwitchController;
-import com.android.launcher3.ui.AbstractLauncherUiTest;
 
 import org.junit.Assume;
 import org.junit.Test;
@@ -66,7 +65,6 @@
     public void setUp() throws Exception {
         Assume.assumeTrue(mLauncher.isTablet());
         super.setUp();
-        AbstractLauncherUiTest.initialize(this);
         startAppFast(CALCULATOR_APP_PACKAGE);
         startTestActivity(2);
     }
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
index 1bc2c67..ad8535f 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
@@ -44,7 +44,6 @@
 import com.android.launcher3.tapl.OverviewActions;
 import com.android.launcher3.tapl.OverviewTask;
 import com.android.launcher3.tapl.SelectModeButtons;
-import com.android.launcher3.ui.AbstractLauncherUiTest;
 import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
 import com.android.launcher3.util.Wait;
 import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
@@ -70,7 +69,6 @@
     @Before
     public void setUp() throws Exception {
         super.setUp();
-        AbstractLauncherUiTest.initialize(this);
         executeOnLauncher(launcher -> {
             RecentsView recentsView = launcher.getOverviewPanel();
             recentsView.getPagedViewOrientedState().forceAllowRotationForTesting(true);
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java b/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java
index b7546c7..ec8e00d 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java
@@ -33,7 +33,6 @@
 import com.android.launcher3.tapl.Overview;
 import com.android.launcher3.tapl.Taskbar;
 import com.android.launcher3.tapl.TaskbarAppIcon;
-import com.android.launcher3.ui.AbstractLauncherUiTest;
 import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
 import com.android.launcher3.util.rule.TestStabilityRule;
 import com.android.quickstep.TaskbarModeSwitchRule.TaskbarModeSwitch;
@@ -41,7 +40,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -59,7 +57,6 @@
     @Before
     public void setUp() throws Exception {
         super.setUp();
-        AbstractLauncherUiTest.initialize(this);
 
         if (mLauncher.isTablet()) {
             mLauncher.enableBlockTimeout(true);
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsTrackpad.java b/quickstep/tests/src/com/android/quickstep/TaplTestsTrackpad.java
index b0e91e4..aa8c7b5 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplTestsTrackpad.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsTrackpad.java
@@ -31,12 +31,10 @@
 import com.android.launcher3.Flags;
 import com.android.launcher3.tapl.LauncherInstrumentation.TrackpadGestureType;
 import com.android.launcher3.tapl.Workspace;
-import com.android.launcher3.ui.AbstractLauncherUiTest;
 import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
 import com.android.quickstep.NavigationModeSwitchRule.NavigationModeSwitch;
 
 import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -47,12 +45,6 @@
     private static final String READ_DEVICE_CONFIG_PERMISSION =
             "android.permission.READ_DEVICE_CONFIG";
 
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        AbstractLauncherUiTest.initialize(this);
-    }
-
     @After
     public void tearDown() {
         mLauncher.setTrackpadGestureType(TrackpadGestureType.NONE);
diff --git a/quickstep/tests/src/com/android/quickstep/TaplViewInflationDuringSwipeUp.java b/quickstep/tests/src/com/android/quickstep/TaplViewInflationDuringSwipeUp.java
index f76e17a..6093816 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplViewInflationDuringSwipeUp.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplViewInflationDuringSwipeUp.java
@@ -56,7 +56,6 @@
 import com.android.launcher3.testcomponent.ListViewService;
 import com.android.launcher3.testcomponent.ListViewService.SimpleViewsFactory;
 import com.android.launcher3.testcomponent.TestCommandReceiver;
-import com.android.launcher3.ui.AbstractLauncherUiTest;
 import com.android.launcher3.ui.TestViewHelpers;
 import com.android.launcher3.util.Executors;
 import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
@@ -93,8 +92,6 @@
 
     @Before
     public void setUp() throws Exception {
-        super.setUp();
-
         // Workaround for b/142351228, when there are no activities, the system may not destroy the
         // activity correctly for activities under instrumentation, which can leave two concurrent
         // activities, which changes the order in which the activities are cleaned up (overlapping
@@ -102,7 +99,7 @@
         // is started only after starting another app.
         startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR));
 
-        AbstractLauncherUiTest.initialize(this);
+        super.setUp();
 
         mModel = LauncherAppState.getInstance(mTargetContext).getModel();
         Executors.MODEL_EXECUTOR.submit(mModel.getModelDbController()::createEmptyDB).get();
diff --git a/res/drawable-sw720dp/ic_transient_taskbar_all_apps_search_button.xml b/res/drawable-sw720dp/ic_transient_taskbar_all_apps_search_button.xml
index eb5b41e..8510c66 100644
--- a/res/drawable-sw720dp/ic_transient_taskbar_all_apps_search_button.xml
+++ b/res/drawable-sw720dp/ic_transient_taskbar_all_apps_search_button.xml
@@ -20,17 +20,7 @@
     android:viewportHeight="52"
     android:viewportWidth="52">
 
-  <path
-      android:fillColor="#FF000000"
-      android:pathData="M18.25,17.75m-6,0a6,6 0,1 1,12 0a6,6 0,1 1,-12 0" />
-  <path
-      android:fillColor="#FF000000"
-      android:pathData="M18.25,34.25m-6,0a6,6 0,1 1,12 0a6,6 0,1 1,-12 0" />
-  <path
-      android:fillColor="#FF000000"
-      android:pathData="M34.75,17.75m-6,0a6,6 0,1 1,12 0a6,6 0,1 1,-12 0" />
-  <path
-      android:fillColor="#FF000000"
-      android:fillType="evenOdd"
-      android:pathData="M37.75,34.25C37.75,32.6 36.4,31.25 34.75,31.25C33.1,31.25 31.75,32.6 31.75,34.25C31.75,35.9 33.1,37.25 34.75,37.25C36.4,37.25 37.75,35.9 37.75,34.25ZM28.75,34.25C28.75,30.935 31.435,28.25 34.75,28.25C38.065,28.25 40.75,30.935 40.75,34.25C40.75,35.361 40.449,36.401 39.923,37.292L44.5,41.884L42.386,43.999L37.795,39.422C36.902,39.948 35.862,40.25 34.75,40.25C31.435,40.25 28.75,37.565 28.75,34.25Z" />
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M41.46,42.463L37.063,38.104C36.633,38.398 36.166,38.621 35.663,38.773C35.16,38.925 34.634,39.001 34.084,39.001C32.572,39.001 31.279,38.464 30.203,37.389C29.126,36.314 28.588,35.021 28.588,33.512C28.588,32.002 29.126,30.71 30.201,29.636C31.276,28.562 32.568,28.025 34.078,28.025C35.588,28.025 36.879,28.562 37.953,29.635C39.027,30.708 39.564,31.999 39.564,33.506C39.564,34.071 39.485,34.604 39.325,35.108C39.165,35.611 38.938,36.078 38.644,36.509L43.026,40.882L41.46,42.463ZM18.045,39.015C16.538,39.015 15.248,38.479 14.174,37.404C13.101,36.331 12.564,35.031 12.564,33.506C12.564,31.999 13.101,30.708 14.174,29.635C15.248,28.562 16.538,28.025 18.045,28.025C19.57,28.025 20.87,28.562 21.944,29.635C23.018,30.708 23.555,31.999 23.555,33.506C23.555,35.031 23.018,36.331 21.944,37.404C20.87,38.479 19.57,39.015 18.045,39.015ZM34.084,36.766C34.972,36.766 35.733,36.45 36.365,35.819C36.998,35.189 37.314,34.417 37.314,33.506C37.314,32.618 36.998,31.857 36.365,31.224C35.733,30.591 34.972,30.275 34.084,30.275C33.172,30.275 32.401,30.591 31.77,31.224C31.139,31.857 30.824,32.618 30.824,33.506C30.824,34.417 31.139,35.189 31.77,35.819C32.401,36.45 33.172,36.766 34.084,36.766ZM18.045,23.006C16.538,23.006 15.248,22.469 14.174,21.395C13.101,20.321 12.564,19.021 12.564,17.496C12.564,15.989 13.101,14.699 14.174,13.626C15.248,12.552 16.538,12.016 18.045,12.016C19.57,12.016 20.87,12.552 21.944,13.626C23.018,14.699 23.555,15.989 23.555,17.496C23.555,19.021 23.018,20.321 21.944,21.395C20.87,22.469 19.57,23.006 18.045,23.006ZM34.084,23.006C32.559,23.006 31.259,22.469 30.185,21.395C29.111,20.321 28.574,19.021 28.574,17.496C28.574,15.989 29.111,14.699 30.185,13.626C31.259,12.552 32.559,12.016 34.084,12.016C35.591,12.016 36.881,12.552 37.954,13.626C39.028,14.699 39.564,15.989 39.564,17.496C39.564,19.021 39.028,20.321 37.954,21.395C36.881,22.469 35.591,23.006 34.084,23.006Z" />
 </vector>
\ No newline at end of file
diff --git a/res/drawable/ic_taskbar_all_apps_search_button.xml b/res/drawable/ic_taskbar_all_apps_search_button.xml
index 5b4b01b..49667b7 100644
--- a/res/drawable/ic_taskbar_all_apps_search_button.xml
+++ b/res/drawable/ic_taskbar_all_apps_search_button.xml
@@ -19,17 +19,7 @@
     android:autoMirrored="true"
     android:viewportHeight="44"
     android:viewportWidth="44">
-  <path
-      android:fillColor="#FF000000"
-      android:pathData="M14.333,14.333m-5.333,0a5.333,5.333 0,1 1,10.667 0a5.333,5.333 0,1 1,-10.667 0" />
-  <path
-      android:fillColor="#FF000000"
-      android:pathData="M14.333,28.997m-5.333,0a5.333,5.333 0,1 1,10.667 0a5.333,5.333 0,1 1,-10.667 0" />
-  <path
-      android:fillColor="#FF000000"
-      android:pathData="M28.999,14.333m-5.333,0a5.333,5.333 0,1 1,10.667 0a5.333,5.333 0,1 1,-10.667 0" />
-  <path
-      android:fillColor="#FF000000"
-      android:fillType="evenOdd"
-      android:pathData="M31.668,29.005C31.668,27.538 30.468,26.338 29.001,26.338C27.535,26.338 26.335,27.538 26.335,29.005C26.335,30.472 27.535,31.672 29.001,31.672C30.468,31.672 31.668,30.472 31.668,29.005ZM23.668,29.005C23.668,26.059 26.055,23.672 29.001,23.672C31.948,23.672 34.335,26.059 34.335,29.005C34.335,29.992 34.067,30.917 33.6,31.709L37.669,35.791L35.789,37.671L31.708,33.602C30.915,34.07 29.989,34.339 29.001,34.339C26.055,34.339 23.668,31.952 23.668,29.005Z" />
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M35.351,36.744L31.443,32.869C31.06,33.131 30.645,33.329 30.198,33.464C29.751,33.599 29.283,33.667 28.794,33.667C27.451,33.667 26.301,33.189 25.344,32.233C24.388,31.278 23.91,30.129 23.91,28.787C23.91,27.445 24.387,26.297 25.343,25.343C26.299,24.388 27.447,23.91 28.789,23.91C30.131,23.91 31.279,24.388 32.234,25.341C33.189,26.296 33.666,27.442 33.666,28.782C33.666,29.284 33.595,29.759 33.453,30.206C33.311,30.653 33.11,31.069 32.848,31.451L36.743,35.339L35.351,36.744ZM14.538,33.68C13.198,33.68 12.051,33.202 11.097,32.248C10.143,31.293 9.666,30.138 9.666,28.782C9.666,27.442 10.143,26.296 11.097,25.341C12.051,24.388 13.198,23.91 14.538,23.91C15.893,23.91 17.049,24.388 18.003,25.341C18.958,26.296 19.435,27.442 19.435,28.782C19.435,30.138 18.958,31.293 18.003,32.248C17.049,33.202 15.893,33.68 14.538,33.68ZM28.794,31.68C29.584,31.68 30.26,31.399 30.822,30.839C31.385,30.278 31.666,29.593 31.666,28.782C31.666,27.992 31.385,27.316 30.822,26.754C30.26,26.192 29.584,25.91 28.794,25.91C27.984,25.91 27.298,26.192 26.738,26.754C26.177,27.316 25.897,27.992 25.897,28.782C25.897,29.593 26.177,30.278 26.738,30.839C27.298,31.399 27.984,31.68 28.794,31.68ZM14.538,19.449C13.198,19.449 12.051,18.972 11.097,18.017C10.143,17.062 9.666,15.907 9.666,14.552C9.666,13.212 10.143,12.065 11.097,11.111C12.051,10.157 13.198,9.68 14.538,9.68C15.893,9.68 17.049,10.157 18.003,11.111C18.958,12.065 19.435,13.212 19.435,14.552C19.435,15.907 18.958,17.062 18.003,18.017C17.049,18.972 15.893,19.449 14.538,19.449ZM28.794,19.449C27.439,19.449 26.284,18.972 25.329,18.017C24.374,17.062 23.897,15.907 23.897,14.552C23.897,13.212 24.374,12.065 25.329,11.111C26.284,10.157 27.439,9.68 28.794,9.68C30.134,9.68 31.281,10.157 32.235,11.111C33.189,12.065 33.666,13.212 33.666,14.552C33.666,15.907 33.189,17.062 32.235,18.017C31.281,18.972 30.134,19.449 28.794,19.449Z" />
 </vector>
diff --git a/res/drawable/ic_transient_taskbar_all_apps_search_button.xml b/res/drawable/ic_transient_taskbar_all_apps_search_button.xml
index 85a17f5..b422995 100644
--- a/res/drawable/ic_transient_taskbar_all_apps_search_button.xml
+++ b/res/drawable/ic_transient_taskbar_all_apps_search_button.xml
@@ -19,17 +19,8 @@
     android:autoMirrored="true"
     android:viewportHeight="48"
     android:viewportWidth="48">
-  <path
-      android:fillColor="#FF000000"
-      android:pathData="M16.833,16.333m-5.333,0a5.333,5.333 0,1 1,10.667 0a5.333,5.333 0,1 1,-10.667 0" />
-  <path
-      android:fillColor="#FF000000"
-      android:pathData="M16.833,30.997m-5.333,0a5.333,5.333 0,1 1,10.667 0a5.333,5.333 0,1 1,-10.667 0" />
-  <path
-      android:fillColor="#FF000000"
-      android:pathData="M31.499,16.333m-5.333,0a5.333,5.333 0,1 1,10.667 0a5.333,5.333 0,1 1,-10.667 0" />
-  <path
-      android:fillColor="#FF000000"
-      android:fillType="evenOdd"
-      android:pathData="M34.168,31.005C34.168,29.538 32.968,28.338 31.501,28.338C30.035,28.338 28.835,29.538 28.835,31.005C28.835,32.472 30.035,33.672 31.501,33.672C32.968,33.672 34.168,32.472 34.168,31.005ZM26.168,31.005C26.168,28.059 28.555,25.672 31.501,25.672C34.448,25.672 36.835,28.059 36.835,31.005C36.835,31.992 36.567,32.917 36.1,33.709L40.169,37.791L38.289,39.671L34.208,35.602C33.415,36.07 32.489,36.339 31.501,36.339C28.555,36.339 26.168,33.952 26.168,31.005Z" />
-</vector>
+
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M38.351,38.744L34.443,34.869C34.06,35.131 33.645,35.329 33.198,35.464C32.751,35.599 32.283,35.667 31.794,35.667C30.451,35.667 29.301,35.189 28.344,34.233C27.388,33.278 26.91,32.129 26.91,30.787C26.91,29.445 27.387,28.297 28.343,27.343C29.299,26.388 30.447,25.91 31.789,25.91C33.131,25.91 34.279,26.388 35.234,27.341C36.189,28.296 36.666,29.442 36.666,30.782C36.666,31.284 36.595,31.759 36.453,32.206C36.311,32.653 36.11,33.069 35.848,33.451L39.743,37.339L38.351,38.744ZM17.538,35.68C16.198,35.68 15.051,35.202 14.097,34.248C13.143,33.293 12.666,32.138 12.666,30.782C12.666,29.442 13.143,28.296 14.097,27.341C15.051,26.388 16.198,25.91 17.538,25.91C18.893,25.91 20.049,26.388 21.003,27.341C21.958,28.296 22.435,29.442 22.435,30.782C22.435,32.138 21.958,33.293 21.003,34.248C20.049,35.202 18.893,35.68 17.538,35.68ZM31.794,33.68C32.584,33.68 33.26,33.399 33.822,32.839C34.385,32.278 34.666,31.593 34.666,30.782C34.666,29.992 34.385,29.316 33.822,28.754C33.26,28.192 32.584,27.91 31.794,27.91C30.984,27.91 30.298,28.192 29.738,28.754C29.177,29.316 28.897,29.992 28.897,30.782C28.897,31.593 29.177,32.278 29.738,32.839C30.298,33.399 30.984,33.68 31.794,33.68ZM17.538,21.449C16.198,21.449 15.051,20.972 14.097,20.017C13.143,19.062 12.666,17.907 12.666,16.552C12.666,15.212 13.143,14.065 14.097,13.111C15.051,12.157 16.198,11.68 17.538,11.68C18.893,11.68 20.049,12.157 21.003,13.111C21.958,14.065 22.435,15.212 22.435,16.552C22.435,17.907 21.958,19.062 21.003,20.017C20.049,20.972 18.893,21.449 17.538,21.449ZM31.794,21.449C30.439,21.449 29.284,20.972 28.329,20.017C27.374,19.062 26.897,17.907 26.897,16.552C26.897,15.212 27.374,14.065 28.329,13.111C29.284,12.157 30.439,11.68 31.794,11.68C33.134,11.68 34.281,12.157 35.235,13.111C36.189,14.065 36.666,15.212 36.666,16.552C36.666,17.907 36.189,19.062 35.235,20.017C34.281,20.972 33.134,21.449 31.794,21.449Z" />
+</vector>
\ No newline at end of file
diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java
index 941a793..72758f2 100644
--- a/src/com/android/launcher3/CellLayout.java
+++ b/src/com/android/launcher3/CellLayout.java
@@ -329,7 +329,6 @@
      * Sets or clears a delegate used for accessible drag and drop
      */
     public void setDragAndDropAccessibilityDelegate(DragAndDropAccessibilityDelegate delegate) {
-        setOnClickListener(delegate);
         ViewCompat.setAccessibilityDelegate(this, delegate);
 
         mTouchHelper = delegate;
@@ -337,7 +336,6 @@
                 ? IMPORTANT_FOR_ACCESSIBILITY_YES : IMPORTANT_FOR_ACCESSIBILITY_NO;
         setImportantForAccessibility(accessibilityFlag);
         getShortcutsAndWidgets().setImportantForAccessibility(accessibilityFlag);
-
         // ExploreByTouchHelper sets focusability. Clear it when the delegate is cleared.
         setFocusable(delegate != null);
         // Invalidate the accessibility hierarchy
diff --git a/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt b/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt
index 65c270a..ab5ba54 100644
--- a/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt
+++ b/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt
@@ -87,6 +87,14 @@
         appPairBackground = AppPairIconBackground(context, this)
         appPairBackground.setBounds(0, 0, backgroundSize.toInt(), backgroundSize.toInt())
         applyIcons(parentIcon.info.contents)
+
+        // Center the drawable area in the larger icon canvas
+        val lp: LayoutParams = layoutParams as LayoutParams
+        lp.gravity = Gravity.CENTER_HORIZONTAL
+        lp.topMargin = outerPadding.toInt()
+        lp.height = backgroundSize.toInt()
+        lp.width = backgroundSize.toInt()
+        layoutParams = lp
     }
 
     /** Sets up app pair member icons for drawing. */
@@ -125,15 +133,6 @@
 
     override fun dispatchDraw(canvas: Canvas) {
         super.dispatchDraw(canvas)
-
-        // Center the drawable area in the larger icon canvas
-        val lp: LayoutParams = layoutParams as LayoutParams
-        lp.gravity = Gravity.CENTER_HORIZONTAL
-        lp.topMargin = outerPadding.toInt()
-        lp.height = backgroundSize.toInt()
-        lp.width = backgroundSize.toInt()
-        layoutParams = lp
-
         // Draw background
         appPairBackground.draw(canvas)
 
diff --git a/src/com/android/launcher3/model/PackageUpdatedTask.java b/src/com/android/launcher3/model/PackageUpdatedTask.java
index a41b663..4d06c2e 100644
--- a/src/com/android/launcher3/model/PackageUpdatedTask.java
+++ b/src/com/android/launcher3/model/PackageUpdatedTask.java
@@ -240,8 +240,9 @@
                                 isTargetValid = context.getSystemService(LauncherApps.class)
                                         .isActivityEnabled(cn, mUser);
                             }
-                            if (!isTargetValid && si.hasStatusFlag(
-                                    FLAG_RESTORED_ICON | FLAG_AUTOINSTALL_ICON)) {
+                            if (!isTargetValid && (si.hasStatusFlag(
+                                    FLAG_RESTORED_ICON | FLAG_AUTOINSTALL_ICON)
+                                    || si.isArchived())) {
                                 if (updateWorkspaceItemIntent(context, si, packageName)) {
                                     infoUpdated = true;
                                 } else if (si.hasPromiseIconUi()) {
diff --git a/src/com/android/launcher3/model/WorkspaceItemProcessor.kt b/src/com/android/launcher3/model/WorkspaceItemProcessor.kt
index 287c29e..e38af01 100644
--- a/src/com/android/launcher3/model/WorkspaceItemProcessor.kt
+++ b/src/com/android/launcher3/model/WorkspaceItemProcessor.kt
@@ -132,7 +132,7 @@
         var allowMissingTarget = false
         var intent = c.parseIntent()
         if (intent == null) {
-            c.markDeleted("Null intent for item id=${c.id}", RestoreError.MISSING_INFO)
+            c.markDeleted("Null intent from db for item id=${c.id}", RestoreError.MISSING_INFO)
             return
         }
         var disabledState =
@@ -157,13 +157,19 @@
                 c.markRestored()
             } else {
                 // Gracefully try to find a fallback activity.
+                FileLog.d(
+                    TAG,
+                    "Activity not enabled for id=${c.id}, component=$cn, user=${c.user}." +
+                        " Will attempt to find fallback Activity for targetPkg=$targetPkg."
+                )
                 intent = pmHelper.getAppLaunchIntent(targetPkg, c.user)
                 if (intent != null) {
                     c.restoreFlag = 0
                     c.updater().put(Favorites.INTENT, intent.toUri(0)).commit()
                 } else {
                     c.markDeleted(
-                        "Intent null, unable to find a launch target",
+                        "No Activities found for id=${c.id}, targetPkg=$targetPkg, component=$cn." +
+                            " Unable to create launch Intent.",
                         RestoreError.MISSING_INFO
                     )
                     return
diff --git a/src/com/android/launcher3/views/BaseDragLayer.java b/src/com/android/launcher3/views/BaseDragLayer.java
index abc5ef8..5d2d3f4 100644
--- a/src/com/android/launcher3/views/BaseDragLayer.java
+++ b/src/com/android/launcher3/views/BaseDragLayer.java
@@ -104,7 +104,7 @@
     protected final Rect mHitRect = new Rect();
 
     @ViewDebug.ExportedProperty(category = "launcher")
-    private final RectF mSystemGestureRegion = new RectF();
+    protected final RectF mSystemGestureRegion = new RectF();
     private int mTouchDispatchState = 0;
 
     protected final T mActivity;
@@ -164,7 +164,7 @@
         return findActiveController(ev);
     }
 
-    private boolean isEventInLauncher(MotionEvent ev) {
+    protected boolean isEventWithinSystemGestureRegion(MotionEvent ev) {
         final float x = ev.getX();
         final float y = ev.getY();
 
@@ -175,7 +175,8 @@
     private TouchController findControllerToHandleTouch(MotionEvent ev) {
         AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(mActivity);
         if (topView != null
-                && (isEventInLauncher(ev) || topView.canInterceptEventsInSystemGestureRegion())
+                && (isEventWithinSystemGestureRegion(ev)
+                || topView.canInterceptEventsInSystemGestureRegion())
                 && topView.onControllerInterceptTouchEvent(ev)) {
             return topView;
         }
@@ -287,7 +288,7 @@
                 mTouchDispatchState |= TOUCH_DISPATCHING_FROM_VIEW
                         | TOUCH_DISPATCHING_TO_VIEW_IN_PROGRESS;
 
-                if (isEventInLauncher(ev)) {
+                if (isEventWithinSystemGestureRegion(ev)) {
                     mTouchDispatchState &= ~TOUCH_DISPATCHING_FROM_VIEW_GESTURE_REGION;
                 } else {
                     mTouchDispatchState |= TOUCH_DISPATCHING_FROM_VIEW_GESTURE_REGION;
diff --git a/tests/src/com/android/launcher3/allapps/TaplAllAppsIconsWorkingTest.java b/tests/src/com/android/launcher3/allapps/TaplAllAppsIconsWorkingTest.java
index ef5af0f..10e9f8a 100644
--- a/tests/src/com/android/launcher3/allapps/TaplAllAppsIconsWorkingTest.java
+++ b/tests/src/com/android/launcher3/allapps/TaplAllAppsIconsWorkingTest.java
@@ -24,7 +24,6 @@
 import com.android.launcher3.ui.AbstractLauncherUiTest;
 import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
 
-import org.junit.Before;
 import org.junit.Test;
 
 /**
@@ -33,12 +32,6 @@
  */
 public class TaplAllAppsIconsWorkingTest extends AbstractLauncherUiTest {
 
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        initialize(this);
-    }
-
     /**
      * Makes sure we can launch an icon from All apps
      */
diff --git a/tests/src/com/android/launcher3/allapps/TaplKeyboardFocusTest.java b/tests/src/com/android/launcher3/allapps/TaplKeyboardFocusTest.java
index db574a1..0360470 100644
--- a/tests/src/com/android/launcher3/allapps/TaplKeyboardFocusTest.java
+++ b/tests/src/com/android/launcher3/allapps/TaplKeyboardFocusTest.java
@@ -32,7 +32,6 @@
 import com.android.launcher3.util.rule.TestStabilityRule;
 import com.android.launcher3.views.ActivityContext;
 
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -40,12 +39,6 @@
 @RunWith(AndroidJUnit4.class)
 public class TaplKeyboardFocusTest extends AbstractLauncherUiTest {
 
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        initialize(this);
-    }
-
     @Test
     public void testAllAppsFocusApp() {
         final HomeAllApps allApps = mLauncher.goHome().switchToAllApps();
diff --git a/tests/src/com/android/launcher3/allapps/TaplOpenCloseAllAppsTest.java b/tests/src/com/android/launcher3/allapps/TaplOpenCloseAllAppsTest.java
index 848ae82..4d73f7a 100644
--- a/tests/src/com/android/launcher3/allapps/TaplOpenCloseAllAppsTest.java
+++ b/tests/src/com/android/launcher3/allapps/TaplOpenCloseAllAppsTest.java
@@ -36,7 +36,6 @@
 import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
 import com.android.launcher3.util.rule.ScreenRecordRule;
 
-import org.junit.Before;
 import org.junit.Test;
 
 /**
@@ -49,15 +48,6 @@
             "android.permission.READ_DEVICE_CONFIG";
 
     /**
-     * Calls static method initialize
-     */
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        initialize(this);
-    }
-
-    /**
      * Make sure we can go home after pressing the context menu on an Icon on the AllApps.
      */
     @Test
diff --git a/tests/src/com/android/launcher3/appiconmenu/TaplAppIconMenuTest.java b/tests/src/com/android/launcher3/appiconmenu/TaplAppIconMenuTest.java
index ec24397..c69d1b9 100644
--- a/tests/src/com/android/launcher3/appiconmenu/TaplAppIconMenuTest.java
+++ b/tests/src/com/android/launcher3/appiconmenu/TaplAppIconMenuTest.java
@@ -31,7 +31,6 @@
 import com.android.launcher3.ui.AbstractLauncherUiTest;
 import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
 
-import org.junit.Before;
 import org.junit.Test;
 
 /**
@@ -41,12 +40,6 @@
  */
 public class TaplAppIconMenuTest extends AbstractLauncherUiTest {
 
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        initialize(this);
-    }
-
     private boolean isOptionsPopupVisible(Launcher launcher) {
         final ArrowPopup<?> popup = launcher.getOptionsPopup();
         return popup != null && popup.isShown();
diff --git a/tests/src/com/android/launcher3/celllayout/TaplReorderWidgetsTest.java b/tests/src/com/android/launcher3/celllayout/TaplReorderWidgetsTest.java
index 8bdcd03..aca9765 100644
--- a/tests/src/com/android/launcher3/celllayout/TaplReorderWidgetsTest.java
+++ b/tests/src/com/android/launcher3/celllayout/TaplReorderWidgetsTest.java
@@ -72,7 +72,7 @@
     @Before
     public void setup() throws Throwable {
         mWorkspaceBuilder = new TestWorkspaceBuilder(mTargetContext);
-        AbstractLauncherUiTest.initialize(this);
+        super.setUp();
     }
 
     @After
diff --git a/tests/src/com/android/launcher3/dragging/TaplDragTest.java b/tests/src/com/android/launcher3/dragging/TaplDragTest.java
index 9942602..d57461f 100644
--- a/tests/src/com/android/launcher3/dragging/TaplDragTest.java
+++ b/tests/src/com/android/launcher3/dragging/TaplDragTest.java
@@ -16,8 +16,8 @@
 package com.android.launcher3.dragging;
 
 import static com.android.launcher3.util.TestConstants.AppNames.GMAIL_APP_NAME;
-import static com.android.launcher3.util.TestConstants.AppNames.PHOTOS_APP_NAME;
 import static com.android.launcher3.util.TestConstants.AppNames.MAPS_APP_NAME;
+import static com.android.launcher3.util.TestConstants.AppNames.PHOTOS_APP_NAME;
 import static com.android.launcher3.util.TestConstants.AppNames.STORE_APP_NAME;
 import static com.android.launcher3.util.TestConstants.AppNames.TEST_APP_NAME;
 import static com.android.launcher3.util.rule.TestStabilityRule.LOCAL;
@@ -44,7 +44,6 @@
 import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
 import com.android.launcher3.util.rule.TestStabilityRule;
 
-import org.junit.Before;
 import org.junit.Test;
 
 /**
@@ -59,12 +58,6 @@
  */
 public class TaplDragTest extends AbstractLauncherUiTest {
 
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        initialize(this);
-    }
-
     /**
      * Adds two icons to the Workspace and combines them into a folder, then makes sure the icons
      * are no longer in the Workspace then adds a third one to test adding an icon to an existing
diff --git a/tests/src/com/android/launcher3/dragging/TaplUninstallRemoveTest.java b/tests/src/com/android/launcher3/dragging/TaplUninstallRemoveTest.java
index a5d5884..e21309f 100644
--- a/tests/src/com/android/launcher3/dragging/TaplUninstallRemoveTest.java
+++ b/tests/src/com/android/launcher3/dragging/TaplUninstallRemoveTest.java
@@ -41,7 +41,6 @@
 import com.android.launcher3.util.Wait;
 import com.android.launcher3.util.rule.TestStabilityRule;
 
-import org.junit.Before;
 import org.junit.Test;
 
 import java.io.IOException;
@@ -54,12 +53,6 @@
  */
 public class TaplUninstallRemoveTest extends AbstractLauncherUiTest {
 
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        initialize(this);
-    }
-
     /**
      * Deletes app both built-in and user-installed from the Workspace and makes sure it's no longer
      * in the Workspace.
diff --git a/tests/src/com/android/launcher3/model/WorkspaceItemProcessorTest.kt b/tests/src/com/android/launcher3/model/WorkspaceItemProcessorTest.kt
index fc7caed..30957fc 100644
--- a/tests/src/com/android/launcher3/model/WorkspaceItemProcessorTest.kt
+++ b/tests/src/com/android/launcher3/model/WorkspaceItemProcessorTest.kt
@@ -201,7 +201,7 @@
         // When
         itemProcessorUnderTest.processItem()
         // Then
-        verify(mockCursor).markDeleted("Null intent for item id=1", MISSING_INFO)
+        verify(mockCursor).markDeleted("Null intent from db for item id=1", MISSING_INFO)
         verify(mockCursor, times(0)).checkAndAddItem(any(), any(), anyOrNull())
     }
 
@@ -309,7 +309,14 @@
         assertWithMessage("item restoreFlag should be unchanged")
             .that(mockCursor.restoreFlag)
             .isEqualTo(1)
-        verify(mockCursor).markDeleted("Intent null, unable to find a launch target", MISSING_INFO)
+        verify(mockCursor)
+            .markDeleted(
+                "No Activities found for id=1," +
+                    " targetPkg=package," +
+                    " component=ComponentInfo{package/class}." +
+                    " Unable to create launch Intent.",
+                MISSING_INFO
+            )
         verify(mockCursor, times(0)).checkAndAddItem(any(), any(), anyOrNull())
     }
 
diff --git a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3Test.java b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3Test.java
index d26a9db..4eae7e1 100644
--- a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3Test.java
+++ b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3Test.java
@@ -21,7 +21,6 @@
 import androidx.test.filters.LargeTest;
 import androidx.test.runner.AndroidJUnit4;
 
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -29,12 +28,6 @@
 @RunWith(AndroidJUnit4.class)
 public class TaplTestsLauncher3Test extends AbstractLauncherUiTest {
 
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        initialize(this);
-    }
-
     @Test
     public void testDevicePressMenu() throws Exception {
         mDevice.pressMenu();
diff --git a/tests/src/com/android/launcher3/ui/TaplWorkProfileTest.java b/tests/src/com/android/launcher3/ui/TaplWorkProfileTest.java
index f8f5dde..802e564 100644
--- a/tests/src/com/android/launcher3/ui/TaplWorkProfileTest.java
+++ b/tests/src/com/android/launcher3/ui/TaplWorkProfileTest.java
@@ -28,7 +28,6 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeTrue;
 
-import android.platform.test.rule.ScreenRecordRule;
 import android.util.Log;
 import android.view.View;
 
@@ -45,7 +44,8 @@
 import com.android.launcher3.allapps.WorkProfileManager;
 import com.android.launcher3.tapl.LauncherInstrumentation;
 import com.android.launcher3.util.TestUtil;
-import com.android.launcher3.util.rule.TestStabilityRule;
+import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
+import com.android.launcher3.util.rule.TestStabilityRule.Stability;
 
 import org.junit.After;
 import org.junit.Before;
@@ -145,8 +145,8 @@
     }
 
     // Staging; will be promoted to presubmit if stable
-    @TestStabilityRule.Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT)
-    @ScreenRecordRule.ScreenRecord
+    @Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT)
+    @ScreenRecord
     @Test
     public void toggleWorks() {
         assumeTrue(mWorkProfileSetupSuccessful);
diff --git a/tests/src/com/android/launcher3/ui/widget/TaplAddWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/TaplAddWidgetTest.java
index ec226af..5ca5ba5 100644
--- a/tests/src/com/android/launcher3/ui/widget/TaplAddWidgetTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/TaplAddWidgetTest.java
@@ -37,7 +37,6 @@
 import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
 
 import org.junit.Assume;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -52,13 +51,6 @@
     @Rule
     public ShellCommandRule mGrantWidgetRule = ShellCommandRule.grantWidgetBind();
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        AbstractLauncherUiTest.initialize(this);
-    }
-
     @Test
     @PortraitLandscape
     @ScreenRecord // b/316910614
diff --git a/tests/src/com/android/launcher3/ui/widget/TaplRequestPinItemTest.java b/tests/src/com/android/launcher3/ui/widget/TaplRequestPinItemTest.java
index f12f961..7dba728 100644
--- a/tests/src/com/android/launcher3/ui/widget/TaplRequestPinItemTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/TaplRequestPinItemTest.java
@@ -74,7 +74,6 @@
         super.setUp();
         mCallbackAction = UUID.randomUUID().toString();
         mShortcutId = UUID.randomUUID().toString();
-        AbstractLauncherUiTest.initialize(this);
     }
 
     @Test
diff --git a/tests/src/com/android/launcher3/ui/widget/TaplWidgetPickerTest.java b/tests/src/com/android/launcher3/ui/widget/TaplWidgetPickerTest.java
index bc73683..1cd8c88 100644
--- a/tests/src/com/android/launcher3/ui/widget/TaplWidgetPickerTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/TaplWidgetPickerTest.java
@@ -30,7 +30,6 @@
 import com.android.launcher3.widget.picker.WidgetsFullSheet;
 import com.android.launcher3.widget.picker.WidgetsRecyclerView;
 
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -42,12 +41,6 @@
 @RunWith(AndroidJUnit4.class)
 public class TaplWidgetPickerTest extends AbstractLauncherUiTest {
 
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-        initialize(this);
-    }
-
     private WidgetsRecyclerView getWidgetsView(Launcher launcher) {
         return WidgetsFullSheet.getWidgetsView(launcher);
     }
diff --git a/tests/src/com/android/launcher3/ui/workspace/TaplThemeIconsTest.java b/tests/src/com/android/launcher3/ui/workspace/TaplThemeIconsTest.java
index a3d3344..c60ee8c 100644
--- a/tests/src/com/android/launcher3/ui/workspace/TaplThemeIconsTest.java
+++ b/tests/src/com/android/launcher3/ui/workspace/TaplThemeIconsTest.java
@@ -57,7 +57,7 @@
     @Test
     public void testIconWithoutTheme() throws Exception {
         setThemeEnabled(false);
-        AbstractLauncherUiTest.initialize(this);
+        initialize(this);
 
         HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps();
         allApps.freeze();
@@ -75,7 +75,7 @@
     @Test
     public void testShortcutIconWithoutTheme() throws Exception {
         setThemeEnabled(false);
-        AbstractLauncherUiTest.initialize(this);
+        initialize(this);
 
         HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps();
         allApps.freeze();
@@ -94,7 +94,7 @@
     @Test
     public void testIconWithTheme() throws Exception {
         setThemeEnabled(true);
-        AbstractLauncherUiTest.initialize(this);
+        initialize(this);
 
         HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps();
         allApps.freeze();
@@ -112,7 +112,7 @@
     @Test
     public void testShortcutIconWithTheme() throws Exception {
         setThemeEnabled(true);
-        AbstractLauncherUiTest.initialize(this);
+        initialize(this);
 
         HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps();
         allApps.freeze();
diff --git a/tests/src/com/android/launcher3/util/CellContentDimensionsTest.kt b/tests/src/com/android/launcher3/util/CellContentDimensionsTest.kt
index 4770546..2294f5f 100644
--- a/tests/src/com/android/launcher3/util/CellContentDimensionsTest.kt
+++ b/tests/src/com/android/launcher3/util/CellContentDimensionsTest.kt
@@ -39,6 +39,7 @@
         val config =
             Configuration(runningContext.resources.configuration).apply {
                 this.densityDpi = DisplayMetrics.DENSITY_DEFAULT
+                fontScale = 1.0f
             }
         context = runningContext.createConfigurationContext(config)
         iconSizeSteps = IconSizeSteps(context!!.resources)