Merge "Import translations. DO NOT MERGE ANYWHERE" into main
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java
index e30fe66..8cbf239 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java
@@ -96,7 +96,7 @@
             return FeatureFlags.ENABLE_ALL_APPS_FROM_OVERVIEW.get()
                     ? mLauncher.getStateManager().getLastState()
                     : NORMAL;
-        } else if (fromState == NORMAL && isDragTowardPositive) {
+        } else if (fromState == NORMAL && shouldOpenAllApps(isDragTowardPositive)) {
             return ALL_APPS;
         }
         return fromState;
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
index 26ab3d6..cda7855 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
@@ -21,6 +21,7 @@
 import static android.view.MotionEvent.ACTION_UP;
 import static android.view.WindowManager.LayoutParams.FLAG_SLIPPERY;
 
+import static com.android.launcher3.MotionEventsUtils.isTrackpadScroll;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SWIPE_DOWN_WORKSPACE_NOTISHADE_OPEN;
 
 import android.graphics.PointF;
@@ -57,6 +58,8 @@
     /* If {@code false}, this controller should not handle the input {@link MotionEvent}.*/
     private boolean mCanIntercept;
 
+    private boolean mIsTrackpadReverseScroll;
+
     public StatusBarTouchController(Launcher l) {
         mLauncher = l;
         mSystemUiProxy = SystemUiProxy.INSTANCE.get(mLauncher);
@@ -92,6 +95,8 @@
             }
             mDownEvents.clear();
             mDownEvents.put(pid, new PointF(ev.getX(), ev.getY()));
+            mIsTrackpadReverseScroll = !mLauncher.isNaturalScrollingEnabled()
+                    && isTrackpadScroll(ev);
         } else if (ev.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN) {
             // Check!! should only set it only when threshold is not entered.
             mDownEvents.put(pid, new PointF(ev.getX(idx), ev.getY(idx)));
@@ -102,6 +107,9 @@
         if (action == ACTION_MOVE) {
             float dy = ev.getY(idx) - mDownEvents.get(pid).y;
             float dx = ev.getX(idx) - mDownEvents.get(pid).x;
+            if (mIsTrackpadReverseScroll) {
+                dy = -dy;
+            }
             // Currently input dispatcher will not do touch transfer if there are more than
             // one touch pointer. Hence, even if slope passed, only set the slippery flag
             // when there is single touch event. (context: InputDispatcher.cpp line 1445)
@@ -126,6 +134,7 @@
             mLauncher.getStatsLogManager().logger()
                     .log(LAUNCHER_SWIPE_DOWN_WORKSPACE_NOTISHADE_OPEN);
             setWindowSlippery(false);
+            mIsTrackpadReverseScroll = false;
             return true;
         }
         return true;
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
index db5ad82..179612b 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
@@ -57,12 +57,14 @@
 import android.provider.Settings;
 import android.util.Log;
 import android.view.ISystemGestureExclusionListener;
+import android.view.IWindowManager;
 import android.view.MotionEvent;
 import android.view.ViewConfiguration;
 import android.view.WindowManagerGlobal;
 
 import androidx.annotation.BinderThread;
 import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
 
 import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.config.FeatureFlags;
@@ -98,20 +100,22 @@
 
     private final Context mContext;
     private final DisplayController mDisplayController;
-    private final int mDisplayId;
 
-    private final ISystemGestureExclusionListener mGestureExclusionListener =
+    private final IWindowManager mIWindowManager;
+
+    @VisibleForTesting
+    final ISystemGestureExclusionListener mGestureExclusionListener =
             new ISystemGestureExclusionListener.Stub() {
                 @BinderThread
                 @Override
                 public void onSystemGestureExclusionChanged(int displayId,
                         Region systemGestureExclusionRegion, Region unrestrictedOrNull) {
-                    if (displayId != mDisplayId) {
+                    if (displayId != DEFAULT_DISPLAY) {
                         return;
                     }
                     // Assignments are atomic, it should be safe on binder thread. Also we don't
-                    // think systemGestureExclusionRegion can be null but just in case, don't let
-                    // mExclusionRegion be null.
+                    // think systemGestureExclusionRegion can be null but just in case, don't
+                    // let mExclusionRegion be null.
                     mExclusionRegion = systemGestureExclusionRegion != null
                             ? systemGestureExclusionRegion : new Region();
                 }
@@ -142,17 +146,28 @@
     private boolean mExclusionListenerRegistered;
 
     public RecentsAnimationDeviceState(Context context) {
-        this(context, false);
+        this(context, false, WindowManagerGlobal.getWindowManagerService());
+    }
+
+    public RecentsAnimationDeviceState(Context context, boolean isInstanceForTouches) {
+        this(context, isInstanceForTouches, WindowManagerGlobal.getWindowManagerService());
+    }
+
+    @VisibleForTesting
+    RecentsAnimationDeviceState(Context context, IWindowManager windowManager) {
+        this(context, false, windowManager);
     }
 
     /**
      * @param isInstanceForTouches {@code true} if this is the persistent instance being used for
      *                                   gesture touch handling
      */
-    public RecentsAnimationDeviceState(Context context, boolean isInstanceForTouches) {
+    RecentsAnimationDeviceState(
+            Context context, boolean isInstanceForTouches,
+            IWindowManager windowManager) {
         mContext = context;
         mDisplayController = DisplayController.INSTANCE.get(context);
-        mDisplayId = DEFAULT_DISPLAY;
+        mIWindowManager = windowManager;
         mIsOneHandedModeSupported = SystemProperties.getBoolean(SUPPORT_ONE_HANDED_MODE, false);
         mRotationTouchHelper = RotationTouchHelper.INSTANCE.get(context);
         if (isInstanceForTouches) {
@@ -251,7 +266,7 @@
     @Override
     public void onDisplayInfoChanged(Context context, Info info, int flags) {
         if ((flags & (CHANGE_ROTATION | CHANGE_NAVIGATION_MODE)) != 0) {
-            mMode = info.navigationMode;
+            mMode = info.getNavigationMode();
             ActiveGestureLog.INSTANCE.setIsFullyGesturalNavMode(isFullyGesturalNavMode());
             mNavBarPosition = new NavBarPosition(mMode, info);
 
@@ -273,9 +288,8 @@
                 return;
             }
             try {
-                WindowManagerGlobal.getWindowManagerService()
-                        .registerSystemGestureExclusionListener(
-                                mGestureExclusionListener, mDisplayId);
+                mIWindowManager.registerSystemGestureExclusionListener(
+                        mGestureExclusionListener, DEFAULT_DISPLAY);
                 mExclusionListenerRegistered = true;
             } catch (RemoteException e) {
                 Log.e(TAG, "Failed to register window manager callbacks", e);
@@ -294,9 +308,8 @@
                 return;
             }
             try {
-                WindowManagerGlobal.getWindowManagerService()
-                        .unregisterSystemGestureExclusionListener(
-                                mGestureExclusionListener, mDisplayId);
+                mIWindowManager.unregisterSystemGestureExclusionListener(
+                        mGestureExclusionListener, DEFAULT_DISPLAY);
                 mExclusionListenerRegistered = false;
             } catch (RemoteException e) {
                 Log.e(TAG, "Failed to unregister window manager callbacks", e);
@@ -340,7 +353,7 @@
      * @return the display id for the display that Launcher is running on.
      */
     public int getDisplayId() {
-        return mDisplayId;
+        return DEFAULT_DISPLAY;
     }
 
     /**
diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java
index 92aa9fa..0d7ca07 100644
--- a/quickstep/src/com/android/quickstep/SystemUiProxy.java
+++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java
@@ -178,9 +178,12 @@
         mContext = context;
         mAsyncHandler = new Handler(UI_HELPER_EXECUTOR.getLooper(), this::handleMessageAsync);
         final Intent baseIntent = new Intent().setPackage(mContext.getPackageName());
+        final ActivityOptions options = ActivityOptions.makeBasic()
+                .setPendingIntentCreatorBackgroundActivityStartMode(
+                        ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
         mRecentsPendingIntent = PendingIntent.getActivity(mContext, 0, baseIntent,
                 PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT
-                        | Intent.FILL_IN_COMPONENT);
+                        | Intent.FILL_IN_COMPONENT, options.toBundle());
     }
 
     @Override
diff --git a/quickstep/src/com/android/quickstep/TaskShortcutFactory.java b/quickstep/src/com/android/quickstep/TaskShortcutFactory.java
index 96e39c4..2f84ac9 100644
--- a/quickstep/src/com/android/quickstep/TaskShortcutFactory.java
+++ b/quickstep/src/com/android/quickstep/TaskShortcutFactory.java
@@ -190,7 +190,7 @@
             }
             if (options != null
                     && ActivityManagerWrapper.getInstance().startActivityFromRecents(taskId,
-                            options)) {
+                    options)) {
                 final Runnable animStartedListener = () -> {
                     // Hide the task view and wait for the window to be resized
                     // TODO: Consider animating in launcher and do an in-place start activity
@@ -216,12 +216,13 @@
 
                 AppTransitionAnimationSpecsFuture future =
                         new AppTransitionAnimationSpecsFuture(mHandler) {
-                    @Override
-                    public List<AppTransitionAnimationSpecCompat> composeSpecs() {
-                        return Collections.singletonList(new AppTransitionAnimationSpecCompat(
-                                taskId, thumbnail, taskBounds));
-                    }
-                };
+                            @Override
+                            public List<AppTransitionAnimationSpecCompat> composeSpecs() {
+                                return Collections.singletonList(
+                                        new AppTransitionAnimationSpecCompat(
+                                                taskId, thumbnail, taskBounds));
+                            }
+                        };
                 overridePendingAppTransitionMultiThumbFuture(
                         future, animStartedListener, mHandler, true /* scaleUp */,
                         taskKey.displayId);
@@ -264,38 +265,35 @@
 
     /**
      * Does NOT add split options in the following scenarios:
-     * * The taskView to add split options is already showing split screen tasks
-     * * There aren't at least 2 tasks in overview to show split options for
-     * * Split isn't supported by the task itself (non resizable activity)
-     * * We aren't currently in multi-window
-     * * The taskView to show split options for is the focused task AND we haven't started
-     * scrolling in overview (if we haven't scrolled, there's a split overview action button so
-     * we don't need this menu option)
+     * * 1. Taskbar is not present AND aren't at least 2 tasks in overview to show split options for
+     * * 2. Split isn't supported by the task itself (non resizable activity)
+     * * 3. We aren't currently in multi-window
+     * * 4. The taskView to show split options for is the focused task AND we haven't started
+     * * scrolling in overview (if we haven't scrolled, there's a split overview action button so
+     * * we don't need this menu option)
      */
     TaskShortcutFactory SPLIT_SELECT = new TaskShortcutFactory() {
         @Override
         public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
                 TaskIdAttributeContainer taskContainer) {
             DeviceProfile deviceProfile = activity.getDeviceProfile();
-            final Task task  = taskContainer.getTask();
+            final Task task = taskContainer.getTask();
             final int intentFlags = task.key.baseIntent.getFlags();
             final TaskView taskView = taskContainer.getTaskView();
             final RecentsView recentsView = taskView.getRecentsView();
             final PagedOrientationHandler orientationHandler =
                     recentsView.getPagedOrientationHandler();
 
-            boolean notEnoughTasksToSplit = recentsView.getTaskViewCount() < 2;
-            boolean isFocusedTask = deviceProfile.isTablet && taskView.isFocusedTask();
-            boolean isTaskInExpectedScrollPosition =
-                    recentsView.isTaskInExpectedScrollPosition(recentsView.indexOfChild(taskView));
+            boolean notEnoughTasksToSplit =
+                    !deviceProfile.isTaskbarPresent && recentsView.getTaskViewCount() < 2;
             boolean isTaskSplitNotSupported = !task.isDockable ||
                     (intentFlags & FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) != 0;
             boolean hideForExistingMultiWindow = activity.getDeviceProfile().isMultiWindowMode;
+            boolean isFocusedTask = deviceProfile.isTablet && taskView.isFocusedTask();
+            boolean isTaskInExpectedScrollPosition =
+                    recentsView.isTaskInExpectedScrollPosition(recentsView.indexOfChild(taskView));
 
-            if (taskView.containsMultipleTasks()
-                    || notEnoughTasksToSplit
-                    || isTaskSplitNotSupported
-                    || hideForExistingMultiWindow
+            if (notEnoughTasksToSplit || isTaskSplitNotSupported || hideForExistingMultiWindow
                     || (isFocusedTask && isTaskInExpectedScrollPosition)) {
                 return null;
             }
@@ -333,7 +331,7 @@
         @Override
         public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
                 TaskIdAttributeContainer taskContainer) {
-            final Task task  = taskContainer.getTask();
+            final Task task = taskContainer.getTask();
             if (!task.isDockable) {
                 return null;
             }
@@ -349,8 +347,8 @@
 
         private boolean isAvailable(BaseDraggingActivity activity, int displayId) {
             return Settings.Global.getInt(
-                        activity.getContentResolver(),
-                        Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0
+                    activity.getContentResolver(),
+                    Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0
                     && !isDesktopModeSupported();
         }
     };
@@ -389,7 +387,8 @@
         @Override
         public void onClick(View view) {
             if (mTaskView.launchTaskAnimated() != null) {
-                SystemUiProxy.INSTANCE.get(mTarget).startScreenPinning(mTaskView.getTask().key.id);
+                SystemUiProxy.INSTANCE.get(mTarget).startScreenPinning(
+                        mTaskView.getTask().key.id);
             }
             dismissTaskMenuView(mTarget);
             mTarget.getStatsLogManager().logger().withItemInfo(mTaskView.getItemInfo())
@@ -405,7 +404,7 @@
             return InstantAppResolver.newInstance(activity).isInstantApp(
                     t.getTopComponent().getPackageName(), t.getKey().userId)
                     ? Collections.singletonList(new SystemShortcut.Install(activity,
-                            taskContainer.getItemInfo(), taskContainer.getTaskView()))
+                    taskContainer.getItemInfo(), taskContainer.getTaskView()))
                     : null;
         }
     };
@@ -425,9 +424,10 @@
         @Override
         public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
                 TaskIdAttributeContainer taskContainer) {
-            SystemShortcut screenshotShortcut = taskContainer.getThumbnailView().getTaskOverlay()
-                    .getScreenshotShortcut(activity, taskContainer.getItemInfo(),
-                            taskContainer.getTaskView());
+            SystemShortcut screenshotShortcut =
+                    taskContainer.getThumbnailView().getTaskOverlay()
+                            .getScreenshotShortcut(activity, taskContainer.getItemInfo(),
+                                    taskContainer.getTaskView());
             return createSingletonShortcutList(screenshotShortcut);
         }
     };
diff --git a/quickstep/src/com/android/quickstep/util/SystemWindowManagerProxy.java b/quickstep/src/com/android/quickstep/util/SystemWindowManagerProxy.java
index c82cdb7..348e4dc 100644
--- a/quickstep/src/com/android/quickstep/util/SystemWindowManagerProxy.java
+++ b/quickstep/src/com/android/quickstep/util/SystemWindowManagerProxy.java
@@ -18,6 +18,7 @@
 import static android.view.Display.DEFAULT_DISPLAY;
 
 import android.content.Context;
+import android.graphics.Rect;
 import android.util.ArrayMap;
 import android.view.Surface;
 import android.view.WindowManager;
@@ -41,6 +42,12 @@
     }
 
     @Override
+    public Rect getCurrentBounds(Context displayInfoContext) {
+        return displayInfoContext.getResources().getConfiguration().windowConfiguration
+                .getMaxBounds();
+    }
+
+    @Override
     public int getRotation(Context displayInfoContext) {
         return displayInfoContext.getResources().getConfiguration().windowConfiguration
                 .getRotation();
diff --git a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
index 17fa253..eced5a9 100644
--- a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
+++ b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
@@ -104,7 +104,7 @@
         Context context = instrumentation.getContext();
         mDevice = UiDevice.getInstance(instrumentation);
         mDevice.setOrientationNatural();
-        mLauncher = new LauncherInstrumentation();
+        mLauncher = AbstractLauncherUiTest.createLauncherInstrumentation();
         mLauncher.enableDebugTracing();
         // b/143488140
         //mLauncher.enableCheckEventsForSuccessfulGestures();
diff --git a/quickstep/tests/src/com/android/quickstep/RecentsAnimationDeviceStateTest.kt b/quickstep/tests/src/com/android/quickstep/RecentsAnimationDeviceStateTest.kt
new file mode 100644
index 0000000..53bc2a2
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/RecentsAnimationDeviceStateTest.kt
@@ -0,0 +1,144 @@
+package com.android.quickstep
+
+import android.content.Context
+import android.testing.AndroidTestingRunner
+import android.view.Display
+import android.view.IWindowManager
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.filters.SmallTest
+import com.android.launcher3.util.DisplayController.CHANGE_DENSITY
+import com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE
+import com.android.launcher3.util.DisplayController.CHANGE_ROTATION
+import com.android.launcher3.util.DisplayController.Info
+import com.android.launcher3.util.Executors
+import com.android.launcher3.util.NavigationMode
+import com.android.launcher3.util.window.WindowManagerProxy
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.Mockito.reset
+import org.mockito.Mockito.verify
+import org.mockito.MockitoAnnotations
+import org.mockito.kotlin.verifyZeroInteractions
+import org.mockito.kotlin.whenever
+
+/** Unit test for [RecentsAnimationDeviceState]. */
+@SmallTest
+@RunWith(AndroidTestingRunner::class)
+class RecentsAnimationDeviceStateTest {
+
+    @Mock private lateinit var windowManager: IWindowManager
+    @Mock private lateinit var windowManagerProxy: WindowManagerProxy
+    @Mock private lateinit var info: Info
+
+    private val context = ApplicationProvider.getApplicationContext() as Context
+    private lateinit var underTest: RecentsAnimationDeviceState
+
+    @Before
+    fun setup() {
+        MockitoAnnotations.initMocks(this)
+        underTest = RecentsAnimationDeviceState(context, windowManager)
+    }
+
+    @Test
+    fun registerExclusionListener_success() {
+        underTest.registerExclusionListener()
+
+        awaitTasksCompleted()
+        verify(windowManager)
+            .registerSystemGestureExclusionListener(
+                underTest.mGestureExclusionListener,
+                Display.DEFAULT_DISPLAY
+            )
+    }
+
+    @Test
+    fun registerExclusionListener_again_fail() {
+        underTest.registerExclusionListener()
+        awaitTasksCompleted()
+        reset(windowManager)
+
+        underTest.registerExclusionListener()
+
+        awaitTasksCompleted()
+        verifyZeroInteractions(windowManager)
+    }
+
+    @Test
+    fun unregisterExclusionListener_success() {
+        underTest.registerExclusionListener()
+        awaitTasksCompleted()
+        reset(windowManager)
+
+        underTest.unregisterExclusionListener()
+
+        awaitTasksCompleted()
+        verify(windowManager)
+            .unregisterSystemGestureExclusionListener(
+                underTest.mGestureExclusionListener,
+                Display.DEFAULT_DISPLAY
+            )
+    }
+
+    @Test
+    fun unregisterExclusionListener_again_fail() {
+        underTest.registerExclusionListener()
+        underTest.unregisterExclusionListener()
+        awaitTasksCompleted()
+        reset(windowManager)
+
+        underTest.unregisterExclusionListener()
+
+        awaitTasksCompleted()
+        verifyZeroInteractions(windowManager)
+    }
+
+    @Test
+    fun onDisplayInfoChanged_noButton_registerExclusionListener() {
+        whenever(windowManagerProxy.getNavigationMode(context)).thenReturn(NavigationMode.NO_BUTTON)
+
+        underTest.onDisplayInfoChanged(context, info, CHANGE_ROTATION or CHANGE_NAVIGATION_MODE)
+
+        awaitTasksCompleted()
+        verify(windowManager)
+            .registerSystemGestureExclusionListener(
+                underTest.mGestureExclusionListener,
+                Display.DEFAULT_DISPLAY
+            )
+    }
+
+    @Test
+    fun onDisplayInfoChanged_twoButton_unregisterExclusionListener() {
+        underTest.registerExclusionListener()
+        awaitTasksCompleted()
+        whenever(info.getNavigationMode()).thenReturn(NavigationMode.TWO_BUTTONS)
+        reset(windowManager)
+
+        underTest.onDisplayInfoChanged(context, info, CHANGE_ROTATION or CHANGE_NAVIGATION_MODE)
+
+        awaitTasksCompleted()
+        verify(windowManager)
+            .unregisterSystemGestureExclusionListener(
+                underTest.mGestureExclusionListener,
+                Display.DEFAULT_DISPLAY
+            )
+    }
+
+    @Test
+    fun onDisplayInfoChanged_changeDensity_noOp() {
+        underTest.registerExclusionListener()
+        awaitTasksCompleted()
+        whenever(info.getNavigationMode()).thenReturn(NavigationMode.NO_BUTTON)
+        reset(windowManager)
+
+        underTest.onDisplayInfoChanged(context, info, CHANGE_DENSITY)
+
+        awaitTasksCompleted()
+        verifyZeroInteractions(windowManager)
+    }
+
+    private fun awaitTasksCompleted() {
+        Executors.UI_HELPER_EXECUTOR.submit<Any> { null }.get()
+    }
+}
diff --git a/quickstep/tests/src/com/android/quickstep/TaplOverviewIconAppChipMenuTest.java b/quickstep/tests/src/com/android/quickstep/TaplOverviewIconAppChipMenuTest.java
deleted file mode 100644
index 969da68..0000000
--- a/quickstep/tests/src/com/android/quickstep/TaplOverviewIconAppChipMenuTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2023 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 com.android.launcher3.Flags;
-import com.android.launcher3.InvariantDeviceProfile;
-
-import org.junit.After;
-import org.junit.Before;
-
-/**
- * Tests the Icon App Chip Menu in overview.
- *
- * <p>Same tests as TaplOverviewIconTest with the Flag FLAG_ENABLE_OVERVIEW_ICON_MENU enabled.
- * This class can be removed once FLAG_ENABLE_OVERVIEW_ICON_MENU is enabled by default.
- */
-public class TaplOverviewIconAppChipMenuTest extends TaplOverviewIconTest {
-
-    @Before
-    public void setUp() throws Exception {
-        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_OVERVIEW_ICON_MENU); // Call before super.setUp
-        super.setUp();
-        executeOnLauncher(launcher -> InvariantDeviceProfile.INSTANCE.get(launcher).onConfigChanged(
-                launcher));
-    }
-
-    @After
-    public void tearDown() {
-        mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_OVERVIEW_ICON_MENU);
-        executeOnLauncher(launcher -> InvariantDeviceProfile.INSTANCE.get(launcher).onConfigChanged(
-                launcher));
-    }
-}
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java b/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java
index d3bf56f..234fe63 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java
@@ -29,6 +29,9 @@
 import androidx.test.filters.LargeTest;
 import androidx.test.platform.app.InstrumentationRegistry;
 
+import com.android.launcher3.tapl.Overview;
+import com.android.launcher3.tapl.Taskbar;
+import com.android.launcher3.tapl.TaskbarAppIcon;
 import com.android.launcher3.ui.PortraitLandscapeRunner.PortraitLandscape;
 import com.android.launcher3.ui.TaplTestsLauncher3;
 import com.android.launcher3.util.rule.TestStabilityRule;
@@ -137,6 +140,31 @@
                         .hasMenuItem("Save app pair"));
     }
 
+    @Test
+    public void testSplitSingleTaskFromTaskbar() {
+        // Currently only tablets have Taskbar in Overview, so test is only active on tablets
+        assumeTrue(mLauncher.isTablet());
+
+        if (!mLauncher.getRecentTasks().isEmpty()) {
+            // Clear all recent tasks
+            mLauncher.goHome().switchToOverview().dismissAllTasks();
+        }
+
+        startAppFast(getAppPackageName());
+
+        Overview overview = mLauncher.goHome().switchToOverview();
+        if (mLauncher.isGridOnlyOverviewEnabled()) {
+            overview.getCurrentTask().tapMenu().tapSplitMenuItem();
+        } else {
+            overview.getOverviewActions().clickSplit();
+        }
+
+        Taskbar taskbar = overview.getTaskbar();
+        String firstAppName = taskbar.getIconNames().get(0);
+        TaskbarAppIcon firstApp = taskbar.getAppIcon(firstAppName);
+        firstApp.launchIntoSplitScreen();
+    }
+
     private void createAndLaunchASplitPair() {
         startTestActivity(2);
         startTestActivity(3);
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index dd966cc..a5983b9 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Deursoek jou tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Misluk: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privaat ruimte"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index bc2cc86..a6a1d24 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ጡባዊዎን ይፈልጉ"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"አልተሳካም፦ <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"የግል ቦታ"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"ትርፍ ፍሰት"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index a3e5889..95f6d10 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"البحث في جهازك اللوحي"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"تعذَّر <xliff:g id="WHAT">%1$s</xliff:g>."</string>
     <string name="private_space_label" msgid="2359721649407947001">"مساحة خاصة"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index f7c1b40..9b2b341 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"আপোনাৰ টেবলেটৰ বস্তু সন্ধান কৰক"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"বিফল: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"ব্যক্তিগত স্পে’চ"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"অ’ভাৰফ্ল’"</string>
 </resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 3b20be8..004d598 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Planşetinizi axtarın"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Alınmadı: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Şəxsi yer"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 4b7b663..8187b6e 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pretražite tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Nije uspelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privatni prostor"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Preklopno"</string>
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 4616b8e..31c5cd0 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Пошук на планшэце"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Не ўдалося: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Прыватная вобласць"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index c4be1f4..4fb4848 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Търсене в таблета ви"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Неуспешно: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Лично пространство"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index a4dce63..324bfbc 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"আপনার ট্যাবলেটে সার্চ করুন"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"কাজটি করা যায়নি: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"ব্যক্তিগত স্পেস"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 9d7419f..2e90423 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pretražite tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Nije uspjelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privatan prostor"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Preklopni meni"</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index fedea5d..7796a9f 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Cerca a la tauleta"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Error: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Espai privat"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index c721f56..ddb4cca 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Vyhledávání na tabletu"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Selhalo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Soukromý prostor"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Rozbalovací nabídka"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 5c0423a..5127abb 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Søg på din tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Mislykket: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privat rum"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 40f1c74..0050f2c 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Auf dem Tablet suchen"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Fehler: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privater Bereich"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Weitere Optionen"</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index cc5d0bd..4a6338a 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Αναζήτηση στο tablet σας"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Αποτυχία: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Ιδιωτικός χώρος"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Υπερχείλιση"</string>
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 9b0cde6..6c5ef3d 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Private space"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Overflow"</string>
 </resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index c78355a..250de73 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Private space"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Overflow"</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 9b0cde6..6c5ef3d 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Private space"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Overflow"</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 9b0cde6..6c5ef3d 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Private space"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Overflow"</string>
 </resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 9aaf4d2..d05c553 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‏‏‎‎‏‎‎‏‎‎‏‏‎‏‎‎‎‏‎‏‏‏‎‏‎‎‎‏‏‏‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‎‎‏‎‏‎‏‏‏‎Search your tablet‎‏‎‎‏‎"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‏‎‏‎‎‎‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‎‎‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎‏‎‏‏‎‎Failed: ‎‏‎‎‏‏‎<xliff:g id="WHAT">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="private_space_label" msgid="2359721649407947001">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‎‏‎‏‏‎‎‏‏‏‏‎‎‏‏‏‎‎‎‎‏‎‎‏‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎Private space‎‏‎‎‏‎"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‏‏‎‎‏‎‎‏‎‎‏‎‏‎‎‏‎‏‎‏‏‏‏‎‏‎‎‎‏‎‎‏‎‏‏‎‎‏‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‎Overflow‎‏‎‎‏‎"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 3d830c4..f6c8a27 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Busca en tu tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Error: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Espacio privado"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Ampliada"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index cb35617..d607d45 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Buscar en tu tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Se ha producido un error: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Espacio privado"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 60a0a04..0946ba6 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Otsimine tahvelarvutist"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Nurjus: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privaatne ruum"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 4f4645f..f0acbb8 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Bilatu tabletan"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Huts egin du: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Eremu pribatua"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 3129c10..18ebbfc 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"جستجوی رایانه لوحی"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ناموفق بود: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"فضای خصوصی"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"سرریز"</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 9147b36..50d5af6 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Hae tabletilta"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Epäonnistui: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Yksityinen tila"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index b739c95..4791aa1 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Rechercher sur votre tablette"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Échec : <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Espace privé"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index eca5f51..62f9aa8 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Rechercher sur votre tablette"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Échec : <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Espace privé"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Dépassement"</string>
 </resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 82edb6d..346d46f 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Facer buscas na tableta"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Erro: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Espazo privado"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index ca79a3f..36cb129 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"તમારું ટૅબ્લેટ શોધો"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"નિષ્ફળ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"ખાનગી સ્પેસ"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"ઓવરફ્લો"</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index d1ea837..ea53a5c 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"अपने टैबलेट में खोजें"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"पूरा नहीं हुआ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"प्राइवेट स्पेस"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"ओवरफ़्लो"</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 90f36b9..7dc7923 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pretraživanje tableta"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Nije uspjelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privatni prostor"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Dodatni izbornik"</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index bae2c81..afeb7c0 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Keresés a táblagépen"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Sikertelen: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privát terület"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Túlcsordulás"</string>
 </resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 76857db..44be7e3 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Որոնում պլանշետում"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Չհաջողվեց կատարել գործողությունը (<xliff:g id="WHAT">%1$s</xliff:g>)"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Անձնական տարածք"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 8301a5d..3a8347c 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Telusuri di tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Gagal: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Ruang pribadi"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 5bd6356..cb493a8 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Leita í spjaldtölvunni"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Mistókst: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Einkarými"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index dd385c3..4bd1661 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Ricerche sul tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Operazione non riuscita: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Spazio privato"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 1eb4f4e..5c2fe1a 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"חיפוש בטאבלט"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"הפעולה נכשלה: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"מרחב פרטי"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 35d97a9..402d2b6 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"タブレットを探す"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"失敗: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"プライベート スペース"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"オーバーフロー"</string>
 </resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index b4af601..17358b6 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ძიება თქვენს ტაბლეტში"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ვერ მოხერხდა: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"პირადი სივრცე"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 9c15ca4..bc9d3d7 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Планшеттен іздеу"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Қате шықты: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Жеке бөлме"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 363690c..004dbb5 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ស្វែងរកក្នុង​ថេប្លេតរបស់អ្នក"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"បានបរាជ័យ៖ <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"បន្ទប់​ឯកជន"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"ម៉ឺនុយបន្ថែម"</string>
 </resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 88aeab5..2d8a04c 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಅನ್ನು ಹುಡುಕಿ"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ವಿಫಲವಾಗಿದೆ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"ಖಾಸಗಿ ಸ್ಪೇಸ್"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"ಓವರ್‌ಫ್ಲೋ"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 1f92b4d..8fc3367 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"태블릿 속 항목 검색"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"실패: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"비공개 스페이스"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index aa24cdd..5a695bc 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Планшетте издөө"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Аткарылган жок: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Жеке чөйрө"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index dfa4d48..6ef6912 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ຊອກຫາແທັບເລັດຂອງທ່ານ"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ບໍ່ສຳເລັດ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"ພື້ນທີ່ສ່ວນຕົວ"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index d8e4b0c..2066aca 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Paieška planšetiniame kompiuteryje"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Nepavyko: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privati erdvė"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index f2b63c2..a4e8f1c 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Meklēšana planšetdatorā"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Neizdevās: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privātā telpa"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 5b7973a..67f3597 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Пребарување низ таблетот"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Не успеа: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Приватен простор"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 5507eb7..b0a3bee 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"നിങ്ങളുടെ ടാബ്‌ലെറ്റിലുള്ളവ തിരയുക"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"പരാജയപ്പെട്ടു: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"സ്വകാര്യ സ്പേസ്"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"ഓവർഫ്ലോ"</string>
 </resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 2cc2ae3..85e4671 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Таблетнаасаа хайх"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Амжилтгүй болсон: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Хувийн орон зай"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index c0beed2..baf8363 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"तुमच्या टॅबलेटमध्ये शोधा"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"हे करता आले नाही: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"खाजगी स्पेस"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"ओव्हरफ्लो"</string>
 </resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 8ec5ba0..8aec20b 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Cari pada tablet anda"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Gagal: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Ruang peribadi"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Limpahan"</string>
 </resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 1463620..1ff0027 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"သင့်တက်ဘလက်ကို ရှာခြင်း"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"မအောင်မြင်ပါ− <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"သီးသန့်ချတ်ခန်း"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 90ff503..05f52d9 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Søk på nettbrettet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Mislyktes: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privat område"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Overflyt"</string>
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index e02bf66..a88b53d 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"आफ्नो ट्याबलेटमा खोज्नुहोस्"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"कार्य पूरा गर्न सकिएन: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"निजी स्पेस"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"ओभरफ्लो"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index f143c1e..fc63880 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Zoeken op je tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Mislukt: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privéruimte"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Overloop"</string>
 </resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 4bf50fa..7b69370 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ଆପଣଙ୍କ ଟାବଲେଟରେ ସନ୍ଧାନ କରନ୍ତୁ"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ବିଫଳ ହୋଇଛି: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"ପ୍ରାଇଭେଟ ସ୍ପେସ"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"ଓଭରଫ୍ଲୋ"</string>
 </resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 0d9848e..e56f5a3 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ਆਪਣਾ ਟੈਬਲੈੱਟ ਖੋਜੋ"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ਇਹ ਕਾਰਵਾਈ ਅਸਫਲ ਹੋਈ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"ਨਿੱਜੀ ਸਪੇਸ"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"ਓਵਰਫ਼ਲੋ"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index faf5dfa..92eba6a 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Przeszukuj tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Niepowodzenie: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Obszar prywatny"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 1b3a8de..d7e3ded 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pesquise no tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Falhou: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Espaço privado"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Menu adicional"</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index ec0c02c..f14da2d 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pesquisar no tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Falha: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Espaço particular"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Balão flutuante"</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 648f7e9..a9d6cf2 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Caută pe tabletă"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Eșuare: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Spațiu privat"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 5918868..8ca058c 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Поиск на планшете"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Не удалось выполнить действие (<xliff:g id="WHAT">%1$s</xliff:g>)."</string>
     <string name="private_space_label" msgid="2359721649407947001">"Личное пространство"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index f7cd68b..f935dba 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ඔබගේ ටැබ්ලටය සොයන්න"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"අසාර්ථකයි: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"පෞද්ගලික ඉඩ"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index b519127..1fc9b7a 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Vyhľadávanie v tablete"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Zlyhalo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Súkromný priestor"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 78c8b55..a66367e 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Iskanje po tabličnem računalniku"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Ni uspelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Zasebni prostor"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 95ec874..b494b98 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Kërko në tabletin tënd"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Dështoi: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Hapësira private"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index d58af08..3788dff 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Претражите таблет"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Није успело: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Приватни простор"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Преклопно"</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 9cf1001..729fadc 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Sök på surfplattan"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Misslyckades: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Privat rum"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 1797dd3..70988f3 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Tafuta kwenye kompyuta kibao yako"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Hitilafu: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Nafasi ya faragha"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Menyu ya vipengee vya ziada"</string>
 </resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index c81f62a..1f34674 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"உங்கள் டேப்லெட்டில் தேடுதல்"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"தோல்வி: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"தனிப்பட்ட சேமிப்பிடம்"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 6cfdd0b..de2b023 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"మీ టాబ్లెట్‌లో సెర్చ్ చేయండి"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"విఫలమైంది: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"ప్రైవేట్ స్పేస్"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 4bfccaa..fbe6439 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ค้นหาในแท็บเล็ต"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ไม่สำเร็จ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"พื้นที่ส่วนตัว"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"การดำเนินการเพิ่มเติม"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 05af221..b23bcd5 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Maghanap sa iyong tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Hindi nagawa: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Pribadong space"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Overflow"</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index ec24a9d..547fdbb 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Tabletinizde arama yapma"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Başarısız: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Gizli alan"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index c7b2f7f..85d0614 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Пошук на планшеті"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Не вдалося <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Приватний простір"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 857cf5b..7c437aa 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"اپنے ٹیبلیٹ پر تلاش کریں"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ناکام ہو گيا: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"نجی اسپیس"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"اوورفلو"</string>
 </resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 972a246..de822af 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Planshetingizni qidiring"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Xato: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Shaxsiy xona"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"Kengaytirish"</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index f720c8d..8d26f37 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Tìm kiếm trong máy tính bảng của bạn"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Không thực hiện được thao tác: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Không gian riêng tư"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 8c5bac0..add6a9b 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"平板电脑内搜索"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"失败:<xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"私密空间"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"菜单"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 02225a7..c21b8cb 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"搜尋平板電腦內容"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"操作失敗:<xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"私人空間"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"顯示更多"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 4483de4..b320715 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -176,6 +176,13 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"搜尋平板電腦內容"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"失敗:<xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"私人空間"</string>
-    <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
     <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
+    <string name="bubble_bar_overflow_description" msgid="7410995531938041192">"溢位"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 580a3be..b519ce6 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -176,6 +176,14 @@
     <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Sesha ithebulethi yakho"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Yehlulekile: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
     <string name="private_space_label" msgid="2359721649407947001">"Isikhala esiyimfihlo"</string>
+    <!-- no translation found for ps_container_title (4391796149519594205) -->
+    <skip />
+    <!-- no translation found for ps_container_settings (6059734123353320479) -->
+    <skip />
+    <!-- no translation found for ps_container_lock_unlock_button (7605602332253423755) -->
+    <skip />
+    <!-- no translation found for ps_container_transition (8667331812048014412) -->
+    <skip />
     <!-- no translation found for bubble_bar_overflow_description (7410995531938041192) -->
     <skip />
 </resources>
diff --git a/src/com/android/launcher3/ExtendedEditText.java b/src/com/android/launcher3/ExtendedEditText.java
index 8eab3e3..ec26f58 100644
--- a/src/com/android/launcher3/ExtendedEditText.java
+++ b/src/com/android/launcher3/ExtendedEditText.java
@@ -162,6 +162,15 @@
         }
     }
 
+    @Override
+    public void setText(CharSequence text, BufferType type) {
+        super.setText(text, type);
+        // With hardware keyboard, there is a possibility that the user types before edit
+        // text is visible during the transition.
+        // So move the cursor to the end of the text.
+        setSelection(getText().length());
+    }
+
     /**
      * This method should be preferred to {@link #setOnFocusChangeListener(OnFocusChangeListener)},
      * as it allows for multiple listeners from different sources.
diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java
index 75f4bb2..e5a6b2b 100644
--- a/src/com/android/launcher3/InvariantDeviceProfile.java
+++ b/src/com/android/launcher3/InvariantDeviceProfile.java
@@ -27,12 +27,12 @@
 
 import android.annotation.TargetApi;
 import android.content.Context;
-import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.content.res.XmlResourceParser;
 import android.graphics.Point;
 import android.graphics.PointF;
+import android.graphics.Rect;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
@@ -700,14 +700,11 @@
     }
 
     public DeviceProfile getDeviceProfile(Context context) {
-        Resources res = context.getResources();
-        Configuration config = context.getResources().getConfiguration();
+        WindowManagerProxy windowManagerProxy = WindowManagerProxy.INSTANCE.get(context);
+        Rect bounds = windowManagerProxy.getCurrentBounds(context);
+        int rotation = windowManagerProxy.getRotation(context);
 
-        float screenWidth = config.screenWidthDp * res.getDisplayMetrics().density;
-        float screenHeight = config.screenHeightDp * res.getDisplayMetrics().density;
-        int rotation = WindowManagerProxy.INSTANCE.get(context).getRotation(context);
-
-        return getBestMatch(screenWidth, screenHeight, rotation);
+        return getBestMatch(bounds.width(), bounds.height(), rotation);
     }
 
     /**
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 5a0cf9d..37b3e05 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -100,6 +100,7 @@
 import static com.android.launcher3.states.RotationHelper.REQUEST_NONE;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.ItemInfoMatcher.forFolderMatch;
+import static com.android.launcher3.util.SettingsCache.TOUCHPAD_NATURAL_SCROLLING;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -232,6 +233,7 @@
 import com.android.launcher3.util.RunnableList;
 import com.android.launcher3.util.ScreenOnTracker;
 import com.android.launcher3.util.ScreenOnTracker.ScreenOnListener;
+import com.android.launcher3.util.SettingsCache;
 import com.android.launcher3.util.SystemUiController;
 import com.android.launcher3.util.Themes;
 import com.android.launcher3.util.Thunk;
@@ -415,6 +417,11 @@
     private final List<BackPressHandler> mBackPressedHandlers = new ArrayList<>();
     private boolean mIsColdStartupAfterReboot;
 
+    private boolean mIsNaturalScrollingEnabled;
+
+    private final SettingsCache.OnChangeListener mNaturalScrollingChangedListener =
+            enabled -> mIsNaturalScrollingEnabled = enabled;
+
     public static Launcher getLauncher(Context context) {
         return fromContext(context);
     }
@@ -563,6 +570,10 @@
         }
         getRootView().dispatchInsets();
 
+        final SettingsCache settingsCache = SettingsCache.INSTANCE.get(this);
+        settingsCache.register(TOUCHPAD_NATURAL_SCROLLING, mNaturalScrollingChangedListener);
+        mIsNaturalScrollingEnabled = settingsCache.getValue(TOUCHPAD_NATURAL_SCROLLING);
+
         // Listen for screen turning off
         ScreenOnTracker.INSTANCE.get(this).addListener(mScreenOnListener);
         getSystemUiController().updateUiState(SystemUiController.UI_STATE_BASE_WINDOW,
@@ -1680,6 +1691,8 @@
         super.onDestroy();
         ACTIVITY_TRACKER.onActivityDestroyed(this);
 
+        SettingsCache.INSTANCE.get(this).unregister(TOUCHPAD_NATURAL_SCROLLING,
+                mNaturalScrollingChangedListener);
         ScreenOnTracker.INSTANCE.get(this).removeListener(mScreenOnListener);
         mWorkspace.removeFolderListeners();
         PluginManagerWrapper.INSTANCE.get(this).removePluginListener(this);
@@ -3181,6 +3194,10 @@
         return !isWorkspaceLoading();
     }
 
+    public boolean isNaturalScrollingEnabled() {
+        return mIsNaturalScrollingEnabled;
+    }
+
     public void setWaitingForResult(PendingRequestArgs args) {
         mPendingRequestArgs = args;
     }
diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java
index 34bfdb7..9a19526 100644
--- a/src/com/android/launcher3/LauncherAppState.java
+++ b/src/com/android/launcher3/LauncherAppState.java
@@ -25,6 +25,7 @@
 import static com.android.launcher3.model.LoaderTask.SMARTSPACE_ON_HOME_SCREEN;
 import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
 import static com.android.launcher3.util.SettingsCache.NOTIFICATION_BADGING_URI;
+import static com.android.launcher3.util.SettingsCache.PRIVATE_SPACE_HIDE_WHEN_LOCKED_URI;
 
 import android.content.ComponentName;
 import android.content.Context;
@@ -166,6 +167,8 @@
         onNotificationSettingsChanged(settingsCache.getValue(NOTIFICATION_BADGING_URI));
         mOnTerminateCallback.add(() ->
                 settingsCache.unregister(NOTIFICATION_BADGING_URI, notificationLister));
+        // Register an observer to notify Launcher about Private Space settings toggle.
+        registerPrivateSpaceHideWhenLockListener(settingsCache);
     }
 
     public LauncherAppState(Context context, @Nullable String iconCacheFileName) {
@@ -188,6 +191,18 @@
         }
     }
 
+    private void registerPrivateSpaceHideWhenLockListener(SettingsCache settingsCache) {
+        SettingsCache.OnChangeListener psHideWhenLockChangedListener =
+                this::onPrivateSpaceHideWhenLockChanged;
+        settingsCache.register(PRIVATE_SPACE_HIDE_WHEN_LOCKED_URI, psHideWhenLockChangedListener);
+        mOnTerminateCallback.add(() -> settingsCache.unregister(PRIVATE_SPACE_HIDE_WHEN_LOCKED_URI,
+                psHideWhenLockChangedListener));
+    }
+
+    private void onPrivateSpaceHideWhenLockChanged(boolean isPrivateSpaceHideOnLockEnabled) {
+        mModel.forceReload();
+    }
+
     private void refreshAndReloadLauncher() {
         LauncherIcons.clearPool();
         mIconCache.updateIconParams(
diff --git a/src/com/android/launcher3/LauncherPrefs.kt b/src/com/android/launcher3/LauncherPrefs.kt
index aa06089..fb58cbe 100644
--- a/src/com/android/launcher3/LauncherPrefs.kt
+++ b/src/com/android/launcher3/LauncherPrefs.kt
@@ -24,6 +24,10 @@
 import com.android.launcher3.BuildConfig.WIDGET_ON_FIRST_SCREEN
 import com.android.launcher3.LauncherFiles.DEVICE_PREFERENCES_KEY
 import com.android.launcher3.LauncherFiles.SHARED_PREFERENCES_KEY
+import com.android.launcher3.config.FeatureFlags.LPNH_HAPTIC_HINT_END_SCALE_PERCENT
+import com.android.launcher3.config.FeatureFlags.LPNH_HAPTIC_HINT_ITERATIONS
+import com.android.launcher3.config.FeatureFlags.LPNH_HAPTIC_HINT_SCALE_EXPONENT
+import com.android.launcher3.config.FeatureFlags.LPNH_HAPTIC_HINT_START_SCALE_PERCENT
 import com.android.launcher3.config.FeatureFlags.LPNH_SLOP_PERCENTAGE
 import com.android.launcher3.config.FeatureFlags.LPNH_TIMEOUT_MS
 import com.android.launcher3.model.DeviceGridState
@@ -327,28 +331,28 @@
         val LONG_PRESS_NAV_HANDLE_HAPTIC_HINT_START_SCALE_PERCENT =
                 nonRestorableItem(
                         "pref_long_press_nav_handle_haptic_hint_start_scale_percent",
-                        0,
+                        LPNH_HAPTIC_HINT_START_SCALE_PERCENT.get(),
                         EncryptionType.MOVE_TO_DEVICE_PROTECTED
                 )
         @JvmField
         val LONG_PRESS_NAV_HANDLE_HAPTIC_HINT_END_SCALE_PERCENT =
                 nonRestorableItem(
                         "pref_long_press_nav_handle_haptic_hint_end_scale_percent",
-                        100,
+                        LPNH_HAPTIC_HINT_END_SCALE_PERCENT.get(),
                         EncryptionType.MOVE_TO_DEVICE_PROTECTED
                 )
         @JvmField
         val LONG_PRESS_NAV_HANDLE_HAPTIC_HINT_SCALE_EXPONENT =
                 nonRestorableItem(
                         "pref_long_press_nav_handle_haptic_hint_scale_exponent",
-                        1,
+                        LPNH_HAPTIC_HINT_SCALE_EXPONENT.get(),
                         EncryptionType.MOVE_TO_DEVICE_PROTECTED
                 )
         @JvmField
         val LONG_PRESS_NAV_HANDLE_HAPTIC_HINT_ITERATIONS =
                 nonRestorableItem(
                         "pref_long_press_nav_handle_haptic_hint_iterations",
-                        50,
+                        LPNH_HAPTIC_HINT_ITERATIONS.get(),
                         EncryptionType.MOVE_TO_DEVICE_PROTECTED
                 )
         @JvmField
diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
index 7d52cbb..bd3740c 100644
--- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
@@ -16,6 +16,7 @@
 package com.android.launcher3.allapps;
 
 import static com.android.launcher3.Flags.enableExpandingPauseWorkButton;
+import static com.android.launcher3.allapps.ActivityAllAppsContainerView.AdapterHolder.MAIN;
 import static com.android.launcher3.allapps.ActivityAllAppsContainerView.AdapterHolder.SEARCH;
 import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_WORK_DISABLED_CARD;
 import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_WORK_EDU_CARD;
@@ -69,6 +70,7 @@
 import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
 import com.android.launcher3.DragSource;
 import com.android.launcher3.DropTarget.DragObject;
+import com.android.launcher3.Flags;
 import com.android.launcher3.Insettable;
 import com.android.launcher3.InsettableFrameLayout;
 import com.android.launcher3.R;
@@ -95,6 +97,7 @@
 import java.util.Arrays;
 import java.util.List;
 import java.util.function.Predicate;
+import java.util.stream.Stream;
 
 /**
  * All apps container view with search support for use in a dragging activity.
@@ -133,6 +136,7 @@
     protected final Predicate<ItemInfo> mPersonalMatcher = ItemInfoMatcher.ofUser(
             Process.myUserHandle());
     protected WorkProfileManager mWorkManager;
+    protected final PrivateProfileManager mPrivateProfileManager;
     protected final Point mFastScrollerOffset = new Point();
     protected final int mScrimColor;
     protected final float mHeaderThreshold;
@@ -175,6 +179,7 @@
     protected SearchAdapterProvider<?> mMainAdapterProvider;
     private View mBottomSheetHandleArea;
     private boolean mHasWorkApps;
+    private boolean mHasPrivateApps;
     private float[] mBottomSheetCornerRadii;
     private ScrimView mScrimView;
     private int mHeaderColor;
@@ -184,6 +189,8 @@
     private int mTabsProtectionAlpha;
     @Nullable private AllAppsTransitionController mAllAppsTransitionController;
 
+    private PrivateSpaceHeaderViewController mPrivateSpaceHeaderViewController;
+
     public ActivityAllAppsContainerView(Context context) {
         this(context, null);
     }
@@ -207,6 +214,11 @@
                 this,
                 mActivityContext.getStatsLogManager(),
                 UserCache.INSTANCE.get(mActivityContext));
+        mPrivateProfileManager = new PrivateProfileManager(
+                mActivityContext.getSystemService(UserManager.class),
+                this,
+                mActivityContext.getStatsLogManager(),
+                UserCache.INSTANCE.get(mActivityContext));
         mAH = Arrays.asList(null, null, null);
         mNavBarScrimPaint = new Paint();
         mNavBarScrimPaint.setColor(Themes.getNavBarScrimColor(mActivityContext));
@@ -246,13 +258,20 @@
      */
     protected void initContent() {
         mMainAdapterProvider = mSearchUiDelegate.createMainAdapterProvider();
+        if (Flags.enablePrivateSpace()) {
+            mPrivateSpaceHeaderViewController =
+                    new PrivateSpaceHeaderViewController(mPrivateProfileManager);
+        }
 
         mAH.set(AdapterHolder.MAIN, new AdapterHolder(AdapterHolder.MAIN,
-                new AlphabeticalAppsList<>(mActivityContext, mAllAppsStore, null)));
+                new AlphabeticalAppsList<>(mActivityContext,
+                        mAllAppsStore,
+                        null,
+                        mPrivateProfileManager)));
         mAH.set(AdapterHolder.WORK, new AdapterHolder(AdapterHolder.WORK,
-                new AlphabeticalAppsList<>(mActivityContext, mAllAppsStore, mWorkManager)));
+                new AlphabeticalAppsList<>(mActivityContext, mAllAppsStore, mWorkManager, null)));
         mAH.set(SEARCH, new AdapterHolder(SEARCH,
-                new AlphabeticalAppsList<>(mActivityContext, null, null)));
+                new AlphabeticalAppsList<>(mActivityContext, null, null, null)));
 
         getLayoutInflater().inflate(R.layout.all_apps_content, this);
         mHeader = findViewById(R.id.all_apps_header);
@@ -592,7 +611,7 @@
         } else {
             mainRecyclerView = findViewById(R.id.apps_list_view);
             workRecyclerView = null;
-            mAH.get(AdapterHolder.MAIN).setup(mainRecyclerView, null);
+            mAH.get(AdapterHolder.MAIN).setup(mainRecyclerView, mPersonalMatcher);
             mAH.get(AdapterHolder.WORK).mRecyclerView = null;
         }
         setUpCustomRecyclerViewPool(
@@ -860,7 +879,7 @@
 
     protected BaseAllAppsAdapter<T> createAdapter(AlphabeticalAppsList<T> appsList) {
         return new AllAppsGridAdapter<>(mActivityContext, getLayoutInflater(), appsList,
-                mMainAdapterProvider);
+                mMainAdapterProvider, mPrivateSpaceHeaderViewController);
     }
 
     // TODO(b/216683257): Remove when Taskbar All Apps supports search.
@@ -973,13 +992,19 @@
 
     @VisibleForTesting
     public void onAppsUpdated() {
-        mHasWorkApps = mWorkManager.hasWorkApps();
+        mHasWorkApps = Stream.of(mAllAppsStore.getApps())
+                .anyMatch(mWorkManager.getItemInfoMatcher());
+        mHasPrivateApps = Stream.of(mAllAppsStore.getApps())
+                .anyMatch(mPrivateProfileManager.getItemInfoMatcher());
         if (!isSearching()) {
             rebindAdapters();
         }
         if (mHasWorkApps) {
             mWorkManager.reset();
         }
+        if (mHasPrivateApps) {
+            mPrivateProfileManager.reset();
+        }
 
         mActivityContext.getStatsLogManager().logger()
                 .withCardinality(mAllAppsStore.getApps().length)
@@ -1245,6 +1270,10 @@
         return mAH.get(SEARCH).mAppsList;
     }
 
+    public AlphabeticalAppsList<T> getPersonalAppList() {
+        return mAH.get(MAIN).mAppsList;
+    }
+
     public FloatingHeaderView getFloatingHeaderView() {
         return mHeader;
     }
diff --git a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java
index df383bf..5f002b5 100644
--- a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java
+++ b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java
@@ -73,8 +73,9 @@
 
 
     public AllAppsGridAdapter(T activityContext, LayoutInflater inflater,
-            AlphabeticalAppsList apps, SearchAdapterProvider<?> adapterProvider) {
-        super(activityContext, inflater, apps, adapterProvider);
+            AlphabeticalAppsList apps, SearchAdapterProvider<?> adapterProvider,
+            PrivateSpaceHeaderViewController privateSpaceHeaderViewController) {
+        super(activityContext, inflater, apps, adapterProvider, privateSpaceHeaderViewController);
         mGridLayoutMgr = new AppsGridLayoutManager(mActivityContext);
         mGridLayoutMgr.setSpanSizeLookup(new GridSpanSizer());
         setAppsPerRow(activityContext.getDeviceProfile().numShownAllAppsColumns);
diff --git a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
index ee4b5bc..328516e 100644
--- a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
+++ b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
@@ -20,6 +20,7 @@
 import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.DiffUtil;
 
+import com.android.launcher3.Flags;
 import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
 import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.ItemInfo;
@@ -47,6 +48,8 @@
 
     private final WorkProfileManager mWorkProviderManager;
 
+    private final PrivateProfileManager mPrivateProviderManager;
+
     /**
      * Info about a fast scroller section, depending if sections are merged, the fast scroller
      * sections will not be the same set as the section headers.
@@ -68,6 +71,7 @@
 
     // The set of apps from the system
     private final List<AppInfo> mApps = new ArrayList<>();
+    private final List<AppInfo> mPrivateApps = new ArrayList<>();
     @Nullable
     private final AllAppsStore<T> mAllAppsStore;
 
@@ -87,11 +91,12 @@
     private Predicate<ItemInfo> mItemFilter;
 
     public AlphabeticalAppsList(Context context, @Nullable AllAppsStore<T> appsStore,
-            WorkProfileManager workProfileManager) {
+            WorkProfileManager workProfileManager, PrivateProfileManager privateProfileManager) {
         mAllAppsStore = appsStore;
         mActivityContext = ActivityContext.lookupContext(context);
         mAppNameComparator = new AppInfoComparator(context);
         mWorkProviderManager = workProfileManager;
+        mPrivateProviderManager = privateProfileManager;
         mNumAppsPerRowAllApps = mActivityContext.getDeviceProfile().numShownAllAppsColumns;
         if (mAllAppsStore != null) {
             mAllAppsStore.addUpdateListener(this);
@@ -197,12 +202,20 @@
         }
         // Sort the list of apps
         mApps.clear();
+        mPrivateApps.clear();
 
         Stream<AppInfo> appSteam = Stream.of(mAllAppsStore.getApps());
+        Stream<AppInfo> privateAppStream = Stream.of(mAllAppsStore.getApps());
+
         if (!hasSearchResults() && mItemFilter != null) {
             appSteam = appSteam.filter(mItemFilter);
+            if (mPrivateProviderManager != null) {
+                privateAppStream = privateAppStream
+                        .filter(mPrivateProviderManager.getItemInfoMatcher());
+            }
         }
         appSteam = appSteam.sorted(mAppNameComparator);
+        privateAppStream = privateAppStream.sorted(mAppNameComparator);
 
         // As a special case for some languages (currently only Simplified Chinese), we may need to
         // coalesce sections
@@ -221,6 +234,7 @@
         }
 
         appSteam.forEachOrdered(mApps::add);
+        privateAppStream.forEachOrdered(mPrivateApps::add);
         // Recompose the set of adapter items from the current set of apps
         if (mSearchResults.isEmpty()) {
             updateAdapterItems();
@@ -250,18 +264,10 @@
                 addApps = mWorkProviderManager.shouldShowWorkApps();
             }
             if (addApps) {
-                String lastSectionName = null;
-                for (AppInfo info : mApps) {
-                    mAdapterItems.add(AdapterItem.asApp(info));
-
-                    String sectionName = info.sectionName;
-                    // Create a new section if the section names do not match
-                    if (!sectionName.equals(lastSectionName)) {
-                        lastSectionName = sectionName;
-                        mFastScrollerSections.add(new FastScrollSectionInfo(sectionName, position));
-                    }
-                    position++;
-                }
+                addAppsWithSections(mApps, position);
+            }
+            if (Flags.enablePrivateSpace()) {
+                addPrivateSpaceItems(position);
             }
         }
         mAccessibilityResultsCount = (int) mAdapterItems.stream()
@@ -275,7 +281,8 @@
             int rowIndex = -1;
             for (AdapterItem item : mAdapterItems) {
                 item.rowIndex = 0;
-                if (BaseAllAppsAdapter.isDividerViewType(item.viewType)) {
+                if (BaseAllAppsAdapter.isDividerViewType(item.viewType)
+                        || BaseAllAppsAdapter.isPrivateSpaceHeaderView(item.viewType)) {
                     numAppsInSection = 0;
                 } else if (BaseAllAppsAdapter.isIconViewType(item.viewType)) {
                     if (numAppsInSection % mNumAppsPerRowAllApps == 0) {
@@ -297,6 +304,40 @@
         }
     }
 
+    void addPrivateSpaceItems(int position) {
+        if (mPrivateProviderManager != null
+                && !mPrivateProviderManager.isPrivateSpaceHidden()
+                && !mPrivateApps.isEmpty()) {
+            // Always add PS Header if Space is present and visible.
+            position += mPrivateProviderManager.addPrivateSpaceHeader(mAdapterItems);
+            int privateSpaceState = mPrivateProviderManager.getCurrentState();
+            switch (privateSpaceState) {
+                case PrivateProfileManager.STATE_DISABLED:
+                case PrivateProfileManager.STATE_TRANSITION:
+                    break;
+                case PrivateProfileManager.STATE_ENABLED:
+                    // Add PS Apps only in Enabled State.
+                    addAppsWithSections(mPrivateApps, position);
+                    break;
+            }
+        }
+    }
+
+    private void addAppsWithSections(List<AppInfo> appList, int startPosition) {
+        String lastSectionName = null;
+        for (AppInfo info : appList) {
+            mAdapterItems.add(AdapterItem.asApp(info));
+
+            String sectionName = info.sectionName;
+            // Create a new section if the section names do not match
+            if (!sectionName.equals(lastSectionName)) {
+                lastSectionName = sectionName;
+                mFastScrollerSections.add(new FastScrollSectionInfo(sectionName, startPosition));
+            }
+            startPosition++;
+        }
+    }
+
     private static class MyDiffCallback extends DiffUtil.Callback {
 
         private final List<AdapterItem> mOldList;
@@ -328,4 +369,4 @@
         }
     }
 
-}
+}
\ No newline at end of file
diff --git a/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java b/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java
index bce38a3..5e26ea5 100644
--- a/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java
+++ b/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java
@@ -22,6 +22,7 @@
 import android.view.View.OnFocusChangeListener;
 import android.view.View.OnLongClickListener;
 import android.view.ViewGroup;
+import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import androidx.recyclerview.widget.RecyclerView;
@@ -139,9 +140,16 @@
     protected final OnClickListener mOnIconClickListener;
     protected final OnLongClickListener mOnIconLongClickListener;
     protected OnFocusChangeListener mIconFocusListener;
+    private final PrivateSpaceHeaderViewController mPrivateSpaceHeaderViewController;
 
     public BaseAllAppsAdapter(T activityContext, LayoutInflater inflater,
             AlphabeticalAppsList<T> apps, SearchAdapterProvider<?> adapterProvider) {
+        this(activityContext, inflater, apps, adapterProvider, null);
+    }
+
+    public BaseAllAppsAdapter(T activityContext, LayoutInflater inflater,
+            AlphabeticalAppsList<T> apps, SearchAdapterProvider<?> adapterProvider,
+            PrivateSpaceHeaderViewController privateSpaceHeaderViewController) {
         mActivityContext = activityContext;
         mApps = apps;
         mLayoutInflater = inflater;
@@ -150,6 +158,7 @@
         mOnIconLongClickListener = mActivityContext.getAllAppsItemLongClickListener();
 
         mAdapterProvider = adapterProvider;
+        mPrivateSpaceHeaderViewController = privateSpaceHeaderViewController;
     }
 
     /** Checks if the passed viewType represents all apps divider. */
@@ -162,6 +171,11 @@
         return isViewType(viewType, VIEW_TYPE_MASK_ICON);
     }
 
+    /** Checks if the passed viewType represents private space header. */
+    public static boolean isPrivateSpaceHeaderView(int viewType) {
+        return isViewType(viewType, VIEW_TYPE_MASK_PRIVATE_SPACE_HEADER);
+    }
+
     public void setIconFocusListener(OnFocusChangeListener focusListener) {
         mIconFocusListener = focusListener;
     }
@@ -230,6 +244,12 @@
                 break;
             }
             case VIEW_TYPE_PRIVATE_SPACE_HEADER:
+                RelativeLayout psHeaderLayout = holder.itemView.findViewById(
+                        R.id.ps_header_layout);
+                assert mPrivateSpaceHeaderViewController != null;
+                assert psHeaderLayout != null;
+                mPrivateSpaceHeaderViewController.addPrivateSpaceHeaderViewElements(psHeaderLayout);
+                break;
             case VIEW_TYPE_ALL_APPS_DIVIDER:
             case VIEW_TYPE_WORK_DISABLED_CARD:
                 // nothing to do
diff --git a/src/com/android/launcher3/allapps/PrivateAppsSectionDecorator.java b/src/com/android/launcher3/allapps/PrivateAppsSectionDecorator.java
index f7c9058..f4ed754 100644
--- a/src/com/android/launcher3/allapps/PrivateAppsSectionDecorator.java
+++ b/src/com/android/launcher3/allapps/PrivateAppsSectionDecorator.java
@@ -42,20 +42,19 @@
     private final RectF mTmpRect = new RectF();
     private final Context mContext;
     private final AlphabeticalAppsList<?> mAppsList;
-    private final PrivateProfileManager mPrivateProfileManager;
     private final UserCache mUserCache;
     private final Paint mPaint;
+    private final int mCornerRadius;
 
-    public PrivateAppsSectionDecorator(ActivityAllAppsContainerView<?> appsContainerView,
-            AlphabeticalAppsList<?> appsList,
-            PrivateProfileManager privateProfileManager) {
+    public PrivateAppsSectionDecorator(Context context, AlphabeticalAppsList<?> appsList) {
+        mContext = context;
         mAppsList = appsList;
-        mPrivateProfileManager = privateProfileManager;
-        mContext = appsContainerView.mActivityContext;
-        mUserCache = UserCache.getInstance(appsContainerView.mActivityContext);
+        mUserCache = UserCache.getInstance(context);
         mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
-        mPaint.setColor(ContextCompat.getColor(mContext,
+        mPaint.setColor(ContextCompat.getColor(context,
                 R.color.material_color_surface_container_high));
+        mCornerRadius = context.getResources().getDimensionPixelSize(
+                R.dimen.ps_container_corner_radius);
     }
 
     /** Decorates Private Space Header and Icon Rows to give the shape of a container. */
@@ -70,9 +69,7 @@
             int position = parent.getChildAdapterPosition(view);
             BaseAllAppsAdapter.AdapterItem adapterItem = mAppsList.getAdapterItems().get(position);
             // Rectangle that covers the bottom half of the PS Header View when Space is unlocked.
-            if (adapterItem.viewType == VIEW_TYPE_PRIVATE_SPACE_HEADER
-                    && mPrivateProfileManager
-                    .getCurrentState() == PrivateProfileManager.STATE_ENABLED) {
+            if (adapterItem.viewType == VIEW_TYPE_PRIVATE_SPACE_HEADER) {
                 // We flatten the bottom corners of the rectangle, so that it merges with
                 // the private space app row decorator.
                 mTmpRect.set(
@@ -103,9 +100,8 @@
                 iconView.getBottom());
         // Decorates last app row with rounded bottom corners.
         if (adapterPosition + numCol >= mAppsList.getAdapterItems().size()) {
-            int corner = mContext.getResources().getDimensionPixelSize(
-                    R.dimen.ps_container_corner_radius);
-            float[] mCornersBot = new float[]{0, 0, 0, 0, corner, corner, corner, corner};
+            float[] mCornersBot = new float[]{0, 0, 0, 0, mCornerRadius, mCornerRadius,
+                    mCornerRadius, mCornerRadius};
             mTmpPath.addRoundRect(mTmpRect, mCornersBot, Path.Direction.CW);
         } else {
             // Decorate other rows as a plain rectangle
diff --git a/src/com/android/launcher3/allapps/PrivateProfileManager.java b/src/com/android/launcher3/allapps/PrivateProfileManager.java
index ec01aee..3e73c6a 100644
--- a/src/com/android/launcher3/allapps/PrivateProfileManager.java
+++ b/src/com/android/launcher3/allapps/PrivateProfileManager.java
@@ -19,6 +19,7 @@
 import static com.android.launcher3.allapps.ActivityAllAppsContainerView.AdapterHolder.MAIN;
 import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_PRIVATE_SPACE_HEADER;
 import static com.android.launcher3.model.BgDataModel.Callbacks.FLAG_PRIVATE_PROFILE_QUIET_MODE_ENABLED;
+import static com.android.launcher3.util.SettingsCache.PRIVATE_SPACE_HIDE_WHEN_LOCKED_URI;
 
 import android.content.Intent;
 import android.content.pm.PackageManager;
@@ -29,6 +30,7 @@
 import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.pm.UserCache;
 import com.android.launcher3.util.Preconditions;
+import com.android.launcher3.util.SettingsCache;
 
 import java.util.ArrayList;
 import java.util.function.Predicate;
@@ -44,11 +46,12 @@
     private static final String PS_SETTINGS_FRAGMENT_VALUE = "AndroidPrivateSpace_personal";
     private final ActivityAllAppsContainerView<?> mAllApps;
     private final Predicate<UserHandle> mPrivateProfileMatcher;
+    private PrivateAppsSectionDecorator mPrivateAppsSectionDecorator;
 
     public PrivateProfileManager(UserManager userManager,
-            UserCache userCache,
-            ActivityAllAppsContainerView allApps,
-            StatsLogManager statsLogManager) {
+            ActivityAllAppsContainerView<?> allApps,
+            StatsLogManager statsLogManager,
+            UserCache userCache) {
         super(userManager, statsLogManager, userCache);
         mAllApps = allApps;
         mPrivateProfileMatcher = (user) -> userCache.getUserInfo(user).isPrivate();
@@ -75,9 +78,8 @@
 
     /** Whether private profile should be hidden on Launcher. */
     public boolean isPrivateSpaceHidden() {
-        // TODO (b/289223923): Update this when we are able to read PsSettingsFlag
-        //  from SettingsProvider.
-        return false;
+        return getCurrentState() == STATE_DISABLED && SettingsCache.INSTANCE
+                    .get(mAllApps.mActivityContext).getValue(PRIVATE_SPACE_HIDE_WHEN_LOCKED_URI, 0);
     }
 
     /** Resets the current state of Private Profile, w.r.t. to Launcher. */
@@ -86,6 +88,7 @@
                 .hasModelFlag(FLAG_PRIVATE_PROFILE_QUIET_MODE_ENABLED);
         int updatedState = isEnabled ? STATE_ENABLED : STATE_DISABLED;
         setCurrentState(updatedState);
+        resetPrivateSpaceDecorator(updatedState);
     }
 
     /** Opens the Private Space Settings Entry Point. */
@@ -102,11 +105,29 @@
         Preconditions.assertNonUiThread();
         Intent psSettingsIntent = new Intent(SAFETY_CENTER_INTENT);
         psSettingsIntent.putExtra(PS_SETTINGS_FRAGMENT_KEY, PS_SETTINGS_FRAGMENT_VALUE);
-        ResolveInfo resolveInfo = mAllApps.getContext().getPackageManager()
+        ResolveInfo resolveInfo = mAllApps.mActivityContext.getPackageManager()
                 .resolveActivity(psSettingsIntent, PackageManager.MATCH_SYSTEM_ONLY);
         return resolveInfo != null;
     }
 
+    void resetPrivateSpaceDecorator(int updatedState) {
+        if (updatedState == STATE_ENABLED) {
+            // Add Private Space Decorator to the Recycler view.
+            if (mPrivateAppsSectionDecorator == null) {
+                mPrivateAppsSectionDecorator = new PrivateAppsSectionDecorator(
+                        mAllApps.mActivityContext,
+                        mAllApps.mAH.get(MAIN).mAppsList);
+            }
+            mAllApps.mAH.get(MAIN).mRecyclerView.addItemDecoration(mPrivateAppsSectionDecorator);
+        } else {
+            // Remove Private Space Decorator from the Recycler view.
+            if (mPrivateAppsSectionDecorator != null) {
+                mAllApps.mAH.get(MAIN).mRecyclerView
+                        .removeItemDecoration(mPrivateAppsSectionDecorator);
+            }
+        }
+    }
+
     /** Posts quiet mode enable/disable call for private profile. */
     private void enableQuietMode(boolean enable) {
         setQuietMode(enable);
diff --git a/src/com/android/launcher3/allapps/PrivateSpaceHeaderViewController.java b/src/com/android/launcher3/allapps/PrivateSpaceHeaderViewController.java
index 9420b4c..c49d0b1 100644
--- a/src/com/android/launcher3/allapps/PrivateSpaceHeaderViewController.java
+++ b/src/com/android/launcher3/allapps/PrivateSpaceHeaderViewController.java
@@ -19,6 +19,7 @@
 import static com.android.launcher3.allapps.PrivateProfileManager.STATE_DISABLED;
 import static com.android.launcher3.allapps.PrivateProfileManager.STATE_ENABLED;
 import static com.android.launcher3.allapps.PrivateProfileManager.STATE_TRANSITION;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 
 import android.view.View;
 import android.widget.ImageButton;
@@ -49,7 +50,7 @@
         //Add image and action for private space settings button
         ImageButton settingsButton = parent.findViewById(R.id.ps_settings_button);
         assert settingsButton != null;
-        addPrivateSpaceSettingsButton(settingsButton);
+        UI_HELPER_EXECUTOR.post(() -> addPrivateSpaceSettingsButton(settingsButton));
 
         //Add image for private space transitioning view
         ImageView transitionView = parent.findViewById(R.id.ps_transition_image);
diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java
index 51eb363..7d9f709 100644
--- a/src/com/android/launcher3/config/FeatureFlags.java
+++ b/src/com/android/launcher3/config/FeatureFlags.java
@@ -286,6 +286,22 @@
             getReleaseFlag(303023676, "ENABLE_SEARCH_HAPTIC_HINT", ENABLED,
                     "Enables haptic hint when long pressing on the bottom bar nav handle.");
 
+    public static final IntFlag LPNH_HAPTIC_HINT_START_SCALE_PERCENT =
+            getIntFlag(309972570, "FLAG_LPNH_HAPTIC_HINT_START_SCALE_PERCENT", 0,
+            "Haptic hint start scale.");
+
+    public static final IntFlag LPNH_HAPTIC_HINT_END_SCALE_PERCENT =
+            getIntFlag(309972570, "FLAG_LPNH_HAPTIC_HINT_END_SCALE_PERCENT", 100,
+            "Haptic hint end scale.");
+
+    public static final IntFlag LPNH_HAPTIC_HINT_SCALE_EXPONENT =
+            getIntFlag(309972570, "FLAG_LPNH_HAPTIC_HINT_SCALE_EXPONENT", 1,
+            "Haptic hint scale exponent.");
+
+    public static final IntFlag LPNH_HAPTIC_HINT_ITERATIONS =
+            getIntFlag(309972570, "FLAG_LPNH_HAPTIC_HINT_ITERATIONS", 50,
+            "Haptic hint number of iterations.");
+
     // TODO(Block 17): Clean up flags
     // Aconfig migration complete for ENABLE_TASKBAR_PINNING.
     private static final BooleanFlag ENABLE_TASKBAR_PINNING = getDebugFlag(270396583,
diff --git a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java
index cec4574..9aed4eb 100644
--- a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java
+++ b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java
@@ -22,6 +22,7 @@
 import static com.android.launcher3.LauncherState.ALL_APPS;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.LauncherState.OVERVIEW;
+import static com.android.launcher3.MotionEventsUtils.isTrackpadScroll;
 import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_ALLAPPS;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME;
@@ -68,6 +69,7 @@
     protected boolean mGoingBetweenStates = true;
     // Ratio of transition process [0, 1] to drag displacement (px)
     protected float mProgressMultiplier;
+    protected boolean mIsTrackpadReverseScroll;
 
     private boolean mNoIntercept;
     private boolean mIsLogContainerSet;
@@ -92,6 +94,9 @@
                 return false;
             }
 
+            mIsTrackpadReverseScroll = !mLauncher.isNaturalScrollingEnabled()
+                    && isTrackpadScroll(ev);
+
             // Now figure out which direction scroll events the controller will start
             // calling the callbacks.
             final int directionsToDetectScroll;
@@ -248,6 +253,11 @@
             }
             mIsLogContainerSet = true;
         }
+        // Only reverse the gesture to open all apps (not close) when trackpad reverse scrolling is
+        // on.
+        if (mIsTrackpadReverseScroll && mStartState == NORMAL) {
+            displacement = -displacement;
+        }
         return onDrag(displacement);
     }
 
@@ -274,6 +284,11 @@
             return;
         }
 
+        // Only reverse the gesture to open all apps (not close) when trackpad reverse scrolling is
+        // on.
+        if (mIsTrackpadReverseScroll && mStartState == NORMAL) {
+            velocity = -velocity;
+        }
         boolean fling = mDetector.isFling(velocity);
 
         boolean blockedFling = fling && mFlingBlockCheck.isBlocked();
@@ -412,9 +427,15 @@
         mGoingBetweenStates = true;
         mDetector.finishedScrolling();
         mDetector.setDetectableScrollConditions(0, false);
+        mIsTrackpadReverseScroll = false;
     }
 
     private void cancelAnimationControllers() {
         mCurrentAnimation = null;
     }
+
+    protected boolean shouldOpenAllApps(boolean isDragTowardPositive) {
+        return (isDragTowardPositive && !mIsTrackpadReverseScroll)
+                || (!isDragTowardPositive && mIsTrackpadReverseScroll);
+    }
 }
diff --git a/src/com/android/launcher3/touch/AllAppsSwipeController.java b/src/com/android/launcher3/touch/AllAppsSwipeController.java
index 447d22b..8b9bc19 100644
--- a/src/com/android/launcher3/touch/AllAppsSwipeController.java
+++ b/src/com/android/launcher3/touch/AllAppsSwipeController.java
@@ -166,7 +166,7 @@
 
     @Override
     protected LauncherState getTargetState(LauncherState fromState, boolean isDragTowardPositive) {
-        if (fromState == NORMAL && isDragTowardPositive) {
+        if (fromState == NORMAL && shouldOpenAllApps(isDragTowardPositive)) {
             return ALL_APPS;
         } else if (fromState == ALL_APPS && !isDragTowardPositive) {
             return NORMAL;
diff --git a/src/com/android/launcher3/util/DisplayController.java b/src/com/android/launcher3/util/DisplayController.java
index 0470971..4c83668 100644
--- a/src/com/android/launcher3/util/DisplayController.java
+++ b/src/com/android/launcher3/util/DisplayController.java
@@ -431,6 +431,11 @@
             return smallestSizeDp(bounds) >= MIN_TABLET_WIDTH;
         }
 
+        /** Getter for {@link #navigationMode} to allow mocking. */
+        public NavigationMode getNavigationMode() {
+            return navigationMode;
+        }
+
         /**
          * Returns smallest size in dp for given bounds.
          */
diff --git a/src/com/android/launcher3/util/SettingsCache.java b/src/com/android/launcher3/util/SettingsCache.java
index 29ec5ab..ccd154a 100644
--- a/src/com/android/launcher3/util/SettingsCache.java
+++ b/src/com/android/launcher3/util/SettingsCache.java
@@ -55,8 +55,14 @@
     /** Hidden field Settings.Secure.SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED */
     public static final String ONE_HANDED_SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED =
             "swipe_bottom_to_notification_enabled";
+    /** Hidden field Settings.Secure.HIDE_PRIVATESPACE_ENTRY_POINT */
+    public static final Uri PRIVATE_SPACE_HIDE_WHEN_LOCKED_URI =
+            Settings.Secure.getUriFor("hide_privatespace_entry_point");
     public static final Uri ROTATION_SETTING_URI =
             Settings.System.getUriFor(ACCELEROMETER_ROTATION);
+    /** Hidden field {@link Settings.System#TOUCHPAD_NATURAL_SCROLLING}. */
+    public static final Uri TOUCHPAD_NATURAL_SCROLLING = Settings.System.getUriFor(
+            "touchpad_natural_scrolling");
 
     private static final String SYSTEM_URI_PREFIX = Settings.System.CONTENT_URI.toString();
     private static final String GLOBAL_URI_PREFIX = Settings.Global.CONTENT_URI.toString();
diff --git a/src/com/android/launcher3/util/WindowBounds.java b/src/com/android/launcher3/util/WindowBounds.java
index ec3b642..84a3e7a 100644
--- a/src/com/android/launcher3/util/WindowBounds.java
+++ b/src/com/android/launcher3/util/WindowBounds.java
@@ -85,7 +85,7 @@
      * Returns true if the device is in landscape orientation
      */
     public final boolean isLandscape() {
-        return availableSize.x > availableSize.y;
+        return bounds.width() > bounds.height();
     }
 
     /**
diff --git a/src/com/android/launcher3/util/window/WindowManagerProxy.java b/src/com/android/launcher3/util/window/WindowManagerProxy.java
index 278a37e..51a96c4 100644
--- a/src/com/android/launcher3/util/window/WindowManagerProxy.java
+++ b/src/com/android/launcher3/util/window/WindowManagerProxy.java
@@ -338,6 +338,20 @@
     }
 
     /**
+     * Returns bounds of the display associated with the context, or bounds of DEFAULT_DISPLAY
+     * if the context isn't associated with a display.
+     */
+    public Rect getCurrentBounds(Context displayInfoContext) {
+        Resources res = displayInfoContext.getResources();
+        Configuration config = res.getConfiguration();
+
+        float screenWidth = config.screenWidthDp * res.getDisplayMetrics().density;
+        float screenHeight = config.screenHeightDp * res.getDisplayMetrics().density;
+
+        return new Rect(0, 0, (int) screenWidth, (int) screenHeight);
+    }
+
+    /**
      * Returns rotation of the display associated with the context, or rotation of DEFAULT_DISPLAY
      * if the context isn't associated with a display.
      */
diff --git a/tests/src/com/android/launcher3/AbstractDeviceProfileTest.kt b/tests/src/com/android/launcher3/AbstractDeviceProfileTest.kt
index 0b31469..e46726d 100644
--- a/tests/src/com/android/launcher3/AbstractDeviceProfileTest.kt
+++ b/tests/src/com/android/launcher3/AbstractDeviceProfileTest.kt
@@ -273,6 +273,7 @@
         val realBounds = windowsBounds[rotation]
         whenever(windowManagerProxy.getDisplayInfo(any())).thenReturn(displayInfo)
         whenever(windowManagerProxy.getRealBounds(any(), any())).thenReturn(realBounds)
+        whenever(windowManagerProxy.getCurrentBounds(any())).thenReturn(realBounds.bounds)
         whenever(windowManagerProxy.getRotation(any())).thenReturn(rotation)
         whenever(windowManagerProxy.getNavigationMode(any()))
             .thenReturn(
diff --git a/tests/src/com/android/launcher3/allapps/AlphabeticalAppsListTest.java b/tests/src/com/android/launcher3/allapps/AlphabeticalAppsListTest.java
new file mode 100644
index 0000000..259f519
--- /dev/null
+++ b/tests/src/com/android/launcher3/allapps/AlphabeticalAppsListTest.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 2023 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.allapps;
+
+import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
+
+import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_PRIVATE_SPACE_HEADER;
+import static com.android.launcher3.allapps.UserProfileManager.STATE_DISABLED;
+import static com.android.launcher3.allapps.UserProfileManager.STATE_ENABLED;
+import static com.android.launcher3.allapps.UserProfileManager.STATE_TRANSITION;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.AdditionalAnswers.answer;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Process;
+import android.os.UserHandle;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.launcher3.Flags;
+import com.android.launcher3.model.data.AppInfo;
+import com.android.launcher3.util.ActivityContextWrapper;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Stream;
+
+@RunWith(AndroidJUnit4.class)
+public class AlphabeticalAppsListTest {
+
+    private static final UserHandle MAIN_HANDLE = Process.myUserHandle();
+    private static final UserHandle PRIVATE_HANDLE = new UserHandle(11);
+
+    private static final int PRIVATE_SPACE_HEADER_ITEM_COUNT = 1;
+    private static final int MAIN_USER_APP_COUNT = 2;
+    private static final int PRIVATE_USER_APP_COUNT = 1;
+
+    private AlphabeticalAppsList<?> mAlphabeticalAppsList;
+    @Mock
+    private AllAppsStore<?> mAllAppsStore;
+    @Mock
+    private PrivateProfileManager mPrivateProfileManager;
+    private Context mContext;
+
+    @Rule
+    public final SetFlagsRule mSetFlagsRule =
+            new SetFlagsRule(SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT);
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = new ActivityContextWrapper(getApplicationContext());
+        when(mPrivateProfileManager.getItemInfoMatcher()).thenReturn(info ->
+                info != null && info.user.equals(PRIVATE_HANDLE));
+        mAlphabeticalAppsList = new AlphabeticalAppsList<>(mContext, mAllAppsStore,
+                null, mPrivateProfileManager);
+    }
+
+    @Test
+    public void privateProfileEnabled_allPrivateProfileViewsArePresent() {
+        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_PRIVATE_SPACE);
+        when(mAllAppsStore.getApps()).thenReturn(createAppInfoListForMainAndPrivateUser());
+        when(mPrivateProfileManager.addPrivateSpaceHeader(any()))
+                .thenAnswer(answer(this::addPrivateSpaceHeader));
+        when(mPrivateProfileManager.getCurrentState()).thenReturn(STATE_ENABLED);
+
+        mAlphabeticalAppsList.updateItemFilter(info -> info != null
+                && info.user.equals(MAIN_HANDLE));
+
+        assertEquals(MAIN_USER_APP_COUNT + PRIVATE_SPACE_HEADER_ITEM_COUNT
+                + PRIVATE_USER_APP_COUNT, mAlphabeticalAppsList.getAdapterItems().size());
+        assertEquals(PRIVATE_SPACE_HEADER_ITEM_COUNT,
+                mAlphabeticalAppsList.getAdapterItems().stream().filter(item ->
+                        item.viewType == VIEW_TYPE_PRIVATE_SPACE_HEADER).toList().size());
+        assertEquals(PRIVATE_USER_APP_COUNT,
+                mAlphabeticalAppsList.getAdapterItems().stream().filter(item ->
+                        item.itemInfo != null
+                                && item.itemInfo.user.equals(PRIVATE_HANDLE)).toList().size());
+    }
+
+    @Test
+    public void privateProfileDisabled_onlyPrivateProfileHeaderViewIsPresent() {
+        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_PRIVATE_SPACE);
+        when(mAllAppsStore.getApps()).thenReturn(createAppInfoListForMainAndPrivateUser());
+        when(mPrivateProfileManager.addPrivateSpaceHeader(any()))
+                .thenAnswer(answer(this::addPrivateSpaceHeader));
+        when(mPrivateProfileManager.getCurrentState()).thenReturn(STATE_DISABLED);
+
+        mAlphabeticalAppsList.updateItemFilter(info -> info != null
+                && info.user.equals(MAIN_HANDLE));
+
+        assertEquals(MAIN_USER_APP_COUNT + PRIVATE_SPACE_HEADER_ITEM_COUNT,
+                mAlphabeticalAppsList.getAdapterItems().size());
+        assertEquals(PRIVATE_SPACE_HEADER_ITEM_COUNT, mAlphabeticalAppsList
+                .getAdapterItems().stream().filter(item ->
+                        item.viewType == VIEW_TYPE_PRIVATE_SPACE_HEADER).toList().size());
+        assertEquals(0, mAlphabeticalAppsList.getAdapterItems().stream().filter(item ->
+                item.itemInfo != null
+                        && item.itemInfo.user.equals(PRIVATE_HANDLE)).toList().size());
+    }
+
+    @Test
+    public void privateProfileTransitioning_onlyPrivateProfileHeaderViewIsPresent() {
+        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_PRIVATE_SPACE);
+        when(mAllAppsStore.getApps()).thenReturn(createAppInfoListForMainAndPrivateUser());
+        when(mPrivateProfileManager.addPrivateSpaceHeader(any()))
+                .thenAnswer(answer(this::addPrivateSpaceHeader));
+        when(mPrivateProfileManager.getCurrentState()).thenReturn(STATE_TRANSITION);
+
+        mAlphabeticalAppsList.updateItemFilter(info -> info != null
+                && info.user.equals(MAIN_HANDLE));
+
+        assertEquals(MAIN_USER_APP_COUNT + PRIVATE_SPACE_HEADER_ITEM_COUNT,
+                mAlphabeticalAppsList.getAdapterItems().size());
+        assertEquals(PRIVATE_SPACE_HEADER_ITEM_COUNT, mAlphabeticalAppsList
+                .getAdapterItems().stream().filter(item ->
+                        item.viewType == VIEW_TYPE_PRIVATE_SPACE_HEADER).toList().size());
+        assertEquals(0, mAlphabeticalAppsList.getAdapterItems().stream().filter(item ->
+                item.itemInfo != null
+                        && item.itemInfo.user.equals(PRIVATE_HANDLE)).toList().size());
+    }
+
+    @Test
+    public void privateProfileHidden_noPrivateProfileViewIsPresent() {
+        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_PRIVATE_SPACE);
+        when(mAllAppsStore.getApps()).thenReturn(createAppInfoListForMainAndPrivateUser());
+        when(mPrivateProfileManager.isPrivateSpaceHidden()).thenReturn(true);
+
+        mAlphabeticalAppsList.updateItemFilter(info -> info != null
+                && info.user.equals(MAIN_HANDLE));
+
+        assertEquals(MAIN_USER_APP_COUNT, mAlphabeticalAppsList.getAdapterItems().size());
+        assertEquals(0, mAlphabeticalAppsList.getAdapterItems().stream().filter(item ->
+                item.viewType == VIEW_TYPE_PRIVATE_SPACE_HEADER).toList().size());
+        assertEquals(0, mAlphabeticalAppsList.getAdapterItems().stream().filter(item ->
+                item.itemInfo != null
+                        && item.itemInfo.user.equals(PRIVATE_HANDLE)).toList().size());
+    }
+
+    @Test
+    public void privateProfileNotPresent_onlyMainUserViewsArePresent() {
+        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_PRIVATE_SPACE);
+        when(mAllAppsStore.getApps()).thenReturn(createAppInfoListForMainUser());
+
+        mAlphabeticalAppsList.updateItemFilter(info -> info != null
+                && info.user.equals(MAIN_HANDLE));
+
+        assertEquals(2, mAlphabeticalAppsList.getAdapterItems().size());
+        assertEquals(0, mAlphabeticalAppsList.getAdapterItems().stream().filter(item ->
+                        item.itemInfo != null
+                                && item.itemInfo.itemType == VIEW_TYPE_PRIVATE_SPACE_HEADER)
+                .toList().size());
+        assertEquals(0, mAlphabeticalAppsList.getAdapterItems().stream().filter(item ->
+                        item.itemInfo != null && item.itemInfo.user.equals(PRIVATE_HANDLE))
+                .toList().size());
+    }
+
+    private int addPrivateSpaceHeader(List<BaseAllAppsAdapter.AdapterItem> adapterItemList) {
+        adapterItemList.add(new BaseAllAppsAdapter.AdapterItem(VIEW_TYPE_PRIVATE_SPACE_HEADER));
+        return adapterItemList.size();
+    }
+
+    private AppInfo[] createAppInfoListForMainUser() {
+        ComponentName gmailComponentName = new ComponentName(mContext,
+                "com.android.launcher3.tests.Activity" + "Gmail");
+        AppInfo gmailAppInfo = new
+                AppInfo(gmailComponentName, "Gmail", MAIN_HANDLE, new Intent());
+        ComponentName driveComponentName = new ComponentName(mContext,
+                "com.android.launcher3.tests.Activity" + "Drive");
+        AppInfo driveAppInfo = new
+                AppInfo(driveComponentName, "Drive", MAIN_HANDLE, new Intent());
+        return new AppInfo[]{gmailAppInfo, driveAppInfo};
+    }
+
+    private AppInfo[] createAppInfoListForPrivateUser() {
+        ComponentName privateMessengercomponentName = new ComponentName(mContext,
+                "com.android.launcher3.tests.Activity" + "PrivateMessenger");
+        AppInfo privateMessengerAppInfo = new AppInfo(privateMessengercomponentName,
+                "Private Messenger", PRIVATE_HANDLE, new Intent());
+        return new AppInfo[]{privateMessengerAppInfo};
+    }
+
+    private AppInfo[] createAppInfoListForMainAndPrivateUser() {
+        return Stream.concat(Arrays.stream(createAppInfoListForMainUser()),
+                Arrays.stream(createAppInfoListForPrivateUser())).toArray(AppInfo[]::new);
+    }
+
+}
diff --git a/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java b/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java
index bfa9241..f461c8c 100644
--- a/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java
+++ b/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java
@@ -22,6 +22,9 @@
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 
 import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
@@ -82,8 +85,8 @@
         when(mUserCache.getUserInfo(PRIVATE_HANDLE)).thenReturn(PRIVATE_ICON_INFO);
         when(mActivityAllAppsContainerView.getContext()).thenReturn(mContext);
         when(mActivityAllAppsContainerView.getAppsStore()).thenReturn(mAllAppsStore);
-        mPrivateProfileManager = new PrivateProfileManager(mUserManager, mUserCache,
-                mActivityAllAppsContainerView, mStatsLogManager);
+        mPrivateProfileManager = new PrivateProfileManager(mUserManager,
+                mActivityAllAppsContainerView, mStatsLogManager, mUserCache);
     }
 
     @Test
@@ -108,16 +111,18 @@
 
     @Test
     public void quietModeFlagPresent_privateSpaceIsResetToDisabled() {
+        PrivateProfileManager privateProfileManager = spy(mPrivateProfileManager);
+        doNothing().when(privateProfileManager).resetPrivateSpaceDecorator(anyInt());
         when(mAllAppsStore.hasModelFlag(FLAG_PRIVATE_PROFILE_QUIET_MODE_ENABLED))
                 .thenReturn(false, true);
 
         // In first call the state should be disabled.
-        mPrivateProfileManager.reset();
-        assertEquals(STATE_ENABLED, mPrivateProfileManager.getCurrentState());
+        privateProfileManager.reset();
+        assertEquals(STATE_ENABLED, privateProfileManager.getCurrentState());
 
         // In the next call the state should be disabled.
-        mPrivateProfileManager.reset();
-        assertEquals(STATE_DISABLED, mPrivateProfileManager.getCurrentState());
+        privateProfileManager.reset();
+        assertEquals(STATE_DISABLED, privateProfileManager.getCurrentState());
     }
 
     @Test
diff --git a/tests/src/com/android/launcher3/allapps/PrivateSpaceHeaderViewControllerTest.java b/tests/src/com/android/launcher3/allapps/PrivateSpaceHeaderViewControllerTest.java
index 87adaa1..ea8be3f 100644
--- a/tests/src/com/android/launcher3/allapps/PrivateSpaceHeaderViewControllerTest.java
+++ b/tests/src/com/android/launcher3/allapps/PrivateSpaceHeaderViewControllerTest.java
@@ -21,6 +21,7 @@
 import static com.android.launcher3.allapps.UserProfileManager.STATE_DISABLED;
 import static com.android.launcher3.allapps.UserProfileManager.STATE_ENABLED;
 import static com.android.launcher3.allapps.UserProfileManager.STATE_TRANSITION;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.when;
@@ -75,11 +76,12 @@
     }
 
     @Test
-    public void privateProfileDisabled_psHeaderContainsLockedView() {
+    public void privateProfileDisabled_psHeaderContainsLockedView() throws Exception {
         Bitmap unlockButton = getBitmap(mContext.getDrawable(R.drawable.bg_ps_unlock_button));
         when(mPrivateProfileManager.getCurrentState()).thenReturn(STATE_DISABLED);
 
         mPsHeaderViewController.addPrivateSpaceHeaderViewElements(mPsHeaderLayout);
+        awaitTasksCompleted();
 
         int totalContainerHeaderView = 0;
         int totalLockUnlockButtonView = 0;
@@ -102,13 +104,14 @@
     }
 
     @Test
-    public void privateProfileEnabled_psHeaderContainsUnlockedView() {
+    public void privateProfileEnabled_psHeaderContainsUnlockedView() throws Exception {
         Bitmap lockImage = getBitmap(mContext.getDrawable(R.drawable.bg_ps_lock_button));
         Bitmap settingsImage = getBitmap(mContext.getDrawable(R.drawable.bg_ps_settings_button));
         when(mPrivateProfileManager.getCurrentState()).thenReturn(STATE_ENABLED);
         when(mPrivateProfileManager.isPrivateSpaceSettingsButtonVisible()).thenReturn(true);
 
         mPsHeaderViewController.addPrivateSpaceHeaderViewElements(mPsHeaderLayout);
+        awaitTasksCompleted();
 
         int totalContainerHeaderView = 0;
         int totalLockUnlockButtonView = 0;
@@ -138,12 +141,14 @@
     }
 
     @Test
-    public void privateProfileEnabledAndNoSettingsIntent_psHeaderContainsUnlockedView() {
+    public void privateProfileEnabledAndNoSettingsIntent_psHeaderContainsUnlockedView()
+            throws Exception {
         Bitmap lockImage = getBitmap(mContext.getDrawable(R.drawable.bg_ps_lock_button));
         when(mPrivateProfileManager.getCurrentState()).thenReturn(STATE_ENABLED);
         when(mPrivateProfileManager.isPrivateSpaceSettingsButtonVisible()).thenReturn(false);
 
         mPsHeaderViewController.addPrivateSpaceHeaderViewElements(mPsHeaderLayout);
+        awaitTasksCompleted();
 
         int totalContainerHeaderView = 0;
         int totalLockUnlockButtonView = 0;
@@ -168,11 +173,12 @@
     }
 
     @Test
-    public void privateProfileTransitioning_psHeaderContainsTransitionView() {
+    public void privateProfileTransitioning_psHeaderContainsTransitionView() throws Exception {
         Bitmap transitionImage = getBitmap(mContext.getDrawable(R.drawable.bg_ps_transition_image));
         when(mPrivateProfileManager.getCurrentState()).thenReturn(STATE_TRANSITION);
 
         mPsHeaderViewController.addPrivateSpaceHeaderViewElements(mPsHeaderLayout);
+        awaitTasksCompleted();
 
         int totalContainerHeaderView = 0;
         int totalLockUnlockButtonView = 0;
@@ -216,4 +222,8 @@
         }
         return result;
     }
+
+    private static void awaitTasksCompleted() throws Exception {
+        UI_HELPER_EXECUTOR.submit(() -> null).get();
+    }
 }
diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
index 688f418..cb1102e 100644
--- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
+++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
@@ -114,9 +114,9 @@
     protected final LauncherInstrumentation mLauncher = createLauncherInstrumentation();
 
     @NonNull
-    private static LauncherInstrumentation createLauncherInstrumentation() {
+    public static LauncherInstrumentation createLauncherInstrumentation() {
         waitForSetupWizardDismissal(); // precondition for creating LauncherInstrumentation
-        return new LauncherInstrumentation();
+        return new LauncherInstrumentation(true);
     }
 
     protected Context mTargetContext;
diff --git a/tests/tapl/com/android/launcher3/tapl/BaseOverview.java b/tests/tapl/com/android/launcher3/tapl/BaseOverview.java
index 770fe14..fa5a7b3 100644
--- a/tests/tapl/com/android/launcher3/tapl/BaseOverview.java
+++ b/tests/tapl/com/android/launcher3/tapl/BaseOverview.java
@@ -16,9 +16,12 @@
 
 package com.android.launcher3.tapl;
 
+import static com.android.launcher3.tapl.LauncherInstrumentation.TASKBAR_RES_ID;
+
 import android.graphics.Rect;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.test.uiautomator.By;
 import androidx.test.uiautomator.BySelector;
 import androidx.test.uiautomator.Direction;
@@ -322,6 +325,22 @@
                 mLauncher.getOverviewObjectSelector("clear_all"));
     }
 
+    /**
+     * Returns the taskbar if it's a tablet, or {@code null} otherwise.
+     */
+    @Nullable
+    public Taskbar getTaskbar() {
+        if (!mLauncher.isTablet()) {
+            return null;
+        }
+        try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                "want to get the taskbar")) {
+            mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID);
+
+            return new Taskbar(mLauncher);
+        }
+    }
+
     protected boolean isActionsViewVisible() {
         if (!hasTasks() || isClearAllVisible()) {
             return false;
diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
index a60dba7..406de35 100644
--- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
+++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
@@ -215,15 +215,31 @@
      * Constructs the root of TAPL hierarchy. You get all other objects from it.
      */
     public LauncherInstrumentation() {
-        this(InstrumentationRegistry.getInstrumentation());
+        this(InstrumentationRegistry.getInstrumentation(), false);
     }
 
     /**
      * Constructs the root of TAPL hierarchy. You get all other objects from it.
-     * Deprecated: use the constructor without parameters instead.
+     */
+    public LauncherInstrumentation(boolean isLauncherTest) {
+        this(InstrumentationRegistry.getInstrumentation(), isLauncherTest);
+    }
+
+    /**
+     * Constructs the root of TAPL hierarchy. You get all other objects from it.
+     * @deprecated use the constructor without Instrumentation parameter instead.
      */
     @Deprecated
     public LauncherInstrumentation(Instrumentation instrumentation) {
+        this(instrumentation, false);
+    }
+
+    /**
+     * Constructs the root of TAPL hierarchy. You get all other objects from it.
+     * @deprecated use the constructor without Instrumentation parameter instead.
+     */
+    @Deprecated
+    public LauncherInstrumentation(Instrumentation instrumentation, boolean isLauncherTest) {
         mInstrumentation = instrumentation;
         mDevice = UiDevice.getInstance(instrumentation);
 
@@ -272,12 +288,17 @@
                             .replaceAll("\\s", "");
                     mDevice.executeShellCommand(
                             "pm enable --user " + userId + " " + cn.flattenToString());
+
                     // Wait for Launcher restart after enabling test provider.
-                    for (int i = 0; i < 300; ++i) {
+                    final int iterations = isLauncherTest ? 300 : 100;
+
+                    for (int i = 0; i < iterations; ++i) {
                         final String currentPid = mDevice.executeShellCommand(launcherPidCommand)
                                 .replaceAll("\\s", "");
                         if (!currentPid.isEmpty() && !currentPid.equals(initialPid)) break;
-                        if (i == 299) fail("Launcher didn't restart after enabling test provider");
+                        if (i == iterations - 1) {
+                            fail("Launcher didn't restart after enabling test provider");
+                        }
                         SystemClock.sleep(100);
                     }
                 } catch (IOException e) {