Merge "Account for span greater than 1 in getReorderRadius" into tm-qpr-dev
diff --git a/proguard.flags b/proguard.flags
index a450183..53a68de 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -2,10 +2,6 @@
   *;
 }
 
--keep class com.android.launcher3.graphics.ShadowDrawable {
-  public <init>(...);
-}
-
 # The support library contains references to newer platform versions.
 # Don't warn about those in case this app is linking against an older
 # platform version.  We know about them, and they are safe.
diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml
index 35215e1..cfe602e 100644
--- a/quickstep/res/values/dimens.xml
+++ b/quickstep/res/values/dimens.xml
@@ -263,6 +263,7 @@
     <dimen name="taskbar_contextual_buttons_size">35dp</dimen>
     <dimen name="taskbar_stashed_size">24dp</dimen>
     <dimen name="taskbar_stashed_handle_width">220dp</dimen>
+    <dimen name="taskbar_stashed_small_screen">108dp</dimen>
     <dimen name="taskbar_unstash_input_area">316dp</dimen>
     <dimen name="taskbar_stashed_handle_height">4dp</dimen>
     <dimen name="taskbar_edu_wave_anim_trans_y">25dp</dimen>
diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
index 3e13a44..c089d1b 100644
--- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
+++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
@@ -43,7 +43,6 @@
 import static com.android.launcher3.config.FeatureFlags.SEPARATE_RECENTS_ACTIVITY;
 import static com.android.launcher3.model.data.ItemInfo.NO_MATCHING_ID;
 import static com.android.launcher3.statehandlers.DepthController.DEPTH;
-import static com.android.launcher3.testing.shared.TestProtocol.BAD_STATE;
 import static com.android.launcher3.util.window.RefreshRateTracker.getSingleFrameMs;
 import static com.android.launcher3.views.FloatingIconView.SHAPE_PROGRESS_DURATION;
 import static com.android.launcher3.views.FloatingIconView.getFloatingIconView;
@@ -77,7 +76,6 @@
 import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.provider.Settings;
-import android.util.Log;
 import android.util.Pair;
 import android.util.Size;
 import android.view.SurfaceControl;
@@ -137,7 +135,6 @@
 import com.android.wm.shell.startingsurface.IStartingWindowListener;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.List;
 
@@ -447,7 +444,7 @@
                         4 - rotationChange);
             }
         }
-        if (mDeviceProfile.isTaskbarPresentInApps) {
+        if (mDeviceProfile.isTaskbarPresentInApps && !target.willShowImeOnTarget) {
             // Animate to above the taskbar.
             bounds.bottom -= target.contentInsets.bottom;
         }
@@ -623,28 +620,9 @@
         RecentsView overview = mLauncher.getOverviewPanel();
         ObjectAnimator alpha = ObjectAnimator.ofFloat(overview,
                 RecentsView.CONTENT_ALPHA, alphas);
-        Log.d(BAD_STATE, "QTM composeViewContentAnimator alphas=" + Arrays.toString(alphas));
-        alpha.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationStart(Animator animation) {
-                Log.d(BAD_STATE, "QTM composeViewContentAnimator onStart");
-            }
-
-            @Override
-            public void onAnimationCancel(Animator animation) {
-                float alpha = overview == null ? -1 : RecentsView.CONTENT_ALPHA.get(overview);
-                Log.d(BAD_STATE, "QTM composeViewContentAnimator onCancel, alpha=" + alpha);
-            }
-
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                Log.d(BAD_STATE, "QTM composeViewContentAnimator onEnd");
-            }
-        });
         alpha.setDuration(CONTENT_ALPHA_DURATION);
         alpha.setInterpolator(LINEAR);
         anim.play(alpha);
-        Log.d(BAD_STATE, "QTM composeViewContentAnimator setFreezeVisibility=true");
         overview.setFreezeViewVisibility(true);
 
         ObjectAnimator scaleAnim = ObjectAnimator.ofFloat(overview, SCALE_PROPERTY, scales);
@@ -653,7 +631,6 @@
         anim.play(scaleAnim);
 
         return () -> {
-            Log.d(BAD_STATE, "QTM composeViewContentAnimator onEnd setFreezeVisibility=false");
             overview.setFreezeViewVisibility(false);
             SCALE_PROPERTY.set(overview, 1f);
             mLauncher.getStateManager().reapplyState();
diff --git a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
index 800e162..0652463 100644
--- a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
@@ -15,6 +15,8 @@
  */
 package com.android.launcher3.taskbar;
 
+import static com.android.launcher3.taskbar.TaskbarManager.isPhoneMode;
+
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
@@ -25,6 +27,7 @@
 import android.view.View;
 import android.view.ViewOutlineProvider;
 
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.RevealOutlineAnimation;
@@ -55,9 +58,9 @@
     private final TaskbarActivityContext mActivity;
     private final SharedPreferences mPrefs;
     private final StashedHandleView mStashedHandleView;
-    private final int mStashedHandleWidth;
+    private int mStashedHandleWidth;
     private final int mStashedHandleHeight;
-    private final RegionSamplingHelper mRegionSamplingHelper;
+    private RegionSamplingHelper mRegionSamplingHelper;
     private final MultiValueAlpha mTaskbarStashedHandleAlpha;
     private final AnimatedFloat mTaskbarStashedHandleHintScale = new AnimatedFloat(
             this::updateStashedHandleHintScale);
@@ -85,30 +88,27 @@
                 mPrefs.getBoolean(SHARED_PREFS_STASHED_HANDLE_REGION_DARK_KEY, false),
                 false /* animate */);
         final Resources resources = mActivity.getResources();
-        mStashedHandleWidth = resources.getDimensionPixelSize(R.dimen.taskbar_stashed_handle_width);
         mStashedHandleHeight = resources.getDimensionPixelSize(
                 R.dimen.taskbar_stashed_handle_height);
-        mRegionSamplingHelper = new RegionSamplingHelper(mStashedHandleView,
-                new RegionSamplingHelper.SamplingCallback() {
-                    @Override
-                    public void onRegionDarknessChanged(boolean isRegionDark) {
-                        mStashedHandleView.updateHandleColor(isRegionDark, true /* animate */);
-                        mPrefs.edit().putBoolean(SHARED_PREFS_STASHED_HANDLE_REGION_DARK_KEY,
-                                isRegionDark).apply();
-                    }
-
-                    @Override
-                    public Rect getSampledRegion(View sampledView) {
-                        return mStashedHandleView.getSampledRegion();
-                    }
-                }, Executors.UI_HELPER_EXECUTOR);
     }
 
     public void init(TaskbarControllers controllers) {
         mControllers = controllers;
-        mStashedHandleView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarSize;
+        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
+        Resources resources = mActivity.getResources();
+        if (isPhoneMode(mActivity.getDeviceProfile())) {
+            mStashedHandleView.getLayoutParams().height =
+                    resources.getDimensionPixelSize(R.dimen.taskbar_size);
+            mStashedHandleWidth =
+                    resources.getDimensionPixelSize(R.dimen.taskbar_stashed_small_screen);
+        } else {
+            mStashedHandleView.getLayoutParams().height = deviceProfile.taskbarSize;
+            mStashedHandleWidth =
+                    resources.getDimensionPixelSize(R.dimen.taskbar_stashed_handle_width);
+        }
 
-        mTaskbarStashedHandleAlpha.getProperty(ALPHA_INDEX_STASHED).setValue(0);
+        mTaskbarStashedHandleAlpha.getProperty(ALPHA_INDEX_STASHED).setValue(
+                isPhoneMode(deviceProfile) ? 1 : 0);
         mTaskbarStashedHandleHintScale.updateValue(1f);
 
         final int stashedTaskbarHeight = mControllers.taskbarStashController.getStashedHeight();
@@ -135,10 +135,33 @@
             view.setPivotX(stashedCenterX);
             view.setPivotY(stashedCenterY);
         });
+        initRegionSampler();
+        if (isPhoneMode(deviceProfile)) {
+            onIsStashedChanged(true);
+        }
     }
 
+    private void initRegionSampler() {
+        mRegionSamplingHelper = new RegionSamplingHelper(mStashedHandleView,
+                new RegionSamplingHelper.SamplingCallback() {
+                    @Override
+                    public void onRegionDarknessChanged(boolean isRegionDark) {
+                        mStashedHandleView.updateHandleColor(isRegionDark, true /* animate */);
+                        mPrefs.edit().putBoolean(SHARED_PREFS_STASHED_HANDLE_REGION_DARK_KEY,
+                                isRegionDark).apply();
+                    }
+
+                    @Override
+                    public Rect getSampledRegion(View sampledView) {
+                        return mStashedHandleView.getSampledRegion();
+                    }
+                }, Executors.UI_HELPER_EXECUTOR);
+    }
+
+
     public void onDestroy() {
         mRegionSamplingHelper.stopAndDestroy();
+        mRegionSamplingHelper = null;
     }
 
     public MultiValueAlpha getStashedHandleAlpha() {
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
index 3145ec3..f5fe77a 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
@@ -23,8 +23,9 @@
 
 import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
 import static com.android.launcher3.AbstractFloatingView.TYPE_REBIND_SAFE;
-import static com.android.launcher3.testing.shared.ResourceUtils.getBoolByName;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_FOLDER_OPEN;
+import static com.android.launcher3.taskbar.TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW;
+import static com.android.launcher3.testing.shared.ResourceUtils.getBoolByName;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING;
@@ -130,6 +131,8 @@
     // The flag to know if the window is excluded from magnification region computation.
     private boolean mIsExcludeFromMagnificationRegion = false;
     private boolean mBindingItems = false;
+    private boolean mAddedWindow = false;
+
 
     private final TaskbarShortcutMenuAccessibilityDelegate mAccessibilityDelegate;
 
@@ -218,7 +221,12 @@
         mControllers.init(sharedState);
         updateSysuiStateFlags(sharedState.sysuiStateFlags, true /* fromInit */);
 
-        mWindowManager.addView(mDragLayer, mWindowLayoutParams);
+        if (!mAddedWindow) {
+            mWindowManager.addView(mDragLayer, mWindowLayoutParams);
+            mAddedWindow = true;
+        } else {
+            mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams);
+        }
     }
 
     @Override
@@ -461,7 +469,10 @@
         mIsDestroyed = true;
         setUIController(TaskbarUIController.DEFAULT);
         mControllers.onDestroy();
-        mWindowManager.removeViewImmediate(mDragLayer);
+        if (!FLAG_HIDE_NAVBAR_WINDOW) {
+            mWindowManager.removeViewImmediate(mDragLayer);
+            mAddedWindow = false;
+        }
     }
 
     public void updateSysuiStateFlags(int systemUiStateFlags, boolean fromInit) {
@@ -596,6 +607,9 @@
      * Returns the default height of the window, including the static corner radii above taskbar.
      */
     public int getDefaultTaskbarWindowHeight() {
+        if (FLAG_HIDE_NAVBAR_WINDOW && mDeviceProfile.isPhone) {
+            return getResources().getDimensionPixelSize(R.dimen.taskbar_stashed_size);
+        }
         return mDeviceProfile.taskbarSize + Math.max(getLeftCornerRadius(), getRightCornerRadius());
     }
 
@@ -846,6 +860,6 @@
         pw.println(String.format(
                 "%s\tmBindInProgress=%b", prefix, mBindingItems));
         mControllers.dumpLogs(prefix + "\t", pw);
-        mDeviceProfile.dump(prefix, pw);
+        mDeviceProfile.dump(this, prefix, pw);
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
index 1c8148b..ee17ad0 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
@@ -86,8 +86,14 @@
         }
     }
 
+    protected void onDestroy(boolean forceDestroy) {
+        if (forceDestroy) {
+            ViewTreeObserverWrapper.removeOnComputeInsetsListener(mTaskbarInsetsComputer);
+        }
+    }
+
     protected void onDestroy() {
-        ViewTreeObserverWrapper.removeOnComputeInsetsListener(mTaskbarInsetsComputer);
+        onDestroy(!TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW);
     }
 
     @Override
@@ -101,7 +107,7 @@
     protected void onDetachedFromWindow() {
         super.onDetachedFromWindow();
 
-        onDestroy();
+        onDestroy(true);
     }
 
     @Override
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
index 06262c0..353bf89 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
@@ -30,6 +30,7 @@
 import android.hardware.display.DisplayManager;
 import android.net.Uri;
 import android.os.Handler;
+import android.os.SystemProperties;
 import android.provider.Settings;
 import android.view.Display;
 
@@ -58,6 +59,9 @@
  */
 public class TaskbarManager {
 
+    public static final boolean FLAG_HIDE_NAVBAR_WINDOW =
+            SystemProperties.getBoolean("persist.wm.debug.hide_navbar_window", false);
+
     private static final Uri USER_SETUP_COMPLETE_URI = Settings.Secure.getUriFor(
             Settings.Secure.USER_SETUP_COMPLETE);
 
@@ -147,7 +151,7 @@
                 } else {
                     // Config change might be handled without re-creating the taskbar
                     if (mTaskbarActivityContext != null) {
-                        if (dp != null && dp.isTaskbarPresent) {
+                        if (dp != null && isTaskbarPresent(dp)) {
                             mTaskbarActivityContext.updateDeviceProfile(dp);
                         }
                         mTaskbarActivityContext.onConfigurationChanged(configDiff);
@@ -159,7 +163,8 @@
             @Override
             public void onLowMemory() { }
         };
-        mShutdownReceiver = new SimpleBroadcastReceiver(i -> destroyExistingTaskbar());
+        mShutdownReceiver = new SimpleBroadcastReceiver(i ->
+                destroyExistingTaskbar());
         mDispInfoChangeListener = (context, info, flags) -> {
             if ((flags & CHANGE_FLAGS) != 0) {
                 recreateTaskbar();
@@ -179,7 +184,9 @@
     private void destroyExistingTaskbar() {
         if (mTaskbarActivityContext != null) {
             mTaskbarActivityContext.onDestroy();
-            mTaskbarActivityContext = null;
+            if (!FLAG_HIDE_NAVBAR_WINDOW) {
+                mTaskbarActivityContext = null;
+            }
         }
     }
 
@@ -260,24 +267,32 @@
         }
     }
 
+    /**
+     * This method is called multiple times (ex. initial init, then when user unlocks) in which case
+     * we fully want to destroy an existing taskbar and create a new one.
+     * In other case (folding/unfolding) we don't need to remove and add window.
+     */
     private void recreateTaskbar() {
+        DeviceProfile dp = mUserUnlocked ?
+                LauncherAppState.getIDP(mContext).getDeviceProfile(mContext) : null;
+
         destroyExistingTaskbar();
 
-        DeviceProfile dp =
-                mUserUnlocked ? LauncherAppState.getIDP(mContext).getDeviceProfile(mContext) : null;
-
-        boolean isTaskBarEnabled = dp != null && dp.isTaskbarPresent;
-
+        boolean isTaskBarEnabled = dp != null && isTaskbarPresent(dp);
         if (!isTaskBarEnabled) {
             SystemUiProxy.INSTANCE.get(mContext)
                     .notifyTaskbarStatus(/* visible */ false, /* stashed */ false);
             return;
         }
 
-        mTaskbarActivityContext = new TaskbarActivityContext(mContext, dp, mNavButtonController,
-                mUnfoldProgressProvider);
-
+        if (mTaskbarActivityContext == null) {
+            mTaskbarActivityContext = new TaskbarActivityContext(mContext, dp, mNavButtonController,
+                    mUnfoldProgressProvider);
+        } else {
+            mTaskbarActivityContext.updateDeviceProfile(dp);
+        }
         mTaskbarActivityContext.init(mSharedState);
+
         if (mActivity != null) {
             mTaskbarActivityContext.setUIController(
                     createTaskbarUIControllerForActivity(mActivity));
@@ -301,6 +316,18 @@
         }
     }
 
+    /**
+     * @return {@code true} if provided device profile isn't a large screen profile
+     *                      and we are using a single window for taskbar and navbar.
+     */
+    public static boolean isPhoneMode(DeviceProfile deviceProfile) {
+        return TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW && deviceProfile.isPhone;
+    }
+
+    private boolean isTaskbarPresent(DeviceProfile deviceProfile) {
+        return FLAG_HIDE_NAVBAR_WINDOW || deviceProfile.isTaskbarPresent;
+    }
+
     public void onRotationProposal(int rotation, boolean isValid) {
         if (mTaskbarActivityContext != null) {
             mTaskbarActivityContext.onRotationProposal(rotation, isValid);
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
index 8533145..114ab4e 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
@@ -20,6 +20,7 @@
 import static com.android.launcher3.LauncherState.ALL_APPS;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_LONGPRESS_HIDE;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_LONGPRESS_SHOW;
+import static com.android.launcher3.taskbar.TaskbarManager.isPhoneMode;
 import static com.android.launcher3.taskbar.Utilities.appendFlag;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SWITCHER_SHOWING;
@@ -30,6 +31,7 @@
 import android.animation.AnimatorSet;
 import android.annotation.Nullable;
 import android.content.SharedPreferences;
+import android.content.res.Resources;
 import android.util.Log;
 import android.view.View;
 import android.view.ViewConfiguration;
@@ -38,6 +40,7 @@
 
 import com.android.internal.jank.InteractionJankMonitor;
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.AnimatorListeners;
 import com.android.launcher3.testing.shared.TestProtocol;
@@ -69,6 +72,7 @@
     public static final int FLAG_IN_STASHED_LAUNCHER_STATE = 1 << 6;
     public static final int FLAG_STASHED_IN_APP_ALL_APPS = 1 << 7; // All apps is visible.
     public static final int FLAG_IN_SETUP = 1 << 8; // In the Setup Wizard
+    public static final int FLAG_STASHED_SMALL_SCREEN = 1 << 9; // phone screen gesture nav, stashed
 
     // If any of these flags are enabled, isInApp should return true.
     private static final int FLAGS_IN_APP = FLAG_IN_APP | FLAG_IN_SETUP;
@@ -76,7 +80,8 @@
     // If we're in an app and any of these flags are enabled, taskbar should be stashed.
     private static final int FLAGS_STASHED_IN_APP = FLAG_STASHED_IN_APP_MANUAL
             | FLAG_STASHED_IN_APP_PINNED | FLAG_STASHED_IN_APP_EMPTY | FLAG_STASHED_IN_APP_SETUP
-            | FLAG_STASHED_IN_APP_IME | FLAG_STASHED_IN_APP_ALL_APPS;
+            | FLAG_STASHED_IN_APP_IME | FLAG_STASHED_IN_APP_ALL_APPS |
+            FLAG_STASHED_SMALL_SCREEN;
 
     private static final int FLAGS_STASHED_IN_APP_IGNORING_IME =
             FLAGS_STASHED_IN_APP & ~FLAG_STASHED_IN_APP_IME;
@@ -166,15 +171,25 @@
                 boolean inApp = hasAnyFlag(flags, FLAGS_IN_APP);
                 boolean stashedInApp = hasAnyFlag(flags, FLAGS_STASHED_IN_APP);
                 boolean stashedLauncherState = hasAnyFlag(flags, FLAG_IN_STASHED_LAUNCHER_STATE);
-                return (inApp && stashedInApp) || (!inApp && stashedLauncherState);
+                boolean stashedForSmallScreen = hasAnyFlag(flags, FLAG_STASHED_SMALL_SCREEN);
+                return (inApp && stashedInApp) || (!inApp && stashedLauncherState)
+                        || stashedForSmallScreen;
             });
 
     public TaskbarStashController(TaskbarActivityContext activity) {
         mActivity = activity;
         mPrefs = Utilities.getPrefs(mActivity);
         mSystemUiProxy = SystemUiProxy.INSTANCE.get(activity);
-        mUnstashedHeight = mActivity.getDeviceProfile().taskbarSize;
-        mStashedHeight = mActivity.getDeviceProfile().stashedTaskbarSize;
+        if (isPhoneMode(mActivity.getDeviceProfile())) {
+            // DeviceProfile's taskbar vars aren't initialized w/ the flag off
+            Resources resources = mActivity.getResources();
+            mUnstashedHeight = resources.getDimensionPixelSize(R.dimen.taskbar_size);
+            mStashedHeight = resources.getDimensionPixelOffset(R.dimen.taskbar_stashed_size);
+        } else {
+            mUnstashedHeight = mActivity.getDeviceProfile().taskbarSize;
+            mStashedHeight = mActivity.getDeviceProfile().stashedTaskbarSize;
+        }
+
     }
 
     public void init(TaskbarControllers controllers, boolean setupUIVisible) {
@@ -202,6 +217,7 @@
         updateStateForFlag(FLAG_STASHED_IN_APP_MANUAL, isManuallyStashedInApp);
         updateStateForFlag(FLAG_STASHED_IN_APP_SETUP, isInSetup);
         updateStateForFlag(FLAG_IN_SETUP, isInSetup);
+        updateStateForFlag(FLAG_STASHED_SMALL_SCREEN, isPhoneMode(mActivity.getDeviceProfile()));
         applyState();
 
         notifyStashChange(/* visible */ false, /* stashed */ isStashedInApp());
@@ -212,7 +228,8 @@
      * state.
      */
     public boolean supportsVisualStashing() {
-        return mControllers.uiController.supportsVisualStashing();
+        return mControllers.uiController.supportsVisualStashing() ||
+                isPhoneMode(mActivity.getDeviceProfile());
     }
 
     /**
@@ -266,7 +283,7 @@
      * Returns whether the taskbar should be stashed in the current LauncherState.
      */
     public boolean isInStashedLauncherState() {
-        return hasAnyFlag(FLAG_IN_STASHED_LAUNCHER_STATE) && supportsVisualStashing();
+        return (hasAnyFlag(FLAG_IN_STASHED_LAUNCHER_STATE) && supportsVisualStashing());
     }
 
     private boolean hasAnyFlag(int flagMask) {
@@ -295,6 +312,10 @@
      * @see WindowInsets.Type#systemBars()
      */
     public int getContentHeightToReportToApps() {
+        if (isPhoneMode(mActivity.getDeviceProfile())) {
+            return getStashedHeight();
+        }
+
         if (supportsVisualStashing() && hasAnyFlag(FLAGS_REPORT_STASHED_INSETS_TO_APP)) {
             DeviceProfile dp = mActivity.getDeviceProfile();
             if (hasAnyFlag(FLAG_STASHED_IN_APP_SETUP) && dp.isTaskbarPresent && !dp.isLandscape) {
@@ -410,11 +431,18 @@
         }
         mAnimator = new AnimatorSet();
         addJankMonitorListener(mAnimator, /* appearing= */ !mIsStashed);
+        final float stashTranslation = isPhoneMode(mActivity.getDeviceProfile()) ? 0 :
+                (mUnstashedHeight - mStashedHeight) / 2f;
 
         if (!supportsVisualStashing()) {
             // Just hide/show the icons and background instead of stashing into a handle.
             mAnimator.play(mIconAlphaForStash.animateToValue(isStashed ? 0 : 1)
                     .setDuration(duration));
+            mAnimator.playTogether(mTaskbarBackgroundOffset.animateToValue(isStashed ? 1 : 0)
+                    .setDuration(duration));
+            mAnimator.playTogether(mIconTranslationYForStash.animateToValue(isStashed ?
+                            stashTranslation : 0)
+                    .setDuration(duration));
             mAnimator.play(mTaskbarImeBgAlpha.animateToValue(
                     hasAnyFlag(FLAG_STASHED_IN_APP_IME) ? 0 : 1).setDuration(duration));
             mAnimator.setStartDelay(startDelay);
@@ -438,7 +466,6 @@
         if (isStashed) {
             firstHalfDurationScale = 0.75f;
             secondHalfDurationScale = 0.5f;
-            final float stashTranslation = (mUnstashedHeight - mStashedHeight) / 2f;
 
             fullLengthAnimatorSet.play(mIconTranslationYForStash.animateToValue(stashTranslation));
             if (animateBg) {
@@ -450,7 +477,8 @@
 
             firstHalfAnimatorSet.playTogether(
                     mIconAlphaForStash.animateToValue(0),
-                    mIconScaleForStash.animateToValue(STASHED_TASKBAR_SCALE)
+                    mIconScaleForStash.animateToValue(isPhoneMode(mActivity.getDeviceProfile()) ?
+                            0 : STASHED_TASKBAR_SCALE)
             );
             secondHalfAnimatorSet.playTogether(
                     mTaskbarStashedHandleAlpha.animateToValue(1)
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
index 077172d..0f6de73 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
@@ -20,6 +20,7 @@
 import static com.android.launcher3.Utilities.squaredHypot;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_ALLAPPS_BUTTON_TAP;
+import static com.android.launcher3.taskbar.TaskbarManager.isPhoneMode;
 import static com.android.quickstep.AnimatedFloat.VALUE;
 
 import android.annotation.NonNull;
@@ -35,6 +36,7 @@
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.AlphaUpdateListener;
 import com.android.launcher3.anim.AnimatorPlaybackController;
@@ -108,7 +110,9 @@
     public void init(TaskbarControllers controllers) {
         mControllers = controllers;
         mTaskbarView.init(new TaskbarViewCallbacks());
-        mTaskbarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarSize;
+        mTaskbarView.getLayoutParams().height = isPhoneMode(mActivity.getDeviceProfile())
+                ? mActivity.getResources().getDimensionPixelSize(R.dimen.taskbar_size)
+                : mActivity.getDeviceProfile().taskbarSize;
         mThemeIconsColor = ThemedIconDrawable.getColors(mTaskbarView.getContext())[0];
 
         mTaskbarIconScaleForStash.updateValue(1f);
diff --git a/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java b/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
index f220509..ea0972f 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
@@ -28,7 +28,6 @@
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_X;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_Y;
 import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW;
-import static com.android.launcher3.testing.shared.TestProtocol.BAD_STATE;
 import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
 import static com.android.quickstep.views.RecentsView.FIRST_FLOATING_TASK_TRANSLATE_OFFSCREEN;
 import static com.android.quickstep.views.RecentsView.OVERVIEW_PROGRESS;
@@ -40,7 +39,6 @@
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.util.FloatProperty;
-import android.util.Log;
 
 import androidx.annotation.NonNull;
 
@@ -77,10 +75,7 @@
         ADJACENT_PAGE_HORIZONTAL_OFFSET.set(mRecentsView, scaleAndOffset[1]);
         TASK_SECONDARY_TRANSLATION.set(mRecentsView, 0f);
 
-        float recentsAlpha = state.overviewUi ? 1f : 0;
-        Log.d(BAD_STATE, "BaseRecentsViewStateController setState state=" + state
-                + ", alpha=" + recentsAlpha);
-        getContentAlphaProperty().set(mRecentsView, recentsAlpha);
+        getContentAlphaProperty().set(mRecentsView, state.overviewUi ? 1f : 0);
         getTaskModalnessProperty().set(mRecentsView, state.getOverviewModalness());
         RECENTS_GRID_PROGRESS.set(mRecentsView,
                 state.displayOverviewTasksAsGrid(mLauncher.getDeviceProfile()) ? 1f : 0f);
@@ -90,8 +85,6 @@
     @Override
     public void setStateWithAnimation(LauncherState toState, StateAnimationConfig config,
             PendingAnimation builder) {
-        Log.d(BAD_STATE, "BaseRecentsViewStateController setStateWithAnimation state=" + toState
-                + ", config.skipOverview=" + config.hasAnimationFlag(SKIP_OVERVIEW));
         if (config.hasAnimationFlag(SKIP_OVERVIEW)) {
             return;
         }
@@ -158,10 +151,7 @@
             }
         }
 
-        float recentsAlpha = toState.overviewUi ? 1 : 0;
-        Log.d(BAD_STATE, "BaseRecentsViewStateController setStateWithAnimationInternal toState="
-                + toState + ", alpha=" + recentsAlpha);
-        setter.setFloat(mRecentsView, getContentAlphaProperty(), recentsAlpha,
+        setter.setFloat(mRecentsView, getContentAlphaProperty(), toState.overviewUi ? 1 : 0,
                 config.getInterpolator(ANIM_OVERVIEW_FADE, AGGRESSIVE_EASE_IN_OUT));
 
         setter.setFloat(
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
index 4092a73..bc76487 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
@@ -39,7 +39,6 @@
 import static com.android.launcher3.states.StateAnimationConfig.SKIP_ALL_ANIMATIONS;
 import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW;
 import static com.android.launcher3.states.StateAnimationConfig.SKIP_SCRIM;
-import static com.android.launcher3.testing.shared.TestProtocol.BAD_STATE;
 import static com.android.launcher3.touch.BothAxesSwipeDetector.DIRECTION_RIGHT;
 import static com.android.launcher3.touch.BothAxesSwipeDetector.DIRECTION_UP;
 import static com.android.launcher3.util.window.RefreshRateTracker.getSingleFrameMs;
@@ -56,7 +55,6 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
 import android.graphics.PointF;
-import android.util.Log;
 import android.view.MotionEvent;
 import android.view.animation.Interpolator;
 
@@ -227,7 +225,6 @@
         // Set RecentView's initial properties.
         RECENTS_SCALE_PROPERTY.set(mRecentsView, fromState.getOverviewScaleAndOffset(mLauncher)[0]);
         ADJACENT_PAGE_HORIZONTAL_OFFSET.set(mRecentsView, 1f);
-        Log.d(BAD_STATE, "NBQSTC setupOverviewAnimators setContentAlpha=1");
         mRecentsView.setContentAlpha(1);
         mRecentsView.setFullscreenProgress(fromState.getOverviewFullscreenProgress());
         mLauncher.getActionsView().getVisibilityAlpha().setValue(
@@ -247,24 +244,6 @@
                 QUICK_SWITCH.getWorkspaceScrimColor(mLauncher), LINEAR);
         if (mRecentsView.getTaskViewCount() == 0) {
             xAnim.addFloat(mRecentsView, CONTENT_ALPHA, 0f, 1f, LINEAR);
-            Log.d(BAD_STATE, "NBQSTC setupOverviewAnimators from: 0 to: 1");
-            xAnim.addListener(new AnimatorListenerAdapter() {
-                @Override
-                public void onAnimationStart(Animator animation) {
-                    Log.d(BAD_STATE, "NBQSTC setupOverviewAnimators onStart");
-                }
-
-                @Override
-                public void onAnimationCancel(Animator animation) {
-                    float alpha = mRecentsView == null ? -1 : CONTENT_ALPHA.get(mRecentsView);
-                    Log.d(BAD_STATE, "NBQSTC setupOverviewAnimators onCancel, alpha=" + alpha);
-                }
-
-                @Override
-                public void onAnimationEnd(Animator animation) {
-                    Log.d(BAD_STATE, "NBQSTC setupOverviewAnimators onEnd");
-                }
-            });
         }
         mXOverviewAnim = xAnim.createPlaybackController();
         mXOverviewAnim.dispatchOnStart();
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java
index f607aa3..e5cd53a 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java
@@ -29,7 +29,6 @@
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_TRANSLATE;
-import static com.android.launcher3.testing.shared.TestProtocol.BAD_STATE;
 import static com.android.launcher3.util.SystemUiController.UI_STATE_FULLSCREEN_TASK;
 import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
 import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY;
@@ -37,7 +36,6 @@
 import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
 
-import android.util.Log;
 import android.view.MotionEvent;
 
 import com.android.launcher3.Launcher;
@@ -114,7 +112,6 @@
         RECENTS_SCALE_PROPERTY.set(mOverviewPanel,
                 QUICK_SWITCH.getOverviewScaleAndOffset(mLauncher)[0] * 0.85f);
         ADJACENT_PAGE_HORIZONTAL_OFFSET.set(mOverviewPanel, 1f);
-        Log.d(BAD_STATE, "QuickSwitchTouchController initCurrentAnimation setContentAlpha=1");
         mOverviewPanel.setContentAlpha(1);
 
         mCurrentAnimation = mLauncher.getStateManager()
diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java
index 98824eb..4435eda 100644
--- a/quickstep/src/com/android/quickstep/RecentsActivity.java
+++ b/quickstep/src/com/android/quickstep/RecentsActivity.java
@@ -23,7 +23,6 @@
 import static com.android.launcher3.QuickstepTransitionManager.STATUS_BAR_TRANSITION_PRE_DELAY;
 import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
 import static com.android.launcher3.graphics.SysUiScrim.SYSUI_PROGRESS;
-import static com.android.launcher3.testing.shared.TestProtocol.BAD_STATE;
 import static com.android.launcher3.testing.shared.TestProtocol.OVERVIEW_STATE_ORDINAL;
 import static com.android.quickstep.OverviewComponentObserver.startHomeIntentSafely;
 import static com.android.quickstep.TaskUtils.taskIsATargetWithMode;
@@ -39,7 +38,6 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.util.Log;
 import android.view.Display;
 import android.view.SurfaceControl.Transaction;
 import android.view.View;
@@ -314,7 +312,6 @@
     protected void onStart() {
         // Set the alpha to 1 before calling super, as it may get set back to 0 due to
         // onActivityStart callback.
-        Log.d(BAD_STATE, "RecentsActivity onStart mFallbackRecentsView.setContentAlpha(1)");
         mFallbackRecentsView.setContentAlpha(1);
         super.onStart();
         mFallbackRecentsView.updateLocusId();
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
index 4fb7e6b..48f0557 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
@@ -61,6 +61,7 @@
 import android.view.MotionEvent;
 
 import androidx.annotation.BinderThread;
+import androidx.annotation.NonNull;
 
 import com.android.launcher3.Utilities;
 import com.android.launcher3.util.DisplayController;
@@ -124,7 +125,7 @@
     };
 
     private int mGestureBlockingTaskId = -1;
-    private Region mExclusionRegion;
+    private @NonNull Region mExclusionRegion = new Region();
     private SystemGestureExclusionListenerCompat mExclusionListener;
 
     public RecentsAnimationDeviceState(Context context) {
@@ -162,6 +163,10 @@
             @Override
             @BinderThread
             public void onExclusionChanged(Region region) {
+                if (region == null) {
+                    // Don't think this is possible but just in case, don't let it be null.
+                    region = new Region();
+                }
                 // Assignments are atomic, it should be safe on binder thread
                 mExclusionRegion = region;
             }
@@ -498,7 +503,7 @@
     public boolean isInExclusionRegion(MotionEvent event) {
         // mExclusionRegion can change on binder thread, use a local instance here.
         Region exclusionRegion = mExclusionRegion;
-        return mMode == NO_BUTTON && exclusionRegion != null
+        return mMode == NO_BUTTON
                 && exclusionRegion.contains((int) event.getX(), (int) event.getY());
     }
 
@@ -587,7 +592,8 @@
         pw.println("  isUserUnlocked=" + mIsUserUnlocked);
         pw.println("  isOneHandedModeEnabled=" + mIsOneHandedModeEnabled);
         pw.println("  isSwipeToNotificationEnabled=" + mIsSwipeToNotificationEnabled);
-        pw.println("  deferredGestureRegion=" + mDeferredGestureRegion);
+        pw.println("  deferredGestureRegion=" + mDeferredGestureRegion.getBounds());
+        pw.println("  exclusionRegion=" + mExclusionRegion.getBounds());
         pw.println("  pipIsActive=" + mPipIsActive);
         mRotationTouchHelper.dump(pw);
     }
diff --git a/quickstep/src/com/android/quickstep/TaskViewUtils.java b/quickstep/src/com/android/quickstep/TaskViewUtils.java
index c28fc9d..fa30b8f 100644
--- a/quickstep/src/com/android/quickstep/TaskViewUtils.java
+++ b/quickstep/src/com/android/quickstep/TaskViewUtils.java
@@ -37,7 +37,6 @@
 import static com.android.launcher3.anim.Interpolators.clampToProgress;
 import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
 import static com.android.launcher3.statehandlers.DepthController.DEPTH;
-import static com.android.launcher3.testing.shared.TestProtocol.BAD_STATE;
 import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
 import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
 
@@ -55,7 +54,6 @@
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.os.Build;
-import android.util.Log;
 import android.view.SurfaceControl;
 import android.view.View;
 import android.window.TransitionInfo;
@@ -571,29 +569,6 @@
             launcherAnim = dp.isTablet
                     ? ObjectAnimator.ofFloat(recentsView, RecentsView.CONTENT_ALPHA, 0)
                     : recentsView.createAdjacentPageAnimForTaskLaunch(taskView);
-            if (dp.isTablet) {
-                Log.d(BAD_STATE, "TVU composeRecentsLaunchAnimator alpha=" + 0);
-                launcherAnim.addListener(new AnimatorListenerAdapter() {
-                    @Override
-                    public void onAnimationStart(Animator animation) {
-                        Log.d(BAD_STATE, "TVU composeRecentsLaunchAnimator onStart");
-                    }
-
-                    @Override
-                    public void onAnimationCancel(Animator animation) {
-                        float alpha = recentsView == null
-                                ? -1
-                                : RecentsView.CONTENT_ALPHA.get(recentsView);
-                        Log.d(BAD_STATE, "TVU composeRecentsLaunchAnimator onCancel, alpha="
-                                + alpha);
-                    }
-
-                    @Override
-                    public void onAnimationEnd(Animator animation) {
-                        Log.d(BAD_STATE, "TVU composeRecentsLaunchAnimator onEnd");
-                    }
-                });
-            }
             launcherAnim.setInterpolator(Interpolators.TOUCH_RESPONSE_INTERPOLATOR);
             launcherAnim.setDuration(RECENTS_LAUNCH_DURATION);
 
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index 2df9b9c..52a37c5 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -65,7 +65,6 @@
 
 import com.android.launcher3.BaseDraggingActivity;
 import com.android.launcher3.R;
-import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.provider.RestoreDbTask;
@@ -73,6 +72,7 @@
 import com.android.launcher3.taskbar.TaskbarActivityContext;
 import com.android.launcher3.taskbar.TaskbarManager;
 import com.android.launcher3.testing.TestLogging;
+import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.tracing.LauncherTraceProto;
 import com.android.launcher3.tracing.TouchInteractionServiceProto;
@@ -1015,7 +1015,7 @@
             pw.println("ProtoTrace:");
             pw.println("  file=" + ProtoTracer.INSTANCE.get(this).getTraceFile());
             if (createdOverviewActivity != null) {
-                createdOverviewActivity.getDeviceProfile().dump("", pw);
+                createdOverviewActivity.getDeviceProfile().dump(this, "", pw);
             }
             mTaskbarManager.dumpLogs("", pw);
         }
diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
index 3734f11..eb739a6 100644
--- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
+++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
@@ -15,7 +15,6 @@
  */
 package com.android.quickstep.fallback;
 
-import static com.android.launcher3.testing.shared.TestProtocol.BAD_STATE;
 import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS;
 import static com.android.quickstep.fallback.RecentsState.DEFAULT;
 import static com.android.quickstep.fallback.RecentsState.HOME;
@@ -27,7 +26,6 @@
 import android.content.Context;
 import android.os.Build;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.MotionEvent;
 
 import androidx.annotation.Nullable;
@@ -225,7 +223,6 @@
         if (toState == MODAL_TASK) {
             setOverviewSelectEnabled(true);
         }
-        Log.d(BAD_STATE, "FRV onStateTransitionStart setFreezeVisibility=true, toState=" + toState);
         setFreezeViewVisibility(true);
     }
 
@@ -237,8 +234,6 @@
         }
         boolean isOverlayEnabled = finalState == DEFAULT || finalState == MODAL_TASK;
         setOverlayEnabled(isOverlayEnabled);
-        Log.d(BAD_STATE, "FRV onStateTransitionComplete setFreezeVisibility=false, finalState="
-                + finalState);
         setFreezeViewVisibility(false);
         if (finalState != MODAL_TASK) {
             setOverviewSelectEnabled(false);
diff --git a/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java b/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java
index ac77c67..1d008da 100644
--- a/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java
+++ b/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java
@@ -15,13 +15,10 @@
  */
 package com.android.quickstep.util;
 
-import static com.android.launcher3.testing.shared.TestProtocol.BAD_STATE;
 import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
 
 import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
-import android.util.Log;
 
 import androidx.dynamicanimation.animation.DynamicAnimation;
 
@@ -30,8 +27,6 @@
 import com.android.launcher3.statemanager.StatefulActivity;
 import com.android.quickstep.views.RecentsView;
 
-import java.util.Arrays;
-
 public class RecentsAtomicAnimationFactory<ACTIVITY_TYPE extends StatefulActivity, STATE_TYPE>
         extends AtomicAnimationFactory<STATE_TYPE> {
 
@@ -53,27 +48,6 @@
             case INDEX_RECENTS_FADE_ANIM:
                 ObjectAnimator alpha = ObjectAnimator.ofFloat(mActivity.getOverviewPanel(),
                         RecentsView.CONTENT_ALPHA, values);
-                Log.d(BAD_STATE, "RAAF createStateElementAnimation alpha="
-                        + Arrays.toString(values));
-                alpha.addListener(new AnimatorListenerAdapter() {
-                    @Override
-                    public void onAnimationStart(Animator animation) {
-                        Log.d(BAD_STATE, "RAAF createStateElementAnimation onStart");
-                    }
-
-                    @Override
-                    public void onAnimationCancel(Animator animation) {
-                        RecentsView recent = mActivity.getOverviewPanel();
-                        float alpha = recent == null ? -1 : RecentsView.CONTENT_ALPHA.get(recent);
-                        Log.d(BAD_STATE, "RAAF createStateElementAnimation onCancel, alpha="
-                                + alpha);
-                    }
-
-                    @Override
-                    public void onAnimationEnd(Animator animation) {
-                        Log.d(BAD_STATE, "RAAF createStateElementAnimation onEnd");
-                    }
-                });
                 return alpha;
             case INDEX_RECENTS_TRANSLATE_X_ANIM: {
                 RecentsView rv = mActivity.getOverviewPanel();
diff --git a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
index 8b8558a..3c5a626 100644
--- a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
@@ -21,13 +21,11 @@
 import static com.android.launcher3.LauncherState.OVERVIEW_MODAL_TASK;
 import static com.android.launcher3.LauncherState.OVERVIEW_SPLIT_SELECT;
 import static com.android.launcher3.LauncherState.SPRING_LOADED;
-import static com.android.launcher3.testing.shared.TestProtocol.BAD_STATE;
 
 import android.annotation.TargetApi;
 import android.content.Context;
 import android.os.Build;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.MotionEvent;
 import android.view.Surface;
 
@@ -68,7 +66,6 @@
     public void init(OverviewActionsView actionsView,
             SplitSelectStateController splitPlaceholderView) {
         super.init(actionsView, splitPlaceholderView);
-        Log.d(BAD_STATE, "LauncherRecentsView init setContentAlpha=0");
         setContentAlpha(0);
     }
 
@@ -119,7 +116,6 @@
         if (toState == OVERVIEW_MODAL_TASK) {
             setOverviewSelectEnabled(true);
         }
-        Log.d(BAD_STATE, "LRV onStateTransitionStart setFreezeVisibility=true, toState=" + toState);
         setFreezeViewVisibility(true);
     }
 
@@ -131,8 +127,6 @@
         }
         boolean isOverlayEnabled = finalState == OVERVIEW || finalState == OVERVIEW_MODAL_TASK;
         setOverlayEnabled(isOverlayEnabled);
-        Log.d(BAD_STATE, "LRV onStateTransitionComplete setFreezeVisibility=false, finalState="
-                + finalState);
         setFreezeViewVisibility(false);
         if (finalState != OVERVIEW_MODAL_TASK) {
             setOverviewSelectEnabled(false);
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 5975106..64068ad 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -2238,7 +2238,8 @@
             @Nullable AnimatorSet animatorSet, GestureState.GestureEndTarget endTarget,
             TaskViewSimulator[] taskViewSimulators) {
         mCurrentGestureEndTarget = endTarget;
-        if (endTarget == GestureState.GestureEndTarget.RECENTS) {
+        boolean isOverviewEndTarget = endTarget == GestureState.GestureEndTarget.RECENTS;
+        if (isOverviewEndTarget) {
             updateGridProperties();
         }
 
@@ -2267,10 +2268,11 @@
                 }
             }
         }
+        int overviewProgress = isOverviewEndTarget ? 1 : 0;
         if (animatorSet == null) {
-            setOverviewProgress(1);
+            setOverviewProgress(overviewProgress);
         } else {
-            animatorSet.play(ObjectAnimator.ofFloat(this, OVERVIEW_PROGRESS, 1));
+            animatorSet.play(ObjectAnimator.ofFloat(this, OVERVIEW_PROGRESS, overviewProgress));
         }
     }
 
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfilePhone3ButtonTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfilePhone3ButtonTest.kt
deleted file mode 100644
index f41de72..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfilePhone3ButtonTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for phone with 3-Button navigation.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfilePhone3ButtonTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForPhone(isGestureMode = false)
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isTrue()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(265)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(343)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.getCellSize().x).isEqualTo(265)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.getCellSize().y).isEqualTo(552)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(66)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(66)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(38)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(38)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(38)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(49)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(25)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(265)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(343)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(49)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(27)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(38)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1050)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(232)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(58)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(25)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(409)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(265)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(66)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(66)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(91)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(669)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(221)
-    }
-
-    @Test
-    fun hotseatBarBottomPaddingPx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(168)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(221)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(266)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(4)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(135)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(false)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(1189)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(false)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(0)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(91)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(53)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(53)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(573)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(1.182266f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(56)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(168)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(154)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(224)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(84)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(168)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(126)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(56)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(0)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(112)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(56)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(84)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.74417657f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(2447)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(1334)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(1)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(false)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(364)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(2185)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(147)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(558)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(125)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(0)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(125)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(448)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
-    }
-}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfilePhoneTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfilePhoneTest.kt
deleted file mode 100644
index fe3fd00..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfilePhoneTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for phone.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfilePhoneTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForPhone()
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isTrue()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(265)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(343)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.getCellSize().x).isEqualTo(265)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.getCellSize().y).isEqualTo(552)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(66)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(66)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(38)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(38)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(38)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(49)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(25)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(265)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(343)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(49)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(27)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(38)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1050)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(232)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(58)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(25)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(409)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(265)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(66)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(66)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(91)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(669)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(221)
-    }
-
-    @Test
-    fun hotseatBarBottomPaddingPx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(168)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(221)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(266)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(4)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(135)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(false)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(1189)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(false)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(0)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(91)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(53)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(53)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(573)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(1.182266f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(56)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(168)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(154)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(224)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(84)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(168)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(126)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(56)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(0)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(112)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(56)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(84)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.74417657f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(2447)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(1334)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(1)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(false)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(364)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(2185)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(147)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(558)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(125)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(0)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(125)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(448)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
-    }
-}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletLandscape3ButtonTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletLandscape3ButtonTest.kt
deleted file mode 100644
index 33866f0..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletLandscape3ButtonTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for tablet in landscape with 3-Button navigation.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfileTabletLandscape3ButtonTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForTablet(isLandscape = true, isGestureMode = false)
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isTrue()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(227)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(294)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.cellSize.x).isEqualTo(558)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.cellSize.y).isEqualTo(294)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(57)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(57)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(59)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(59)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(59)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(227)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(294)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(48)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1600)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(199)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(50)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(351)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(227)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(57)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(57)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(64)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(1244)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(228)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatBarBottomSpacePx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(116)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(56)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(126)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(5)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(32)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(true)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(1237)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(true)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(120)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(78)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(19)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(19)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(93)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(1.7736843f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(40)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(128)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(0)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(144)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(64)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(48)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.7363184f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(1407)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(2522)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(1)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(false)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(208)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(1244)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(109)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(112)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(1305)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(-7)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(566)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(109)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(566)
-    }
-}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletLandscapeTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletLandscapeTest.kt
deleted file mode 100644
index e61a890..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletLandscapeTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for tablet in landscape.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfileTabletLandscapeTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForTablet(isLandscape = true)
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isTrue()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(227)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(294)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.cellSize.x).isEqualTo(558)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.cellSize.y).isEqualTo(294)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(57)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(57)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(59)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(59)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(59)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(227)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(294)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(48)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1600)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(199)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(50)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(351)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(227)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(57)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(57)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(64)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(1244)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(228)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatBarBottomSpacePx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(116)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(56)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(126)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(4)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(503)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(true)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(-503)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(true)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(120)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(78)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(19)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(19)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(93)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(1.7736843f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(40)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(128)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(0)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(144)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(64)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(48)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.7363184f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(1407)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(2522)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(1)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(false)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(208)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(1244)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(109)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(112)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(301)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(-7)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(301)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(109)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
-    }
-}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletPortrait3ButtonTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletPortrait3ButtonTest.kt
deleted file mode 100644
index 3f350de..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletPortrait3ButtonTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for tablet in portrait with 3-Button navigation.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfileTabletPortrait3ButtonTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForTablet(isGestureMode = false)
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isTrue()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(294)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(382)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.cellSize.x).isEqualTo(294)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.cellSize.y).isEqualTo(482)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(74)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(74)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(72)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(72)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(72)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(294)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(382)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(77)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(600)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1960)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(600)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(257)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(64)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(456)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(294)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(74)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(74)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(56)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(781)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(386)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatBarBottomSpacePx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(116)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(56)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(126)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(216)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(4)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(32)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(false)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(1216)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(true)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(120)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(101)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(29)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(29)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(238)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(2.2988505f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(48)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(128)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(220)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(144)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(96)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(48)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.6741674f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(2222)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(1542)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(1)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(false)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(460)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(1958)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(272)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(112)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(528)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(151)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(528)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(109)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(502)
-    }
-}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletPortraitTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletPortraitTest.kt
deleted file mode 100644
index 444f7ea..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletPortraitTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for tablet in portrait.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfileTabletPortraitTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForTablet()
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isTrue()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(294)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(382)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.cellSize.x).isEqualTo(294)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.cellSize.y).isEqualTo(482)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(74)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(74)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(72)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(72)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(72)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(294)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(382)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(77)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(600)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1960)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(600)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(257)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(64)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(456)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(294)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(74)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(74)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(56)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(781)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(386)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatBarBottomSpacePx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(116)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(56)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(126)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(216)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(4)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(256)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(false)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(1216)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(true)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(120)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(101)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(29)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(29)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(238)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(2.2988505f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(48)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(128)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(220)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(144)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(96)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(48)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.6741674f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(2222)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(1542)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(1)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(false)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(460)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(1958)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(272)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(112)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(192)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(151)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(192)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(109)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
-    }
-}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfileTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfileTest.kt
new file mode 100644
index 0000000..1208a2a
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/DeviceProfileTest.kt
@@ -0,0 +1,1467 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.quickstep
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.launcher3.DeviceProfileBaseTest
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Tests for DeviceProfile.
+ */
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class DeviceProfileTest : DeviceProfileBaseTest() {
+
+    @Test
+    fun phonePortrait3Button() {
+        initializeVarsForPhone(isGestureMode = false)
+        val dp = newDP()
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.625 px\n" +
+                "\tisTablet:false\n" +
+                "\tisPhone:true\n" +
+                "\ttransposeLayoutWithOrientation:true\n" +
+                "\tisGestureMode:false\n" +
+                "\tisLandscape:false\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:false\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 1080.0px (411.42856dp)\n" +
+                "\theightPx: 2400.0px (914.2857dp)\n" +
+                "\tavailableWidthPx: 1080.0px (411.42856dp)\n" +
+                "\tavailableHeightPx: 2156.0px (821.3333dp)\n" +
+                "\tmInsets.left: 0.0px (0.0dp)\n" +
+                "\tmInsets.top: 118.0px (44.95238dp)\n" +
+                "\tmInsets.right: 0.0px (0.0dp)\n" +
+                "\tmInsets.bottom: 126.0px (48.0dp)\n" +
+                "\taspectRatio:2.2222223\n" +
+                "\tisScalableGrid:true\n" +
+                "\tinv.numRows: 5\n" +
+                "\tinv.numColumns: 4\n" +
+                "\tinv.numSearchContainerColumns: 4\n" +
+                "\tminCellSize: PointF(80.0, 104.0)dp\n" +
+                "\tcellWidthPx: 210.0px (80.0dp)\n" +
+                "\tcellHeightPx: 272.0px (103.61905dp)\n" +
+                "\tgetCellSize().x: 210.0px (80.0dp)\n" +
+                "\tgetCellSize().y: 272.0px (103.61905dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 42.0px (16.0dp)\n" +
+                "\tcellLayoutPaddingPx.left: 28.0px (10.666667dp)\n" +
+                "\tcellLayoutPaddingPx.top: 28.0px (10.666667dp)\n" +
+                "\tcellLayoutPaddingPx.right: 28.0px (10.666667dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 28.0px (10.666667dp)\n" +
+                "\ticonSizePx: 157.0px (59.809525dp)\n" +
+                "\ticonTextSizePx: 36.0px (13.714286dp)\n" +
+                "\ticonDrawablePaddingPx: 17.0px (6.4761906dp)\n" +
+                "\tfolderCellWidthPx: 210.0px (80.0dp)\n" +
+                "\tfolderCellHeightPx: 272.0px (103.61905dp)\n" +
+                "\tfolderChildIconSizePx: 158.0px (60.190475dp)\n" +
+                "\tfolderChildTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 42.0px (16.0dp)\n" +
+                "\tbottomSheetTopPadding: 146.0px (55.61905dp)\n" +
+                "\tallAppsShiftRange: 788.0px (300.1905dp)\n" +
+                "\tallAppsTopPadding: 0.0px (0.0dp)\n" +
+                "\tallAppsIconSizePx: 157.0px (59.809525dp)\n" +
+                "\tallAppsIconTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                "\tallAppsCellHeightPx: 314.0px (119.61905dp)\n" +
+                "\tallAppsCellWidthPx: 210.0px (80.0dp)\n" +
+                "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                "\tnumShownAllAppsColumns: 4\n" +
+                "\tallAppsLeftRightPadding: 57.0px (21.714285dp)\n" +
+                "\tallAppsLeftRightMargin: 0.0px (0.0dp)\n" +
+                "\thotseatBarSizePx: 511.0px (194.66667dp)\n" +
+                "\tinv.hotseatColumnSpan: 4\n" +
+                "\thotseatCellHeightPx: 177.0px (67.42857dp)\n" +
+                "\thotseatBarBottomSpacePx: 147.0px (56.0dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                "\thotseatQsbSpace: 74.0px (28.190475dp)\n" +
+                "\thotseatQsbHeight: 165.0px (62.857143dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 200.0px (76.190475dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 334.0px (127.2381dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 83.0px (31.619047dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 83.0px (31.619047dp)\n" +
+                "\tnumShownHotseatIcons: 4\n" +
+                "\thotseatBorderSpace: 95.0px (36.190475dp)\n" +
+                "\tisQsbInline: false\n" +
+                "\tqsbWidth: 913.0px (347.8095dp)\n" +
+                "\tisTaskbarPresent:false\n" +
+                "\tisTaskbarPresentInApps:false\n" +
+                "\ttaskbarSize: 0.0px (0.0dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 57.0px (21.714285dp)\n" +
+                "\tworkspacePadding.left: 29.0px (11.047619dp)\n" +
+                "\tworkspacePadding.top: 67.0px (25.52381dp)\n" +
+                "\tworkspacePadding.right: 29.0px (11.047619dp)\n" +
+                "\tworkspacePadding.bottom: 504.0px (192.0dp)\n" +
+                "\ticonScale: 0.9981516px (0.38024822dp)\n" +
+                "\tcellScaleToFit : 0.9981516px (0.38024822dp)\n" +
+                "\textraSpace: 211.0px (80.38095dp)\n" +
+                "\tunscaled extraSpace: 211.39073px (80.5298dp)\n" +
+                "\tmaxEmptySpace: 315.0px (120.0dp)\n" +
+                "\tworkspaceTopPadding: 95.0px (36.190475dp)\n" +
+                "\tworkspaceBottomPadding: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskMarginPx: 42.0px (16.0dp)\n" +
+                "\toverviewTaskIconSizePx: 126.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 168.0px (64.0dp)\n" +
+                "\toverviewActionsTopMarginPx: 63.0px (24.0dp)\n" +
+                "\toverviewActionsHeight: 126.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewPageSpacing: 42.0px (16.0dp)\n" +
+                "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 84.0px (32.0dp)\n" +
+                "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 391.0px (148.95238dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 1689.0px (643.4286dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.81892747px (0.31197238dp)\n" +
+                "\tgetCellLayoutHeight(): 1585.0px (603.8095dp)\n" +
+                "\tgetCellLayoutWidth(): 1022.0px (389.33334dp)\n")
+    }
+
+    @Test
+    fun phonePortrait() {
+        initializeVarsForPhone()
+        val dp = newDP()
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.625 px\n" +
+                "\tisTablet:false\n" +
+                "\tisPhone:true\n" +
+                "\ttransposeLayoutWithOrientation:true\n" +
+                "\tisGestureMode:true\n" +
+                "\tisLandscape:false\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:false\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 1080.0px (411.42856dp)\n" +
+                "\theightPx: 2400.0px (914.2857dp)\n" +
+                "\tavailableWidthPx: 1080.0px (411.42856dp)\n" +
+                "\tavailableHeightPx: 2219.0px (845.3333dp)\n" +
+                "\tmInsets.left: 0.0px (0.0dp)\n" +
+                "\tmInsets.top: 118.0px (44.95238dp)\n" +
+                "\tmInsets.right: 0.0px (0.0dp)\n" +
+                "\tmInsets.bottom: 63.0px (24.0dp)\n" +
+                "\taspectRatio:2.2222223\n" +
+                "\tisScalableGrid:true\n" +
+                "\tinv.numRows: 5\n" +
+                "\tinv.numColumns: 4\n" +
+                "\tinv.numSearchContainerColumns: 4\n" +
+                "\tminCellSize: PointF(80.0, 104.0)dp\n" +
+                "\tcellWidthPx: 210.0px (80.0dp)\n" +
+                "\tcellHeightPx: 272.0px (103.61905dp)\n" +
+                "\tgetCellSize().x: 210.0px (80.0dp)\n" +
+                "\tgetCellSize().y: 272.0px (103.61905dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 42.0px (16.0dp)\n" +
+                "\tcellLayoutPaddingPx.left: 28.0px (10.666667dp)\n" +
+                "\tcellLayoutPaddingPx.top: 28.0px (10.666667dp)\n" +
+                "\tcellLayoutPaddingPx.right: 28.0px (10.666667dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 28.0px (10.666667dp)\n" +
+                "\ticonSizePx: 157.0px (59.809525dp)\n" +
+                "\ticonTextSizePx: 36.0px (13.714286dp)\n" +
+                "\ticonDrawablePaddingPx: 17.0px (6.4761906dp)\n" +
+                "\tfolderCellWidthPx: 210.0px (80.0dp)\n" +
+                "\tfolderCellHeightPx: 272.0px (103.61905dp)\n" +
+                "\tfolderChildIconSizePx: 158.0px (60.190475dp)\n" +
+                "\tfolderChildTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 42.0px (16.0dp)\n" +
+                "\tbottomSheetTopPadding: 146.0px (55.61905dp)\n" +
+                "\tallAppsShiftRange: 788.0px (300.1905dp)\n" +
+                "\tallAppsTopPadding: 0.0px (0.0dp)\n" +
+                "\tallAppsIconSizePx: 157.0px (59.809525dp)\n" +
+                "\tallAppsIconTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                "\tallAppsCellHeightPx: 314.0px (119.61905dp)\n" +
+                "\tallAppsCellWidthPx: 210.0px (80.0dp)\n" +
+                "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                "\tnumShownAllAppsColumns: 4\n" +
+                "\tallAppsLeftRightPadding: 57.0px (21.714285dp)\n" +
+                "\tallAppsLeftRightMargin: 0.0px (0.0dp)\n" +
+                "\thotseatBarSizePx: 511.0px (194.66667dp)\n" +
+                "\tinv.hotseatColumnSpan: 4\n" +
+                "\thotseatCellHeightPx: 177.0px (67.42857dp)\n" +
+                "\thotseatBarBottomSpacePx: 126.0px (48.0dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                "\thotseatQsbSpace: 95.0px (36.190475dp)\n" +
+                "\thotseatQsbHeight: 165.0px (62.857143dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 200.0px (76.190475dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 334.0px (127.2381dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 83.0px (31.619047dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 83.0px (31.619047dp)\n" +
+                "\tnumShownHotseatIcons: 4\n" +
+                "\thotseatBorderSpace: 95.0px (36.190475dp)\n" +
+                "\tisQsbInline: false\n" +
+                "\tqsbWidth: 913.0px (347.8095dp)\n" +
+                "\tisTaskbarPresent:false\n" +
+                "\tisTaskbarPresentInApps:false\n" +
+                "\ttaskbarSize: 0.0px (0.0dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 57.0px (21.714285dp)\n" +
+                "\tworkspacePadding.left: 29.0px (11.047619dp)\n" +
+                "\tworkspacePadding.top: 67.0px (25.52381dp)\n" +
+                "\tworkspacePadding.right: 29.0px (11.047619dp)\n" +
+                "\tworkspacePadding.bottom: 567.0px (216.0dp)\n" +
+                "\ticonScale: 0.9981516px (0.38024822dp)\n" +
+                "\tcellScaleToFit : 0.9981516px (0.38024822dp)\n" +
+                "\textraSpace: 211.0px (80.38095dp)\n" +
+                "\tunscaled extraSpace: 211.39073px (80.5298dp)\n" +
+                "\tmaxEmptySpace: 315.0px (120.0dp)\n" +
+                "\tworkspaceTopPadding: 95.0px (36.190475dp)\n" +
+                "\tworkspaceBottomPadding: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskMarginPx: 42.0px (16.0dp)\n" +
+                "\toverviewTaskIconSizePx: 126.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 168.0px (64.0dp)\n" +
+                "\toverviewActionsTopMarginPx: 63.0px (24.0dp)\n" +
+                "\toverviewActionsHeight: 126.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewPageSpacing: 42.0px (16.0dp)\n" +
+                "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 84.0px (32.0dp)\n" +
+                "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 391.0px (148.95238dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 1689.0px (643.4286dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.81892747px (0.31197238dp)\n" +
+                "\tgetCellLayoutHeight(): 1585.0px (603.8095dp)\n" +
+                "\tgetCellLayoutWidth(): 1022.0px (389.33334dp)\n")
+    }
+
+    @Test
+    fun tabletLandscape3Button() {
+        initializeVarsForTablet(isLandscape = true, isGestureMode = false)
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.0 px\n" +
+                "\tisTablet:true\n" +
+                "\tisPhone:false\n" +
+                "\ttransposeLayoutWithOrientation:false\n" +
+                "\tisGestureMode:false\n" +
+                "\tisLandscape:true\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:false\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 2560.0px (1280.0dp)\n" +
+                "\theightPx: 1600.0px (800.0dp)\n" +
+                "\tavailableWidthPx: 2560.0px (1280.0dp)\n" +
+                "\tavailableHeightPx: 1496.0px (748.0dp)\n" +
+                "\tmInsets.left: 0.0px (0.0dp)\n" +
+                "\tmInsets.top: 104.0px (52.0dp)\n" +
+                "\tmInsets.right: 0.0px (0.0dp)\n" +
+                "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                "\taspectRatio:1.6\n" +
+                "\tisScalableGrid:true\n" +
+                "\tinv.numRows: 5\n" +
+                "\tinv.numColumns: 6\n" +
+                "\tinv.numSearchContainerColumns: 3\n" +
+                "\tminCellSize: PointF(120.0, 104.0)dp\n" +
+                "\tcellWidthPx: 240.0px (120.0dp)\n" +
+                "\tcellHeightPx: 208.0px (104.0dp)\n" +
+                "\tgetCellSize().x: 240.0px (120.0dp)\n" +
+                "\tgetCellSize().y: 208.0px (104.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 128.0px (64.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 32.0px (16.0dp)\n" +
+                "\tcellLayoutPaddingPx.left: 59.0px (29.5dp)\n" +
+                "\tcellLayoutPaddingPx.top: 32.0px (16.0dp)\n" +
+                "\tcellLayoutPaddingPx.right: 59.0px (29.5dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 59.0px (29.5dp)\n" +
+                "\ticonSizePx: 120.0px (60.0dp)\n" +
+                "\ticonTextSizePx: 28.0px (14.0dp)\n" +
+                "\ticonDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                "\tfolderCellWidthPx: 240.0px (120.0dp)\n" +
+                "\tfolderCellHeightPx: 208.0px (104.0dp)\n" +
+                "\tfolderChildIconSizePx: 120.0px (60.0dp)\n" +
+                "\tfolderChildTextSizePx: 28.0px (14.0dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 16.0px (8.0dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 0.0px (0.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                "\tbottomSheetTopPadding: 104.0px (52.0dp)\n" +
+                "\tallAppsShiftRange: 1496.0px (748.0dp)\n" +
+                "\tallAppsTopPadding: 104.0px (52.0dp)\n" +
+                "\tallAppsIconSizePx: 120.0px (60.0dp)\n" +
+                "\tallAppsIconTextSizePx: 28.0px (14.0dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                "\tallAppsCellHeightPx: 284.0px (142.0dp)\n" +
+                "\tallAppsCellWidthPx: 252.0px (126.0dp)\n" +
+                "\tallAppsBorderSpacePxX: 32.0px (16.0dp)\n" +
+                "\tallAppsBorderSpacePxY: 32.0px (16.0dp)\n" +
+                "\tnumShownAllAppsColumns: 6\n" +
+                "\tallAppsLeftRightPadding: 64.0px (32.0dp)\n" +
+                "\tallAppsLeftRightMargin: 380.0px (190.0dp)\n" +
+                "\thotseatBarSizePx: 200.0px (100.0dp)\n" +
+                "\tinv.hotseatColumnSpan: 4\n" +
+                "\thotseatCellHeightPx: 135.0px (67.5dp)\n" +
+                "\thotseatBarBottomSpacePx: 80.0px (40.0dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarEndOffset: 597.0px (298.5dp)\n" +
+                "\thotseatQsbSpace: 64.0px (32.0dp)\n" +
+                "\thotseatQsbHeight: 126.0px (63.0dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 128.0px (64.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: -8.0px (-4.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 73.0px (36.5dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 959.0px (479.5dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 597.0px (298.5dp)\n" +
+                "\tnumShownHotseatIcons: 5\n" +
+                "\thotseatBorderSpace: 101.0px (50.5dp)\n" +
+                "\tisQsbInline: true\n" +
+                "\tqsbWidth: 855.0px (427.5dp)\n" +
+                "\tisTaskbarPresent:true\n" +
+                "\tisTaskbarPresentInApps:true\n" +
+                "\ttaskbarSize: 120.0px (60.0dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 240.0px (120.0dp)\n" +
+                "\tworkspacePadding.left: 181.0px (90.5dp)\n" +
+                "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                "\tworkspacePadding.right: 181.0px (90.5dp)\n" +
+                "\tworkspacePadding.bottom: 237.0px (118.5dp)\n" +
+                "\ticonScale: 1.0px (0.5dp)\n" +
+                "\tcellScaleToFit : 1.0px (0.5dp)\n" +
+                "\textraSpace: 104.0px (52.0dp)\n" +
+                "\tunscaled extraSpace: 104.0px (52.0dp)\n" +
+                "\tmaxEmptySpace: 200.0px (100.0dp)\n" +
+                "\tworkspaceTopPadding: 32.0px (16.0dp)\n" +
+                "\tworkspaceBottomPadding: 72.0px (36.0dp)\n" +
+                "\toverviewTaskMarginPx: 32.0px (16.0dp)\n" +
+                "\toverviewTaskIconSizePx: 96.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 88.0px (44.0dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 88.0px (44.0dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 128.0px (64.0dp)\n" +
+                "\toverviewActionsTopMarginPx: 40.0px (20.0dp)\n" +
+                "\toverviewActionsHeight: 96.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 72.0px (36.0dp)\n" +
+                "\toverviewPageSpacing: 88.0px (44.0dp)\n" +
+                "\toverviewRowSpacing: 72.0px (36.0dp)\n" +
+                "\toverviewGridSideMargin: 128.0px (64.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 0.0px (0.0dp)\n" +
+                "\tdropTargetBarSizePx: 144.0px (72.0dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 64.0px (32.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 312.0px (156.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 1272.0px (636.0dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 48.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.76250994px (0.38125497dp)\n" +
+                "\tgetCellLayoutHeight(): 1259.0px (629.5dp)\n" +
+                "\tgetCellLayoutWidth(): 2198.0px (1099.0dp)\n")
+    }
+
+    @Test
+    fun tabletLandscape() {
+        initializeVarsForTablet(isLandscape = true)
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.0 px\n" +
+                "\tisTablet:true\n" +
+                "\tisPhone:false\n" +
+                "\ttransposeLayoutWithOrientation:false\n" +
+                "\tisGestureMode:true\n" +
+                "\tisLandscape:true\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:false\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 2560.0px (1280.0dp)\n" +
+                "\theightPx: 1600.0px (800.0dp)\n" +
+                "\tavailableWidthPx: 2560.0px (1280.0dp)\n" +
+                "\tavailableHeightPx: 1496.0px (748.0dp)\n" +
+                "\tmInsets.left: 0.0px (0.0dp)\n" +
+                "\tmInsets.top: 104.0px (52.0dp)\n" +
+                "\tmInsets.right: 0.0px (0.0dp)\n" +
+                "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                "\taspectRatio:1.6\n" +
+                "\tisScalableGrid:true\n" +
+                "\tinv.numRows: 5\n" +
+                "\tinv.numColumns: 6\n" +
+                "\tinv.numSearchContainerColumns: 3\n" +
+                "\tminCellSize: PointF(120.0, 104.0)dp\n" +
+                "\tcellWidthPx: 240.0px (120.0dp)\n" +
+                "\tcellHeightPx: 208.0px (104.0dp)\n" +
+                "\tgetCellSize().x: 240.0px (120.0dp)\n" +
+                "\tgetCellSize().y: 208.0px (104.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 128.0px (64.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 32.0px (16.0dp)\n" +
+                "\tcellLayoutPaddingPx.left: 59.0px (29.5dp)\n" +
+                "\tcellLayoutPaddingPx.top: 32.0px (16.0dp)\n" +
+                "\tcellLayoutPaddingPx.right: 59.0px (29.5dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 59.0px (29.5dp)\n" +
+                "\ticonSizePx: 120.0px (60.0dp)\n" +
+                "\ticonTextSizePx: 28.0px (14.0dp)\n" +
+                "\ticonDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                "\tfolderCellWidthPx: 240.0px (120.0dp)\n" +
+                "\tfolderCellHeightPx: 208.0px (104.0dp)\n" +
+                "\tfolderChildIconSizePx: 120.0px (60.0dp)\n" +
+                "\tfolderChildTextSizePx: 28.0px (14.0dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 16.0px (8.0dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 0.0px (0.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                "\tbottomSheetTopPadding: 104.0px (52.0dp)\n" +
+                "\tallAppsShiftRange: 1496.0px (748.0dp)\n" +
+                "\tallAppsTopPadding: 104.0px (52.0dp)\n" +
+                "\tallAppsIconSizePx: 120.0px (60.0dp)\n" +
+                "\tallAppsIconTextSizePx: 28.0px (14.0dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                "\tallAppsCellHeightPx: 284.0px (142.0dp)\n" +
+                "\tallAppsCellWidthPx: 252.0px (126.0dp)\n" +
+                "\tallAppsBorderSpacePxX: 32.0px (16.0dp)\n" +
+                "\tallAppsBorderSpacePxY: 32.0px (16.0dp)\n" +
+                "\tnumShownAllAppsColumns: 6\n" +
+                "\tallAppsLeftRightPadding: 64.0px (32.0dp)\n" +
+                "\tallAppsLeftRightMargin: 380.0px (190.0dp)\n" +
+                "\thotseatBarSizePx: 200.0px (100.0dp)\n" +
+                "\tinv.hotseatColumnSpan: 4\n" +
+                "\thotseatCellHeightPx: 135.0px (67.5dp)\n" +
+                "\thotseatBarBottomSpacePx: 80.0px (40.0dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                "\thotseatQsbSpace: 64.0px (32.0dp)\n" +
+                "\thotseatQsbHeight: 126.0px (63.0dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 128.0px (64.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: -8.0px (-4.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 73.0px (36.5dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 1040.0px (520.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 300.0px (150.0dp)\n" +
+                "\tnumShownHotseatIcons: 6\n" +
+                "\thotseatBorderSpace: 100.0px (50.0dp)\n" +
+                "\tisQsbInline: true\n" +
+                "\tqsbWidth: 640.0px (320.0dp)\n" +
+                "\tisTaskbarPresent:true\n" +
+                "\tisTaskbarPresentInApps:true\n" +
+                "\ttaskbarSize: 120.0px (60.0dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 240.0px (120.0dp)\n" +
+                "\tworkspacePadding.left: 181.0px (90.5dp)\n" +
+                "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                "\tworkspacePadding.right: 181.0px (90.5dp)\n" +
+                "\tworkspacePadding.bottom: 237.0px (118.5dp)\n" +
+                "\ticonScale: 1.0px (0.5dp)\n" +
+                "\tcellScaleToFit : 1.0px (0.5dp)\n" +
+                "\textraSpace: 104.0px (52.0dp)\n" +
+                "\tunscaled extraSpace: 104.0px (52.0dp)\n" +
+                "\tmaxEmptySpace: 200.0px (100.0dp)\n" +
+                "\tworkspaceTopPadding: 32.0px (16.0dp)\n" +
+                "\tworkspaceBottomPadding: 72.0px (36.0dp)\n" +
+                "\toverviewTaskMarginPx: 32.0px (16.0dp)\n" +
+                "\toverviewTaskIconSizePx: 96.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 88.0px (44.0dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 88.0px (44.0dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 128.0px (64.0dp)\n" +
+                "\toverviewActionsTopMarginPx: 40.0px (20.0dp)\n" +
+                "\toverviewActionsHeight: 96.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 72.0px (36.0dp)\n" +
+                "\toverviewPageSpacing: 88.0px (44.0dp)\n" +
+                "\toverviewRowSpacing: 72.0px (36.0dp)\n" +
+                "\toverviewGridSideMargin: 128.0px (64.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 0.0px (0.0dp)\n" +
+                "\tdropTargetBarSizePx: 144.0px (72.0dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 64.0px (32.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 312.0px (156.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 1272.0px (636.0dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 48.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.76250994px (0.38125497dp)\n" +
+                "\tgetCellLayoutHeight(): 1259.0px (629.5dp)\n" +
+                "\tgetCellLayoutWidth(): 2198.0px (1099.0dp)\n")
+    }
+
+    @Test
+    fun tabletPortrait3Button() {
+        initializeVarsForTablet(isGestureMode = false)
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.0 px\n" +
+                "\tisTablet:true\n" +
+                "\tisPhone:false\n" +
+                "\ttransposeLayoutWithOrientation:false\n" +
+                "\tisGestureMode:false\n" +
+                "\tisLandscape:false\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:false\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 1600.0px (800.0dp)\n" +
+                "\theightPx: 2560.0px (1280.0dp)\n" +
+                "\tavailableWidthPx: 1600.0px (800.0dp)\n" +
+                "\tavailableHeightPx: 2456.0px (1228.0dp)\n" +
+                "\tmInsets.left: 0.0px (0.0dp)\n" +
+                "\tmInsets.top: 104.0px (52.0dp)\n" +
+                "\tmInsets.right: 0.0px (0.0dp)\n" +
+                "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                "\taspectRatio:1.6\n" +
+                "\tisScalableGrid:true\n" +
+                "\tinv.numRows: 5\n" +
+                "\tinv.numColumns: 6\n" +
+                "\tinv.numSearchContainerColumns: 3\n" +
+                "\tminCellSize: PointF(102.0, 120.0)dp\n" +
+                "\tcellWidthPx: 204.0px (102.0dp)\n" +
+                "\tcellHeightPx: 240.0px (120.0dp)\n" +
+                "\tgetCellSize().x: 204.0px (102.0dp)\n" +
+                "\tgetCellSize().y: 240.0px (120.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 32.0px (16.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 128.0px (64.0dp)\n" +
+                "\tcellLayoutPaddingPx.left: 72.0px (36.0dp)\n" +
+                "\tcellLayoutPaddingPx.top: 72.0px (36.0dp)\n" +
+                "\tcellLayoutPaddingPx.right: 72.0px (36.0dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 72.0px (36.0dp)\n" +
+                "\ticonSizePx: 120.0px (60.0dp)\n" +
+                "\ticonTextSizePx: 28.0px (14.0dp)\n" +
+                "\ticonDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                "\tfolderCellWidthPx: 204.0px (102.0dp)\n" +
+                "\tfolderCellHeightPx: 240.0px (120.0dp)\n" +
+                "\tfolderChildIconSizePx: 120.0px (60.0dp)\n" +
+                "\tfolderChildTextSizePx: 28.0px (14.0dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 27.0px (13.5dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 0.0px (0.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                "\tbottomSheetTopPadding: 704.0px (352.0dp)\n" +
+                "\tallAppsShiftRange: 1856.0px (928.0dp)\n" +
+                "\tallAppsTopPadding: 704.0px (352.0dp)\n" +
+                "\tallAppsIconSizePx: 120.0px (60.0dp)\n" +
+                "\tallAppsIconTextSizePx: 28.0px (14.0dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                "\tallAppsCellHeightPx: 316.0px (158.0dp)\n" +
+                "\tallAppsCellWidthPx: 192.0px (96.0dp)\n" +
+                "\tallAppsBorderSpacePxX: 16.0px (8.0dp)\n" +
+                "\tallAppsBorderSpacePxY: 32.0px (16.0dp)\n" +
+                "\tnumShownAllAppsColumns: 6\n" +
+                "\tallAppsLeftRightPadding: 56.0px (28.0dp)\n" +
+                "\tallAppsLeftRightMargin: 128.0px (64.0dp)\n" +
+                "\thotseatBarSizePx: 358.0px (179.0dp)\n" +
+                "\tinv.hotseatColumnSpan: 6\n" +
+                "\thotseatCellHeightPx: 135.0px (67.5dp)\n" +
+                "\thotseatBarBottomSpacePx: 72.0px (36.0dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarEndOffset: 460.0px (230.0dp)\n" +
+                "\thotseatQsbSpace: 64.0px (32.0dp)\n" +
+                "\thotseatQsbHeight: 126.0px (63.0dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 216.0px (108.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: 158.0px (79.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 65.0px (32.5dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 76.0px (38.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 460.0px (230.0dp)\n" +
+                "\tnumShownHotseatIcons: 5\n" +
+                "\thotseatBorderSpace: 116.0px (58.0dp)\n" +
+                "\tisQsbInline: false\n" +
+                "\tqsbWidth: 1300.0px (650.0dp)\n" +
+                "\tisTaskbarPresent:true\n" +
+                "\tisTaskbarPresentInApps:true\n" +
+                "\ttaskbarSize: 120.0px (60.0dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 108.0px (54.0dp)\n" +
+                "\tworkspacePadding.left: 36.0px (18.0dp)\n" +
+                "\tworkspacePadding.top: 87.0px (43.5dp)\n" +
+                "\tworkspacePadding.right: 36.0px (18.0dp)\n" +
+                "\tworkspacePadding.bottom: 513.0px (256.5dp)\n" +
+                "\ticonScale: 1.0px (0.5dp)\n" +
+                "\tcellScaleToFit : 1.0px (0.5dp)\n" +
+                "\textraSpace: 362.0px (181.0dp)\n" +
+                "\tunscaled extraSpace: 362.0px (181.0dp)\n" +
+                "\tmaxEmptySpace: 19998.0px (9999.0dp)\n" +
+                "\tworkspaceTopPadding: 159.0px (79.5dp)\n" +
+                "\tworkspaceBottomPadding: 203.0px (101.5dp)\n" +
+                "\toverviewTaskMarginPx: 32.0px (16.0dp)\n" +
+                "\toverviewTaskIconSizePx: 96.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 88.0px (44.0dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 88.0px (44.0dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 128.0px (64.0dp)\n" +
+                "\toverviewActionsTopMarginPx: 48.0px (24.0dp)\n" +
+                "\toverviewActionsHeight: 96.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 72.0px (36.0dp)\n" +
+                "\toverviewPageSpacing: 88.0px (44.0dp)\n" +
+                "\toverviewRowSpacing: 72.0px (36.0dp)\n" +
+                "\toverviewGridSideMargin: 128.0px (64.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 220.0px (110.0dp)\n" +
+                "\tdropTargetBarSizePx: 144.0px (72.0dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 96.0px (48.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 564.0px (282.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 1986.0px (993.0dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 48.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.76616377px (0.38308188dp)\n" +
+                "\tgetCellLayoutHeight(): 1856.0px (928.0dp)\n" +
+                "\tgetCellLayoutWidth(): 1528.0px (764.0dp)\n")
+    }
+
+    @Test
+    fun tabletPortrait() {
+        initializeVarsForTablet()
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.0 px\n" +
+                "\tisTablet:true\n" +
+                "\tisPhone:false\n" +
+                "\ttransposeLayoutWithOrientation:false\n" +
+                "\tisGestureMode:true\n" +
+                "\tisLandscape:false\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:false\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 1600.0px (800.0dp)\n" +
+                "\theightPx: 2560.0px (1280.0dp)\n" +
+                "\tavailableWidthPx: 1600.0px (800.0dp)\n" +
+                "\tavailableHeightPx: 2456.0px (1228.0dp)\n" +
+                "\tmInsets.left: 0.0px (0.0dp)\n" +
+                "\tmInsets.top: 104.0px (52.0dp)\n" +
+                "\tmInsets.right: 0.0px (0.0dp)\n" +
+                "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                "\taspectRatio:1.6\n" +
+                "\tisScalableGrid:true\n" +
+                "\tinv.numRows: 5\n" +
+                "\tinv.numColumns: 6\n" +
+                "\tinv.numSearchContainerColumns: 3\n" +
+                "\tminCellSize: PointF(102.0, 120.0)dp\n" +
+                "\tcellWidthPx: 204.0px (102.0dp)\n" +
+                "\tcellHeightPx: 240.0px (120.0dp)\n" +
+                "\tgetCellSize().x: 204.0px (102.0dp)\n" +
+                "\tgetCellSize().y: 240.0px (120.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 32.0px (16.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 128.0px (64.0dp)\n" +
+                "\tcellLayoutPaddingPx.left: 72.0px (36.0dp)\n" +
+                "\tcellLayoutPaddingPx.top: 72.0px (36.0dp)\n" +
+                "\tcellLayoutPaddingPx.right: 72.0px (36.0dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 72.0px (36.0dp)\n" +
+                "\ticonSizePx: 120.0px (60.0dp)\n" +
+                "\ticonTextSizePx: 28.0px (14.0dp)\n" +
+                "\ticonDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                "\tfolderCellWidthPx: 204.0px (102.0dp)\n" +
+                "\tfolderCellHeightPx: 240.0px (120.0dp)\n" +
+                "\tfolderChildIconSizePx: 120.0px (60.0dp)\n" +
+                "\tfolderChildTextSizePx: 28.0px (14.0dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 27.0px (13.5dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 0.0px (0.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                "\tbottomSheetTopPadding: 704.0px (352.0dp)\n" +
+                "\tallAppsShiftRange: 1856.0px (928.0dp)\n" +
+                "\tallAppsTopPadding: 704.0px (352.0dp)\n" +
+                "\tallAppsIconSizePx: 120.0px (60.0dp)\n" +
+                "\tallAppsIconTextSizePx: 28.0px (14.0dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                "\tallAppsCellHeightPx: 316.0px (158.0dp)\n" +
+                "\tallAppsCellWidthPx: 192.0px (96.0dp)\n" +
+                "\tallAppsBorderSpacePxX: 16.0px (8.0dp)\n" +
+                "\tallAppsBorderSpacePxY: 32.0px (16.0dp)\n" +
+                "\tnumShownAllAppsColumns: 6\n" +
+                "\tallAppsLeftRightPadding: 56.0px (28.0dp)\n" +
+                "\tallAppsLeftRightMargin: 128.0px (64.0dp)\n" +
+                "\thotseatBarSizePx: 358.0px (179.0dp)\n" +
+                "\tinv.hotseatColumnSpan: 6\n" +
+                "\thotseatCellHeightPx: 135.0px (67.5dp)\n" +
+                "\thotseatBarBottomSpacePx: 72.0px (36.0dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                "\thotseatQsbSpace: 64.0px (32.0dp)\n" +
+                "\thotseatQsbHeight: 126.0px (63.0dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 216.0px (108.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: 158.0px (79.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 65.0px (32.5dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 150.0px (75.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 150.0px (75.0dp)\n" +
+                "\tnumShownHotseatIcons: 6\n" +
+                "\thotseatBorderSpace: 116.0px (58.0dp)\n" +
+                "\tisQsbInline: false\n" +
+                "\tqsbWidth: 1300.0px (650.0dp)\n" +
+                "\tisTaskbarPresent:true\n" +
+                "\tisTaskbarPresentInApps:true\n" +
+                "\ttaskbarSize: 120.0px (60.0dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 108.0px (54.0dp)\n" +
+                "\tworkspacePadding.left: 36.0px (18.0dp)\n" +
+                "\tworkspacePadding.top: 87.0px (43.5dp)\n" +
+                "\tworkspacePadding.right: 36.0px (18.0dp)\n" +
+                "\tworkspacePadding.bottom: 513.0px (256.5dp)\n" +
+                "\ticonScale: 1.0px (0.5dp)\n" +
+                "\tcellScaleToFit : 1.0px (0.5dp)\n" +
+                "\textraSpace: 362.0px (181.0dp)\n" +
+                "\tunscaled extraSpace: 362.0px (181.0dp)\n" +
+                "\tmaxEmptySpace: 19998.0px (9999.0dp)\n" +
+                "\tworkspaceTopPadding: 159.0px (79.5dp)\n" +
+                "\tworkspaceBottomPadding: 203.0px (101.5dp)\n" +
+                "\toverviewTaskMarginPx: 32.0px (16.0dp)\n" +
+                "\toverviewTaskIconSizePx: 96.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 88.0px (44.0dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 88.0px (44.0dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 128.0px (64.0dp)\n" +
+                "\toverviewActionsTopMarginPx: 48.0px (24.0dp)\n" +
+                "\toverviewActionsHeight: 96.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 72.0px (36.0dp)\n" +
+                "\toverviewPageSpacing: 88.0px (44.0dp)\n" +
+                "\toverviewRowSpacing: 72.0px (36.0dp)\n" +
+                "\toverviewGridSideMargin: 128.0px (64.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 220.0px (110.0dp)\n" +
+                "\tdropTargetBarSizePx: 144.0px (72.0dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 96.0px (48.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 564.0px (282.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 1986.0px (993.0dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 48.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.76616377px (0.38308188dp)\n" +
+                "\tgetCellLayoutHeight(): 1856.0px (928.0dp)\n" +
+                "\tgetCellLayoutWidth(): 1528.0px (764.0dp)\n")
+    }
+
+    @Test
+    fun twoPanelLandscape3Button() {
+        initializeVarsForTwoPanel(isLandscape = true, isGestureMode = false)
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.625 px\n" +
+                "\tisTablet:true\n" +
+                "\tisPhone:false\n" +
+                "\ttransposeLayoutWithOrientation:false\n" +
+                "\tisGestureMode:false\n" +
+                "\tisLandscape:true\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:true\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 2208.0px (841.1429dp)\n" +
+                "\theightPx: 1840.0px (700.9524dp)\n" +
+                "\tavailableWidthPx: 2208.0px (841.1429dp)\n" +
+                "\tavailableHeightPx: 1730.0px (659.0476dp)\n" +
+                "\tmInsets.left: 0.0px (0.0dp)\n" +
+                "\tmInsets.top: 110.0px (41.904762dp)\n" +
+                "\tmInsets.right: 0.0px (0.0dp)\n" +
+                "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                "\taspectRatio:1.2\n" +
+                "\tisScalableGrid:true\n" +
+                "\tinv.numRows: 4\n" +
+                "\tinv.numColumns: 4\n" +
+                "\tinv.numSearchContainerColumns: 4\n" +
+                "\tminCellSize: PointF(80.0, 102.0)dp\n" +
+                "\tcellWidthPx: 210.0px (80.0dp)\n" +
+                "\tcellHeightPx: 267.0px (101.71429dp)\n" +
+                "\tgetCellSize().x: 210.0px (80.0dp)\n" +
+                "\tgetCellSize().y: 267.0px (101.71429dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 52.0px (19.809525dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 52.0px (19.809525dp)\n" +
+                "\tcellLayoutPaddingPx.left: 26.0px (9.904762dp)\n" +
+                "\tcellLayoutPaddingPx.top: 18.0px (6.857143dp)\n" +
+                "\tcellLayoutPaddingPx.right: 26.0px (9.904762dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 26.0px (9.904762dp)\n" +
+                "\ticonSizePx: 157.0px (59.809525dp)\n" +
+                "\ticonTextSizePx: 36.0px (13.714286dp)\n" +
+                "\ticonDrawablePaddingPx: 17.0px (6.4761906dp)\n" +
+                "\tfolderCellWidthPx: 210.0px (80.0dp)\n" +
+                "\tfolderCellHeightPx: 267.0px (101.71429dp)\n" +
+                "\tfolderChildIconSizePx: 158.0px (60.190475dp)\n" +
+                "\tfolderChildTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 19.0px (7.2380953dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 42.0px (16.0dp)\n" +
+                "\tbottomSheetTopPadding: 110.0px (41.904762dp)\n" +
+                "\tallAppsShiftRange: 1730.0px (659.0476dp)\n" +
+                "\tallAppsTopPadding: 110.0px (41.904762dp)\n" +
+                "\tallAppsIconSizePx: 157.0px (59.809525dp)\n" +
+                "\tallAppsIconTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                "\tallAppsCellHeightPx: 315.0px (120.0dp)\n" +
+                "\tallAppsCellWidthPx: 210.0px (80.0dp)\n" +
+                "\tallAppsBorderSpacePxX: 52.0px (19.809525dp)\n" +
+                "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                "\tnumShownAllAppsColumns: 6\n" +
+                "\tallAppsLeftRightPadding: 137.0px (52.190475dp)\n" +
+                "\tallAppsLeftRightMargin: 207.0px (78.85714dp)\n" +
+                "\thotseatBarSizePx: 417.0px (158.85715dp)\n" +
+                "\tinv.hotseatColumnSpan: 6\n" +
+                "\thotseatCellHeightPx: 177.0px (67.42857dp)\n" +
+                "\thotseatBarBottomSpacePx: 53.0px (20.190475dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarEndOffset: 744.0px (283.42856dp)\n" +
+                "\thotseatQsbSpace: 74.0px (28.190475dp)\n" +
+                "\thotseatQsbHeight: 165.0px (62.857143dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 116.0px (44.190475dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: 197.0px (75.04762dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 43.0px (16.380953dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 216.0px (82.28571dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 744.0px (283.42856dp)\n" +
+                "\tnumShownHotseatIcons: 6\n" +
+                "\thotseatBorderSpace: 61.0px (23.238094dp)\n" +
+                "\tisQsbInline: false\n" +
+                "\tqsbWidth: 1467.0px (558.8571dp)\n" +
+                "\tisTaskbarPresent:true\n" +
+                "\tisTaskbarPresentInApps:true\n" +
+                "\ttaskbarSize: 158.0px (60.190475dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 79.0px (30.095238dp)\n" +
+                "\tworkspacePadding.left: 53.0px (20.190475dp)\n" +
+                "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                "\tworkspacePadding.right: 53.0px (20.190475dp)\n" +
+                "\tworkspacePadding.bottom: 461.0px (175.61905dp)\n" +
+                "\ticonScale: 0.99864316px (0.3804355dp)\n" +
+                "\tcellScaleToFit : 0.99864316px (0.3804355dp)\n" +
+                "\textraSpace: 57.0px (21.714285dp)\n" +
+                "\tunscaled extraSpace: 57.077446px (21.74379dp)\n" +
+                "\tmaxEmptySpace: 131.0px (49.904762dp)\n" +
+                "\tworkspaceTopPadding: 18.0px (6.857143dp)\n" +
+                "\tworkspaceBottomPadding: 39.0px (14.857142dp)\n" +
+                "\toverviewTaskMarginPx: 32.0px (12.190476dp)\n" +
+                "\toverviewTaskIconSizePx: 126.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 158.0px (60.190475dp)\n" +
+                "\toverviewActionsTopMarginPx: 32.0px (12.190476dp)\n" +
+                "\toverviewActionsHeight: 126.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewPageSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewRowSpacing: 74.0px (28.190475dp)\n" +
+                "\toverviewGridSideMargin: 168.0px (64.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 0.0px (0.0dp)\n" +
+                "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 299.0px (113.90476dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 1307.0px (497.90475dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.79432625px (0.30260047dp)\n" +
+                "\tgetCellLayoutHeight(): 1269.0px (483.42856dp)\n" +
+                "\tgetCellLayoutWidth(): 1051.0px (400.38095dp)\n")
+    }
+
+    @Test
+    fun twoPanelLandscape() {
+        initializeVarsForTwoPanel(isLandscape = true)
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.625 px\n" +
+                "\tisTablet:true\n" +
+                "\tisPhone:false\n" +
+                "\ttransposeLayoutWithOrientation:false\n" +
+                "\tisGestureMode:true\n" +
+                "\tisLandscape:true\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:true\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 2208.0px (841.1429dp)\n" +
+                "\theightPx: 1840.0px (700.9524dp)\n" +
+                "\tavailableWidthPx: 2208.0px (841.1429dp)\n" +
+                "\tavailableHeightPx: 1730.0px (659.0476dp)\n" +
+                "\tmInsets.left: 0.0px (0.0dp)\n" +
+                "\tmInsets.top: 110.0px (41.904762dp)\n" +
+                "\tmInsets.right: 0.0px (0.0dp)\n" +
+                "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                "\taspectRatio:1.2\n" +
+                "\tisScalableGrid:true\n" +
+                "\tinv.numRows: 4\n" +
+                "\tinv.numColumns: 4\n" +
+                "\tinv.numSearchContainerColumns: 4\n" +
+                "\tminCellSize: PointF(80.0, 102.0)dp\n" +
+                "\tcellWidthPx: 210.0px (80.0dp)\n" +
+                "\tcellHeightPx: 267.0px (101.71429dp)\n" +
+                "\tgetCellSize().x: 210.0px (80.0dp)\n" +
+                "\tgetCellSize().y: 267.0px (101.71429dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 52.0px (19.809525dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 52.0px (19.809525dp)\n" +
+                "\tcellLayoutPaddingPx.left: 26.0px (9.904762dp)\n" +
+                "\tcellLayoutPaddingPx.top: 18.0px (6.857143dp)\n" +
+                "\tcellLayoutPaddingPx.right: 26.0px (9.904762dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 26.0px (9.904762dp)\n" +
+                "\ticonSizePx: 157.0px (59.809525dp)\n" +
+                "\ticonTextSizePx: 36.0px (13.714286dp)\n" +
+                "\ticonDrawablePaddingPx: 17.0px (6.4761906dp)\n" +
+                "\tfolderCellWidthPx: 210.0px (80.0dp)\n" +
+                "\tfolderCellHeightPx: 267.0px (101.71429dp)\n" +
+                "\tfolderChildIconSizePx: 158.0px (60.190475dp)\n" +
+                "\tfolderChildTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 19.0px (7.2380953dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 42.0px (16.0dp)\n" +
+                "\tbottomSheetTopPadding: 110.0px (41.904762dp)\n" +
+                "\tallAppsShiftRange: 1730.0px (659.0476dp)\n" +
+                "\tallAppsTopPadding: 110.0px (41.904762dp)\n" +
+                "\tallAppsIconSizePx: 157.0px (59.809525dp)\n" +
+                "\tallAppsIconTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                "\tallAppsCellHeightPx: 315.0px (120.0dp)\n" +
+                "\tallAppsCellWidthPx: 210.0px (80.0dp)\n" +
+                "\tallAppsBorderSpacePxX: 52.0px (19.809525dp)\n" +
+                "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                "\tnumShownAllAppsColumns: 6\n" +
+                "\tallAppsLeftRightPadding: 137.0px (52.190475dp)\n" +
+                "\tallAppsLeftRightMargin: 207.0px (78.85714dp)\n" +
+                "\thotseatBarSizePx: 417.0px (158.85715dp)\n" +
+                "\tinv.hotseatColumnSpan: 6\n" +
+                "\thotseatCellHeightPx: 177.0px (67.42857dp)\n" +
+                "\thotseatBarBottomSpacePx: 53.0px (20.190475dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                "\thotseatQsbSpace: 74.0px (28.190475dp)\n" +
+                "\thotseatQsbHeight: 165.0px (62.857143dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 116.0px (44.190475dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: 197.0px (75.04762dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 43.0px (16.380953dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 370.0px (140.95238dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 370.0px (140.95238dp)\n" +
+                "\tnumShownHotseatIcons: 6\n" +
+                "\thotseatBorderSpace: 105.0px (40.0dp)\n" +
+                "\tisQsbInline: false\n" +
+                "\tqsbWidth: 1467.0px (558.8571dp)\n" +
+                "\tisTaskbarPresent:true\n" +
+                "\tisTaskbarPresentInApps:true\n" +
+                "\ttaskbarSize: 158.0px (60.190475dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 79.0px (30.095238dp)\n" +
+                "\tworkspacePadding.left: 53.0px (20.190475dp)\n" +
+                "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                "\tworkspacePadding.right: 53.0px (20.190475dp)\n" +
+                "\tworkspacePadding.bottom: 461.0px (175.61905dp)\n" +
+                "\ticonScale: 0.99864316px (0.3804355dp)\n" +
+                "\tcellScaleToFit : 0.99864316px (0.3804355dp)\n" +
+                "\textraSpace: 57.0px (21.714285dp)\n" +
+                "\tunscaled extraSpace: 57.077446px (21.74379dp)\n" +
+                "\tmaxEmptySpace: 131.0px (49.904762dp)\n" +
+                "\tworkspaceTopPadding: 18.0px (6.857143dp)\n" +
+                "\tworkspaceBottomPadding: 39.0px (14.857142dp)\n" +
+                "\toverviewTaskMarginPx: 32.0px (12.190476dp)\n" +
+                "\toverviewTaskIconSizePx: 126.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 158.0px (60.190475dp)\n" +
+                "\toverviewActionsTopMarginPx: 32.0px (12.190476dp)\n" +
+                "\toverviewActionsHeight: 126.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewPageSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewRowSpacing: 74.0px (28.190475dp)\n" +
+                "\toverviewGridSideMargin: 168.0px (64.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 0.0px (0.0dp)\n" +
+                "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 299.0px (113.90476dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 1307.0px (497.90475dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.79432625px (0.30260047dp)\n" +
+                "\tgetCellLayoutHeight(): 1269.0px (483.42856dp)\n" +
+                "\tgetCellLayoutWidth(): 1051.0px (400.38095dp)\n")
+    }
+
+    @Test
+    fun twoPanelPortrait3Button() {
+        initializeVarsForTwoPanel(isGestureMode = false)
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.625 px\n" +
+                "\tisTablet:true\n" +
+                "\tisPhone:false\n" +
+                "\ttransposeLayoutWithOrientation:false\n" +
+                "\tisGestureMode:false\n" +
+                "\tisLandscape:false\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:true\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 1840.0px (700.9524dp)\n" +
+                "\theightPx: 2208.0px (841.1429dp)\n" +
+                "\tavailableWidthPx: 1840.0px (700.9524dp)\n" +
+                "\tavailableHeightPx: 2098.0px (799.2381dp)\n" +
+                "\tmInsets.left: 0.0px (0.0dp)\n" +
+                "\tmInsets.top: 110.0px (41.904762dp)\n" +
+                "\tmInsets.right: 0.0px (0.0dp)\n" +
+                "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                "\taspectRatio:1.2\n" +
+                "\tisScalableGrid:true\n" +
+                "\tinv.numRows: 4\n" +
+                "\tinv.numColumns: 4\n" +
+                "\tinv.numSearchContainerColumns: 4\n" +
+                "\tminCellSize: PointF(68.0, 116.0)dp\n" +
+                "\tcellWidthPx: 178.0px (67.809525dp)\n" +
+                "\tcellHeightPx: 304.0px (115.809525dp)\n" +
+                "\tgetCellSize().x: 178.0px (67.809525dp)\n" +
+                "\tgetCellSize().y: 304.0px (115.809525dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 52.0px (19.809525dp)\n" +
+                "\tcellLayoutPaddingPx.left: 21.0px (8.0dp)\n" +
+                "\tcellLayoutPaddingPx.top: 21.0px (8.0dp)\n" +
+                "\tcellLayoutPaddingPx.right: 21.0px (8.0dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 21.0px (8.0dp)\n" +
+                "\ticonSizePx: 136.0px (51.809525dp)\n" +
+                "\ticonTextSizePx: 31.0px (11.809524dp)\n" +
+                "\ticonDrawablePaddingPx: 17.0px (6.4761906dp)\n" +
+                "\tfolderCellWidthPx: 192.0px (73.14286dp)\n" +
+                "\tfolderCellHeightPx: 304.0px (115.809525dp)\n" +
+                "\tfolderChildIconSizePx: 158.0px (60.190475dp)\n" +
+                "\tfolderChildTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 32.0px (12.190476dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 42.0px (16.0dp)\n" +
+                "\tbottomSheetTopPadding: 110.0px (41.904762dp)\n" +
+                "\tallAppsShiftRange: 2098.0px (799.2381dp)\n" +
+                "\tallAppsTopPadding: 110.0px (41.904762dp)\n" +
+                "\tallAppsIconSizePx: 136.0px (51.809525dp)\n" +
+                "\tallAppsIconTextSizePx: 31.0px (11.809524dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                "\tallAppsCellHeightPx: 345.0px (131.42857dp)\n" +
+                "\tallAppsCellWidthPx: 178.0px (67.809525dp)\n" +
+                "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                "\tallAppsBorderSpacePxY: 73.0px (27.809525dp)\n" +
+                "\tnumShownAllAppsColumns: 6\n" +
+                "\tallAppsLeftRightPadding: 126.0px (48.0dp)\n" +
+                "\tallAppsLeftRightMargin: 155.0px (59.04762dp)\n" +
+                "\thotseatBarSizePx: 459.0px (174.85715dp)\n" +
+                "\tinv.hotseatColumnSpan: 6\n" +
+                "\thotseatCellHeightPx: 153.0px (58.285713dp)\n" +
+                "\thotseatBarBottomSpacePx: 95.0px (36.190475dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarEndOffset: 660.0px (251.42857dp)\n" +
+                "\thotseatQsbSpace: 95.0px (36.190475dp)\n" +
+                "\thotseatQsbHeight: 165.0px (62.857143dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 171.0px (65.14286dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: 219.0px (83.42857dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 87.0px (33.142857dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 128.0px (48.761906dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 660.0px (251.42857dp)\n" +
+                "\tnumShownHotseatIcons: 6\n" +
+                "\thotseatBorderSpace: 47.0px (17.904762dp)\n" +
+                "\tisQsbInline: false\n" +
+                "\tqsbWidth: 1236.0px (470.85715dp)\n" +
+                "\tisTaskbarPresent:true\n" +
+                "\tisTaskbarPresentInApps:true\n" +
+                "\ttaskbarSize: 158.0px (60.190475dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 58.0px (22.095238dp)\n" +
+                "\tworkspacePadding.left: 37.0px (14.095238dp)\n" +
+                "\tworkspacePadding.top: 68.0px (25.904762dp)\n" +
+                "\tworkspacePadding.right: 37.0px (14.095238dp)\n" +
+                "\tworkspacePadding.bottom: 615.0px (234.28572dp)\n" +
+                "\ticonScale: 0.9978308px (0.38012603dp)\n" +
+                "\tcellScaleToFit : 0.9978308px (0.38012603dp)\n" +
+                "\textraSpace: 235.0px (89.52381dp)\n" +
+                "\tunscaled extraSpace: 235.51086px (89.71842dp)\n" +
+                "\tmaxEmptySpace: 236.0px (89.90476dp)\n" +
+                "\tworkspaceTopPadding: 89.0px (33.904762dp)\n" +
+                "\tworkspaceBottomPadding: 146.0px (55.61905dp)\n" +
+                "\toverviewTaskMarginPx: 32.0px (12.190476dp)\n" +
+                "\toverviewTaskIconSizePx: 126.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 158.0px (60.190475dp)\n" +
+                "\toverviewActionsTopMarginPx: 63.0px (24.0dp)\n" +
+                "\toverviewActionsHeight: 126.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewPageSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewRowSpacing: 74.0px (28.190475dp)\n" +
+                "\toverviewGridSideMargin: 168.0px (64.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 168.0px (64.0dp)\n" +
+                "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 467.0px (177.90475dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 1578.0px (601.1429dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.785159px (0.29910818dp)\n" +
+                "\tgetCellLayoutHeight(): 1415.0px (539.0476dp)\n" +
+                "\tgetCellLayoutWidth(): 883.0px (336.38095dp)\n")
+    }
+
+    @Test
+    fun twoPanelPortrait() {
+        initializeVarsForTwoPanel()
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.625 px\n" +
+                "\tisTablet:true\n" +
+                "\tisPhone:false\n" +
+                "\ttransposeLayoutWithOrientation:false\n" +
+                "\tisGestureMode:true\n" +
+                "\tisLandscape:false\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:true\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 1840.0px (700.9524dp)\n" +
+                "\theightPx: 2208.0px (841.1429dp)\n" +
+                "\tavailableWidthPx: 1840.0px (700.9524dp)\n" +
+                "\tavailableHeightPx: 2098.0px (799.2381dp)\n" +
+                "\tmInsets.left: 0.0px (0.0dp)\n" +
+                "\tmInsets.top: 110.0px (41.904762dp)\n" +
+                "\tmInsets.right: 0.0px (0.0dp)\n" +
+                "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                "\taspectRatio:1.2\n" +
+                "\tisScalableGrid:true\n" +
+                "\tinv.numRows: 4\n" +
+                "\tinv.numColumns: 4\n" +
+                "\tinv.numSearchContainerColumns: 4\n" +
+                "\tminCellSize: PointF(68.0, 116.0)dp\n" +
+                "\tcellWidthPx: 178.0px (67.809525dp)\n" +
+                "\tcellHeightPx: 304.0px (115.809525dp)\n" +
+                "\tgetCellSize().x: 178.0px (67.809525dp)\n" +
+                "\tgetCellSize().y: 304.0px (115.809525dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 52.0px (19.809525dp)\n" +
+                "\tcellLayoutPaddingPx.left: 21.0px (8.0dp)\n" +
+                "\tcellLayoutPaddingPx.top: 21.0px (8.0dp)\n" +
+                "\tcellLayoutPaddingPx.right: 21.0px (8.0dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 21.0px (8.0dp)\n" +
+                "\ticonSizePx: 136.0px (51.809525dp)\n" +
+                "\ticonTextSizePx: 31.0px (11.809524dp)\n" +
+                "\ticonDrawablePaddingPx: 17.0px (6.4761906dp)\n" +
+                "\tfolderCellWidthPx: 192.0px (73.14286dp)\n" +
+                "\tfolderCellHeightPx: 304.0px (115.809525dp)\n" +
+                "\tfolderChildIconSizePx: 158.0px (60.190475dp)\n" +
+                "\tfolderChildTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 32.0px (12.190476dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 42.0px (16.0dp)\n" +
+                "\tbottomSheetTopPadding: 110.0px (41.904762dp)\n" +
+                "\tallAppsShiftRange: 2098.0px (799.2381dp)\n" +
+                "\tallAppsTopPadding: 110.0px (41.904762dp)\n" +
+                "\tallAppsIconSizePx: 136.0px (51.809525dp)\n" +
+                "\tallAppsIconTextSizePx: 31.0px (11.809524dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                "\tallAppsCellHeightPx: 345.0px (131.42857dp)\n" +
+                "\tallAppsCellWidthPx: 178.0px (67.809525dp)\n" +
+                "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                "\tallAppsBorderSpacePxY: 73.0px (27.809525dp)\n" +
+                "\tnumShownAllAppsColumns: 6\n" +
+                "\tallAppsLeftRightPadding: 126.0px (48.0dp)\n" +
+                "\tallAppsLeftRightMargin: 155.0px (59.04762dp)\n" +
+                "\thotseatBarSizePx: 459.0px (174.85715dp)\n" +
+                "\tinv.hotseatColumnSpan: 6\n" +
+                "\thotseatCellHeightPx: 153.0px (58.285713dp)\n" +
+                "\thotseatBarBottomSpacePx: 95.0px (36.190475dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                "\thotseatQsbSpace: 95.0px (36.190475dp)\n" +
+                "\thotseatQsbHeight: 165.0px (62.857143dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 171.0px (65.14286dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: 219.0px (83.42857dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 87.0px (33.142857dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 302.0px (115.04762dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 302.0px (115.04762dp)\n" +
+                "\tnumShownHotseatIcons: 6\n" +
+                "\thotseatBorderSpace: 84.0px (32.0dp)\n" +
+                "\tisQsbInline: false\n" +
+                "\tqsbWidth: 1236.0px (470.85715dp)\n" +
+                "\tisTaskbarPresent:true\n" +
+                "\tisTaskbarPresentInApps:true\n" +
+                "\ttaskbarSize: 158.0px (60.190475dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 58.0px (22.095238dp)\n" +
+                "\tworkspacePadding.left: 37.0px (14.095238dp)\n" +
+                "\tworkspacePadding.top: 68.0px (25.904762dp)\n" +
+                "\tworkspacePadding.right: 37.0px (14.095238dp)\n" +
+                "\tworkspacePadding.bottom: 615.0px (234.28572dp)\n" +
+                "\ticonScale: 0.9978308px (0.38012603dp)\n" +
+                "\tcellScaleToFit : 0.9978308px (0.38012603dp)\n" +
+                "\textraSpace: 235.0px (89.52381dp)\n" +
+                "\tunscaled extraSpace: 235.51086px (89.71842dp)\n" +
+                "\tmaxEmptySpace: 236.0px (89.90476dp)\n" +
+                "\tworkspaceTopPadding: 89.0px (33.904762dp)\n" +
+                "\tworkspaceBottomPadding: 146.0px (55.61905dp)\n" +
+                "\toverviewTaskMarginPx: 32.0px (12.190476dp)\n" +
+                "\toverviewTaskIconSizePx: 126.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 158.0px (60.190475dp)\n" +
+                "\toverviewActionsTopMarginPx: 63.0px (24.0dp)\n" +
+                "\toverviewActionsHeight: 126.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewPageSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewRowSpacing: 74.0px (28.190475dp)\n" +
+                "\toverviewGridSideMargin: 168.0px (64.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 168.0px (64.0dp)\n" +
+                "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 467.0px (177.90475dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 1578.0px (601.1429dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.785159px (0.29910818dp)\n" +
+                "\tgetCellLayoutHeight(): 1415.0px (539.0476dp)\n" +
+                "\tgetCellLayoutWidth(): 883.0px (336.38095dp)\n")
+    }
+
+    @Test
+    fun phoneVerticalBar3Button() {
+        initializeVarsForPhone(isVerticalBar = true, isGestureMode = false)
+        val dp = newDP()
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.625 px\n" +
+                "\tisTablet:false\n" +
+                "\tisPhone:true\n" +
+                "\ttransposeLayoutWithOrientation:true\n" +
+                "\tisGestureMode:false\n" +
+                "\tisLandscape:true\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:false\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 2400.0px (914.2857dp)\n" +
+                "\theightPx: 1080.0px (411.42856dp)\n" +
+                "\tavailableWidthPx: 2156.0px (821.3333dp)\n" +
+                "\tavailableHeightPx: 1006.0px (383.2381dp)\n" +
+                "\tmInsets.left: 118.0px (44.95238dp)\n" +
+                "\tmInsets.top: 74.0px (28.190475dp)\n" +
+                "\tmInsets.right: 126.0px (48.0dp)\n" +
+                "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                "\taspectRatio:2.2222223\n" +
+                "\tisScalableGrid:false\n" +
+                "\tinv.numRows: 5\n" +
+                "\tinv.numColumns: 4\n" +
+                "\tinv.numSearchContainerColumns: 4\n" +
+                "\tminCellSize: PointF(80.0, 104.0)dp\n" +
+                "\tcellWidthPx: 153.0px (58.285713dp)\n" +
+                "\tcellHeightPx: 160.0px (60.95238dp)\n" +
+                "\tgetCellSize().x: 461.0px (175.61905dp)\n" +
+                "\tgetCellSize().y: 193.0px (73.52381dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                "\tcellLayoutPaddingPx.left: 53.0px (20.190475dp)\n" +
+                "\tcellLayoutPaddingPx.top: 0.0px (0.0dp)\n" +
+                "\tcellLayoutPaddingPx.right: 53.0px (20.190475dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 40.0px (15.238095dp)\n" +
+                "\ticonSizePx: 142.0px (54.095238dp)\n" +
+                "\ticonTextSizePx: 0.0px (0.0dp)\n" +
+                "\ticonDrawablePaddingPx: 0.0px (0.0dp)\n" +
+                "\tfolderCellWidthPx: 179.0px (68.190475dp)\n" +
+                "\tfolderCellHeightPx: 212.0px (80.7619dp)\n" +
+                "\tfolderChildIconSizePx: 135.0px (51.42857dp)\n" +
+                "\tfolderChildTextSizePx: 35.0px (13.333333dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 10.0px (3.8095238dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 42.0px (16.0dp)\n" +
+                "\tbottomSheetTopPadding: 114.0px (43.42857dp)\n" +
+                "\tallAppsShiftRange: 788.0px (300.1905dp)\n" +
+                "\tallAppsTopPadding: 0.0px (0.0dp)\n" +
+                "\tallAppsIconSizePx: 158.0px (60.190475dp)\n" +
+                "\tallAppsIconTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                "\tallAppsCellHeightPx: 329.0px (125.333336dp)\n" +
+                "\tallAppsCellWidthPx: 200.0px (76.190475dp)\n" +
+                "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                "\tnumShownAllAppsColumns: 4\n" +
+                "\tallAppsLeftRightPadding: 0.0px (0.0dp)\n" +
+                "\tallAppsLeftRightMargin: 0.0px (0.0dp)\n" +
+                "\thotseatBarSizePx: 247.0px (94.09524dp)\n" +
+                "\tinv.hotseatColumnSpan: 4\n" +
+                "\thotseatCellHeightPx: 160.0px (60.95238dp)\n" +
+                "\thotseatBarBottomSpacePx: 126.0px (48.0dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 63.0px (24.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 42.0px (16.0dp)\n" +
+                "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                "\thotseatQsbSpace: 95.0px (36.190475dp)\n" +
+                "\thotseatQsbHeight: 165.0px (62.857143dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 118.0px (44.95238dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: 65.0px (24.761906dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 48.0px (18.285715dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 42.0px (16.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 189.0px (72.0dp)\n" +
+                "\tnumShownHotseatIcons: 4\n" +
+                "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
+                "\tisQsbInline: false\n" +
+                "\tqsbWidth: 1525.0px (580.9524dp)\n" +
+                "\tisTaskbarPresent:false\n" +
+                "\tisTaskbarPresentInApps:false\n" +
+                "\ttaskbarSize: 0.0px (0.0dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 0.0px (0.0dp)\n" +
+                "\tworkspacePadding.left: 10.0px (3.8095238dp)\n" +
+                "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                "\tworkspacePadding.right: 194.0px (73.90476dp)\n" +
+                "\tworkspacePadding.bottom: 0.0px (0.0dp)\n" +
+                "\ticonScale: 1.0px (0.3809524dp)\n" +
+                "\tcellScaleToFit : 1.0px (0.3809524dp)\n" +
+                "\textraSpace: 166.0px (63.238094dp)\n" +
+                "\tunscaled extraSpace: 166.0px (63.238094dp)\n" +
+                "\tmaxEmptySpace: 184.0px (70.09524dp)\n" +
+                "\tworkspaceTopPadding: 0.0px (0.0dp)\n" +
+                "\tworkspaceBottomPadding: 0.0px (0.0dp)\n" +
+                "\toverviewTaskMarginPx: 42.0px (16.0dp)\n" +
+                "\toverviewTaskIconSizePx: 126.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 168.0px (64.0dp)\n" +
+                "\toverviewActionsTopMarginPx: 32.0px (12.190476dp)\n" +
+                "\toverviewActionsHeight: 126.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewPageSpacing: 42.0px (16.0dp)\n" +
+                "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 16.0px (6.095238dp)\n" +
+                "\tdropTargetBarSizePx: 95.0px (36.190475dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 16.0px (6.095238dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 201.0px (76.57143dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 983.0px (374.4762dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.777336px (0.296128dp)\n" +
+                "\tgetCellLayoutHeight(): 1006.0px (383.2381dp)\n" +
+                "\tgetCellLayoutWidth(): 1952.0px (743.619dp)\n")
+    }
+
+    @Test
+    fun phoneVerticalBar() {
+        initializeVarsForPhone(isVerticalBar = true)
+        val dp = newDP()
+
+        assertThat(dump(dp)).isEqualTo("DeviceProfile:\n" +
+                "\t1 dp = 2.625 px\n" +
+                "\tisTablet:false\n" +
+                "\tisPhone:true\n" +
+                "\ttransposeLayoutWithOrientation:true\n" +
+                "\tisGestureMode:true\n" +
+                "\tisLandscape:true\n" +
+                "\tisMultiWindowMode:false\n" +
+                "\tisTwoPanels:false\n" +
+                "\twindowX: 0.0px (0.0dp)\n" +
+                "\twindowY: 0.0px (0.0dp)\n" +
+                "\twidthPx: 2400.0px (914.2857dp)\n" +
+                "\theightPx: 1080.0px (411.42856dp)\n" +
+                "\tavailableWidthPx: 2282.0px (869.3333dp)\n" +
+                "\tavailableHeightPx: 943.0px (359.2381dp)\n" +
+                "\tmInsets.left: 118.0px (44.95238dp)\n" +
+                "\tmInsets.top: 74.0px (28.190475dp)\n" +
+                "\tmInsets.right: 0.0px (0.0dp)\n" +
+                "\tmInsets.bottom: 63.0px (24.0dp)\n" +
+                "\taspectRatio:2.2222223\n" +
+                "\tisScalableGrid:false\n" +
+                "\tinv.numRows: 5\n" +
+                "\tinv.numColumns: 4\n" +
+                "\tinv.numSearchContainerColumns: 4\n" +
+                "\tminCellSize: PointF(80.0, 104.0)dp\n" +
+                "\tcellWidthPx: 153.0px (58.285713dp)\n" +
+                "\tcellHeightPx: 160.0px (60.95238dp)\n" +
+                "\tgetCellSize().x: 493.0px (187.80952dp)\n" +
+                "\tgetCellSize().y: 180.0px (68.57143dp)\n" +
+                "\tcellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                "\tcellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                "\tcellLayoutPaddingPx.left: 53.0px (20.190475dp)\n" +
+                "\tcellLayoutPaddingPx.top: 0.0px (0.0dp)\n" +
+                "\tcellLayoutPaddingPx.right: 53.0px (20.190475dp)\n" +
+                "\tcellLayoutPaddingPx.bottom: 40.0px (15.238095dp)\n" +
+                "\ticonSizePx: 142.0px (54.095238dp)\n" +
+                "\ticonTextSizePx: 0.0px (0.0dp)\n" +
+                "\ticonDrawablePaddingPx: 0.0px (0.0dp)\n" +
+                "\tfolderCellWidthPx: 163.0px (62.095238dp)\n" +
+                "\tfolderCellHeightPx: 192.0px (73.14286dp)\n" +
+                "\tfolderChildIconSizePx: 123.0px (46.857143dp)\n" +
+                "\tfolderChildTextSizePx: 32.0px (12.190476dp)\n" +
+                "\tfolderChildDrawablePaddingPx: 8.0px (3.047619dp)\n" +
+                "\tfolderCellLayoutBorderSpaceOriginalPx: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Horizontal: 42.0px (16.0dp)\n" +
+                "\tfolderCellLayoutBorderSpacePx Vertical: 42.0px (16.0dp)\n" +
+                "\tbottomSheetTopPadding: 114.0px (43.42857dp)\n" +
+                "\tallAppsShiftRange: 788.0px (300.1905dp)\n" +
+                "\tallAppsTopPadding: 0.0px (0.0dp)\n" +
+                "\tallAppsIconSizePx: 158.0px (60.190475dp)\n" +
+                "\tallAppsIconTextSizePx: 37.0px (14.095238dp)\n" +
+                "\tallAppsIconDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                "\tallAppsCellHeightPx: 329.0px (125.333336dp)\n" +
+                "\tallAppsCellWidthPx: 200.0px (76.190475dp)\n" +
+                "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                "\tnumShownAllAppsColumns: 4\n" +
+                "\tallAppsLeftRightPadding: 0.0px (0.0dp)\n" +
+                "\tallAppsLeftRightMargin: 0.0px (0.0dp)\n" +
+                "\thotseatBarSizePx: 247.0px (94.09524dp)\n" +
+                "\tinv.hotseatColumnSpan: 4\n" +
+                "\thotseatCellHeightPx: 160.0px (60.95238dp)\n" +
+                "\thotseatBarBottomSpacePx: 126.0px (48.0dp)\n" +
+                "\thotseatBarSidePaddingStartPx: 63.0px (24.0dp)\n" +
+                "\thotseatBarSidePaddingEndPx: 42.0px (16.0dp)\n" +
+                "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                "\thotseatQsbSpace: 95.0px (36.190475dp)\n" +
+                "\thotseatQsbHeight: 165.0px (62.857143dp)\n" +
+                "\tspringLoadedHotseatBarTopMarginPx: 118.0px (44.95238dp)\n" +
+                "\tgetHotseatLayoutPadding(context).top: 65.0px (24.761906dp)\n" +
+                "\tgetHotseatLayoutPadding(context).bottom: 111.0px (42.285713dp)\n" +
+                "\tgetHotseatLayoutPadding(context).left: 42.0px (16.0dp)\n" +
+                "\tgetHotseatLayoutPadding(context).right: 63.0px (24.0dp)\n" +
+                "\tnumShownHotseatIcons: 4\n" +
+                "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
+                "\tisQsbInline: false\n" +
+                "\tqsbWidth: 1621.0px (617.5238dp)\n" +
+                "\tisTaskbarPresent:false\n" +
+                "\tisTaskbarPresentInApps:false\n" +
+                "\ttaskbarSize: 0.0px (0.0dp)\n" +
+                "\tdesiredWorkspaceHorizontalMarginPx: 0.0px (0.0dp)\n" +
+                "\tworkspacePadding.left: 10.0px (3.8095238dp)\n" +
+                "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                "\tworkspacePadding.right: 194.0px (73.90476dp)\n" +
+                "\tworkspacePadding.bottom: 0.0px (0.0dp)\n" +
+                "\ticonScale: 1.0px (0.3809524dp)\n" +
+                "\tcellScaleToFit : 1.0px (0.3809524dp)\n" +
+                "\textraSpace: 103.0px (39.238094dp)\n" +
+                "\tunscaled extraSpace: 103.0px (39.238094dp)\n" +
+                "\tmaxEmptySpace: 131.0px (49.904762dp)\n" +
+                "\tworkspaceTopPadding: 0.0px (0.0dp)\n" +
+                "\tworkspaceBottomPadding: 0.0px (0.0dp)\n" +
+                "\toverviewTaskMarginPx: 42.0px (16.0dp)\n" +
+                "\toverviewTaskIconSizePx: 126.0px (48.0dp)\n" +
+                "\toverviewTaskIconDrawableSizePx: 116.0px (44.190475dp)\n" +
+                "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                "\toverviewTaskThumbnailTopMarginPx: 168.0px (64.0dp)\n" +
+                "\toverviewActionsTopMarginPx: 32.0px (12.190476dp)\n" +
+                "\toverviewActionsHeight: 126.0px (48.0dp)\n" +
+                "\toverviewActionsButtonSpacing: 95.0px (36.190475dp)\n" +
+                "\toverviewPageSpacing: 42.0px (16.0dp)\n" +
+                "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                "\tdropTargetBarTopMarginPx: 16.0px (6.095238dp)\n" +
+                "\tdropTargetBarSizePx: 95.0px (36.190475dp)\n" +
+                "\tdropTargetBarBottomMarginPx: 16.0px (6.095238dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkTop(): 201.0px (76.57143dp)\n" +
+                "\tgetCellLayoutSpringLoadShrunkBottom(): 927.0px (353.14285dp)\n" +
+                "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                "\tgetWorkspaceSpringLoadScale(): 0.76988333px (0.2932889dp)\n" +
+                "\tgetCellLayoutHeight(): 943.0px (359.2381dp)\n" +
+                "\tgetCellLayoutWidth(): 2078.0px (791.619dp)\n")
+    }
+}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelLandscape3ButtonTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelLandscape3ButtonTest.kt
deleted file mode 100644
index 92ab2b1..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelLandscape3ButtonTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for two panel in landscape with 3-Button navigation.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfileTwoPanelLandscape3ButtonTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForTablet(isLandscape = true, isTwoPanel = true, isGestureMode = false)
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isTrue()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(200)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(260)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.cellSize.x).isEqualTo(259)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.cellSize.y).isEqualTo(260)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(50)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(50)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(25)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(25)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(25)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(200)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(260)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(36)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1600)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(175)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(44)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(310)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(200)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(50)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(50)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(64)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(1241)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(386)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatBarBottomSpacePx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(116)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(56)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(126)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(32)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(false)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(1039)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(true)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(120)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(68)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(43)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(43)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(285)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(1.5657895f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(40)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(128)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(0)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(144)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(64)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(48)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.7226337f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(1215)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(1237)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(2)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(false)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(208)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(1086)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(272)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(112)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(864)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(151)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(864)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(109)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(566)
-    }
-}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelLandscapeTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelLandscapeTest.kt
deleted file mode 100644
index 6c730ca..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelLandscapeTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for two panel in landscape.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfileTwoPanelLandscapeTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForTablet(isLandscape = true, isTwoPanel = true)
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isTrue()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(200)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(260)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.cellSize.x).isEqualTo(259)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.cellSize.y).isEqualTo(260)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(50)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(50)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(25)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(25)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(25)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(200)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(260)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(36)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1600)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(175)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(44)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(310)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(200)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(50)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(50)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(64)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(1241)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(386)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatBarBottomSpacePx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(116)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(56)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(126)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(73)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(false)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(1039)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(true)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(120)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(68)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(43)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(43)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(285)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(1.5657895f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(40)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(128)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(0)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(144)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(64)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(48)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.7226337f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(1215)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(1237)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(2)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(false)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(208)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(1086)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(272)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(112)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(761)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(151)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(761)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(109)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
-    }
-}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelPortrait3ButtonTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelPortrait3ButtonTest.kt
deleted file mode 100644
index 9048b3b..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelPortrait3ButtonTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for two panel in portrait with 3-Button navigation.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfileTwoPanelPortrait3ButtonTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForTablet(isTwoPanel = true, isGestureMode = false)
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isTrue()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(153)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(199)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.cellSize.x).isEqualTo(153)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.cellSize.y).isEqualTo(509)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(38)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(38)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(19)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(19)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(19)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(153)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(199)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(16)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(600)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1960)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(600)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(134)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(34)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(237)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(153)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(38)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(38)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(56)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(763)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(386)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatBarBottomSpacePx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(116)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(56)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(126)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(216)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(32)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(false)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(685)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(true)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(120)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(52)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(33)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(33)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(291)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(1.1976048f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(48)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(128)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(220)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(144)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(96)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(48)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.69064087f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(2169)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(767)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(2)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(false)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(460)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(1958)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(272)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(112)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(266)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(151)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(502)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(109)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(502)
-    }
-}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelPortraitTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelPortraitTest.kt
deleted file mode 100644
index b737c3a..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelPortraitTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for two panel in portrait.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfileTwoPanelPortraitTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForTablet(isTwoPanel = true)
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isTrue()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(153)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(199)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.cellSize.x).isEqualTo(153)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.cellSize.y).isEqualTo(509)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(38)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(38)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(19)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(19)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(19)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(153)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(199)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(112)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(28)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(16)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(600)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1960)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(600)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(134)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(34)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(237)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(153)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(38)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(38)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(56)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(763)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(386)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatBarBottomSpacePx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(116)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(56)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(126)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(216)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(2)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(false)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(685)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(true)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(120)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(52)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(33)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(33)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(291)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(1.1976048f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(48)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(96)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(88)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(72)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(128)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(220)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(144)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(96)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(48)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.69064087f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(2169)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(767)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(2)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(false)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(460)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(1958)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(272)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(112)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(459)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(151)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(459)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(109)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
-    }
-}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfileVerticalBar3ButtonTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfileVerticalBar3ButtonTest.kt
deleted file mode 100644
index d90f56b..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfileVerticalBar3ButtonTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for landscape phone with vertical bar and 3-Button navigation.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfileVerticalBar3ButtonTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForPhone(isVerticalBar = true, isGestureMode = false)
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isFalse()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(210)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(221)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.cellSize.x).isEqualTo(675)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.cellSize.y).isEqualTo(321)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(70)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(70)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(53)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(0)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(260)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(304)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(49)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(53)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1050)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(49)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(28)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(422)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(252)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(56)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(56)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(336)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(221)
-    }
-
-    @Test
-    fun hotseatBarBottomSpacePx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(168)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(84)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(56)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(221)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(158)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(4)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(0)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(false)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(2221)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(false)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(0)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(14)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(266)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(0)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(1.0f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(56)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(168)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(154)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(224)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(42)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(168)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(126)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(56)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(0)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(21)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(126)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(21)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(84)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.8880597f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(1340)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(2840)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(1)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(true)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(168)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(1358)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(147)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(225)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(56)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(0)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(84)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(165)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
-    }
-}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/DeviceProfileVerticalBarTest.kt b/quickstep/tests/src/com/android/quickstep/DeviceProfileVerticalBarTest.kt
deleted file mode 100644
index 522a650..0000000
--- a/quickstep/tests/src/com/android/quickstep/DeviceProfileVerticalBarTest.kt
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.DeviceProfile
-import com.android.launcher3.DeviceProfileBaseTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Tests for DeviceProfile for landscape phone with vertical bar.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfileVerticalBarTest : DeviceProfileBaseTest() {
-
-    lateinit var dp: DeviceProfile
-
-    @Before
-    fun before() {
-        initializeVarsForPhone(isVerticalBar = true)
-        dp = newDP()
-    }
-
-    @Test
-    fun isScalableGrid() {
-        assertThat(dp.isScalableGrid).isFalse()
-    }
-
-    @Test
-    fun cellWidthPx() {
-        assertThat(dp.cellWidthPx).isEqualTo(210)
-    }
-
-    @Test
-    fun cellHeightPx() {
-        assertThat(dp.cellHeightPx).isEqualTo(221)
-    }
-
-    @Test
-    fun getCellSizeX() {
-        assertThat(dp.cellSize.x).isEqualTo(675)
-    }
-
-    @Test
-    fun getCellSizeY() {
-        assertThat(dp.cellSize.y).isEqualTo(321)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxX() {
-        assertThat(dp.cellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutBorderSpacePxY() {
-        assertThat(dp.cellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxLeft() {
-        assertThat(dp.cellLayoutPaddingPx.left).isEqualTo(70)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxTop() {
-        assertThat(dp.cellLayoutPaddingPx.top).isEqualTo(0)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxRight() {
-        assertThat(dp.cellLayoutPaddingPx.right).isEqualTo(70)
-    }
-
-    @Test
-    fun cellLayoutPaddingPxBottom() {
-        assertThat(dp.cellLayoutPaddingPx.bottom).isEqualTo(53)
-    }
-
-    @Test
-    fun iconSizePx() {
-        assertThat(dp.iconSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun iconTextSizePx() {
-        assertThat(dp.iconTextSizePx).isEqualTo(0)
-    }
-
-    @Test
-    fun iconDrawablePaddingPx() {
-        assertThat(dp.iconDrawablePaddingPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellWidthPx() {
-        assertThat(dp.folderCellWidthPx).isEqualTo(260)
-    }
-
-    @Test
-    fun folderCellHeightPx() {
-        assertThat(dp.folderCellHeightPx).isEqualTo(304)
-    }
-
-    @Test
-    fun folderChildIconSizePx() {
-        assertThat(dp.folderChildIconSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun folderChildTextSizePx() {
-        assertThat(dp.folderChildTextSizePx).isEqualTo(49)
-    }
-
-    @Test
-    fun folderChildDrawablePaddingPx() {
-        assertThat(dp.folderChildDrawablePaddingPx).isEqualTo(14)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpaceOriginalPx() {
-        assertThat(dp.folderCellLayoutBorderSpaceOriginalPx).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxX() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.x).isEqualTo(0)
-    }
-
-    @Test
-    fun folderCellLayoutBorderSpacePxY() {
-        assertThat(dp.folderCellLayoutBorderSpacePx.y).isEqualTo(0)
-    }
-
-    @Test
-    fun bottomSheetTopPadding() {
-        assertThat(dp.bottomSheetTopPadding).isEqualTo(53)
-    }
-
-    @Test
-    fun allAppsShiftRange() {
-        assertThat(dp.allAppsShiftRange).isEqualTo(1050)
-    }
-
-    @Test
-    fun allAppsTopPadding() {
-        assertThat(dp.allAppsTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsIconSizePx() {
-        assertThat(dp.allAppsIconSizePx).isEqualTo(196)
-    }
-
-    @Test
-    fun allAppsIconTextSizePx() {
-        assertThat(dp.allAppsIconTextSizePx).isEqualTo(49)
-    }
-
-    @Test
-    fun allAppsIconDrawablePaddingPx() {
-        assertThat(dp.allAppsIconDrawablePaddingPx).isEqualTo(28)
-    }
-
-    @Test
-    fun allAppsCellHeightPx() {
-        assertThat(dp.allAppsCellHeightPx).isEqualTo(422)
-    }
-
-    @Test
-    fun allAppsCellWidthPx() {
-        assertThat(dp.allAppsCellWidthPx).isEqualTo(252)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxX() {
-        assertThat(dp.allAppsBorderSpacePx.x).isEqualTo(56)
-    }
-
-    @Test
-    fun allAppsBorderSpacePxY() {
-        assertThat(dp.allAppsBorderSpacePx.y).isEqualTo(56)
-    }
-
-    @Test
-    fun numShownAllAppsColumns() {
-        assertThat(dp.numShownAllAppsColumns).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightPadding() {
-        assertThat(dp.allAppsLeftRightPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun allAppsLeftRightMargin() {
-        assertThat(dp.allAppsLeftRightMargin).isEqualTo(0)
-    }
-
-    @Test
-    fun hotseatBarSizePx() {
-        assertThat(dp.hotseatBarSizePx).isEqualTo(336)
-    }
-
-    @Test
-    fun hotseatCellHeightPx() {
-        assertThat(dp.hotseatCellHeightPx).isEqualTo(221)
-    }
-
-    @Test
-    fun hotseatBarBottomSpacePx() {
-        assertThat(dp.hotseatBarBottomSpacePx).isEqualTo(168)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingStartPx() {
-        assertThat(dp.hotseatBarSidePaddingStartPx).isEqualTo(84)
-    }
-
-    @Test
-    fun hotseatBarSidePaddingEndPx() {
-        assertThat(dp.hotseatBarSidePaddingEndPx).isEqualTo(56)
-    }
-
-    @Test
-    fun hotseatQsbSpace() {
-        assertThat(dp.hotseatQsbSpace).isEqualTo(126)
-    }
-
-    @Test
-    fun hotseatQsbHeight() {
-        assertThat(dp.hotseatQsbHeight).isEqualTo(221)
-    }
-
-    @Test
-    fun springLoadedHotseatBarTopMarginPx() {
-        assertThat(dp.springLoadedHotseatBarTopMarginPx).isEqualTo(158)
-    }
-
-    @Test
-    fun numShownHotseatIcons() {
-        assertThat(dp.numShownHotseatIcons).isEqualTo(4)
-    }
-
-    @Test
-    fun hotseatBorderSpace() {
-        assertThat(dp.hotseatBorderSpace).isEqualTo(0)
-    }
-
-    @Test
-    fun isQsbInline() {
-        assertThat(dp.isQsbInline).isEqualTo(false)
-    }
-
-    @Test
-    fun qsbWidth() {
-        assertThat(dp.qsbWidth).isEqualTo(2221)
-    }
-
-    @Test
-    fun isTaskbarPresent() {
-        assertThat(dp.isTaskbarPresent).isEqualTo(false)
-    }
-
-    @Test
-    fun isTaskbarPresentInApps() {
-        assertThat(dp.isTaskbarPresentInApps).isEqualTo(false)
-    }
-
-    @Test
-    fun taskbarSize() {
-        assertThat(dp.taskbarSize).isEqualTo(0)
-    }
-
-    @Test
-    fun desiredWorkspaceHorizontalMarginPx() {
-        assertThat(dp.desiredWorkspaceHorizontalMarginPx).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingLeft() {
-        assertThat(dp.workspacePadding.left).isEqualTo(14)
-    }
-
-    @Test
-    fun workspacePaddingTop() {
-        assertThat(dp.workspacePadding.top).isEqualTo(0)
-    }
-
-    @Test
-    fun workspacePaddingRight() {
-        assertThat(dp.workspacePadding.right).isEqualTo(266)
-    }
-
-    @Test
-    fun workspacePaddingBottom() {
-        assertThat(dp.workspacePadding.bottom).isEqualTo(0)
-    }
-
-    @Test
-    fun iconScale() {
-        assertThat(dp.iconScale).isEqualTo(1)
-    }
-
-    @Test
-    fun cellScaleToFit() {
-        assertThat(dp.cellScaleToFit).isEqualTo(1.0f)
-    }
-
-    @Test
-    fun workspaceTopPadding() {
-        assertThat(dp.workspaceTopPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun workspaceBottomPadding() {
-        assertThat(dp.workspaceBottomPadding).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskMarginPx() {
-        assertThat(dp.overviewTaskMarginPx).isEqualTo(56)
-    }
-
-    @Test
-    fun overviewTaskIconSizePx() {
-        assertThat(dp.overviewTaskIconSizePx).isEqualTo(168)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizePx() {
-        assertThat(dp.overviewTaskIconDrawableSizePx).isEqualTo(154)
-    }
-
-    @Test
-    fun overviewTaskIconDrawableSizeGridPx() {
-        assertThat(dp.overviewTaskIconDrawableSizeGridPx).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewTaskThumbnailTopMarginPx() {
-        assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(224)
-    }
-
-    @Test
-    fun overviewActionsTopMarginPx() {
-        assertThat(dp.overviewActionsTopMarginPx).isEqualTo(42)
-    }
-
-    @Test
-    fun overviewActionsHeight() {
-        assertThat(dp.overviewActionsHeight).isEqualTo(168)
-    }
-
-    @Test
-    fun overviewActionsButtonSpacing() {
-        assertThat(dp.overviewActionsButtonSpacing).isEqualTo(126)
-    }
-
-    @Test
-    fun overviewPageSpacing() {
-        assertThat(dp.overviewPageSpacing).isEqualTo(56)
-    }
-
-    @Test
-    fun overviewRowSpacing() {
-        assertThat(dp.overviewRowSpacing).isEqualTo(0)
-    }
-
-    @Test
-    fun overviewGridSideMargin() {
-        assertThat(dp.overviewGridSideMargin).isEqualTo(0)
-    }
-
-    @Test
-    fun dropTargetBarTopMarginPx() {
-        assertThat(dp.dropTargetBarTopMarginPx).isEqualTo(21)
-    }
-
-    @Test
-    fun dropTargetBarSizePx() {
-        assertThat(dp.dropTargetBarSizePx).isEqualTo(126)
-    }
-
-    @Test
-    fun dropTargetBarBottomMarginPx() {
-        assertThat(dp.dropTargetBarBottomMarginPx).isEqualTo(21)
-    }
-
-    @Test
-    fun workspaceSpringLoadedMinNextPageVisiblePx() {
-        assertThat(dp.workspaceSpringLoadedMinNextPageVisiblePx).isEqualTo(84)
-    }
-
-    @Test
-    fun getWorkspaceSpringLoadScale() {
-        assertThat(dp.workspaceSpringLoadScale).isEqualTo(0.8880597f)
-    }
-
-    @Test
-    fun getCellLayoutHeight() {
-        assertThat(dp.cellLayoutHeight).isEqualTo(1340)
-    }
-
-    @Test
-    fun getCellLayoutWidth() {
-        assertThat(dp.cellLayoutWidth).isEqualTo(2840)
-    }
-
-    @Test
-    fun getPanelCount() {
-        assertThat(dp.panelCount).isEqualTo(1)
-    }
-
-    @Test
-    fun isVerticalBarLayout() {
-        assertThat(dp.isVerticalBarLayout).isEqualTo(true)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkTop() {
-        assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(168)
-    }
-
-    @Test
-    fun getCellLayoutSpringLoadShrunkBottom() {
-        assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(1358)
-    }
-
-    @Test
-    fun getQsbOffsetY() {
-        assertThat(dp.qsbOffsetY).isEqualTo(147)
-    }
-
-    @Test
-    fun getTaskbarOffsetY() {
-        assertThat(dp.taskbarOffsetY).isEqualTo(225)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingLeft() {
-        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(56)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingTop() {
-        assertThat(dp.getHotseatLayoutPadding(context).top).isEqualTo(0)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingRight() {
-        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(84)
-    }
-
-    @Test
-    fun getHotseatLayoutPaddingBottom() {
-        assertThat(dp.getHotseatLayoutPadding(context).bottom).isEqualTo(165)
-    }
-
-    @Test
-    fun hotseatBarEndOffset() {
-        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
-    }
-}
\ No newline at end of file
diff --git a/res/drawable/ic_block_shadow.xml b/res/drawable/ic_block_shadow.xml
deleted file mode 100644
index 045fe8d..0000000
--- a/res/drawable/ic_block_shadow.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
diff --git a/res/drawable/ic_remove_shadow.xml b/res/drawable/ic_remove_shadow.xml
deleted file mode 100644
index 48abc10..0000000
--- a/res/drawable/ic_remove_shadow.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_remove_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
diff --git a/res/drawable/ic_setup_shadow.xml b/res/drawable/ic_setup_shadow.xml
deleted file mode 100644
index 10aeee6..0000000
--- a/res/drawable/ic_setup_shadow.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
diff --git a/res/drawable/ic_uninstall_shadow.xml b/res/drawable/ic_uninstall_shadow.xml
deleted file mode 100644
index b441b0e..0000000
--- a/res/drawable/ic_uninstall_shadow.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_uninstall_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 44eb4f7..1f18217 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -20,26 +20,29 @@
 import static com.android.launcher3.InvariantDeviceProfile.INDEX_LANDSCAPE;
 import static com.android.launcher3.InvariantDeviceProfile.INDEX_TWO_PANEL_LANDSCAPE;
 import static com.android.launcher3.InvariantDeviceProfile.INDEX_TWO_PANEL_PORTRAIT;
-import static com.android.launcher3.testing.shared.ResourceUtils.pxFromDp;
 import static com.android.launcher3.Utilities.dpiFromPx;
 import static com.android.launcher3.Utilities.pxFromSp;
 import static com.android.launcher3.folder.ClippedFolderIconLayoutRule.ICON_OVERLAP_FACTOR;
+import static com.android.launcher3.icons.GraphicsUtils.getShapePath;
+import static com.android.launcher3.testing.shared.ResourceUtils.pxFromDp;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
-import android.graphics.Path;
 import android.graphics.Point;
 import android.graphics.PointF;
 import android.graphics.Rect;
 import android.util.DisplayMetrics;
+import android.util.SparseArray;
 import android.view.Surface;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.CellLayout.ContainerType;
 import com.android.launcher3.DevicePaddings.DevicePadding;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.icons.DotRenderer;
-import com.android.launcher3.icons.GraphicsUtils;
 import com.android.launcher3.icons.IconNormalizer;
 import com.android.launcher3.uioverrides.ApiWrapper;
 import com.android.launcher3.util.DisplayController;
@@ -108,8 +111,6 @@
 
     public final int edgeMarginPx;
     public final float workspaceContentScale;
-    private float mWorkspaceSpringLoadShrunkTop;
-    private float mWorkspaceSpringLoadShrunkBottom;
     public final int workspaceSpringLoadedMinNextPageVisiblePx;
 
     private final int extraSpace;
@@ -219,13 +220,12 @@
     // Insets
     private final Rect mInsets = new Rect();
     public final Rect workspacePadding = new Rect();
-    private final Rect mHotseatBarPadding = new Rect();
     // When true, nav bar is on the left side of the screen.
     private boolean mIsSeascape;
 
     // Notification dots
-    public DotRenderer mDotRendererWorkSpace;
-    public DotRenderer mDotRendererAllApps;
+    public final DotRenderer mDotRendererWorkSpace;
+    public final DotRenderer mDotRendererAllApps;
 
     // Taskbar
     public boolean isTaskbarPresent;
@@ -239,8 +239,8 @@
 
     /** TODO: Once we fully migrate to staged split, remove "isMultiWindowMode" */
     DeviceProfile(Context context, InvariantDeviceProfile inv, Info info, WindowBounds windowBounds,
-            boolean isMultiWindowMode, boolean transposeLayoutWithOrientation,
-            boolean useTwoPanels, boolean isGestureMode) {
+            SparseArray<DotRenderer> dotRendererCache, boolean isMultiWindowMode,
+            boolean transposeLayoutWithOrientation, boolean useTwoPanels, boolean isGestureMode) {
 
         this.inv = inv;
         this.isLandscape = windowBounds.isLandscape();
@@ -471,10 +471,18 @@
                 R.dimen.drag_flingToDeleteMinVelocity);
 
         // This is done last, after iconSizePx is calculated above.
-        Path dotPath = GraphicsUtils.getShapePath(DEFAULT_DOT_SIZE);
-        mDotRendererWorkSpace = new DotRenderer(iconSizePx, dotPath, DEFAULT_DOT_SIZE);
-        mDotRendererAllApps = iconSizePx == allAppsIconSizePx ? mDotRendererWorkSpace :
-                new DotRenderer(allAppsIconSizePx, dotPath, DEFAULT_DOT_SIZE);
+        mDotRendererWorkSpace = createDotRenderer(iconSizePx, dotRendererCache);
+        mDotRendererAllApps = createDotRenderer(allAppsIconSizePx, dotRendererCache);
+    }
+
+    private static DotRenderer createDotRenderer(
+            int size, @NonNull SparseArray<DotRenderer> cache) {
+        DotRenderer renderer = cache.get(size);
+        if (renderer == null) {
+            renderer = new DotRenderer(size, getShapePath(DEFAULT_DOT_SIZE), DEFAULT_DOT_SIZE);
+            cache.put(size, renderer);
+        }
+        return renderer;
     }
 
     /**
@@ -568,10 +576,16 @@
                 widthPx, heightPx, availableWidthPx, availableHeightPx, rotationHint);
         bounds.bounds.offsetTo(windowX, windowY);
         bounds.insets.set(mInsets);
+
+        SparseArray<DotRenderer> dotRendererCache = new SparseArray<>();
+        dotRendererCache.put(iconSizePx, mDotRendererWorkSpace);
+        dotRendererCache.put(allAppsIconSizePx, mDotRendererAllApps);
+
         return new Builder(context, inv, mInfo)
                 .setWindowBounds(bounds)
                 .setUseTwoPanels(isTwoPanels)
                 .setMultiWindowMode(isMultiWindowMode)
+                .setDotRendererCache(dotRendererCache)
                 .setGestureMode(isGestureMode);
     }
 
@@ -910,40 +924,39 @@
      * Gets the space in px from the bottom of last item in the vertical-bar hotseat to the
      * bottom of the screen.
      */
-    private int getVerticalHotseatLastItemBottomOffset() {
+    private int getVerticalHotseatLastItemBottomOffset(Context context) {
+        Rect hotseatBarPadding = getHotseatLayoutPadding(context);
         int cellHeight = calculateCellHeight(
-                heightPx - mHotseatBarPadding.top - mHotseatBarPadding.bottom, hotseatBorderSpace,
+                heightPx - hotseatBarPadding.top - hotseatBarPadding.bottom, hotseatBorderSpace,
                 numShownHotseatIcons);
         int extraIconEndSpacing = (cellHeight - iconSizePx) / 2;
-        return extraIconEndSpacing + mHotseatBarPadding.bottom;
+        return extraIconEndSpacing + hotseatBarPadding.bottom;
     }
 
     /**
      * Gets the scaled top of the workspace in px for the spring-loaded edit state.
      */
     public float getCellLayoutSpringLoadShrunkTop() {
-        mWorkspaceSpringLoadShrunkTop = mInsets.top + dropTargetBarTopMarginPx + dropTargetBarSizePx
+        return mInsets.top + dropTargetBarTopMarginPx + dropTargetBarSizePx
                 + dropTargetBarBottomMarginPx;
-        return mWorkspaceSpringLoadShrunkTop;
     }
 
     /**
      * Gets the scaled bottom of the workspace in px for the spring-loaded edit state.
      */
-    public float getCellLayoutSpringLoadShrunkBottom() {
+    public float getCellLayoutSpringLoadShrunkBottom(Context context) {
         int topOfHotseat = hotseatBarSizePx + springLoadedHotseatBarTopMarginPx;
-        mWorkspaceSpringLoadShrunkBottom =
-                heightPx - (isVerticalBarLayout() ? getVerticalHotseatLastItemBottomOffset()
-                        : topOfHotseat);
-        return mWorkspaceSpringLoadShrunkBottom;
+        return heightPx - (isVerticalBarLayout()
+                ? getVerticalHotseatLastItemBottomOffset(context) : topOfHotseat);
     }
 
     /**
      * Gets the scale of the workspace for the spring-loaded edit state.
      */
-    public float getWorkspaceSpringLoadScale() {
-        float scale = (getCellLayoutSpringLoadShrunkBottom() - getCellLayoutSpringLoadShrunkTop())
-                / getCellLayoutHeight();
+    public float getWorkspaceSpringLoadScale(Context context) {
+        float scale =
+                (getCellLayoutSpringLoadShrunkBottom(context) - getCellLayoutSpringLoadShrunkTop())
+                        / getCellLayoutHeight();
         scale = Math.min(scale, 1f);
 
         // Reduce scale if next pages would not be visible after scaling the workspace
@@ -1028,6 +1041,7 @@
      * Returns the padding for hotseat view
      */
     public Rect getHotseatLayoutPadding(Context context) {
+        Rect hotseatBarPadding = new Rect();
         if (isVerticalBarLayout()) {
             // The hotseat icons will be placed in the middle of the hotseat cells.
             // Changing the hotseatCellHeightPx is not affecting hotseat icon positions
@@ -1041,10 +1055,10 @@
                     + diffOverlapFactor), 0);
 
             if (isSeascape()) {
-                mHotseatBarPadding.set(mInsets.left + hotseatBarSidePaddingStartPx, paddingTop,
+                hotseatBarPadding.set(mInsets.left + hotseatBarSidePaddingStartPx, paddingTop,
                         hotseatBarSidePaddingEndPx, paddingBottom);
             } else {
-                mHotseatBarPadding.set(hotseatBarSidePaddingEndPx, paddingTop,
+                hotseatBarPadding.set(hotseatBarSidePaddingEndPx, paddingTop,
                         mInsets.right + hotseatBarSidePaddingStartPx, paddingBottom);
             }
         } else if (isTaskbarPresent) {
@@ -1061,26 +1075,26 @@
             int hotseatWidth = Math.min(requiredWidth, availableWidthPx - hotseatBarEndOffset);
             int sideSpacing = (availableWidthPx - hotseatWidth) / 2;
 
-            mHotseatBarPadding.set(sideSpacing, hotseatBarTopPadding, sideSpacing,
+            hotseatBarPadding.set(sideSpacing, hotseatBarTopPadding, sideSpacing,
                     hotseatBarBottomPadding);
 
             boolean isRtl = Utilities.isRtl(context.getResources());
             if (isRtl) {
-                mHotseatBarPadding.right += additionalQsbSpace;
+                hotseatBarPadding.right += additionalQsbSpace;
             } else {
-                mHotseatBarPadding.left += additionalQsbSpace;
+                hotseatBarPadding.left += additionalQsbSpace;
             }
 
             if (hotseatBarEndOffset > sideSpacing) {
                 int diff = isRtl
                         ? sideSpacing - hotseatBarEndOffset
                         : hotseatBarEndOffset - sideSpacing;
-                mHotseatBarPadding.left -= diff;
-                mHotseatBarPadding.right += diff;
+                hotseatBarPadding.left -= diff;
+                hotseatBarPadding.right += diff;
             }
         } else if (isScalableGrid) {
             int sideSpacing = (availableWidthPx - qsbWidth) / 2;
-            mHotseatBarPadding.set(sideSpacing,
+            hotseatBarPadding.set(sideSpacing,
                     0,
                     sideSpacing,
                     getHotseatBarBottomPadding());
@@ -1092,7 +1106,7 @@
             float workspaceCellWidth = (float) widthPx / inv.numColumns;
             float hotseatCellWidth = (float) widthPx / numShownHotseatIcons;
             int hotseatAdjustment = Math.round((workspaceCellWidth - hotseatCellWidth) / 2);
-            mHotseatBarPadding.set(
+            hotseatBarPadding.set(
                     hotseatAdjustment + workspacePadding.left + cellLayoutPaddingPx.left
                             + mInsets.left,
                     0,
@@ -1100,7 +1114,7 @@
                             + mInsets.right,
                     getHotseatBarBottomPadding());
         }
-        return mHotseatBarPadding;
+        return hotseatBarPadding;
     }
 
     /**
@@ -1238,8 +1252,8 @@
         return "\t" + name + ": " + value + "px (" + dpiFromPx(value, mMetrics.densityDpi) + "dp)";
     }
 
-    // LINT.IfChange
-    public void dump(String prefix, PrintWriter writer) {
+    /** Dumps various DeviceProfile variables to the specified writer. */
+    public void dump(Context context, String prefix, PrintWriter writer) {
         writer.println(prefix + "DeviceProfile:");
         writer.println(prefix + "\t1 dp = " + mMetrics.density + " px");
 
@@ -1285,9 +1299,12 @@
                 cellLayoutBorderSpacePx.x));
         writer.println(prefix + pxToDpStr("cellLayoutBorderSpacePx Vertical",
                 cellLayoutBorderSpacePx.y));
-        writer.println(prefix + pxToDpStr("cellLayoutPaddingPx.left", cellLayoutPaddingPx.left));
-        writer.println(prefix + pxToDpStr("cellLayoutPaddingPx.top", cellLayoutPaddingPx.top));
-        writer.println(prefix + pxToDpStr("cellLayoutPaddingPx.right", cellLayoutPaddingPx.right));
+        writer.println(
+                prefix + pxToDpStr("cellLayoutPaddingPx.left", cellLayoutPaddingPx.left));
+        writer.println(
+                prefix + pxToDpStr("cellLayoutPaddingPx.top", cellLayoutPaddingPx.top));
+        writer.println(
+                prefix + pxToDpStr("cellLayoutPaddingPx.right", cellLayoutPaddingPx.right));
         writer.println(
                 prefix + pxToDpStr("cellLayoutPaddingPx.bottom", cellLayoutPaddingPx.bottom));
 
@@ -1337,10 +1354,15 @@
         writer.println(prefix + pxToDpStr("hotseatQsbHeight", hotseatQsbHeight));
         writer.println(prefix + pxToDpStr("springLoadedHotseatBarTopMarginPx",
                 springLoadedHotseatBarTopMarginPx));
-        writer.println(prefix + pxToDpStr("mHotseatBarPadding.top", mHotseatBarPadding.top));
-        writer.println(prefix + pxToDpStr("mHotseatBarPadding.bottom", mHotseatBarPadding.bottom));
-        writer.println(prefix + pxToDpStr("mHotseatBarPadding.left", mHotseatBarPadding.left));
-        writer.println(prefix + pxToDpStr("mHotseatBarPadding.right", mHotseatBarPadding.right));
+        Rect hotseatLayoutPadding = getHotseatLayoutPadding(context);
+        writer.println(prefix + pxToDpStr("getHotseatLayoutPadding(context).top",
+                hotseatLayoutPadding.top));
+        writer.println(prefix + pxToDpStr("getHotseatLayoutPadding(context).bottom",
+                hotseatLayoutPadding.bottom));
+        writer.println(prefix + pxToDpStr("getHotseatLayoutPadding(context).left",
+                hotseatLayoutPadding.left));
+        writer.println(prefix + pxToDpStr("getHotseatLayoutPadding(context).right",
+                hotseatLayoutPadding.right));
         writer.println(prefix + "\tnumShownHotseatIcons: " + numShownHotseatIcons);
         writer.println(prefix + pxToDpStr("hotseatBorderSpace", hotseatBorderSpace));
         writer.println(prefix + "\tisQsbInline: " + isQsbInline);
@@ -1393,30 +1415,17 @@
         writer.println(
                 prefix + pxToDpStr("dropTargetBarBottomMarginPx", dropTargetBarBottomMarginPx));
 
-        writer.println(
-                prefix + pxToDpStr("workspaceSpringLoadShrunkTop", mWorkspaceSpringLoadShrunkTop));
-        writer.println(prefix + pxToDpStr("workspaceSpringLoadShrunkBottom",
-                mWorkspaceSpringLoadShrunkBottom));
+        writer.println(prefix + pxToDpStr("getCellLayoutSpringLoadShrunkTop()",
+                getCellLayoutSpringLoadShrunkTop()));
+        writer.println(prefix + pxToDpStr("getCellLayoutSpringLoadShrunkBottom()",
+                getCellLayoutSpringLoadShrunkBottom(context)));
         writer.println(prefix + pxToDpStr("workspaceSpringLoadedMinNextPageVisiblePx",
                 workspaceSpringLoadedMinNextPageVisiblePx));
-        writer.println(
-                prefix + pxToDpStr("getWorkspaceSpringLoadScale()", getWorkspaceSpringLoadScale()));
+        writer.println(prefix + pxToDpStr("getWorkspaceSpringLoadScale()",
+                getWorkspaceSpringLoadScale(context)));
         writer.println(prefix + pxToDpStr("getCellLayoutHeight()", getCellLayoutHeight()));
         writer.println(prefix + pxToDpStr("getCellLayoutWidth()", getCellLayoutWidth()));
     }
-    // LINT.ThenChange(
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfilePhoneTest.kt,
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfileVerticalBarTest.kt,
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfilePhone3ButtonTest.kt,
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfileVerticalBar3ButtonTest.kt,
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletLandscapeTest.kt,
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletPortraitTest.kt,
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletLandscape3ButtonTest.kt,
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfileTabletPortrait3ButtonTest.kt,
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelLandscapeTest.kt,
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelPortraitTest.kt,
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelLandscape3ButtonTest.kt,
-    //     packages/apps/Launcher3/quickstep/tests/src/com/android/quickstep/DeviceProfileTwoPanelPortrait3ButtonTest.kt)
 
     private static Context getContext(Context c, Info info, int orientation, WindowBounds bounds) {
         Configuration config = new Configuration(c.getResources().getConfiguration());
@@ -1481,6 +1490,8 @@
         private Boolean mTransposeLayoutWithOrientation;
         private Boolean mIsGestureMode;
 
+        private SparseArray<DotRenderer> mDotRendererCache;
+
         public Builder(Context context, InvariantDeviceProfile inv, Info info) {
             mContext = context;
             mInv = inv;
@@ -1497,6 +1508,10 @@
             return this;
         }
 
+        public Builder setDotRendererCache(SparseArray<DotRenderer> dotRendererCache) {
+            mDotRendererCache = dotRendererCache;
+            return this;
+        }
 
         public Builder setWindowBounds(WindowBounds bounds) {
             mWindowBounds = bounds;
@@ -1523,8 +1538,12 @@
             if (mIsGestureMode == null) {
                 mIsGestureMode = DisplayController.getNavigationMode(mContext).hasGestures;
             }
-            return new DeviceProfile(mContext, mInv, mInfo, mWindowBounds, mIsMultiWindowMode,
-                    mTransposeLayoutWithOrientation, mUseTwoPanels, mIsGestureMode);
+            if (mDotRendererCache == null) {
+                mDotRendererCache = new SparseArray<>();
+            }
+            return new DeviceProfile(mContext, mInv, mInfo, mWindowBounds, mDotRendererCache,
+                    mIsMultiWindowMode, mTransposeLayoutWithOrientation, mUseTwoPanels,
+                    mIsGestureMode);
         }
     }
 
diff --git a/src/com/android/launcher3/DropTargetBar.java b/src/com/android/launcher3/DropTargetBar.java
index 3eb2ee0..d64cb26 100644
--- a/src/com/android/launcher3/DropTargetBar.java
+++ b/src/com/android/launcher3/DropTargetBar.java
@@ -175,7 +175,7 @@
             secondButton.setPadding(horizontalPadding, verticalPadding, horizontalPadding,
                     verticalPadding);
 
-            float scale = dp.getWorkspaceSpringLoadScale();
+            float scale = dp.getWorkspaceSpringLoadScale(mLauncher);
             int scaledPanelWidth = (int) (dp.getCellLayoutWidth() * scale);
 
             int availableWidth;
@@ -232,7 +232,7 @@
 
         DeviceProfile dp = mLauncher.getDeviceProfile();
         // Center vertical bar over scaled workspace, accounting for hotseat offset.
-        float scale = dp.getWorkspaceSpringLoadScale();
+        float scale = dp.getWorkspaceSpringLoadScale(mLauncher);
         Workspace<?> ws = mLauncher.getWorkspace();
         int barCenter;
         if (dp.isTwoPanels) {
diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java
index 9b01734..67620e3 100644
--- a/src/com/android/launcher3/InvariantDeviceProfile.java
+++ b/src/com/android/launcher3/InvariantDeviceProfile.java
@@ -48,6 +48,7 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.core.content.res.ResourcesCompat;
 
+import com.android.launcher3.icons.DotRenderer;
 import com.android.launcher3.model.DeviceGridState;
 import com.android.launcher3.provider.RestoreDbTask;
 import com.android.launcher3.testing.shared.ResourceUtils;
@@ -396,10 +397,12 @@
 
         final List<DeviceProfile> localSupportedProfiles = new ArrayList<>();
         defaultWallpaperSize = new Point(displayInfo.currentSize);
+        SparseArray<DotRenderer> dotRendererCache = new SparseArray<>();
         for (WindowBounds bounds : displayInfo.supportedBounds) {
             localSupportedProfiles.add(new DeviceProfile.Builder(context, this, displayInfo)
                     .setUseTwoPanels(deviceType == TYPE_MULTI_DISPLAY)
                     .setWindowBounds(bounds)
+                    .setDotRendererCache(dotRendererCache)
                     .build());
 
             // Wallpaper size should be the maximum of the all possible sizes Launcher expects
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 4611408..38b46b0 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -60,7 +60,6 @@
 import static com.android.launcher3.popup.SystemShortcut.WIDGETS;
 import static com.android.launcher3.states.RotationHelper.REQUEST_LOCK;
 import static com.android.launcher3.states.RotationHelper.REQUEST_NONE;
-import static com.android.launcher3.testing.shared.TestProtocol.BAD_STATE;
 import static com.android.launcher3.util.ItemInfoMatcher.forFolderMatch;
 
 import android.animation.Animator;
@@ -513,7 +512,6 @@
 
         if (!mModel.addCallbacksAndLoad(this)) {
             if (!internalStateHandled) {
-                Log.d(BAD_STATE, "Launcher onCreate not binding sync, prevent drawing");
                 // If we are not binding synchronously, pause drawing until initial bind complete,
                 // so that the system could continue to show the device loading prompt
                 mOnInitialBindListener = Boolean.FALSE::booleanValue;
@@ -3036,7 +3034,7 @@
         mDragLayer.dump(prefix, writer);
         mStateManager.dump(prefix, writer);
         mPopupDataProvider.dump(prefix, writer);
-        mDeviceProfile.dump(prefix, writer);
+        mDeviceProfile.dump(this, prefix, writer);
 
         try {
             FileLog.flushAll(writer);
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index dc8c739..d0dbaf4 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -88,6 +88,7 @@
 import com.android.launcher3.pm.ShortcutConfigActivityInfo;
 import com.android.launcher3.shortcuts.ShortcutKey;
 import com.android.launcher3.shortcuts.ShortcutRequest;
+import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.util.IntArray;
 import com.android.launcher3.util.PackageManagerHelper;
 import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
@@ -525,10 +526,11 @@
     }
 
     public static int pxFromSp(float size, DisplayMetrics metrics, float scale) {
-        return Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
-                size, metrics) * scale);
+        float value = scale * TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, size, metrics);
+        return ResourceUtils.roundPxValueFromFloat(value);
     }
 
+
     public static String createDbSelectionQuery(String columnName, IntArray values) {
         return String.format(Locale.ENGLISH, "%s IN (%s)", columnName, values.toConcatString());
     }
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index b4b29d7..2bc5e64 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -30,7 +30,6 @@
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SWIPELEFT;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SWIPERIGHT;
-import static com.android.launcher3.testing.shared.TestProtocol.BAD_STATE;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -1248,7 +1247,6 @@
         // different effects based on device performance. On at least one relatively high-end
         // device I've tried, translating the launcher causes things to get quite laggy.
         mLauncher.getDragLayer().setTranslationX(transX);
-        Log.d(BAD_STATE, "Workspace onOverlayScrollChanged DragLayer ALPHA_INDEX_OVERLAY=" + alpha);
         mLauncher.getDragLayer().getAlphaProperty(ALPHA_INDEX_OVERLAY).setValue(alpha);
     }
 
diff --git a/src/com/android/launcher3/graphics/ShadowDrawable.java b/src/com/android/launcher3/graphics/ShadowDrawable.java
deleted file mode 100644
index d8a7070..0000000
--- a/src/com/android/launcher3/graphics/ShadowDrawable.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3.graphics;
-
-import android.annotation.TargetApi;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.graphics.Bitmap;
-import android.graphics.BlurMaskFilter;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.ColorFilter;
-import android.graphics.Paint;
-import android.graphics.PixelFormat;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
-import android.util.AttributeSet;
-
-import com.android.launcher3.R;
-import com.android.launcher3.icons.BitmapRenderer;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-
-/**
- * A drawable which adds shadow around a child drawable.
- */
-@TargetApi(Build.VERSION_CODES.O)
-public class ShadowDrawable extends Drawable {
-
-    private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
-
-    private final ShadowDrawableState mState;
-
-    @SuppressWarnings("unused")
-    public ShadowDrawable() {
-        this(new ShadowDrawableState());
-    }
-
-    private ShadowDrawable(ShadowDrawableState state) {
-        mState = state;
-    }
-
-    @Override
-    public void draw(Canvas canvas) {
-        Rect bounds = getBounds();
-        if (bounds.isEmpty()) {
-            return;
-        }
-        if (mState.mLastDrawnBitmap == null) {
-            regenerateBitmapCache();
-        }
-        canvas.drawBitmap(mState.mLastDrawnBitmap, null, bounds, mPaint);
-    }
-
-    @Override
-    public void setAlpha(int alpha) {
-        mPaint.setAlpha(alpha);
-        invalidateSelf();
-    }
-
-    @Override
-    public void setColorFilter(ColorFilter colorFilter) {
-        mPaint.setColorFilter(colorFilter);
-        invalidateSelf();
-    }
-
-    @Override
-    public ConstantState getConstantState() {
-        return mState;
-    }
-
-    @Override
-    public int getOpacity() {
-        return PixelFormat.TRANSLUCENT;
-    }
-
-    @Override
-    public int getIntrinsicHeight() {
-        return mState.mIntrinsicHeight;
-    }
-
-    @Override
-    public int getIntrinsicWidth() {
-        return mState.mIntrinsicWidth;
-    }
-
-    @Override
-    public boolean canApplyTheme() {
-        return mState.canApplyTheme();
-    }
-
-    @Override
-    public void applyTheme(Resources.Theme t) {
-        TypedArray ta = t.obtainStyledAttributes(new int[] {R.attr.isWorkspaceDarkText});
-        boolean isDark = ta.getBoolean(0, false);
-        ta.recycle();
-        if (mState.mIsDark != isDark) {
-            mState.mIsDark = isDark;
-            mState.mLastDrawnBitmap = null;
-            invalidateSelf();
-        }
-    }
-
-    private void regenerateBitmapCache() {
-        // Call mutate, so that the pixel allocation by the underlying vector drawable is cleared.
-        Drawable d = mState.mChildState.newDrawable().mutate();
-        d.setBounds(mState.mShadowSize, mState.mShadowSize,
-                mState.mIntrinsicWidth - mState.mShadowSize,
-                mState.mIntrinsicHeight - mState.mShadowSize);
-        d.setTint(mState.mIsDark ? mState.mDarkTintColor : Color.WHITE);
-
-        if (mState.mIsDark) {
-            // Dark text do not have any shadow, but just the bitmap
-            mState.mLastDrawnBitmap = BitmapRenderer.createHardwareBitmap(
-                    mState.mIntrinsicWidth, mState.mIntrinsicHeight, d::draw);
-        } else {
-            Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
-            paint.setMaskFilter(new BlurMaskFilter(mState.mShadowSize, BlurMaskFilter.Blur.NORMAL));
-
-            // Generate the shadow bitmap
-            int[] offset = new int[2];
-            Bitmap shadow = BitmapRenderer.createSoftwareBitmap(
-                    mState.mIntrinsicWidth, mState.mIntrinsicHeight, d::draw)
-                    .extractAlpha(paint, offset);
-
-            paint.setMaskFilter(null);
-            paint.setColor(mState.mShadowColor);
-            mState.mLastDrawnBitmap = BitmapRenderer.createHardwareBitmap(
-                    mState.mIntrinsicWidth, mState.mIntrinsicHeight, c -> {
-                        c.drawBitmap(shadow, offset[0], offset[1], paint);
-                        d.draw(c);
-                    });
-        }
-    }
-
-    @Override
-    public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs,
-            Resources.Theme theme) throws XmlPullParserException, IOException {
-        super.inflate(r, parser, attrs, theme);
-
-        final TypedArray a = theme == null
-                ? r.obtainAttributes(attrs, R.styleable.ShadowDrawable)
-                : theme.obtainStyledAttributes(attrs, R.styleable.ShadowDrawable, 0, 0);
-        try {
-            Drawable d = a.getDrawable(R.styleable.ShadowDrawable_android_src);
-            if (d == null) {
-                throw new XmlPullParserException("missing src attribute");
-            }
-            mState.mShadowColor = a.getColor(
-                    R.styleable.ShadowDrawable_android_shadowColor, Color.BLACK);
-            mState.mShadowSize = a.getDimensionPixelSize(
-                    R.styleable.ShadowDrawable_android_elevation, 0);
-            mState.mDarkTintColor = a.getColor(
-                    R.styleable.ShadowDrawable_darkTintColor, Color.BLACK);
-
-            mState.mIntrinsicHeight = d.getIntrinsicHeight() + 2 * mState.mShadowSize;
-            mState.mIntrinsicWidth = d.getIntrinsicWidth() + 2 * mState.mShadowSize;
-            mState.mChangingConfigurations = d.getChangingConfigurations();
-
-            mState.mChildState = d.getConstantState();
-        } finally {
-            a.recycle();
-        }
-    }
-
-    private static class ShadowDrawableState extends ConstantState {
-
-        int mChangingConfigurations;
-        int mIntrinsicWidth;
-        int mIntrinsicHeight;
-
-        int mShadowColor;
-        int mShadowSize;
-        int mDarkTintColor;
-
-        boolean mIsDark;
-        Bitmap mLastDrawnBitmap;
-        ConstantState mChildState;
-
-        @Override
-        public Drawable newDrawable() {
-            return new ShadowDrawable(this);
-        }
-
-        @Override
-        public int getChangingConfigurations() {
-            return mChangingConfigurations;
-        }
-
-        @Override
-        public boolean canApplyTheme() {
-            return true;
-        }
-    }
-}
diff --git a/src/com/android/launcher3/model/AllAppsList.java b/src/com/android/launcher3/model/AllAppsList.java
index 4875d83..95150dc 100644
--- a/src/com/android/launcher3/model/AllAppsList.java
+++ b/src/com/android/launcher3/model/AllAppsList.java
@@ -18,6 +18,7 @@
 
 import static com.android.launcher3.model.data.AppInfo.COMPONENT_KEY_COMPARATOR;
 import static com.android.launcher3.model.data.AppInfo.EMPTY_ARRAY;
+import static com.android.launcher3.testing.shared.TestProtocol.INCORRECT_INFO_UPDATED;
 
 import android.content.ComponentName;
 import android.content.Context;
@@ -38,6 +39,7 @@
 import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.pm.PackageInstallInfo;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.FlagOp;
 import com.android.launcher3.util.PackageManagerHelper;
 import com.android.launcher3.util.SafeCloseable;
@@ -270,8 +272,14 @@
     }
 
     public void updateIconsAndLabels(HashSet<String> packages, UserHandle user) {
+        if (TestProtocol.sDebugTracing) {
+            Log.i(INCORRECT_INFO_UPDATED, "updateIconsAndLabels: packages=" + packages);
+        }
         for (AppInfo info : data) {
             if (info.user.equals(user) && packages.contains(info.componentName.getPackageName())) {
+                if (TestProtocol.sDebugTracing) {
+                    Log.i(INCORRECT_INFO_UPDATED, "updateIconsAndLabels: updating info=" + info);
+                }
                 mIconCache.updateTitleAndIcon(info);
                 info.sectionName = mIndex.computeSectionName(info.title);
                 mDataChanged = true;
diff --git a/src/com/android/launcher3/states/SpringLoadedState.java b/src/com/android/launcher3/states/SpringLoadedState.java
index a205ab5..3ca8ba2 100644
--- a/src/com/android/launcher3/states/SpringLoadedState.java
+++ b/src/com/android/launcher3/states/SpringLoadedState.java
@@ -52,7 +52,7 @@
         }
 
         float shrunkTop = grid.getCellLayoutSpringLoadShrunkTop();
-        float scale = grid.getWorkspaceSpringLoadScale();
+        float scale = grid.getWorkspaceSpringLoadScale(launcher);
 
         float halfHeight = ws.getHeight() / 2;
         float myCenter = ws.getTop() + halfHeight;
diff --git a/src/com/android/launcher3/testing/shared/ResourceUtils.java b/src/com/android/launcher3/testing/shared/ResourceUtils.java
index af462cc..551aeaf 100644
--- a/src/com/android/launcher3/testing/shared/ResourceUtils.java
+++ b/src/com/android/launcher3/testing/shared/ResourceUtils.java
@@ -21,6 +21,7 @@
 import android.util.TypedValue;
 
 public class ResourceUtils {
+    private static final float EPSILON = 0.0001f;
     public static final int DEFAULT_NAVBAR_VALUE = 48;
     public static final int INVALID_RESOURCE_HANDLE = -1;
     public static final String NAVBAR_LANDSCAPE_LEFT_RIGHT_SIZE = "navigation_bar_width";
@@ -71,7 +72,25 @@
     }
 
     public static int pxFromDp(float size, DisplayMetrics metrics, float scale) {
-        return size < 0 ? INVALID_RESOURCE_HANDLE : Math.round(scale
-                * TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, metrics));
+        float value = scale * TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, metrics);
+        return size < 0 ? INVALID_RESOURCE_HANDLE : roundPxValueFromFloat(value);
+    }
+
+    /**
+     * Rounds a pixel value, taking into account floating point errors.
+     *
+     * <p>If a dp (or sp) value typically returns a half pixel, such as 20dp at a 2.625 density
+     * returning 52.5px, there is a small chance that due to floating-point errors, the value will
+     * be stored as 52.499999. As we round to the nearest pixel, this could cause a 1px difference
+     * in final values, which we correct for in this method.
+     */
+    public static int roundPxValueFromFloat(float value) {
+        float fraction = (float) (value - Math.floor(value));
+        if (Math.abs(0.5f - fraction) < EPSILON) {
+            // Note: we add for negative values as well, as Math.round brings -.5 to the next
+            // "highest" value, e.g. Math.round(-2.5) == -2 [i.e. (int)Math.floor(a + 0.5d)]
+            value += EPSILON;
+        }
+        return Math.round(value);
     }
 }
diff --git a/src/com/android/launcher3/testing/shared/TestProtocol.java b/src/com/android/launcher3/testing/shared/TestProtocol.java
index d872476..67efb58 100644
--- a/src/com/android/launcher3/testing/shared/TestProtocol.java
+++ b/src/com/android/launcher3/testing/shared/TestProtocol.java
@@ -136,8 +136,8 @@
     public static final String NO_DROP_TARGET = "b/195031154";
     public static final String NULL_INT_SET = "b/200572078";
     public static final String MISSING_PROMISE_ICON = "b/202985412";
-    public static final String BAD_STATE = "b/223498680";
     public static final String TASKBAR_IN_APP_STATE = "b/227657604";
+    public static final String INCORRECT_INFO_UPDATED = "b/239465630";
 
     public static final String REQUEST_EMULATE_DISPLAY = "emulate-display";
     public static final String REQUEST_STOP_EMULATE_DISPLAY = "stop-emulate-display";
diff --git a/tests/src/com/android/launcher3/DeviceProfileBaseTest.kt b/tests/src/com/android/launcher3/DeviceProfileBaseTest.kt
index 7465db5..7046782 100644
--- a/tests/src/com/android/launcher3/DeviceProfileBaseTest.kt
+++ b/tests/src/com/android/launcher3/DeviceProfileBaseTest.kt
@@ -17,11 +17,14 @@
 
 import android.content.Context
 import android.graphics.PointF
+import android.graphics.Rect
+import android.util.SparseArray
 import androidx.test.core.app.ApplicationProvider
 import com.android.launcher3.util.DisplayController.Info
 import com.android.launcher3.util.WindowBounds
 import org.junit.Before
 import org.mockito.ArgumentMatchers.any
+import org.mockito.ArgumentMatchers.anyInt
 import org.mockito.Mockito.mock
 import java.io.PrintWriter
 import java.io.StringWriter
@@ -37,6 +40,9 @@
     protected var transposeLayoutWithOrientation: Boolean = false
     protected var useTwoPanels: Boolean = false
     protected var isGestureMode: Boolean = true
+    protected var devicePaddingsMock: DevicePaddings = mock(DevicePaddings::class.java)
+    protected var staticdevicePaddingsMock: DevicePaddings.DevicePadding =
+            mock(DevicePaddings.DevicePadding::class.java)
 
     @Before
     fun setUp() {
@@ -51,6 +57,7 @@
         inv,
         info,
         windowBounds,
+        SparseArray(),
         isMultiWindowMode,
         transposeLayoutWithOrientation,
         useTwoPanels,
@@ -60,112 +67,287 @@
     protected fun initializeVarsForPhone(isGestureMode: Boolean = true,
                                          isVerticalBar: Boolean = false) {
         val (x, y) = if (isVerticalBar)
-            Pair(3120, 1440)
+            Pair(2400, 1080)
         else
-            Pair(1440, 3120)
+            Pair(1080, 2400)
 
-        windowBounds = WindowBounds(x, y, x, y - 100, 0)
+        windowBounds = WindowBounds(Rect(0, 0, x, y), Rect(
+                if (isVerticalBar) 118 else 0,
+                if (isVerticalBar) 74 else 118,
+                if (!isGestureMode && isVerticalBar) 126 else 0,
+                if (isGestureMode) 63 else if (isVerticalBar) 0 else 126))
 
         whenever(info.isTablet(any())).thenReturn(false)
-        whenever(info.getDensityDpi()).thenReturn(560)
+        whenever(info.getDensityDpi()).thenReturn(420)
         whenever(info.smallestSizeDp(any())).thenReturn(411f)
+        whenever(devicePaddingsMock.getDevicePadding(anyInt())).thenReturn(staticdevicePaddingsMock)
+        whenever(staticdevicePaddingsMock.getWorkspaceTopPadding(anyInt())).thenReturn(95)
+        whenever(staticdevicePaddingsMock.getWorkspaceBottomPadding(anyInt())).thenReturn(116)
+        whenever(staticdevicePaddingsMock.maxEmptySpacePx)
+                .thenReturn(if (isVerticalBar) if (isGestureMode) 131 else 184 else 315)
 
         this.isGestureMode = isGestureMode
+        transposeLayoutWithOrientation = true
 
-        inv = newScalableInvariantDeviceProfile().apply {
+        inv = InvariantDeviceProfile().apply {
+            numRows = 5
+            numColumns = 4
+            numSearchContainerColumns = 4
+
+            numFolderRows = 3
+            numFolderColumns = 3
+            iconSize = floatArrayOf(60f, 54f, 60f, 60f)
+            iconTextSize = FloatArray(4) { 14f }
             deviceType = InvariantDeviceProfile.TYPE_PHONE
-            transposeLayoutWithOrientation = isVerticalBar
+
+            minCellSize = listOf(
+                    PointF(80f, 104f),
+                    PointF(80f, 104f),
+                    PointF(80f, 104f),
+                    PointF(80f, 104f)
+            ).toTypedArray()
+
+            borderSpaces = listOf(
+                    PointF(16f, 16f),
+                    PointF(16f, 16f),
+                    PointF(16f, 16f),
+                    PointF(16f, 16f)
+            ).toTypedArray()
+            folderBorderSpace = 16f
+            hotseatBorderSpaces = FloatArray(4) { 16f }
+            inlineNavButtonsEndSpacing = R.dimen.taskbar_button_margin_4_5
+
+            horizontalMargin = FloatArray(4) { 22f }
+
+            allAppsCellSize = listOf(
+                    PointF(80f, 104f),
+                    PointF(80f, 104f),
+                    PointF(80f, 104f),
+                    PointF(80f, 104f)
+            ).toTypedArray()
+            allAppsIconSize = floatArrayOf(60f, 60f, 60f, 60f)
+            allAppsIconTextSize = FloatArray(4) { 14f }
+            allAppsBorderSpaces = listOf(
+                    PointF(16f, 16f),
+                    PointF(16f, 16f),
+                    PointF(16f, 16f),
+                    PointF(16f, 16f)
+            ).toTypedArray()
+
+            numShownHotseatIcons = 4
+
+            numShrunkenHotseatIcons = 4
+
+            numDatabaseHotseatIcons = 4
+
+            hotseatColumnSpan = IntArray(4) { 4 }
+            hotseatBarBottomSpace = FloatArray(4) { 48f }
+            hotseatQsbSpace = FloatArray(4) { 36f }
+
+            numAllAppsColumns = 4
+
+            isScalable = true
+
+            inlineQsb = BooleanArray(4) { false }
+
+            devicePaddings = devicePaddingsMock
         }
     }
 
     protected fun initializeVarsForTablet(isLandscape: Boolean = false,
-                                          isTwoPanel: Boolean = false,
                                           isGestureMode: Boolean = true) {
         val (x, y) = if (isLandscape)
             Pair(2560, 1600)
         else
             Pair(1600, 2560)
 
-        windowBounds = WindowBounds(x, y, x, y - 100, 0)
+        windowBounds =
+                WindowBounds(Rect(0, 0, x, y), Rect(0, 104, 0, 0))
 
         whenever(info.isTablet(any())).thenReturn(true)
         whenever(info.getDensityDpi()).thenReturn(320)
         whenever(info.smallestSizeDp(any())).thenReturn(800f)
+        whenever(devicePaddingsMock.getDevicePadding(anyInt())).thenReturn(staticdevicePaddingsMock)
+        whenever(staticdevicePaddingsMock.getWorkspaceTopPadding(anyInt()))
+                .thenReturn(if (isLandscape) 32 else 159)
+        whenever(staticdevicePaddingsMock.getWorkspaceBottomPadding(anyInt()))
+                .thenReturn(if (isLandscape) 72 else 203)
+        whenever(staticdevicePaddingsMock.maxEmptySpacePx).thenReturn(if (isLandscape) 200 else 19998)
+
 
         this.isGestureMode = isGestureMode
-        useTwoPanels = isTwoPanel
+        useTwoPanels = false
 
-        inv = newScalableInvariantDeviceProfile().apply {
-            deviceType = if (isTwoPanel)
-                InvariantDeviceProfile.TYPE_MULTI_DISPLAY else InvariantDeviceProfile.TYPE_TABLET
+        inv = InvariantDeviceProfile().apply {
+            numRows = 5
+            numColumns = 6
+            numSearchContainerColumns = 3
+
+            iconSize = FloatArray(4) { 60f }
+            iconTextSize = FloatArray(4) { 14f }
+            deviceType = InvariantDeviceProfile.TYPE_TABLET
+
+            minCellSize = listOf(
+                    PointF(102f, 120f),
+                    PointF(120f, 104f),
+                    PointF(102f, 120f),
+                    PointF(102f, 120f)
+            ).toTypedArray()
+
+            borderSpaces = listOf(
+                    PointF(16f, 64f),
+                    PointF(64f, 16f),
+                    PointF(16f, 64f),
+                    PointF(16f, 64f)
+            ).toTypedArray()
+            hotseatBorderSpaces = floatArrayOf(58f, 50.4f, 58f, 58f)
+            inlineNavButtonsEndSpacing = R.dimen.taskbar_button_margin_6_5
+
+            horizontalMargin = floatArrayOf(54f, 120f, 54f, 54f)
+
+            allAppsCellSize = listOf(
+                    PointF(96f, 142f),
+                    PointF(126f, 126f),
+                    PointF(96f, 142f),
+                    PointF(96f, 142f)
+            ).toTypedArray()
+            allAppsIconSize = FloatArray(4) { 60f }
+            allAppsIconTextSize = FloatArray(4) { 14f }
+            allAppsBorderSpaces = listOf(
+                    PointF(8f, 16f),
+                    PointF(16f, 16f),
+                    PointF(8f, 16f),
+                    PointF(8f, 16f)
+            ).toTypedArray()
+
+            numShownHotseatIcons = 6
+
+            numShrunkenHotseatIcons = 5
+
+            numDatabaseHotseatIcons = 6
+
+            hotseatColumnSpan = intArrayOf(6, 4, 6, 6)
+            hotseatBarBottomSpace = floatArrayOf(36f, 40f, 36f, 36f)
+            hotseatQsbSpace = FloatArray(4) { 32f }
+
+            numAllAppsColumns = 6
+
+            isScalable = true
+            devicePaddingId = 2132148242 // "@xml/paddings_6x5"
+
             inlineQsb = booleanArrayOf(
                     false,
-                    isLandscape,
+                    true,
                     false,
                     false
             )
+
+            devicePaddings = devicePaddingsMock
         }
     }
 
-    /**
-     * A very generic grid, just to make qsb tests work. For real calculations, make sure to use
-     * values that better represent a real grid.
-     */
-    protected fun newScalableInvariantDeviceProfile(): InvariantDeviceProfile =
-        InvariantDeviceProfile().apply {
-            isScalable = true
-            numColumns = 4
-            numRows = 4
-            numShownHotseatIcons = 4
-            numDatabaseHotseatIcons = 6
-            numShrunkenHotseatIcons = 5
-            horizontalMargin = FloatArray(4) { 22f }
-            borderSpaces = listOf(
-                PointF(16f, 16f),
-                PointF(16f, 16f),
-                PointF(16f, 16f),
-                PointF(16f, 16f)
-            ).toTypedArray()
-            allAppsBorderSpaces = listOf(
-                PointF(16f, 16f),
-                PointF(16f, 16f),
-                PointF(16f, 16f),
-                PointF(16f, 16f)
-            ).toTypedArray()
-            hotseatBorderSpaces = FloatArray(4) { 16f }
-            hotseatColumnSpan = IntArray(4) { 4 }
-            hotseatBarBottomSpace = FloatArray(4) { 48f }
-            inlineNavButtonsEndSpacing = R.dimen.taskbar_button_margin_4_4
-            hotseatQsbSpace = FloatArray(4) { 36f }
-            iconSize = FloatArray(4) { 56f }
-            allAppsIconSize = FloatArray(4) { 56f }
-            iconTextSize = FloatArray(4) { 14f }
-            allAppsIconTextSize = FloatArray(4) { 14f }
-            minCellSize = listOf(
-                PointF(64f, 83f),
-                PointF(64f, 83f),
-                PointF(64f, 83f),
-                PointF(64f, 83f)
-            ).toTypedArray()
-            allAppsCellSize = listOf(
-                PointF(64f, 83f),
-                PointF(64f, 83f),
-                PointF(64f, 83f),
-                PointF(64f, 83f)
-            ).toTypedArray()
-            inlineQsb = booleanArrayOf(
-                false,
-                false,
-                false,
-                false
-            )
-        }
+    protected fun initializeVarsForTwoPanel(isLandscape: Boolean = false,
+            isGestureMode: Boolean = true) {
+        val (x, y) = if (isLandscape)
+            Pair(2208, 1840)
+        else
+            Pair(1840, 2208)
 
-    fun dump(dp: DeviceProfile): StringWriter {
+        windowBounds = WindowBounds(Rect(0, 0, x, y),
+                Rect(0, 110, 0, 0))
+
+        whenever(info.isTablet(any())).thenReturn(true)
+        whenever(info.getDensityDpi()).thenReturn(420)
+        whenever(info.smallestSizeDp(any())).thenReturn(700f)
+        whenever(devicePaddingsMock.getDevicePadding(anyInt())).thenReturn(staticdevicePaddingsMock)
+
+        val topPadding = if (isLandscape) 18 else 89
+        val bottomPadding = if (isLandscape) 39 else 146
+        val maxEmptySpace = if (isLandscape) 131 else 236
+        whenever(staticdevicePaddingsMock.getWorkspaceTopPadding(anyInt())).thenReturn(topPadding)
+        whenever(staticdevicePaddingsMock.getWorkspaceBottomPadding(anyInt()))
+                .thenReturn(bottomPadding)
+        whenever(staticdevicePaddingsMock.maxEmptySpacePx).thenReturn(maxEmptySpace)
+
+        this.isGestureMode = isGestureMode
+        useTwoPanels = true
+
+        inv = InvariantDeviceProfile().apply {
+            numRows = 4
+            numColumns = 4
+            numSearchContainerColumns = 4
+
+            numFolderRows = 3
+            numFolderColumns = 4
+            iconSize = floatArrayOf(60f, 52f, 52f, 60f)
+            iconTextSize = floatArrayOf(14f, 14f, 12f, 14f)
+            deviceType = InvariantDeviceProfile.TYPE_MULTI_DISPLAY
+
+            minCellSize = listOf(
+                    PointF(80f, 104f),
+                    PointF(80f, 104f),
+                    PointF(68f, 116f),
+                    PointF(80f, 102f)
+            ).toTypedArray()
+
+            borderSpaces = listOf(
+                    PointF(16f, 16f),
+                    PointF(16f, 16f),
+                    PointF(16f, 20f),
+                    PointF(20f, 20f)
+            ).toTypedArray()
+            folderBorderSpace = 16f
+            hotseatBorderSpaces = floatArrayOf(36f, 36f, 18f, 23.3f)
+            inlineNavButtonsEndSpacing = R.dimen.taskbar_button_margin_4_4
+
+            horizontalMargin = floatArrayOf(21.5f, 21.5f, 22.5f, 30.5f)
+
+            allAppsCellSize = listOf(
+                    PointF(0f, 0f),
+                    PointF(0f, 0f),
+                    PointF(68f, 104f),
+                    PointF(80f, 104f)
+            ).toTypedArray()
+            allAppsIconSize = floatArrayOf(60f, 60f, 52f, 60f)
+            allAppsIconTextSize = floatArrayOf(14f, 14f, 12f, 14f)
+            allAppsBorderSpaces = listOf(
+                    PointF(16f, 16f),
+                    PointF(16f, 16f),
+                    PointF(16f, 28f),
+                    PointF(20f, 16f)
+            ).toTypedArray()
+
+            numShownHotseatIcons = 6
+
+            numShrunkenHotseatIcons = 6
+
+            numDatabaseHotseatIcons = 6
+
+            hotseatColumnSpan = IntArray(4) { 6 }
+            hotseatBarBottomSpace = floatArrayOf(48f, 48f, 36f, 20f)
+            hotseatQsbSpace = floatArrayOf(36f, 36f, 36f, 28f)
+
+            numAllAppsColumns = 6
+            numDatabaseAllAppsColumns = 6
+
+            isScalable = true
+
+            inlineQsb = booleanArrayOf(
+                    false,
+                    false,
+                    false,
+                    false
+            )
+
+            devicePaddings = devicePaddingsMock
+        }
+    }
+
+    fun dump(dp: DeviceProfile): String {
         val stringWriter = StringWriter()
         val printWriter = PrintWriter(stringWriter)
-        dp.dump("", printWriter)
+        dp.dump(context, "", printWriter)
         printWriter.flush()
-        return stringWriter
+        return stringWriter.toString()
     }
 }
\ No newline at end of file
diff --git a/tests/src/com/android/launcher3/HotseatShownIconsTest.kt b/tests/src/com/android/launcher3/HotseatShownIconsTest.kt
index 5dabb33..95651ca 100644
--- a/tests/src/com/android/launcher3/HotseatShownIconsTest.kt
+++ b/tests/src/com/android/launcher3/HotseatShownIconsTest.kt
@@ -34,7 +34,7 @@
     @Test
     fun hotseat_size_is_shrunk_if_needed_when_large_screen() {
         initializeVarsForTablet(isLandscape = true)
-        inv = newScalableInvariantDeviceProfile().apply {
+        inv = inv!!.apply {
             deviceType = TYPE_MULTI_DISPLAY
             inlineQsb = booleanArrayOf(
                 false,
@@ -64,7 +64,7 @@
     @Test
     fun hotseat_size_is_shrunk_even_in_portrait_when_large_screen() {
         initializeVarsForTablet()
-        inv = newScalableInvariantDeviceProfile().apply {
+        inv = inv!!.apply {
             deviceType = TYPE_MULTI_DISPLAY
             inlineQsb = booleanArrayOf(
                 false,
@@ -90,7 +90,7 @@
     @Test
     fun hotseat_size_is_default_when_small_screen() {
         initializeVarsForPhone()
-        inv = newScalableInvariantDeviceProfile().apply {
+        inv = inv!!.apply {
             deviceType = TYPE_MULTI_DISPLAY
         }
         useTwoPanels = true
@@ -103,7 +103,7 @@
     @Test
     fun hotseat_size_is_not_shrunk_on_gesture_tablet() {
         initializeVarsForTablet(isLandscape = true)
-        inv = newScalableInvariantDeviceProfile().apply {
+        inv = inv!!.apply {
             deviceType = TYPE_TABLET
             inlineQsb = booleanArrayOf(
                     false,
@@ -129,7 +129,7 @@
     @Test
     fun hotseat_size_is_shrunk_if_needed_on_tablet() {
         initializeVarsForTablet(isLandscape = true)
-        inv = newScalableInvariantDeviceProfile().apply {
+        inv = inv!!.apply {
             deviceType = TYPE_TABLET
             inlineQsb = booleanArrayOf(
                 false,
@@ -159,7 +159,7 @@
     @Test
     fun hotseat_size_is_shrunk_even_in_portrait_on_tablet() {
         initializeVarsForTablet()
-        inv = newScalableInvariantDeviceProfile().apply {
+        inv = inv!!.apply {
             deviceType = TYPE_TABLET
             inlineQsb = booleanArrayOf(
                 false,
diff --git a/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java b/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java
index dba0a40..960d27d 100644
--- a/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java
+++ b/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java
@@ -1,5 +1,7 @@
 package com.android.launcher3.model;
 
+import static com.android.launcher3.testing.shared.TestProtocol.INCORRECT_INFO_UPDATED;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotSame;
@@ -14,6 +16,7 @@
 import android.os.Process;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.util.Log;
 
 import androidx.annotation.NonNull;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -26,6 +29,7 @@
 import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.LauncherModelHelper;
 
 import org.junit.After;
@@ -43,12 +47,15 @@
 @RunWith(AndroidJUnit4.class)
 public class CacheDataUpdatedTaskTest {
 
+    private static final String TAG = "CacheDataUpdatedTaskTest";
+
     private static final String NEW_LABEL_PREFIX = "new-label-";
 
     private LauncherModelHelper mModelHelper;
 
     @Before
     public void setup() throws Exception {
+        TestProtocol.sDebugTracing = true;
         mModelHelper = new LauncherModelHelper();
         mModelHelper.initializeData("cache_data_updated_task_data");
 
@@ -88,6 +95,7 @@
     @After
     public void tearDown() {
         mModelHelper.destroy();
+        TestProtocol.sDebugTracing = false;
     }
 
     private CacheDataUpdatedTask newTask(int op, String... pkg) {
@@ -111,6 +119,7 @@
         // Verify that only app1 var updated in allAppsList
         assertFalse(mModelHelper.getAllAppsList().data.isEmpty());
         for (AppInfo info : mModelHelper.getAllAppsList().data) {
+            Log.i(INCORRECT_INFO_UPDATED, "testCacheUpdate_update_apps: checking info=" + info);
             if (info.componentName.getPackageName().equals("app1")) {
                 assertFalse(info.bitmap.isNullOrLowRes());
             } else {