diff --git a/Android.bp b/Android.bp
index 598beb6..c4b9ad3 100644
--- a/Android.bp
+++ b/Android.bp
@@ -59,8 +59,6 @@
 
     sdk_version: "system_current",
     min_sdk_version: "29",
-
-    lint: { strict_updatability_linting: true }
 }
 
 platform_compat_config {
@@ -68,39 +66,32 @@
     src: ":DocumentsUI",
 }
 
-filegroup {
-    name: "DocumentsUI-srcs",
-    srcs: [
-        "src/**/*.java",
-	":statslog-docsui-java-gen",
-    ],
-}
-
 java_library {
     name: "docsui-statsd",
     srcs: [
         ":statslog-docsui-java-gen",
     ],
-    lint: { strict_updatability_linting: true }
+    libs: [
+        "androidx.annotation_annotation",
+    ],
+    lint: {
+        strict_updatability_linting: true,
+    },
 }
 
 genrule {
     name: "statslog-docsui-java-gen",
     tools: ["stats-log-api-gen"],
     cmd: "$(location stats-log-api-gen) --java $(out) --module docsui" +
-         " --javaPackage com.android.documentsui --javaClass DocumentsStatsLog --minApiLevel 29",
+        " --javaPackage com.android.documentsui --javaClass DocumentsStatsLog --minApiLevel 29",
     out: ["com/android/documentsui/DocumentsStatsLog.java"],
 }
 
 android_library {
-    name: "DocumentsUI-res-lib",
+    name: "DocumentsUI-lib",
+    defaults: ["documentsui_defaults"],
 
-    manifest: "AndroidManifest.xml",
-
-    static_libs: [
-        "androidx.appcompat_appcompat",
-        "com.google.android.material_material",
-    ],
+    manifest: "AndroidManifestLib.xml",
 
     resource_dirs: [
         "res",
@@ -110,40 +101,31 @@
         "--auto-add-overlay",
     ],
 
+    srcs: [
+        "src/**/*.java",
+        ":statslog-docsui-java-gen",
+    ],
+
     sdk_version: "system_current",
     target_sdk_version: "33",
     min_sdk_version: "29",
-    lint: { strict_updatability_linting: true }
+    lint: {
+        baseline_filename: "lint-baseline.xml",
+    },
 }
 
 android_library {
-    name: "DocumentsUIUnitTests-res-lib",
+    name: "DocumentsUIManifestLib",
+    defaults: ["documentsui_defaults"],
 
-    manifest: "AndroidManifestForUnitTests.xml",
+    manifest: "AndroidManifest.xml",
 
-    static_libs: [
-        "androidx.appcompat_appcompat",
-        "com.google.android.material_material",
-        "modules-utils-build_system",
-    ],
-
-    resource_dirs: [
-        "res",
-    ],
-
-    licenses: [
-        "Android-Apache-2.0",
-        "packages_apps_DocumentsUI_res_drawable_pd_license",
-    ],
-
-    aaptflags: [
-        "--auto-add-overlay",
-    ],
+    resource_dirs: [],
+    libs: ["DocumentsUI-lib"],
 
     sdk_version: "system_current",
     target_sdk_version: "33",
     min_sdk_version: "29",
-    lint: { strict_updatability_linting: true }
 }
 
 android_app {
@@ -153,13 +135,8 @@
 
     manifest: "AndroidManifest.xml",
 
-    srcs: [
-        ":DocumentsUI-srcs",
-    ],
-
-    resource_dirs: [
-        "res",
-    ],
+    static_libs: ["DocumentsUI-lib"],
+    resource_dirs: [],
 
     licenses: [
         "Android-Apache-2.0",
@@ -170,6 +147,4 @@
 
     min_sdk_version: "29",
     updatable: true,
-    lint: { strict_updatability_linting: true }
 }
-
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ef86ab7..7680234 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -40,6 +40,9 @@
 
     <uses-permission android:name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND"/>
 
+    <!-- Permissions required for reading device configs -->
+    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
+
     <application
         android:name=".DocumentsApplication"
         android:label="@string/app_label"
diff --git a/AndroidManifestForUnitTests.xml b/AndroidManifestLib.xml
similarity index 100%
rename from AndroidManifestForUnitTests.xml
rename to AndroidManifestLib.xml
diff --git a/lint-baseline.xml b/lint-baseline.xml
index c7db331..a89103e 100644
--- a/lint-baseline.xml
+++ b/lint-baseline.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.0.0-dev" type="baseline" dependencies="true" variant="all" version="8.0.0-dev">
+<issues format="6" by="lint 8.4.0-alpha01" type="baseline" client="" dependencies="true" name="" variant="all" version="8.4.0-alpha01">
 
     <issue
         id="NewApi"
diff --git a/perf-tests/Android.bp b/perf-tests/Android.bp
index d98c36c..4cf6c65 100644
--- a/perf-tests/Android.bp
+++ b/perf-tests/Android.bp
@@ -8,7 +8,6 @@
     manifest: "AndroidManifest.xml",
 
     srcs: [
-        ":DocumentsUIPerfTests-files",
         "src/**/*.java",
     ],
 
@@ -23,6 +22,7 @@
     ],
 
     static_libs: [
+        "DocumentsUIPerfTests-lib",
         "androidx.legacy_legacy-support-v4",
         "androidx.test.rules",
         "androidx.test.espresso.core",
diff --git a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
index 33ef73e..f7c295d 100644
--- a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
+++ b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
@@ -24,12 +24,12 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.RemoteException;
-import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.filters.LargeTest;
 
 import com.android.documentsui.BaseActivity.EventListener;
 import com.android.documentsui.base.RootInfo;
 import com.android.documentsui.files.FilesActivity;
-import com.android.documentsui.ActivityTest;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java b/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
index 6dd8044..8054c38 100644
--- a/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
+++ b/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
@@ -26,8 +26,8 @@
 import android.support.test.jank.GfxMonitor;
 import android.support.test.jank.JankTest;
 import android.support.test.jank.JankTestBase;
-import android.test.suitebuilder.annotation.LargeTest;
 
+import androidx.test.filters.LargeTest;
 import androidx.test.uiautomator.UiDevice;
 import androidx.test.uiautomator.UiScrollable;
 
diff --git a/res/layout-sw720dp/item_doc_list.xml b/res/layout-sw720dp/item_doc_list.xml
index da91796..3013f31 100644
--- a/res/layout-sw720dp/item_doc_list.xml
+++ b/res/layout-sw720dp/item_doc_list.xml
@@ -95,12 +95,13 @@
                 android:orientation="horizontal">
 
                 <ImageView
-                    android:id="@+id/icon_briefcase"
+                    android:id="@+id/icon_profile_badge"
                     android:layout_height="@dimen/briefcase_icon_size"
                     android:layout_width="@dimen/briefcase_icon_size"
                     android:layout_marginEnd="@dimen/briefcase_icon_margin"
                     android:layout_gravity="center_vertical"
                     android:src="@drawable/ic_briefcase"
+                    android:tint="?android:attr/colorAccent"
                     android:contentDescription="@string/a11y_work"/>
 
                 <TextView
diff --git a/res/layout/item_dir_grid.xml b/res/layout/item_dir_grid.xml
index 8720c37..bd690d4 100644
--- a/res/layout/item_dir_grid.xml
+++ b/res/layout/item_dir_grid.xml
@@ -81,11 +81,12 @@
             </FrameLayout>
 
             <ImageView
-                android:id="@+id/icon_briefcase"
+                android:id="@+id/icon_profile_badge"
                 android:layout_height="@dimen/briefcase_icon_size"
                 android:layout_width="@dimen/briefcase_icon_size"
                 android:layout_marginEnd="@dimen/briefcase_icon_margin"
                 android:src="@drawable/ic_briefcase"
+                android:tint="?android:attr/colorAccent"
                 android:contentDescription="@string/a11y_work"/>
 
             <TextView
diff --git a/res/layout/item_doc_grid.xml b/res/layout/item_doc_grid.xml
index 5e2e938..d654571 100644
--- a/res/layout/item_doc_grid.xml
+++ b/res/layout/item_doc_grid.xml
@@ -146,7 +146,7 @@
                     android:paddingEnd="12dp">
 
                     <ImageView
-                        android:id="@+id/icon_briefcase"
+                        android:id="@+id/icon_profile_badge"
                         android:layout_height="@dimen/briefcase_icon_size"
                         android:layout_width="@dimen/briefcase_icon_size"
                         android:layout_marginEnd="@dimen/briefcase_icon_margin"
@@ -154,6 +154,7 @@
                         android:layout_alignBottom="@android:id/title"
                         android:gravity="center_vertical"
                         android:src="@drawable/ic_briefcase"
+                        android:tint="?android:attr/colorAccent"
                         android:contentDescription="@string/a11y_work"/>
 
                     <TextView
@@ -161,7 +162,7 @@
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_alignParentTop="true"
-                        android:layout_toEndOf="@+id/icon_briefcase"
+                        android:layout_toEndOf="@+id/icon_profile_badge"
                         android:singleLine="true"
                         android:ellipsize="end"
                         android:textAlignment="viewStart"
diff --git a/res/layout/item_doc_list.xml b/res/layout/item_doc_list.xml
index 0942c4b..77494a2 100644
--- a/res/layout/item_doc_list.xml
+++ b/res/layout/item_doc_list.xml
@@ -92,12 +92,13 @@
             android:layout_weight="1">
 
           <ImageView
-              android:id="@+id/icon_briefcase"
+              android:id="@+id/icon_profile_badge"
               android:layout_height="@dimen/briefcase_icon_size"
               android:layout_width="@dimen/briefcase_icon_size"
               android:layout_marginEnd="@dimen/briefcase_icon_margin"
               android:layout_gravity="center_vertical"
               android:src="@drawable/ic_briefcase"
+              android:tint="?android:attr/colorAccent"
               android:contentDescription="@string/a11y_work" />
 
           <TextView
diff --git a/res/layout/item_photo_grid.xml b/res/layout/item_photo_grid.xml
index 5cf6850..4581d3d 100644
--- a/res/layout/item_photo_grid.xml
+++ b/res/layout/item_photo_grid.xml
@@ -104,7 +104,7 @@
         </FrameLayout>
 
         <FrameLayout
-            android:id="@+id/icon_briefcase"
+            android:id="@+id/icon_profile_badge"
             android:layout_width="@dimen/button_touch_size"
             android:layout_height="@dimen/button_touch_size"
             android:layout_alignParentBottom="true"
@@ -116,6 +116,7 @@
                 android:layout_height="@dimen/briefcase_icon_size_photo"
                 android:layout_width="@dimen/briefcase_icon_size_photo"
                 android:src="@drawable/ic_briefcase_white"
+                android:tint="?android:attr/colorAccent"
                 android:padding="5dp"
                 android:background="@drawable/circle_button_background"
                 android:layout_gravity="center"
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index b37f8de..7c2e20c 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Kan op die oomblik nie inhoud laai nie"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Werkapps is onderbreek"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Skakel werkprogramme aan"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> apps word gepouseer"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Skakel <xliff:g id="PROFILE">%1$s</xliff:g> apps aan"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Kan nie werklêers kies nie"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Jou IT-administrateur laat jou nie toe om van \'n persoonlike program af by werklêers in te gaan nie"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Kan nie persoonlike lêers kies nie"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Jou IT-administrateur laat jou nie toe om van \'n werkprogram af by persoonlike lêers in te gaan nie"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Kan nie <xliff:g id="PROFILE">%1$s</xliff:g> lêers kies nie"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Jou IT-admin laat jou nie toe om toegang tot <xliff:g id="PROFILE_0">%1$s</xliff:g> lêers vanaf ’n <xliff:g id="PROFILE_1">%2$s</xliff:g> app te kry nie"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Kan nie in jou werkprofiel stoor nie"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Jou IT-administrateur laat jou nie toe om jou persoonlike lêers in jou werkprofiel te stoor nie"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Kan nie in \'n persoonlike lêer stoor nie"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Jou IT-administrateur laat jou nie toe om werklêers in jou persoonlike lêer te stoor nie"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Kan nie in <xliff:g id="PROFILE">%1$s</xliff:g> profiel stoor nie"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Jou IT-admin laat jou nie toe om <xliff:g id="PROFILE_0">%1$s</xliff:g> lêers in jou <xliff:g id="PROFILE_1">%2$s</xliff:g> profiel te stoor nie"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Hierdie handeling word nie toegelaat nie"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Kontak jou IT-administrateur om meer te wete te kom"</string>
     <string name="root_recent" msgid="1080156975424341623">"Onlangs"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nuwe naam"</string>
     <string name="preview_file" msgid="4056622696305432343">"Voorbeskou die lêer <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Voorbeskou die werklêer <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Voorbeskou <xliff:g id="PROFILE">%1$s</xliff:g> lêer <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Blaai deur lêers in ander programme"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anoniem"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Gebruik hierdie vouer"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Kan nie hierdie vouer gebruik nie"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Kies \'n ander vouer om jou privaatheid te beskerm"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Skep nuwe vouer"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Deursoek hierdie foon"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Deursoek hierdie toestel"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Vee soekgeskiedenis uit: <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Persoonlik"</string>
     <string name="work_tab" msgid="7265359366883747413">"Werk"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index e68194b..428783c 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"አሁን ይዘትን መጫን አልተቻለም"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"የስራ መተግበሪያዎች ባሉበት ቆመዋል"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"የሥራ መተግበሪያዎችን አብራ"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> መተግበሪያዎች ባሉበት ቆመዋል"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"የ<xliff:g id="PROFILE">%1$s</xliff:g> መተግበሪያዎችን ያብሩ"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"የሥራ ፋይሎችን መምረጥ አይቻልም"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"የእርስዎ አይቲ አስተዳዳሪ ከግል መተግበሪያ የሥራ ፋይሎችን እንዲደርሱ አይፈቅዱልዎትም"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"የግል ፋይሎችን መምረጥ አይቻልም"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"የእርስዎ አይቲ አስተዳዳሪ ከሥራ መተግበሪያ የግል ፋይሎችን እንዲደርሱባቸው አይፈቅዱልዎትም"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> ፋይሎችን መምረጥ አልተቻለም"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"የአይቲ አስተዳዳሪዎ የ<xliff:g id="PROFILE_0">%1$s</xliff:g> ፋይሎችን ከ<xliff:g id="PROFILE_1">%2$s</xliff:g> መተግበሪያ እንዲደርሱ አይፈቅድም"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"ወደ ሥራ መገለጫ ማስቀመጥ አይቻልም"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"የእርስዎ አይቲ አስተዳዳሪ ወደ የእርስዎ የግል ፋይሎችን ወደ የእርስዎ የሥራ ፋይሎች እንዲያስቀምጡ አይፈቅዱልዎትም"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"ወደ የግል መገለጫ ማስቀመጥ አይቻልም"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"የእርስዎ አይቲ አስተዳዳሪ ወደ የእርስዎ የግል መገለጫ የሥራ ፋይሎችን እርስዎ እንዲያስቀምጡ አይፈቅዱልዎትም"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"ወደ <xliff:g id="PROFILE">%1$s</xliff:g> መግለጫ ማስቀመጥ አይችሉም"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"የአይቲ አስተዳዳሪዎ የ<xliff:g id="PROFILE_0">%1$s</xliff:g> ፋይሎችን ወደ <xliff:g id="PROFILE_1">%2$s</xliff:g> መግለጫዎ እንዲያስቀምጡ አይፈቅድልዎትም"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"ይህ እርምጃ አይፈቀድም"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"የበለጠ ለመረዳት የእርስዎን አይቲ አስተዳዳሪ ያነጋግሩ"</string>
     <string name="root_recent" msgid="1080156975424341623">"የቅርብ ጊዜ"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"አዲስ ስም"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> ፋይሉን በቅድመ ዕይታ ይመልከቱ"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"የሥራ ፋይሉን <xliff:g id="FILENAME">%1$s</xliff:g> በቅድመ ዕይታ አሳይ"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> ፋይሉን <xliff:g id="FILENAME">%2$s</xliff:g> በቅድመ ዕይታ ይመልከቱ"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"ፋይሎችን በሌሎች መተግበሪያዎች ውስጥ ያስሱ"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"ስም-አልባ"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"ይህን አቃፊ ተጠቀም"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"ይህን አቃፊ መጠቀም አይቻልም"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"ግላዊነትዎን ለመጠበቅ ሲባል ሌላ አቃፊ ይምረጡ"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"አዲስ አቃፊ ፍጠር"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"ይህን ስልክ ይፈልጉ"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"ይህንን መሣሪያ ይፈልጉ"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"የፍለጋ ታሪክ ይሰርዙ <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"የግል"</string>
     <string name="work_tab" msgid="7265359366883747413">"ሥራ"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index e13b308..0c5432a 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"يتعذر تحميل المحتوى في الوقت الحالي"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"تطبيقات العمل متوقفة مؤقتًا"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"تفعيل تطبيقات العمل"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"تطبيقات <xliff:g id="PROFILE">%1$s</xliff:g> متوقفة مؤقتًا"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"تفعيل تطبيقات <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"لا يمكن اختيار ملفات العمل"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"لا يسمح لك مشرف تكنولوجيا المعلومات بالوصول إلى ملفات العمل من تطبيق شخصي."</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"لا يمكن اختيار ملفات شخصية"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"لا يسمح لك مشرف تكنولوجيا المعلومات بالوصول إلى الملفات الشخصية من تطبيق عمل."</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"يتعذّر اختيار ملفات <xliff:g id="PROFILE">%1$s</xliff:g>."</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"لا يسمح لك مشرف تكنولوجيا المعلومات في مؤسستك بالوصول إلى ملفات <xliff:g id="PROFILE_0">%1$s</xliff:g> من خلال تطبيق <xliff:g id="PROFILE_1">%2$s</xliff:g>."</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"لا يمكن حفظ الملفات في الملف الشخصي للعمل"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"لا يسمح لك مشرف تكنولوجيا المعلومات بحفظ الملفات الشخصية في ملفك الشخصي للعمل."</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"لا يمكن حفظ الملفات في الملف الشخصي"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"لا يسمح لك مشرف تكنولوجيا المعلومات بحفظ ملفات العمل في ملفك الشخصي."</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"يتعذّر الحفظ في ملف <xliff:g id="PROFILE">%1$s</xliff:g>."</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"لا يسمح لك مشرف تكنولوجيا المعلومات في مؤسستك بحفظ ملفات <xliff:g id="PROFILE_0">%1$s</xliff:g> في ملف <xliff:g id="PROFILE_1">%2$s</xliff:g>."</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"هذا الإجراء غير مسموح به."</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"لمعرفة مزيد من المعلومات، يمكنك التواصل مع مشرف تكنولوجيا المعلومات."</string>
     <string name="root_recent" msgid="1080156975424341623">"المحتوى المستخدَم أو المعدَّل مؤخرًا"</string>
@@ -354,6 +360,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"اسم جديد"</string>
     <string name="preview_file" msgid="4056622696305432343">"معاينة الملف <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"معاينة ملف العمل <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"معاينة الملف \"<xliff:g id="FILENAME">%2$s</xliff:g>\" في <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"تصفّح الملفات في تطبيقات أخرى"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"مجهول"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"استخدام هذا المجلد"</string>
@@ -362,7 +369,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"لا يمكن استخدام هذا المجلد"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"لحماية خصوصيتك، اختَر مجلدًا آخر"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"إنشاء مجلد جديد"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"البحث في هذا الهاتف"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"البحث في هذا الجهاز"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"حذف سجلّ البحث <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"شخصي"</string>
     <string name="work_tab" msgid="7265359366883747413">"للعمل"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 2c5c059..285cd0b 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"এই মুহূৰ্তত সমল ল\'ড কৰিব নোৱাৰি"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"কৰ্মস্থানৰ এপ্‌সমূহ পজ কৰা আছে"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"কৰ্মস্থানৰ এপ্‌সমূহ অন কৰক"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> এপ্‌ পজ কৰা আছে"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> এপ্ অন কৰক"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"কৰ্মস্থানৰ ফাইলসমূহ বাছনি কৰিব নোৱাৰি"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক কোনো ব্যক্তিগত এপৰ পৰা কর্মস্থানৰ ফাইলসমূহলৈ এক্সেছ কৰিবলৈ অনুমতি নিদিয়ে"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"ব্যক্তিগত ফাইলসমূহ বাছনি কৰিব নোৱাৰি"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক কোনো কৰ্মস্থানৰ এপৰ পৰা ব্যক্তিগত ফাইলসমূহলৈ এক্সেছ কৰিবলৈ অনুমতি নিদিয়ে"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g>ৰ ফাইলসমূহ বাছনি কৰিব নোৱাৰি"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক কোনো <xliff:g id="PROFILE_1">%2$s</xliff:g> এপৰ পৰা <xliff:g id="PROFILE_0">%1$s</xliff:g>ৰ ফাইলসমূহ এক্সেছ কৰিবলৈ নিদিয়ে"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"কৰ্মস্থানৰ প্ৰ\'ফাইলত ছেভ কৰিব নোৱাৰি"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক আপোনাৰ কর্মস্থানৰ প্ৰ\'ফাইলত ব্যক্তিগত ফাইলসমূহ ছেভ কৰিবলৈ অনুমতি নিদিয়ে"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"ব্যক্তিগত প্ৰফাইলত ছেভ কৰিব নোৱাৰি"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক আপোনাৰ ব্যক্তিগত প্ৰ\'ফাইলত কৰ্মস্থানৰ ফাইলসমূহ ছেভ কৰিবলৈ অনুমতি নিদিয়ে"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> প্ৰ’ফাইলত ছেভ কৰিব নোৱাৰি"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক আপোনাৰ <xliff:g id="PROFILE_1">%2$s</xliff:g> প্ৰ’ফাইলত <xliff:g id="PROFILE_0">%1$s</xliff:g>ৰ ফাইলসমূহ ছেভ কৰিবলৈ নিদিয়ে"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"এই কাৰ্যটোৰ অনুমতি নাই"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"অধিক জানিবলৈ আপোনাৰ আইটি প্ৰশাসকৰ সৈতে যোগাযোগ কৰক"</string>
     <string name="root_recent" msgid="1080156975424341623">"শেহতীয়া"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"নতুন নাম"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> ফাইলটো পূৰ্বদৰ্শন কৰক"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"কৰ্মস্থানৰ ফাইলটো <xliff:g id="FILENAME">%1$s</xliff:g> পূৰ্বদৰ্শন কৰক"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g>ৰ <xliff:g id="FILENAME">%2$s</xliff:g> ফাইলটো পূৰ্বদৰ্শন কৰক"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"অন্য এপত ফাইল ব্ৰাউজ কৰক"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"পৰিচয়বিহীন"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"এই ফ\'ল্ডাৰটো ব্যৱহাৰ কৰক"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"এই ফ’ল্ডাৰটো ব্যৱহাৰ কৰিব নোৱাৰি"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"আপোনাৰ গোপনীয়তা সুৰক্ষিত কৰিবলৈ অন্য এটা ফ’ল্ডাৰ বাছনি কৰক"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"নতুন ফ\'ল্ডাৰ সৃষ্টি কৰক"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"এই ফ’নটো সন্ধান কৰক"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"এই ডিভাইচটো সন্ধান কৰক"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"সন্ধান ইতিহাস মচক <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"ব্যক্তিগত"</string>
     <string name="work_tab" msgid="7265359366883747413">"কৰ্মস্থান"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 440a310..dfba630 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Məzmun hazırda yüklənmir"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"İş tətbiqləri durdurulub"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"İş tətbiqlərini aktiv edin"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> tətbiqləri durdurulub"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> tətbiqlərini aktiv edin"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"İş faylları seçmək olmur"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT admininiz şəxsi tətbiqdən iş fayllarına giriş icazəsi vermir"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Şəxsi faylları seçmək olmur"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT admininiz iş tətbiqindən şəxsi fayllara giriş icazəsi vermir"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> fayllarını seçmək olmur"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT admini <xliff:g id="PROFILE_1">%2$s</xliff:g> tətbiqindən <xliff:g id="PROFILE_0">%1$s</xliff:g> fayllarına giriş icazəsi vermir"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"İş profilində saxlamaq olmur"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT admininiz şəxsi fayllarınızı iş profilinizdə saxlamağa icazə vermir"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Şəxsi profildə saxlamaq olmur"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT admininiz iş fayllarınızı şəxsi profilinizdə saxlamağa icazə vermir"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> profilində yadda saxlamaq olmur"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT admini <xliff:g id="PROFILE_0">%1$s</xliff:g> fayllarını <xliff:g id="PROFILE_1">%2$s</xliff:g> profilində yadda saxlamağa icazə vermir"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Bu əməliyyata icazə verilmir"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Ətraflı məlumat üçün IT admininiz ilə əlaqə saxlayın"</string>
     <string name="root_recent" msgid="1080156975424341623">"Son"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Yeni ad"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> faylını önizləyin"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> adlı iş faylına əvvəlcədən baxın"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> faylını (<xliff:g id="FILENAME">%2$s</xliff:g>) önizləyin"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Faylları digər tətbiqlərdə axtarın"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonim"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Bu qovluğu istifadə edin"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Bu qovluğu istifadə etmək mümkün deyil"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Məxfiliyinizi qorumaq üçün başqa qovluq seçin"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Yeni qovluq yaradın"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Bu telefonu axtarın"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Bu cihazda axtarın"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"<xliff:g id="TEXT">%1$s</xliff:g> üçün axtarış tarixçəsini silin"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Şəxsi"</string>
     <string name="work_tab" msgid="7265359366883747413">"İş"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index d0c07ef..a131e26 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Učitavanje sadržaja trenutno nije moguće"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Poslovne aplikacije su pauzirane"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Uključi poslovne aplikacije"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Pauzirane su aplikacije profila: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Uključi aplikacije profila: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Ne možete da izaberete poslovne fajlove"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT administrator vam ne dozvoljava da pristupate datotekama za posao iz lične aplikacije"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Izbor ličnih datoteka nije uspeo"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT administrator vam ne dozvoljava da pristupate ličnim datotekama iz poslovne aplikacije"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Ne možete da izaberete fajlove sa profila: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT administrator ne dozvoljava da fajlovima na profilu: <xliff:g id="PROFILE_0">%1$s</xliff:g> pristupate iz aplikacije profila: <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Ne možete da sačuvate na poslovnom profilu"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT administrator vam ne dozvoljava da čuvate lične datoteke na poslovnom profilu"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Ne možete da sačuvate na ličnom profilu"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT administrator vam ne dozvoljava da čuvate datoteke za posao na ličnom profilu"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Ne možete da čuvate na profilu: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT administrator ne dozvoljava da fajlove sa profila: <xliff:g id="PROFILE_0">%1$s</xliff:g> čuvate na profilu: <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Ova radnja nije dozvoljena"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Obratite se IT administratoru da biste saznali više"</string>
     <string name="root_recent" msgid="1080156975424341623">"Nedavno"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Novi naziv"</string>
     <string name="preview_file" msgid="4056622696305432343">"Pregledajte datoteku <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Pregledajte datoteku za posao <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Pregledajte fajl <xliff:g id="FILENAME">%2$s</xliff:g> sa profila: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Pregledajte datoteke u drugim aplikacijama"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonimna"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Koristi ovaj folder"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Ne možete da koristite ovaj folder"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Da biste zaštitili privatnost, odaberite neki drugi folder"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Napravi novi folder"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Pretražite ovaj telefon"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Pretraži ovaj uređaj"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Izbrišite istoriju pretrage <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Lično"</string>
     <string name="work_tab" msgid="7265359366883747413">"Posao"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 3443572..4c2a98c 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Зараз немагчыма загрузіць змесціва"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Працоўныя праграмы прыпынены"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Уключыць працоўныя праграмы"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Праграмы тыпу \"<xliff:g id="PROFILE">%1$s</xliff:g>\" прыпынены"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Уключыць праграмы тыпу \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Не ўдалося выбраць працоўныя файлы"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Ваш ІТ-адміністратар забараняе мець доступ да працоўных файлаў з асабістай праграмы"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Не ўдалося выбраць асабістыя файлы"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Ваш ІТ-адміністратар забараняе мець доступ да асабістых файлаў з працоўнай праграмы"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Выбіраць файлы тыпу \"<xliff:g id="PROFILE">%1$s</xliff:g>\" нельга"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT-адміністратар не дазваляе вам атрымліваць доступ да файлаў тыпу \"<xliff:g id="PROFILE_0">%1$s</xliff:g>\" праз праграму тыпу \"<xliff:g id="PROFILE_1">%2$s</xliff:g>\""</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Не ўдалося захаваць у працоўным профілі"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Ваш ІТ-адміністратар забараняе захоўваць асабістыя файлы ў працоўным профілі"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Не ўдалося захаваць у асабістым профілі"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Ваш ІТ-адміністратар забараняе захоўваць працоўныя файлы ў асабістым профілі"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Захоўваць файлы ў профілі тыпу \"<xliff:g id="PROFILE">%1$s</xliff:g>\" нельга"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT-адміністратар не дазваляе вам захоўваць у вашым профілі (тып: <xliff:g id="PROFILE_1">%2$s</xliff:g>) файлы тыпу \"<xliff:g id="PROFILE_0">%1$s</xliff:g>\""</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Недапушчальнае дзеянне"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Каб даведацца больш, звярніцеся да ІT-адміністратара"</string>
     <string name="root_recent" msgid="1080156975424341623">"Апошнія"</string>
@@ -310,6 +316,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Новая назва"</string>
     <string name="preview_file" msgid="4056622696305432343">"Папярэдні прагляд файла \"<xliff:g id="FILENAME">%1$s</xliff:g>\""</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Перадпрагляд працоўнага файла \"<xliff:g id="FILENAME">%1$s</xliff:g>\""</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Папярэдні прагляд файла тыпу \"<xliff:g id="PROFILE">%1$s</xliff:g>\", які мае назву \"<xliff:g id="FILENAME">%2$s</xliff:g>\""</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Пошук файлаў у іншых праграмах"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Ананімная"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Выкарыстоўваць гэту папку"</string>
@@ -318,7 +325,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Не ўдалося скарыстаць гэту папку"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Для аховы вашай прыватнасці выберыце іншую папку"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Стварыць новую папку"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Пошук на гэтым тэлефоне"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Пошук на гэтай прыладзе"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Выдаліць гісторыю пошуку <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Асабісты"</string>
     <string name="work_tab" msgid="7265359366883747413">"Працоўны"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 8f9ae67..2313b50 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Понастоящем съдържанието не може да се зареди"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Служебните приложения са поставени на пауза"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Включване на служебните приложения"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> приложения са поставени на пауза"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Включване на <xliff:g id="PROFILE">%1$s</xliff:g> приложения"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Избирането на служебни файлове не е възможно"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Системният ви администратор не разрешава достъпа до служебните ви файлове от лично приложение"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Избирането на лични файлове не е възможно"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Системният ви администратор не разрешава достъпа до личните ви файлове от служебно приложение"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Не можете да избирате <xliff:g id="PROFILE">%1$s</xliff:g> файлове"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Системният ви администратор не разрешава достъп до <xliff:g id="PROFILE_0">%1$s</xliff:g> файлове от <xliff:g id="PROFILE_1">%2$s</xliff:g> приложение"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Запазването в служебния потребителски профил не е възможно"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Системният ви администратор не разрешава да запазвате лични файлове в служебния си потребителски профил"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Запазването в личния потребителски профил не е възможно"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Системният ви администратор не разрешава да запазвате служебни файлове в личния си потребителски профил"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Не можете да запазвате в <xliff:g id="PROFILE">%1$s</xliff:g> потребителски профил"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Системният ви администратор не разрешава да запазвате <xliff:g id="PROFILE_0">%1$s</xliff:g> файлове в <xliff:g id="PROFILE_1">%2$s</xliff:g> потребителски профил"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Това действие не е разрешено"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"За да научите повече, обърнете се към системния си администратор"</string>
     <string name="root_recent" msgid="1080156975424341623">"Скорошни"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Ново име"</string>
     <string name="preview_file" msgid="4056622696305432343">"Визуализация на файла <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Визуализация на служебния файл <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Визуализация на <xliff:g id="PROFILE">%1$s</xliff:g> файл <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Преглед на файлове в други приложения"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Анонимно"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Използване на тази папка"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Тази папка не може да се използва"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Изберете друга папка, за да защитите поверителността си"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Създаване на нова папка"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Търсете в този телефон"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Търсете в това устройство"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Изтриване на <xliff:g id="TEXT">%1$s</xliff:g> от историята на търсенията"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Лични"</string>
     <string name="work_tab" msgid="7265359366883747413">"Служебни"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 9cb1344..f51afc5 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"এই মুহূর্তে কন্টেন্ট লোড করা যাবে না"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"অফিসের অ্যাপ পজ করা আছে"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"অফিসের অ্যাপ চালু করুন"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> অ্যাপ পজ করা হয়েছে"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> অ্যাপ চালু করুন"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"অফিসের ফাইল বেছে নেওয়া যাচ্ছে না"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"আপনার আইটি অ্যাডমিন আপনাকে ব্যক্তিগত অ্যাপ থেকে অফিসের ফাইল অ্যাক্সেস করতে দেয় না"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"ব্যক্তিগত ফাইল বেছে নেওয়া যাচ্ছে না"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"আপনার আইটি অ্যাডমিন আপনাকে অফিস অ্যাপ থেকে ব্যক্তিগত ফাইল অ্যাক্সেস করতে দেয় না"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> ফাইল বেছে নিতে পারে না"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"আপনার আইটি অ্যাডমিন আপনাকে <xliff:g id="PROFILE_1">%2$s</xliff:g> অ্যাপ থেকে <xliff:g id="PROFILE_0">%1$s</xliff:g> ফাইল অ্যাক্সেস করার অনুমতি দেয় না"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"অফিস প্রোফাইলে সেভ করা যাচ্ছে না"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"আপনার আইটি অ্যাডমিন আপনাকে অফিস প্রোফাইলে ব্যক্তিগত ফাইল সেভ করার অনুমতি দেয় না"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"ব্যক্তিগত প্রোফাইলে সেভ করা যাচ্ছে না"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"আপনার আইটি অ্যাডমিন আপনাকে ব্যক্তিগত প্রোফাইলে অফিসের ফাইল সেভ করার অনুমতি দেয় না"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> প্রোফাইলে সেভ করতে পারে না"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"আপনার আইটি অ্যাডমিন আপনার <xliff:g id="PROFILE_1">%2$s</xliff:g> প্রোফাইলে <xliff:g id="PROFILE_0">%1$s</xliff:g> ফাইল সেভ করার অনুমতি দেয় না"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"এটি করা যাবে না"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"আরও জানতে, আপনার আইটি অ্যাডমিনের সাথে যোগাযোগ করুন"</string>
     <string name="root_recent" msgid="1080156975424341623">"সাম্প্রতিক"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"নতুন নাম"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> ফাইলের প্রিভিউ দেখুন"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> অফিস ফাইলের প্রিভিউ দেখুন"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="FILENAME">%2$s</xliff:g> <xliff:g id="PROFILE">%1$s</xliff:g> ফাইলের প্রিভিউ দেখুন"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"অন্যান্য অ্যাপে ফাইল ব্রাউজ করুন"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"বেনামী"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"এই ফোল্ডার ব্যবহার করুন"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"এই ফোল্ডার ব্যবহার করা যাচ্ছে না"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"আপনার গোপনীয়তা সুরক্ষিত রাখতে, অন্য ফোল্ডার বেছে নিন"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"নতুন ফোল্ডার তৈরি করুন"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"এই ফোনে খুঁজুন"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"এই ডিভাইসে খুঁজুন"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"সার্চের ইতিহাস মুছুন <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"ব্যক্তিগত"</string>
     <string name="work_tab" msgid="7265359366883747413">"অফিস"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 3e2af17..645188d 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Trenutno nije moguće učitati sadržaj"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Poslovne aplikacije su pauzirane"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Uključi poslovne aplikacije"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Aplikacije profila \"<xliff:g id="PROFILE">%1$s</xliff:g>\" su pauzirane"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Uključi aplikacije profila \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Nije moguće odabrati poslovne fajlove"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT administrator vam ne dozvoljava da pristupate poslovnim fajlovima iz lične aplikacije"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Nije moguće odabrati lične fajlove"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT administrator vam ne dozvoljava da pristupate ličnim fajlovima iz poslovne aplikacije"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Nije moguće odabrati fajlove s profila \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT administrator vam ne dozvoljava da pristupite fajlovima s profila \"<xliff:g id="PROFILE_0">%1$s</xliff:g>\" iz aplikacije profila \"<xliff:g id="PROFILE_1">%2$s</xliff:g>\""</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Nije moguće sačuvati na radni profil"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT administrator vam ne dozvoljava da pohranjujete lične fajlove na radni profil"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Nije moguće sačuvati na lični profil"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT administrator vam ne dozvoljava da pohranjujete poslovne fajlove na lični profil"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Nije moguće sačuvati na profil \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT administrator vam ne dozvoljava da sačuvate fajlove s profila \"<xliff:g id="PROFILE_0">%1$s</xliff:g>\" na profil \"<xliff:g id="PROFILE_1">%2$s</xliff:g>\""</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Ta radnja nije dopuštena"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Da saznate više, kontaktirajte IT administratora"</string>
     <string name="root_recent" msgid="1080156975424341623">"Nedavno"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Novo ime"</string>
     <string name="preview_file" msgid="4056622696305432343">"Pregled fajla <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Pregledajte poslovni fajl <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Pregled fajla <xliff:g id="FILENAME">%2$s</xliff:g> s profila \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Pretraživanje fajlova u drugim aplikacijama"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonimno"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Koristi ovaj folder"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Nije moguće koristiti ovaj folder"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Da zaštitite svoju privatnost, odaberite drugi folder"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Napravi novi folder"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Pretražite ovaj telefon"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Pretražite uređaj"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Izbriši historiju pretraživanja <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Lično"</string>
     <string name="work_tab" msgid="7265359366883747413">"Poslovno"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index fdc9ec6..7a3b083 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"En aquest moment no es pot carregar el contingut"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Les aplicacions de treball estan en pausa"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Activa les aplicacions de treball"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Les aplicacions d\'aquest perfil (<xliff:g id="PROFILE">%1$s</xliff:g>) s\'han posat en pausa"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Activa les aplicacions d\'aquest perfil (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"No es poden seleccionar els fitxers de treball"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"L\'administrador de TI no et permet accedir als fitxers de treball des de l\'aplicació personal"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"No es poden seleccionar els fitxers personals"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"L\'administrador de TI no et permet accedir als fitxers personals des de l\'aplicació de treball"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"No es poden seleccionar fitxers d\'aquest perfil (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"L\'administrador de TI no et permet accedir a fitxers d\'un perfil (<xliff:g id="PROFILE_0">%1$s</xliff:g>) des d\'una aplicació de l\'altre perfil (<xliff:g id="PROFILE_1">%2$s</xliff:g>)"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"No es pot desar al perfil de treball"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"L\'administrador de TI no et permet desar fitxers personals al teu perfil de treball"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"No es pot desar al perfil personal"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"L\'administrador de TI no et permet desar fitxers de treball al teu perfil personal"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"No es pot desar en aquest perfil (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"L\'administrador de TI no et permet desar fitxers d\'un perfil (<xliff:g id="PROFILE_0">%1$s</xliff:g>) a l\'altre perfil (<xliff:g id="PROFILE_1">%2$s</xliff:g>)"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Aquesta acció no està permesa"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Per obtenir més informació, contacta amb l\'administrador de TI"</string>
     <string name="root_recent" msgid="1080156975424341623">"Recents"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nom nou"</string>
     <string name="preview_file" msgid="4056622696305432343">"Previsualitza el fitxer <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Previsualitza el fitxer de treball <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Previsualitza el fitxer <xliff:g id="FILENAME">%2$s</xliff:g> d\'aquest perfil (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Cerca fitxers en altres aplicacions"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anònima"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Utilitza aquesta carpeta"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"No es pot utilitzar aquesta carpeta"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Per protegir la teva privadesa, tria una altra carpeta"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Crea una carpeta"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Cerca en aquest telèfon"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Cerca en aquest dispositiu"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Suprimeix l\'historial de cerques <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personal"</string>
     <string name="work_tab" msgid="7265359366883747413">"Treball"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 27aba7e..44ee419 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Obsah teď nelze načíst"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Pracovní aplikace jsou pozastaveny"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Zapnout pracovní aplikace"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> aplikace jsou pozastaveny"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Zapnout <xliff:g id="PROFILE">%1$s</xliff:g> aplikace"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Pracovní soubory nelze vybrat"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Administrátor IT nepovoluje otevírat pracovní soubory pomocí osobní aplikace"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Osobní soubory nelze vybrat"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Administrátor IT nepovoluje otevírat osobní soubory pomocí pracovní aplikace"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> soubory nelze vybrat"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Administrátor IT nepovoluje přístup k <xliff:g id="PROFILE_0">%1$s</xliff:g> profilům z <xliff:g id="PROFILE_1">%2$s</xliff:g> aplikace"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Do pracovního profilu nelze ukládat"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Administrátor IT nepovoluje ukládat osobní soubory do pracovního profilu"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Do osobního profilu nelze ukládat"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Administrátor IT nepovoluje ukládat pracovní soubory do osobního profilu"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Do <xliff:g id="PROFILE">%1$s</xliff:g> profilu nelze ukládat"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Administrátor IT nepovoluje ukládat <xliff:g id="PROFILE_0">%1$s</xliff:g> soubory do <xliff:g id="PROFILE_1">%2$s</xliff:g> profilu"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Tato akce není povolena"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Další informace vám poskytne administrátor IT"</string>
     <string name="root_recent" msgid="1080156975424341623">"Nedávné"</string>
@@ -310,6 +316,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nový název"</string>
     <string name="preview_file" msgid="4056622696305432343">"Zobrazit náhled souboru <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Náhled pracovního souboru <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Zobrazit náhled <xliff:g id="PROFILE">%1$s</xliff:g> souboru <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Procházet soubory v ostatních aplikacích"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonymní"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Použít tuto složku"</string>
@@ -318,7 +325,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Tuto složku nelze použít"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Z důvodu ochrany soukromí zvolte jinou složku"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Vytvořit novou složku"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Hledat v telefonu"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Prohledat tohle zařízení"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Vymazat historii vyhledávání <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Osobní"</string>
     <string name="work_tab" msgid="7265359366883747413">"Pracovní"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index bd7d89d..c0d5cf0 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Der kan ikke indlæses indhold i øjeblikket"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Dine arbejdsapps er sat på pause"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Aktivér arbejdsapps"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g>-apps er sat på pause"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Aktivér <xliff:g id="PROFILE">%1$s</xliff:g>-apps"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Arbejdsfiler kan ikke vælges"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Din it-administrator har ikke givet dig tilladelse til at åbne arbejdsfiler fra en personlig app"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Personlige filer kan ikke vælges"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Din it-administrator har ikke givet dig tilladelse til at åbne personlige filer fra en arbejdsapp"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Kan ikke vælge <xliff:g id="PROFILE">%1$s</xliff:g>-filer"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Din it-administrator tillader ikke, at du tilgår <xliff:g id="PROFILE_0">%1$s</xliff:g>-filer via en <xliff:g id="PROFILE_1">%2$s</xliff:g> app"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Filerne kan ikke gemmes på din arbejdsprofil"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Din it-administrator har ikke givet dig tilladelse til at gemme personlige filer på din arbejdsprofil"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Filerne kan ikke gemmes på den personlige profil"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Din it-administrator har ikke givet dig tilladelse til at gemme arbejdsfiler på din personlige profil"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Kan ikke gemme i <xliff:g id="PROFILE">%1$s</xliff:g>-profil"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Din it-administrator tillader ikke, at du gemmer <xliff:g id="PROFILE_0">%1$s</xliff:g> filer på din <xliff:g id="PROFILE_1">%2$s</xliff:g>-profil"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Denne handling er ikke tilladt"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Kontakt din it-administrator for at få flere oplysninger"</string>
     <string name="root_recent" msgid="1080156975424341623">"Seneste"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nyt navn"</string>
     <string name="preview_file" msgid="4056622696305432343">"Se forhåndsvisning af filen <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Se en forhåndsvisning af arbejdsfilen <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Se forhåndsvisning af <xliff:g id="PROFILE">%1$s</xliff:g>-filen <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Gennemse filer i andre apps"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonym"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Brug denne mappe"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Denne mappe kan ikke bruges"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"For at beskytte dit privatliv skal du vælge en anden mappe"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Opret ny mappe"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Søg på denne telefon"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Søg på denne enhed"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Slet søgehistorikken <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personlig"</string>
     <string name="work_tab" msgid="7265359366883747413">"Arbejde"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 978822d..381f3b6 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Inhalte können momentan nicht geladen werden"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Geschäftliche Apps sind pausiert"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Geschäftliche Apps aktivieren"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Apps aus dem Profil „<xliff:g id="PROFILE">%1$s</xliff:g>“ sind pausiert"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Apps aus dem Profil „<xliff:g id="PROFILE">%1$s</xliff:g>“ aktivieren"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Auswahl geschäftlicher Dateien nicht möglich"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Dein IT-Administrator hat festgelegt, dass du geschäftliche Dateien nicht mit einer privaten App aufrufen darfst"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Auswahl persönlicher Dateien nicht möglich"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Dein IT-Administrator hat festgelegt, dass du persönliche Dateien nicht mit einer geschäftlichen App aufrufen darfst"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Auswahl von Dateien aus dem Profil „<xliff:g id="PROFILE">%1$s</xliff:g>“ nicht möglich"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Dein IT-Administrator lässt den Zugriff auf Dateien aus dem Profil „<xliff:g id="PROFILE_0">%1$s</xliff:g>“ aus einer App „<xliff:g id="PROFILE_1">%2$s</xliff:g>“ nicht zu"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Speichern im Arbeitsprofil nicht möglich"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Dein IT-Administrator hat festgelegt, dass du persönliche Dateien nicht in deinem Arbeitsprofil speichern darfst"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Speichern im privaten Profil nicht möglich"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Dein IT-Administrator hat festgelegt, dass du geschäftliche Dateien nicht in deinem privaten Profil speichern darfst"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Speichern im Profil „<xliff:g id="PROFILE">%1$s</xliff:g>“ nicht möglich"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Dein IT-Administrator lässt das Speichern von Dateien aus dem Profil „<xliff:g id="PROFILE_0">%1$s</xliff:g>“ in deinem Profil „<xliff:g id="PROFILE_1">%2$s</xliff:g>“ nicht zu"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Diese Aktion ist nicht zulässig"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Wenn du mehr wissen möchtest, wende dich bitte an deinen IT-Administrator"</string>
     <string name="root_recent" msgid="1080156975424341623">"Zuletzt verwendet"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Neuer Name"</string>
     <string name="preview_file" msgid="4056622696305432343">"Datei \"<xliff:g id="FILENAME">%1$s</xliff:g>\" als Vorschau ansehen"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Vorschau der geschäftlichen Datei \"<xliff:g id="FILENAME">%1$s</xliff:g>\""</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Datei „<xliff:g id="FILENAME">%2$s</xliff:g>“ aus dem Profil „<xliff:g id="PROFILE">%1$s</xliff:g>“ als Vorschau ansehen"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Dateien in anderen Apps ansehen"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonym"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Diesen Ordner verwenden"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Dieser Ordner kann nicht verwendet werden"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Zum Schutz deiner Daten einen anderen Ordner auswählen"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Neuen Ordner erstellen"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Auf diesem Smartphone suchen"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Auf diesem Gerät suchen"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"<xliff:g id="TEXT">%1$s</xliff:g>-Suchverlauf löschen"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Privat"</string>
     <string name="work_tab" msgid="7265359366883747413">"Geschäftlich"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 99d9f85..9233d5d 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Δεν είναι δυνατή η φόρτωση περιεχομένου τώρα"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Οι εφαρμογές εργασίας τέθηκαν σε παύση"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Ενεργοποίηση εφαρμογών εργασιών"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Οι εφαρμογές του προφίλ <xliff:g id="PROFILE">%1$s</xliff:g> έχουν τεθεί σε παύση"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Ενεργοποίηση εφαρμογών του προφίλ <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Δεν είναι δυνατή η επιλογή αρχείων εργασίας."</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Ο διαχειριστής δεν επιτρέπει την πρόσβαση σε αρχεία εργασίας από μια προσωπική εφαρμογή."</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Δεν είναι δυνατή η επιλογή προσωπικών αρχείων."</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Ο διαχειριστής ΙΤ δεν επιτρέπει την πρόσβαση σε προσωπικά αρχεία από μια εφαρμογή εργασιών."</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Δεν είναι δυνατή η επιλογή αρχείων του προφίλ <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Ο διαχειριστής IT δεν επιτρέπει την πρόσβαση σε αρχεία του προφίλ <xliff:g id="PROFILE_0">%1$s</xliff:g> από μια εφαρμογή του προφίλ <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Δεν είναι δυνατή η αποθήκευση στο προφίλ εργασίας."</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Ο διαχειριστής IT δεν επιτρέπει την αποθήκευση προσωπικών αρχείων στο προφίλ εργασίας σας."</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Δεν είναι δυνατή η αποθήκευση στο προσωπικό σας προφίλ."</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Ο διαχειριστής ΙΤ δεν επιτρέπει την αποθήκευση αρχείων εργασίας στο προσωπικό σας προφίλ."</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Δεν είναι δυνατή η αποθήκευση του προφίλ <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Ο διαχειριστής IT δεν επιτρέπει την αποθήκευση αρχείων του προφίλ <xliff:g id="PROFILE_0">%1$s</xliff:g> στο προφίλ <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Η συγκεκριμένη ενέργεια δεν επιτρέπεται."</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Για να μάθετε περισσότερα, επικοινωνήστε με τον διαχειριστή IT."</string>
     <string name="root_recent" msgid="1080156975424341623">"Πρόσφατα"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Νέο όνομα"</string>
     <string name="preview_file" msgid="4056622696305432343">"Προεπισκόπηση του αρχείου <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Προεπισκόπηση του αρχείου εργασίας <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Προεπισκόπηση του αρχείου <xliff:g id="FILENAME">%2$s</xliff:g> του προφίλ <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Αναζήτηση αρχείων σε άλλες εφαρμογές"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Ανώνυμη"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Χρήση αυτού του φακέλου"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Δεν είναι δυνατή η χρήση αυτού του φακέλου"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Για την προστασία του απορρήτου σας, επιλέξτε άλλο φάκελο"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Δημιουργία νέου φακέλου"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Αναζήτηση σε αυτό το τηλέφωνο"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Αναζήτηση σε αυτή τη συσκευή"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Διαγραφή ιστορικού αναζήτησης <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Προσωπικός"</string>
     <string name="work_tab" msgid="7265359366883747413">"Εργασίας"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index c05071b..5523ed3 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Can’t load content at the moment"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Work apps are paused"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Turn on work apps"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> apps are paused"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Turn on <xliff:g id="PROFILE">%1$s</xliff:g> apps"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Can’t select work files"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Your IT admin doesn’t allow you to access work files from a personal app"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Can’t select personal files"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Your IT admin doesn’t allow you to access personal files from a work app"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Can\'t select <xliff:g id="PROFILE">%1$s</xliff:g> files"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Your IT admin doesn\'t allow you to access <xliff:g id="PROFILE_0">%1$s</xliff:g> files from a <xliff:g id="PROFILE_1">%2$s</xliff:g> app"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Can’t save to work profile"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Your IT admin doesn’t allow you to save personal files to your work profile"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Can’t save to personal profile"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Your IT admin doesn’t allow you to save work files to your personal profile"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Can\'t save to <xliff:g id="PROFILE">%1$s</xliff:g> profile"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Your IT admin doesn\'t allow you to save <xliff:g id="PROFILE_0">%1$s</xliff:g> files to your <xliff:g id="PROFILE_1">%2$s</xliff:g> profile"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"This action isn’t allowed"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"To learn more, contact your IT admin"</string>
     <string name="root_recent" msgid="1080156975424341623">"Recent"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"New name"</string>
     <string name="preview_file" msgid="4056622696305432343">"Preview the file <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Preview the work file <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Preview the <xliff:g id="PROFILE">%1$s</xliff:g> file <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Browse files in other apps"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonymous"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Use this folder"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Can’t use this folder"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"To protect your privacy, choose another folder"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Create new folder"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Search this phone"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Search this device"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Delete search history <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personal"</string>
     <string name="work_tab" msgid="7265359366883747413">"Work"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index d3d6da1..0dcc1f5 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Can’t load content at the moment"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Work apps are paused"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Turn on work apps"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> apps are paused"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Turn on <xliff:g id="PROFILE">%1$s</xliff:g> apps"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Can’t select work files"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Your IT admin doesn’t allow you to access work files from a personal app"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Can’t select personal files"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Your IT admin doesn’t allow you to access personal files from a work app"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Can’t select <xliff:g id="PROFILE">%1$s</xliff:g> files"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Your IT admin doesn’t allow you to access <xliff:g id="PROFILE_0">%1$s</xliff:g> files from a <xliff:g id="PROFILE_1">%2$s</xliff:g> app"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Can’t save to work profile"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Your IT admin doesn’t allow you to save personal files to your work profile"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Can’t save to personal profile"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Your IT admin doesn’t allow you to save work files to your personal profile"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Can’t save to <xliff:g id="PROFILE">%1$s</xliff:g> profile"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Your IT admin doesn’t allow you to save <xliff:g id="PROFILE_0">%1$s</xliff:g> files to your <xliff:g id="PROFILE_1">%2$s</xliff:g> profile"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"This action isn’t allowed"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"To learn more, contact your IT admin"</string>
     <string name="root_recent" msgid="1080156975424341623">"Recent"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"New name"</string>
     <string name="preview_file" msgid="4056622696305432343">"Preview the file <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Preview the work file <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Preview the <xliff:g id="PROFILE">%1$s</xliff:g> file <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Browse files in other apps"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonymous"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Use this folder"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Can’t use this folder"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"To protect your privacy, choose another folder"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Create new folder"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Search this phone"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Search this device"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Delete search history <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personal"</string>
     <string name="work_tab" msgid="7265359366883747413">"Work"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index c05071b..5523ed3 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Can’t load content at the moment"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Work apps are paused"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Turn on work apps"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> apps are paused"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Turn on <xliff:g id="PROFILE">%1$s</xliff:g> apps"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Can’t select work files"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Your IT admin doesn’t allow you to access work files from a personal app"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Can’t select personal files"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Your IT admin doesn’t allow you to access personal files from a work app"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Can\'t select <xliff:g id="PROFILE">%1$s</xliff:g> files"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Your IT admin doesn\'t allow you to access <xliff:g id="PROFILE_0">%1$s</xliff:g> files from a <xliff:g id="PROFILE_1">%2$s</xliff:g> app"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Can’t save to work profile"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Your IT admin doesn’t allow you to save personal files to your work profile"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Can’t save to personal profile"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Your IT admin doesn’t allow you to save work files to your personal profile"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Can\'t save to <xliff:g id="PROFILE">%1$s</xliff:g> profile"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Your IT admin doesn\'t allow you to save <xliff:g id="PROFILE_0">%1$s</xliff:g> files to your <xliff:g id="PROFILE_1">%2$s</xliff:g> profile"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"This action isn’t allowed"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"To learn more, contact your IT admin"</string>
     <string name="root_recent" msgid="1080156975424341623">"Recent"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"New name"</string>
     <string name="preview_file" msgid="4056622696305432343">"Preview the file <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Preview the work file <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Preview the <xliff:g id="PROFILE">%1$s</xliff:g> file <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Browse files in other apps"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonymous"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Use this folder"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Can’t use this folder"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"To protect your privacy, choose another folder"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Create new folder"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Search this phone"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Search this device"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Delete search history <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personal"</string>
     <string name="work_tab" msgid="7265359366883747413">"Work"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index c05071b..5523ed3 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Can’t load content at the moment"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Work apps are paused"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Turn on work apps"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> apps are paused"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Turn on <xliff:g id="PROFILE">%1$s</xliff:g> apps"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Can’t select work files"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Your IT admin doesn’t allow you to access work files from a personal app"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Can’t select personal files"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Your IT admin doesn’t allow you to access personal files from a work app"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Can\'t select <xliff:g id="PROFILE">%1$s</xliff:g> files"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Your IT admin doesn\'t allow you to access <xliff:g id="PROFILE_0">%1$s</xliff:g> files from a <xliff:g id="PROFILE_1">%2$s</xliff:g> app"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Can’t save to work profile"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Your IT admin doesn’t allow you to save personal files to your work profile"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Can’t save to personal profile"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Your IT admin doesn’t allow you to save work files to your personal profile"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Can\'t save to <xliff:g id="PROFILE">%1$s</xliff:g> profile"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Your IT admin doesn\'t allow you to save <xliff:g id="PROFILE_0">%1$s</xliff:g> files to your <xliff:g id="PROFILE_1">%2$s</xliff:g> profile"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"This action isn’t allowed"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"To learn more, contact your IT admin"</string>
     <string name="root_recent" msgid="1080156975424341623">"Recent"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"New name"</string>
     <string name="preview_file" msgid="4056622696305432343">"Preview the file <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Preview the work file <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Preview the <xliff:g id="PROFILE">%1$s</xliff:g> file <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Browse files in other apps"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonymous"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Use this folder"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Can’t use this folder"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"To protect your privacy, choose another folder"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Create new folder"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Search this phone"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Search this device"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Delete search history <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personal"</string>
     <string name="work_tab" msgid="7265359366883747413">"Work"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index f408932..b3abdd1 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‎‏‏‎‏‏‎‏‎‏‏‎‎‎‎‏‎‏‏‏‏‎‏‎‎‎‎‏‎‏‎‎‎‎‎‎‏‎‏‎‎‎‎Can’t load content at the moment‎‏‎‎‏‎"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‏‎‏‏‎‏‏‏‎‎‎‎‎‏‎‎‎‎‎‏‏‎‎‎‎‏‏‎‏‏‎‏‏‎‎‏‏‎‏‏‏‎‏‏‎‎Work apps are paused‎‏‎‎‏‎"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‎‏‎‏‏‏‎‎‎‏‎‏‎‏‏‏‎‎‏‎‎‏‎‏‏‏‏‎‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎Turn on work apps‎‏‎‎‏‎"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‏‎‏‏‎‏‎‎‎‎‏‏‎‎‏‏‏‏‎‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="PROFILE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ apps are paused‎‏‎‎‏‎"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‎‏‎‎‎‎‏‎‏‏‎‏‎‎‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‏‏‎‎‎‏‎‎‏‏‎‎Turn on ‎‏‎‎‏‏‎<xliff:g id="PROFILE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ apps‎‏‎‎‏‎"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‎‏‏‎‎‎‎‎‎‎‏‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‏‎‏‎‏‏‏‏‎‎‏‎‎‎‎‏‎‎Can’t select work files‎‏‎‎‏‎"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‎‏‏‏‏‏‎‎‎‎‏‏‎‏‏‎‎‎‎‎‏‏‎‏‏‏‎‎‎‎‎‎‏‏‎‎‏‏‏‎‎‏‎‎‎‎‏‏‎‏‎‏‎‎‎‏‎Your IT admin doesn’t allow you to access work files from a personal app‎‏‎‎‏‎"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‎‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‏‏‏‏‎‎‏‎‎‎‏‎‎‎‏‎‎‏‏‏‎‎‏‏‎‏‏‏‎‎‎‎‎‏‏‏‎‎Can’t select personal files‎‏‎‎‏‎"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‎‏‏‏‎‎‎‎‎‎‎‏‏‎‎‎‎‎‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎‏‎‎‎‎‎‎‏‎Your IT admin doesn’t allow you to access personal files from a work app‎‏‎‎‏‎"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‎‏‏‏‏‎‎‎‏‏‎‏‏‏‏‎‏‎‏‏‏‏‎‎‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‏‎‏‎‎‎‏‎‏‎Can’t select ‎‏‎‎‏‏‎<xliff:g id="PROFILE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ files‎‏‎‎‏‎"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‎‏‎‎‏‎‎‎‏‏‎‎‏‏‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‏‎‎‎‏‏‎‏‎‏‎‎‎‎‎Your IT admin doesn’t allow you to access ‎‏‎‎‏‏‎<xliff:g id="PROFILE_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎ files from a ‎‏‎‎‏‏‎<xliff:g id="PROFILE_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎ app‎‏‎‎‏‎"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎‏‏‎‏‏‏‎‏‎‎‏‎‏‏‎‎‎‎‏‎‏‏‏‎‏‎‎‏‎‎‎‎‎‎‎‎‏‏‏‏‎‏‎‎‏‏‏‎‎Can’t save to work profile‎‏‎‎‏‎"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‎‎‎‏‏‎‎‏‏‎‏‎‎‏‎‏‎‎‏‎‏‏‎‏‏‏‎‎‎‎‏‏‏‏‎‎‎‎‎‎‏‎‏‏‎‏‏‎‏‏‏‎‎‏‎‎Your IT admin doesn’t allow you to save personal files to your work profile‎‏‎‎‏‎"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‏‎‏‎‎‏‎‏‎‎‏‎‏‏‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‎‎‎Can’t save to personal profile‎‏‎‎‏‎"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‎‏‏‏‎‎‎‏‎‏‏‏‎‏‎‏‎‎‏‎‎‏‏‎‏‏‏‎Your IT admin doesn’t allow you to save work files to your personal profile‎‏‎‎‏‎"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‎‎‏‎‏‎‏‎‏‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‏‎‏‎‎‏‏‏‎‎‏‎‎‎‏‏‏‎‎Can’t save to ‎‏‎‎‏‏‎<xliff:g id="PROFILE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ profile‎‏‎‎‏‎"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‎‎‏‏‏‎‏‏‏‎‎‎‏‏‎‎‎‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‏‎‎‏‏‎‏‏‏‎‏‎Your IT admin doesn’t allow you to save ‎‏‎‎‏‏‎<xliff:g id="PROFILE_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎ files to your ‎‏‎‎‏‏‎<xliff:g id="PROFILE_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎ profile‎‏‎‎‏‎"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‏‏‏‎‎‏‏‎‎‎‏‏‎‏‎‎‏‎‎‏‏‏‎‎‎‎‎‏‏‏‏‏‎‎This action isn’t allowed‎‏‎‎‏‎"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎‎‎‏‎‎‎‏‏‎‎‎‎‏‎‏‎‏‏‏‎‎‏‎‎‎‎‏‏‎To learn more, contact your IT admin‎‏‎‎‏‎"</string>
     <string name="root_recent" msgid="1080156975424341623">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‏‎‎‎‎‎‎‎‏‏‎‎‏‏‏‎‏‏‏‎Recent‎‏‎‎‏‎"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‎‎‎‏‏‏‎‎‏‎‏‏‏‏‏‎‎‎‎‎‎‎‏‎‎‎‎‏‏‏‏‏‏‎‎‎‏‎‎‎‏‏‎‎‎‎‎‏‎‏‎‎‎New name‎‏‎‎‏‎"</string>
     <string name="preview_file" msgid="4056622696305432343">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‏‏‎‎‎‎‎‎‎‏‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‎‏‎‎‎‏‎‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‎‏‏‏‎Preview the file ‎‏‎‎‏‏‎<xliff:g id="FILENAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‏‎‎‎‏‏‏‎‏‏‏‏‎‎‎‎‏‎‏‎‎‎‏‎‎‏‎‏‏‎‏‏‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‎‎‏‎Preview the work file ‎‏‎‎‏‏‎<xliff:g id="FILENAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‏‎‎‏‎‏‎‎‎‏‏‏‏‎‎‏‏‏‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‎‏‎‎Preview the ‎‏‎‎‏‏‎<xliff:g id="PROFILE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ file ‎‏‎‎‏‏‎<xliff:g id="FILENAME">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‏‏‏‏‎‎‏‏‎‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‏‎‏‏‏‏‎‎‎‏‎‎‏‏‏‏‏‎‏‎‏‏‏‏‎‏‎Browse files in other apps‎‏‎‎‏‎"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‏‏‎‏‏‏‏‏‎‏‎‏‏‎‏‎‏‎‏‎‏‏‏‎‏‏‏‎‎‎‏‎‎‏‏‎‏‏‎‏‎‎‏‎‏‎‎‎‎‏‏‎‎Anonymous‎‏‎‎‏‎"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‏‎‏‏‏‎‎‏‎‎‎‏‏‎‎‏‏‏‎‎‏‏‏‎‏‏‎‏‏‎‎‏‏‎‎‏‏‏‎‎‏‏‏‎‎‏‏‏‎‎‎‎‎Use this folder‎‏‎‎‏‎"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‏‎‎‏‎‏‏‎‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‎‎‏‎‏‏‎‎‎‏‎‎Can’t use this folder‎‏‎‎‏‎"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‎‎‎‎‏‏‎‎‏‎‏‎‎‏‏‏‎‎‎‎‏‏‏‏‎‎‏‏‎‎‏‎‏‏‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‎‎‎‎‎‎To protect your privacy, choose another folder‎‏‎‎‏‎"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‏‎‏‎‏‏‎‎‎‏‏‏‎‏‎‎‎‏‎‎‏‏‎‏‏‎‎‏‏‎‎‏‎‏‎‎Create new folder‎‏‎‎‏‎"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‏‏‎‏‎‎‎‏‏‏‎‏‎‎‎‎‎‎‏‏‏‏‎‏‎‏‏‎‏‏‏‎‎‎‎‏‏‎‏‏‏‏‎‏‎‎‏‎Search this phone‎‏‎‎‏‎"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‎‎‎‎‏‏‎‏‏‎‎‏‏‏‎‏‏‏‎‎‎‏‏‎‎‏‏‎‏‎‏‎‏‎‏‎‏‏‎‏‎‏‎‎‏‎‏‎‏‎‏‎‎‎‏‎Search this device‎‏‎‎‏‎"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‏‏‏‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‏‎‏‏‎‎‏‏‎Delete search history ‎‏‎‎‏‏‎<xliff:g id="TEXT">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="personal_tab" msgid="3878576287868528503">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‎‎‏‏‎‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‏‎‎‏‎‎‎‎‏‎‏‎‏‎‎‎‎‎‏‎‎‏‏‏‎‏‏‏‎‏‏‏‎Personal‎‏‎‎‏‎"</string>
     <string name="work_tab" msgid="7265359366883747413">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎‏‎‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‎‏‏‏‎‎‎‏‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‏‏‎‎‏‎‏‎‏‎‏‎Work‎‏‎‎‏‎"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 39bd73f..595f358 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"No se puede cargar el contenido en este momento"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Las apps de trabajo están detenidas"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Activa las apps de trabajo"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Se pausaron las apps de <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Activar apps de <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"No se pueden seleccionar archivos de trabajo"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Tu administrador de TI no te permite acceder a archivos de trabajo desde una app personal."</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"No se pueden seleccionar archivos personales"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Tu administrador de TI no te permite acceder a archivos personales desde una app de trabajo."</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"No se pueden seleccionar archivos <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Tu administrador de TI no permite que accedas a los archivos <xliff:g id="PROFILE_0">%1$s</xliff:g> desde una app <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"No se puede guardar en el perfil de trabajo"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Tu administrador de TI no te permite guardar archivos personales en el perfil de trabajo."</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"No se puede guardar en el perfil personal"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Tu administrador de TI no te permite guardar archivos de trabajo en el perfil personal."</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"No se puede guardar en tu perfil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Tu administrador de TI no permite que guardes archivos <xliff:g id="PROFILE_0">%1$s</xliff:g> en el perfil de <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Esta acción no está permitida."</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Para obtener más información, comunícate con tu administrador de TI."</string>
     <string name="root_recent" msgid="1080156975424341623">"Recientes"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nombre nuevo"</string>
     <string name="preview_file" msgid="4056622696305432343">"Obtener vista previa del archivo <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Obtén una vista previa del archivo de trabajo <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Obtener vista previa del archivo <xliff:g id="FILENAME">%2$s</xliff:g> del perfil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Explorar archivos en otras apps"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anónimo"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Usar esta carpeta"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"No se puede usar esta carpeta"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Para proteger tu privacidad, elige otra carpeta."</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Crear carpeta"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Buscar en este teléfono"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Buscar este dispositivo"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Borrar historial de búsqueda de <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personal"</string>
     <string name="work_tab" msgid="7265359366883747413">"De trabajo"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index f723518..57e5b14 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"No se puede cargar contenido en este momento"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Las aplicaciones de trabajo están en pausa"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Activar aplicaciones de trabajo"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Las aplicaciones de este perfil (<xliff:g id="PROFILE">%1$s</xliff:g>) están pausadas"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Activar aplicaciones (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"No se pueden seleccionar archivos de trabajo"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Tu administrador de TI no te permite acceder a archivos de trabajo desde una aplicación personal"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"No se pueden seleccionar archivos personales"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Tu administrador de TI no te permite acceder a archivos personales desde una aplicación de trabajo"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"No se pueden seleccionar archivos de este perfil (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Tu administrador de TI no te permite acceder a archivos de este perfil (<xliff:g id="PROFILE_0">%1$s</xliff:g>) desde una aplicación del otro (<xliff:g id="PROFILE_1">%2$s</xliff:g>)"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"No se puede guardar en el perfil de trabajo"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Tu administrador de TI no te permite guardar archivos personales en tu perfil de trabajo"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"No se puede guardar en el perfil personal"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Tu administrador de TI no te permite guardar archivos de trabajo en tu perfil personal"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"No se puede guardar en este perfil (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Tu administrador de TI no te permite guardar archivos de un perfil (<xliff:g id="PROFILE_0">%1$s</xliff:g>) en el otro perfil (<xliff:g id="PROFILE_1">%2$s</xliff:g>)"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Esta acción no está permitida"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Para obtener más información, ponte en contacto con tu administrador de TI"</string>
     <string name="root_recent" msgid="1080156975424341623">"Reciente"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nombre nuevo"</string>
     <string name="preview_file" msgid="4056622696305432343">"Obtener una vista previa del archivo <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Previsualizar el archivo de trabajo <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Obtener una vista previa del archivo <xliff:g id="FILENAME">%2$s</xliff:g> de este perfil (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Ver archivos en otras aplicaciones"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anónimo"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Usar esta carpeta"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"No se puede usar esta carpeta"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Para proteger tu privacidad, elige otra carpeta"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Crear carpeta nueva"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Buscar en este teléfono"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Buscar en este dispositivo"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Eliminar el historial de búsqueda de <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personal"</string>
     <string name="work_tab" msgid="7265359366883747413">"Trabajo"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index b90ceb7..e7dbe75 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Sisu ei saa praegu laadida"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Töörakendused on peatatud"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Lülita töörakendused sisse"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Profiili <xliff:g id="PROFILE">%1$s</xliff:g> rakendused on peatatud"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Lülita profiili <xliff:g id="PROFILE">%1$s</xliff:g> rakendused sisse"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Tööfaile ei saa valida"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Teie IT-administraator ei luba teil isikliku rakenduse kaudu tööfailidele juurde pääseda"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Isiklikke faile ei saa valida"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Teie IT-administraator ei luba töörakenduse kaudu isiklikele failidele juurde pääseda"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Profiili <xliff:g id="PROFILE">%1$s</xliff:g> faile ei saa valida"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Teie IT-administraator ei luba teil rakenduse <xliff:g id="PROFILE_1">%2$s</xliff:g> kaudu profiili <xliff:g id="PROFILE_0">%1$s</xliff:g> failidele juurde pääseda"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Tööprofiilile ei saa salvestada"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Teie IT-administraator ei luba isiklikke faile tööprofiilile salvestada"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Isiklikule profiilile ei saa salvestada"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Teie IT-administraator ei luba teil tööfaile isiklikule profiilile salvestada"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Profiilile <xliff:g id="PROFILE">%1$s</xliff:g> ei saa salvestada"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Teie IT-administraator ei luba teil profiili <xliff:g id="PROFILE_0">%1$s</xliff:g> faile profiilile <xliff:g id="PROFILE_1">%2$s</xliff:g> salvestada"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"See toiming ei ole lubatud"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Lisateabe saamiseks võtke ühendust IT-administraatoriga"</string>
     <string name="root_recent" msgid="1080156975424341623">"Hiljutised"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Uus nimi"</string>
     <string name="preview_file" msgid="4056622696305432343">"Faili <xliff:g id="FILENAME">%1$s</xliff:g> eelvaade"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Kuva tööfaili <xliff:g id="FILENAME">%1$s</xliff:g> eelvaade"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Profiili <xliff:g id="PROFILE">%1$s</xliff:g> faili <xliff:g id="FILENAME">%2$s</xliff:g> eelvaade"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Failide sirvimine muudes rakendustes"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonüümne"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Kasuta seda kausta"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Seda kausta ei saa kasutada"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Oma privaatsuse kaitsmiseks kasutage teist kausta"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Loo uus kaust"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Otsige sellest telefonist"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Otsige selles seadmes"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Otsinguajaloo kustutamine <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Isiklik"</string>
     <string name="work_tab" msgid="7265359366883747413">"Töö"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 37b58da..7843dd5 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Une honetan ezin da kargatu edukia"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Pausatuta daude laneko aplikazioak"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Aktibatu laneko aplikazioak"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Profil honetako (<xliff:g id="PROFILE">%1$s</xliff:g>) aplikazioak pausatuta daude"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Aktibatu profil honetako (<xliff:g id="PROFILE">%1$s</xliff:g>) aplikazioak"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Ezin dira hautatu laneko fitxategiak"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IKT saileko administratzaileak ez dizu ematen baimenik laneko fitxategiak aplikazio pertsonal batetik atzitzeko"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Ezin dira hautatu fitxategi pertsonalak"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IKT saileko administratzaileak ez dizu ematen baimenik fitxategi pertsonalak laneko aplikazio batetik atzitzeko"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Ezin dira hautatu profil honetako (<xliff:g id="PROFILE">%1$s</xliff:g>) fitxategiak"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IKT saileko administratzaileak ez dizu eman baimenik profil bateko (<xliff:g id="PROFILE_0">%1$s</xliff:g>) fitxategiak beste profil bateko (<xliff:g id="PROFILE_1">%2$s</xliff:g>) aplikazio batekin atzitzeko"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Ezin da gorde laneko profilean"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IKT saileko administratzaileak ez dizu ematen baimenik fitxategi pertsonalak zure laneko profilean gordetzeko"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Ezin da gorde profil pertsonalean"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IKT saileko administratzaileak ez dizu ematen baimenik laneko fitxategiak zure profil pertsonalean gordetzeko"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Ezin da gorde profil honetan (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IKT saileko administratzaileak ez dizu eman baimenik profil bateko (<xliff:g id="PROFILE_0">%1$s</xliff:g>) fitxategiak beste profil batean (<xliff:g id="PROFILE_1">%2$s</xliff:g>) gordetzeko"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Ez da onartzen ekintza"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Informazio gehiago lortzeko, jarri IKT saileko administratzailearekin harremanetan"</string>
     <string name="root_recent" msgid="1080156975424341623">"Azkenak"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Izen berria"</string>
     <string name="preview_file" msgid="4056622696305432343">"Aurreikusi <xliff:g id="FILENAME">%1$s</xliff:g> fitxategia"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Aurreikusi laneko <xliff:g id="FILENAME">%1$s</xliff:g> fitxategia"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Aurreikusi profil honetako (<xliff:g id="PROFILE">%1$s</xliff:g>) <xliff:g id="FILENAME">%2$s</xliff:g> fitxategia"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Arakatu beste aplikazio batzuetako fitxategiak"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonimoa"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Erabili karpeta hau"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Ezin da erabili karpeta hori"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Pribatutasuna babesteko, aukeratu beste karpeta bat"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Sortu karpeta bat"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Bilatu telefono honetan"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Bilatu gailu honetan"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Ezabatu bilaketa-historia (<xliff:g id="TEXT">%1$s</xliff:g>)"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Pertsonala"</string>
     <string name="work_tab" msgid="7265359366883747413">"Lanekoa"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index f40b13d..ea7e359 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"محتوا درحال حاضر بار نمی‌شود"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"برنامه‌های کاری موقتاً متوقف شده‌اند."</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"روشن کردن برنامه‌های کاری"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"برنامه‌های <xliff:g id="PROFILE">%1$s</xliff:g> موقتاً متوقف شده است"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"روشن کردن برنامه‌های <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"انتخاب فایل‌های کاری ممکن نیست"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"سرپرست فناوری اطلاعات اجازه نمی‌دهد از برنامه شخصی به فایل‌های کاری دسترسی پیدا کنید"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"انتخاب فایل‌های شخصی ممکن نیست"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"سرپرست فناوری اطلاعات اجازه نمی‌دهد از برنامه کاری به فایل‌های شخصی دسترسی پیدا کنید"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"نمی‌توانید فایل‌های <xliff:g id="PROFILE">%1$s</xliff:g> را انتخاب کنید"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"سرپرست فناوری اطلاعات شما اجازه نمی‌دهد ازطریق برنامه <xliff:g id="PROFILE_1">%2$s</xliff:g> به فایل‌های <xliff:g id="PROFILE_0">%1$s</xliff:g> دسترسی داشته باشید"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"ذخیره در نمایه کاری ممکن نیست"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"سرپرست فناوری اطلاعات اجازه نمی‌دهد فایل‌های شخصی را در نمایه کاری ذخیره کنید"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"ذخیره در نمایه شخصی ممکن نیست"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"سرپرست فناوری اطلاعات اجازه نمی‌دهد فایل‌های کاری را در نمایه شخصی ذخیره کنید"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"نمی‌توانید در نمایه <xliff:g id="PROFILE">%1$s</xliff:g> ذخیره کنید"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"سرپرست فناوری اطلاعات شما اجازه نمی‌دهد فایل‌های <xliff:g id="PROFILE_0">%1$s</xliff:g> را در نمایه <xliff:g id="PROFILE_1">%2$s</xliff:g> ذخیره کنید"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"این کنش مجاز نیست"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"برای اطلاعات بیشتر، با سرپرست فناوری اطلاعات تماس بگیرید."</string>
     <string name="root_recent" msgid="1080156975424341623">"اخیر"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"نام جدید"</string>
     <string name="preview_file" msgid="4056622696305432343">"پیش‌نمایش فایل <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"پیش‌نمایش فایل کاری <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"پیش‌دید کردن فایل <xliff:g id="FILENAME">%2$s</xliff:g> در <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"مرور فایل‌ها در سایر برنامه‌ها"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"ناشناس"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"استفاده از این پوشه"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"نمی‌توانید از این پوشه استفاده کنید"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"برای محافظت از حریم‌خصوصی‌تان، پوشه دیگری را انتخاب کنید"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"ایجاد پوشه جدید"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"جستجوی این تلفن"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"جستجوی این دستگاه"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"حذف سابقه جستجوی <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"شخصی"</string>
     <string name="work_tab" msgid="7265359366883747413">"کاری"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index d7c8e3d..6fa10bf 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Sisällön lataaminen epäonnistui."</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Työsovellukset on keskeytetty"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Laita työsovellukset päälle"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Sovellukset on keskeytetty: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Ota <xliff:g id="PROFILE">%1$s</xliff:g>-sovellukset käyttöön"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Työtiedostot eivät käytettävissä"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT-järjestelmänvalvoja ei salli sinulle pääsyä työtiedostoihin henkilökohtaisesta sovelluksesta"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Ei voi valita henkilökohtaisia tiedostoja"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT-järjestelmänvalvoja ei salli sinulle pääsyä henkilökohtaisiin tiedostoihin työsovelluksesta"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g>-profiileja ei voi valita"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT-järjestelmänvalvoja ei salli sinun käyttää näitä tiedostoja (<xliff:g id="PROFILE_0">%1$s</xliff:g>) tällä sovelluksella (<xliff:g id="PROFILE_1">%2$s</xliff:g>)"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Ei tallennettavissa työprofiiliin"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT-järjestelmänvalvoja ei anna sinun tallentaa henkilökohtaisia tiedostoja työprofiiliisi"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Ei tallennettavissa henkilökohtaiseen profiiliin"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT-järjestelmänvalvoja ei anna sinun tallentaa työtiedostoja henkilökohtaiseen profiiliisi"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Ei voi tallentaa <xliff:g id="PROFILE">%1$s</xliff:g>-profiiliin"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT-järjestelmänvalvoja ei salli sinun tallentaa näitä tiedostoja (<xliff:g id="PROFILE_0">%1$s</xliff:g>) <xliff:g id="PROFILE_1">%2$s</xliff:g>-profiiliin"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Tämä toiminto ei ole sallittu"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Pyydä lisätietoja IT-järjestelmänvalvojalta"</string>
     <string name="root_recent" msgid="1080156975424341623">"Viimeisimmät"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Uusi nimi"</string>
     <string name="preview_file" msgid="4056622696305432343">"Esikatsele tiedostoa <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Esikatsele työtiedostoa <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Esikatsele <xliff:g id="PROFILE">%1$s</xliff:g>-profiilin tiedostoa: <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Selaa tiedostoja muissa sovelluksissa"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonyymi"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Käytä tätä kansiota"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Tämä kansio ei ole käytettävissä"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Valitse toinen kansio tietosuojasi turvaamiseksi"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Luo uusi kansio"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Hae tästä puhelimesta"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Hae tältä laitteelta"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Poista hakuhistoria <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Henkilökohtainen"</string>
     <string name="work_tab" msgid="7265359366883747413">"Työ"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index cad5d3e..e2397d1 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Impossible de charger le contenu pour le moment"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Les applications professionnelles sont interrompues"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Activer les applications professionnelles"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Les applications du profil de type <xliff:g id="PROFILE">%1$s</xliff:g> sont interrompues"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Activer les applications de type : <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Impossible de sélectionner des fichiers professionnels"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Votre administrateur informatique ne vous autorise pas à accéder à des fichiers professionnels à partir d\'une application personnelle"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Impossible de sélectionner des fichiers personnels"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Votre administrateur informatique ne vous autorise pas à accéder à des fichiers personnels à partir d\'une application professionnelle"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Impossible de sélectionner les fichiers de type <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Votre administrateur informatique ne vous autorise pas à accéder aux fichiers de type <xliff:g id="PROFILE_0">%1$s</xliff:g> à partir d\'une application du profil suivant : <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Ιmpossible d\'enregistrer dans le profil professionnel"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Votre administrateur informatique ne vous autorise pas à enregistrer des fichiers personnels dans votre profil professionnel"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Impossible d\'enregistrer dans le profil personnel"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Votre administrateur informatique ne vous autorise pas à enregistrer des fichiers professionnels dans votre profil personnel"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Impossible d\'enregistrer des fichiers dans le profil suivant : <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Votre administrateur informatique ne vous autorise pas à enregistrer des fichiers de type <xliff:g id="PROFILE_0">%1$s</xliff:g> dans le profil suivant : <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Cette action n\'est pas autorisée"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Communiquez avec votre administrateur informatique pour en savoir plus"</string>
     <string name="root_recent" msgid="1080156975424341623">"Fichiers récents"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nouveau nom"</string>
     <string name="preview_file" msgid="4056622696305432343">"Afficher un aperçu du fichier <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Afficher l\'aperçu du fichier professionnel <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Afficher un aperçu du fichier de type <xliff:g id="PROFILE">%1$s</xliff:g> : <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Parcourir les fichiers dans d\'autres applications"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonyme"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Utiliser ce dossier"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Impossible d\'utiliser ce dossier"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Pour protéger votre confidentialité, choisissez un autre dossier"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Créer un dossier"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Rechercher sur ce téléphone"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Faire une recherche dans cet appareil"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Supprimer l\'historique de recherche <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personnel"</string>
     <string name="work_tab" msgid="7265359366883747413">"Professionnel"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 60143d2..85bdeb0 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Impossible de charger le contenu pour le moment"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Applis professionnelles en pause"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Activer les applis professionnelles"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Les applis du profil <xliff:g id="PROFILE">%1$s</xliff:g> sont en veille"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Activer les applis du profil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Impossible de sélectionner des fichiers professionnels"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Votre administrateur informatique ne vous autorise pas à accéder à des fichiers professionnels depuis une application personnelle"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Impossible de sélectionner des fichiers personnels"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Votre administrateur informatique ne vous autorise pas à accéder à des fichiers personnels depuis une application professionnelle"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Impossible de sélectionner les fichiers du profil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Votre administrateur informatique ne vous autorise pas à accéder aux fichiers du profil <xliff:g id="PROFILE_0">%1$s</xliff:g> à partir d\'une appli du profil <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Ιmpossible d\'enregistrer dans le profil professionnel"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Votre administrateur informatique ne vous autorise pas à enregistrer des fichiers personnels dans votre profil professionnel"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Impossible d\'enregistrer dans le profil personnel"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Votre administrateur informatique ne vous autorise pas à enregistrer des fichiers professionnels dans votre profil personnel"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Impossible d\'enregistrer les fichiers sur le profil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Votre administrateur informatique ne vous autorise pas à enregistrer les fichiers du profil <xliff:g id="PROFILE_0">%1$s</xliff:g> sur le profil <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Cette opération n\'est pas autorisée"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Pour en savoir plus, contactez ce dernier"</string>
     <string name="root_recent" msgid="1080156975424341623">"Récents"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nouveau nom"</string>
     <string name="preview_file" msgid="4056622696305432343">"Prévisualiser le fichier <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Prévisualiser le fichier professionnel <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Prévisualiser le fichier <xliff:g id="FILENAME">%2$s</xliff:g> du profil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Parcourir les fichiers dans d\'autres applications"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonyme"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Utiliser ce dossier"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Impossible d\'utiliser ce dossier"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Pour protéger votre vie privée, choisissez un autre dossier"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Créer un dossier"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Rechercher sur ce téléphone"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Rechercher cet appareil"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Supprimer l\'historique des recherches <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personnel"</string>
     <string name="work_tab" msgid="7265359366883747413">"Professionnel"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index fea0de4..57e1970 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Non se pode cargar o contido neste momento"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Puxéronse en pausa as aplicacións do traballo"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Activar aplicacións do traballo"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"As aplicacións deste perfil (<xliff:g id="PROFILE">%1$s</xliff:g>) están en pausa"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Activar aplicacións (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Non se puideron seleccionar os ficheiros de traballo"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"O teu administrador de TI non permite acceder aos ficheiros do traballo desde unha aplicación persoal"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Non se puideron seleccionar os ficheiros persoais"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"O teu administrador de TI non permite acceder aos ficheiros persoais desde unha aplicación do traballo"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Non se poden seleccionar ficheiros deste perfil (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"A persoa administradora de TI non che permite acceder aos ficheiros dun perfil (<xliff:g id="PROFILE_0">%1$s</xliff:g>) desde unha aplicación doutro perfil (<xliff:g id="PROFILE_1">%2$s</xliff:g>)"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Non se poden gardar os ficheiros no perfil de traballo"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"O teu administrador de TI non permite gardar ficheiros persoais no teu perfil de traballo"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Non se puideron gardar os ficheiros no perfil persoal"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"O teu administrador de TI non permite gardar ficheiros do traballo no teu perfil persoal"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Non se poden gardar ficheiros neste perfil (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"A persoa administradora de TI non che permite gardar ficheiros dun perfil (<xliff:g id="PROFILE_0">%1$s</xliff:g>) noutro perfil (<xliff:g id="PROFILE_1">%2$s</xliff:g>)"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Esta acción non está permitida"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Para obter máis información, ponte en contacto co teu administrador de TI"</string>
     <string name="root_recent" msgid="1080156975424341623">"Recentes"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nome novo"</string>
     <string name="preview_file" msgid="4056622696305432343">"Vista previa do ficheiro <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Vista previa do ficheiro do traballo <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Previsualizar o ficheiro <xliff:g id="FILENAME">%2$s</xliff:g> deste perfil (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Consultar ficheiros noutras aplicacións"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Aplicación anónima"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Usar este cartafol"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Non se pode utilizar este cartafol"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Para protexer a túa privacidade, escolle outro cartafol"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Crear novo cartafol"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Busca neste teléfono"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Busca contido neste dispositivo"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Elimina o historial de busca <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Persoal"</string>
     <string name="work_tab" msgid="7265359366883747413">"Traballo"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index f311d1b..766540c 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"આ પળે સામગ્રી લોડ કરી શકતાં નથી"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"ઑફિસ માટેની ઍપ થોભાવવામાં આવી છે"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"ઑફિસ માટેની ઍપ ચાલુ કરો"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g>ની ઍપ થોભાવવામાં આવી છે"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g>ની ઍપ ચાલુ કરો"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"ઑફિસની ફાઇલોને પસંદ કરી શકતા નથી"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"તમારા IT વ્યવસ્થાપક તમને વ્યક્તિગત ઍપ પરથી ઑફિસની ફાઇલોને ઍક્સેસ કરવાની મંજૂરી આપતા નથી"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"વ્યક્તિગત ફાઇલોને પસંદ કરી શકતા નથી"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"તમારા IT વ્યવસ્થાપક તમને ઑફિસ માટેની ઍપ પરથી વ્યક્તિગત ફાઇલોને ઍક્સેસ કરવાની મંજૂરી આપતા નથી"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g>ની ફાઇલ પસંદ કરી શકતા નથી"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"તમારા IT ઍડમિન તમને <xliff:g id="PROFILE_1">%2$s</xliff:g> ઍપમાંથી <xliff:g id="PROFILE_0">%1$s</xliff:g>ની ફાઇલો ઍક્સેસ કરવાની મંજૂરી આપતા નથી"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"ઑફિસની પ્રોફાઇલમાં સાચવી શકતા નથી"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"તમારા IT વ્યવસ્થાપક તમને તમારી કાર્યાલયની પ્રોફાઇલમાં વ્યક્તિગત ફાઇલોને સાચવવાની મંજૂરી આપતા નથી"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"વ્યક્તિગત પ્રોફાઇલમાં સાચવી શકતા નથી"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"તમારા IT વ્યવસ્થાપક તમને તમારી વ્યક્તિગત પ્રોફાઇલમાં ઑફિસની ફાઇલોને સાચવવાની મંજૂરી આપતા નથી"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> પ્રોફાઇલમાં સાચવી શકતા નથી"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"તમારા IT ઍડમિન તમને <xliff:g id="PROFILE_0">%1$s</xliff:g>ની ફાઇલોને તમારી <xliff:g id="PROFILE_1">%2$s</xliff:g> પ્રોફાઇલમાં સાચવવાની મંજૂરી આપતા નથી"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"આ ક્રિયાની મંજૂરી નથી"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"વધુ જાણવા માટે, તમારા IT ઍડમિનનો સંપર્ક કરો"</string>
     <string name="root_recent" msgid="1080156975424341623">"તાજેતરમાં"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"નવું નામ"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> ફાઇલને પ્રીવ્યૂ કરો"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"ઑફિસની ફાઇલ <xliff:g id="FILENAME">%1$s</xliff:g>ને પ્રીવ્યૂ કરો"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g>ની <xliff:g id="FILENAME">%2$s</xliff:g> ફાઇલને પ્રીવ્યૂ કરો"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"અન્ય ઍપમાં ફાઇલો બ્રાઉઝ કરો"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"અજ્ઞાત"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"આ ફોલ્ડરનો ઉપયોગ કરો"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"આ ફોલ્ડરનો ઉપયોગ કરી શકાતો નથી"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"તમારી પ્રાઇવસી સુરક્ષિત રાખવા માટે, અન્ય ફોલ્ડર પસંદ કરો"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"નવું ફોલ્ડર બનાવો"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"આ ફોન શોધો"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"આ ડિવાઇસ શોધો"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"શોધ ઇતિહાસ <xliff:g id="TEXT">%1$s</xliff:g> ડિલીટ કરો"</string>
     <string name="personal_tab" msgid="3878576287868528503">"વ્યક્તિગત"</string>
     <string name="work_tab" msgid="7265359366883747413">"ઑફિસ"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 97f7732..3183bd2 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"इस समय सामग्री लोड नहीं की जा सकती"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"वर्क ऐप्लिकेशन रोक दिए गए हैं"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"वर्क ऐप्लिकेशन चालू करें"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> ऐप्लिकेशन पर रोक लगा दी गई है"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> ऐप्लिकेशन चालू करें"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"दफ़्तर की फ़ाइलें नहीं चुनी जा सकतीं"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"आपका आईटी एडमिन आपको किसी निजी ऐप्लिकेशन से दफ़्तर की फ़ाइलें ऐक्सेस करने की मंज़ूरी नहीं देता"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"निजी फ़ाइलें नहीं चुनी जा सकतीं"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"आपका आईटी एडमिन आपको ऑफ़िस के काम से जुड़े ऐप्लिकेशन से निजी फ़ाइलें ऐक्सेस करने की अनुमति नहीं देता"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> फ़ाइलों को नहीं चुना जा सकता"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"आपका आईटी एडमिन, <xliff:g id="PROFILE_0">%1$s</xliff:g> फ़ाइलों को <xliff:g id="PROFILE_1">%2$s</xliff:g> ऐप्लिकेशन से ऐक्सेस करने की अनुमति नहीं देता है"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"वर्क प्रोफ़ाइल में सेव नहीं की जा सकतीं"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"आपका आईटी एडमिन आपको निजी फ़ाइलें वर्क प्रोफ़ाइल में सेव करने की अनुमति नहीं देता"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"निजी प्रोफ़ाइल में सेव नहीं की जा सकतीं"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"आपका आईटी एडमिन आपको दफ़्तर की फ़ाइलें निजी प्रोफ़ाइल में सेव करने की अनुमति नहीं देता"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> प्रोफ़ाइल में फ़ाइलें सेव नहीं की जा सकी"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"आपका आईटी एडमिन, <xliff:g id="PROFILE_0">%1$s</xliff:g> फ़ाइलों को <xliff:g id="PROFILE_1">%2$s</xliff:g> प्रोफ़ाइल में सेव करने की अनुमति नहीं देता है"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"इसकी अनुमति नहीं है"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"ज़्यादा जानने के लिए, अपने आईटी एडमिन से संपर्क करें"</string>
     <string name="root_recent" msgid="1080156975424341623">"हाल ही का"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"नया नाम"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> फ़ाइल की झलक देखें"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"दफ़्तर की फ़ाइल <xliff:g id="FILENAME">%1$s</xliff:g> की झलक देखें"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> फ़ाइल <xliff:g id="FILENAME">%2$s</xliff:g> की झलक देखें"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"दूसरे ऐप्लिकेशन में फ़ाइलें ब्राउज़ करें"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"अनाम"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"यह फ़ोल्डर इस्तेमाल करें"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"इस फ़ोल्डर का इस्तेमाल नहीं किया जा सकता"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"अपनी निजता की सुरक्षा करने के लिए, कोई और फ़ोल्डर चुनें"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"नया फ़ोल्डर बनाएं"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"इस फ़ोन में खोजें"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"इस डिवाइस के बारे में खोजें"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"खोज का इतिहास मिटाएं <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"निजी"</string>
     <string name="work_tab" msgid="7265359366883747413">"काम से जुड़ी"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 3837d64..e6cfbf9 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Sadržaj se trenutačno ne može učitati"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Poslovne aplikacije su pauzirane"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Uključi poslovne aplikacije"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Pauzirane su aplikacije (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Uključite aplikacije (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Nije moguće odabrati poslovne datoteke"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Vaš IT administrator ne dopušta vam pristupanje poslovnim datotekama iz osobne aplikacije"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Nije moguće odabrati osobne datoteke"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Vaš IT administrator ne dopušta vam pristup osobnim datotekama iz poslovne aplikacije"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Nije moguće odabrati datoteke (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Vaš IT administrator ne dopušta vam pristup datotekama (<xliff:g id="PROFILE_0">%1$s</xliff:g>) putem aplikacije (<xliff:g id="PROFILE_1">%2$s</xliff:g>)"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Nije moguće spremati na poslovni profil"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Vaš IT administrator ne dopušta vam spremanje osobnih datoteka na vaš poslovni profil"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Nije moguće spremati na osobni profil"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Vaš IT administrator ne dopušta vam spremanje poslovnih datoteka na vaš osobni profil"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Nije moguće spremiti na profil (<xliff:g id="PROFILE">%1$s</xliff:g>)"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Vaš IT administrator ne dopušta vam da spremite datoteke (<xliff:g id="PROFILE_0">%1$s</xliff:g>) na svoj profil (<xliff:g id="PROFILE_1">%2$s</xliff:g>)"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Ta radnja nije dopuštena"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Da biste saznali više, obratite se IT administratoru"</string>
     <string name="root_recent" msgid="1080156975424341623">"Nedavno"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Novi naziv"</string>
     <string name="preview_file" msgid="4056622696305432343">"Pregledajte datoteku <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Pregled poslovne datoteke <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Pregledajte datoteku (<xliff:g id="PROFILE">%1$s</xliff:g>) <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Pregledajte datoteke u drugim aplikacijama"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonimno"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Koristi ovu mapu"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Ne možete upotrebljavati ovu mapu"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Radi zaštite vlastite sigurnosti odaberite neku drugu mapu"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Izradi novu mapu"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Pretražite ovaj telefon"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Pretraži ovaj uređaj"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Brisanje povijesti pretraživanja <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Osobno"</string>
     <string name="work_tab" msgid="7265359366883747413">"Posao"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 21b3a6c..9d7a2a6 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Jelenleg nem lehet tartalmat betölteni"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"A munkahelyi alkalmazások szüneteltetve vannak"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Munkahelyi alkalmazások bekapcsolása"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"A(z) <xliff:g id="PROFILE">%1$s</xliff:g> alkalmazások szüneteltetve vannak"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> alkalmazások bekapcsolása"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Nem választhatók ki munkafájlok"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Rendszergazdája nem engedélyezi, hogy munkafájlokhoz férjen hozzá személyes alkalmazásból"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Nem választhatók ki személyes fájlok"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Rendszergazdája nem engedélyezi, hogy személyes fájlokhoz férjen hozzá munkahelyi alkalmazásból"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Nem lehet kiválasztani <xliff:g id="PROFILE">%1$s</xliff:g> fájlokat"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Rendszergazdája nem engedélyezi a(z) <xliff:g id="PROFILE_0">%1$s</xliff:g> fájlokhoz való hozzáférést <xliff:g id="PROFILE_1">%2$s</xliff:g> alkalmazásból"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Nem lehet menteni a munkaprofilba"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Rendszergazdája nem engedélyezi, hogy személyes fájlokat mentsen munkaprofiljába"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Nem lehet menteni a személyes profilba"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Rendszergazdája nem engedélyezi, hogy munkafájlokat mentsen személyes profiljába"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Nem lehet menteni a következő profilba: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Rendszergazdája nem engedélyezi <xliff:g id="PROFILE_0">%1$s</xliff:g> fájlok mentését az Ön <xliff:g id="PROFILE_1">%2$s</xliff:g> profijába"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Ez a művelet nem engedélyezett"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"További információért forduljon rendszergazdájához"</string>
     <string name="root_recent" msgid="1080156975424341623">"Legutóbbiak"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Új név"</string>
     <string name="preview_file" msgid="4056622696305432343">"A(z) <xliff:g id="FILENAME">%1$s</xliff:g> előnézete"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"A(z) <xliff:g id="FILENAME">%1$s</xliff:g> munkafájl előnézete"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> fájl (<xliff:g id="FILENAME">%2$s</xliff:g>) előnézetének megtekintése"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Fájlok böngészése más alkalmazásokban"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Névtelen"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Jelenlegi mappa használata"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Ez a mappa nem használható"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Adatainak védelme érdekében válasszon másik mappát"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Új mappa létrehozása"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Keresés ezen a telefonon"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Keresés az eszközön"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Keresési előzmények törlése – <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Személyes"</string>
     <string name="work_tab" msgid="7265359366883747413">"Munkahelyi"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index d57beef..fb55c8b 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Այս պահին հնարավոր չէ բեռնել բովանդակությունը"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Աշխատանքային հավելվածները դադարեցված են"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Միացնել աշխատանքային հավելվածները"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> հավելվածները դադարեցված են"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Միացնել <xliff:g id="PROFILE">%1$s</xliff:g> հավելվածները"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Հնարավոր չէ աշխատանքային ֆայլեր ընտրել"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Ձեր ՏՏ ադմինիստրատորը չի թույլատրում աշխատանքային ֆայլերի օգտագործումը անձնական հավելվածներից"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Հնարավոր չէ անձնական ֆայլեր ընտրել"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Ձեր ՏՏ ադմինիստրատորը չի թույլատրում աշխատանքային ֆայլերի օգտագործումը անձնական հավելվածներից"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Հնարավոր չէ ընտրել <xliff:g id="PROFILE">%1$s</xliff:g> ֆայլեր"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Ձեր ՏՏ ադմինիստրատորը ձեզ թույլ չի տալիս օգտագործել <xliff:g id="PROFILE_0">%1$s</xliff:g> ֆայլեր <xliff:g id="PROFILE_1">%2$s</xliff:g> հավելվածից"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Հնարավոր չէ պահել աշխատանքային պրոֆիլում"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Ձեր ՏՏ ադմինիստրատորը չի թույլատրում պահել անձնական ֆայլերը աշխատանքային պրոֆիլում"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Հնարավոր չէ պահել անձնական պրոֆիլում"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Ձեր ՏՏ ադմինիստրատորը չի թույլատրում պահել աշխատանքային ֆայլերը անձնական պրոֆիլում"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Հնարավոր չէ պահել <xliff:g id="PROFILE">%1$s</xliff:g> պրոֆիլում"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Ձեր ՏՏ ադմինիստրատորը ձեզ թույլ չի տալիս պահել <xliff:g id="PROFILE_0">%1$s</xliff:g> ֆայլերը ձեր <xliff:g id="PROFILE_1">%2$s</xliff:g> պրոֆիլում"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Գործողությունը թույլատրված չէ"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Մանրամասների համար դիմեք ՏՏ ադմինիստրատորին"</string>
     <string name="root_recent" msgid="1080156975424341623">"Վերջինները"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Նոր անունը"</string>
     <string name="preview_file" msgid="4056622696305432343">"Դիտել «<xliff:g id="FILENAME">%1$s</xliff:g>» ֆայլը"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Նախադիտել <xliff:g id="FILENAME">%1$s</xliff:g> աշխատանքային ֆայլը"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Դիտել <xliff:g id="FILENAME">%2$s</xliff:g> <xliff:g id="PROFILE">%1$s</xliff:g> ֆայլը"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Գտեք ֆայլեր այլ հավելվածներում"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Անանուն"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Օգտագործել այս պանակը"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Այլ պանակ ընտրեք"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Ձեր գաղտնիությունը պաշտպանելու նպատակով մենք արգելափակել ենք այս պանակի մուտքը"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Ստեղծել նոր պանակ"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Որոնեք հեռախոսում"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Որոնեք այս սարքում"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Ջնջել որոնումների պատմությունը՝ <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Անձնական"</string>
     <string name="work_tab" msgid="7265359366883747413">"Աշխատանքային"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index b149b2a..f89f539 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Tidak dapat memuat konten saat ini"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Aplikasi kerja dijeda"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Aktifkan aplikasi kerja"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Aplikasi <xliff:g id="PROFILE">%1$s</xliff:g> dijeda"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Aktifkan aplikasi <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Tidak dapat memilih file kerja"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Admin IT tidak mengizinkan Anda mengakses file kerja dari aplikasi pribadi"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Tidak dapat memilih file pribadi"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Admin IT tidak mengizinkan Anda mengakses file pribadi dari aplikasi kerja"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Tidak dapat memilih file <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Admin IT tidak mengizinkan Anda mengakses file <xliff:g id="PROFILE_0">%1$s</xliff:g> dari aplikasi <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Tidak dapat menyimpan ke profil kerja"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Admin IT tidak mengizinkan Anda menyimpan file pribadi ke profil kerja Anda"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Tidak dapat menyimpan ke profil pribadi"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Admin IT tidak mengizinkan Anda menyimpan file kerja ke profil pribadi Anda"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Tidak dapat menyimpan ke profil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Admin IT tidak mengizinkan Anda menyimpan file <xliff:g id="PROFILE_0">%1$s</xliff:g> ke profil <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Tindakan ini tidak diizinkan"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Untuk mempelajari lebih lanjut, hubungi admin IT Anda"</string>
     <string name="root_recent" msgid="1080156975424341623">"Terbaru"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nama baru"</string>
     <string name="preview_file" msgid="4056622696305432343">"Pratinjau file <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Lihat pratinjau file kerja <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Pratinjau file <xliff:g id="PROFILE">%1$s</xliff:g> <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Cari file di aplikasi lain"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonim"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Gunakan folder ini"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Tidak dapat menggunakan folder ini"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Untuk melindungi privasi, pilih folder lain"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Buat folder baru"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Telusuri ponsel ini"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Telusuri perangkat ini"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Menghapus histori penelusuran <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Pribadi"</string>
     <string name="work_tab" msgid="7265359366883747413">"Kerja"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 6498186..70a8623 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Ekki hægt að hlaða efni í augnablikinu"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Hlé gert á vinnuforritum"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Kveikja á vinnuforritum"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Hlé var gert á <xliff:g id="PROFILE">%1$s</xliff:g>-forritum"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Kveikja á <xliff:g id="PROFILE">%1$s</xliff:g>-forritum"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Ekki er hægt að velja vinnuskrár"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Kerfisstjórinn þinn leyfir þér ekki að opna vinnuskrár í forritum til einkanota"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Ekki er hægt að velja einkaskrár"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Kerfisstjórinn þinn leyfir þér ekki að opna einkaskrár í vinnuforriti"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Ekki er hægt að velja <xliff:g id="PROFILE">%1$s</xliff:g>-skrár"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Stjórnandinn þinn leyfir ekki aðgang að <xliff:g id="PROFILE_0">%1$s</xliff:g>-skrám úr <xliff:g id="PROFILE_1">%2$s</xliff:g>-forriti"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Ekki er hægt að vista á vinnusniði"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Kerfisstjórinn þinn leyfir þér ekki að vista einkaskrár á vinnusniðinu"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Ekki er hægt að vista á einkasniði"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Kerfisstjórinn þinn leyfir þér ekki að vista vinnuskrár á einkasniði"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Ekki er hægt að vista á <xliff:g id="PROFILE">%1$s</xliff:g>-sniði"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Stjórnandinn þinn leyfir ekki vistun <xliff:g id="PROFILE_0">%1$s</xliff:g>-skráa á <xliff:g id="PROFILE_1">%2$s</xliff:g>-sniði"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Þessi aðgerð er ekki leyfð"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Hafðu samband við kerfisstjórann til að fá frekari upplýsingar"</string>
     <string name="root_recent" msgid="1080156975424341623">"Nýlegt"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nýtt heiti"</string>
     <string name="preview_file" msgid="4056622696305432343">"Forskoða skrána <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Forskoða vinnuskrána <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Forskoða <xliff:g id="PROFILE">%1$s</xliff:g>-skrána „<xliff:g id="FILENAME">%2$s</xliff:g>“"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Skoða skrár í öðrum forritum"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Nafnlaus"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Nota þessa möppu"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Ekki er hægt að nota þessa möppu"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Veldu aðra möppu til að tryggja persónuvernd þína"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Búa til nýja möppu"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Leita í þessum síma"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Leita í þessu tæki"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Eyða leitarferli <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Persónulegt"</string>
     <string name="work_tab" msgid="7265359366883747413">"Vinna"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index a3b3998..2feb022 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Impossibile caricare i contenuti al momento."</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Le app di lavoro sono in pausa"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Attiva app di lavoro"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Le app <xliff:g id="PROFILE">%1$s</xliff:g> sono in pausa"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Attiva le app <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Impossibile selezionare file di lavoro"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"L\'amministratore IT non consente l\'accesso ai file di lavoro da un\'app personale"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Impossibile selezionare file personali"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"L\'amministratore IT non consente l\'accesso ai file personali da un\'app di lavoro"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Impossibile selezionare i file <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"L\'amministratore IT non consente di accedere ai file <xliff:g id="PROFILE_0">%1$s</xliff:g> da un\'app <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Impossibile salvare sul profilo di lavoro"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"L\'amministratore IT non consente il salvataggio di file personali sul tuo profilo di lavoro"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Impossibile salvare sul profilo personale"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"L\'amministratore IT non consente il salvataggio di file di lavoro sul tuo profilo personale"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Impossibile salvare sul profilo <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"L\'amministratore IT non consente di salvare i file <xliff:g id="PROFILE_0">%1$s</xliff:g> sul profilo <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Questa azione non è consentita"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Per ulteriori informazioni, contatta il tuo amministratore IT"</string>
     <string name="root_recent" msgid="1080156975424341623">"Recenti"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nuovo nome"</string>
     <string name="preview_file" msgid="4056622696305432343">"Visualizza il file <xliff:g id="FILENAME">%1$s</xliff:g> in anteprima"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Visualizza l\'anteprima del file di lavoro <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Visualizza l\'anteprima del file <xliff:g id="PROFILE">%1$s</xliff:g> <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Sfoglia i file in altre app"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonima"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Usa questa cartella"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Impossibile usare questa cartella"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Per tutelare la tua privacy, scegli un\'altra cartella"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Crea nuova cartella"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Cerca su questo telefono"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Cerca su questo dispositivo"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Elimina la cronologia delle ricerche <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personale"</string>
     <string name="work_tab" msgid="7265359366883747413">"Lavoro"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index bce2230..33ea199 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"לא ניתן כרגע לטעון תוכן"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"האפליקציות לעבודה מושהות"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"הפעלה של אפליקציות לעבודה"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"אפליקציות מפרופיל <xliff:g id="PROFILE">%1$s</xliff:g> מושהות"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"הפעלת אפליקציות מפרופיל <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"לא ניתן לבחור קובצי עבודה"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"‏מנהל ה-IT לא מאפשר לגשת לקובצי עבודה מאפליקציה לשימוש אישי"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"לא ניתן לבחור קבצים אישיים"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"‏מנהל ה-IT לא מאפשר לגשת לקבצים אישיים מאפליקציה לעבודה"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"לא ניתן לבחור קבצים מפרופיל <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"‏אין אישור מהאדמין ב-IT לגשת לקבצים מפרופיל <xliff:g id="PROFILE_0">%1$s</xliff:g> מאפליקציה <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"לא ניתן לשמור בפרופיל העבודה"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"‏מנהל ה-IT לא מתיר לשמור קבצים אישיים בפרופיל העבודה שלך"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"לא ניתן לשמור בפרופיל האישי"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"‏מנהל ה-IT לא מתיר לשמור קובצי עבודה בפרופיל האישי שלך"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"אי אפשר לשמור בפרופיל ה<xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"‏אין אישור מהאדמין ב-IT לשמור קבצים מפרופיל <xliff:g id="PROFILE_0">%1$s</xliff:g> בפרופיל ה<xliff:g id="PROFILE_1">%2$s</xliff:g> שלך"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"הפעולה הזו אסורה"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"‏כדי לקבל מידע נוסף יש לפנות אל מנהל ה-IT"</string>
     <string name="root_recent" msgid="1080156975424341623">"בשימוש לאחרונה"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"שם חדש"</string>
     <string name="preview_file" msgid="4056622696305432343">"תצוגה מקדימה של הקובץ <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"לצפייה בתצוגה מקדימה של קובץ העבודה <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"תצוגה מקדימה של קובץ ‏<xliff:g id="FILENAME">%2$s</xliff:g> מפרופיל <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"חיפוש קבצים באפליקציות אחרות"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"אנונימית"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"שימוש בתיקייה הזו"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"לא ניתן להשתמש בתיקייה הזו"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"כדי להגן על הפרטיות שלך, עליך לבחור תיקייה אחרת"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"יצירת תיקייה חדשה"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"חיפוש בטלפון הזה"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"חיפוש המכשיר הזה"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"מחיקת היסטוריית החיפושים <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"אישי"</string>
     <string name="work_tab" msgid="7265359366883747413">"עבודה"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 1f94cad..35685ca 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"現在、コンテンツを読み込むことができません"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"仕事用アプリ一時停止中"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"仕事用アプリをオンにする"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g>アプリ一時停止中"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g>アプリを ON にする"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"仕事用ファイルは選択できません"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT 管理者は、個人用アプリから仕事用ファイルにアクセスすることを許可していません"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"個人用ファイルは選択できません"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT 管理者は、仕事用アプリから個人用ファイルにアクセスすることを許可していません"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g>ファイルは選択できません"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT 管理者は、<xliff:g id="PROFILE_1">%2$s</xliff:g>アプリから<xliff:g id="PROFILE_0">%1$s</xliff:g>ファイルにアクセスすることを許可していません"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"仕事用プロファイルには保存できません"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT 管理者は、仕事用プロファイルに個人用ファイルを保存することを許可していません"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"個人用プロファイルには保存できません"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT 管理者は、個人用プロファイルに仕事用ファイルを保存することを許可していません"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g>プロファイルには保存できません"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT 管理者は、<xliff:g id="PROFILE_1">%2$s</xliff:g>プロファイルに<xliff:g id="PROFILE_0">%1$s</xliff:g>ファイルを保存することを許可していません"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"この操作は許可されていません"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"詳しくは、IT 管理者にお問い合わせください"</string>
     <string name="root_recent" msgid="1080156975424341623">"最近"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"新しい名前"</string>
     <string name="preview_file" msgid="4056622696305432343">"ファイル <xliff:g id="FILENAME">%1$s</xliff:g> をプレビューする"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"仕事用ファイル <xliff:g id="FILENAME">%1$s</xliff:g> をプレビューする"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g>ファイル <xliff:g id="FILENAME">%2$s</xliff:g> をプレビューする"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"他のアプリでファイルを探す"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"匿名"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"このフォルダを使用"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"このフォルダは使用できません"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"プライバシーを保護するため、別のフォルダを選択してください"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"新規フォルダを作成"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"スマートフォン内を検索"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"このデバイスを検索する"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"検索履歴「<xliff:g id="TEXT">%1$s</xliff:g>」を削除します"</string>
     <string name="personal_tab" msgid="3878576287868528503">"個人用"</string>
     <string name="work_tab" msgid="7265359366883747413">"仕事用"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index b4a85f4..1a69866 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"კონტენტის ჩატვირთვა ამჟამად ვერ ხერხდება"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"სამსახურის აპები დაპაუზებულია"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"სამსახურის აპების ჩართვა"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> პროფილის აპები დაპაუზებულია"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> პროფილის აპების ჩართვა"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"სამსახურის ფაილების არჩევა ვერ მოხერხდება"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"თქვენი IT ადმინისტრატორი გიკრძალავთ სამსახურის ფაილებზე პერსონალური აპით წვდომას"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"პერსონალური ფაილების არჩევა ვერ მოხერხდება"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"თქვენი IT ადმინისტრატორი გიკრძალავთ პერსონალურ ფაილებზე სამსახურის აპით წვდომას"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> პროფილის ფაილების არჩევა ვერ ხერხდება"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"თქვენი IT ადმინისტრატორი <xliff:g id="PROFILE_0">%1$s</xliff:g> პროფილის ფაილების <xliff:g id="PROFILE_1">%2$s</xliff:g> აპიდან წვდომას არ უშვებს"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"სამსახურის პროფილში შენახვა ვერ მოხერხდება"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"თქვენი IT ადმინისტრატორი გიკრძალავთ პერსონალური ფაილების შენახვას თქვენს სამსახურის პროფილში"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"პერსონალურ პროფილში შენახვა ვერ მოხერხდება"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"თქვენი IT ადმინისტრატორი გიკრძალავთ სამსახურის ფაილების შენახვას თქვენს პერსონალურ პროფილში"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> პროფილში შენახვა ვერ ხერხდება"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"თქვენი IT ამინისტრატორი <xliff:g id="PROFILE_0">%1$s</xliff:g> პროფილის ფაილების თქვენს <xliff:g id="PROFILE_1">%2$s</xliff:g> პროფილში შენახვას არ უშვებს"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"ეს ქმედება დაშვებული არ არის"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"დამატებითი ინფორმაციისთვის დაუკავშირდით თქვენს IT ადმინისტრატორს"</string>
     <string name="root_recent" msgid="1080156975424341623">"ბოლო"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"ახალი სახელი"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> ფაილის გადახედვა"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"სამუშაო ფაილის გადახედვა: <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> პროფილის <xliff:g id="FILENAME">%2$s</xliff:g> ფაილისგადახედვა"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"ფაილების დათვალიერება სხვა აპებში"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"ანონიმური"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"ამ საქაღალდის გამოყენება"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"ამ საქაღალდეს ვერ გამოიყენებთ"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"თქვენი კონფიდენციალურობის დასაცავად აირჩიეთ სხვა საქაღალდე"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"ახალი საქაღალდის შექმნა"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"ამ ტელეფონში ძიება"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"ამ მოწყობილობის ძიება"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"ძიების ისტორიის წაშლა <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"პირადი"</string>
     <string name="work_tab" msgid="7265359366883747413">"სამსახური"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 5e984e4..7d1f402 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Контент қазір жүктелмейді"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Жұмыс қолданбалары кідіртілді"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Жұмыс қолданбаларын қосу"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> қолданбалары уақытша тоқтатылды"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> қолданбаларын қосу"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Жұмыс файлдарын таңдау мүмкін емес"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Әкімші жұмыс файлдарына жеке қолданбадан кіруге рұқсат етпейді."</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Жеке файлдарды сақтау мүмкін емес"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Әкімші жұмыс қолданбасынан жеке файлдарға кіруге рұқсат етпейді."</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> файлдарын таңдау мүмкін емес"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Әкімшіңіз сізге <xliff:g id="PROFILE_0">%1$s</xliff:g> файлдарын <xliff:g id="PROFILE_1">%2$s</xliff:g> қолданбасынан пайдалануға рұқсат бермейді."</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Жұмыс профиліңізге сақтау мүмкін емес"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Әкімші жеке файлдарды жұмыс профиліңізге сақтауға рұқсат етпейді."</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Жеке профиліңізге сақтау мүмкін емес"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Әкімші жұмыс файлдарын жеке профиліңізге сақтауға рұқсат етпейді."</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> профиліне сақтау мүмкін емес"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Әкімшіңіз сізге <xliff:g id="PROFILE_0">%1$s</xliff:g> файлдарын <xliff:g id="PROFILE_1">%2$s</xliff:g> профиліңізге сақтауға рұқсат бермейді."</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Бұл әрекетке рұқсат берілмеген"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Толығырақ ақпарат үшін әкімшімен хабарласыңыз."</string>
     <string name="root_recent" msgid="1080156975424341623">"Соңғы"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Жаңа атауы"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> файлын алдын ала көру"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> жұмыс файлын алдын ала көру"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> файлын (<xliff:g id="FILENAME">%2$s</xliff:g>) алдын ала көру"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Басқа қолданбалардағы файлдарды шолу"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Анонимді"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Осы қалтаны пайдалану"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Бұл қалтаны пайдалану мүмкін емес"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Құпиялықты қорғау мақсатында басқа қалта таңдаңыз"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Жаңа қалта жасау"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Осы телефоннан іздеу"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Осы құрылғыда іздеу"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Іздеу тарихын <xliff:g id="TEXT">%1$s</xliff:g> жою"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Жеке"</string>
     <string name="work_tab" msgid="7265359366883747413">"Жұмыс"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index c190cee..365efd1 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"មិនអាចដំណើរការមាតិកាបានទេនៅពេលនេះ"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"កម្មវិធី​ការងារ​ត្រូវបានផ្អាក"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"បើក​កម្មវិធី​ការងារ"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"កម្មវិធី<xliff:g id="PROFILE">%1$s</xliff:g>ត្រូវបានផ្អាក"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"បើកកម្មវិធី<xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"មិនអាច​ជ្រើសរើស​ឯកសារ​ការងារ​បានទេ"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"អ្នកគ្រប់គ្រង​ផ្នែក​ព័ត៌មានវិទ្យា​របស់អ្នក​មិនអនុញ្ញាត​ឱ្យអ្នក​ចូលប្រើ​ឯកសារ​ការងារ​ពីកម្មវិធី​ផ្ទាល់ខ្លួនទេ"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"មិនអាច​ជ្រើសរើស​ឯកសារ​ផ្ទាល់ខ្លួន​បានទេ"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"អ្នកគ្រប់គ្រង​ផ្នែក​ព័ត៌មានវិទ្យា​របស់អ្នក​មិនអនុញ្ញាត​ឱ្យអ្នក​ចូលប្រើ​ឯកសារ​ផ្ទាល់ខ្លួនពី​កម្មវិធី​ការងារទេ"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"មិនអាចជ្រើសរើសឯកសារ<xliff:g id="PROFILE">%1$s</xliff:g>បានទេ"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"អ្នកគ្រប់គ្រង​ផ្នែកព័ត៌មានវិទ្យារបស់អ្នកមិនអនុញ្ញាតឱ្យអ្នកចូលប្រើឯកសារ<xliff:g id="PROFILE_0">%1$s</xliff:g>ពីកម្មវិធី<xliff:g id="PROFILE_1">%2$s</xliff:g>ទេ"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"មិនអាច​រក្សាទុក​ទៅកម្រង​ព័ត៌មាន​ការងារ​បានទេ"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"អ្នកគ្រប់គ្រង​ផ្នែកព័ត៌មាន​វិទ្យារបស់អ្នក​មិនអនុញ្ញាតឱ្យអ្នក​រក្សាទុក​ឯកសារ​ផ្ទាល់ខ្លួន​ទៅកម្រង​ព័ត៌មាន​ការងារ​របស់អ្នកទេ"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"មិនអាច​រក្សាទុក​កម្រងព័ត៌មាន​ផ្ទាល់ខ្លួន​បានទេ"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"អ្នកគ្រប់គ្រង​ផ្នែក​ព័ត៌មានវិទ្យា​របស់អ្នក​មិនអនុញ្ញាតឱ្យអ្នក​រក្សាទុក​ឯកសារ​ការងារ​ទៅកម្រង​ព័ត៌មាន​ផ្ទាល់ខ្លួន​របស់អ្នកទេ"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"មិនអាចរក្សាទុកទៅកម្រងព័ត៌មាន<xliff:g id="PROFILE">%1$s</xliff:g>ទេ"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"អ្នកគ្រប់គ្រង​ផ្នែកព័ត៌មានវិទ្យារបស់អ្នកមិនអនុញ្ញាតឱ្យអ្នករក្សាទុកឯកសារ<xliff:g id="PROFILE_0">%1$s</xliff:g>ទៅកម្រងព័ត៌មាន<xliff:g id="PROFILE_1">%2$s</xliff:g>របស់អ្នកទេ"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"សកម្មភាពនេះ​មិនត្រូវបាន​អនុញ្ញាតទេ"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"ដើម្បី​ស្វែងយល់​បន្ថែម សូម​ទាក់ទង​អ្នកគ្រប់គ្រងផ្នែក​ព័ត៌មានវិទ្យា​របស់អ្នក"</string>
     <string name="root_recent" msgid="1080156975424341623">"ថ្មីៗ"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"ឈ្មោះ​ថ្មី"</string>
     <string name="preview_file" msgid="4056622696305432343">"មើលឯកសារ <xliff:g id="FILENAME">%1$s</xliff:g> សាកល្បង"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"មើល​ឯកសារ​ការងារ <xliff:g id="FILENAME">%1$s</xliff:g> សាកល្បង"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"មើលឯកសារ<xliff:g id="PROFILE">%1$s</xliff:g> <xliff:g id="FILENAME">%2$s</xliff:g> សាកល្បង"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"រុករក​ឯកសារ​នៅក្នុង​កម្មវិធី​ផ្សេងទៀត"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"អនាមិក"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"ប្រើថតនេះ"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"មិនអាចប្រើ​ថតនេះ​បានទេ"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"ដើម្បី​ការពារ​ឯកជនភាព​របស់អ្នក សូម​ជ្រើសរើស​ថតផ្សេងទៀត"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"បង្កើត​ថត​ថ្មី"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"ស្វែងរក​ក្នុងទូរសព្ទ​នេះ"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"ស្វែងរកឧបករណ៍នេះ"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"លុប​ប្រវត្តិស្វែងរក <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"ផ្ទាល់ខ្លួន"</string>
     <string name="work_tab" msgid="7265359366883747413">"ការងារ"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index b654b6d..988be21 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -34,7 +34,7 @@
     <string name="menu_open" msgid="9092138100049759315">"ತೆರೆ"</string>
     <string name="menu_open_with" msgid="5507647065467520229">"ಇದರ ಮೂಲಕ ತೆರೆಯಿರಿ"</string>
     <string name="menu_open_in_new_window" msgid="6686563636123311276">"ಹೊಸ ವಿಂಡೋನಲ್ಲಿ ತೆರೆಯಿರಿ"</string>
-    <string name="menu_save" msgid="5195367497138965168">"ಉಳಿಸು"</string>
+    <string name="menu_save" msgid="5195367497138965168">"ಸೇವ್ ಮಾಡಿ"</string>
     <string name="menu_share" msgid="4307140947108068356">"ಹಂಚಿಕೊಳ್ಳಿ"</string>
     <string name="menu_delete" msgid="1022254131543256626">"ಅಳಿಸಿ"</string>
     <string name="menu_select_all" msgid="7600576812185570403">"ಎಲ್ಲವನ್ನೂ ಆಯ್ಕೆಮಾಡಿ"</string>
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"ಈ ಕ್ಷಣದಲ್ಲಿ ವಿಷಯವನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಆನ್ ಮಾಡಿ"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> ಆ್ಯಪ್‌ಗಳನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> ಆ್ಯಪ್‌ಗಳನ್ನು ಆನ್ ಮಾಡಿ"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"ಉದ್ಯೋಗದ ಫೈಲ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"ವೈಯಕ್ತಿಕ ಆ್ಯಪ್ ಒಂದರಿಂದ ಉದ್ಯೋಗದ ಫೈಲ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರು ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"ವೈಯಕ್ತಿಕ ಫೈಲ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ ಒಂದರಿಂದ ವೈಯಕ್ತಿಕ ಫೈಲ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರು ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರು <xliff:g id="PROFILE_1">%2$s</xliff:g> ಆ್ಯಪ್‌ನಿಂದ <xliff:g id="PROFILE_0">%1$s</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್‌ಗೆ ಉಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"ನಿಮ್ಮ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್‌ಗೆ ವೈಯಕ್ತಿಕ ಫೈಲ್‌ಗಳನ್ನು ಉಳಿಸಲು ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರು ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"ವೈಯಕ್ತಿಕ ಪ್ರೊಫೈಲ್‌ಗೆ ಉಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಪ್ರೊಫೈಲ್‌ಗೆ ಉದ್ಯೋಗದ ಫೈಲ್‌ಗಳನ್ನು ಉಳಿಸಲು ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರು ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> ಪ್ರೊಫೈಲ್‌ಗೆ ಸೇವ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರು ನಿಮ್ಮ <xliff:g id="PROFILE_1">%2$s</xliff:g> ಪ್ರೊಫೈಲ್‌ಗೆ <xliff:g id="PROFILE_0">%1$s</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಸೇವ್ ಮಾಡಲು ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"ಈ ಕ್ರಿಯೆಯನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"ಇನ್ನಷ್ಟು ತಿಳಿಯಲು, ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ"</string>
     <string name="root_recent" msgid="1080156975424341623">"ಇತ್ತೀಚಿನದು"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"ಹೊಸ ಹೆಸರು"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> ಫೈಲ್‌ ಅನ್ನು ಪೂರ್ವವೀಕ್ಷಿಸಿ"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> ಉದ್ಯೋಗದ ಫೈಲ್‌ ಅನ್ನು ಪೂರ್ವವೀಕ್ಷಣೆ ಮಾಡಿ"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> ಫೈಲ್ <xliff:g id="FILENAME">%2$s</xliff:g> ಅನ್ನು ಪೂರ್ವವೀಕ್ಷಿಸಿ"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"ಇತರ ಆ್ಯಪ್‌ಗಳಲ್ಲಿರುವ ಫೈಲ್‌ಗಳನ್ನು ಬ್ರೌಸ್ ಮಾಡಿ"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"ಅನಾಮಧೇಯ"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"ಈ ಫೋಲ್ಡರ್ ಬಳಸಿ"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"ಈ ಫೋಲ್ಡರ್ ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"ನಿಮ್ಮ ಗೌಪ್ಯತೆಯನ್ನು ಕಾಪಾಡಲು, ಬೇರೊಂದು ಫೋಲ್ಡರ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"ಹೊಸ ಫೋಲ್ಡರ್ ರಚಿಸಿ"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"ಈ ಫೋನ್‍ನಲ್ಲಿ ಹುಡುಕಿ"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"ಈ ಸಾಧನವನ್ನು ಹುಡುಕಿ"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"ಹುಡುಕಾಟ ಇತಿಹಾಸವನ್ನು ಅಳಿಸಿ <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"ವೈಯಕ್ತಿಕ"</string>
     <string name="work_tab" msgid="7265359366883747413">"ಉದ್ಯೋಗ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index ae44b2d..bb313e8 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"현재 콘텐츠를 로드할 수 없습니다."</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"직장 앱이 일시중지됨"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"직장 앱 사용 설정"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> 앱이 일시중지됨"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> 앱 사용 설정"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"직장 파일을 선택할 수 없음"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT 관리자가 개인 앱에서 직장 파일에 액세스하도록 허용하지 않습니다."</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"개인 파일을 선택할 수 없음"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT 관리자가 직장 앱에서 개인 파일에 액세스하도록 허용하지 않습니다."</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> 파일을 선택할 수 없음"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT 관리자가 <xliff:g id="PROFILE_1">%2$s</xliff:g> 앱에서 <xliff:g id="PROFILE_0">%1$s</xliff:g> 파일에 액세스하도록 허용하지 않습니다."</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"직장 프로필에 저장할 수 없음"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT 관리자가 직장 프로필에 개인 파일을 저장하도록 허용하지 않습니다."</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"개인 프로필에 저장할 수 없음"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT 관리자가 개인 프로필에 직장 파일을 저장하도록 허용하지 않습니다."</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> 프로필에 저장할 수 없음"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT 관리자가 <xliff:g id="PROFILE_0">%1$s</xliff:g> 파일을 <xliff:g id="PROFILE_1">%2$s</xliff:g> 프로필에 저장하도록 허용하지 않습니다."</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"금지된 작업"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"자세히 알아보려면 IT 관리자에게 문의하세요."</string>
     <string name="root_recent" msgid="1080156975424341623">"최근"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"새 이름"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> 파일 미리보기"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"직장 파일 <xliff:g id="FILENAME">%1$s</xliff:g> 미리보기"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> 파일(<xliff:g id="FILENAME">%2$s</xliff:g>) 미리보기"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"다른 앱의 파일 탐색"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"익명"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"이 폴더 사용"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"이 폴더를 사용할 수 없음"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"개인정보 보호를 위해 다른 폴더를 선택하세요."</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"새 폴더 만들기"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"이 휴대전화 검색"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"이 기기 검색"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"검색 기록 삭제 <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"개인"</string>
     <string name="work_tab" msgid="7265359366883747413">"직장"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 430886e..83ac3fe 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Учурда мазмун жүктөлбөй жатат"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Жумуш колдонмолору тындырылды"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Жумуш колдонмолорун күйгүзүү"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> колдонмолору тындырылды"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> колдонмолорун күйгүзүү"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Жумуш файлдарын тандоого болбойт"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT администраторуңуз жумуш файлдарына жеке колдонмодон кирүүгө тыюу салды"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Жеке файлдарды тандоого болбойт"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT администраторуңуз жеке файлдарга жумуш колдонмосунан кирүүгө тыюу салды"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> файлдарын тандоого болбойт"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT администратору <xliff:g id="PROFILE_0">%1$s</xliff:g> файлдарын <xliff:g id="PROFILE_1">%2$s</xliff:g> колдонмосунан пайдаланууга тыюу салды"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Жумуш профилине сактоого болбойт"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT администраторуңуз жеке файлдарды жумуш профилине сактоого тыюу салды"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Жеке профилге сактоого болбойт"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT администраторуңуз жумуш файлдарын жеке профилде сактоого тыюу салды"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> профилине сактоого болбойт"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT администратору <xliff:g id="PROFILE_0">%1$s</xliff:g> файлдарын <xliff:g id="PROFILE_1">%2$s</xliff:g> профилине сактоого тыюу салды"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Бул аракетке уруксат жок"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Көбүрөөк маалымат үчүн, IT администраторуңузга кайрылыңыз"</string>
     <string name="root_recent" msgid="1080156975424341623">"Акыркы"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Жаңы аталыш"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> файлын алдын ала көрүү"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> жумуш файлын алдын ала көрүү"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> файлын (<xliff:g id="FILENAME">%2$s</xliff:g>) алдын ала көрүү"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Башка колдонмолордон файлдарды карап чыгуу"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Жашыруун"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Бул папканы колдонуу"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Бул папканы колдонууга болбойт"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Коопсуздугуңузду коргоо үчүн башка папканы тандаңыз"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Жаңы папка түзүү"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Ушул телефондо издөө"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Бул түзмөктү издөө"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Издөө таржымалы тазалансын: <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Жеке"</string>
     <string name="work_tab" msgid="7265359366883747413">"Жумуш"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 75f35dc..8794da0 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"ບໍ່ສາມາດໂຫຼດເນື້ອຫາໄດ້ໃນຂະນະນີ້"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"ຢຸດແອັບບ່ອນເຮັດວຽກຊົ່ວຄາວແລ້ວ"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"ເປີດໃຊ້ແອັບບ່ອນເຮັດວຽກ"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"ແອັບ <xliff:g id="PROFILE">%1$s</xliff:g> ຢຸດຊົ່ວຄາວແລ້ວ"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"ເປີດແອັບ <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"ບໍ່ສາມາດເລືອກໄຟລ໌ວຽກໄດ້"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ເຂົ້າເຖິງໄຟລ໌ວຽກຈາກແອັບສ່ວນຕົວໄດ້"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"ບໍ່ສາມາດເລືອກໄຟລ໌ສ່ວນຕົວໄດ້"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ເຂົ້າເຖິງໄຟລ໌ສ່ວນຕົວຈາກແອັບວຽກໄດ້"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"ບໍ່ສາມາດເລືອກໄຟລ໌ <xliff:g id="PROFILE">%1$s</xliff:g> ໄດ້"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ທ່ານເຂົ້າເຖິງໄຟລ໌ <xliff:g id="PROFILE_0">%1$s</xliff:g> ຈາກແອັບ <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"ບໍ່ສາມາດບັນທຶກໄປໃສ່ໂປຣໄຟລ໌ວຽກໄດ້"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ບັນທຶກໄຟລ໌ສ່ວນຕົວໄປໃສ່ໂປຣໄຟລ໌ວຽກທ່ານ"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"ບໍ່ສາມາດບັນທຶກໄປໃສ່ໂປຣໄຟລ໌ສ່ວນຕົວໄດ້"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ທ່ານບັນທຶກໄຟລ໌ວຽກໄປໃສ່ໂປຣໄຟລ໌ສ່ວນຕົວຂອງທ່ານໄດ້"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"ບໍ່ສາມາດບັນທຶກໃສ່ໂປຣໄຟລ໌ <xliff:g id="PROFILE">%1$s</xliff:g> ໄດ້"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ທ່ານບັນທຶກໄຟລ໌ <xliff:g id="PROFILE_0">%1$s</xliff:g> ໃສ່ໂປຣໄຟລ໌ <xliff:g id="PROFILE_1">%2$s</xliff:g> ຂອງທ່ານ"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"ບໍ່ອະນຸຍາດຄຳສັ່ງນີ້"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"ເພື່ອສຶກສາເພີ່ມເຕີມ, ກະລຸນາຕິດຕໍ່ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານ"</string>
     <string name="root_recent" msgid="1080156975424341623">"ຫຼ້າສຸດ"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"ຊື່ໃໝ່"</string>
     <string name="preview_file" msgid="4056622696305432343">"ເບິ່ງຕົວຢ່າງໄຟລ໌ <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"ເບິ່ງຕົວຢ່າງໄຟລ໌ວຽກ <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"ຕົວຢ່າງໄຟລ໌ <xliff:g id="PROFILE">%1$s</xliff:g> <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"ເລືອກໄຟລ໌ໃນແອັບອື່ນ"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"ບໍ່ລະບຸຊື່"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"ໃຊ້ໂຟນເດີນີ້"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"ບໍ່ສາມາດໃຊ້ໂຟນເດີນີ້ໄດ້"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"ໃຫ້ເລືອກໂຟນເດີອື່ນເພື່ອປົກປ້ອງຄວາມເປັນສ່ວນຕົວຂອງທ່ານ"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"ສ້າງໂຟນເດີໃໝ່"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"ຊອກຫາໂທລະສັບໜ່ວຍນີ້"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"ຊອກຫາອຸປະກອນນີ້"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"ລຶບປະຫວັດການຊອກຫາ <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"ສ່ວນຕົວ"</string>
     <string name="work_tab" msgid="7265359366883747413">"ວຽກ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index e21563f..88420bf 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Šiuo metu nepavyksta įkelti turinio"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Darbo programos pristabdytos"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Įjungti darbo programas"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> programos pristabdytos"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Įjungti <xliff:g id="PROFILE">%1$s</xliff:g> programas"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Negalima pasirinkti darbo failų"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT administratorius neleidžia pasiekti darbo failų iš asmeninės programos"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Negalima pasirinkti asmeninių failų"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT administratorius neleidžia pasiekti asmeninių failų iš darbo programos"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Negalima pasirinkti <xliff:g id="PROFILE">%1$s</xliff:g> failų"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT administratorius neleidžia pasiekti <xliff:g id="PROFILE_0">%1$s</xliff:g> failų iš <xliff:g id="PROFILE_1">%2$s</xliff:g> programos"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Negalima saugoti darbo profilyje"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT administratorius neleidžia saugoti asmeninių failų darbo profilyje"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Negalima saugoti asmeniniame profilyje"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT administratorius neleidžia saugoti darbo failų asmeniniame profilyje"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Negalima išsaugoti <xliff:g id="PROFILE">%1$s</xliff:g> profilyje"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT administratorius neleidžia išsaugoti <xliff:g id="PROFILE_0">%1$s</xliff:g> failų <xliff:g id="PROFILE_1">%2$s</xliff:g> profilyje"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Šis veiksmas neleidžiamas"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Jei norite sužinoti daugiau, susisiekite su savo IT administratoriumi"</string>
     <string name="root_recent" msgid="1080156975424341623">"Naujausi"</string>
@@ -310,6 +316,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Naujas pavadinimas"</string>
     <string name="preview_file" msgid="4056622696305432343">"Peržiūrėti failą „<xliff:g id="FILENAME">%1$s</xliff:g>“"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Peržiūrėti darbo failą „<xliff:g id="FILENAME">%1$s</xliff:g>“"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Peržiūrėti <xliff:g id="PROFILE">%1$s</xliff:g> failą „<xliff:g id="FILENAME">%2$s</xliff:g>“"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Failų naršymas kitose programose"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anoniminė"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Naudoti šį aplanką"</string>
@@ -318,7 +325,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Negalima naudoti šio aplanko"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Kad apsaugotumėte privatumą, pasirinkite kitą aplanką"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Kurti naują aplanką"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Ieškoti šiame telefone"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Ieškoti šiame įrenginyje"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Ištrinkite paieškos istoriją <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Asmeninis"</string>
     <string name="work_tab" msgid="7265359366883747413">"Darbo"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index c410d68..384395b 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Pašlaik nevar ielādēt saturu."</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Darba lietotnes ir apturētas"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Ieslēgt darba lietotnes"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Šāda profila lietotņu darbība ir pārtraukta: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Ieslēgt šāda profila lietotnes: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Nevar atlasīt darba failus"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Jūsu IT administrators neatļauj piekļūt darba failiem no personīgās lietotnes"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Nevar atlasīt personīgos failus"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Jūsu IT administrators neatļauj piekļūt personīgajiem failiem no darba lietotnes"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Nevar atlasīt šāda profila failus: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Jūsu IT administrators neļauj jums saglabāt viena profila (<xliff:g id="PROFILE_0">%1$s</xliff:g>) failiem, izmantojot cita profila (<xliff:g id="PROFILE_1">%2$s</xliff:g>) lietotni."</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Nevar saglabāt darba profilā"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Jūsu IT administrators neatļauj saglabāt personīgos failus jūsu darba profilā"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Nevar saglabāt personīgajā profilā"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Jūsu IT administrators neatļauj saglabāt darba failus jūsu personīgajā profilā"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Nevar saglabāt šādā profilā: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Jūsu IT administrators neļauj jums saglabāt viena profila (<xliff:g id="PROFILE_0">%1$s</xliff:g>) failus citā profilā (<xliff:g id="PROFILE_1">%2$s</xliff:g>)."</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Šī darbība nav atļauta"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Lai uzzinātu vairāk, sazinieties ar organizācijas IT administratoru"</string>
     <string name="root_recent" msgid="1080156975424341623">"Neseni"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Jauns nosaukums"</string>
     <string name="preview_file" msgid="4056622696305432343">"Priekšskatīt failu <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Darba faila <xliff:g id="FILENAME">%1$s</xliff:g> priekšskatīšana"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Priekšskatīt failu <xliff:g id="FILENAME">%2$s</xliff:g> no šāda profila: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Failu pārlūkošana citās lietotnēs"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonīma"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Izmantot šo mapi"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Nevar izmantot šo mapi"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Lai aizsargātu savu konfidencialitāti, izvēlieties citu mapi."</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Izveidot jaunu mapi"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Meklēt šajā tālrunī"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Meklēt šajā ierīcē"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Meklēšanas vēstures dzēšana <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personīgais profils"</string>
     <string name="work_tab" msgid="7265359366883747413">"Darba profils"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 5a3ee30..6049c02 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Во моментов не може да се вчита содржината."</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Работните апликации се паузирани"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Вклучете ги работните апликации"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> апликации се паузирани"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Вклучете ги <xliff:g id="PROFILE">%1$s</xliff:g> апликации"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Не може да се изберат работни датотеки"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT-администраторот не ви дозволува да пристапувате до работни датотеки од лична апликација"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Не може да се изберат лични датотеки"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT-администраторот не ви дозволува да пристапувате до лични датотеки од работна апликација"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Не може да се изберат датотеки од <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT-администраторот не ви дозволува да пристапите до датотеките од <xliff:g id="PROFILE_0">%1$s</xliff:g> преку <xliff:g id="PROFILE_1">%2$s</xliff:g> апликација"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Не може да се зачува во работниот профил"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT-администраторот не ви дозволува да зачувувате лични датотеки во работниот профил"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Не може да се зачува во личниот профил"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT-администраторот не ви дозволува да зачувувате работни датотеки во личниот профил"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Не може да се зачува на <xliff:g id="PROFILE">%1$s</xliff:g> профил"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT-администраторот не ви дозволува да ги зачувате датотеките од <xliff:g id="PROFILE_0">%1$s</xliff:g> на вашиот <xliff:g id="PROFILE_1">%2$s</xliff:g> профил"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Дејството не е дозволено"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"За да дознаете повеќе, контактирајте со IT-администраторот"</string>
     <string name="root_recent" msgid="1080156975424341623">"Неодамнешни"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Ново име"</string>
     <string name="preview_file" msgid="4056622696305432343">"Прегледајте ја датотеката <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Прегледајте ја работната датотека <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Прегледајте ја датотеката <xliff:g id="FILENAME">%2$s</xliff:g> на <xliff:g id="PROFILE">%1$s</xliff:g> профил"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Прелистувајте датотеки во други апликации"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Анонимна"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Користи ја папкава"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Не може да се користи папкава"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"За да ја заштитите вашата приватност, изберете друга папка"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Создај нова папка"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Пребарајте го телефонов"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Пребарајте го уредов"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Избришете ја историјата на пребарување <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Личен"</string>
     <string name="work_tab" msgid="7265359366883747413">"Работен"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 4f9ec99..5de0099 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"ഇപ്പോൾ ഉള്ളടക്കം ലോഡുചെയ്യാൻ കഴിയില്ല"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"ഔദ്യോഗിക ആപ്പുകൾ തൽക്കാലം നിർത്തിയിരിക്കുന്നു"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"ഔദ്യോഗിക ആപ്പുകൾ ഓണാക്കുക"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> ആപ്പുകൾ താൽക്കാലികമായി നിർത്തി"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> ആപ്പുകൾ ഓണാക്കുക"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"ഔദ്യോഗിക ഫയലുകൾ തിരഞ്ഞെടുക്കാനാവില്ല"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"വ്യക്തിപരമായ ആപ്പിൽ നിന്ന് ഔദ്യോഗിക ഫയലുകൾ ആക്സസ് ചെയ്യാൻ നിങ്ങളുടെ ഐടി അഡ്മിൻ അനുവദിക്കുന്നില്ല"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"വ്യക്തിപര ഫയലുകൾ തിരഞ്ഞെടുക്കാനാവില്ല"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"ഔദ്യോഗിക ആപ്പിൽ നിന്ന് വ്യക്തിപര ഫയലുകൾ ആക്സസ് ചെയ്യാൻ നിങ്ങളുടെ ഐടി അഡ്മിൻ അനുവദിക്കുന്നില്ല"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> ഫയലുകൾ തിരഞ്ഞെടുക്കാനാകുന്നില്ല"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"<xliff:g id="PROFILE_1">%2$s</xliff:g> ആപ്പിൽ നിന്ന് <xliff:g id="PROFILE_0">%1$s</xliff:g> ഫയലുകൾ ആക്‌സസ് ചെയ്യാൻ നിങ്ങളുടെ ഐടി അഡ്‌മിൻ അനുവദിക്കുന്നില്ല"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"ഔദ്യോഗിക പ്രൊഫൈലിലേക്ക് സംരക്ഷിക്കാനാവില്ല"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"വ്യക്തിപര ഫയലുകൾ ഔദ്യോഗിക പ്രൊഫൈലിലേക്ക് സംരക്ഷിക്കാൻ നിങ്ങളുടെ ഐടി അഡ്മിൻ അനുവദിക്കുന്നില്ല"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"വ്യക്തിപര പ്രൊഫൈലിലേക്ക് സംരക്ഷിക്കാനാവില്ല"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"ഔദ്യോഗിക ഫയലുകൾ നിങ്ങളുടെ വ്യക്തിപര പ്രൊഫൈലിലേക്ക് സംരക്ഷിക്കാൻ ഐടി അഡ്മിൻ അനുവദിക്കുന്നില്ല"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> പ്രൊഫൈലിലേക്ക് സംരക്ഷിക്കാനാകുന്നില്ല"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"<xliff:g id="PROFILE_0">%1$s</xliff:g> ഫയലുകൾ നിങ്ങളുടെ <xliff:g id="PROFILE_1">%2$s</xliff:g> പ്രൊഫൈലിലേക്ക് സംരക്ഷിക്കാൻ നിങ്ങളുടെ ഐടി അഡ്‌മിൻ അനുവദിക്കുന്നില്ല"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"ഈ പ്രവൃത്തി അനുവദനീയമല്ല"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"കൂടുതലറിയാൻ, നിങ്ങളുടെ ഐടി അഡ്‌മിനെ ബന്ധപ്പെടുക"</string>
     <string name="root_recent" msgid="1080156975424341623">"ഏറ്റവും പുതിയത്"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"പുതിയ പേര്"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> ഫയൽ പ്രിവ്യൂ ചെയ്യുക"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> എന്ന ഔദ്യോഗിക ഫയൽ പ്രിവ്യൂ ചെയ്യുക"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> ഫയൽ <xliff:g id="FILENAME">%2$s</xliff:g> പ്രിവ്യൂ ചെയ്യുക"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"ഫയലുകള്‍ മറ്റ് ആപ്പുകളില്‍ ബ്രൗസ് ചെയ്യുക"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"അജ്ഞാതം"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"ഈ ഫോൾഡർ ഉപയോഗിക്കുക"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"ഈ ഫോൾഡർ ഉപയോഗിക്കാനാവില്ല"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"നിങ്ങളുടെ സ്വകാര്യത പരിരക്ഷിക്കാൻ മറ്റൊരു ഫോൾഡർ തിരഞ്ഞെടുക്കുക"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"പുതിയ ഫോൾഡർ സൃഷ്‌ടിക്കുക"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"ഈ ഫോണിൽ തിരയുക"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"ഈ ഉപകരണം തിരയുക"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"തിരയൽ ചരിത്രം <xliff:g id="TEXT">%1$s</xliff:g> ഇല്ലാതാക്കുക"</string>
     <string name="personal_tab" msgid="3878576287868528503">"വ്യക്തിപരം"</string>
     <string name="work_tab" msgid="7265359366883747413">"ഔദ്യോഗികം"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index f86cbfd..cfbd53e 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Агуулгыг ачаалах боломжгүй байна"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Ажлын аппуудыг түр зогсоосон"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Ажлын аппуудыг асаах"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g>-н аппуудыг түр зогсоосон"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g>-н аппуудыг асаах"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Ажлын файлуудыг сонгох боломжгүй байна"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Таны мэдээлэл технологийн админ танд хувийн аппаас ажлын файлуудад хандахыг зөвшөөрөөгүй байна"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Хувийн файлуудыг сонгох боломжгүй байна"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Таны мэдээлэл технологийн админ ажлын аппаас хувийн файлуудад хандахыг танд зөвшөөрөөгүй байна"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g>-н файлуудыг сонгох боломжгүй"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Танай IT админ танд <xliff:g id="PROFILE_1">%2$s</xliff:g>-н аппаас <xliff:g id="PROFILE_0">%1$s</xliff:g>-н файлуудад хандахыг зөвшөөрдөггүй"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Ажлын профайлыг хадгалах боломжгүй байна"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Таны мэдээлэл технологийн админ танд ажлын профайлдаа хувийн файлууд хадгалахыг зөвшөөрөхгүй байна"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Хувийн профайлыг хадгалах боломжгүй байна"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Таны мэдээлэл технологийн админ танд хувийн профайлдаа ажлын файлууд хадгалахыг зөвшөөрөхгүй байна"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g>-н профайлд хадгалах боломжгүй"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Танай IT админ танд <xliff:g id="PROFILE_0">%1$s</xliff:g>-н файлуудыг <xliff:g id="PROFILE_1">%2$s</xliff:g>-н профайлдаа хадгалахыг зөвшөөрдөггүй"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Энэ үйлдлийг зөвшөөрөөгүй байна"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Нэмэлт мэдээлэл авахын тулд мэдээлэл технологийн админтайгаа холбогдоно уу"</string>
     <string name="root_recent" msgid="1080156975424341623">"Саяхны"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Шинэ нэр"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> файлыг урьдчилан үзэх"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> ажлын файлыг урьдчилан үзэх"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g>-н <xliff:g id="FILENAME">%2$s</xliff:g> файлыг урьдчилан үзэх"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Бусад аппын файлыг үзэх"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Үл мэдэгдэх"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Энэ фолдерыг ашиглах"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Энэ фолдерыг ашиглах боломжгүй байна"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Нууцлалаа хамгаалахын тулд өөр фолдер сонгоно уу"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Шинэ фолдер үүсгэх"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Энэ утсыг хайх"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Энэ төхөөрөмжийг хайх"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Хайлтын түүхийг устгах <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Хувийн"</string>
     <string name="work_tab" msgid="7265359366883747413">"Ажлын"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index e5596e5..a98a5c2 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"याक्षणी आशय लोड करू शकत नाही"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"कामाशी संबंधित अ‍ॅप्स थांबवली आहेत"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"कामाशी संबंधित अ‍ॅप्स सुरू करा"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> ॲप्स थांबवली आहेत"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> अ‍ॅप्स सुरू करा"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"कामासंबंधित फाइल निवडता आल्या नाहीत"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"तुमचा आयटी ॲडमिन तुम्हाला वैयक्तिक ॲपवरून कामासंबंधित फाइल अ‍ॅक्सेस करण्याची परवानगी देत नाही"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"वैयक्तिक फाइल निवडता आल्या नाहीत"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"तुमचा आयटी ॲडमिन तुम्हाला कार्य ॲपवरून वैयक्तिक फाइल अ‍ॅक्सेस करण्याची परवानगी देत नाही"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> फाइल निवडू शकत नाही"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"तुमचा आयटी ॲडमिन तुम्हाला <xliff:g id="PROFILE_1">%2$s</xliff:g> अ‍ॅपमधील <xliff:g id="PROFILE_0">%1$s</xliff:g> फाइल अ‍ॅक्सेस करण्याची अनुमती देत नाही"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"कार्य प्रोफाइलमध्ये सेव्ह करता आली नाही"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"तुमचा आयटी ॲडमिन तुम्हाला तुमच्या कार्य प्रोफाईलमध्ये वैयक्तिक फाइल सेव्ह करण्याची परवानगी देत नाही"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"वैयक्तिक प्रोफाइलमध्ये सेव्ह करता आली नाही"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"तुमचा आयटी ॲडमिन तुम्हाला तुमच्या वैयक्तिक प्रोफाईलमध्ये कामासंबंधित फाइल सेव्ह करण्याची परवानगी देत नाही"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> या प्रोफाइलवर सेव्ह करू शकत नाही"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"तुमचा आयटी ॲडमिन तुम्हाला तुमच्या <xliff:g id="PROFILE_1">%2$s</xliff:g> प्रोफाइलवर <xliff:g id="PROFILE_0">%1$s</xliff:g> फाइल सेव्ह करण्याची अनुमती देत नाही"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"या क्रियेला अनुमती नाही"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"अधिक जाणून घेण्यासाठी तुमच्या आयटी ॲडमिनशी संपर्क साधा"</string>
     <string name="root_recent" msgid="1080156975424341623">"अलीकडील"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"नवीन नाव"</string>
     <string name="preview_file" msgid="4056622696305432343">"फाइल <xliff:g id="FILENAME">%1$s</xliff:g> चे पूर्वावलोकन करा"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"कामासंबंधित फाइल <xliff:g id="FILENAME">%1$s</xliff:g> चे पूर्वावलोकन करा"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="FILENAME">%2$s</xliff:g> या <xliff:g id="PROFILE">%1$s</xliff:g> फाइलचे पूर्वावलोकन करा"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"इतर अ‍ॅप्समधील फाइल ब्राउझ करा"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"अनामित"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"हे फोल्डर वापरा"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"हे फोल्डर वापरू शकत नाही"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"तुमच्या गोपनीयतेचे संरक्षण करण्यासाठी दुसरे फोल्डर निवडा"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"नवीन फोल्डर तयार करा"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"या फोनमध्ये शोधा"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"हे डिव्हाइस शोधा"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"<xliff:g id="TEXT">%1$s</xliff:g> चा शोध इतिहास हटवा"</string>
     <string name="personal_tab" msgid="3878576287868528503">"वैयक्तिक"</string>
     <string name="work_tab" msgid="7265359366883747413">"ऑफिस"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 3e7c0b0..f72d99f 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Tidak dapat memuatkan kandungan pada masa ini"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Apl kerja dijeda"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Hidupkan apl kerja"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Apl <xliff:g id="PROFILE">%1$s</xliff:g> dijeda"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Hidupkan apl <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Tidak boleh memilih fail kerja"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Pentadbir IT anda tidak membenarkan anda mengakses fail kerja daripada apl peribadi"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Tidak boleh memilih fail peribadi"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Pentadbir IT anda tidak membenarkan anda mengakses fail peribadi daripada apl kerja"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Tidak dapat memilih fail <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Pentadbir IT anda tidak membenarkan anda mengakses fail <xliff:g id="PROFILE_0">%1$s</xliff:g> daripada apl <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Tidak dapat menyimpan pada profil kerja"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Pentadbir IT anda tidak membenarkan anda menyimpan fail peribadi pada profil kerja anda"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Tidak dapat menyimpan pada profil peribadi"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Pentadbir IT anda tidak membenarkan anda menyimpan fail kerja pada profil peribadi anda"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Tidak dapat menyimpan pada profil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Pentadbir IT anda tidak membenarkan anda menyimpan fail <xliff:g id="PROFILE_0">%1$s</xliff:g> pada profil <xliff:g id="PROFILE_1">%2$s</xliff:g> anda"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Tindakan ini tidak dibenarkan"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Untuk mengetahui lebih lanjut, hubungi pentadbir IT anda"</string>
     <string name="root_recent" msgid="1080156975424341623">"Terbaharu"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nama baharu"</string>
     <string name="preview_file" msgid="4056622696305432343">"Pratonton fail <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Pratonton fail kerja <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Pratonton fail <xliff:g id="PROFILE">%1$s</xliff:g> <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Semak imbas fail dalam apl lain"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Awanama"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Gunakan folder ini"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Tidak boleh menggunakan folder ini"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Untuk melindungi privasi anda, pilih folder lain"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Buat folder baharu"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Cari dalam telefon ini"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Cari peranti ini"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Padamkan sejarah carian <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Peribadi"</string>
     <string name="work_tab" msgid="7265359366883747413">"Kerja"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 3162237..e9c9f40 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"ဖိုင်ကို လောလောဆယ် တင်ပေး၍မရသေးပါ"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"အလုပ်သုံးအက်ပ်များကို ခေတ္တရပ်ထားသည်"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"အလုပ်သုံးအက်ပ်များ ဖွင့်ရန်"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> အက်ပ်များကို ခဏရပ်ထားသည်"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> အက်ပ်များ ဖွင့်ရန်"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"အလုပ်ဖိုင်များကို ရွေး၍မရပါ"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"ကိုယ်ပိုင်အက်ပ်မှနေ၍ အလုပ်ဖိုင်များ သုံးရန် သင်၏ IT စီမံခန့်ခွဲသူက ခွင့်မပြုပါ"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"ကိုယ်ပိုင်ဖိုင်များကို ရွေး၍မရပါ"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"အလုပ်သုံးအက်ပ်မှနေ၍ ကိုယ်ပိုင်ဖိုင်များ သုံးရန် သင်၏ IT စီမံခန့်ခွဲသူက ခွင့်မပြုပါ"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> ဖိုင်များကို ရွေး၍မရပါ"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT စီမံခန့်ခွဲသူသည် <xliff:g id="PROFILE_1">%2$s</xliff:g> အက်ပ်မှ <xliff:g id="PROFILE_0">%1$s</xliff:g> ဖိုင်များကို သင့်အား သုံးခွင့်မပြုပါ"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"အလုပ်ပရိုဖိုင်သို့ သိမ်း၍မရပါ"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"ကိုယ်ပိုင်ဖိုင်များကို သင့်အလုပ်ပရိုဖိုင်သို့ သိမ်းရန် သင်၏ IT စီမံခန့်ခွဲသူက ခွင့်မပြုပါ"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"ကိုပိုင်ပရိုဖိုင်သို့ သိမ်း၍မရပါ"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"အလုပ်ဖိုင်များကို သင့်ကိုယ်ပိုင်ပရိုဖိုင်သို့ သိမ်းရန် သင်၏ IT စီမံခန့်ခွဲသူက ခွင့်မပြုပါ"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> ပရိုဖိုင်တွင် သိမ်း၍မရပါ"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT စီမံခန့်ခွဲသူသည် သင်၏ <xliff:g id="PROFILE_1">%2$s</xliff:g> ပရိုဖိုင်တွင် <xliff:g id="PROFILE_0">%1$s</xliff:g> ဖိုင်များကို သင့်အား သိမ်းခွင့်မပြုပါ။"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"ဤလုပ်ဆောင်ချက်ကို ခွင့်မပြုပါ"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"ပိုမိုလေ့လာရန် သင်၏ IT စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ"</string>
     <string name="root_recent" msgid="1080156975424341623">"လတ်တလော"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"အမည်အသစ်"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> ဖိုင်ကို အစမ်းကြည့်ရန်"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> အလုပ်ဖိုင်ကို အစမ်းကြည့်ရှုပါ"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> ဖိုင် <xliff:g id="FILENAME">%2$s</xliff:g> ကို အစမ်းကြည့်ရှုရန်"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"အခြားအက်ပ်များတွင် ဖိုင်များကို ဖွင့်ကြည့်ပါ"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"အမည်မသိ"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"ဤဖိုင်တွဲကို အသုံးပြုပါ"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"ဤဖိုင်တွဲကို အသုံးပြု၍ မရပါ"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"သင်၏ကိုယ်ရေးလုံခြုံမှုကို ကာကွယ်ရန် ဖိုင်တွဲနောက်တစ်ခု ရွေးပါ"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"ဖိုင်တွဲအသစ် ပြုလုပ်ရန်"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"ဤဖုန်းတွင် ရှာရန်"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"ဤစက်တွင် ရှာရန်"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"ရှာဖွေမှတ်တမ်း <xliff:g id="TEXT">%1$s</xliff:g> ကိုဖျက်သည်"</string>
     <string name="personal_tab" msgid="3878576287868528503">"ကိုယ်ပိုင်"</string>
     <string name="work_tab" msgid="7265359366883747413">"အလုပ်"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 95674cd..4fb2e0e 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Kan ikke laste inn innholdet for øyeblikket"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Jobbapper er satt på pause"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Slå på jobbapper"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g>-appene er satt på pause"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Slå på <xliff:g id="PROFILE">%1$s</xliff:g>-apper"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Du kan ikke velge jobbfiler"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT-administratoren din tillater ikke at du får tilgang til jobbfiler fra personlige apper"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Du kan ikke velge personlige filer"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT-administratoren din tillater ikke at du får tilgang til personlige filer fra jobbapper"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Kan ikke velge <xliff:g id="PROFILE">%1$s</xliff:g>-filer"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT-administratoren din lar deg ikke bruke <xliff:g id="PROFILE_0">%1$s</xliff:g>-filer fra en <xliff:g id="PROFILE_1">%2$s</xliff:g>-app"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Du kan ikke lagre i jobbprofilen"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT-administratoren din tillater ikke at du lagrer personlige filer i jobbprofilen din"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Du kan ikke lagre i den personlige profilen"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT-administratoren din tillater ikke at du lagrer jobbfiler i den personlige profilen din"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Kan ikke lagre i <xliff:g id="PROFILE">%1$s</xliff:g>-profilen"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT-administratoren din lar deg ikke lagre <xliff:g id="PROFILE_0">%1$s</xliff:g>-filer i <xliff:g id="PROFILE_1">%2$s</xliff:g>-profilen din"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Handlingen er ikke tillatt"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"For å finne ut mer, kontakt IT-administratoren"</string>
     <string name="root_recent" msgid="1080156975424341623">"Nylige"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nytt navn"</string>
     <string name="preview_file" msgid="4056622696305432343">"Forhåndsvis filen <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Se en forhåndsvisning av jobbfilen, <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Forhåndsvis <xliff:g id="PROFILE">%1$s</xliff:g>-filen <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Bla gjennom filer i andre apper"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonym"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Bruk denne mappen"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Du kan ikke bruke denne mappen"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Velg en annen mappe for å beskytte personvernet ditt"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Opprett en ny mappe"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Søk på denne telefonen"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Søk på denne enheten"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Slett søkelogg <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personlig"</string>
     <string name="work_tab" msgid="7265359366883747413">"Jobb"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 7b9cab9..550ae21 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"यस समय सामग्री लोड गर्न सकिँदैन"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"कामसम्बन्धी एपहरू पज गरिएका छन्"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"कामसम्बन्धी एपहरू अन गर्नुहोस्"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> एपहरू पज गरिएका छन्"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> एपहरू अन गर्नुहोस्"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"कार्यालयका फाइलहरू चयन गर्न मिल्दैन"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"तपाईंका IT एडमिनले तपाईंलाई व्यक्तिगत एपमार्फत कार्यालयका फाइलहरू प्रयोग गर्ने अनुमति दिनुभएको छैन"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"व्यक्तिगत फाइलहरू चयन गर्न सकिएन"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"तपाईंका IT एडमिनले तपाईंलाई कामसम्बन्धी एपमार्फत व्यक्तिगत फाइलहरू प्रयोग गर्ने अनुमति दिनुभएको छैन"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> फाइलहरू चयन गर्न मिल्दैन"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"तपाईंका IT एड्मिनले तपाईंलाई <xliff:g id="PROFILE_1">%2$s</xliff:g> एपमा भएका <xliff:g id="PROFILE_0">%1$s</xliff:g> फाइलहरू एक्सेस गर्ने अनुमति दिनुभएको छैन"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"कार्यलयको प्रोफाइलमा सुरक्षित गर्न सकिएन"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"तपाईंका IT एडमिनले तपाईंलाई आफ्नो कार्यलयको प्रोफाइलमा रहेका एपहरूमा व्यक्तिगत फाइलहरू सुरक्षित गर्ने अनुमति दिनुभएको छैन"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"व्यक्तिगत प्रोफाइलमा सुरक्षित गर्न सकिएन"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"तपाईंका IT एडमिनले तपाईंलाई आफ्नो व्यक्तिगत प्रोफाइलमा रहेका एपहरूमा कार्यालयका फाइलहरू सुरक्षित गर्ने अनुमति दिनुभएको छैन"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> प्रोफाइलमा सेभ गर्न मिल्दैन"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"तपाईंका IT एड्मिनले तपाईंलाई तपाईंको <xliff:g id="PROFILE_1">%2$s</xliff:g> प्रोफाइलमा <xliff:g id="PROFILE_0">%1$s</xliff:g> फाइलहरू सेभ गर्ने अनुमति दिनुभएको छैन"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"यो कार्य गर्ने अनुमति छैन"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"थप जानकारी प्राप्त गर्न आफ्ना IT एड्मिनलाई सम्पर्क गर्नुहोस्"</string>
     <string name="root_recent" msgid="1080156975424341623">"हालको"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"नयाँ नाम"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> फाइलको पूर्वावलोकन गर्नुहोस्‌"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"कार्यालयको <xliff:g id="FILENAME">%1$s</xliff:g> नामक फाइलको पूर्वावलोकन गर्नुहोस्"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> फाइल <xliff:g id="FILENAME">%2$s</xliff:g> को प्रिभ्यू गर्नुहोस्"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"अन्य एपहरूमा फाइलहरू खोज्नुहोस्"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"अज्ञात"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"यो फोल्डर प्रयोग गर्नुहोस्"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"यो फोल्डर प्रयोग गर्न सकिएन"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"आफ्नो गोपनीयताको संरक्षण गर्न अर्को फोल्डर छान्नुहोस्"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"नयाँ फोल्डर सिर्जना गर्नुहोस्"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"यो फोनमा खोज्नुहोस्"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"यो डिभाइस खोज्नुहोस्"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"खोजसम्बन्धी इतिहास मेट्नुहोस् <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"व्यक्तिगत"</string>
     <string name="work_tab" msgid="7265359366883747413">"काम"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 384b670..9ec3583 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Kan content momenteel niet laden"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Werk-apps zijn onderbroken"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Werk-apps aanzetten"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g>-apps zijn onderbroken"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g>-apps aanzetten"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Kan geen werkbestanden selecteren"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Je IT-beheerder staat niet toe dat je werkbestanden opent met een app die je voor persoonlijke doeleinden gebruikt"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Kan geen persoonlijke bestanden selecteren"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Je IT-beheerder staat niet toe dat je persoonlijke bestanden opent via een werk-app"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Kan geen <xliff:g id="PROFILE">%1$s</xliff:g>-bestanden selecteren"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Je IT-beheerder staat niet toe dat je <xliff:g id="PROFILE_0">%1$s</xliff:g>-bestanden opent vanuit een <xliff:g id="PROFILE_1">%2$s</xliff:g>-app"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Kan niet opslaan in werkprofiel"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Je IT-beheerder staat niet toe dat je persoonlijke bestanden opslaat in je werkprofiel"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Kan niet opslaan in persoonlijk profiel"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Je IT-beheerder staat niet toe dat je werkbestanden opslaat in je persoonlijke profiel"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Kan niet opslaan in <xliff:g id="PROFILE">%1$s</xliff:g>-profiel"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Je IT-beheerder staat niet toe dat je <xliff:g id="PROFILE_0">%1$s</xliff:g>-bestanden opslaat in je <xliff:g id="PROFILE_1">%2$s</xliff:g>-profiel"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Deze actie is niet toegestaan"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Neem voor meer informatie contact op met je IT-beheerder"</string>
     <string name="root_recent" msgid="1080156975424341623">"Recent"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nieuwe naam"</string>
     <string name="preview_file" msgid="4056622696305432343">"Voorbeeld van het bestand <xliff:g id="FILENAME">%1$s</xliff:g> bekijken"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Bekijk een voorbeeld van het werkbestand <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Voorbeeld van het <xliff:g id="PROFILE">%1$s</xliff:g>-bestand <xliff:g id="FILENAME">%2$s</xliff:g> weergeven"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Door bestanden browsen in andere apps"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anoniem"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Deze map gebruiken"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Kan deze map niet gebruiken"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Kies een andere map om je privacy te beschermen"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Nieuwe map maken"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Deze telefoon doorzoeken"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Zoeken op dit apparaat"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Zoekgeschiedenis verwijderen <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Persoonlijk"</string>
     <string name="work_tab" msgid="7265359366883747413">"Werk"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index fa895c7..d8eca9d 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"ଏହି ସମୟରେ କଣ୍ଟେଣ୍ଟ ଲୋଡ୍‍ କରିପାରିବ ନାହିଁ"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"ୱାର୍କ ଆପଗୁଡ଼ିକୁ ବିରତ କରାଯାଇଛି"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"ୱାର୍କ ଆପ୍ସ ଚାଲୁ କରନ୍ତୁ"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> ଆପ୍ସକୁ ବିରତ କରାଯାଇଛି"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> ଆପ୍ସକୁ ଚାଲୁ କରନ୍ତୁ"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"ୱାର୍କ ଫାଇଲଗୁଡ଼ିକ ଚୟନ କରାଯାଇପାରିବ ନାହିଁ"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ଆପଣଙ୍କୁ ଏକ ବ୍ୟକ୍ତିଗତ ଆପରୁ ୱାର୍କ ଫାଇଲଗୁଡ଼ିକ ଆକ୍ସେସ୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"ବ୍ୟକ୍ତିଗତ ଫାଇଲଗୁଡ଼ିକ ଚୟନ କରାଯାଇପାରିବ ନାହିଁ"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ଆପଣଙ୍କୁ ଏକ କାର୍ଯ୍ୟସ୍ଥଳୀ ଆପରୁ ବ୍ୟକ୍ତିଗତ ଫାଇଲଗୁଡ଼ିକ ଆକ୍ସେସ୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> ଫାଇଲଗୁଡ଼ିକୁ ଚୟନ କରାଯାଇପାରିବ ନାହିଁ"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"ଆପଣଙ୍କ IT ଆଡମିନ ଏକ <xliff:g id="PROFILE_1">%2$s</xliff:g> ଆପରୁ <xliff:g id="PROFILE_0">%1$s</xliff:g> ଫାଇଲଗୁଡ଼ିକୁ ଆକ୍ସେସ କରିବା ପାଇଁ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"ୱାର୍କ ପ୍ରୋଫାଇଲରେ ସେଭ୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ଆପଣଙ୍କୁ ଆପଣଙ୍କ ୱାର୍କ ପ୍ରୋଫାଇଲରେ ବ୍ୟକ୍ତିଗତ ଫାଇଲଗୁଡ଼ିକୁ ସେଭ୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"ବ୍ୟକ୍ତିଗତ ପ୍ରୋଫାଇଲରେ ସେଭ୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ଆପଣଙ୍କୁ ଆପଣଙ୍କ ବ୍ୟକ୍ତିଗତ ପ୍ରୋଫାଇଲରେ କାର୍ଯ୍ୟସ୍ଥଳୀର ଫାଇଲଗୁଡ଼ିକ ସେଭ୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> ପ୍ରୋଫାଇଲରେ ସେଭ କରାଯାଇପାରିବ ନାହିଁ"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"ଆପଣଙ୍କ IT ଆଡମିନ ଆପଣଙ୍କୁ ଆପଣଙ୍କ <xliff:g id="PROFILE_1">%2$s</xliff:g> ପ୍ରୋଫାଇଲରେ <xliff:g id="PROFILE_0">%1$s</xliff:g> ଫାଇଲଗୁଡ଼ିକୁ ସେଭ କରିବା ପାଇଁ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"ଏହି କାର୍ଯ୍ୟକୁ ଅନୁମତି ଦିଆଯାଇ ନାହିଁ"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"ଅଧିକ ଜାଣିବାକୁ, ଆପଣଙ୍କ IT ଆଡମିନଙ୍କ ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ"</string>
     <string name="root_recent" msgid="1080156975424341623">"ବର୍ତ୍ତମାନର"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"ନୂଆ ନାମ"</string>
     <string name="preview_file" msgid="4056622696305432343">"ଫାଇଲ୍‍ <xliff:g id="FILENAME">%1$s</xliff:g> ପୂର୍ବାବଲୋକନ କରନ୍ତୁ"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"କାର୍ଯ୍ୟସ୍ଥଳୀ ଫାଇଲ୍ <xliff:g id="FILENAME">%1$s</xliff:g>ର ପ୍ରିଭ୍ୟୁ କରନ୍ତୁ"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> ଫାଇଲ <xliff:g id="FILENAME">%2$s</xliff:g>ର ପ୍ରିଭ୍ୟୁ କରନ୍ତୁ"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"ଅନ୍ୟ ଆପ୍ସରେ ଫାଇଲ୍‍ ବ୍ରାଉଜ୍‍ କରନ୍ତୁ"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"ବେନାମୀ"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"ଏହି ଫୋଲ୍ଡର୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"ଏହି ଫୋଲ୍ଡରକୁ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"ଆପଣଙ୍କ ଗୋପନୀୟତାକୁ ସୁରକ୍ଷିତ କରିବାକୁ ଅନ୍ୟ ଏକ ଫୋଲ୍ଡର୍ ବାଛନ୍ତୁ"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"ନୂଆ ଫୋଲ୍ଡର୍ ତିଆରି କରନ୍ତୁ"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"ଏହି ଫୋନରେ ସର୍ଚ୍ଚ କରନ୍ତୁ"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"ଏହି ଡିଭାଇସକୁ ସର୍ଚ୍ଚ କରନ୍ତୁ"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"ସର୍ଚ୍ଚ ଇତିହାସ <xliff:g id="TEXT">%1$s</xliff:g>କୁ ଡିଲିଟ କରନ୍ତୁ"</string>
     <string name="personal_tab" msgid="3878576287868528503">"ବ୍ୟକ୍ତିଗତ"</string>
     <string name="work_tab" msgid="7265359366883747413">"ୱାର୍କ"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index aa7e2ee..f1390ce 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"ਇਸ ਵੇਲੇ ਸਮੱਗਰੀ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਰੋਕਿਆ ਗਿਆ ਹੈ"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਚਾਲੂ ਕਰੋ"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> ਐਪਾਂ ਨੂੰ ਰੋਕਿਆ ਗਿਆ ਹੈ"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> ਐਪਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"ਕਾਰਜ ਸੰਬੰਧੀ ਫ਼ਾਈਲਾਂ ਨੂੰ ਨਹੀਂ ਚੁਣਿਆ ਜਾ ਸਕਦਾ"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ ਨਿੱਜੀ ਐਪ ਤੋਂ ਕਾਰਜ ਸੰਬੰਧੀ ਫ਼ਾਈਲਾਂ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰਨ ਦਿੰਦਾ"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"ਨਿੱਜੀ ਫ਼ਾਈਲਾਂ ਨੂੰ ਨਹੀਂ ਚੁਣਿਆ ਜਾ ਸਕਦਾ"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ ਕੰਮ ਸੰਬੰਧੀ ਐਪ ਤੋਂ ਨਿੱਜੀ ਫ਼ਾਈਲਾਂ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰਨ ਦਿੰਦਾ"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਚੁਣਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ <xliff:g id="PROFILE_1">%2$s</xliff:g> ਐਪ ਤੋਂ <xliff:g id="PROFILE_0">%1$s</xliff:g> ਫ਼ਾਈਲਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਦਿੰਦਾ"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ ਆਪਣੇ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਨਿੱਜੀ ਫ਼ਾਈਲਾਂ ਰੱਖਿਅਤ ਨਹੀਂ ਕਰਨ ਦਿੰਦਾ"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"ਨਿੱਜੀ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ ਆਪਣੇ ਨਿੱਜੀ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਕਾਰਜ ਸੰਬੰਧੀ ਫ਼ਾਈਲਾਂ ਰੱਖਿਅਤ ਨਹੀਂ ਕਰਨ ਦਿੰਦਾ"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> ਪ੍ਰੋਫਾਈਲ \'ਤੇ ਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ <xliff:g id="PROFILE_0">%1$s</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਤੁਹਾਡੇ <xliff:g id="PROFILE_1">%2$s</xliff:g> ਪ੍ਰੋਫਾਈਲ \'ਤੇ ਰੱਖਿਅਤ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਦਿੰਦਾ"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"ਇਸ ਕਾਰਵਾਈ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"ਹੋਰ ਜਾਣਨ ਲਈ, ਆਪਣੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ"</string>
     <string name="root_recent" msgid="1080156975424341623">"ਹਾਲੀਆ"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"ਨਵਾਂ ਨਾਮ"</string>
     <string name="preview_file" msgid="4056622696305432343">"ਫ਼ਾਈਲ <xliff:g id="FILENAME">%1$s</xliff:g> ਦੀ ਪੂਰਵ-ਝਲਕ ਦੇਖੋ"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"ਕਾਰਜ ਸੰਬੰਧੀ ਫ਼ਾਈਲ <xliff:g id="FILENAME">%1$s</xliff:g> ਦੀ ਪੂਰਵ-ਝਲਕ ਦੇਖੋ"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> ਫ਼ਾਈਲ <xliff:g id="FILENAME">%2$s</xliff:g> ਦੀ ਪੂਰਵ-ਝਲਕ ਦੇਖੋ"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"ਹੋਰ ਐਪਾਂ ਵਿੱਚ ਫ਼ਾਈਲਾਂ ਬ੍ਰਾਊਜ਼ ਕਰੋ"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"ਗੁਮਨਾਮ"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"ਇਹ ਫੋਲਡਰ ਵਰਤੋ"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"ਇਹ ਫੋਲਡਰ ਨਹੀਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"ਆਪਣੀ ਪਰਦੇਦਾਰੀ ਦੀ ਸੁਰੱਖਿਆ ਲਈ, ਕੋਈ ਹੋਰ ਫੋਲਡਰ ਚੁਣੋ"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"ਨਵਾਂ ਫੋਲਡਰ ਬਣਾਓ"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"ਇਹ ਫ਼ੋਨ ਖੋਜੋ"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"ਇਸ ਡੀਵਾਈਸ ਨੂੰ ਖੋਜੋ"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"ਖੋਜ ਇਤਿਹਾਸ ਮਿਟਾਓ <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"ਨਿੱਜੀ"</string>
     <string name="work_tab" msgid="7265359366883747413">"ਕਾਰਜ-ਸਥਾਨ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 5684295..4a76faf 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Teraz nie można załadować zawartości"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Aplikacje służbowe zostały wstrzymane"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Włącz aplikacje służbowe"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Aplikacje <xliff:g id="PROFILE">%1$s</xliff:g> zostały wstrzymane"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Włącz aplikacje typu <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Nie można wybrać plików służbowych"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Administrator IT nie pozwala na dostęp do plików służbowych w aplikacjach osobistych"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Nie można wybrać plików osobistych"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Administrator IT nie pozwala na dostęp do plików osobistych w aplikacjach służbowych"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Nie można wybierać plików typu <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Administrator IT nie pozwala na dostęp do plików typu <xliff:g id="PROFILE_0">%1$s</xliff:g> z aplikacji typu <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Nie można zapisać w profilu służbowym"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Administrator IT nie pozwala na zapisywanie plików osobistych w profilu służbowym"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Nie można zapisać w profilu osobistym"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Administrator IT nie pozwala na zapisywanie plików służbowych w profilu osobistym"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Nie można zapisać w profilu typu <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Administrator IT nie pozwala na zapisywanie plików typu <xliff:g id="PROFILE_0">%1$s</xliff:g> w profilu typu <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Ta czynność jest niedozwolona"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Aby dowiedzieć się więcej, skontaktuj się z administratorem IT"</string>
     <string name="root_recent" msgid="1080156975424341623">"Najnowsze"</string>
@@ -310,6 +316,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nowa nazwa"</string>
     <string name="preview_file" msgid="4056622696305432343">"Wyświetl podgląd pliku <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Wyświetl podgląd pliku służbowego <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Wyświetl podgląd pliku <xliff:g id="FILENAME">%2$s</xliff:g> typu <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Przeglądaj pliki w innych aplikacjach"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonimowa"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Użyj tego folderu"</string>
@@ -318,7 +325,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Nie można użyć tego folderu"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Aby chronić swoją prywatność, wybierz inny folder"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Utwórz nowy folder"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Szukaj na telefonie"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Przeszukaj to urządzenie"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Usuń historię wyszukiwania <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Osobiste"</string>
     <string name="work_tab" msgid="7265359366883747413">"Służbowe"</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 96030ed..d7f8d61 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Não é possível carregar o conteúdo no momento"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Os apps de trabalho foram pausados"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Ativar apps de trabalho"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Apps do perfil <xliff:g id="PROFILE">%1$s</xliff:g> estão pausados"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Ativar apps do perfil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Não é possível selecionar arquivos de trabalho"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Seu administrador de TI não permite que você acesse arquivos de trabalho em um app pessoal"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Não foi possível selecionar arquivos pessoais"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Seu administrador de TI não permite que você acesse arquivos pessoais em um app de trabalho"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Não é possível selecionar arquivos do perfil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Seu administrador de TI não permite que arquivos do perfil <xliff:g id="PROFILE_0">%1$s</xliff:g> sejam acessados por um app do perfil <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Não é possível salvar no perfil de trabalho"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Seu administrador de TI não permite que você salve arquivos pessoais no perfil de trabalho"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Não é possível salvar no perfil pessoal"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Seu administrador de TI não permite que você salve arquivos de trabalho no perfil pessoal"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Não é possível salvar no perfil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Seu administrador de TI não permite que arquivos do perfil <xliff:g id="PROFILE_0">%1$s</xliff:g> sejam salvos no perfil <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Essa ação não é permitida"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Para saber mais, entre em contato com o administrador de TI"</string>
     <string name="root_recent" msgid="1080156975424341623">"Recentes"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Novo nome"</string>
     <string name="preview_file" msgid="4056622696305432343">"Visualizar o arquivo <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Visualizar o arquivo de trabalho <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Visualizar o arquivo <xliff:g id="FILENAME">%2$s</xliff:g> do perfil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Procurar arquivos em outros apps"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anônimo"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Usar esta pasta"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Não é possível usar essa pasta"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Para proteger sua privacidade, escolha outra pasta"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Criar nova pasta"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Pesquisar neste smartphone"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Pesquisar neste dispositivo"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Excluir <xliff:g id="TEXT">%1$s</xliff:g> do histórico de pesquisa"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Pessoal"</string>
     <string name="work_tab" msgid="7265359366883747413">"Trabalho"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 9eb8f12..e159e6e 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Não é possível carregar o conteúdo neste momento"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"As Apps de trabalho estão suspensas."</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Ativar apps de trabalho"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"As apps de <xliff:g id="PROFILE">%1$s</xliff:g> estão pausadas"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Ativar apps de <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Não é possível selecionar ficheiros de trabalho."</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"O seu administrador de TI não lhe permite aceder a ficheiros de trabalho a partir de uma app pessoal."</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Não é possível selecionar ficheiros pessoais."</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"O seu administrador de TI não lhe permite aceder a ficheiros pessoais a partir de uma app de trabalho."</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Não é possível selecionar ficheiros de <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"O seu administrador de TI não lhe permite aceder a ficheiros de <xliff:g id="PROFILE_0">%1$s</xliff:g> a partir de uma app <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Não é possível guardar no perfil de trabalho."</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"O seu administrador de TI não lhe permite guardar ficheiros pessoais no seu perfil de trabalho."</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Não é possível guardar no perfil pessoal."</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"O seu administrador de TI não lhe permite guardar ficheiros de trabalho no seu perfil pessoal."</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Não é possível guardar no perfil de <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"O seu administrador de TI não lhe permite guardar ficheiros <xliff:g id="PROFILE_0">%1$s</xliff:g> no seu perfil de <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Esta ação não é permitida"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Para saber mais, contacte o administrador de TI."</string>
     <string name="root_recent" msgid="1080156975424341623">"Recentes"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Novo nome"</string>
     <string name="preview_file" msgid="4056622696305432343">"Pré-visualizar o ficheiro <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Pré-visualize o ficheiro de trabalho <xliff:g id="FILENAME">%1$s</xliff:g>."</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Pré-visualize o ficheiro de <xliff:g id="PROFILE">%1$s</xliff:g> <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Procure ficheiros noutras apps"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anónimo"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Usar esta pasta"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Não é possível utilizar esta pasta"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Para proteger a sua privacidade, escolha outra pasta."</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Criar nova pasta"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Pesquise neste telemóvel"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Pesquise este dispositivo"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Elimine o histórico de pesquisas <xliff:g id="TEXT">%1$s</xliff:g>."</string>
     <string name="personal_tab" msgid="3878576287868528503">"Pessoal"</string>
     <string name="work_tab" msgid="7265359366883747413">"Trabalho"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 96030ed..d7f8d61 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Não é possível carregar o conteúdo no momento"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Os apps de trabalho foram pausados"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Ativar apps de trabalho"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Apps do perfil <xliff:g id="PROFILE">%1$s</xliff:g> estão pausados"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Ativar apps do perfil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Não é possível selecionar arquivos de trabalho"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Seu administrador de TI não permite que você acesse arquivos de trabalho em um app pessoal"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Não foi possível selecionar arquivos pessoais"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Seu administrador de TI não permite que você acesse arquivos pessoais em um app de trabalho"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Não é possível selecionar arquivos do perfil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Seu administrador de TI não permite que arquivos do perfil <xliff:g id="PROFILE_0">%1$s</xliff:g> sejam acessados por um app do perfil <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Não é possível salvar no perfil de trabalho"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Seu administrador de TI não permite que você salve arquivos pessoais no perfil de trabalho"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Não é possível salvar no perfil pessoal"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Seu administrador de TI não permite que você salve arquivos de trabalho no perfil pessoal"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Não é possível salvar no perfil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Seu administrador de TI não permite que arquivos do perfil <xliff:g id="PROFILE_0">%1$s</xliff:g> sejam salvos no perfil <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Essa ação não é permitida"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Para saber mais, entre em contato com o administrador de TI"</string>
     <string name="root_recent" msgid="1080156975424341623">"Recentes"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Novo nome"</string>
     <string name="preview_file" msgid="4056622696305432343">"Visualizar o arquivo <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Visualizar o arquivo de trabalho <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Visualizar o arquivo <xliff:g id="FILENAME">%2$s</xliff:g> do perfil <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Procurar arquivos em outros apps"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anônimo"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Usar esta pasta"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Não é possível usar essa pasta"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Para proteger sua privacidade, escolha outra pasta"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Criar nova pasta"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Pesquisar neste smartphone"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Pesquisar neste dispositivo"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Excluir <xliff:g id="TEXT">%1$s</xliff:g> do histórico de pesquisa"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Pessoal"</string>
     <string name="work_tab" msgid="7265359366883747413">"Trabalho"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index cc2f20d..1332421 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Momentan, conținutul nu poate fi încărcat"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Aplicațiile pentru lucru sunt întrerupte"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Activează aplicațiile pentru lucru"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Aplicațiile <xliff:g id="PROFILE">%1$s</xliff:g> sunt întrerupte"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Activează aplicațiile <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Nu se pot selecta fișiere de lucru"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Administratorul IT nu îți permite să accesezi fișiere de lucru dintr-o aplicație personală"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Nu se pot selecta fișiere personale"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Administratorul IT nu îți permite să accesezi fișiere personale dintr-o aplicație pentru lucru"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Nu se pot selecta fișiere <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Administratorul IT nu îți permite să accesezi fișiere <xliff:g id="PROFILE_0">%1$s</xliff:g> dintr-o aplicație <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Nu se poate salva în profilul de serviciu"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Administratorul IT nu îți permite să salvezi fișiere personale în profilul de serviciu"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Nu se poate salva în profilul personal"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Administratorul IT nu îți permite să salvezi fișiere de lucru în profilul personal"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Nu se pot salva în profilul <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Administratorul IT nu îți permite să salvezi fișiere <xliff:g id="PROFILE_0">%1$s</xliff:g> în profilul <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Acțiunea nu este permisă"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Pentru a afla mai multe, contactează administratorul IT"</string>
     <string name="root_recent" msgid="1080156975424341623">"Recente"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nume nou"</string>
     <string name="preview_file" msgid="4056622696305432343">"Previzualizează fișierul <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Previzualizează fișierul de lucru <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Previzualizează fișierul <xliff:g id="PROFILE">%1$s</xliff:g> <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Caută fișiere în alte aplicații"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonim"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Folosește acest dosar"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Nu poți folosi acest dosar"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Alege alt dosar, ca să-ți protejezi confidențialitatea"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Creează un dosar nou"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Caută în acest telefon"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Caută acest dispozitiv"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Șterge istoricul căutărilor <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personale"</string>
     <string name="work_tab" msgid="7265359366883747413">"Serviciu"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 5329c0a..b1d368d 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Не удалось загрузить контент"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Рабочие приложения приостановлены"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Включить рабочие приложения"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Работа приложений из профиля \"<xliff:g id="PROFILE">%1$s</xliff:g>\" приостановлена"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Включить приложения из профиля \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Невозможно выбрать рабочие файлы"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Системный администратор запретил доступ к рабочим файлам из личных приложений."</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Невозможно выбрать личные файлы"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Системный администратор запретил доступ к личным файлам из рабочего приложения."</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Невозможно выбрать файлы из профиля \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Системный администратор запретил доступ к файлам из профиля \"<xliff:g id="PROFILE_0">%1$s</xliff:g>\" в приложении из профиля \"<xliff:g id="PROFILE_1">%2$s</xliff:g>\"."</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Невозможно сохранить файлы"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Системный администратор запретил сохранять личные файлы в рабочем профиле."</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Невозможно сохранить файлы"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Системный администратор запретил сохранять рабочие файлы в личном профиле."</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Невозможно сохранить файлы в профиле \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Системный администратор запретил сохранять файлы из профиля \"<xliff:g id="PROFILE_0">%1$s</xliff:g>\" в профиле \"<xliff:g id="PROFILE_1">%2$s</xliff:g>\"."</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Это действие запрещено"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Чтобы узнать больше, обратитесь к администратору."</string>
     <string name="root_recent" msgid="1080156975424341623">"Недавние"</string>
@@ -310,6 +316,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Новое название"</string>
     <string name="preview_file" msgid="4056622696305432343">"Открыть файл \"<xliff:g id="FILENAME">%1$s</xliff:g>\" в режиме предпросмотра."</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Предпросмотр рабочего файла \"<xliff:g id="FILENAME">%1$s</xliff:g>\""</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Предпросмотр файла \"<xliff:g id="FILENAME">%2$s</xliff:g>\" из профиля \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Поиск файлов в других приложениях"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Анонимное приложение"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Использовать эту папку"</string>
@@ -318,7 +325,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Выберите другую папку"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"В целях защиты вашей конфиденциальности мы заблокировали доступ к этой папке."</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Новая папка"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Поиск на этом телефоне"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Поиск на устройстве"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Очистить историю поиска: <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Личное"</string>
     <string name="work_tab" msgid="7265359366883747413">"Рабочее"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 5652758..b7297d3 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"මේ මොහොතේ අන්තර්ගතය පූරණය කිරීමට නොහැකිය"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"කාර්යාල යෙදුම් විරාම කර ඇත"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"කාර්යාල යෙදුම් ක්‍රියාත්මක කරන්න"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> යෙදුම් විරාම කළා"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> යෙදුම් සක්‍රීය කරන්න"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"කාර්යාල ගොනු තේරීමට හැකිය"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"ඔබේ IT පරිපාලක ඔබට පෞද්ගලික යෙදුමකින් කාර්යාල ගොනු වෙත ප්‍රවේශ වීමට ඉඩ නොදේ"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"පෞද්ගලික ගොනු තේරීමට නොහැකිය"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"ඔබේ IT පරිපාලක ඔබට කාර්යාල යෙදුමකින් පෞද්ගලික ගොනු වෙත ප්‍රවේශ වීමට ඉඩ නොදේ"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> ගොනු තේරිය නොහැක"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"ඔබේ තොරතුරු තාක්‍ෂණ පරිපාලක <xliff:g id="PROFILE_0">%1$s</xliff:g> ගොනු වෙත <xliff:g id="PROFILE_1">%2$s</xliff:g> යෙදුමකින් ප්‍රවේශ වීමට ඉඩ නොදෙයි"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"කාර්යාල පැතිකඩ වෙත සුරැකිය නොහැකිය"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"ඔබේ IT පරිපාලක පෞද්ගලික ගොනු ඔබේ කාර්යාල පැතිකඩ වෙත සුරැකීමට ඉඩ නොදේ"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"පෞද්ගලික පැතිකඩ වෙත සුරැකීමට හැකිය"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"ඔබේ IT පරිපාලක කාර්යාල ගොනු ඔබේ පෞද්ගලික පැතිකඩ වෙත සුරැකීමට ඉඩ නොදේ"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> පැතිකඩට සුරැකිය නො හැකි ය"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"ඔබේ තොරතුරු තාලක්‍ෂණ පරිපාලක ඔබට <xliff:g id="PROFILE_0">%1$s</xliff:g> ගොනු ඔබේ <xliff:g id="PROFILE_1">%2$s</xliff:g> පැතිකඩෙහි සුරැකීමට ඉඩ නොදෙයි"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"මෙම ක්‍රියාව ඉඩ දී නැත"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"තවත් දැන ගැනීමට, ඔබේ IT සම්බන්ධ කර ගන්න"</string>
     <string name="root_recent" msgid="1080156975424341623">"මෑත"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"අලුත් නම"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> ගොනුව පෙර දකින්න"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> කාර්යාල ගොනුව පෙරදසුන් කරන්න"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> <xliff:g id="FILENAME">%2$s</xliff:g> ගොනුව පෙරදකින්න"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"වෙනත් යෙදුම්වල ගොනු බ්‍රවුස් කරන්න"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"නිර්නාමික"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"මෙම ෆෝල්ඩරය භාවිත කරන්න"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"මෙම ෆෝල්ඩරය භාවිත කළ නොහැකිය"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"ඔබේ රහස්‍යතාව ආරක්ෂා කිරීමට, තවත් ෆෝල්ඩරයක් තෝරා ගන්න"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"නව ෆෝල්ඩරය තනන්න"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"මෙම දුරකථනයේ සොයන්න"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"මෙම උපාංගය සොයන්න"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"සෙවීම් ඉතිහාසය මකන්න <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"පෞද්ගලික"</string>
     <string name="work_tab" msgid="7265359366883747413">"කාර්යාල"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 01dfe58..36e4f01 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Obsah momentálne nie je možné načítať"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Pracovné aplikácie sú pozastavené"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Zapnúť pracovné aplikácie"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Aplikácie profilu <xliff:g id="PROFILE">%1$s</xliff:g> sú pozastavené"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Zapnúť aplikácie profilu <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Pracovné súbory sa nedajú vybrať"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Váš správca IT vám zakázal prístup k pracovným súborom z osobnej aplikácie"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Osobné súbory sa nedajú vybrať"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Váš správca IT vám zakázal prístup k osobným súborom z pracovnej aplikácie"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Súbory profilu <xliff:g id="PROFILE">%1$s</xliff:g> sa nedajú vybrať"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Váš správca IT vám nepovolil prístup k súborom profilu <xliff:g id="PROFILE_0">%1$s</xliff:g> z aplikácie profilu <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Nie je možné ukladať do pracovného profilu"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Váš správca IT vám zakázal ukladať osobné súbory do pracovného profilu"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Nedajú sa uložiť do osobného profilu"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Váš správca IT vám zakázal ukladať pracovné súbory do osobného profilu"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Nie je možné uložiť do profilu <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Váš správca IT vám nepovolil ukladanie súborov profilu <xliff:g id="PROFILE_0">%1$s</xliff:g> do profilu <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Táto akcia nie je povolená"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Viac sa dozviete od svojho správcu IT"</string>
     <string name="root_recent" msgid="1080156975424341623">"Nedávne"</string>
@@ -310,6 +316,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nové názov"</string>
     <string name="preview_file" msgid="4056622696305432343">"Zobraziť ukážku súboru <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Zobraziť ukážku pracovného súboru <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Zobrazte si ukážku súboru profilu <xliff:g id="PROFILE">%1$s</xliff:g> s názvom <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Prehliadanie súborov v iných aplikáciách"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonymná"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Použiť tento priečinok"</string>
@@ -318,7 +325,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Tento priečinok sa nedá použiť"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Ak chcete ochrániť svoje súkromie, vyberte iný priečinok"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Vytvoriť nový priečinok"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Hľadať v telefóne"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Vyhľadajte v tomto zariadení"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Odstrániť históriu vyhľadávania <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Osobné"</string>
     <string name="work_tab" msgid="7265359366883747413">"Práca"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 3a1e0b4..e2faad0 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Vsebine trenutno ni mogoče naložiti"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Delovne aplikacije so začasno zaustavljene"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Vklopi delovne aplikacije"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Aplikacije profila »<xliff:g id="PROFILE">%1$s</xliff:g>« so začasno zaustavljene"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Vklopi aplikacije profila »<xliff:g id="PROFILE">%1$s</xliff:g>«"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Ni mogoče izbrati službenih datotek"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Skrbnik za IT ne dovoli dostopa do službenih datotek iz osebne aplikacije"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Ni mogoče izbrati osebnih datotek"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Skrbnik za IT ne dovoli dostopa do osebnih datotek iz delovne aplikacije"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Ni mogoče izbrati datotek profila »<xliff:g id="PROFILE">%1$s</xliff:g>«"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Skrbnik za IT ne dovoli dostopanja do datotek profila »<xliff:g id="PROFILE_0">%1$s</xliff:g>« iz aplikacije profila »<xliff:g id="PROFILE_1">%2$s</xliff:g>«"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Ni mogoče shraniti v delovni profil"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Skrbnik za IT ne dovoli shranjevanja osebnih datotek v delovni profil"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Ni mogoče shraniti v osebni profil"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Skrbnik za IT ne dovoli shranjevanja službenih datotek v osebni profil"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Ni mogoče shraniti v profil »<xliff:g id="PROFILE">%1$s</xliff:g>«"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Skrbnik za IT ne dovoli shranjevanja datotek profila »<xliff:g id="PROFILE_0">%1$s</xliff:g>« v profil »<xliff:g id="PROFILE_1">%2$s</xliff:g>«"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"To dejanje ni dovoljeno"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Za več informacij se obrnite na skrbnika za IT"</string>
     <string name="root_recent" msgid="1080156975424341623">"Nedavno"</string>
@@ -310,6 +316,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Novo ime"</string>
     <string name="preview_file" msgid="4056622696305432343">"Predogled datoteke <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Predogled delovne datoteke <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Predogled datoteke »<xliff:g id="FILENAME">%2$s</xliff:g>« iz profila »<xliff:g id="PROFILE">%1$s</xliff:g>«"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Brskanje po datotekah v drugih aplikacijah"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonimno"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Uporabi to mapo"</string>
@@ -318,7 +325,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Te mape ni mogoče uporabiti"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Izberite drugo mapo, da zaščitite svojo zasebnost"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Ustvari novo mapo"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Iščite v tem telefonu"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Iskanje v tej napravi"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Brisanje zgodovine iskanja <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Osebno"</string>
     <string name="work_tab" msgid="7265359366883747413">"Služba"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 30d115d..5de2e9d 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Përmbajtja nuk mund të ngarkohet për momentin"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Aplikacionet e punës janë vendosur në pauzë"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Aktivizo aplikacionet e punës"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Aplikacionet e profilit \"<xliff:g id="PROFILE">%1$s</xliff:g>\" janë vendosur në pauzë"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Aktivizo aplikacionet e profilit \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Nuk mund të zgjedhësh skedarë pune"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Administratori i teknologjisë së informacionit nuk të lejon të kesh qasje te skedarët e punës nga një aplikacion personal"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Nuk mund të zgjedhësh skedarë personalë"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Administratori yt i teknologjisë së informacionit nuk të lejon të kesh qasje te skedarët personalë nga një aplikacion i punës"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Skedarët e profilit \"<xliff:g id="PROFILE">%1$s</xliff:g>\" nuk mund të zgjidhen"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Administratori yt i teknologjisë së informacionit nuk të lejon të kesh qasje te skedarët e profilit \"<xliff:g id="PROFILE_0">%1$s</xliff:g>\" nga një aplikacion i profilit \"<xliff:g id="PROFILE_1">%2$s</xliff:g>\""</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Nuk mund të ruhen në profilin tënd të punës"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Administratori yt i teknologjisë së informacionit nuk të lejon të ruash skedarët personalë në profilin tënd të punës"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Nuk mund të ruhen në profilin tënd personal"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Administratori yt i teknologjisë së informacionit nuk të lejon të ruash skedarët e punës në profilin tënd personal"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Nuk mund të ruash te profili \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Administratori yt i teknologjisë së informacionit nuk të lejon të ruash skedarët e profilit \"<xliff:g id="PROFILE_0">%1$s</xliff:g>\" te profili \"<xliff:g id="PROFILE_1">%2$s</xliff:g>\""</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Ky veprim nuk lejohet"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Për të mësuar më shumë, kontakto me administratorin tënd të teknologjisë së informacionit"</string>
     <string name="root_recent" msgid="1080156975424341623">"Të fundit"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Emri i ri"</string>
     <string name="preview_file" msgid="4056622696305432343">"Shiko paraprakisht skedarin <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Shiko paraprakisht skedarin e punës <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Shiko paraprakisht skedarin e profilit \"<xliff:g id="PROFILE">%1$s</xliff:g>\": <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Shfleto skedarët në aplikacionet e tjera"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonim"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Përdor këtë dosje"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Kjo dosje nuk mund të përdoret"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Për të mbrojtur privatësinë tënde, zgjidh një dosje tjetër"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Krijo dosje të re"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Kërko në këtë telefon"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Kërko në këtë pajisje"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Fshi historikun e kërkimeve për <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personale"</string>
     <string name="work_tab" msgid="7265359366883747413">"Puna"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 8fe2718..0c40de0 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Учитавање садржаја тренутно није могуће"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Пословне апликације су паузиране"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Укључи пословне апликације"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Паузиране су апликације профила: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Укључи апликације профила: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Не можете да изаберете пословне фајлове"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"ИТ администратор вам не дозвољава да приступате датотекама за посао из личне апликације"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Избор личних датотека није успео"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"ИТ администратор вам не дозвољава да приступате личним датотекама из пословне апликације"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Не можете да изаберете фајлове са профила: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"ИТ администратор не дозвољава да фајловима на профилу: <xliff:g id="PROFILE_0">%1$s</xliff:g> приступате из апликације профила: <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Не можете да сачувате на пословном профилу"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"ИТ администратор вам не дозвољава да чувате личне датотеке на пословном профилу"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Не можете да сачувате на личном профилу"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"ИТ администратор вам не дозвољава да чувате датотеке за посао на личном профилу"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Не можете да чувате на профилу: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"ИТ администратор не дозвољава да фајлове са профила: <xliff:g id="PROFILE_0">%1$s</xliff:g> чувате на профилу: <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Ова радња није дозвољена"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Обратите се ИТ администратору да бисте сазнали више"</string>
     <string name="root_recent" msgid="1080156975424341623">"Недавно"</string>
@@ -288,6 +294,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Нови назив"</string>
     <string name="preview_file" msgid="4056622696305432343">"Прегледајте датотеку <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Прегледајте датотеку за посао <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Прегледајте фајл <xliff:g id="FILENAME">%2$s</xliff:g> са профила: <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Прегледајте датотеке у другим апликацијама"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Анонимна"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Користи овај фолдер"</string>
@@ -296,7 +303,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Не можете да користите овај фолдер"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Да бисте заштитили приватност, одаберите неки други фолдер"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Направи нови фолдер"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Претражите овај телефон"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Претражи овај уређај"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Избришите историју претраге <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Лично"</string>
     <string name="work_tab" msgid="7265359366883747413">"Посао"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 385808c..9a72708 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Det går inte att läsa in innehållet just nu"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Jobbappar har pausats"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Aktivera jobbappar"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g>appar har pausats"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Slå på <xliff:g id="PROFILE">%1$s</xliff:g>appar"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Det går inte att välja jobbfiler"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT-administratören tillåter inte att du öppnar jobbfiler i en privat app"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Det går inte att välja privata filer"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT-administratören tillåter inte att du öppnar privata filer i en jobbapp"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Det gick inte att välja <xliff:g id="PROFILE">%1$s</xliff:g>filer"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT-administratören tillåter inte att du sparar <xliff:g id="PROFILE_0">%1$s</xliff:g>filer från en <xliff:g id="PROFILE_1">%2$s</xliff:g> app"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Det går inte att spara i jobbprofilen"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT-administratören tillåter inte att du sparar privata filer i jobbprofilen"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Det går inte att spara i den privata profilen"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT-administratören tillåter inte att du sparar jobbfiler i den privata profilen"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Det gick inte att spara i <xliff:g id="PROFILE">%1$s</xliff:g>profilen"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT-administratören tillåter inte att du sparar <xliff:g id="PROFILE_0">%1$s</xliff:g>filer i den <xliff:g id="PROFILE_1">%2$s</xliff:g> profilen"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Förbjuden åtgärd"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Kontakta IT-administratören om du vill veta mer"</string>
     <string name="root_recent" msgid="1080156975424341623">"Senaste"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Nytt namn"</string>
     <string name="preview_file" msgid="4056622696305432343">"Förhandsgranska filen <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Förhandsgranska jobbfilen <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Förhandsgranska <xliff:g id="PROFILE">%1$s</xliff:g>filen <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Bläddra efter filer i andra appar"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonym"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Använd den här mappen"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Det går inte att använda den här mappen"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Välj en annan mapp för att skydda din integritet"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Skapa ny mapp"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Sök på telefonen"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Sök på den här enheten"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Radera sökhistorik – <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Privat"</string>
     <string name="work_tab" msgid="7265359366883747413">"Jobb"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 4730783..c09e09f 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Imeshindwa kupakia maudhui kwa sasa"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Programu za kazini zimesimamishwa"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Washa programu za kazini"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Programu za <xliff:g id="PROFILE">%1$s</xliff:g> zimesitishwa"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Washa programu za <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Imeshindwa kuchagua faili za kazini"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Msimamizi wako wa TEHAMA hakuruhusu ufikie faili za kazini kwenye programu ya binafsi"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Imeshindwa kuchagua faili za binafsi"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Msimamizi wako wa TEHAMA hakuruhusu ufikie faili za binafsi ukitumia programu ya kazini"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Huwezi kuchagua faili za <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Msimamizi wako wa TEHAMA hakuruhusu ufikie faili za <xliff:g id="PROFILE_0">%1$s</xliff:g> kwenye programu yako <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Imeshindwa kuhifadhi kwenye wasifu wa kazini"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Msimamizi wako wa TEHAMA hakuruhusu uhifadhi faili za binafsi kwenye wasifu wa kazini"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Imeshindwa kuhifadhi kwenye wasifu wa binafsi"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Msimamizi wako wa TEHAMA hakuruhusu uhifadhi faili za kazini kwenye wasifu wako wa binafsi"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Imeshindwa kuhifadhi kwenye wasifu wa <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Msimamizi wako wa TEHAMA hakuruhusu uhifadhi faili <xliff:g id="PROFILE_0">%1$s</xliff:g> kwenye wasifu wako wa <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Kitendo hiki hakiruhusiwi"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Ili upate maelezo zaidi, wasiliana na msimamizi wako wa TEHAMA"</string>
     <string name="root_recent" msgid="1080156975424341623">"Za hivi majuzi"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Jina jipya"</string>
     <string name="preview_file" msgid="4056622696305432343">"Kagua faili ya <xliff:g id="FILENAME">%1$s</xliff:g> kwanza"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Kagua kwanza fali ya kazini ya <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Kagua kwanza faili ya <xliff:g id="PROFILE">%1$s</xliff:g> ya <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Vinjari faili katika programu nyingine"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Haijulikani"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Tumia folda hii"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Huwezi kutumia folda hii"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Ili ulinde faragha yako, chagua folda nyingine"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Fungua folda mpya"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Tafuta kwenye simu hii"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Tafuta kwenye kifaa hiki"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Futa <xliff:g id="TEXT">%1$s</xliff:g> ya historia ya mambo uliyotafuta"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Binafsi"</string>
     <string name="work_tab" msgid="7265359366883747413">"Kazini"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 5ec185c..1e8b754 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"தற்போது உள்ளடக்கத்தை ஏற்ற முடியவில்லை"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"பணி ஆப்ஸ் இடைநிறுத்தப்பட்டுள்ளன"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"பணி ஆப்ஸை இயக்கு"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> ஆப்ஸ் இடைநிறுத்தப்பட்டுள்ளன"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> ஆப்ஸை இயக்கு"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"பணி ஃபைல்களைத் தேர்ந்தெடுக்க முடியாது"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"பணி ஃபைல்களைத் தனிப்பட்ட பணி ஆப்ஸில் இருந்து அணுகுவதை உங்கள் IT நிர்வாகி அனுமதிக்கவில்லை"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"தனிப்பட்ட ஃபைல்களைத் தேர்ந்தெடுக்க முடியாது"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"தனிப்பட்ட ஃபைல்களைப் பணி ஆப்ஸில் இருந்து அணுகுவதை உங்கள் IT நிர்வாகி அனுமதிக்கவில்லை"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> ஃபைல்களைத் தேர்ந்தெடுக்க முடியவில்லை"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"<xliff:g id="PROFILE_0">%1$s</xliff:g> ஃபைல்களை <xliff:g id="PROFILE_1">%2$s</xliff:g> ஆப்ஸில் இருந்து அணுக உங்கள் IT நிர்வாகி அனுமதிக்கவில்லை"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"பணிக் கணக்கில் சேமிக்க முடியாது"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"தனிப்பட்ட ஃபைல்களைப் பணிக் கணக்கில் சேமிக்க உங்கள் IT நிர்வாகி அனுமதிக்கவில்லை"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"தனிப்பட்ட கணக்கில் சேமிக்க முடியாது"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"பணி ஃபைல்களைத் தனிப்பட்ட கணக்கில் சேமிக்க உங்கள் IT நிர்வாகி அனுமதிக்கவில்லை"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> சுயவிவரத்தில் சேமிக்க முடியவில்லை"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"<xliff:g id="PROFILE_0">%1$s</xliff:g> ஃபைல்களை உங்கள் <xliff:g id="PROFILE_1">%2$s</xliff:g> சுயவிவரத்தில் சேமிக்க உங்கள் IT நிர்வாகி அனுமதிக்கவில்லை"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"இந்தச் செயலுக்கு அனுமதியில்லை"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"மேலும் அறிய IT நிர்வாகியைத் தொடர்புகொள்ளவும்"</string>
     <string name="root_recent" msgid="1080156975424341623">"சமீபத்தியவை"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"புதிய பெயர்"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> என்ற ஃபைல் மாதிரிக்காட்சியாகத் தெரியும்"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> என்ற பணி ஃபைலின் மாதிரிக்காட்சியைப் பார்க்கவும்"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> ஃபைலின் (<xliff:g id="FILENAME">%2$s</xliff:g>) மாதிரிக்காட்சியைக் காட்டும்"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"ஃபைல்களை வேறு ஆப்ஸில் தேடவும்"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"பெயர் குறிப்பிடாதது"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"இந்த ஃபோல்டரைப் பயன்படுத்து"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"ஃபோல்டரைப் பயன்படுத்த இயலாது"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"உங்கள் தனியுரிமையைப் பாதுகாக்க மற்றொரு ஃபோல்டரைத் தேர்வுசெய்யவும்"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"புதிய ஃபோல்டரை உருவாக்கு"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"இந்த மொபைலில் தேடவும்"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"இந்தச் சாதனத்தில் தேடுக"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"தேடல் வரலாற்றை நீக்கும் பட்டன் <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"தனிப்பட்டவை"</string>
     <string name="work_tab" msgid="7265359366883747413">"பணி"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index b8879c8..55b72fe 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"ఈ సమయంలో కంటెంట్‌ను లోడ్ చేయడం సాధ్యపడదు"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"వర్క్ యాప్‌లు పాజ్ చేయబడ్డాయి"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"వర్క్ యాప్‌లను ఆన్ చేయండి"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> యాప్‌లు పాజ్ చేయబడ్డాయి"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> యాప్‌లను ఆన్ చేయండి"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"కార్యాలయ ఫైళ్లను ఎంపిక చేయడం సాధ్యం కాదు"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"వ్యక్తిగత యాప్ నుండి ఆఫీస్ ఫైళ్లను యాక్సెస్ చేయడానికి మీ IT అడ్మిన్ అనుమతించరు"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"వ్యక్తిగత ఫైళ్లను ఎంపిక చేయడం సాధ్యం కాదు"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"ఆఫీస్ యాప్ నుండి వ్యక్తిగత ఫైళ్లను యాక్సెస్ చేయడానికి మీ IT అడ్మిన్ అనుమతించరు"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> ఫైల్స్‌ను ఎంచుకోలేరు"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"<xliff:g id="PROFILE_1">%2$s</xliff:g> యాప్ నుండి <xliff:g id="PROFILE_0">%1$s</xliff:g> ఫైల్స్‌ను యాక్సెస్ చేయడానికి మీ IT అడ్మిన్ మిమ్మల్ని అనుమతించరు"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"కార్యాలయ ప్రొఫైల్‌కి సేవ్ చేయడం సాధ్యం కాదు"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"మీ కార్యాలయ ప్రొఫైల్‌లో వ్యక్తిగత ఫైళ్లను సేవ్ చేయడానికి మీ IT అడ్మిన్ అనుమతించరు"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"వ్యక్తిగత ప్రొఫైల్‌లో సేవ్ చేయడం సాధ్యం కాదు"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"మీ వ్యక్తిగత ప్రొఫైల్‌లో కార్యాలయ ఫైళ్లను సేవ్ చేయడానికి మీ IT అడ్మిన్ అనుమతించరు"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> ప్రొఫైల్‌లో సేవ్ చేయడం సాధ్యం కాదు"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"మీ IT అడ్మిన్ మీ <xliff:g id="PROFILE_1">%2$s</xliff:g> ప్రొఫైల్‌లో <xliff:g id="PROFILE_0">%1$s</xliff:g> ఫైల్స్‌ను సేవ్ చేయడానికి మిమ్మల్ని అనుమతించరు"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"ఈ చర్య అనుమతించబడదు"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"మరింత తెలుసుకోవడానికి, మీ IT అడ్మిన్‌ను కాంటాక్ట్ చేయండి"</string>
     <string name="root_recent" msgid="1080156975424341623">"ఇటీవలివి"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"కొత్త పేరు"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g>ని ప్రివ్యూ చేయండి"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"కార్యాలయ ఫైల్ <xliff:g id="FILENAME">%1$s</xliff:g>ని ప్రివ్యూ చేయండి"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> ఫైల్ <xliff:g id="FILENAME">%2$s</xliff:g>‌ను ప్రివ్యూ చేయండి"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"ఇతర యాప్‌లలోని ఫైళ్లను బ్రౌజ్ చేయండి"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"తెలియనిది"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"ఈ ఫోల్డర్‌ను ఉపయోగించండి"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"ఈ ఫోల్డర్‌ను ఉపయోగించడం సాధ్యం కాదు"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"మీ గోప్యతను కాపాడుకోవటానికి, మరొక ఫోల్డర్‌ను ఎంచుకోండి"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"కొత్త ఫోల్డర్‌ని క్రియేట్ చేయండి"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"ఈ ఫోన్‌లో వెతకండి"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"ఈ పరికరాన్ని సెర్చ్ చేయండి"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"సెర్చ్ హిస్టరీ <xliff:g id="TEXT">%1$s</xliff:g>‌ను తొలగించండి"</string>
     <string name="personal_tab" msgid="3878576287868528503">"వ్యక్తిగత డైరెక్టరీ"</string>
     <string name="work_tab" msgid="7265359366883747413">"కార్యాలయ డైరెక్టరీ"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index a01e970..dc01833 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"โหลดเนื้อหาไม่ได้ในขณะนี้"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"แอปงานหยุดชั่วคราว"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"เปิดแอปงาน"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"แอป<xliff:g id="PROFILE">%1$s</xliff:g>หยุดชั่วคราวแล้ว"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"เปิดใช้แอป<xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"เลือกไฟล์งานไม่ได้"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"ผู้ดูแลระบบไอทีไม่อนุญาตให้เข้าถึงไฟล์งานจากแอปส่วนตัว"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"เลือกไฟล์ส่วนตัวไม่ได้"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"ผู้ดูแลระบบไอทีไม่อนุญาตให้เข้าถึงไฟล์ส่วนตัวจากแอปงาน"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"เลือกไฟล์<xliff:g id="PROFILE">%1$s</xliff:g>ไม่ได้"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"ผู้ดูแลระบบไอทีไม่อนุญาตให้คุณเข้าถึงไฟล์<xliff:g id="PROFILE_0">%1$s</xliff:g>จากแอป<xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"บันทึกในโปรไฟล์งานไม่ได้"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"ผู้ดูแลระบบไอทีไม่อนุญาตให้บันทึกไฟล์ส่วนตัวไว้ในโปรไฟล์งาน"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"บันทึกในโปรไฟล์ส่วนตัวไม่ได้"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"ผู้ดูแลระบบไอทีไม่อนุญาตให้บันทึกไฟล์งานไว้ในโปรไฟล์ส่วนตัว"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"บันทึกลงในโปรไฟล์<xliff:g id="PROFILE">%1$s</xliff:g>ไม่ได้"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"ผู้ดูแลระบบไอทีไม่อนุญาตให้คุณบันทึกไฟล์<xliff:g id="PROFILE_0">%1$s</xliff:g>ลงในโปรไฟล์<xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"ไม่อนุญาตการทำงานนี้"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"โปรดติดต่อผู้ดูแลระบบไอทีเพื่อสอบถามข้อมูลเพิ่มเติม"</string>
     <string name="root_recent" msgid="1080156975424341623">"ล่าสุด"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"ชื่อใหม่"</string>
     <string name="preview_file" msgid="4056622696305432343">"แสดงพรีวิวไฟล์ <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"แสดงตัวอย่างไฟล์งาน <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"แสดงตัวอย่างไฟล์<xliff:g id="PROFILE">%1$s</xliff:g>ชื่อ <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"เรียกดูไฟล์ในแอปอื่นๆ"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"ไม่ระบุชื่อ"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"ใช้โฟลเดอร์นี้"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"ใช้โฟลเดอร์นี้ไม่ได้"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"เลือกโฟลเดอร์อื่นเพื่อปกป้องความเป็นส่วนตัว"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"สร้างโฟลเดอร์ใหม่"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"ค้นหาในโทรศัพท์เครื่องนี้"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"ค้นหาอุปกรณ์นี้"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"ลบประวัติการค้นหา <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"ส่วนตัว"</string>
     <string name="work_tab" msgid="7265359366883747413">"งาน"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 3778d10..dc77194 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Hindi ma-load ang content sa ngayon"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Naka-pause ang mga app para sa trabaho"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"I-on ang mga app para sa trabaho"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Naka-pause ang mga <xliff:g id="PROFILE">%1$s</xliff:g> app"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"I-on ang mga <xliff:g id="PROFILE">%1$s</xliff:g> app"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Hindi makapili ng mga file sa trabaho"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Hindi ka pinapayagan ng iyong IT admin na mag-access ng mga file sa trabaho mula sa personal na app"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Hindi makapili ng mga personal na file"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Hindi ka pinapayagan ng iyong IT admin na mag-access ng mga personal na file mula sa app para sa trabaho"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Hindi mapili ang mga file ng <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Hindi ka pinapayagan ng iyong IT admin na i-access ang mga file ng <xliff:g id="PROFILE_0">%1$s</xliff:g> mula sa isang <xliff:g id="PROFILE_1">%2$s</xliff:g> app"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Hindi ma-save sa profile sa trabaho"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Hindi ka pinapayagan ng iyong IT admin na mag-save ng mga personal na file sa profile mo sa trabaho"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Hindi ma-save sa personal na profile"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Hindi ka pinapayagan ng iyong IT admin na mag-save ng mga file sa trabaho sa personal na profile mo"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Hindi ma-save sa profile sa <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Hindi ka pinapayagan ng IT admin mo na i-save ang mga file ng <xliff:g id="PROFILE_0">%1$s</xliff:g> sa iyong profile sa <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Hindi pinapayagan ang pagkilos na ito"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Para matuto pa, makipag-ugnayan sa iyong IT admin"</string>
     <string name="root_recent" msgid="1080156975424341623">"Kamakailan"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Bagong pangalan"</string>
     <string name="preview_file" msgid="4056622696305432343">"I-preview ang file na <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"I-preview ang file sa trabaho na <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"I-preview ang file ng <xliff:g id="PROFILE">%1$s</xliff:g> na <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"I-browse ang mga file sa iba pang app"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonymous"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Gamitin ang folder na ito"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Hindi magagamit ang folder na ito"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Para maprotektahan ang iyong privacy, pumili ng ibang folder"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Gumawa ng bagong folder"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Maghanap sa teleponong ito"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Maghanap sa device na ito"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"I-delete ang history ng paghahanap <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Personal"</string>
     <string name="work_tab" msgid="7265359366883747413">"Work"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index a1462f5..f8bbc89 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"İçerik şu anda yüklenemiyor"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"İş uygulamaları duraklatıldı"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"İş uygulamalarını aç"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> uygulamaları duraklatıldı"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> uygulamalarını aç"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"İş dosyaları seçilemiyor"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"BT yöneticiniz kişisel bir uygulamadan iş dosyalarına erişmenize izin vermiyor"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Kişisel dosyalar seçilemiyor"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"BT yöneticiniz bir iş uygulamasından kişisel dosyalara erişmenize izin vermiyor"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> dosyalarınız seçilemiyor"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"BT yöneticiniz, <xliff:g id="PROFILE_1">%2$s</xliff:g> uygulamanızdan <xliff:g id="PROFILE_0">%1$s</xliff:g> dosyalarına erişmenize izin vermiyor"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"İş profiline kaydedilemiyor"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"BT yöneticiniz kişisel dosyaları iş profilinize kaydetmenize izin vermiyor"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Kişisel profile kaydedilemiyor"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"BT yöneticiniz iş dosyalarını kişisel profilinize kaydetmenize izin vermiyor"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> profilinize kaydedilemiyor"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"BT yöneticiniz, <xliff:g id="PROFILE_0">%1$s</xliff:g> dosyalarınızı <xliff:g id="PROFILE_1">%2$s</xliff:g> profilinize kaydetmenize izin vermiyor"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Bu işleme izin verilmiyor"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"BT yöneticinizden daha fazla bilgi alabilirsiniz."</string>
     <string name="root_recent" msgid="1080156975424341623">"Son"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Yeni ad"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> dosyasını önizleyin"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> adlı iş dosyasını önizleyin"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> dosyasını (<xliff:g id="FILENAME">%2$s</xliff:g>) önizleyin"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Diğer uygulamalardaki dosyalara göz atın"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Adsız"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Bu klasörü kullan"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Bu klasör kullanılamıyor"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Gizliliğinizi korumak için başka bir klasör seçin"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Yeni klasör oluştur"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Bu telefonu arayın"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Bu cihazda arama yapın"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Arama geçmişini sil <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Kişisel"</string>
     <string name="work_tab" msgid="7265359366883747413">"İş"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 30d8d79..170e4fc 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Зараз не вдається завантажити вміст"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Робочі додатки призупинено"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Увімкнути робочі додатки"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Додатки профілю \"<xliff:g id="PROFILE">%1$s</xliff:g>\" призупинено"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Увімкнути додатки в профілі \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Не вдається вибрати робочі файли"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Ваш ІТ-адміністратор не дозволяє отримувати доступ до робочих файлів з особистого додатка"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Не вдається вибрати особисті файли"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Ваш ІТ-адміністратор не дозволяє отримувати доступ до особистих файлів із робочого додатка"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Не вдається вибрати файли в профілі \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Ваш адміністратор не дозволяє отримувати доступ до файлів профілю \"<xliff:g id="PROFILE_0">%1$s</xliff:g>\" із цього додатка (<xliff:g id="PROFILE_1">%2$s</xliff:g>)"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Не вдається зберегти в робочому профілі"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Ваш ІТ-адміністратор не дозволяє зберігати особисті файли в робочому профілі"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Не вдається зберегти в особистому профілі"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Ваш ІТ-адміністратор не дозволяє зберігати робочі файли в особистому профілі"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Не вдається зберегти файли в профілі \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Ваш адміністратор не дозволяє зберігати файли з одного профілю (<xliff:g id="PROFILE_0">%1$s</xliff:g>) в іншому (<xliff:g id="PROFILE_1">%2$s</xliff:g>)"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Ця дія заборонена"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Щоб дізнатися більше, зверніться до ІТ-адміністратора"</string>
     <string name="root_recent" msgid="1080156975424341623">"Останні"</string>
@@ -310,6 +316,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Нова назва"</string>
     <string name="preview_file" msgid="4056622696305432343">"Переглянути файл \"<xliff:g id="FILENAME">%1$s</xliff:g>\""</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Попередній перегляд робочого файлу \"<xliff:g id="FILENAME">%1$s</xliff:g>\""</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Перегляньте файл <xliff:g id="FILENAME">%2$s</xliff:g> профілю \"<xliff:g id="PROFILE">%1$s</xliff:g>\""</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Пошук файлів в інших додатках"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Анонімно"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Використовувати цю папку"</string>
@@ -318,7 +325,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Не вдається вибрати цю папку"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Щоб захистити свою конфіденційність, виберіть іншу папку"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Створити папку"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Пошук на цьому телефоні"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Пошук на цьому пристрої"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Видалити історію пошуку (<xliff:g id="TEXT">%1$s</xliff:g>)"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Особисте"</string>
     <string name="work_tab" msgid="7265359366883747413">"Робоче"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index e2d3d1c..b0ee055 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"اس وقت مواد لوڈ نہیں ہو سکتا"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"ورک ایپس موقوف ہیں"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"ورک ایپس آن کریں"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> ایپس موقوف ہیں"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> ایپس آن کریں"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"دفتری فائلز منتخب نہیں کر سکتے"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"‏آپ کا IT منتظم آپ کو ذاتی ایپ سے دفتری فائلز تک رسائی حاصل کرنے کی اجازت نہیں دیتا ہے"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"ذاتی فائلز منتخب نہیں کر سکتے"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"‏آپ کا IT منتظم آپ کو دفتری ایپ سے ذاتی فائلز تک رسائی حاصل کرنے کی اجازت نہیں دیتا ہے"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> فائلز منتخب نہیں کر سکتے"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"‏آپ کا IT منتظم آپ کو <xliff:g id="PROFILE_1">%2$s</xliff:g> ایپ سے <xliff:g id="PROFILE_0">%1$s</xliff:g> فائلز تک رسائی کی اجازت نہیں دیتا ہے"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"دفتری پروفائل میں محفوظ نہیں کر سکتے"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"‏آپ کا IT منتظم آپ کو اپنی دفتری پروفائل میں ذاتی فائلز کو محفوظ کرنے کی اجازت نہیں دیتا ہے"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"ذاتی پروفائل میں محفوظ نہیں کر سکتے"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"‏آپ کا IT منتظم آپ کو اپنی ذاتی پروفائل میں دفتری فائلز کو محفوظ کرنے کی اجازت نہیں دیتا ہے"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> پروفائل میں محفوظ نہیں کیا جا سکتا"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"‏آپ کا IT منتظم آپ کو اپنی <xliff:g id="PROFILE_1">%2$s</xliff:g> پروفائل میں <xliff:g id="PROFILE_0">%1$s</xliff:g> فائلز محفوظ کرنے کی اجازت نہیں دیتا ہے"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"اس کارروائی کی اجازت نہیں ہے"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"‏مزید جاننے کے لیے، اپنے IT منتظم سے رابطہ کریں۔"</string>
     <string name="root_recent" msgid="1080156975424341623">"حالیہ"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"نیا نام"</string>
     <string name="preview_file" msgid="4056622696305432343">"فائل <xliff:g id="FILENAME">%1$s</xliff:g> کا پیش منظر"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"دفتری فائل <xliff:g id="FILENAME">%1$s</xliff:g> کا پیش منظر"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> کی فائل <xliff:g id="FILENAME">%2$s</xliff:g> کا پیش منظر دکھائیں"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"دیگر ایپس میں فائلز کو براؤز کریں"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"گمنام"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"اس فولڈر کو استعمال کریں"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"اس فولڈر کا استعمال نہیں کیا جا سکتا"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"اپنی رازداری کے تحفظ کے لیے کوئی دوسرا فولڈر منتخب کریں"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"نیا فولڈر بنائیں"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"اس فون میں تلاش کریں"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"اس آلے پر تلاش کریں"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"تلاش کی سرگزشت کی <xliff:g id="TEXT">%1$s</xliff:g> حذف کریں"</string>
     <string name="personal_tab" msgid="3878576287868528503">"ذاتی"</string>
     <string name="work_tab" msgid="7265359366883747413">"دفتری"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index dd005e2..02bdfb3 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Ayni paytda kontentni yuklab bo‘lmayapti"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Ishga oid ilovalar pauza qilingan"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Ishga oid ilovalarni yoqish"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g> ilovalari pauzada"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"<xliff:g id="PROFILE">%1$s</xliff:g> ilovalarini yoqish"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Ishga oid fayllarni tanlash imkonsiz"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"AT administratoringiz shaxsiy ilovadan ishga oid fayllarga kirishni taqiqlagan"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Shaxsiy fayllar tanlanmadi"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"AT administratoringiz ishga oid ilovadan shaxsiy fayllarga kirishni taqiqlagan"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"<xliff:g id="PROFILE">%1$s</xliff:g> fayllari tanlanmadi"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"AT administratoringiz <xliff:g id="PROFILE_1">%2$s</xliff:g> ilovasidan <xliff:g id="PROFILE_0">%1$s</xliff:g> fayllariga kirishni taqiqlagan"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Ish profiliga saqlash imkonsiz"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"AT administratoringiz shaxsiy fayllarni ish profiliga saqlashni taqiqlagan"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Shaxsiy profilga saqlash imkonsiz"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"AT administratoringiz ishga oid fayllarni shaxsiy profilingizga saqlashni taqiqlagan"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"<xliff:g id="PROFILE">%1$s</xliff:g> profiliga saqlanmadi"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"AT administratoringiz <xliff:g id="PROFILE_1">%2$s</xliff:g> profiliga <xliff:g id="PROFILE_0">%1$s</xliff:g> fayllarini saqlashni taqiqlagan"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Bu amalga ruxsat berilmagan"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Batafsil axborot olish uchun AT administratoringizga murojaat qiling"</string>
     <string name="root_recent" msgid="1080156975424341623">"Yaqinda"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Yangi nom"</string>
     <string name="preview_file" msgid="4056622696305432343">"<xliff:g id="FILENAME">%1$s</xliff:g> fayliga nazar solish"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"<xliff:g id="FILENAME">%1$s</xliff:g> ish fayliga nazar solish"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"<xliff:g id="PROFILE">%1$s</xliff:g> <xliff:g id="FILENAME">%2$s</xliff:g> fayliga nazar solish"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Boshqa ilovalardagi fayllarni topish"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Anonim"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Bu jilddan foydalanish"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Bu jilddan foydalanish imkonsiz"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Maxfiyligingizni muhofaza qilish uchun boshqa jildni tanlang"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Yangi jild yaratish"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Shu telefondan qidirish"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Shu qurilmadan qidirish"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Qidiruv tarixini tozalash (<xliff:g id="TEXT">%1$s</xliff:g>)"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Shaxsiy"</string>
     <string name="work_tab" msgid="7265359366883747413">"Ish"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index b52f20a..235d372 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Không thể tải nội dung vào lúc này"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Ứng dụng công việc đã tạm dừng"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Bật ứng dụng công việc"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Các ứng dụng <xliff:g id="PROFILE">%1$s</xliff:g> đang bị tạm dừng"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Bật các ứng dụng <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Không thể chọn các tệp công việc"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Quản trị viên CNTT không cho phép bạn truy cập vào tệp công việc từ ứng dụng cá nhân"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Không thể chọn các tệp cá nhân"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Quản trị viên CNTT không cho phép bạn truy cập vào tệp cá nhân từ ứng dụng công việc"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Không chọn được tệp <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Quản trị viên CNTT của bạn không cho phép bạn truy cập tệp <xliff:g id="PROFILE_0">%1$s</xliff:g> từ ứng dụng <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Không thể lưu vào hồ sơ công việc"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Quản trị viên CNTT không cho phép bạn lưu tệp cá nhân vào hồ sơ công việc của bạn"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Không thể lưu vào hồ sơ cá nhân"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Quản trị viên CNTT không cho phép bạn lưu tệp công việc vào hồ sơ cá nhân của bạn"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Không lưu được vào hồ sơ <xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Quản trị viên CNTT của bạn không cho phép bạn lưu tệp <xliff:g id="PROFILE_0">%1$s</xliff:g> vào hồ sơ <xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Quản trị viên CNTT không cho phép thực hiện thao tác này"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Hãy liên hệ với quản trị viên CNTT để tìm hiểu thêm"</string>
     <string name="root_recent" msgid="1080156975424341623">"Gần đây"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Tên mới"</string>
     <string name="preview_file" msgid="4056622696305432343">"Xem trước tệp <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Xem trước tệp công việc <xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Xem trước tệp <xliff:g id="PROFILE">%1$s</xliff:g> <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Duyệt qua tệp trong các ứng dụng khác"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Ẩn danh"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Sử dụng thư mục này"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Không thể dùng thư mục này"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Để bảo vệ quyền riêng tư của bạn, hãy chọn một thư mục khác"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Tạo thư mục mới"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Tìm kiếm trên điện thoại này"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Tìm kiếm trên thiết bị này"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Xoá nhật ký tìm kiếm <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Cá nhân"</string>
     <string name="work_tab" msgid="7265359366883747413">"Công việc"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 1167256..992c571 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"暂时无法加载内容"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"工作应用已暂停"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"开启工作应用"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g>应用已暂停"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"启用<xliff:g id="PROFILE">%1$s</xliff:g>应用"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"无法选择工作文件"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"您的 IT 管理员不允许您通过个人应用访问工作文件"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"无法选择个人文件"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"您的 IT 管理员不允许您通过工作应用访问个人文件"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"无法选择<xliff:g id="PROFILE">%1$s</xliff:g>文件"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"您的 IT 管理员不允许从<xliff:g id="PROFILE_1">%2$s</xliff:g>应用访问<xliff:g id="PROFILE_0">%1$s</xliff:g>文件"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"无法保存到工作资料"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"您的 IT 管理员不允许您将个人文件保存到工作资料"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"无法保存到个人资料"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"您的 IT 管理员不允许您将工作文件保存到个人资料"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"无法保存到<xliff:g id="PROFILE">%1$s</xliff:g>个人资料"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"您的 IT 管理员不允许将<xliff:g id="PROFILE_0">%1$s</xliff:g>文件保存到<xliff:g id="PROFILE_1">%2$s</xliff:g>个人资料"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"不允许执行该操作"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"如需了解详情，请与您的 IT 管理员联系"</string>
     <string name="root_recent" msgid="1080156975424341623">"最近"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"新名称"</string>
     <string name="preview_file" msgid="4056622696305432343">"预览“<xliff:g id="FILENAME">%1$s</xliff:g>”文件"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"预览工作文件“<xliff:g id="FILENAME">%1$s</xliff:g>”"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"预览<xliff:g id="PROFILE">%1$s</xliff:g>文件“<xliff:g id="FILENAME">%2$s</xliff:g>”"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"浏览其他应用中的文件"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"匿名"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"使用此文件夹"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"无法使用此文件夹"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"为保护您的隐私，请选择其他文件夹"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"新建文件夹"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"在此手机内搜索"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"在此设备上搜索"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"删除搜索记录“<xliff:g id="TEXT">%1$s</xliff:g>”"</string>
     <string name="personal_tab" msgid="3878576287868528503">"个人"</string>
     <string name="work_tab" msgid="7265359366883747413">"工作"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 7cd2401..eec2956 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"目前無法載入內容"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"已暫停工作應用程式"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"開啟工作應用程式"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"已暫停<xliff:g id="PROFILE">%1$s</xliff:g>應用程式"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"開啟<xliff:g id="PROFILE">%1$s</xliff:g>應用程式"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"無法選取工作檔案"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"IT 管理員不允許你透過個人應用程式存取工作檔案"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"無法選取個人檔案"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"IT 管理員不允許你透過工作應用程式存取個人檔案"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"無法選取<xliff:g id="PROFILE">%1$s</xliff:g>檔案"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT 管理員不允許你使用<xliff:g id="PROFILE_1">%2$s</xliff:g>應用程式存取<xliff:g id="PROFILE_0">%1$s</xliff:g>檔案"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"無法儲存至工作設定檔"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"IT 管理員不允許你將個人檔案儲存至工作設定檔"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"無法儲存至個人設定檔"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"IT 管理員不允許你將工作檔案儲存至個人設定檔"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"無法儲存至<xliff:g id="PROFILE">%1$s</xliff:g>設定檔"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT 管理員不允許你將<xliff:g id="PROFILE_0">%1$s</xliff:g>檔案儲存至<xliff:g id="PROFILE_1">%2$s</xliff:g>設定檔"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"不允許執行這項操作"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"詳情請聯絡 IT 管理員。"</string>
     <string name="root_recent" msgid="1080156975424341623">"最近項目"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"新名稱"</string>
     <string name="preview_file" msgid="4056622696305432343">"預覽 <xliff:g id="FILENAME">%1$s</xliff:g> 檔案"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"預覽工作檔案「<xliff:g id="FILENAME">%1$s</xliff:g>」"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"預覽<xliff:g id="PROFILE">%1$s</xliff:g>檔案 <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"瀏覽其他應用程式中的檔案"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"匿名"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"使用此資料夾"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"無法使用此資料夾"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"為保護你的私隱，請選擇其他資料夾"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"建立新資料夾"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"在這部手機中搜尋"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"搜尋此裝置"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"刪除搜尋記錄 <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"個人"</string>
     <string name="work_tab" msgid="7265359366883747413">"工作"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 892a75b..16d0a73 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"目前無法載入內容"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"系統已暫停工作應用程式"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"開啟工作應用程式"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"<xliff:g id="PROFILE">%1$s</xliff:g>應用程式已暫停"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"開啟<xliff:g id="PROFILE">%1$s</xliff:g>應用程式"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"無法選取工作檔案"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"你的 IT 管理員不允許你透過個人應用程式存取工作檔案"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"無法選取個人檔案"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"你的 IT 管理員不允許你透過工作應用程式存取個人檔案"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"無法選取<xliff:g id="PROFILE">%1$s</xliff:g>的檔案"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"IT 管理員不允許你使用<xliff:g id="PROFILE_1">%2$s</xliff:g>應用程式存取<xliff:g id="PROFILE_0">%1$s</xliff:g>檔案"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"無法儲存到工作資料夾"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"你的 IT 管理員不允許你將個人檔案儲存到工作資料夾"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"無法儲存到個人資料夾"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"你的 IT 管理員不允許你將工作檔案儲存到個人資料夾"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"無法儲存到<xliff:g id="PROFILE">%1$s</xliff:g>資料夾"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"IT 管理員不允許你將<xliff:g id="PROFILE_0">%1$s</xliff:g>檔案儲存到<xliff:g id="PROFILE_1">%2$s</xliff:g>資料夾"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"不允許執行這項動作"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"如要瞭解詳情，請與你的 IT 管理員聯絡"</string>
     <string name="root_recent" msgid="1080156975424341623">"最近"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"新名稱"</string>
     <string name="preview_file" msgid="4056622696305432343">"預覽 <xliff:g id="FILENAME">%1$s</xliff:g> 檔案"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"預覽工作檔案「<xliff:g id="FILENAME">%1$s</xliff:g>」"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"預覽<xliff:g id="PROFILE">%1$s</xliff:g>檔案 <xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"瀏覽其他應用程式中的檔案"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"匿名"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"使用這個資料夾"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"無法使用這個資料夾"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"為保護你的隱私，請選擇其他資料夾"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"建立新資料夾"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"在手機內搜尋"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"搜尋這部裝置"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"刪除搜尋記錄 <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"個人"</string>
     <string name="work_tab" msgid="7265359366883747413">"工作"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 3015e20..83a6542 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -94,14 +94,20 @@
     <string name="query_error" msgid="6625421453613879336">"Ayikwazanga ukulayisha okuqukethwe okwamanje"</string>
     <string name="quiet_mode_error_title" msgid="554319751414657910">"Ama-app omsebenzi amisiwe"</string>
     <string name="quiet_mode_button" msgid="8051436551926677305">"Vula ama-app omsebenzi"</string>
+    <string name="profile_quiet_mode_error_title" msgid="7126962749634841843">"Ama-app e-<xliff:g id="PROFILE">%1$s</xliff:g> amisiwe"</string>
+    <string name="profile_quiet_mode_button" msgid="6791235010992920102">"Vula ama-app we-<xliff:g id="PROFILE">%1$s</xliff:g>"</string>
     <string name="cant_select_work_files_error_title" msgid="6688716319549644354">"Ayikwazi ukukhetha amafayela omsebenzi"</string>
     <string name="cant_select_work_files_error_message" msgid="683480676150690641">"Umphathi wakho we-IT akakuvumeli ukuba ufinyelele amafayela omsebenzi avela kuhlelo lokusebenza lomuntu siqu"</string>
     <string name="cant_select_personal_files_error_title" msgid="3200697170148617742">"Ayikwazi ukukhetha amafayela akho siqu"</string>
     <string name="cant_select_personal_files_error_message" msgid="4105905035459118209">"Umphathi wakho we-IT akakuvumeli ukuba ufinyelele amafayela akho siqu avela ohlelweni lokusebenza lomsebenzi"</string>
+    <string name="cant_select_cross_profile_files_error_title" msgid="17010948874969413">"Ayikwazi ukukhetha amafayela we-<xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_select_cross_profile_files_error_message" msgid="3815829574883844944">"Umphathi wakho we-IT akakuvumeli ukuthi ufinyelele amafayela we-<xliff:g id="PROFILE_0">%1$s</xliff:g> usebenzisa i-app ye-<xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cant_save_to_work_error_title" msgid="1351323070040641358">"Ayikwazi ukulondoloza kuphrofayela lomsebenzi"</string>
     <string name="cant_save_to_work_error_message" msgid="4975583233814059890">"Umphathi wakho we-IT akakuvumeli ukuba ulondoloze amafayela akho siqu kwiphrofayela lakho lomsebenzi"</string>
     <string name="cant_save_to_personal_error_title" msgid="858327493694069780">"Ayikwazi ukulondoloza kuphrofayela lakho siqu"</string>
     <string name="cant_save_to_personal_error_message" msgid="6991758723736381751">"Umphathi wakho we-IT akakuvumeli ukuba ulondoloze amafayela akho omsebenzi kwiphrofayela lakho"</string>
+    <string name="cant_save_to_cross_profile_error_title" msgid="5158984057654779022">"Ayikwazi ukulondoloza kuphrofayela ye-<xliff:g id="PROFILE">%1$s</xliff:g>"</string>
+    <string name="cant_save_to_cross_profile_error_message" msgid="5845240315510422749">"Umphathi wakho we-IT akakuvumeli ukuthi ulondoloze amafayela we-<xliff:g id="PROFILE_0">%1$s</xliff:g> kuphrofayela yakho ye-<xliff:g id="PROFILE_1">%2$s</xliff:g>"</string>
     <string name="cross_profile_action_not_allowed_title" msgid="6611281348716476478">"Lesi senzo asivunyelwe"</string>
     <string name="cross_profile_action_not_allowed_message" msgid="7331275433061690947">"Ukuze ufunde kabanzi, xhumana nomphathi wakho we-IT"</string>
     <string name="root_recent" msgid="1080156975424341623">"Okwakamuva"</string>
@@ -266,6 +272,7 @@
     <string name="input_hint_rename" msgid="8390711744270994452">"Igama elisha"</string>
     <string name="preview_file" msgid="4056622696305432343">"Buka kuqala ifayela le-<xliff:g id="FILENAME">%1$s</xliff:g>"</string>
     <string name="preview_work_file" msgid="4495643735563487273">"Hlola kuqala ifayela lomsebenzi i-<xliff:g id="FILENAME">%1$s</xliff:g>"</string>
+    <string name="preview_cross_profile_file" msgid="7457849216193029610">"Buka kuqala i-<xliff:g id="PROFILE">%1$s</xliff:g> yefayela le-<xliff:g id="FILENAME">%2$s</xliff:g>"</string>
     <string name="apps_row_title" msgid="3340490016663092925">"Phequlula amafayela kwezinye izinhlelo zokusebenza"</string>
     <string name="anonymous_application" msgid="7633027057951625862">"Okungaziwa"</string>
     <string name="open_tree_button" msgid="6402871398424497776">"Sebenzisa le folda"</string>
@@ -274,7 +281,7 @@
     <string name="directory_blocked_header_title" msgid="1164584889578740066">"Awukwazi ukusebenzisa le folda"</string>
     <string name="directory_blocked_header_subtitle" msgid="2829150911849033408">"Ukuvikela ubumfihlo bakho, khetha enye ifolda"</string>
     <string name="create_new_folder_button" msgid="8859613309559794890">"Dala ifolda entsha"</string>
-    <string name="search_bar_hint" msgid="4517366509897977321">"Sesha le foni"</string>
+    <string name="search_bar_hint" msgid="146031513183888721">"Sesha le divayisi"</string>
     <string name="delete_search_history" msgid="2202015025607694515">"Susa umlando wokusesha <xliff:g id="TEXT">%1$s</xliff:g>"</string>
     <string name="personal_tab" msgid="3878576287868528503">"Okomuntu siqu"</string>
     <string name="work_tab" msgid="7265359366883747413">"Umsebenzi"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a1d6982..89e40ac 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -189,6 +189,15 @@
     <!-- Button text shown on a button when work profile is paused. Tapping the button will switch on the work profile [CHAR LIMIT=48] -->
     <string name="quiet_mode_button">Turn on work apps</string>
 
+    <!-- Title of an error message. This screen is shown when the selected profile is paused. [CHAR LIMIT=72] -->
+    <string name="profile_quiet_mode_error_title">
+        <xliff:g id="profile" example="Work">%1$s</xliff:g> apps are paused
+    </string>
+    <!-- Button text shown on a button when selected profile is paused. Tapping the button will switch on the selected profile [CHAR LIMIT=48] -->
+    <string name="profile_quiet_mode_button">
+        Turn on <xliff:g id="profile" example="work">%1$s</xliff:g> apps
+    </string>
+
     <!-- Error message title shown when a user's IT admin does not allow the user to select work files from a personal app. [CHAR LIMIT=72] -->
     <string name="cant_select_work_files_error_title">Can\u2019t select work files</string>
     <!-- Error message that's shown when the user's IT admin doesn't allow the user to select work files from a personal app. [CHAR LIMIT=200] -->
@@ -203,6 +212,16 @@
         access personal files from a work app
     </string>
 
+    <!-- Error message title shown when a user's cross profile setting does not allow the user to select one profile's files from another profile app. [CHAR LIMIT=72] -->
+    <string name="cant_select_cross_profile_files_error_title">Can\u2019t select
+        <xliff:g id="profile" example="work">%1$s</xliff:g> files
+    </string>
+    <!-- Error message that's shown when the user's cross profile setting doesn't allow the user to select one profile's files from another profile app. [CHAR LIMIT=200] -->
+    <string name="cant_select_cross_profile_files_error_message">Your IT admin doesn\u2019t allow
+        you to access <xliff:g id="profile" example="work">%1$s</xliff:g> files from a
+        <xliff:g id="profile" example="personal">%2$s</xliff:g> app
+    </string>
+
     <!-- Error message title shown when the admin does not allow the user to save files from their personal profile to their work profile. [CHAR LIMIT=72] -->
     <string name="cant_save_to_work_error_title">Can\u2019t save to work profile</string>
     <!-- Error message shown when the user's IT admin doesn't allow the user to save files from their personal profile to their work profile. [CHAR LIMIT=200] -->
@@ -217,6 +236,16 @@
         work files to your personal profile
     </string>
 
+    <!-- Error message title shown when the user's cross profile setting does not allow the user to save files from one profile to another profile. [CHAR LIMIT=72] -->
+    <string name="cant_save_to_cross_profile_error_title">Can\u2019t save to
+        <xliff:g id="profile" example="work">%1$s</xliff:g> profile
+    </string>
+    <!-- Error message shown when the user's cross profile setting doesn't allow the user to save files from one profile to another profile. [CHAR LIMIT=200] -->
+    <string name="cant_save_to_cross_profile_error_message">Your IT admin doesn\u2019t allow you to
+        save <xliff:g id="profile" example="personal">%1$s</xliff:g> files to your
+        <xliff:g id="profile" example="work">%2$s</xliff:g> profile
+    </string>
+
     <!-- Error message title. This message is shown when a user tries to do something on their work device, but that action isn't allowed by their IT admin. [CHAR LIMIT=72] -->
     <string name="cross_profile_action_not_allowed_title">This action isn\u2019t allowed</string>
     <!-- Error message. This message is shown when a user tries to do something on their work device, but that action isn't allowed by their IT admin. [CHAR LIMIT=200] -->
@@ -509,6 +538,8 @@
     <string name="preview_file">Preview the file <xliff:g id="fileName" example="example.jpg">%1$s</xliff:g></string>
     <!-- Content description text that's spoken by a screen reader. This text is for previewing a work file before opening it. -->
     <string name="preview_work_file">Preview the work file <xliff:g id="fileName" example="example.jpg">%1$s</xliff:g></string>
+    <!-- Content description text that's spoken by a screen reader. This text is for previewing a private file before opening it. -->
+    <string name="preview_cross_profile_file">Preview the <xliff:g id="profile" example="work">%1$s</xliff:g> file <xliff:g id="fileName" example="example.jpg">%2$s</xliff:g></string>
 
     <!-- Apps row title. [CHAR_LIMIT=60] -->
     <string name="apps_row_title">Browse files in other apps</string>
@@ -530,7 +561,7 @@
 
 
     <!-- Search hint on search view. [CHAR LIMIT=48] -->
-    <string name="search_bar_hint">Search this phone</string>
+    <string name="search_bar_hint">Search this device</string>
 
     <!-- Content description for deleting search history. [CHAR_LIMIT=60] -->
     <string name="delete_search_history">Delete search history <xliff:g id="text" example="image">%1$s</xliff:g></string>
diff --git a/src/com/android/documentsui/AbstractActionHandler.java b/src/com/android/documentsui/AbstractActionHandler.java
index 4407a62..e348d6b 100644
--- a/src/com/android/documentsui/AbstractActionHandler.java
+++ b/src/com/android/documentsui/AbstractActionHandler.java
@@ -119,6 +119,7 @@
     public void registerDisplayStateChangedListener(Runnable l) {
         mDisplayStateChangedListener = l;
     }
+
     @Override
     public void unregisterDisplayStateChangedListener(Runnable l) {
         if (mDisplayStateChangedListener == l) {
@@ -135,12 +136,12 @@
             Lookup<String, Executor> executors,
             Injector<?> injector) {
 
-        assert(activity != null);
-        assert(state != null);
-        assert(providers != null);
-        assert(searchMgr != null);
-        assert(docs != null);
-        assert(injector != null);
+        assert (activity != null);
+        assert (state != null);
+        assert (providers != null);
+        assert (searchMgr != null);
+        assert (docs != null);
+        assert (injector != null);
 
         mActivity = activity;
         mState = state;
@@ -359,7 +360,7 @@
 
     @Override
     public void openContainerDocument(DocumentInfo doc) {
-        assert(doc.isContainer());
+        assert (doc.isContainer());
 
         if (mSearchMgr.isSearching()) {
             loadDocument(
@@ -372,6 +373,7 @@
     }
 
     // TODO: Make this private and make tests call interface method instead.
+
     /**
      * Behavior when a document is opened.
      */
@@ -620,7 +622,7 @@
             currentDoc = mDocs.getArchiveDocument(doc.derivedUri, doc.userId);
         }
 
-        assert(currentDoc != null);
+        assert (currentDoc != null);
         if (currentDoc.equals(mState.stack.peek())) {
             Log.w(TAG, "This DocumentInfo is already in current DocumentsStack");
             return;
@@ -676,8 +678,8 @@
             ComponentName component = new ComponentName(
                     mActivity.getPackageName(), Shared.LAUNCHER_TARGET_CLASS);
             pm.setComponentEnabledSetting(component, enalbled
-                    ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED
-                    : PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+                            ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED
+                            : PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                     PackageManager.DONT_KILL_APP);
         }
     }
@@ -714,7 +716,7 @@
                 mDocs,
                 userId,
                 callback
-                ).executeOnExecutor(mExecutors.lookup(uri.getAuthority()), uri);
+        ).executeOnExecutor(mExecutors.lookup(uri.getAuthority()), uri);
     }
 
     @Override
@@ -826,8 +828,8 @@
     private void onRootLoaded(@Nullable RootInfo root) {
         boolean invalidRootForAction =
                 (root != null
-                && !root.supportsChildren()
-                && mState.action == State.ACTION_OPEN_TREE);
+                        && !root.supportsChildren()
+                        && mState.action == State.ACTION_OPEN_TREE);
 
         if (invalidRootForAction) {
             loadDeviceRoot();
@@ -942,8 +944,8 @@
 
                 if (DEBUG) {
                     Log.d(TAG,
-                        "Creating new directory loader for: "
-                            + DocumentInfo.debugString(mState.stack.peek()));
+                            "Creating new directory loader for: "
+                                    + DocumentInfo.debugString(mState.stack.peek()));
                 }
 
                 return new DirectoryLoader(
@@ -961,9 +963,9 @@
         public void onLoadFinished(Loader<DirectoryResult> loader, DirectoryResult result) {
             if (DEBUG) {
                 Log.d(TAG, "Loader has finished for: "
-                    + DocumentInfo.debugString(mState.stack.peek()));
+                        + DocumentInfo.debugString(mState.stack.peek()));
             }
-            assert(result != null);
+            assert (result != null);
 
             mInjector.getModel().update(result);
             mLoaderSemaphore.release();
@@ -974,24 +976,34 @@
             mLoaderSemaphore.release();
         }
     }
+
     /**
      * A class primarily for the support of isolating our tests
      * from our concrete activity implementations.
      */
     public interface CommonAddons {
         void restoreRootAndDirectory();
+
         void refreshCurrentRootAndDirectory(@AnimationType int anim);
+
         void onRootPicked(RootInfo root);
+
         // TODO: Move this to PickAddons as multi-document picking is exclusive to that activity.
         void onDocumentsPicked(List<DocumentInfo> docs);
+
         void onDocumentPicked(DocumentInfo doc);
+
         RootInfo getCurrentRoot();
+
         DocumentInfo getCurrentDirectory();
+
         UserId getSelectedUser();
+
         /**
          * Check whether current directory is root of recent.
          */
         boolean isInRecents();
+
         void setRootsDrawerOpen(boolean open);
 
         /**
diff --git a/src/com/android/documentsui/ActionModeController.java b/src/com/android/documentsui/ActionModeController.java
index 89b8ff3..1bd4eea 100644
--- a/src/com/android/documentsui/ActionModeController.java
+++ b/src/com/android/documentsui/ActionModeController.java
@@ -79,7 +79,8 @@
                     Log.d(TAG, "Starting action mode.");
                 }
                 mActionMode = mActivity.startActionMode(this);
-                final View closeButton = mActivity.findViewById(R.id.action_mode_close_button);
+                final View closeButton =
+                        mActivity.findViewById(androidx.appcompat.R.id.action_mode_close_button);
                 if (closeButton != null) {
                     closeButton.setContentDescription(mActivity.getString(android.R.string.cancel));
                 }
diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java
index f08294e..4228ead 100644
--- a/src/com/android/documentsui/BaseActivity.java
+++ b/src/com/android/documentsui/BaseActivity.java
@@ -91,6 +91,7 @@
     protected SearchViewManager mSearchManager;
     protected AppsRowManager mAppsRowManager;
     protected UserIdManager mUserIdManager;
+    protected UserManagerState mUserManagerState;
     protected State mState;
 
     @Injected
@@ -102,6 +103,7 @@
 
     protected NavigationViewManager mNavigator;
     protected SortController mSortController;
+    protected ConfigStore mConfigStore;
 
     private final List<EventListener> mEventListeners = new ArrayList<>();
     private final String mTag;
@@ -116,18 +118,36 @@
 
     private PreferencesMonitor mPreferencesMonitor;
 
+    private boolean mHasProfileBecomeUnavailable = false;
+
+    public void setHasProfileBecomeUnavailable(boolean hasProfileBecomeUnavailable) {
+        mHasProfileBecomeUnavailable = hasProfileBecomeUnavailable;
+    }
+
     public BaseActivity(@LayoutRes int layoutId, String tag) {
         mLayoutId = layoutId;
         mTag = tag;
     }
 
     protected abstract void refreshDirectory(int anim);
+
     /** Allows sub-classes to include information in a newly created State instance. */
     protected abstract void includeState(State initialState);
+
     protected abstract void onDirectoryCreated(DocumentInfo doc);
 
     public abstract Injector<?> getInjector();
 
+    @VisibleForTesting
+    protected void initConfigStore() {
+        mConfigStore = DocumentsApplication.getConfigStore(this);
+    }
+
+    @VisibleForTesting
+    public void setConfigStore(ConfigStore configStore) {
+        mConfigStore = configStore;
+    }
+
     @CallSuper
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -149,6 +169,8 @@
 
         setContainer();
 
+        initConfigStore();
+
         mInjector = getInjector();
         mState = getState(savedInstanceState);
         mDrawer = DrawerController.create(this, mInjector.config);
@@ -161,12 +183,11 @@
         setSupportActionBar(toolbar);
 
         Breadcrumb breadcrumb = findViewById(R.id.horizontal_breadcrumb);
-        assert(breadcrumb != null);
+        assert (breadcrumb != null);
         View profileTabsContainer = findViewById(R.id.tabs_container);
         assert (profileTabsContainer != null);
 
-        mNavigator = new NavigationViewManager(this, mDrawer, mState, this, breadcrumb,
-                profileTabsContainer, DocumentsApplication.getUserIdManager(this));
+        mNavigator = getNavigationViewManager(breadcrumb, profileTabsContainer);
         AppBarLayout appBarLayout = findViewById(R.id.app_bar);
         if (appBarLayout != null) {
             appBarLayout.addOnOffsetChangedListener(mNavigator);
@@ -263,7 +284,9 @@
                         cmdInterceptor);
 
         ViewGroup chipGroup = findViewById(R.id.search_chip_group);
+
         mUserIdManager = DocumentsApplication.getUserIdManager(this);
+        mUserManagerState = DocumentsApplication.getUserManagerState(this);
         mSearchManager = new SearchViewManager(searchListener, queryInterceptor,
                 chipGroup, savedInstanceState);
         // initialize the chip sets by accept mime types
@@ -313,7 +336,12 @@
                 // The activity will clear search on root picked. If we don't clear the search,
                 // user may see the search result screen show up briefly and then get cleared.
                 mSearchManager.cancelSearch();
-                mInjector.actions.loadCrossProfileRoot(getCurrentRoot(), userId);
+                // When a profile with user property SHOW_IN_QUIET_MODE_HIDDEN is currently
+                // selected, and it becomes unavailable, we reset the roots to recents.
+                // We do not reset it to recents when pick activity is due to ACTION_CREATE_DOCUMENT
+                mInjector.actions.loadCrossProfileRoot(
+                        (mHasProfileBecomeUnavailable && mState.action != State.ACTION_CREATE)
+                                ? getRecentsRoot() : getCurrentRoot(), userId);
             }
         });
 
@@ -329,6 +357,18 @@
         setResult(AppCompatActivity.RESULT_CANCELED);
     }
 
+    private NavigationViewManager getNavigationViewManager(Breadcrumb breadcrumb,
+            View profileTabsContainer) {
+        if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+            return new NavigationViewManager(this, mDrawer, mState, this, breadcrumb,
+                    profileTabsContainer, DocumentsApplication.getUserManagerState(this),
+                    mConfigStore);
+        }
+        return new NavigationViewManager(this, mDrawer, mState, this, breadcrumb,
+                profileTabsContainer, DocumentsApplication.getUserIdManager(this),
+                mConfigStore);
+    }
+
     public void onPreferenceChanged(String pref) {
         // For now, we only work with prefs that we backup. This
         // just limits the scope of what we expect to come flowing
@@ -386,6 +426,8 @@
         mRootsMonitor.stop();
         mPreferencesMonitor.stop();
         mSortController.destroy();
+        DocumentsApplication.invalidateUserManagerState(this);
+        DocumentsApplication.invalidateConfigStore();
         super.onDestroy();
     }
 
@@ -411,6 +453,7 @@
                 getApplicationContext()
                         .getResources()
                         .getBoolean(R.bool.show_hidden_files_by_default));
+        state.configStore = mConfigStore;
 
         includeState(state);
 
@@ -544,7 +587,6 @@
 
     /**
      * Returns true if a directory can be created in the current location.
-     * @return
      */
     protected boolean canCreateDirectory() {
         final RootInfo root = getCurrentRoot();
@@ -582,7 +624,6 @@
     /**
      * Refreshes the content of the director and the menu/action bar.
      * The current directory name and selection will get updated.
-     * @param anim
      */
     @Override
     public final void refreshCurrentRootAndDirectory(int anim) {
@@ -632,7 +673,7 @@
             try {
                 PackageInfo pkgInfo = getPackageManager().getPackageInfo(packageName,
                         PackageManager.GET_PROVIDERS);
-                for (ProviderInfo provider: pkgInfo.providers) {
+                for (ProviderInfo provider : pkgInfo.providers) {
                     authorities.add(provider.authority);
                 }
             } catch (PackageManager.NameNotFoundException e) {
@@ -708,9 +749,14 @@
         }
     }
 
-    public void updateHeader(boolean shouldHideHeader){
+    /**
+     * Updates headerContainer by setting its visibility
+     *
+     * @param shouldHideHeader whether to hide header container or not
+     */
+    public void updateHeader(boolean shouldHideHeader) {
         View headerContainer = findViewById(R.id.header_container);
-        if(headerContainer == null){
+        if (headerContainer == null) {
             updateHeaderTitle();
             return;
         }
@@ -779,7 +825,7 @@
 
     private String getHeaderDownloadsTitle() {
         return getString(mState.isPhotoPicking()
-            ? R.string.root_info_header_image_downloads : R.string.root_info_header_downloads);
+                ? R.string.root_info_header_image_downloads : R.string.root_info_header_downloads);
     }
 
     private String getHeaderStorageTitle(String rootTitle) {
@@ -809,6 +855,7 @@
 
     /**
      * Get title string equal to the string action bar displayed.
+     *
      * @return current directory title name
      */
     public String getCurrentTitle() {
@@ -849,6 +896,10 @@
         }
     }
 
+    public RootInfo getRecentsRoot() {
+        return mProviders.generateRecentsRoot(getSelectedUser());
+    }
+
     @Override
     public DocumentInfo getCurrentDirectory() {
         return mState.stack.peek();
diff --git a/src/com/android/documentsui/ConfigStore.java b/src/com/android/documentsui/ConfigStore.java
new file mode 100644
index 0000000..09255c7
--- /dev/null
+++ b/src/com/android/documentsui/ConfigStore.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2024 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.documentsui;
+
+import android.os.Binder;
+import android.provider.DeviceConfig;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.common.base.Supplier;
+
+public interface ConfigStore {
+    // TODO(b/288066342): Remove and replace after new constant definition in
+    //  {@link android.provider.DeviceConfig}.
+    String NAMESPACE_MEDIAPROVIDER = "mediaprovider";
+
+    boolean DEFAULT_PICKER_PRIVATE_SPACE_ENABLED = false;
+
+    /**
+     * @return if the Private-Space-in-DocsUI is enabled
+     */
+    default boolean isPrivateSpaceInDocsUIEnabled() {
+        return DEFAULT_PICKER_PRIVATE_SPACE_ENABLED;
+    }
+
+    /**
+     * Implementation of the {@link ConfigStore} that reads "real" configs from
+     * {@link android.provider.DeviceConfig}. Meant to be used by the "production" code.
+     */
+    class ConfigStoreImpl implements ConfigStore {
+        @VisibleForTesting
+        public static final String KEY_PRIVATE_SPACE_FEATURE_ENABLED =
+                "private_space_feature_enabled";
+
+        private static final boolean sCanReadDeviceConfig = SdkLevel.isAtLeastS();
+
+        private Boolean mIsPrivateSpaceEnabled = null;
+
+        @Override
+        public boolean isPrivateSpaceInDocsUIEnabled() {
+            if (mIsPrivateSpaceEnabled == null) {
+                mIsPrivateSpaceEnabled = getBooleanDeviceConfig(
+                        NAMESPACE_MEDIAPROVIDER,
+                        KEY_PRIVATE_SPACE_FEATURE_ENABLED,
+                        DEFAULT_PICKER_PRIVATE_SPACE_ENABLED);
+            }
+            return sCanReadDeviceConfig && mIsPrivateSpaceEnabled;
+        }
+
+        private static boolean getBooleanDeviceConfig(@NonNull String namespace,
+                @NonNull String key, boolean defaultValue) {
+            if (!sCanReadDeviceConfig) {
+                return defaultValue;
+            }
+            return withCleanCallingIdentity(
+                    () -> DeviceConfig.getBoolean(namespace, key, defaultValue));
+        }
+
+        private static <T> T withCleanCallingIdentity(@NonNull Supplier<T> action) {
+            final long callingIdentity = Binder.clearCallingIdentity();
+            try {
+                return action.get();
+            } finally {
+                Binder.restoreCallingIdentity(callingIdentity);
+            }
+        }
+    }
+}
diff --git a/src/com/android/documentsui/DirectoryLoader.java b/src/com/android/documentsui/DirectoryLoader.java
index 8161447..870e998 100644
--- a/src/com/android/documentsui/DirectoryLoader.java
+++ b/src/com/android/documentsui/DirectoryLoader.java
@@ -129,8 +129,7 @@
             if (mSearchMode) {
                 queryArgs.putAll(mQueryArgs);
                 if (shouldSearchAcrossProfile()) {
-                    for (UserId userId : DocumentsApplication.getUserIdManager(
-                            getContext()).getUserIds()) {
+                    for (UserId userId : getUserIds()) {
                         if (mState.canInteractWith(userId)) {
                             userIds.add(userId);
                         }
@@ -330,4 +329,11 @@
         }
         return false;
     }
+
+    private List<UserId> getUserIds() {
+        if (mState.configStore.isPrivateSpaceInDocsUIEnabled()) {
+            return DocumentsApplication.getUserManagerState(getContext()).getUserIds();
+        }
+        return DocumentsApplication.getUserIdManager(getContext()).getUserIds();
+    }
 }
diff --git a/src/com/android/documentsui/DocumentsAccess.java b/src/com/android/documentsui/DocumentsAccess.java
index e3b6abd..fcd3471 100644
--- a/src/com/android/documentsui/DocumentsAccess.java
+++ b/src/com/android/documentsui/DocumentsAccess.java
@@ -69,7 +69,6 @@
     public final class RuntimeDocumentAccess implements DocumentsAccess {
 
         private static final String TAG = "DocumentAccess";
-
         private final Context mContext;
         private final State mState;
 
diff --git a/src/com/android/documentsui/DocumentsApplication.java b/src/com/android/documentsui/DocumentsApplication.java
index c576851..92aa3f7 100644
--- a/src/com/android/documentsui/DocumentsApplication.java
+++ b/src/com/android/documentsui/DocumentsApplication.java
@@ -28,9 +28,11 @@
 import android.content.om.OverlayManager;
 import android.net.Uri;
 import android.os.RemoteException;
+import android.os.UserHandle;
 import android.text.format.DateUtils;
 import android.util.Log;
 
+import androidx.annotation.Nullable;
 import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 
 import com.android.documentsui.base.Lookup;
@@ -41,11 +43,14 @@
 import com.android.documentsui.queries.SearchHistoryManager;
 import com.android.documentsui.roots.ProvidersCache;
 import com.android.documentsui.theme.ThemeOverlayManager;
+import com.android.modules.utils.build.SdkLevel;
 
 import com.google.common.collect.Lists;
 
 import java.util.List;
 
+import javax.annotation.concurrent.GuardedBy;
+
 public class DocumentsApplication extends Application {
     private static final String TAG = "DocumentsApplication";
     private static final long PROVIDER_ANR_TIMEOUT = 20 * DateUtils.SECOND_IN_MILLIS;
@@ -57,23 +62,41 @@
             Intent.ACTION_PACKAGE_DATA_CLEARED
     );
 
-    private static final List<String> MANAGED_PROFILE_FILTER_ACTIONS = Lists.newArrayList(
+    private static final List<String> PROFILE_FILTER_ACTIONS = Lists.newArrayList(
             Intent.ACTION_MANAGED_PROFILE_ADDED,
             Intent.ACTION_MANAGED_PROFILE_REMOVED,
             Intent.ACTION_MANAGED_PROFILE_UNLOCKED,
             Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE
     );
 
+    @GuardedBy("DocumentsApplication.class")
+    @Nullable
+    private static volatile ConfigStore sConfigStore;
+
     private ProvidersCache mProviders;
     private ThumbnailCache mThumbnailCache;
     private ClipStorage mClipStore;
     private DocumentClipper mClipper;
     private DragAndDropManager mDragAndDropManager;
     private UserIdManager mUserIdManager;
+    private UserManagerState mUserManagerState;
     private Lookup<String, String> mFileTypeLookup;
 
     public static ProvidersCache getProvidersCache(Context context) {
-        return ((DocumentsApplication) context.getApplicationContext()).mProviders;
+        ProvidersCache providers =
+                ((DocumentsApplication) context.getApplicationContext()).mProviders;
+        final ConfigStore configStore = getConfigStore(context);
+        // When private space in DocsUI is enabled then ProvidersCache should use UserManagerState
+        // else it should use UserIdManager. The following if-check will ensure the construction of
+        // a new ProvidersCache instance whenever there is a mismatch in this.
+        if (configStore.isPrivateSpaceInDocsUIEnabled()
+                != providers.isProvidersCacheUsingUserManagerState()) {
+            providers = configStore.isPrivateSpaceInDocsUIEnabled()
+                    ? new ProvidersCache(context, getUserManagerState(context), configStore)
+                    : new ProvidersCache(context, getUserIdManager(context), configStore);
+            ((DocumentsApplication) context.getApplicationContext()).mProviders = providers;
+        }
+        return providers;
     }
 
     public static ThumbnailCache getThumbnailCache(Context context) {
@@ -101,7 +124,28 @@
     }
 
     public static UserIdManager getUserIdManager(Context context) {
-        return ((DocumentsApplication) context.getApplicationContext()).mUserIdManager;
+        UserIdManager userIdManager =
+                ((DocumentsApplication) context.getApplicationContext()).mUserIdManager;
+        if (userIdManager == null) {
+            userIdManager = UserIdManager.create(context);
+            ((DocumentsApplication) context.getApplicationContext()).mUserIdManager = userIdManager;
+        }
+        return userIdManager;
+    }
+
+    /**
+     * UserManagerState class is used to maintain the list of userIds and other details like
+     * cross profile access, label and badge associated with these userIds.
+     */
+    public static UserManagerState getUserManagerState(Context context) {
+        UserManagerState userManagerState =
+                ((DocumentsApplication) context.getApplicationContext()).mUserManagerState;
+        if (userManagerState == null && getConfigStore(context).isPrivateSpaceInDocsUIEnabled()) {
+            userManagerState = UserManagerState.create(context);
+            ((DocumentsApplication) context.getApplicationContext()).mUserManagerState =
+                    userManagerState;
+        }
+        return userManagerState;
     }
 
     public static DragAndDropManager getDragAndDropManager(Context context) {
@@ -112,6 +156,42 @@
         return ((DocumentsApplication) context.getApplicationContext()).mFileTypeLookup;
     }
 
+    /**
+     * Retrieve {@link ConfigStore} instance to access feature flags in production code.
+     */
+    public static synchronized ConfigStore getConfigStore(Context context) {
+        if (sConfigStore == null) {
+            sConfigStore = new ConfigStore.ConfigStoreImpl();
+        }
+        return sConfigStore;
+    }
+
+    /**
+     * Set {@link #mProviders} as null onDestroy of BaseActivity so that new session uses new
+     * instance of {@link #mProviders}
+     */
+    public static void invalidateProvidersCache(Context context) {
+        ((DocumentsApplication) context.getApplicationContext()).mProviders = null;
+    }
+
+    /**
+     * Set {@link #mUserManagerState} as null onDestroy of BaseActivity so that new session uses new
+     * instance of {@link #mUserManagerState}
+     */
+    public static void invalidateUserManagerState(Context context) {
+        ((DocumentsApplication) context.getApplicationContext()).mUserManagerState = null;
+    }
+
+    /**
+     * Set {@link #sConfigStore} as null onDestroy of BaseActivity so that new session uses new
+     * instance of {@link #sConfigStore}
+     */
+    public static void invalidateConfigStore() {
+        synchronized (DocumentsApplication.class) {
+            sConfigStore = null;
+        }
+    }
+
     private void onApplyOverlayFinish(boolean result) {
         Log.d(TAG, "OverlayManager.setEnabled() result: " + result);
     }
@@ -120,6 +200,11 @@
     @Override
     public void onCreate() {
         super.onCreate();
+        synchronized (DocumentsApplication.class) {
+            if (sConfigStore == null) {
+                sConfigStore = new ConfigStore.ConfigStoreImpl();
+            }
+        }
 
         final ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
         final OverlayManager om = getSystemService(OverlayManager.class);
@@ -132,9 +217,20 @@
             Log.w(TAG, "Can't obtain OverlayManager from System Service!");
         }
 
-        mUserIdManager = UserIdManager.create(this);
+        if (getConfigStore(this).isPrivateSpaceInDocsUIEnabled()) {
+            mUserManagerState = UserManagerState.create(this);
+            mUserIdManager = null;
+            synchronized (DocumentsApplication.class) {
+                mProviders = new ProvidersCache(this, mUserManagerState, getConfigStore(this));
+            }
+        } else {
+            mUserManagerState = null;
+            mUserIdManager = UserIdManager.create(this);
+            synchronized (DocumentsApplication.class) {
+                mProviders = new ProvidersCache(this, mUserIdManager, getConfigStore(this));
+            }
+        }
 
-        mProviders = new ProvidersCache(this, mUserIdManager);
         mProviders.updateAsync(/* forceRefreshAll= */ false, /* callback= */  null);
 
         mThumbnailCache = new ThumbnailCache(memoryClassBytes / 4);
@@ -159,11 +255,19 @@
         localeFilter.addAction(Intent.ACTION_LOCALE_CHANGED);
         registerReceiver(mCacheReceiver, localeFilter);
 
-        final IntentFilter managedProfileFilter = new IntentFilter();
-        for (String managedProfileAction : MANAGED_PROFILE_FILTER_ACTIONS) {
-            managedProfileFilter.addAction(managedProfileAction);
+        if (SdkLevel.isAtLeastV()) {
+            PROFILE_FILTER_ACTIONS.addAll(Lists.newArrayList(
+                    Intent.ACTION_PROFILE_ADDED,
+                    Intent.ACTION_PROFILE_REMOVED,
+                    Intent.ACTION_PROFILE_AVAILABLE,
+                    Intent.ACTION_PROFILE_UNAVAILABLE
+            ));
         }
-        registerReceiver(mCacheReceiver, managedProfileFilter);
+        final IntentFilter profileFilter = new IntentFilter();
+        for (String profileAction : PROFILE_FILTER_ACTIONS) {
+            profileFilter.addAction(profileAction);
+        }
+        registerReceiver(mCacheReceiver, profileFilter);
 
         SearchHistoryManager.getInstance(getApplicationContext());
     }
@@ -183,9 +287,14 @@
             if (PACKAGE_FILTER_ACTIONS.contains(action) && data != null) {
                 final String packageName = data.getSchemeSpecificPart();
                 mProviders.updatePackageAsync(UserId.DEFAULT_USER, packageName);
-            } else if (MANAGED_PROFILE_FILTER_ACTIONS.contains(action)) {
+            } else if (PROFILE_FILTER_ACTIONS.contains(action)) {
                 // After we have reloaded roots. Resend the broadcast locally so the other
                 // components can reload properly after roots are updated.
+                if (getConfigStore(context).isPrivateSpaceInDocsUIEnabled()) {
+                    UserHandle userHandle = intent.getParcelableExtra(Intent.EXTRA_USER);
+                    UserId userId = UserId.of(userHandle);
+                    getUserManagerState(context).onProfileActionStatusChange(action, userId);
+                }
                 mProviders.updateAsync(/* forceRefreshAll= */ true,
                         () -> LocalBroadcastManager.getInstance(context).sendBroadcast(intent));
             } else {
diff --git a/src/com/android/documentsui/MultiRootDocumentsLoader.java b/src/com/android/documentsui/MultiRootDocumentsLoader.java
index 7668b06..f450814 100644
--- a/src/com/android/documentsui/MultiRootDocumentsLoader.java
+++ b/src/com/android/documentsui/MultiRootDocumentsLoader.java
@@ -196,11 +196,11 @@
 
                         final FilteringCursorWrapper filteredCursor =
                                 new FilteringCursorWrapper(cursor) {
-                            @Override
-                            public void close() {
-                                // Ignored, since we manage cursor lifecycle internally
-                            }
-                        };
+                                    @Override
+                                    public void close() {
+                                        // Ignored, since we manage cursor lifecycle internally
+                                    }
+                                };
                         filteredCursor.filterHiddenFiles(mState.showHiddenFiles);
                         filteredCursor.filterMimes(mState.acceptMimes, getRejectMimes());
                         filteredCursor.filterLastModified(rejectBefore);
diff --git a/src/com/android/documentsui/NavigationViewManager.java b/src/com/android/documentsui/NavigationViewManager.java
index a9dec9e..6727f1c 100644
--- a/src/com/android/documentsui/NavigationViewManager.java
+++ b/src/com/android/documentsui/NavigationViewManager.java
@@ -68,6 +68,7 @@
     private final ViewOutlineProvider mDefaultOutlineProvider;
     private final ViewOutlineProvider mSearchBarOutlineProvider;
     private final boolean mShowSearchBar;
+    private final ConfigStore mConfigStore;
 
     private boolean mIsActionModeActivated = false;
     private @ColorRes int mDefaultStatusBarColorResId;
@@ -79,7 +80,35 @@
             NavigationViewManager.Environment env,
             Breadcrumb breadcrumb,
             View tabLayoutContainer,
-            UserIdManager userIdManager) {
+            UserIdManager userIdManager,
+            ConfigStore configStore) {
+        this(activity, drawer, state, env, breadcrumb, tabLayoutContainer, userIdManager, null,
+                configStore);
+    }
+
+    public NavigationViewManager(
+            BaseActivity activity,
+            DrawerController drawer,
+            State state,
+            NavigationViewManager.Environment env,
+            Breadcrumb breadcrumb,
+            View tabLayoutContainer,
+            UserManagerState userManagerState,
+            ConfigStore configStore) {
+        this(activity, drawer, state, env, breadcrumb, tabLayoutContainer, null, userManagerState,
+                configStore);
+    }
+
+    public NavigationViewManager(
+            BaseActivity activity,
+            DrawerController drawer,
+            State state,
+            NavigationViewManager.Environment env,
+            Breadcrumb breadcrumb,
+            View tabLayoutContainer,
+            UserIdManager userIdManager,
+            UserManagerState userManagerState,
+            ConfigStore configStore) {
 
         mActivity = activity;
         mToolbar = activity.findViewById(R.id.toolbar);
@@ -89,7 +118,9 @@
         mEnv = env;
         mBreadcrumb = breadcrumb;
         mBreadcrumb.setup(env, state, this::onNavigationItemSelected);
-        mProfileTabs = new ProfileTabs(tabLayoutContainer, mState, userIdManager, mEnv, activity);
+        mConfigStore = configStore;
+        mProfileTabs =
+                getProfileTabs(tabLayoutContainer, userIdManager, userManagerState, activity);
 
         mToolbar.setNavigationOnClickListener(
                 new View.OnClickListener() {
@@ -128,6 +159,15 @@
         };
     }
 
+    private ProfileTabs getProfileTabs(View tabLayoutContainer, UserIdManager userIdManager,
+            UserManagerState userManagerState, BaseActivity activity) {
+        return mConfigStore.isPrivateSpaceInDocsUIEnabled()
+                ? new ProfileTabs(tabLayoutContainer, mState, userManagerState, mEnv, activity,
+                mConfigStore)
+                : new ProfileTabs(tabLayoutContainer, mState, userIdManager, mEnv, activity,
+                        mConfigStore);
+    }
+
     @Override
     public void onOffsetChanged(AppBarLayout appBarLayout, int offset) {
         if (!VersionUtils.isAtLeastS()) {
@@ -141,7 +181,8 @@
         // move directory_header out of the AppBarLayout.
 
         Window window = mActivity.getWindow();
-        View actionBar = window.getDecorView().findViewById(R.id.action_mode_bar);
+        View actionBar =
+                window.getDecorView().findViewById(androidx.appcompat.R.id.action_mode_bar);
         int dynamicHeaderColor = ContextCompat.getColor(mActivity,
                 offset == 0 ? mDefaultStatusBarColorResId : R.color.color_surface_header);
         if (actionBar != null) {
diff --git a/src/com/android/documentsui/ProfileTabs.java b/src/com/android/documentsui/ProfileTabs.java
index 59a94e6..d096d59 100644
--- a/src/com/android/documentsui/ProfileTabs.java
+++ b/src/com/android/documentsui/ProfileTabs.java
@@ -23,6 +23,7 @@
 
 import android.app.admin.DevicePolicyManager;
 import android.os.Build;
+import android.os.UserManager;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -37,8 +38,10 @@
 import com.google.android.material.tabs.TabLayout;
 import com.google.common.base.Objects;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
 /**
  * A manager class to control UI on a {@link TabLayout} for cross-profile purpose.
@@ -51,7 +54,11 @@
     private final State mState;
     private final NavigationViewManager.Environment mEnv;
     private final AbstractActionHandler.CommonAddons mCommonAddons;
+    @Nullable
     private final UserIdManager mUserIdManager;
+    @Nullable
+    private final UserManagerState mUserManagerState;
+    private final ConfigStore mConfigStore;
     private List<UserId> mUserIds;
     @Nullable
     private Listener mListener;
@@ -60,13 +67,32 @@
 
     public ProfileTabs(View tabLayoutContainer, State state, UserIdManager userIdManager,
             NavigationViewManager.Environment env,
-            AbstractActionHandler.CommonAddons commonAddons) {
+            AbstractActionHandler.CommonAddons commonAddons, ConfigStore configStore) {
+        this(tabLayoutContainer, state, userIdManager, null, env, commonAddons, configStore);
+    }
+
+    public ProfileTabs(View tabLayoutContainer, State state, UserManagerState userManagerState,
+            NavigationViewManager.Environment env,
+            AbstractActionHandler.CommonAddons commonAddons, ConfigStore configStore) {
+        this(tabLayoutContainer, state, null, userManagerState, env, commonAddons, configStore);
+    }
+
+    public ProfileTabs(View tabLayoutContainer, State state, @Nullable UserIdManager userIdManager,
+            @Nullable UserManagerState userManagerState, NavigationViewManager.Environment env,
+            AbstractActionHandler.CommonAddons commonAddons, ConfigStore configStore) {
         mTabsContainer = checkNotNull(tabLayoutContainer);
         mTabs = tabLayoutContainer.findViewById(R.id.tabs);
         mState = checkNotNull(state);
         mEnv = checkNotNull(env);
         mCommonAddons = checkNotNull(commonAddons);
-        mUserIdManager = checkNotNull(userIdManager);
+        mConfigStore = configStore;
+        if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+            mUserIdManager = userIdManager;
+            mUserManagerState = checkNotNull(userManagerState);
+        } else {
+            mUserIdManager = checkNotNull(userIdManager);
+            mUserManagerState = userManagerState;
+        }
         mTabs.removeAllTabs();
         mUserIds = Collections.singletonList(UserId.CURRENT_USER);
         mTabSeparator = tabLayoutContainer.findViewById(R.id.tab_separator);
@@ -92,7 +118,7 @@
     }
 
     /**
-     * Update the tab layout based on conditions.
+     * Update the tab layout based on status of availability of the hidden profile.
      */
     public void updateView() {
         updateTabsIfNeeded();
@@ -102,21 +128,26 @@
             // Update the layout according to the current root if necessary.
             // Make sure we do not invoke callback. Otherwise, it is likely to cause infinite loop.
             mTabs.removeOnTabSelectedListener(mOnTabSelectedListener);
-            mTabs.selectTab(mTabs.getTabAt(mUserIds.indexOf(currentRoot.userId)));
-            mTabs.addOnTabSelectedListener(mOnTabSelectedListener);
+            if (!mUserIds.contains(currentRoot.userId)) {
+                mTabs.addOnTabSelectedListener(mOnTabSelectedListener);
+                mTabs.selectTab(mTabs.getTabAt(mUserIds.indexOf(UserId.CURRENT_USER)));
+            } else {
+                mTabs.selectTab(mTabs.getTabAt(mUserIds.indexOf(currentRoot.userId)));
+                mTabs.addOnTabSelectedListener(mOnTabSelectedListener);
+            }
         }
         mTabsContainer.setVisibility(shouldShow() ? View.VISIBLE : View.GONE);
 
         // Material next changes apply only for version S or greater
         if (SdkLevel.isAtLeastS()) {
             mTabSeparator.setVisibility(View.GONE);
-            int tabContainerHeightInDp = (int)mTabsContainer.getContext().getResources().
-                getDimension(R.dimen.tab_container_height);
+            int tabContainerHeightInDp = (int) mTabsContainer.getContext().getResources()
+                    .getDimension(R.dimen.tab_container_height);
             mTabsContainer.getLayoutParams().height = tabContainerHeightInDp;
             ViewGroup.MarginLayoutParams tabContainerMarginLayoutParams =
-                (ViewGroup.MarginLayoutParams) mTabsContainer.getLayoutParams();
-            int tabContainerMarginTop = (int)mTabsContainer.getContext().getResources().
-                getDimension(R.dimen.profile_tab_margin_top);
+                    (ViewGroup.MarginLayoutParams) mTabsContainer.getLayoutParams();
+            int tabContainerMarginTop = (int) mTabsContainer.getContext().getResources()
+                    .getDimension(R.dimen.profile_tab_margin_top);
             tabContainerMarginLayoutParams.setMargins(0, tabContainerMarginTop, 0, 0);
             mTabsContainer.requestLayout();
             for (int i = 0; i < mTabs.getTabCount(); i++) {
@@ -127,11 +158,11 @@
                 // Get individual tab to set the style
                 ViewGroup.MarginLayoutParams marginLayoutParams =
                         (ViewGroup.MarginLayoutParams) tab.getLayoutParams();
-                int tabMarginSide = (int)mTabsContainer.getContext().getResources().
-                    getDimension(R.dimen.profile_tab_margin_side);
+                int tabMarginSide = (int) mTabsContainer.getContext().getResources()
+                        .getDimension(R.dimen.profile_tab_margin_side);
                 marginLayoutParams.setMargins(tabMarginSide, 0, tabMarginSide, 0);
-                int tabHeightInDp = (int)mTabsContainer.getContext().getResources().
-                    getDimension(R.dimen.tab_height);
+                int tabHeightInDp = (int) mTabsContainer.getContext().getResources()
+                        .getDimension(R.dimen.tab_height);
                 tab.getLayoutParams().height = tabHeightInDp;
                 tab.requestLayout();
                 tab.setBackgroundResource(R.drawable.tab_border_rounded);
@@ -145,25 +176,55 @@
     }
 
     private void updateTabsIfNeeded() {
-        List<UserId> userIds = mUserIdManager.getUserIds();
+        List<UserId> userIds = getUserIds();
         // Add tabs if the userIds is not equals to cached mUserIds.
         // Given that mUserIds was initialized with only the current user, if getUserIds()
         // returns just the current user, we don't need to do anything on the tab layout.
         if (!userIds.equals(mUserIds)) {
-            mUserIds = userIds;
+            mUserIds = new ArrayList<>();
+            mUserIds.addAll(userIds);
             mTabs.removeAllTabs();
             if (mUserIds.size() > 1) {
-                // set setSelected to false otherwise it will trigger callback.
-                mTabs.addTab(createTab(
-                        getEnterpriseString(PERSONAL_TAB, R.string.personal_tab),
-                        mUserIdManager.getSystemUser()), /* setSelected= */false);
-                mTabs.addTab(createTab(
-                        getEnterpriseString(WORK_TAB, R.string.work_tab),
-                        mUserIdManager.getManagedUser()), /* setSelected= */false);
+                if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+                    addTabsPrivateSpaceEnabled();
+                } else {
+                    addTabsPrivateSpaceDisabled();
+                }
             }
         }
     }
 
+    private List<UserId> getUserIds() {
+        if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+            assert mUserManagerState != null;
+            return mUserManagerState.getUserIds();
+        }
+        assert mUserIdManager != null;
+        return mUserIdManager.getUserIds();
+    }
+
+    private void addTabsPrivateSpaceEnabled() {
+        // set setSelected to false otherwise it will trigger callback.
+        assert mUserManagerState != null;
+        Map<UserId, String> userIdToLabelMap = mUserManagerState.getUserIdToLabelMap();
+        UserManager userManager = mTabsContainer.getContext().getSystemService(UserManager.class);
+        assert userManager != null;
+        for (UserId userId : mUserIds) {
+            mTabs.addTab(createTab(userIdToLabelMap.get(userId), userId), /* setSelected= */false);
+        }
+    }
+
+    private void addTabsPrivateSpaceDisabled() {
+        // set setSelected to false otherwise it will trigger callback.
+        assert mUserIdManager != null;
+        mTabs.addTab(createTab(
+                getEnterpriseString(PERSONAL_TAB, R.string.personal_tab),
+                mUserIdManager.getSystemUser()), /* setSelected= */false);
+        mTabs.addTab(createTab(
+                getEnterpriseString(WORK_TAB, R.string.work_tab),
+                mUserIdManager.getManagedUser()), /* setSelected= */false);
+    }
+
     private String getEnterpriseString(String updatableStringId, int defaultStringId) {
         if (SdkLevel.isAtLeastT()) {
             return getUpdatableEnterpriseString(updatableStringId, defaultStringId);
diff --git a/src/com/android/documentsui/RecentsLoader.java b/src/com/android/documentsui/RecentsLoader.java
index 62ea6d0..b3cfa01 100644
--- a/src/com/android/documentsui/RecentsLoader.java
+++ b/src/com/android/documentsui/RecentsLoader.java
@@ -35,6 +35,7 @@
 
 public class RecentsLoader extends MultiRootDocumentsLoader {
 
+    private static final String TAG = "RecentsLoader";
     /** Ignore documents older than this age. */
     private static final long REJECT_OLDER_THAN = 45 * DateUtils.DAY_IN_MILLIS;
 
diff --git a/src/com/android/documentsui/UserManagerState.java b/src/com/android/documentsui/UserManagerState.java
new file mode 100644
index 0000000..28a83e8
--- /dev/null
+++ b/src/com/android/documentsui/UserManagerState.java
@@ -0,0 +1,624 @@
+/*
+ * 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.documentsui;
+
+import static androidx.core.util.Preconditions.checkNotNull;
+
+import static com.android.documentsui.DevicePolicyResources.Drawables.Style.SOLID_COLORED;
+import static com.android.documentsui.DevicePolicyResources.Drawables.WORK_PROFILE_ICON;
+import static com.android.documentsui.DevicePolicyResources.Strings.PERSONAL_TAB;
+import static com.android.documentsui.DevicePolicyResources.Strings.WORK_TAB;
+import static com.android.documentsui.base.SharedMinimal.DEBUG;
+
+import android.Manifest;
+import android.annotation.SuppressLint;
+import android.app.ActivityManager;
+import android.app.admin.DevicePolicyManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.content.pm.UserProperties;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.Log;
+
+import androidx.annotation.GuardedBy;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.documentsui.base.Features;
+import com.android.documentsui.base.UserId;
+import com.android.documentsui.util.CrossProfileUtils;
+import com.android.documentsui.util.VersionUtils;
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.common.base.Objects;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public interface UserManagerState {
+
+    /**
+     * Returns the {@link UserId} of each profile which should be queried for documents. This will
+     * always
+     * include {@link UserId#CURRENT_USER}.
+     */
+    List<UserId> getUserIds();
+
+    /**
+     * Returns mapping between the {@link UserId} and the label for the profile
+     */
+    Map<UserId, String> getUserIdToLabelMap();
+
+    /**
+     * Returns mapping between the {@link UserId} and the drawable badge for the profile
+     *
+     * returns {@code null} for non-profile userId
+     */
+    Map<UserId, Drawable> getUserIdToBadgeMap();
+
+    /**
+     * Returns a map of {@link UserId} to boolean value indicating whether
+     * the {@link UserId}.CURRENT_USER can forward {@link Intent} to that {@link UserId}
+     */
+    Map<UserId, Boolean> getCanForwardToProfileIdMap(Intent intent);
+
+    /**
+     * Updates the state of the list of userIds and all the associated maps according the intent
+     * received in broadcast
+     *
+     * @param userId {@link UserId} for the profile for which the availability status changed
+     * @param action {@link Intent}.ACTION_PROFILE_UNAVAILABLE or
+     *               {@link Intent}.ACTION_PROFILE_AVAILABLE
+     */
+    void onProfileActionStatusChange(String action, UserId userId);
+
+    /**
+     * Creates an implementation of {@link UserManagerState}.
+     */
+    // TODO: b/314746383 Make this class a singleton
+    static UserManagerState create(Context context) {
+        return new RuntimeUserManagerState(context);
+    }
+
+    /**
+     * Implementation of {@link UserManagerState}
+     */
+    final class RuntimeUserManagerState implements UserManagerState {
+
+        private static final String TAG = "UserManagerState";
+        private final Context mContext;
+        private final UserId mCurrentUser;
+        private final boolean mIsDeviceSupported;
+        private final UserManager mUserManager;
+        private final ConfigStore mConfigStore;
+        /**
+         * List of all the {@link UserId} that have the {@link UserProperties.ShowInSharingSurfaces}
+         * set as `SHOW_IN_SHARING_SURFACES_SEPARATE` OR it is a system/personal user
+         */
+        @GuardedBy("mUserIds")
+        private final List<UserId> mUserIds = new ArrayList<>();
+        /**
+         * Mapping between the {@link UserId} to the corresponding profile label
+         */
+        @GuardedBy("mUserIdToLabelMap")
+        private final Map<UserId, String> mUserIdToLabelMap = new HashMap<>();
+        /**
+         * Mapping between the {@link UserId} to the corresponding profile badge
+         */
+        @GuardedBy("mUserIdToBadgeMap")
+        private final Map<UserId, Drawable> mUserIdToBadgeMap = new HashMap<>();
+        /**
+         * Map containing {@link UserId}, other than that of the current user, as key and boolean
+         * denoting whether it is accessible by the current user or not as value
+         */
+        @GuardedBy("mCanFrowardToProfileIdMap")
+        private final Map<UserId, Boolean> mCanFrowardToProfileIdMap = new HashMap<>();
+
+
+        private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                synchronized (mUserIds) {
+                    mUserIds.clear();
+                }
+                synchronized (mUserIdToLabelMap) {
+                    mUserIdToLabelMap.clear();
+                }
+                synchronized (mUserIdToBadgeMap) {
+                    mUserIdToBadgeMap.clear();
+                }
+                synchronized (mCanFrowardToProfileIdMap) {
+                    mCanFrowardToProfileIdMap.clear();
+                }
+            }
+        };
+
+
+        private RuntimeUserManagerState(Context context) {
+            this(context, UserId.CURRENT_USER,
+                    Features.CROSS_PROFILE_TABS && isDeviceSupported(context),
+                    DocumentsApplication.getConfigStore(context));
+        }
+
+        @VisibleForTesting
+        RuntimeUserManagerState(Context context, UserId currentUser, boolean isDeviceSupported,
+                ConfigStore configStore) {
+            mContext = context.getApplicationContext();
+            mCurrentUser = checkNotNull(currentUser);
+            mIsDeviceSupported = isDeviceSupported;
+            mUserManager = mContext.getSystemService(UserManager.class);
+            mConfigStore = configStore;
+
+            IntentFilter filter = new IntentFilter();
+            filter.addAction(Intent.ACTION_MANAGED_PROFILE_ADDED);
+            filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
+            if (SdkLevel.isAtLeastV() && mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+                filter.addAction(Intent.ACTION_PROFILE_ADDED);
+                filter.addAction(Intent.ACTION_PROFILE_REMOVED);
+            }
+            mContext.registerReceiver(mIntentReceiver, filter);
+        }
+
+        @Override
+        public List<UserId> getUserIds() {
+            synchronized (mUserIds) {
+                if (mUserIds.isEmpty()) {
+                    Log.d("profileAction", "user ids empty");
+                    mUserIds.addAll(getUserIdsInternal());
+                }
+                return mUserIds;
+            }
+        }
+
+        @Override
+        public Map<UserId, String> getUserIdToLabelMap() {
+            synchronized (mUserIdToLabelMap) {
+                if (mUserIdToLabelMap.isEmpty()) {
+                    getUserIdToLabelMapInternal();
+                }
+                return mUserIdToLabelMap;
+            }
+        }
+
+        @Override
+        public Map<UserId, Drawable> getUserIdToBadgeMap() {
+            synchronized (mUserIdToBadgeMap) {
+                if (mUserIdToBadgeMap.isEmpty()) {
+                    getUserIdToBadgeMapInternal();
+                }
+                return mUserIdToBadgeMap;
+            }
+        }
+
+        @Override
+        public Map<UserId, Boolean> getCanForwardToProfileIdMap(Intent intent) {
+            synchronized (mCanFrowardToProfileIdMap) {
+                if (mCanFrowardToProfileIdMap.isEmpty()) {
+                    getCanForwardToProfileIdMapInternal(intent);
+                }
+                return mCanFrowardToProfileIdMap;
+            }
+        }
+
+        @Override
+        @SuppressLint("NewApi")
+        public void onProfileActionStatusChange(String action, UserId userId) {
+            UserProperties userProperties = mUserManager.getUserProperties(
+                    UserHandle.of(userId.getIdentifier()));
+            if (userProperties.getShowInQuietMode() != UserProperties.SHOW_IN_QUIET_MODE_HIDDEN) {
+                return;
+            }
+            if (Intent.ACTION_PROFILE_UNAVAILABLE.equals(action)) {
+                synchronized (mUserIds) {
+                    mUserIds.remove(userId);
+                }
+                synchronized (mUserIdToLabelMap) {
+                    mUserIdToLabelMap.remove(userId);
+                }
+                synchronized (mUserIdToBadgeMap) {
+                    mUserIdToBadgeMap.remove(userId);
+                }
+                synchronized (mCanFrowardToProfileIdMap) {
+                    mCanFrowardToProfileIdMap.remove(userId);
+                }
+            } else if (Intent.ACTION_PROFILE_AVAILABLE.equals(action)) {
+                synchronized (mUserIds) {
+                    if (!mUserIds.contains(userId)) {
+                        mUserIds.add(userId);
+                    }
+                }
+                synchronized (mUserIdToLabelMap) {
+                    mUserIdToLabelMap.put(userId, getProfileLabel(userId));
+                }
+                synchronized (mUserIdToBadgeMap) {
+                    mUserIdToBadgeMap.put(userId, getProfileBadge(userId));
+                }
+                synchronized (mCanFrowardToProfileIdMap) {
+                    mCanFrowardToProfileIdMap.put(userId, true);
+                }
+            } else {
+                Log.e(TAG, "Unexpected action received: " + action);
+            }
+        }
+
+        private List<UserId> getUserIdsInternal() {
+            final List<UserId> result = new ArrayList<>();
+
+            if (!mIsDeviceSupported) {
+                result.add(mCurrentUser);
+                return result;
+            }
+
+            if (mUserManager == null) {
+                Log.e(TAG, "cannot obtain user manager");
+                result.add(mCurrentUser);
+                return result;
+            }
+
+            final List<UserHandle> userProfiles = mUserManager.getUserProfiles();
+            if (userProfiles.size() < 2) {
+                result.add(mCurrentUser);
+                return result;
+            }
+
+            if (SdkLevel.isAtLeastV()) {
+                getUserIdsInternalPostV(userProfiles, result);
+            } else {
+                getUserIdsInternalPreV(userProfiles, result);
+            }
+            return result;
+        }
+
+        @SuppressLint("NewApi")
+        private void getUserIdsInternalPostV(List<UserHandle> userProfiles, List<UserId> result) {
+            for (UserHandle userHandle : userProfiles) {
+                if (userHandle.getIdentifier() == ActivityManager.getCurrentUser()) {
+                    result.add(UserId.of(userHandle));
+                } else {
+                    // Out of all the profiles returned by user manager the profiles that are
+                    // returned should satisfy both the following conditions:
+                    // 1. It has user property SHOW_IN_SHARING_SURFACES_SEPARATE
+                    // 2. Quite mode is not enabled, if it is enabled then the profile's user
+                    //    property is not SHOW_IN_QUIET_MODE_HIDDEN
+                    if (isProfileAllowed(userHandle)) {
+                        result.add(UserId.of(userHandle));
+                    }
+                }
+            }
+            if (result.isEmpty()) {
+                result.add(mCurrentUser);
+            }
+        }
+
+        @SuppressLint("NewApi")
+        private boolean isProfileAllowed(UserHandle userHandle) {
+            final UserProperties userProperties =
+                    mUserManager.getUserProperties(userHandle);
+            if (userProperties.getShowInSharingSurfaces()
+                    == UserProperties.SHOW_IN_SHARING_SURFACES_SEPARATE) {
+                return !UserId.of(userHandle).isQuietModeEnabled(mContext)
+                        || userProperties.getShowInQuietMode()
+                        != UserProperties.SHOW_IN_QUIET_MODE_HIDDEN;
+            }
+            return false;
+        }
+
+        private void getUserIdsInternalPreV(List<UserHandle> userProfiles, List<UserId> result) {
+            result.add(mCurrentUser);
+            UserId systemUser = null;
+            UserId managedUser = null;
+            for (UserHandle userHandle : userProfiles) {
+                if (userHandle.isSystem()) {
+                    systemUser = UserId.of(userHandle);
+                } else if (mUserManager.isManagedProfile(userHandle.getIdentifier())) {
+                    managedUser = UserId.of(userHandle);
+                }
+            }
+            if (mCurrentUser.isSystem() && managedUser != null) {
+                result.add(managedUser);
+            } else if (mCurrentUser.isManagedProfile(mUserManager) && systemUser != null) {
+                result.add(0, systemUser);
+            } else {
+                if (DEBUG) {
+                    Log.w(TAG, "The current user " + UserId.CURRENT_USER
+                            + " is neither system nor managed user. has system user: "
+                            + (systemUser != null));
+                }
+            }
+        }
+
+        private void getUserIdToLabelMapInternal() {
+            if (SdkLevel.isAtLeastV()) {
+                getUserIdToLabelMapInternalPostV();
+            } else {
+                getUserIdToLabelMapInternalPreV();
+            }
+        }
+
+        @SuppressLint("NewApi")
+        private void getUserIdToLabelMapInternalPostV() {
+            if (mUserManager == null) {
+                Log.e(TAG, "cannot obtain user manager");
+                return;
+            }
+            List<UserId> userIds = getUserIds();
+            for (UserId userId : userIds) {
+                synchronized (mUserIdToLabelMap) {
+                    mUserIdToLabelMap.put(userId, getProfileLabel(userId));
+                }
+            }
+        }
+
+        private void getUserIdToLabelMapInternalPreV() {
+            if (mUserManager == null) {
+                Log.e(TAG, "cannot obtain user manager");
+                return;
+            }
+            List<UserId> userIds = getUserIds();
+            for (UserId userId : userIds) {
+                if (mUserManager.isManagedProfile(userId.getIdentifier())) {
+                    synchronized (mUserIdToLabelMap) {
+                        mUserIdToLabelMap.put(userId,
+                                getEnterpriseString(WORK_TAB, R.string.work_tab));
+                    }
+                } else {
+                    synchronized (mUserIdToLabelMap) {
+                        mUserIdToLabelMap.put(userId,
+                                getEnterpriseString(PERSONAL_TAB, R.string.personal_tab));
+                    }
+                }
+            }
+        }
+
+        @SuppressLint("NewApi")
+        private String getProfileLabel(UserId userId) {
+            if (userId.getIdentifier() == ActivityManager.getCurrentUser()) {
+                return getEnterpriseString(PERSONAL_TAB, R.string.personal_tab);
+            }
+            try {
+                Context userContext = mContext.createContextAsUser(
+                        UserHandle.of(userId.getIdentifier()), 0 /* flags */);
+                UserManager userManagerAsUser = userContext.getSystemService(UserManager.class);
+                if (userManagerAsUser == null) {
+                    Log.e(TAG, "cannot obtain user manager");
+                    return null;
+                }
+                return userManagerAsUser.getProfileLabel();
+            } catch (Exception e) {
+                Log.e(TAG, "Exception occurred while trying to get profile label:\n" + e);
+                return null;
+            }
+        }
+
+        private String getEnterpriseString(String updatableStringId, int defaultStringId) {
+            if (SdkLevel.isAtLeastT()) {
+                return getUpdatableEnterpriseString(updatableStringId, defaultStringId);
+            } else {
+                return mContext.getString(defaultStringId);
+            }
+        }
+
+        @RequiresApi(Build.VERSION_CODES.TIRAMISU)
+        private String getUpdatableEnterpriseString(String updatableStringId, int defaultStringId) {
+            DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class);
+            if (Objects.equal(dpm, null)) {
+                Log.e(TAG, "can not get device policy manager");
+                return mContext.getString(defaultStringId);
+            }
+            return dpm.getResources().getString(
+                    updatableStringId,
+                    () -> mContext.getString(defaultStringId));
+        }
+
+        private void getUserIdToBadgeMapInternal() {
+            if (SdkLevel.isAtLeastV()) {
+                getUserIdToBadgeMapInternalPostV();
+            } else {
+                getUserIdToBadgeMapInternalPreV();
+            }
+        }
+
+        @SuppressLint("NewApi")
+        private void getUserIdToBadgeMapInternalPostV() {
+            if (mUserManager == null) {
+                Log.e(TAG, "cannot obtain user manager");
+                return;
+            }
+            List<UserId> userIds = getUserIds();
+            for (UserId userId : userIds) {
+                synchronized (mUserIdToBadgeMap) {
+                    mUserIdToBadgeMap.put(userId, getProfileBadge(userId));
+                }
+            }
+        }
+
+        private void getUserIdToBadgeMapInternalPreV() {
+            if (!SdkLevel.isAtLeastR()) return;
+            if (mUserManager == null) {
+                Log.e(TAG, "cannot obtain user manager");
+                return;
+            }
+            List<UserId> userIds = getUserIds();
+            for (UserId userId : userIds) {
+                if (mUserManager.isManagedProfile(userId.getIdentifier())) {
+                    synchronized (mUserIdToBadgeMap) {
+                        mUserIdToBadgeMap.put(userId,
+                                SdkLevel.isAtLeastT() ? getWorkProfileBadge()
+                                        : mContext.getDrawable(R.drawable.ic_briefcase));
+                    }
+                }
+            }
+        }
+
+        @SuppressLint("NewApi")
+        private Drawable getProfileBadge(UserId userId) {
+            if (userId.getIdentifier() == ActivityManager.getCurrentUser()) {
+                return null;
+            }
+            try {
+                Context userContext = mContext.createContextAsUser(
+                        UserHandle.of(userId.getIdentifier()), 0 /* flags */);
+                UserManager userManagerAsUser = userContext.getSystemService(UserManager.class);
+                if (userManagerAsUser == null) {
+                    Log.e(TAG, "cannot obtain user manager");
+                    return null;
+                }
+                return userManagerAsUser.getUserBadge();
+            } catch (Exception e) {
+                Log.e(TAG, "Exception occurred while trying to get profile badge:\n" + e);
+                return null;
+            }
+        }
+
+        @RequiresApi(Build.VERSION_CODES.TIRAMISU)
+        private Drawable getWorkProfileBadge() {
+            DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class);
+            Drawable drawable = dpm.getResources().getDrawable(WORK_PROFILE_ICON, SOLID_COLORED,
+                    () ->
+                            mContext.getDrawable(R.drawable.ic_briefcase));
+            return drawable;
+        }
+
+        private void getCanForwardToProfileIdMapInternal(Intent intent) {
+            // Versions less than V will not have the user properties required to determine whether
+            // cross profile check is delegated from parent or not
+            if (!SdkLevel.isAtLeastV()) {
+                getCanForwardToProfileIdMapPreV(intent);
+                return;
+            }
+            if (mUserManager == null) {
+                Log.e(TAG, "can not get user manager");
+                return;
+            }
+
+            List<UserId> parentOrDelegatedFromParent = new ArrayList<>();
+            List<UserId> canForwardToProfileIds = new ArrayList<>();
+            List<UserId> noDelegation = new ArrayList<>();
+
+            List<UserId> userIds = getUserIds();
+            for (UserId userId : userIds) {
+                final UserHandle userHandle = UserHandle.of(userId.getIdentifier());
+                // Parent (personal) profile and all the child profiles that delegate cross profile
+                // content sharing check to parent can share among each other
+                if (userId.getIdentifier() == ActivityManager.getCurrentUser()
+                        || isCrossProfileContentSharingStrategyDelegatedFromParent(userHandle)) {
+                    parentOrDelegatedFromParent.add(userId);
+                } else {
+                    noDelegation.add(userId);
+                }
+            }
+
+            if (noDelegation.size() > 1) {
+                Log.e(TAG, "There cannot be more than one profile delegating cross profile "
+                        + "content sharing check from self.");
+            }
+
+            /*
+             * Cross profile resolve info need to be checked in the following 2 cases:
+             * 1. current user is either parent or delegates check to parent and the target user
+             * does
+             *    not delegate to parent
+             * 2. current user does not delegate check to the parent and the target user is the
+             *    parent profile
+             */
+            UserId needToCheck = null;
+            if (parentOrDelegatedFromParent.contains(mCurrentUser)
+                    && !noDelegation.isEmpty()) {
+                needToCheck = noDelegation.get(0);
+            } else if (mCurrentUser.getIdentifier() != ActivityManager.getCurrentUser()) {
+                final UserHandle parentProfile = mUserManager.getProfileParent(
+                        UserHandle.of(mCurrentUser.getIdentifier()));
+                needToCheck = UserId.of(parentProfile);
+            }
+
+            if (needToCheck != null && CrossProfileUtils.getCrossProfileResolveInfo(mCurrentUser,
+                    mContext.getPackageManager(), intent, mContext,
+                    mConfigStore.isPrivateSpaceInDocsUIEnabled()) != null) {
+                if (parentOrDelegatedFromParent.contains(needToCheck)) {
+                    canForwardToProfileIds.addAll(parentOrDelegatedFromParent);
+                } else {
+                    canForwardToProfileIds.add(needToCheck);
+                }
+            }
+
+            if (parentOrDelegatedFromParent.contains(mCurrentUser)) {
+                canForwardToProfileIds.addAll(parentOrDelegatedFromParent);
+            }
+
+            for (UserId userId : userIds) {
+                synchronized (mCanFrowardToProfileIdMap) {
+                    if (userId.equals(mCurrentUser)) {
+                        mCanFrowardToProfileIdMap.put(userId, true);
+                        continue;
+                    }
+                    mCanFrowardToProfileIdMap.put(userId, canForwardToProfileIds.contains(userId));
+                }
+            }
+        }
+
+        @SuppressLint("NewApi")
+        private boolean isCrossProfileContentSharingStrategyDelegatedFromParent(
+                UserHandle userHandle) {
+            if (mUserManager == null) {
+                Log.e(TAG, "can not obtain user manager");
+                return false;
+            }
+            UserProperties userProperties = mUserManager.getUserProperties(userHandle);
+            if (java.util.Objects.equals(userProperties, null)) {
+                Log.e(TAG, "can not obtain user properties");
+                return false;
+            }
+
+            return userProperties.getCrossProfileContentSharingStrategy()
+                    == UserProperties.CROSS_PROFILE_CONTENT_SHARING_DELEGATE_FROM_PARENT;
+        }
+
+        private void getCanForwardToProfileIdMapPreV(Intent intent) {
+            // There only two profiles pre V
+            List<UserId> userIds = getUserIds();
+            for (UserId userId : userIds) {
+                synchronized (mCanFrowardToProfileIdMap) {
+                    if (mCurrentUser.equals(userId)) {
+                        mCanFrowardToProfileIdMap.put(userId, true);
+                    } else {
+                        mCanFrowardToProfileIdMap.put(userId,
+                                CrossProfileUtils.getCrossProfileResolveInfo(
+                                        mCurrentUser, mContext.getPackageManager(), intent,
+                                        mContext, mConfigStore.isPrivateSpaceInDocsUIEnabled())
+                                        != null);
+                    }
+                }
+            }
+        }
+
+        private static boolean isDeviceSupported(Context context) {
+            // The feature requires Android R DocumentsContract APIs and INTERACT_ACROSS_USERS_FULL
+            // permission.
+            return VersionUtils.isAtLeastR()
+                    && context.checkSelfPermission(Manifest.permission.INTERACT_ACROSS_USERS)
+                    == PackageManager.PERMISSION_GRANTED;
+        }
+    }
+}
diff --git a/src/com/android/documentsui/base/State.java b/src/com/android/documentsui/base/State.java
index cff5ce4..aa11f6f 100644
--- a/src/com/android/documentsui/base/State.java
+++ b/src/com/android/documentsui/base/State.java
@@ -23,6 +23,7 @@
 
 import androidx.annotation.IntDef;
 
+import com.android.documentsui.ConfigStore;
 import com.android.documentsui.services.FileOperationService;
 import com.android.documentsui.services.FileOperationService.OpType;
 import com.android.documentsui.sorting.SortModel;
@@ -33,6 +34,7 @@
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 public class State implements android.os.Parcelable {
 
@@ -47,7 +49,9 @@
             ACTION_OPEN_TREE
     })
     @Retention(RetentionPolicy.SOURCE)
-    public @interface ActionType {}
+    public @interface ActionType {
+    }
+
     // File manager and related private picking activity.
     public static final int ACTION_BROWSE = 1;
     public static final int ACTION_PICK_COPY_DESTINATION = 2;
@@ -63,7 +67,9 @@
             MODE_GRID
     })
     @Retention(RetentionPolicy.SOURCE)
-    public @interface ViewMode {}
+    public @interface ViewMode {
+    }
+
     public static final int MODE_UNKNOWN = 0;
     public static final int MODE_LIST = 1;
     public static final int MODE_GRID = 2;
@@ -85,6 +91,7 @@
     public boolean openableOnly;
     public boolean restrictScopeStorage;
     public boolean showHiddenFiles;
+    public ConfigStore configStore;
 
     /**
      * Represents whether the state supports cross-profile file picking.
@@ -100,10 +107,19 @@
      * Returns true if we are allowed to interact with the user.
      */
     public boolean canInteractWith(UserId userId) {
+        if (configStore.isPrivateSpaceInDocsUIEnabled()) {
+            return canForwardToProfileIdMap.getOrDefault(userId, false);
+        }
         return canShareAcrossProfile || UserId.CURRENT_USER.equals(userId);
     }
 
     /**
+     * Represents whether the intent can be forwarded to the {@link UserId} in the map
+     */
+    public Map<UserId, Boolean> canForwardToProfileIdMap = new HashMap<>();
+
+
+    /**
      * This is basically a sub-type for the copy operation. It can be either COPY,
      * COMPRESS, EXTRACT or MOVE.
      * The only legal values, if set, are: OPERATION_COPY, OPERATION_COMPRESS,
@@ -125,12 +141,13 @@
         if (intent.hasExtra(Intent.EXTRA_MIME_TYPES)) {
             acceptMimes = intent.getStringArrayExtra(Intent.EXTRA_MIME_TYPES);
         } else {
-            acceptMimes = new String[] { defaultAcceptMimeType };
+            acceptMimes = new String[]{defaultAcceptMimeType};
         }
     }
 
     /**
      * Check current action should have preview function or not.
+     *
      * @return True, if the action should have preview.
      */
     public boolean shouldShowPreview() {
@@ -141,6 +158,7 @@
 
     /**
      * Check the action is file picking and acceptMimes are all images type or not.
+     *
      * @return True, if acceptMimes are all image type and action is file picking.
      */
     public boolean isPhotoPicking() {
diff --git a/src/com/android/documentsui/base/UserId.java b/src/com/android/documentsui/base/UserId.java
index 642ebe6..2184291 100644
--- a/src/com/android/documentsui/base/UserId.java
+++ b/src/com/android/documentsui/base/UserId.java
@@ -149,8 +149,8 @@
      * Returns true if the this user is in quiet mode.
      */
     public boolean isQuietModeEnabled(Context context) {
-        final UserManager userManager =
-                (UserManager) context.getSystemService(Context.USER_SERVICE);
+        final UserManager userManager = context.getSystemService(UserManager.class);
+        assert userManager != null;
         return userManager.isQuietModeEnabled(mUserHandle);
     }
 
diff --git a/src/com/android/documentsui/dirlist/AppsRowManager.java b/src/com/android/documentsui/dirlist/AppsRowManager.java
index 60138f6..092d5ec 100644
--- a/src/com/android/documentsui/dirlist/AppsRowManager.java
+++ b/src/com/android/documentsui/dirlist/AppsRowManager.java
@@ -16,7 +16,6 @@
 
 package com.android.documentsui.dirlist;
 
-import android.os.UserManager;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -26,8 +25,10 @@
 
 import com.android.documentsui.ActionHandler;
 import com.android.documentsui.BaseActivity;
+import com.android.documentsui.ConfigStore;
 import com.android.documentsui.R;
 import com.android.documentsui.UserIdManager;
+import com.android.documentsui.UserManagerState;
 import com.android.documentsui.base.State;
 import com.android.documentsui.base.UserId;
 import com.android.documentsui.dirlist.AppsRowItemData.AppData;
@@ -50,13 +51,27 @@
     private final List<AppsRowItemData> mDataList;
     private final boolean mMaybeShowBadge;
     private final UserIdManager mUserIdManager;
+    private final UserManagerState mUserManagerState;
+    private final ConfigStore mConfigStore;
 
     public AppsRowManager(ActionHandler handler, boolean maybeShowBadge,
-            UserIdManager userIdManager) {
+            UserIdManager userIdManager, ConfigStore configStore) {
         mDataList = new ArrayList<>();
         mActionHandler = handler;
         mMaybeShowBadge = maybeShowBadge;
         mUserIdManager = userIdManager;
+        mUserManagerState = null;
+        mConfigStore = configStore;
+    }
+
+    public AppsRowManager(ActionHandler handler, boolean maybeShowBadge,
+            UserManagerState userManagerState, ConfigStore configStore) {
+        mDataList = new ArrayList<>();
+        mActionHandler = handler;
+        mMaybeShowBadge = maybeShowBadge;
+        mUserIdManager = null;
+        mUserManagerState = userManagerState;
+        mConfigStore = configStore;
     }
 
     public List<AppsRowItemData> updateList(List<Item> itemList) {
@@ -89,7 +104,7 @@
         boolean isHiddenAction = state.action == State.ACTION_CREATE
                 || state.action == State.ACTION_OPEN_TREE
                 || state.action == State.ACTION_PICK_COPY_DESTINATION;
-        boolean isSearchExpandedAcrossProfile = mUserIdManager.getUserIds().size() > 1
+        boolean isSearchExpandedAcrossProfile = getUserIds().size() > 1
                 && state.supportsCrossProfile()
                 && isSearchExpanded;
 
@@ -134,4 +149,11 @@
         summary.setVisibility(data.getSummary() != null ? View.VISIBLE : View.GONE);
         view.setOnClickListener(v -> data.onClicked());
     }
+
+    private List<UserId> getUserIds() {
+        if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+            return mUserManagerState.getUserIds();
+        }
+        return mUserIdManager.getUserIds();
+    }
 }
diff --git a/src/com/android/documentsui/dirlist/DirectoryAddonsAdapter.java b/src/com/android/documentsui/dirlist/DirectoryAddonsAdapter.java
index 7bccbac..8989853 100644
--- a/src/com/android/documentsui/dirlist/DirectoryAddonsAdapter.java
+++ b/src/com/android/documentsui/dirlist/DirectoryAddonsAdapter.java
@@ -16,19 +16,24 @@
 
 package com.android.documentsui.dirlist;
 
+import android.os.UserManager;
 import android.view.ViewGroup;
 
+import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver;
 
+import com.android.documentsui.ConfigStore;
 import com.android.documentsui.Model;
 import com.android.documentsui.Model.Update;
 import com.android.documentsui.base.EventListener;
 import com.android.documentsui.base.State;
+import com.android.documentsui.base.UserId;
 import com.android.documentsui.dirlist.Message.HeaderMessage;
 import com.android.documentsui.dirlist.Message.InflateMessage;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Adapter wrapper that embellishes the directory list by inserting Holder views inbetween
@@ -47,14 +52,30 @@
     // now.
     private final Message mHeaderMessage;
     private final Message mInflateMessage;
+    private final ConfigStore mConfigStore;
 
-    DirectoryAddonsAdapter(Environment environment, DocumentsAdapter delegate) {
+    DirectoryAddonsAdapter(Environment environment, DocumentsAdapter delegate,
+            ConfigStore configStore) {
+        this(environment, delegate, null, null, null, null, configStore);
+    }
+
+    DirectoryAddonsAdapter(Environment environment, DocumentsAdapter delegate,
+            @Nullable UserId sourceUserId, @Nullable UserId selectedUserId,
+            @Nullable Map<UserId, String> userIdLabelMap, @Nullable UserManager userManager,
+            ConfigStore configStore) {
         mEnv = environment;
         mDelegate = delegate;
+        mConfigStore = configStore;
         // TODO: We should not instantiate the messages here, but rather instantiate them
         // when we get an update event.
-        mHeaderMessage = new HeaderMessage(environment, this::onDismissHeaderMessage);
-        mInflateMessage = new InflateMessage(environment, this::onDismissHeaderMessage);
+        mHeaderMessage = new HeaderMessage(environment, this::onDismissHeaderMessage, mConfigStore);
+        if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+            mInflateMessage = new InflateMessage(environment, this::onDismissHeaderMessage,
+                    sourceUserId, selectedUserId, userIdLabelMap, userManager, mConfigStore);
+        } else {
+            mInflateMessage = new InflateMessage(environment, this::onDismissHeaderMessage,
+                    mConfigStore);
+        }
 
         // Relay events published by our delegate to our listeners (presumably RecyclerView)
         // with adjusted positions.
@@ -98,15 +119,15 @@
         DocumentHolder holder = null;
         switch (viewType) {
             case ITEM_TYPE_SECTION_BREAK:
-                holder = new TransparentDividerDocumentHolder(mEnv.getContext());
+                holder = new TransparentDividerDocumentHolder(mEnv.getContext(), mConfigStore);
                 mEnv.initDocumentHolder(holder);
                 break;
             case ITEM_TYPE_HEADER_MESSAGE:
-                holder = new HeaderMessageDocumentHolder(mEnv.getContext(), parent);
+                holder = new HeaderMessageDocumentHolder(mEnv.getContext(), parent, mConfigStore);
                 mEnv.initDocumentHolder(holder);
                 break;
             case ITEM_TYPE_INFLATED_MESSAGE:
-                holder = new InflateMessageDocumentHolder(mEnv.getContext(), parent);
+                holder = new InflateMessageDocumentHolder(mEnv.getContext(), parent, mConfigStore);
                 mEnv.initDocumentHolder(holder);
                 break;
             default:
@@ -295,13 +316,13 @@
 
         @Override
         public void onItemRangeChanged(int positionStart, int itemCount, Object payload) {
-            assert(itemCount == 1);
+            assert (itemCount == 1);
             notifyItemRangeChanged(toViewPosition(positionStart), itemCount, payload);
         }
 
         @Override
         public void onItemRangeInserted(int positionStart, int itemCount) {
-            assert(itemCount == 1);
+            assert (itemCount == 1);
             if (positionStart < mBreakPosition) {
                 mBreakPosition++;
             }
@@ -310,7 +331,7 @@
 
         @Override
         public void onItemRangeRemoved(int positionStart, int itemCount) {
-            assert(itemCount == 1);
+            assert (itemCount == 1);
             if (positionStart < mBreakPosition) {
                 mBreakPosition--;
             }
diff --git a/src/com/android/documentsui/dirlist/DirectoryFragment.java b/src/com/android/documentsui/dirlist/DirectoryFragment.java
index 4444a9c..32f3683 100644
--- a/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -28,6 +28,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.UserProperties;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
@@ -35,6 +36,7 @@
 import android.os.Looper;
 import android.os.Parcelable;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.provider.DocumentsContract;
 import android.provider.DocumentsContract.Document;
 import android.util.Log;
@@ -111,6 +113,7 @@
 import com.android.documentsui.sorting.SortDimension;
 import com.android.documentsui.sorting.SortModel;
 import com.android.documentsui.util.VersionUtils;
+import com.android.modules.utils.build.SdkLevel;
 
 import com.google.common.base.Objects;
 
@@ -132,7 +135,8 @@
             REQUEST_COPY_DESTINATION
     })
     @Retention(RetentionPolicy.SOURCE)
-    public @interface RequestCode {}
+    public @interface RequestCode {
+    }
 
     public static final int REQUEST_COPY_DESTINATION = 1;
 
@@ -236,33 +240,91 @@
         @Override
         public void onReceive(Context context, Intent intent) {
             final String action = intent.getAction();
-            if (isManagedProfileAction(action)) {
-                UserHandle userHandle = intent.getParcelableExtra(Intent.EXTRA_USER);
-                UserId userId = UserId.of(userHandle);
+            if (SdkLevel.isAtLeastV()
+                    && mState.configStore.isPrivateSpaceInDocsUIEnabled()) {
+                profileStatusReceiverPostV(intent, action);
+            } else {
+                profileStatusReceiverPreV(intent, action);
+            }
+
+        }
+
+        private void profileStatusReceiverPostV(Intent intent, String action) {
+            if (!SdkLevel.isAtLeastV()) return;
+            if (!isProfileStatusAction(action)) return;
+            UserHandle userHandle = intent.getParcelableExtra(Intent.EXTRA_USER);
+            UserId userId = UserId.of(userHandle);
+            UserManager userManager = mActivity.getSystemService(UserManager.class);
+            if (userManager == null) {
+                Log.e(TAG, "cannot obtain user manager");
+                return;
+            }
+            UserProperties userProperties = userManager.getUserProperties(userHandle);
+            if (userProperties.getShowInQuietMode()
+                    == UserProperties.SHOW_IN_QUIET_MODE_PAUSED) {
                 if (Objects.equal(mActivity.getSelectedUser(), userId)) {
                     // We only need to refresh the layout when the selected user is equal to the
                     // received profile user.
-                    if (Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action)) {
-                        // If the managed profile is turned off, we need to refresh the directory
-                        // to update the UI to show an appropriate error message.
-                        if (mProviderTestRunnable != null) {
-                            mHandler.removeCallbacks(mProviderTestRunnable);
-                            mProviderTestRunnable = null;
-                        }
-                        onRefresh();
-                        return;
-                    }
-
-                    // When the managed profile becomes available, the provider may not be available
-                    // immediately, we need to check if it is ready before we reload the content.
-                    if (Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)) {
-                        checkUriAndScheduleCheckIfNeeded(userId);
-                    }
+                    onPausedProfileStatusChange(action, userId);
                 }
+                return;
+            }
+            if (userProperties.getShowInQuietMode()
+                    == UserProperties.SHOW_IN_QUIET_MODE_HIDDEN) {
+                onHiddenProfileStatusChange(action, userId);
+            }
+        }
+
+        private void profileStatusReceiverPreV(Intent intent, String action) {
+            if (!isManagedProfileAction(action)) return;
+            UserHandle userHandle = intent.getParcelableExtra(Intent.EXTRA_USER);
+            UserId userId = UserId.of(userHandle);
+            if (Objects.equal(mActivity.getSelectedUser(), userId)) {
+                // We only need to refresh the layout when the selected user is equal to the
+                // received profile user.
+                onPausedProfileStatusChange(action, userId);
             }
         }
     };
 
+    private void onPausedProfileStatusChange(String action, UserId userId) {
+        if (Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action)
+                || (SdkLevel.isAtLeastV() && Intent.ACTION_PROFILE_UNAVAILABLE.equals(action))) {
+            // If the managed/paused profile is turned off, we need to refresh the directory
+            // to update the UI to show an appropriate error message.
+            if (mProviderTestRunnable != null) {
+                mHandler.removeCallbacks(mProviderTestRunnable);
+                mProviderTestRunnable = null;
+            }
+            onRefresh();
+            return;
+        }
+
+        // When the managed/paused profile becomes available, the provider may not be available
+        // immediately, we need to check if it is ready before we reload the content.
+        if (Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)
+                || (SdkLevel.isAtLeastV() && Intent.ACTION_PROFILE_AVAILABLE.equals(action))) {
+            checkUriAndScheduleCheckIfNeeded(userId);
+        }
+    }
+
+    private void onHiddenProfileStatusChange(String action, UserId userId) {
+        if (Intent.ACTION_PROFILE_UNAVAILABLE.equals(action)) {
+            mActivity.setHasProfileBecomeUnavailable(true);
+            if (mProviderTestRunnable != null) {
+                mHandler.removeCallbacks(mProviderTestRunnable);
+                mProviderTestRunnable = null;
+            }
+            while (mState.stack.size() > 0) {
+                mState.stack.pop();
+            }
+            mActivity.updateNavigator();
+            mActivity.setHasProfileBecomeUnavailable(false);
+        } else {
+            checkUriAndScheduleCheckIfNeeded(userId);
+        }
+    }
+
     private final BroadcastReceiver mSdCardBroadcastReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -288,7 +350,7 @@
                 mHandler.removeCallbacks(mProviderTestRunnable);
                 mProviderTestRunnable = null;
             }
-            mHandler.post(() -> onRefresh());
+            mHandler.post(this::onRefresh);
         } else {
             checkUriWithDelay(/* numOfRetries= */1, uri, userId);
         }
@@ -326,8 +388,8 @@
 
     private boolean isProviderAvailable(Uri uri, UserId userId) {
         try (ContentProviderClient userClient =
-                DocumentsApplication.acquireUnstableProviderOrThrow(
-                        userId.getContentResolver(mActivity), uri.getAuthority())) {
+                     DocumentsApplication.acquireUnstableProviderOrThrow(
+                             userId.getContentResolver(mActivity), uri.getAuthority())) {
             Cursor testCursor = userClient.query(uri, /* projection= */ null,
                     /* queryArgs= */null, /* cancellationSignal= */ null);
             if (testCursor != null) {
@@ -339,6 +401,12 @@
         return false;
     }
 
+    private boolean isProfileStatusAction(String action) {
+        if (!SdkLevel.isAtLeastV()) return isManagedProfileAction(action);
+        return Intent.ACTION_PROFILE_AVAILABLE.equals(action)
+                || Intent.ACTION_PROFILE_UNAVAILABLE.equals(action);
+    }
+
     private static boolean isManagedProfileAction(String action) {
         return Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)
                 || Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action);
@@ -445,12 +513,10 @@
             mLocalState.mSelectionId = Integer.toHexString(System.identityHashCode(mRecView));
         }
 
-        mIconHelper = new IconHelper(mActivity, MODE_GRID, mState.supportsCrossProfile());
+        mIconHelper = new IconHelper(mActivity, MODE_GRID, mState.supportsCrossProfile(),
+                mState.configStore);
 
-        mAdapter = new DirectoryAddonsAdapter(
-                mAdapterEnv,
-                new ModelBackedDocumentsAdapter(mAdapterEnv, mIconHelper, mInjector.fileTypeLookup)
-        );
+        mAdapter = getModelBackedDocumentsAdapter();
 
         mRecView.setAdapter(mAdapter);
 
@@ -486,14 +552,14 @@
 
         DragStartListener dragStartListener = mInjector.config.dragAndDropEnabled()
                 ? DragStartListener.create(
-                        mIconHelper,
-                        mModel,
-                        mSelectionMgr,
-                        mSelectionMetadata,
-                        mState,
-                        this::getModelId,
-                        mRecView::findChildViewUnder,
-                        DocumentsApplication.getDragAndDropManager(mActivity))
+                mIconHelper,
+                mModel,
+                mSelectionMgr,
+                mSelectionMetadata,
+                mState,
+                this::getModelId,
+                mRecView::findChildViewUnder,
+                DocumentsApplication.getDragAndDropManager(mActivity))
                 : DragStartListener.STUB;
 
         {
@@ -505,16 +571,16 @@
                     new DocsStableIdProvider(mAdapter),
                     mDetailsLookup,
                     StorageStrategy.createStringStorage())
-                            .withBandOverlay(R.drawable.band_select_overlay)
-                            .withFocusDelegate(mFocusManager)
-                            .withOnDragInitiatedListener(dragStartListener::onDragEvent)
-                            .withOnContextClickListener(this::onContextMenuClick)
-                            .withOnItemActivatedListener(this::onItemActivated)
-                            .withOperationMonitor(mContentLock.getMonitor())
-                            .withSelectionPredicate(selectionPredicate)
-                            .withGestureTooltypes(MotionEvent.TOOL_TYPE_FINGER,
-                                    MotionEvent.TOOL_TYPE_STYLUS)
-                            .build();
+                    .withBandOverlay(R.drawable.band_select_overlay)
+                    .withFocusDelegate(mFocusManager)
+                    .withOnDragInitiatedListener(dragStartListener::onDragEvent)
+                    .withOnContextClickListener(this::onContextMenuClick)
+                    .withOnItemActivatedListener(this::onItemActivated)
+                    .withOperationMonitor(mContentLock.getMonitor())
+                    .withSelectionPredicate(selectionPredicate)
+                    .withGestureTooltypes(MotionEvent.TOOL_TYPE_FINGER,
+                            MotionEvent.TOOL_TYPE_STYLUS)
+                    .build();
             mInjector.updateSharedSelectionTracker(localTracker);
         }
 
@@ -573,6 +639,10 @@
             final IntentFilter filter = new IntentFilter();
             filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNLOCKED);
             filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE);
+            if (SdkLevel.isAtLeastV()) {
+                filter.addAction(Intent.ACTION_PROFILE_AVAILABLE);
+                filter.addAction(Intent.ACTION_PROFILE_UNAVAILABLE);
+            }
             // DocumentsApplication will resend the broadcast locally after roots are updated.
             // Register to a local broadcast manager to avoid this fragment from updating before
             // roots are updated.
@@ -581,6 +651,22 @@
         getContext().registerReceiver(mSdCardBroadcastReceiver, getSdCardStateChangeFilter());
     }
 
+    private DocumentsAdapter getModelBackedDocumentsAdapter() {
+        return mState.configStore.isPrivateSpaceInDocsUIEnabled()
+                ? new DirectoryAddonsAdapter(
+                mAdapterEnv, new ModelBackedDocumentsAdapter(mAdapterEnv, mIconHelper,
+                mInjector.fileTypeLookup, mState.configStore),
+                UserId.CURRENT_USER,
+                mActivity.getSelectedUser(),
+                DocumentsApplication.getUserManagerState(getContext()).getUserIdToLabelMap(),
+                getContext().getSystemService(UserManager.class), mState.configStore)
+                : new DirectoryAddonsAdapter(
+                        mAdapterEnv,
+                        new ModelBackedDocumentsAdapter(mAdapterEnv, mIconHelper,
+                                mInjector.fileTypeLookup, mState.configStore),
+                        mState.configStore);
+    }
+
     @Override
     public void onStart() {
         super.onStart();
@@ -737,7 +823,7 @@
     /**
      * Updates the layout after the view mode switches.
      *
-     * @param mode The new view mode.
+     * @param scale The new view mode.
      */
     private void scaleLayout(float scale) {
         assert DEBUG;
@@ -1330,7 +1416,6 @@
                     mRefreshLayout.setRefreshing(false);
                     if (rootDoc != null && mActivity.getCurrentDirectory() == null) {
                         // Make sure the stack does not change during task was running.
-                        Log.d(TAG, "Root doc is retrieved. Pushing to the stack");
                         mState.stack.push(rootDoc);
                         mActivity.updateNavigator();
                         mActions.loadDocumentsForCurrentStack();
diff --git a/src/com/android/documentsui/dirlist/DocumentHolder.java b/src/com/android/documentsui/dirlist/DocumentHolder.java
index 5e38b48..b664bbc 100644
--- a/src/com/android/documentsui/dirlist/DocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/DocumentHolder.java
@@ -36,9 +36,13 @@
 import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 import androidx.recyclerview.widget.RecyclerView;
 
+import com.android.documentsui.ConfigStore;
+import com.android.documentsui.DocumentsApplication;
 import com.android.documentsui.R;
+import com.android.documentsui.UserManagerState;
 import com.android.documentsui.base.Shared;
 import com.android.documentsui.base.State;
+import com.android.documentsui.base.UserId;
 import com.android.modules.utils.build.SdkLevel;
 
 import java.util.function.Function;
@@ -58,30 +62,29 @@
     protected @Nullable String mModelId;
 
     protected @State.ActionType int mAction;
+    protected final ConfigStore mConfigStore;
 
     // See #addKeyEventListener for details on the need for this field.
     private KeyboardEventListener<DocumentItemDetails> mKeyEventListener;
 
     private final DocumentItemDetails mDetails;
 
-    public DocumentHolder(Context context, ViewGroup parent, int layout) {
-        this(context, inflateLayout(context, parent, layout));
+    public DocumentHolder(Context context, ViewGroup parent, int layout, ConfigStore configStore) {
+        this(context, inflateLayout(context, parent, layout), configStore);
     }
 
-    public DocumentHolder(Context context, View item) {
+    public DocumentHolder(Context context, View item, ConfigStore configStore) {
         super(item);
 
         itemView.setOnKeyListener(this);
 
         mContext = context;
         mDetails = new DocumentItemDetails(this);
+        mConfigStore = configStore;
     }
 
     /**
      * Binds the view to the given item data.
-     * @param cursor
-     * @param modelId
-     * @param state
      */
     public abstract void bind(Cursor cursor, String modelId);
 
@@ -95,10 +98,10 @@
      * TODO: Use the DirectoryItemAnimator instead of manually controlling animation using a boolean
      * flag.
      *
-     * @param selected
      * @param animate Whether or not to animate the change. Only selection changes initiated by the
-     *            selection manager should be animated. See
-     *            {@link ModelBackedDocumentsAdapter#onBindViewHolder(DocumentHolder, int, java.util.List)}
+     *                selection manager should be animated. See
+     *                {@link ModelBackedDocumentsAdapter#onBindViewHolder(DocumentHolder, int,
+     *                java.util.List)}
      */
     public void setSelected(boolean selected, boolean animate) {
         itemView.setActivated(selected);
@@ -113,13 +116,31 @@
         mAction = action;
     }
 
-    public void bindPreviewIcon(boolean show, Function<View, Boolean> clickCallback) {}
+    /**
+     * @param show          boolean denoting whether the current profile is non-personal
+     * @param clickCallback call back function
+     */
+    public void bindPreviewIcon(boolean show, Function<View, Boolean> clickCallback) {
+    }
 
-    public void bindBriefcaseIcon(boolean show) {}
+    /**
+     * @param show boolean denoting whether the current profile is managed
+     */
+    public void bindBriefcaseIcon(boolean show) {
+    }
+
+    /**
+     * Binds profile badge icon to the documents thumbnail
+     *
+     * @param show             boolean denoting whether the current profile is non-personal/parent
+     * @param userIdIdentifier user id of the profile the document belongs to
+     */
+    public void bindProfileIcon(boolean show, int userIdIdentifier) {
+    }
 
     @Override
     public boolean onKey(View v, int keyCode, KeyEvent event) {
-        assert(mKeyEventListener != null);
+        assert (mKeyEventListener != null);
         DocumentItemDetails details = getItemDetails();
         return (details == null)
                 ? false
@@ -135,7 +156,7 @@
      * <p>Ideally we'd not involve DocumentHolder in propagation of events like this.
      */
     public void addKeyEventListener(KeyboardEventListener<DocumentItemDetails> listener) {
-        assert(mKeyEventListener == null);
+        assert (mKeyEventListener == null);
         mKeyEventListener = listener;
     }
 
@@ -179,12 +200,22 @@
         return view.animate().setDuration(Shared.CHECK_ANIMATION_DURATION).alpha(alpha);
     }
 
-    protected String getPreviewIconContentDescription(boolean isWorkProfile, String fileName) {
+    protected String getPreviewIconContentDescription(boolean isNonPersonalProfile,
+            String fileName, UserId userId) {
+        if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+            UserManagerState userManagerState = DocumentsApplication.getUserManagerState(mContext);
+            String profileLabel = userManagerState.getUserIdToLabelMap().get(userId);
+            return isNonPersonalProfile
+                    ? itemView.getResources().getString(R.string.preview_cross_profile_file,
+                    profileLabel, fileName)
+                    : itemView.getResources().getString(R.string.preview_file, fileName);
+        }
         if (SdkLevel.isAtLeastT()) {
-            return getUpdatablePreviewIconContentDescription(isWorkProfile, fileName);
+            return getUpdatablePreviewIconContentDescription(isNonPersonalProfile, fileName);
         } else {
             return itemView.getResources().getString(
-                    isWorkProfile ? R.string.preview_work_file : R.string.preview_file, fileName);
+                    isNonPersonalProfile ? R.string.preview_work_file : R.string.preview_file,
+                    fileName);
         }
     }
 
diff --git a/src/com/android/documentsui/dirlist/GridDirectoryHolder.java b/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
index 744b0c9..caa3ec2 100644
--- a/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
+++ b/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
@@ -35,33 +35,37 @@
 
 import androidx.annotation.RequiresApi;
 
+import com.android.documentsui.ConfigStore;
+import com.android.documentsui.DocumentsApplication;
 import com.android.documentsui.IconUtils;
 import com.android.documentsui.R;
 import com.android.documentsui.base.State;
+import com.android.documentsui.base.UserId;
 import com.android.documentsui.ui.Views;
 import com.android.modules.utils.build.SdkLevel;
 
-final class GridDirectoryHolder extends DocumentHolder {
+import java.util.Map;
 
+final class GridDirectoryHolder extends DocumentHolder {
     final TextView mTitle;
 
     private final ImageView mIconCheck;
     private final ImageView mIconMime;
-    private final ImageView mIconBriefcase;
+    private final ImageView mIconBadge;
     private final View mIconLayout;
 
-    public GridDirectoryHolder(Context context, ViewGroup parent) {
-        super(context, parent, R.layout.item_dir_grid);
+    GridDirectoryHolder(Context context, ViewGroup parent, ConfigStore configStore) {
+        super(context, parent, R.layout.item_dir_grid, configStore);
 
         mIconLayout = itemView.findViewById(R.id.icon);
         mTitle = (TextView) itemView.findViewById(android.R.id.title);
         mIconMime = (ImageView) itemView.findViewById(R.id.icon_mime_sm);
         mIconCheck = (ImageView) itemView.findViewById(R.id.icon_check);
-        mIconBriefcase = (ImageView) itemView.findViewById(R.id.icon_briefcase);
+        mIconBadge = (ImageView) itemView.findViewById(R.id.icon_profile_badge);
         mIconMime.setImageDrawable(
                 IconUtils.loadMimeIcon(context, DocumentsContract.Document.MIME_TYPE_DIR));
 
-        if (SdkLevel.isAtLeastT()) {
+        if (SdkLevel.isAtLeastT() && !mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
             setUpdatableWorkProfileIcon(context);
         }
     }
@@ -71,7 +75,7 @@
         DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
         Drawable drawable = dpm.getResources().getDrawable(WORK_PROFILE_ICON, SOLID_COLORED, () ->
                 context.getDrawable(R.drawable.ic_briefcase));
-        mIconBriefcase.setImageDrawable(drawable);
+        mIconBadge.setImageDrawable(drawable);
     }
 
     @Override
@@ -90,7 +94,16 @@
 
     @Override
     public void bindBriefcaseIcon(boolean show) {
-        mIconBriefcase.setVisibility(show ? View.VISIBLE : View.GONE);
+        mIconBadge.setVisibility(show ? View.VISIBLE : View.GONE);
+    }
+
+    @Override
+    public void bindProfileIcon(boolean show, int userIdIdentifier) {
+        Map<UserId, Drawable> userIdToBadgeMap = DocumentsApplication.getUserManagerState(
+                mContext).getUserIdToBadgeMap();
+        Drawable drawable = userIdToBadgeMap.get(UserId.of(userIdIdentifier));
+        mIconBadge.setImageDrawable(drawable);
+        mIconBadge.setVisibility(show ? View.VISIBLE : View.GONE);
     }
 
     @Override
@@ -107,12 +120,13 @@
 
     /**
      * Bind this view to the given document for display.
-     * @param cursor Pointing to the item to be bound.
+     *
+     * @param cursor  Pointing to the item to be bound.
      * @param modelId The model ID of the item.
      */
     @Override
     public void bind(Cursor cursor, String modelId) {
-        assert(cursor != null);
+        assert (cursor != null);
 
         this.mModelId = modelId;
 
diff --git a/src/com/android/documentsui/dirlist/GridDocumentHolder.java b/src/com/android/documentsui/dirlist/GridDocumentHolder.java
index 2da5382..981e659 100644
--- a/src/com/android/documentsui/dirlist/GridDocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/GridDocumentHolder.java
@@ -37,6 +37,8 @@
 
 import androidx.annotation.RequiresApi;
 
+import com.android.documentsui.ConfigStore;
+import com.android.documentsui.DocumentsApplication;
 import com.android.documentsui.R;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.Shared;
@@ -45,6 +47,7 @@
 import com.android.documentsui.ui.Views;
 import com.android.modules.utils.build.SdkLevel;
 
+import java.util.Map;
 import java.util.function.Function;
 
 final class GridDocumentHolder extends DocumentHolder {
@@ -56,7 +59,7 @@
     final ImageView mIconMimeSm;
     final ImageView mIconThumb;
     final ImageView mIconCheck;
-    final ImageView mIconBriefcase;
+    final ImageView mIconBadge;
     final IconHelper mIconHelper;
     final View mIconLayout;
     final View mPreviewIcon;
@@ -64,8 +67,9 @@
     // This is used in as a convenience in our bind method.
     private final DocumentInfo mDoc = new DocumentInfo();
 
-    public GridDocumentHolder(Context context, ViewGroup parent, IconHelper iconHelper) {
-        super(context, parent, R.layout.item_doc_grid);
+    GridDocumentHolder(Context context, ViewGroup parent, IconHelper iconHelper,
+            ConfigStore configStore) {
+        super(context, parent, R.layout.item_doc_grid, configStore);
 
         mIconLayout = itemView.findViewById(R.id.icon);
         mTitle = (TextView) itemView.findViewById(android.R.id.title);
@@ -75,12 +79,12 @@
         mIconMimeSm = (ImageView) itemView.findViewById(R.id.icon_mime_sm);
         mIconThumb = (ImageView) itemView.findViewById(R.id.icon_thumb);
         mIconCheck = (ImageView) itemView.findViewById(R.id.icon_check);
-        mIconBriefcase = (ImageView) itemView.findViewById(R.id.icon_briefcase);
+        mIconBadge = (ImageView) itemView.findViewById(R.id.icon_profile_badge);
         mPreviewIcon = itemView.findViewById(R.id.preview_icon);
 
         mIconHelper = iconHelper;
 
-        if (SdkLevel.isAtLeastT()) {
+        if (SdkLevel.isAtLeastT() && !mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
             setUpdatableWorkProfileIcon(context);
         }
     }
@@ -90,7 +94,7 @@
         DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
         Drawable drawable = dpm.getResources().getDrawable(WORK_PROFILE_ICON, SOLID_COLORED, () ->
                 context.getDrawable(R.drawable.ic_briefcase));
-        mIconBriefcase.setImageDrawable(drawable);
+        mIconBadge.setImageDrawable(drawable);
     }
 
     @Override
@@ -108,7 +112,7 @@
 
         // But it should be an error to be set to selected && be disabled.
         if (!itemView.isEnabled()) {
-            assert(!selected);
+            assert (!selected);
         }
 
         super.setSelected(selected, animate);
@@ -138,19 +142,28 @@
             mPreviewIcon.setContentDescription(
                     getPreviewIconContentDescription(
                             mIconHelper.shouldShowBadge(mDoc.userId.getIdentifier()),
-                            mDoc.displayName));
+                            mDoc.displayName, mDoc.userId));
             mPreviewIcon.setAccessibilityDelegate(new PreviewAccessibilityDelegate(clickCallback));
         }
     }
 
     @Override
     public void bindBriefcaseIcon(boolean show) {
-        mIconBriefcase.setVisibility(show ? View.VISIBLE : View.GONE);
+        mIconBadge.setVisibility(show ? View.VISIBLE : View.GONE);
+    }
+
+    @Override
+    public void bindProfileIcon(boolean show, int userIdIdentifier) {
+        Map<UserId, Drawable> userIdToBadgeMap = DocumentsApplication.getUserManagerState(
+                mContext).getUserIdToBadgeMap();
+        Drawable drawable = userIdToBadgeMap.get(UserId.of(userIdIdentifier));
+        mIconBadge.setImageDrawable(drawable);
+        mIconBadge.setVisibility(show ? View.VISIBLE : View.GONE);
     }
 
     @Override
     public boolean inDragRegion(MotionEvent event) {
-     // Entire grid box should be draggable
+        // Entire grid box should be draggable
         return true;
     }
 
@@ -166,12 +179,13 @@
 
     /**
      * Bind this view to the given document for display.
-     * @param cursor Pointing to the item to be bound.
+     *
+     * @param cursor  Pointing to the item to be bound.
      * @param modelId The model ID of the item.
      */
     @Override
     public void bind(Cursor cursor, String modelId) {
-        assert(cursor != null);
+        assert (cursor != null);
 
         mModelId = modelId;
 
diff --git a/src/com/android/documentsui/dirlist/GridPhotoHolder.java b/src/com/android/documentsui/dirlist/GridPhotoHolder.java
index 0618506..8fab852 100644
--- a/src/com/android/documentsui/dirlist/GridPhotoHolder.java
+++ b/src/com/android/documentsui/dirlist/GridPhotoHolder.java
@@ -36,6 +36,8 @@
 
 import androidx.annotation.RequiresApi;
 
+import com.android.documentsui.ConfigStore;
+import com.android.documentsui.DocumentsApplication;
 import com.android.documentsui.R;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.Shared;
@@ -44,6 +46,7 @@
 import com.android.documentsui.ui.Views;
 import com.android.modules.utils.build.SdkLevel;
 
+import java.util.Map;
 import java.util.function.Function;
 
 final class GridPhotoHolder extends DocumentHolder {
@@ -53,23 +56,24 @@
     private final ImageView mIconCheck;
     private final IconHelper mIconHelper;
     private final View mPreviewIcon;
-    private final View mIconBriefcase;
+    private final View mIconBadge;
 
     // This is used in as a convenience in our bind method.
     private final DocumentInfo mDoc = new DocumentInfo();
 
-    public GridPhotoHolder(Context context, ViewGroup parent, IconHelper iconHelper) {
-        super(context, parent, R.layout.item_photo_grid);
+    GridPhotoHolder(Context context, ViewGroup parent, IconHelper iconHelper,
+            ConfigStore configStore) {
+        super(context, parent, R.layout.item_photo_grid, configStore);
 
         mIconMimeLg = (ImageView) itemView.findViewById(R.id.icon_mime_lg);
         mIconThumb = (ImageView) itemView.findViewById(R.id.icon_thumb);
         mIconCheck = (ImageView) itemView.findViewById(R.id.icon_check);
-        mIconBriefcase = itemView.findViewById(R.id.icon_briefcase);
+        mIconBadge = itemView.findViewById(R.id.icon_profile_badge);
         mPreviewIcon = itemView.findViewById(R.id.preview_icon);
 
         mIconHelper = iconHelper;
 
-        if (SdkLevel.isAtLeastT()) {
+        if (SdkLevel.isAtLeastT() && !mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
             setUpdatableWorkProfileIcon(context);
         }
     }
@@ -80,7 +84,7 @@
         Drawable drawable = dpm.getResources().getDrawable(
                 WORK_PROFILE_ICON, SOLID_NOT_COLORED, () ->
                         context.getDrawable(R.drawable.ic_briefcase));
-        ImageView icon = (ImageView) mIconBriefcase.findViewById(R.id.icon_id);
+        ImageView icon = (ImageView) mIconBadge.findViewById(R.id.icon_id);
 
         icon.setImageDrawable(drawable);
     }
@@ -123,14 +127,24 @@
             mPreviewIcon.setContentDescription(
                     getPreviewIconContentDescription(
                             mIconHelper.shouldShowBadge(mDoc.userId.getIdentifier()),
-                            mDoc.displayName));
+                            mDoc.displayName, mDoc.userId));
             mPreviewIcon.setAccessibilityDelegate(new PreviewAccessibilityDelegate(clickCallback));
         }
     }
 
     @Override
     public void bindBriefcaseIcon(boolean show) {
-        mIconBriefcase.setVisibility(show ? View.VISIBLE : View.GONE);
+        mIconBadge.setVisibility(show ? View.VISIBLE : View.GONE);
+    }
+
+    @Override
+    public void bindProfileIcon(boolean show, int userIdIdentifier) {
+        Map<UserId, Drawable> userIdToBadgeMap = DocumentsApplication.getUserManagerState(
+                mContext).getUserIdToBadgeMap();
+        Drawable drawable = userIdToBadgeMap.get(UserId.of(userIdIdentifier));
+        ImageView icon = mIconBadge.findViewById(R.id.icon_id);
+        icon.setImageDrawable(drawable);
+        mIconBadge.setVisibility(show ? View.VISIBLE : View.GONE);
     }
 
     @Override
@@ -152,7 +166,8 @@
 
     /**
      * Bind this view to the given document for display.
-     * @param cursor Pointing to the item to be bound.
+     *
+     * @param cursor  Pointing to the item to be bound.
      * @param modelId The model ID of the item.
      */
     @Override
diff --git a/src/com/android/documentsui/dirlist/HeaderMessageDocumentHolder.java b/src/com/android/documentsui/dirlist/HeaderMessageDocumentHolder.java
index bb98894..aa41708 100644
--- a/src/com/android/documentsui/dirlist/HeaderMessageDocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/HeaderMessageDocumentHolder.java
@@ -26,6 +26,7 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.android.documentsui.ConfigStore;
 import com.android.documentsui.R;
 import com.android.documentsui.base.State.ViewMode;
 
@@ -45,8 +46,8 @@
     private final Button mActionButton;
     private Message mMessage;
 
-    public HeaderMessageDocumentHolder(Context context, ViewGroup parent) {
-        super(context, parent, R.layout.item_doc_header_message);
+    HeaderMessageDocumentHolder(Context context, ViewGroup parent, ConfigStore configStore) {
+        super(context, parent, R.layout.item_doc_header_message, configStore);
 
         mRoot = itemView.findViewById(R.id.item_root);
         mIcon = (ImageView) itemView.findViewById(R.id.message_icon);
diff --git a/src/com/android/documentsui/dirlist/IconHelper.java b/src/com/android/documentsui/dirlist/IconHelper.java
index e2c9905..be86880 100644
--- a/src/com/android/documentsui/dirlist/IconHelper.java
+++ b/src/com/android/documentsui/dirlist/IconHelper.java
@@ -20,6 +20,7 @@
 import static com.android.documentsui.base.State.MODE_GRID;
 import static com.android.documentsui.base.State.MODE_LIST;
 
+import android.app.ActivityManager;
 import android.content.Context;
 import android.graphics.Bitmap;
 import android.graphics.Point;
@@ -34,6 +35,7 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 
+import com.android.documentsui.ConfigStore;
 import com.android.documentsui.DocumentsApplication;
 import com.android.documentsui.IconUtils;
 import com.android.documentsui.ProviderExecutor;
@@ -41,6 +43,7 @@
 import com.android.documentsui.ThumbnailCache;
 import com.android.documentsui.ThumbnailCache.Result;
 import com.android.documentsui.ThumbnailLoader;
+import com.android.documentsui.UserManagerState;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.MimeTypes;
 import com.android.documentsui.base.State;
@@ -66,31 +69,37 @@
     private final boolean mMaybeShowBadge;
     @Nullable
     private final UserId mManagedUser;
+    private final UserManagerState mUserManagerState;
+    private final ConfigStore mConfigStore;
 
     /**
-     * @param context
      * @param mode MODE_GRID or MODE_LIST
      */
-    public IconHelper(Context context, int mode, boolean maybeShowBadge) {
+    public IconHelper(Context context, int mode, boolean maybeShowBadge, ConfigStore configStore) {
         this(context, mode, maybeShowBadge, DocumentsApplication.getThumbnailCache(context),
-                DocumentsApplication.getUserIdManager(context).getManagedUser());
+                configStore.isPrivateSpaceInDocsUIEnabled() ? null
+                        : DocumentsApplication.getUserIdManager(context).getManagedUser(),
+                configStore.isPrivateSpaceInDocsUIEnabled()
+                        ? DocumentsApplication.getUserManagerState(context) : null,
+                configStore);
     }
 
     @VisibleForTesting
     IconHelper(Context context, int mode, boolean maybeShowBadge, ThumbnailCache thumbnailCache,
-            @Nullable UserId managedUser) {
+            @Nullable UserId managedUser, @Nullable UserManagerState userManagerState,
+            ConfigStore configStore) {
         mContext = context;
         setViewMode(mode);
         mThumbnailCache = thumbnailCache;
         mManagedUser = managedUser;
         mMaybeShowBadge = maybeShowBadge;
+        mUserManagerState = userManagerState;
+        mConfigStore = configStore;
     }
 
     /**
      * Enables or disables thumbnails. When thumbnails are disabled, mime icons (or custom icons, if
      * specified by the document) are used instead.
-     *
-     * @param enabled
      */
     public void setThumbnailsEnabled(boolean enabled) {
         mThumbnailsEnabled = enabled;
@@ -99,7 +108,7 @@
     /**
      * Sets the current display mode. This affects the thumbnail sizes that are loaded.
      *
-     * @param mode See {@link State.MODE_LIST} and {@link State.MODE_GRID}.
+     * @param mode See {@link State#MODE_LIST} and {@link State#MODE_GRID}.
      */
     public void setViewMode(@ViewMode int mode) {
         mMode = mode;
@@ -125,8 +134,6 @@
 
     /**
      * Cancels any ongoing load operations associated with the given ImageView.
-     *
-     * @param icon
      */
     public void stopLoading(ImageView icon) {
         final ThumbnailLoader oldTask = (ThumbnailLoader) icon.getTag();
@@ -139,11 +146,10 @@
     /**
      * Load thumbnails for a directory list item.
      *
-     * @param doc The document
-     * @param iconThumb The itemview's thumbnail icon.
-     * @param iconMime The itemview's mime icon. Hidden when iconThumb is shown.
+     * @param doc         The document
+     * @param iconThumb   The itemview's thumbnail icon.
+     * @param iconMime    The itemview's mime icon. Hidden when iconThumb is shown.
      * @param subIconMime The second itemview's mime icon. Always visible.
-     * @return
      */
     public void load(
             DocumentInfo doc,
@@ -157,15 +163,14 @@
     /**
      * Load thumbnails for a directory list item.
      *
-     * @param uri The URI for the file being represented.
-     * @param mimeType The mime type of the file being represented.
-     * @param docFlags Flags for the file being represented.
-     * @param docIcon Custom icon (if any) for the file being requested.
+     * @param uri             The URI for the file being represented.
+     * @param mimeType        The mime type of the file being represented.
+     * @param docFlags        Flags for the file being represented.
+     * @param docIcon         Custom icon (if any) for the file being requested.
      * @param docLastModified the last modified value of the file being requested.
-     * @param iconThumb The itemview's thumbnail icon.
-     * @param iconMime The itemview's mime icon. Hidden when iconThumb is shown.
-     * @param subIconMime The second itemview's mime icon. Always visible.
-     * @return
+     * @param iconThumb       The itemview's thumbnail icon.
+     * @param iconMime        The itemview's mime icon. Hidden when iconThumb is shown.
+     * @param subIconMime     The second itemview's mime icon. Always visible.
      */
     public void load(Uri uri, UserId userId, String mimeType, int docFlags, int docIcon,
             long docLastModified, ImageView iconThumb, ImageView iconMime,
@@ -180,7 +185,7 @@
         final boolean showThumbnail = supportsThumbnail && allowThumbnail && mThumbnailsEnabled;
         if (showThumbnail) {
             loadedThumbnail =
-                loadThumbnail(uri, userId, docAuthority, docLastModified, iconThumb, iconMime);
+                    loadThumbnail(uri, userId, docAuthority, docLastModified, iconThumb, iconMime);
         }
 
         final Drawable mimeIcon = getDocumentIcon(mContext, userId, docAuthority,
@@ -207,9 +212,11 @@
             iconThumb.setImageBitmap(cachedThumbnail);
 
             boolean stale = (docLastModified > result.getLastModified());
-            if (VERBOSE) Log.v(TAG,
-                    String.format("Load thumbnail for %s, got result %d and stale %b.",
-                            uri.toString(), result.getStatus(), stale));
+            if (VERBOSE) {
+                Log.v(TAG,
+                        String.format("Load thumbnail for %s, got result %d and stale %b.",
+                                uri.toString(), result.getStatus(), stale));
+            }
             if (!result.isExactHit() || stale) {
                 final BiConsumer<View, View> animator =
                         (cachedThumbnail == null ? ThumbnailLoader.ANIM_FADE_IN :
@@ -264,6 +271,11 @@
      * Returns true if we should show a briefcase icon for the given user.
      */
     public boolean shouldShowBadge(int userIdIdentifier) {
+        if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+            return mMaybeShowBadge
+                    && mUserManagerState.getUserIds().size() > 1
+                    && ActivityManager.getCurrentUser() != userIdIdentifier;
+        }
         return mMaybeShowBadge && mManagedUser != null
                 && mManagedUser.getIdentifier() == userIdIdentifier;
     }
diff --git a/src/com/android/documentsui/dirlist/InflateMessageDocumentHolder.java b/src/com/android/documentsui/dirlist/InflateMessageDocumentHolder.java
index 2e2b921..1fbb32b 100644
--- a/src/com/android/documentsui/dirlist/InflateMessageDocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/InflateMessageDocumentHolder.java
@@ -25,6 +25,7 @@
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
+import com.android.documentsui.ConfigStore;
 import com.android.documentsui.R;
 import com.android.documentsui.util.VersionUtils;
 
@@ -52,8 +53,8 @@
     private View mCrossProfileContent;
     private ProgressBar mCrossProfileProgress;
 
-    public InflateMessageDocumentHolder(Context context, ViewGroup parent) {
-        super(context, parent, R.layout.item_doc_inflated_message);
+    InflateMessageDocumentHolder(Context context, ViewGroup parent, ConfigStore configStore) {
+        super(context, parent, R.layout.item_doc_inflated_message, configStore);
         mContentView = itemView.findViewById(R.id.content);
         mCrossProfileView = itemView.findViewById(R.id.cross_profile);
         mCrossProfileContent = mCrossProfileView.findViewById(R.id.cross_profile_content);
diff --git a/src/com/android/documentsui/dirlist/ListDocumentHolder.java b/src/com/android/documentsui/dirlist/ListDocumentHolder.java
index 96c49e0..e287b76 100644
--- a/src/com/android/documentsui/dirlist/ListDocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/ListDocumentHolder.java
@@ -40,6 +40,8 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
 
+import com.android.documentsui.ConfigStore;
+import com.android.documentsui.DocumentsApplication;
 import com.android.documentsui.R;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.Lookup;
@@ -51,6 +53,7 @@
 import com.android.modules.utils.build.SdkLevel;
 
 import java.util.ArrayList;
+import java.util.Map;
 import java.util.function.Function;
 
 final class ListDocumentHolder extends DocumentHolder {
@@ -67,7 +70,7 @@
     private final ImageView mIconMime;
     private final ImageView mIconThumb;
     private final ImageView mIconCheck;
-    private final ImageView mIconBriefcase;
+    private final ImageView mIconBadge;
     private final View mIconLayout;
     final View mPreviewIcon;
 
@@ -77,14 +80,14 @@
     private final DocumentInfo mDoc;
 
     public ListDocumentHolder(Context context, ViewGroup parent, IconHelper iconHelper,
-            Lookup<String, String> fileTypeLookup) {
-        super(context, parent, R.layout.item_doc_list);
+            Lookup<String, String> fileTypeLookup, ConfigStore configStore) {
+        super(context, parent, R.layout.item_doc_list, configStore);
 
         mIconLayout = itemView.findViewById(R.id.icon);
         mIconMime = (ImageView) itemView.findViewById(R.id.icon_mime);
         mIconThumb = (ImageView) itemView.findViewById(R.id.icon_thumb);
         mIconCheck = (ImageView) itemView.findViewById(R.id.icon_check);
-        mIconBriefcase = (ImageView) itemView.findViewById(R.id.icon_briefcase);
+        mIconBadge = (ImageView) itemView.findViewById(R.id.icon_profile_badge);
         mTitle = (TextView) itemView.findViewById(android.R.id.title);
         mSize = (TextView) itemView.findViewById(R.id.size);
         mDate = (TextView) itemView.findViewById(R.id.date);
@@ -98,7 +101,7 @@
         mFileTypeLookup = fileTypeLookup;
         mDoc = new DocumentInfo();
 
-        if (SdkLevel.isAtLeastT()) {
+        if (SdkLevel.isAtLeastT() && !mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
             setUpdatableWorkProfileIcon(context);
         }
     }
@@ -108,7 +111,7 @@
         DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
         Drawable drawable = dpm.getResources().getDrawable(WORK_PROFILE_ICON, SOLID_COLORED, () ->
                 context.getDrawable(R.drawable.ic_briefcase));
-        mIconBriefcase.setImageDrawable(drawable);
+        mIconBadge.setImageDrawable(drawable);
     }
 
     @Override
@@ -158,7 +161,7 @@
                 mPreviewIcon.setContentDescription(
                         getPreviewIconContentDescription(
                                 mIconHelper.shouldShowBadge(mDoc.userId.getIdentifier()),
-                                mDoc.displayName));
+                                mDoc.displayName, mDoc.userId));
                 mPreviewIcon.setAccessibilityDelegate(
                         new PreviewAccessibilityDelegate(clickCallback));
             }
@@ -167,7 +170,16 @@
 
     @Override
     public void bindBriefcaseIcon(boolean show) {
-        mIconBriefcase.setVisibility(show ? View.VISIBLE : View.GONE);
+        mIconBadge.setVisibility(show ? View.VISIBLE : View.GONE);
+    }
+
+    @Override
+    public void bindProfileIcon(boolean show, int userIdIdentifier) {
+        Map<UserId, Drawable> userIdToBadgeMap = DocumentsApplication.getUserManagerState(
+                mContext).getUserIdToBadgeMap();
+        Drawable drawable = userIdToBadgeMap.get(UserId.of(userIdIdentifier));
+        mIconBadge.setImageDrawable(drawable);
+        mIconBadge.setVisibility(show ? View.VISIBLE : View.GONE);
     }
 
     @Override
@@ -209,7 +221,7 @@
     /**
      * Bind this view to the given document for display.
      *
-     * @param cursor Pointing to the item to be bound.
+     * @param cursor  Pointing to the item to be bound.
      * @param modelId The model ID of the item.
      */
     @Override
diff --git a/src/com/android/documentsui/dirlist/Message.java b/src/com/android/documentsui/dirlist/Message.java
index ccdad46..d4c7e7e 100644
--- a/src/com/android/documentsui/dirlist/Message.java
+++ b/src/com/android/documentsui/dirlist/Message.java
@@ -35,12 +35,18 @@
 import android.app.AuthenticationRequiredException;
 import android.app.admin.DevicePolicyManager;
 import android.content.pm.PackageManager;
+import android.content.pm.UserProperties;
+import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.Log;
 
 import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
 
+import com.android.documentsui.ConfigStore;
 import com.android.documentsui.CrossProfileException;
 import com.android.documentsui.CrossProfileNoPermissionException;
 import com.android.documentsui.CrossProfileQuietModeException;
@@ -54,11 +60,17 @@
 import com.android.documentsui.dirlist.DocumentsAdapter.Environment;
 import com.android.modules.utils.build.SdkLevel;
 
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
 /**
  * Data object used by {@link InflateMessageDocumentHolder} and {@link HeaderMessageDocumentHolder}.
  */
 
 abstract class Message {
+    private static final int ACCESS_CROSS_PROFILE_FILES = -1;
+
     protected final Environment mEnv;
     // If the message has a button, this will be the default button call back.
     protected final Runnable mDefaultCallback;
@@ -72,13 +84,15 @@
     private boolean mShouldShow = false;
     protected boolean mShouldKeep = false;
     protected int mLayout;
+    protected ConfigStore mConfigStore;
 
-    Message(Environment env, Runnable defaultCallback) {
+    Message(Environment env, Runnable defaultCallback, ConfigStore configStore) {
         mEnv = env;
         mDefaultCallback = defaultCallback;
+        mConfigStore = configStore;
     }
 
-    abstract void update(Update Event);
+    abstract void update(Update event);
 
     protected void update(@Nullable CharSequence messageTitle, CharSequence messageString,
             @Nullable CharSequence buttonString, Drawable icon) {
@@ -121,6 +135,7 @@
 
     /**
      * Return this message should keep showing or not.
+     *
      * @return true if this message should keep showing.
      */
     boolean shouldKeep() {
@@ -143,8 +158,8 @@
 
         private static final String TAG = "HeaderMessage";
 
-        HeaderMessage(Environment env, Runnable callback) {
-            super(env, callback);
+        HeaderMessage(Environment env, Runnable callback, ConfigStore configStore) {
+            super(env, callback, configStore);
         }
 
         @Override
@@ -173,7 +188,7 @@
         }
 
         private void updateToAuthenticationExceptionHeader(Update event) {
-            assert(mEnv.getFeatures().isRemoteActionsEnabled());
+            assert (mEnv.getFeatures().isRemoteActionsEnabled());
 
             RootInfo root = mEnv.getDisplayState().stack.getRoot();
             String appName = DocumentsApplication.getProvidersCache(
@@ -199,15 +214,52 @@
 
     final static class InflateMessage extends Message {
 
+        private static final String TAG = "InflateMessage";
+        private UserId mSourceUserId = null;
+        private UserId mSelectedUserId = null;
+        private Map<UserId, String> mUserIdToLabelMap = new HashMap<>();
         private final boolean mCanModifyQuietMode;
+        private UserManager mUserManager = null;
 
-        InflateMessage(Environment env, Runnable callback) {
-            super(env, callback);
+        InflateMessage(Environment env, Runnable callback, ConfigStore configStore) {
+            super(env, callback, configStore);
             mCanModifyQuietMode =
                     mEnv.getContext().checkSelfPermission(Manifest.permission.MODIFY_QUIET_MODE)
                             == PackageManager.PERMISSION_GRANTED;
         }
 
+        InflateMessage(Environment env, Runnable callback, UserId sourceUserId,
+                UserId selectedUserId, Map<UserId, String> userIdToLabelMap,
+                UserManager userManager, ConfigStore configStore) {
+            super(env, callback, configStore);
+            mSourceUserId = sourceUserId;
+            mSelectedUserId = selectedUserId;
+            mUserIdToLabelMap = userIdToLabelMap;
+            mUserManager = userManager != null ? userManager
+                    : mEnv.getContext().getSystemService(UserManager.class);
+            mCanModifyQuietMode = setCanModifyQuietMode();
+        }
+
+        private boolean setCanModifyQuietMode() {
+            if (SdkLevel.isAtLeastV() && mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+                if (mUserManager == null) {
+                    Log.e(TAG, "can not obtain user manager class");
+                    return false;
+                }
+
+                UserProperties userProperties = mUserManager.getUserProperties(
+                        UserHandle.of(mSelectedUserId.getIdentifier()));
+                return userProperties.getShowInQuietMode()
+                        == UserProperties.SHOW_IN_QUIET_MODE_PAUSED
+                        && mEnv.getContext().checkSelfPermission(
+                        Manifest.permission.MODIFY_QUIET_MODE)
+                        == PackageManager.PERMISSION_GRANTED;
+            } else {
+                return mEnv.getContext().checkSelfPermission(Manifest.permission.MODIFY_QUIET_MODE)
+                        == PackageManager.PERMISSION_GRANTED;
+            }
+        }
+
         @Override
         void update(Update event) {
             reset();
@@ -233,16 +285,29 @@
 
         private void updateToQuietModeErrorMessage(UserId userId) {
             mLayout = InflateMessageDocumentHolder.LAYOUT_CROSS_PROFILE_ERROR;
-            CharSequence buttonText = null;
+            String buttonText = null;
+            Resources res = null;
+            String selectedProfile = null;
+            if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+                res = mEnv.getContext().getResources();
+                assert mUserIdToLabelMap != null;
+                selectedProfile = mUserIdToLabelMap.get(userId);
+            }
             if (mCanModifyQuietMode) {
-                buttonText = getEnterpriseString(
-                        WORK_PROFILE_OFF_ENABLE_BUTTON, R.string.quiet_mode_button);
+                buttonText = mConfigStore.isPrivateSpaceInDocsUIEnabled()
+                        ? res.getString(R.string.profile_quiet_mode_button,
+                        selectedProfile.toLowerCase(Locale.getDefault()))
+                        : getEnterpriseString(
+                                WORK_PROFILE_OFF_ENABLE_BUTTON, R.string.quiet_mode_button);
                 mCallback = () -> mEnv.getActionHandler().requestQuietModeDisabled(
                         mEnv.getDisplayState().stack.getRoot(), userId);
             }
-            update(
-                    getEnterpriseString(
-                            WORK_PROFILE_OFF_ERROR_TITLE, R.string.quiet_mode_error_title),
+
+            update(mConfigStore.isPrivateSpaceInDocsUIEnabled()
+                            ? res.getString(R.string.profile_quiet_mode_error_title,
+                            selectedProfile)
+                            : getEnterpriseString(
+                                    WORK_PROFILE_OFF_ERROR_TITLE, R.string.quiet_mode_error_title),
                     /* messageString= */ "",
                     buttonText,
                     getWorkProfileOffIcon());
@@ -257,58 +322,117 @@
         }
 
         private CharSequence getCrossProfileNoPermissionErrorTitle() {
-            boolean currentUserIsSystem = UserId.CURRENT_USER.isSystem();
             switch (mEnv.getDisplayState().action) {
                 case State.ACTION_GET_CONTENT:
                 case State.ACTION_OPEN:
                 case State.ACTION_OPEN_TREE:
-                    return currentUserIsSystem
-                            ? getEnterpriseString(
-                                    CANT_SELECT_WORK_FILES_TITLE,
-                                    R.string.cant_select_work_files_error_title)
-                            : getEnterpriseString(
-                                    CANT_SELECT_PERSONAL_FILES_TITLE,
-                                    R.string.cant_select_personal_files_error_title);
+                    return mConfigStore.isPrivateSpaceInDocsUIEnabled()
+                            ? getErrorTitlePrivateSpaceEnabled(ACCESS_CROSS_PROFILE_FILES)
+                            : getErrorTitlePrivateSpaceDisabled(ACCESS_CROSS_PROFILE_FILES);
                 case State.ACTION_CREATE:
-                    return currentUserIsSystem
-                            ? getEnterpriseString(
-                                    CANT_SAVE_TO_WORK_TITLE, R.string.cant_save_to_work_error_title)
-                            : getEnterpriseString(
-                                    CANT_SAVE_TO_PERSONAL_TITLE,
-                                    R.string.cant_save_to_personal_error_title);
+                    return mConfigStore.isPrivateSpaceInDocsUIEnabled()
+                            ? getErrorTitlePrivateSpaceEnabled(State.ACTION_CREATE)
+                            : getErrorTitlePrivateSpaceDisabled(State.ACTION_CREATE);
             }
             return getEnterpriseString(
                     CROSS_PROFILE_NOT_ALLOWED_TITLE,
                     R.string.cross_profile_action_not_allowed_title);
         }
 
-        private CharSequence getCrossProfileNoPermissionErrorMessage() {
+        private CharSequence getErrorTitlePrivateSpaceEnabled(int action) {
+            Resources res = mEnv.getContext().getResources();
+            String selectedProfileLabel = mUserIdToLabelMap.get(mSelectedUserId);
+            if (selectedProfileLabel == null) return "";
+            if (action == ACCESS_CROSS_PROFILE_FILES) {
+                return res.getString(R.string.cant_select_cross_profile_files_error_title,
+                        selectedProfileLabel.toLowerCase(Locale.getDefault()));
+            } else if (action == State.ACTION_CREATE) {
+                return res.getString(R.string.cant_save_to_cross_profile_error_title,
+                        selectedProfileLabel.toLowerCase(Locale.getDefault()));
+            } else {
+                Log.e(TAG, "Unexpected intent action received.");
+                return "";
+            }
+        }
+
+        private CharSequence getErrorTitlePrivateSpaceDisabled(int action) {
             boolean currentUserIsSystem = UserId.CURRENT_USER.isSystem();
+            if (action == ACCESS_CROSS_PROFILE_FILES) {
+                return currentUserIsSystem
+                        ? getEnterpriseString(CANT_SELECT_WORK_FILES_TITLE,
+                        R.string.cant_select_work_files_error_title)
+                        : getEnterpriseString(CANT_SELECT_PERSONAL_FILES_TITLE,
+                                R.string.cant_select_personal_files_error_title);
+            } else if (action == State.ACTION_CREATE) {
+                return currentUserIsSystem
+                        ? getEnterpriseString(CANT_SAVE_TO_WORK_TITLE,
+                        R.string.cant_save_to_work_error_title)
+                        : getEnterpriseString(CANT_SAVE_TO_PERSONAL_TITLE,
+                                R.string.cant_save_to_personal_error_title);
+            } else {
+                Log.e(TAG, "Unexpected intent action received.");
+                return "";
+            }
+        }
+
+        private CharSequence getCrossProfileNoPermissionErrorMessage() {
             switch (mEnv.getDisplayState().action) {
                 case State.ACTION_GET_CONTENT:
                 case State.ACTION_OPEN:
                 case State.ACTION_OPEN_TREE:
-                    return currentUserIsSystem
-                            ? getEnterpriseString(
-                                    CANT_SELECT_WORK_FILES_MESSAGE,
-                                    R.string.cant_select_work_files_error_message)
-                            : getEnterpriseString(
-                                    CANT_SELECT_PERSONAL_FILES_MESSAGE,
-                                    R.string.cant_select_personal_files_error_message);
+                    return mConfigStore.isPrivateSpaceInDocsUIEnabled()
+                            ? getErrorMessagePrivateSpaceEnabled(ACCESS_CROSS_PROFILE_FILES)
+                            : getErrorMessagePrivateSpaceDisabled(ACCESS_CROSS_PROFILE_FILES);
                 case State.ACTION_CREATE:
-                    return currentUserIsSystem
-                            ? getEnterpriseString(
-                                    CANT_SAVE_TO_WORK_MESSAGE,
-                                    R.string.cant_save_to_work_error_message)
-                            : getEnterpriseString(
-                                    CANT_SAVE_TO_PERSONAL_MESSAGE,
-                                    R.string.cant_save_to_personal_error_message);
+                    return mConfigStore.isPrivateSpaceInDocsUIEnabled()
+                            ? getErrorMessagePrivateSpaceEnabled(State.ACTION_CREATE)
+                            : getErrorMessagePrivateSpaceDisabled(State.ACTION_CREATE);
+
             }
             return getEnterpriseString(
                     CROSS_PROFILE_NOT_ALLOWED_MESSAGE,
                     R.string.cross_profile_action_not_allowed_message);
         }
 
+        private CharSequence getErrorMessagePrivateSpaceEnabled(int action) {
+            Resources res = mEnv.getContext().getResources();
+            String sourceProfileLabel = mUserIdToLabelMap.get(mSourceUserId);
+            String selectedProfileLabel = mUserIdToLabelMap.get(mSelectedUserId);
+            if (sourceProfileLabel == null || selectedProfileLabel == null) return "";
+            if (action == ACCESS_CROSS_PROFILE_FILES) {
+                return res.getString(R.string.cant_select_cross_profile_files_error_message,
+                        selectedProfileLabel.toLowerCase(Locale.getDefault()),
+                        sourceProfileLabel.toLowerCase(Locale.getDefault()));
+            } else if (action == State.ACTION_CREATE) {
+                return res.getString(R.string.cant_save_to_cross_profile_error_message,
+                        sourceProfileLabel.toLowerCase(Locale.getDefault()),
+                        selectedProfileLabel.toLowerCase(Locale.getDefault()));
+            } else {
+                Log.e(TAG, "Unexpected intent action received.");
+                return "";
+            }
+        }
+
+        private CharSequence getErrorMessagePrivateSpaceDisabled(int action) {
+            boolean currentUserIsSystem = UserId.CURRENT_USER.isSystem();
+            if (action == ACCESS_CROSS_PROFILE_FILES) {
+                return currentUserIsSystem
+                        ? getEnterpriseString(CANT_SELECT_WORK_FILES_MESSAGE,
+                        R.string.cant_select_work_files_error_message)
+                        : getEnterpriseString(CANT_SELECT_PERSONAL_FILES_MESSAGE,
+                                R.string.cant_select_personal_files_error_message);
+            } else if (action == State.ACTION_CREATE) {
+                return currentUserIsSystem
+                        ? getEnterpriseString(CANT_SAVE_TO_WORK_MESSAGE,
+                        R.string.cant_save_to_work_error_message)
+                        : getEnterpriseString(CANT_SAVE_TO_PERSONAL_MESSAGE,
+                                R.string.cant_save_to_personal_error_message);
+            } else {
+                Log.e(TAG, "Unexpected intent action received.");
+                return "";
+            }
+        }
+
         private void updateToInflatedErrorMessage() {
             update(null, mEnv.getContext().getResources().getText(R.string.query_error), null,
                     mEnv.getContext().getDrawable(R.drawable.hourglass));
diff --git a/src/com/android/documentsui/dirlist/MessageHolder.java b/src/com/android/documentsui/dirlist/MessageHolder.java
index 1d8d7d6..9853e44 100644
--- a/src/com/android/documentsui/dirlist/MessageHolder.java
+++ b/src/com/android/documentsui/dirlist/MessageHolder.java
@@ -20,16 +20,18 @@
 import android.view.ViewGroup;
 import android.widget.Space;
 
+import com.android.documentsui.ConfigStore;
+
 /**
  * Base class for all non-Document Holder classes.
  */
 abstract class MessageHolder extends DocumentHolder {
-    public MessageHolder(Context context, Space space) {
-        super(context, space);
+    MessageHolder(Context context, Space space, ConfigStore configStore) {
+        super(context, space, configStore);
     }
 
-    public MessageHolder(Context context, ViewGroup parent, int layout) {
-        super(context, parent, layout);
+    MessageHolder(Context context, ViewGroup parent, int layout, ConfigStore configStore) {
+        super(context, parent, layout, configStore);
     }
 
     @Override
diff --git a/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java b/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java
index f763607..beaa24b 100644
--- a/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java
+++ b/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java
@@ -29,6 +29,7 @@
 import androidx.recyclerview.selection.SelectionTracker;
 import androidx.recyclerview.widget.RecyclerView;
 
+import com.android.documentsui.ConfigStore;
 import com.android.documentsui.Model;
 import com.android.documentsui.Model.Update;
 import com.android.documentsui.base.EventListener;
@@ -51,6 +52,7 @@
     private final Environment mEnv;
     private final IconHelper mIconHelper;  // a transitive dependency of the holders.
     private final Lookup<String, String> mFileTypeLookup;
+    private final ConfigStore mConfigStore;
 
     /**
      * An ordered list of model IDs. This is the data structure that determines what shows up in
@@ -60,10 +62,12 @@
     private EventListener<Model.Update> mModelUpdateListener;
 
     public ModelBackedDocumentsAdapter(
-            Environment env, IconHelper iconHelper, Lookup<String, String> fileTypeLookup) {
+            Environment env, IconHelper iconHelper, Lookup<String, String> fileTypeLookup,
+            ConfigStore configStore) {
         mEnv = env;
         mIconHelper = iconHelper;
         mFileTypeLookup = fileTypeLookup;
+        mConfigStore = configStore;
 
         mModelUpdateListener = new EventListener<Model.Update>() {
             @Override
@@ -90,12 +94,14 @@
             case MODE_GRID:
                 switch (viewType) {
                     case ITEM_TYPE_DIRECTORY:
-                        holder = new GridDirectoryHolder(mEnv.getContext(), parent);
+                        holder = new GridDirectoryHolder(mEnv.getContext(), parent, mConfigStore);
                         break;
                     case ITEM_TYPE_DOCUMENT:
                         holder = state.isPhotoPicking()
-                                ? new GridPhotoHolder(mEnv.getContext(), parent, mIconHelper)
-                                : new GridDocumentHolder(mEnv.getContext(), parent, mIconHelper);
+                                ? new GridPhotoHolder(mEnv.getContext(), parent, mIconHelper,
+                                mConfigStore)
+                                : new GridDocumentHolder(mEnv.getContext(), parent, mIconHelper,
+                                        mConfigStore);
                         break;
                     default:
                         throw new IllegalStateException("Unsupported layout type.");
@@ -103,7 +109,7 @@
                 break;
             case MODE_LIST:
                 holder = new ListDocumentHolder(
-                        mEnv.getContext(), parent, mIconHelper, mFileTypeLookup);
+                        mEnv.getContext(), parent, mIconHelper, mFileTypeLookup, mConfigStore);
                 break;
             default:
                 throw new IllegalStateException("Unsupported layout mode.");
@@ -136,14 +142,18 @@
         boolean enabled = mEnv.isDocumentEnabled(docMimeType, docFlags);
         boolean selected = mEnv.isSelected(modelId);
         if (!enabled) {
-            assert(!selected);
+            assert (!selected);
         }
         holder.setEnabled(enabled);
         holder.setSelected(mEnv.isSelected(modelId), false);
         holder.setAction(mEnv.getDisplayState().action);
         holder.bindPreviewIcon(mEnv.getDisplayState().shouldShowPreview() && enabled,
                 view -> mEnv.getActionHandler().previewItem(holder.getItemDetails()));
-        holder.bindBriefcaseIcon(mIconHelper.shouldShowBadge(userIdIdentifier));
+        if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+            holder.bindProfileIcon(mIconHelper.shouldShowBadge(userIdIdentifier), userIdIdentifier);
+        } else {
+            holder.bindBriefcaseIcon(mIconHelper.shouldShowBadge(userIdIdentifier));
+        }
 
         mEnv.onBindDocumentHolder(holder, cursor);
     }
diff --git a/src/com/android/documentsui/dirlist/TransparentDividerDocumentHolder.java b/src/com/android/documentsui/dirlist/TransparentDividerDocumentHolder.java
index 44efd80..cb65e70 100644
--- a/src/com/android/documentsui/dirlist/TransparentDividerDocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/TransparentDividerDocumentHolder.java
@@ -21,6 +21,7 @@
 import android.database.Cursor;
 import android.widget.Space;
 
+import com.android.documentsui.ConfigStore;
 import com.android.documentsui.R;
 import com.android.documentsui.base.State;
 
@@ -32,8 +33,8 @@
     private final int mVisibleHeight;
     private State mState;
 
-    public TransparentDividerDocumentHolder(Context context) {
-        super(context, new Space(context));
+    TransparentDividerDocumentHolder(Context context, ConfigStore configStore) {
+        super(context, new Space(context), configStore);
 
         mVisibleHeight = context.getResources().getDimensionPixelSize(
                 R.dimen.grid_section_separator_height);
@@ -51,6 +52,5 @@
         } else {
             itemView.setMinimumHeight(0);
         }
-        return;
     }
 }
\ No newline at end of file
diff --git a/src/com/android/documentsui/files/FilesActivity.java b/src/com/android/documentsui/files/FilesActivity.java
index c426a70..053e5db 100644
--- a/src/com/android/documentsui/files/FilesActivity.java
+++ b/src/com/android/documentsui/files/FilesActivity.java
@@ -83,8 +83,15 @@
     }
 
     // make these methods visible in this package to work around compiler bug http://b/62218600
-    @Override protected boolean focusSidebar() { return super.focusSidebar(); }
-    @Override protected boolean popDir() { return super.popDir(); }
+    @Override
+    protected boolean focusSidebar() {
+        return super.focusSidebar();
+    }
+
+    @Override
+    protected boolean popDir() {
+        return super.popDir();
+    }
 
     @Override
     public void onCreate(Bundle icicle) {
@@ -157,8 +164,7 @@
                 mInjector.selectionMgr,
                 mProfileTabsAddonsStub);
 
-        mAppsRowManager = new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
-                mUserIdManager);
+        mAppsRowManager = getAppsRowManager();
         mInjector.appsRowManager = mAppsRowManager;
 
         mActivityInputHandler =
@@ -194,6 +200,14 @@
         presentFileErrors(icicle, intent);
     }
 
+    private AppsRowManager getAppsRowManager() {
+        return mConfigStore.isPrivateSpaceInDocsUIEnabled()
+                ? new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
+                mUserManagerState, mConfigStore)
+                : new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
+                        mUserIdManager, mConfigStore);
+    }
+
     // This is called in the intent contains label and icon resources.
     // When that is true, the launcher activity has supplied them so we
     // can adapt our presentation to how we were launched.
@@ -207,11 +221,11 @@
     // called Downloads, which is also not the desired behavior.
     private void updateTaskDescription(final Intent intent) {
         int labelRes = intent.getIntExtra(LauncherActivity.TASK_LABEL_RES, -1);
-        assert(labelRes > -1);
+        assert (labelRes > -1);
         String label = getResources().getString(labelRes);
 
         int iconRes = intent.getIntExtra(LauncherActivity.TASK_ICON_RES, -1);
-        assert(iconRes > -1);
+        assert (iconRes > -1);
 
         setTaskDescription(new TaskDescription(label, iconRes));
     }
@@ -244,14 +258,14 @@
         final Intent intent = getIntent();
 
         // This is a remnant of old logic where we used to initialize accept MIME types in
-        // BaseActivity. ProvidersAccess still rely on this being correctly initialized so we still have
-        // to initialize it in FilesActivity.
+        // BaseActivity. ProvidersAccess still rely on this being correctly initialized, so we
+        // still have to initialize it in FilesActivity.
         state.initAcceptMimes(intent, "*/*");
         state.action = State.ACTION_BROWSE;
         state.allowMultiple = true;
 
         // Options specific to the DocumentsActivity.
-        assert(!intent.hasExtra(Intent.EXTRA_LOCAL_ONLY));
+        assert (!intent.hasExtra(Intent.EXTRA_LOCAL_ONLY));
     }
 
     @Override
@@ -286,6 +300,11 @@
     }
 
     @Override
+    public void onDestroy() {
+        super.onDestroy();
+    }
+
+    @Override
     public String getDrawerTitle() {
         Intent intent = getIntent();
         return (intent != null && intent.hasExtra(Intent.EXTRA_TITLE))
@@ -333,7 +352,7 @@
         final RootInfo root = getCurrentRoot();
         final DocumentInfo cwd = getCurrentDirectory();
 
-        assert(!mSearchManager.isSearching());
+        assert (!mSearchManager.isSearching());
 
         if (mState.stack.isRecents()) {
             DirectoryFragment.showRecentsOpen(fm, anim);
@@ -355,7 +374,7 @@
 
     @Override
     public void onDirectoryCreated(DocumentInfo doc) {
-        assert(doc.isDirectory());
+        assert (doc.isDirectory());
         mInjector.focusManager.focusDocument(doc.documentId);
     }
 
diff --git a/src/com/android/documentsui/inspector/KeyValueRow.java b/src/com/android/documentsui/inspector/KeyValueRow.java
index 00ef819..349d017 100644
--- a/src/com/android/documentsui/inspector/KeyValueRow.java
+++ b/src/com/android/documentsui/inspector/KeyValueRow.java
@@ -98,9 +98,11 @@
     public void setOnClickListener(OnClickListener callback) {
         TextView clickable = ((TextView) findViewById(R.id.table_row_value));
         mDefaultTextColor = clickable.getTextColors();
-        TypedArray ta = getContext().obtainStyledAttributes(R.styleable.TextAppearance);
-        int linkColor = ta.getColor(R.styleable.TextAppearance_android_textColorLink,
-                mDefaultTextColor.getDefaultColor());
+        TypedArray ta =
+                getContext().obtainStyledAttributes(androidx.appcompat.R.styleable.TextAppearance);
+        int linkColor =
+                ta.getColor(androidx.appcompat.R.styleable.TextAppearance_android_textColorLink,
+                        mDefaultTextColor.getDefaultColor());
         ta.recycle();
         clickable.setTextColor(linkColor);
         clickable.setPaintFlags(clickable.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
diff --git a/src/com/android/documentsui/picker/ActionHandler.java b/src/com/android/documentsui/picker/ActionHandler.java
index 1fc35b3..4ea7bbc 100644
--- a/src/com/android/documentsui/picker/ActionHandler.java
+++ b/src/com/android/documentsui/picker/ActionHandler.java
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.android.documentsui.picker;
 
 import static android.provider.DocumentsContract.isDocumentUri;
@@ -53,7 +52,6 @@
 import com.android.documentsui.Injector;
 import com.android.documentsui.MetricConsts;
 import com.android.documentsui.Metrics;
-import com.android.documentsui.UserIdManager;
 import com.android.documentsui.base.BooleanConsumer;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.DocumentStack;
@@ -84,8 +82,8 @@
     private static final String TAG = "PickerActionHandler";
 
     /**
-     * Used to prevent applications from using {@link Intent.ACTION_OPEN_DOCUMENT_TREE} and
-     * the {@link Intent.ACTION_OPEN_DOCUMENT} actions to request that the user select individual
+     * Used to prevent applications from using {@link Intent#ACTION_OPEN_DOCUMENT_TREE} and
+     * the {@link Intent#ACTION_OPEN_DOCUMENT} actions to request that the user select individual
      * files from "/Android/data", "/Android/obb", "/Android/sandbox" directories and all their
      * subdirectories (on the external storage), in accordance with the SAF privacy restrictions
      * introduced in Android 11 (R).
@@ -100,8 +98,6 @@
     private final Features mFeatures;
     private final ActivityConfig mConfig;
     private final LastAccessedStorage mLastAccessed;
-    private final UserIdManager mUserIdManager;
-
     private UpdatePickResultTask mUpdatePickResultTask;
 
     ActionHandler(
@@ -112,21 +108,19 @@
             SearchViewManager searchMgr,
             Lookup<String, Executor> executors,
             Injector injector,
-            LastAccessedStorage lastAccessed,
-            UserIdManager userIdManager) {
+            LastAccessedStorage lastAccessed) {
         super(activity, state, providers, docs, searchMgr, executors, injector);
 
         mConfig = injector.config;
         mFeatures = injector.features;
         mLastAccessed = lastAccessed;
         mUpdatePickResultTask = new UpdatePickResultTask(
-            activity.getApplicationContext(), mInjector.pickResult);
-        mUserIdManager = userIdManager;
+                activity.getApplicationContext(), mInjector.pickResult);
     }
 
     @Override
     public void initLocation(Intent intent) {
-        assert(intent != null);
+        assert (intent != null);
 
         // stack is initialized if it's restored from bundle, which means we're restoring a
         // previously stored state.
@@ -247,7 +241,7 @@
         final String docId = DocumentsContract.getDocumentId(uri);
         final String filePath;
         try {
-             filePath = FileUtils.getPathFromStorageDocId(docId);
+            filePath = FileUtils.getPathFromStorageDocId(docId);
         } catch (IOException e) {
             Log.w(TAG, "Could not get canonical file path from docId '" + docId + "'");
             return true;
@@ -431,7 +425,7 @@
     }
 
     void pickDocument(FragmentManager fm, DocumentInfo pickTarget) {
-        assert(pickTarget != null);
+        assert (pickTarget != null);
         mInjector.pickResult.increaseActionCount();
         Uri result;
         switch (mState.action) {
@@ -450,7 +444,7 @@
 
     void saveDocument(
             String mimeType, String displayName, BooleanConsumer inProgressStateListener) {
-        assert(mState.action == ACTION_CREATE);
+        assert (mState.action == ACTION_CREATE);
         mInjector.pickResult.increaseActionCount();
         new CreatePickedDocumentTask(
                 mActivity,
@@ -467,9 +461,9 @@
     // User requested to overwrite a target. If confirmed by user #finishPicking() will be
     // called.
     void saveDocument(FragmentManager fm, DocumentInfo replaceTarget) {
-        assert(mState.action == ACTION_CREATE);
+        assert (mState.action == ACTION_CREATE);
         mInjector.pickResult.increaseActionCount();
-        assert(replaceTarget != null);
+        assert (replaceTarget != null);
 
         // Adding a confirmation dialog breaks an inherited CTS test (testCreateExisting), so we
         // need to add a feature flag to bypass this feature in ARC++ environment.
@@ -488,7 +482,7 @@
                 () -> {
                     onPickFinished(docs);
                 }
-        ) .executeOnExecutor(getExecutorForCurrentDirectory());
+        ).executeOnExecutor(getExecutorForCurrentDirectory());
     }
 
     private void onPickFinished(Uri... uris) {
@@ -509,7 +503,7 @@
         }
 
         updatePickResult(
-            intent, mSearchMgr.isSearching(), Metrics.sanitizeRoot(mState.stack.getRoot()));
+                intent, mSearchMgr.isSearching(), Metrics.sanitizeRoot(mState.stack.getRoot()));
 
         // TODO: Separate this piece of logic per action.
         // We don't instantiate different objects for different actions at the first place, so it's
@@ -558,4 +552,4 @@
         @VisibleForTesting
         void setResult(int resultCode, Intent result, int notUsed);
     }
-}
+}
\ No newline at end of file
diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java
index c2fbd50..2061a8f 100644
--- a/src/com/android/documentsui/picker/PickActivity.java
+++ b/src/com/android/documentsui/picker/PickActivity.java
@@ -85,8 +85,15 @@
     }
 
     // make these methods visible in this package to work around compiler bug http://b/62218600
-    @Override protected boolean focusSidebar() { return super.focusSidebar(); }
-    @Override protected boolean popDir() { return super.popDir(); }
+    @Override
+    protected boolean focusSidebar() {
+        return super.focusSidebar();
+    }
+
+    @Override
+    protected boolean popDir() {
+        return super.popDir();
+    }
 
     @Override
     public void onCreate(Bundle icicle) {
@@ -99,7 +106,8 @@
                 new MessageBuilder(this),
                 DialogController.create(features, this),
                 DocumentsApplication.getFileTypeLookup(this),
-                (Collection<RootInfo> roots) -> {});
+                (Collection<RootInfo> roots) -> {
+                });
 
         super.onCreate(icicle);
 
@@ -138,15 +146,13 @@
                 mSearchManager,
                 ProviderExecutor::forAuthority,
                 mInjector,
-                LastAccessedStorage.create(),
-                mUserIdManager);
+                LastAccessedStorage.create());
 
         mInjector.searchManager = mSearchManager;
 
         Intent intent = getIntent();
 
-        mAppsRowManager = new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
-                mUserIdManager);
+        mAppsRowManager = getAppsRowManager();
         mInjector.appsRowManager = mAppsRowManager;
 
         mSharedInputHandler =
@@ -163,6 +169,14 @@
         Metrics.logPickerLaunchedFrom(Shared.getCallingPackageName(this));
     }
 
+    private AppsRowManager getAppsRowManager() {
+        return mConfigStore.isPrivateSpaceInDocsUIEnabled()
+                ? new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
+                mUserManagerState, mConfigStore)
+                : new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
+                        mUserIdManager, mConfigStore);
+    }
+
     @Override
     public void onBackPressed() {
         super.onBackPressed();
@@ -203,7 +217,7 @@
             final String title = intent.getStringExtra(Intent.EXTRA_TITLE);
             SaveFragment.show(getSupportFragmentManager(), mimeType, title);
         } else if (mState.action == ACTION_OPEN_TREE ||
-                   mState.action == ACTION_PICK_COPY_DESTINATION) {
+                mState.action == ACTION_PICK_COPY_DESTINATION) {
             PickFragment.show(getSupportFragmentManager());
         } else {
             // If PickFragment or SaveFragment does not show,
@@ -215,10 +229,15 @@
         final Intent moreApps = new Intent(intent);
         moreApps.setComponent(null);
         moreApps.setPackage(null);
-        if (mState.supportsCrossProfile()
-                && CrossProfileUtils.getCrossProfileResolveInfo(
-                        getPackageManager(), moreApps) != null) {
-            mState.canShareAcrossProfile = true;
+        if (mState.supportsCrossProfile) {
+            if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+                mState.canForwardToProfileIdMap = mUserManagerState.getCanForwardToProfileIdMap(
+                        moreApps);
+            } else if (CrossProfileUtils.getCrossProfileResolveInfo(UserId.CURRENT_USER,
+                    getPackageManager(), moreApps, getApplicationContext(),
+                    mConfigStore.isPrivateSpaceInDocsUIEnabled()) != null) {
+                mState.canShareAcrossProfile = true;
+            }
         }
 
         if (mState.action == ACTION_GET_CONTENT
@@ -345,8 +364,8 @@
                     MimeTypes.VISUAL_MIMES, mState.acceptMimes);
             mState.derivedMode = visualMimes ? State.MODE_GRID : State.MODE_LIST;
         } else {
-                // Normal boring directory
-                DirectoryFragment.showDirectory(fm, root, cwd, anim);
+            // Normal boring directory
+            DirectoryFragment.showDirectory(fm, root, cwd, anim);
         }
 
         // Forget any replacement target
@@ -358,7 +377,7 @@
         }
 
         if (mState.action == ACTION_OPEN_TREE ||
-            mState.action == ACTION_PICK_COPY_DESTINATION) {
+                mState.action == ACTION_PICK_COPY_DESTINATION) {
             final PickFragment pick = PickFragment.get(fm);
             if (pick != null) {
                 pick.setPickTarget(mState.action,
@@ -369,7 +388,7 @@
 
     @Override
     protected void onDirectoryCreated(DocumentInfo doc) {
-        assert(doc.isDirectory());
+        assert (doc.isDirectory());
         mInjector.actions.openContainerDocument(doc);
     }
 
diff --git a/src/com/android/documentsui/queries/SearchViewManager.java b/src/com/android/documentsui/queries/SearchViewManager.java
index b0c2987..053dc93 100644
--- a/src/com/android/documentsui/queries/SearchViewManager.java
+++ b/src/com/android/documentsui/queries/SearchViewManager.java
@@ -227,7 +227,7 @@
         mSearchView.setOnCloseListener(this);
         mSearchView.setOnSearchClickListener(this);
         mSearchView.setOnQueryTextFocusChangeListener(this);
-        final View clearButton = mSearchView.findViewById(R.id.search_close_btn);
+        final View clearButton = mSearchView.findViewById(androidx.appcompat.R.id.search_close_btn);
         if (clearButton != null) {
             clearButton.setPadding(clearButton.getPaddingStart() + getPixelForDp(4),
                     clearButton.getPaddingTop(), clearButton.getPaddingEnd() + getPixelForDp(4),
@@ -239,7 +239,7 @@
             });
         }
         if (SdkLevel.isAtLeastU()) {
-            final View textView = mSearchView.findViewById(R.id.search_src_text);
+            final View textView = mSearchView.findViewById(androidx.appcompat.R.id.search_src_text);
             if (textView != null) {
                 try {
                     textView.setIsHandwritingDelegate(true);
diff --git a/src/com/android/documentsui/roots/ProvidersCache.java b/src/com/android/documentsui/roots/ProvidersCache.java
index e053b45..080b729 100644
--- a/src/com/android/documentsui/roots/ProvidersCache.java
+++ b/src/com/android/documentsui/roots/ProvidersCache.java
@@ -49,9 +49,11 @@
 import androidx.annotation.Nullable;
 import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 
+import com.android.documentsui.ConfigStore;
 import com.android.documentsui.DocumentsApplication;
 import com.android.documentsui.R;
 import com.android.documentsui.UserIdManager;
+import com.android.documentsui.UserManagerState;
 import com.android.documentsui.UserPackage;
 import com.android.documentsui.archives.ArchivesProvider;
 import com.android.documentsui.base.LookupApplicationName;
@@ -90,10 +92,10 @@
     // empty results we don't cache them...unless they're in this magical list
     // of beloved providers.
     private static final List<String> PERMIT_EMPTY_CACHE = List.of(
-        // MTP provider commonly returns no roots (if no devices are attached).
-        Providers.AUTHORITY_MTP,
-        // ArchivesProvider doesn't support any roots.
-        ArchivesProvider.AUTHORITY);
+            // MTP provider commonly returns no roots (if no devices are attached).
+            Providers.AUTHORITY_MTP,
+            // ArchivesProvider doesn't support any roots.
+            ArchivesProvider.AUTHORITY);
     private static final int FIRST_LOAD_TIMEOUT_MS = 5000;
 
     private final Context mContext;
@@ -122,13 +124,32 @@
     private final Map<UserAuthority, PackageDetails> mObservedAuthoritiesDetails = new HashMap<>();
 
     private final UserIdManager mUserIdManager;
+    private final UserManagerState mUserManagerState;
+    private final ConfigStore mConfigStore;
 
-    public ProvidersCache(Context context, UserIdManager userIdManager) {
+    public ProvidersCache(Context context, UserIdManager userIdManager, ConfigStore configStore) {
         mContext = context;
         mUserIdManager = userIdManager;
+        mUserManagerState = null;
+        mConfigStore = configStore;
     }
 
-    private RootInfo generateRecentsRoot(UserId rootUserId) {
+    public ProvidersCache(Context context, UserManagerState userManagerState,
+            ConfigStore configStore) {
+        mContext = context;
+        mUserIdManager = null;
+        mUserManagerState = userManagerState;
+        mConfigStore = configStore;
+    }
+
+    public boolean isProvidersCacheUsingUserManagerState() {
+        return mUserManagerState != null;
+    }
+
+    /**
+     * Generates recent root for the provided user id
+     */
+    public RootInfo generateRecentsRoot(UserId rootUserId) {
         return new RootInfo() {{
             // Special root for recents
             userId = rootUserId;
@@ -199,7 +220,8 @@
         // For that reason we update our RecentsRoot to reflect
         // the current language.
         final String title = mContext.getString(R.string.root_recent);
-        for (UserId userId : mUserIdManager.getUserIds()) {
+        List<UserId> userIds = getUserIds();
+        for (UserId userId : userIds) {
             RootInfo recentRoot = createOrGetRecentsRoot(userId);
             recentRoot.title = title;
             // Nothing else about the root should ever change.
@@ -509,11 +531,12 @@
         /**
          * Create task to update roots cache.
          *
-         * @param forceRefreshAll when true, all previously cached values for
-         *            all packages should be ignored.
+         * @param forceRefreshAll         when true, all previously cached values for
+         *                                all packages should be ignored.
          * @param forceRefreshUserPackage when non-null, all previously cached
-         *            values for this specific user package should be ignored.
-         * @param callback when non-null, it will be invoked after the task is executed.
+         *                                values for this specific user package should be ignored.
+         * @param callback                when non-null, it will be invoked after the task is
+         *                                executed.
          */
         MultiProviderUpdateTask(
                 boolean forceRefreshAll,
@@ -536,7 +559,8 @@
 
             final long start = SystemClock.elapsedRealtime();
 
-            for (UserId userId : mUserIdManager.getUserIds()) {
+            List<UserId> userIds = getUserIds();
+            for (UserId userId : userIds) {
                 final RootInfo recents = createOrGetRecentsRoot(userId);
                 synchronized (mLock) {
                     mLocalRoots.put(new UserAuthority(recents.userId, recents.authority), recents);
@@ -544,7 +568,7 @@
             }
 
             List<SingleProviderUpdateTaskInfo> taskInfos = new ArrayList<>();
-            for (UserId userId : mUserIdManager.getUserIds()) {
+            for (UserId userId : userIds) {
                 final PackageManager pm = userId.getPackageManager(mContext);
                 // Pick up provider with action string
                 final Intent intent = new Intent(DocumentsContract.PROVIDER_INTERFACE);
@@ -561,7 +585,7 @@
                 CountDownLatch updateTaskInternalCountDown = new CountDownLatch(taskInfos.size());
                 ExecutorService executor = MoreExecutors.getExitingExecutorService(
                         (ThreadPoolExecutor) Executors.newCachedThreadPool());
-                for (SingleProviderUpdateTaskInfo taskInfo: taskInfos) {
+                for (SingleProviderUpdateTaskInfo taskInfo : taskInfos) {
                     executor.submit(() ->
                             startSingleProviderUpdateTask(
                                     taskInfo.providerInfo,
@@ -701,4 +725,11 @@
             packageName = pckgName;
         }
     }
+
+    private List<UserId> getUserIds() {
+        if (mConfigStore.isPrivateSpaceInDocsUIEnabled()) {
+            return mUserManagerState.getUserIds();
+        }
+        return mUserIdManager.getUserIds();
+    }
 }
diff --git a/src/com/android/documentsui/sidebar/RootsFragment.java b/src/com/android/documentsui/sidebar/RootsFragment.java
index 49710e1..f5be6c2 100644
--- a/src/com/android/documentsui/sidebar/RootsFragment.java
+++ b/src/com/android/documentsui/sidebar/RootsFragment.java
@@ -63,6 +63,7 @@
 import com.android.documentsui.Injector.Injected;
 import com.android.documentsui.ItemDragListener;
 import com.android.documentsui.R;
+import com.android.documentsui.UserManagerState;
 import com.android.documentsui.UserPackage;
 import com.android.documentsui.base.BooleanConsumer;
 import com.android.documentsui.base.DocumentInfo;
@@ -130,11 +131,12 @@
 
     /**
      * Shows the {@link RootsFragment}.
-     * @param fm the FragmentManager for interacting with fragments associated with this
-     *           fragment's activity
+     *
+     * @param fm          the FragmentManager for interacting with fragments associated with this
+     *                    fragment's activity
      * @param includeApps if {@code true}, query the intent from the system and include apps in
      *                    the {@RootsFragment}.
-     * @param intent the intent to query for package manager
+     * @param intent      the intent to query for package manager
      */
     public static RootsFragment show(FragmentManager fm, boolean includeApps, Intent intent) {
         final Bundle args = new Bundle();
@@ -184,8 +186,8 @@
                             });
                         }
                         return false;
-            }
-        });
+                    }
+                });
         mList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
         mList.setSelector(new ColorDrawable(Color.TRANSPARENT));
         return view;
@@ -265,11 +267,26 @@
                 // For action which supports cross profile, update the policy value in state if
                 // necessary.
                 ResolveInfo crossProfileResolveInfo = null;
+                UserManagerState userManagerState = null;
                 if (state.supportsCrossProfile() && handlerAppIntent != null) {
-                    crossProfileResolveInfo = CrossProfileUtils.getCrossProfileResolveInfo(
-                            getContext().getPackageManager(), handlerAppIntent);
-                    updateCrossProfileStateAndMaybeRefresh(
-                            /* canShareAcrossProfile= */ crossProfileResolveInfo != null);
+                    if (state.configStore.isPrivateSpaceInDocsUIEnabled()) {
+                        userManagerState = DocumentsApplication.getUserManagerState(getContext());
+                        Map<UserId, Boolean> canForwardToProfileIdMap =
+                                userManagerState.getCanForwardToProfileIdMap(handlerAppIntent);
+                        updateCrossProfileMapStateAndMaybeRefresh(canForwardToProfileIdMap);
+                    } else {
+                        crossProfileResolveInfo = CrossProfileUtils.getCrossProfileResolveInfo(
+                                UserId.CURRENT_USER, getContext().getPackageManager(),
+                                handlerAppIntent, getContext(),
+                                state.configStore.isPrivateSpaceInDocsUIEnabled());
+                        updateCrossProfileStateAndMaybeRefresh(
+                                /* canShareAcrossProfile= */ crossProfileResolveInfo != null);
+                    }
+                }
+
+                if (state.configStore.isPrivateSpaceInDocsUIEnabled()
+                        && userManagerState == null) {
+                    userManagerState = DocumentsApplication.getUserManagerState(getContext());
                 }
 
                 List<Item> sortedItems = sortLoadResult(
@@ -280,8 +297,9 @@
                         shouldIncludeHandlerApp ? handlerAppIntent : null,
                         DocumentsApplication.getProvidersCache(getContext()),
                         getBaseActivity().getSelectedUser(),
-                        DocumentsApplication.getUserIdManager(getContext()).getUserIds(),
-                        maybeShowBadge);
+                        getUserIds(),
+                        maybeShowBadge,
+                        userManagerState);
 
                 // This will be removed when feature flag is removed.
                 if (crossProfileResolveInfo != null && !Features.CROSS_PROFILE_TABS) {
@@ -316,6 +334,13 @@
                 onCurrentRootChanged();
             }
 
+            private List<UserId> getUserIds() {
+                if (state.configStore.isPrivateSpaceInDocsUIEnabled()) {
+                    return DocumentsApplication.getUserManagerState(getContext()).getUserIds();
+                }
+                return DocumentsApplication.getUserIdManager(getContext()).getUserIds();
+            }
+
             @Override
             public void onLoaderReset(Loader<Collection<RootInfo>> loader) {
                 mAdapter = null;
@@ -338,12 +363,24 @@
         }
     }
 
+    private void updateCrossProfileMapStateAndMaybeRefresh(
+            Map<UserId, Boolean> canForwardToProfileIdMap) {
+        final State state = getBaseActivity().getDisplayState();
+        if (!state.canForwardToProfileIdMap.equals(canForwardToProfileIdMap)) {
+            state.canForwardToProfileIdMap = canForwardToProfileIdMap;
+            if (!UserId.CURRENT_USER.equals(getBaseActivity().getSelectedUser())) {
+                mActionHandler.loadDocumentsForCurrentStack();
+            }
+        }
+    }
+
     /**
      * If the package name of other providers or apps capable of handling the original intent
      * include the preferred root source, it will have higher order than others.
-     * @param excludePackage Exclude activities from this given package
+     *
+     * @param excludePackage   Exclude activities from this given package
      * @param handlerAppIntent When not null, apps capable of handling the original intent will
-     *            be included in list of roots (in special section at bottom).
+     *                         be included in list of roots (in special section at bottom).
      */
     @VisibleForTesting
     List<Item> sortLoadResult(
@@ -355,7 +392,8 @@
             ProvidersAccess providersAccess,
             UserId selectedUser,
             List<UserId> userIds,
-            boolean maybeShowBadge) {
+            boolean maybeShowBadge,
+            UserManagerState userManagerState) {
         final List<Item> result = new ArrayList<>();
 
         final RootItemListBuilder librariesBuilder = new RootItemListBuilder(selectedUser, userIds);
@@ -401,30 +439,54 @@
 
         final List<Item> rootList = new ArrayList<>();
         final List<Item> rootListOtherUser = new ArrayList<>();
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        for (int i = 0; i < userIds.size(); ++i) {
+            rootListAllUsers.add(new ArrayList<>());
+        }
+
         mApplicationItemList = new ArrayList<>();
         if (handlerAppIntent != null) {
             includeHandlerApps(state, handlerAppIntent, excludePackage, rootList, rootListOtherUser,
-                    otherProviders, userIds, maybeShowBadge);
+                    rootListAllUsers, otherProviders, userIds, maybeShowBadge);
         } else {
             // Only add providers
-            Collections.sort(otherProviders, comp);
+            otherProviders.sort(comp);
             for (RootItem item : otherProviders) {
-                if (UserId.CURRENT_USER.equals(item.userId)) {
-                    rootList.add(item);
+                if (state.configStore.isPrivateSpaceInDocsUIEnabled()) {
+                    createRootListsPrivateSpaceEnabled(item, userIds, rootListAllUsers);
                 } else {
-                    rootListOtherUser.add(item);
+                    createRootListsPrivateSpaceDisabled(item, rootList, rootListOtherUser);
                 }
                 mApplicationItemList.add(item);
             }
         }
 
-        List<Item> presentableList = new UserItemsCombiner(
-                context.getResources(), context.getSystemService(DevicePolicyManager.class), state)
+        List<Item> presentableList =
+                state.configStore.isPrivateSpaceInDocsUIEnabled()
+                        ? getPresentableListPrivateSpaceEnabled(
+                        context, state, rootListAllUsers, userIds, userManagerState) :
+                        getPresentableListPrivateSpaceDisabled(context, state, rootList,
+                                rootListOtherUser);
+        addListToResult(result, presentableList);
+        return result;
+    }
+
+    private List<Item> getPresentableListPrivateSpaceEnabled(Context context, State state,
+            List<List<Item>> rootListAllUsers, List<UserId> userIds,
+            UserManagerState userManagerState) {
+        return new UserItemsCombiner(context.getResources(),
+                context.getSystemService(DevicePolicyManager.class), state)
+                .setRootListForAllUsers(rootListAllUsers)
+                .createPresentableListForAllUsers(userIds, userManagerState.getUserIdToLabelMap());
+    }
+
+    private List<Item> getPresentableListPrivateSpaceDisabled(Context context, State state,
+            List<Item> rootList, List<Item> rootListOtherUser) {
+        return new UserItemsCombiner(context.getResources(),
+                context.getSystemService(DevicePolicyManager.class), state)
                 .setRootListForCurrentUser(rootList)
                 .setRootListForOtherUser(rootListOtherUser)
                 .createPresentableList();
-        addListToResult(result, presentableList);
-        return result;
     }
 
     private void addListToResult(List<Item> result, List<Item> rootList) {
@@ -440,8 +502,8 @@
      */
     private void includeHandlerApps(State state,
             Intent handlerAppIntent, @Nullable String excludePackage, List<Item> rootList,
-            List<Item> rootListOtherUser, List<RootItem> otherProviders, List<UserId> userIds,
-            boolean maybeShowBadge) {
+            List<Item> rootListOtherUser, List<List<Item>> rootListAllUsers,
+            List<RootItem> otherProviders, List<UserId> userIds, boolean maybeShowBadge) {
         if (VERBOSE) Log.v(TAG, "Adding handler apps for intent: " + handlerAppIntent);
 
         Context context = getContext();
@@ -494,29 +556,49 @@
                 item = rootItem;
             }
 
-            if (UserId.CURRENT_USER.equals(item.userId)) {
-                if (VERBOSE) Log.v(TAG, "Adding provider : " + item);
-                rootList.add(item);
+            if (state.configStore.isPrivateSpaceInDocsUIEnabled()) {
+                createRootListsPrivateSpaceEnabled(item, userIds, rootListAllUsers);
             } else {
-                if (VERBOSE) Log.v(TAG, "Adding provider to other users : " + item);
-                rootListOtherUser.add(item);
+                createRootListsPrivateSpaceDisabled(item, rootList, rootListOtherUser);
             }
         }
 
         for (Item item : appItems.values()) {
-            if (UserId.CURRENT_USER.equals(item.userId)) {
-                rootList.add(item);
+            if (state.configStore.isPrivateSpaceInDocsUIEnabled()) {
+                createRootListsPrivateSpaceEnabled(item, userIds, rootListAllUsers);
             } else {
-                rootListOtherUser.add(item);
+                createRootListsPrivateSpaceDisabled(item, rootList, rootListOtherUser);
             }
         }
 
         final String preferredRootPackage = getResources().getString(
                 R.string.preferred_root_package, "");
         final ItemComparator comp = new ItemComparator(preferredRootPackage);
-        Collections.sort(rootList, comp);
-        Collections.sort(rootListOtherUser, comp);
 
+        if (state.configStore.isPrivateSpaceInDocsUIEnabled()) {
+            addToApplicationItemListPrivateSpaceEnabled(userIds, rootListAllUsers, comp, state);
+        } else {
+            addToApplicationItemListPrivateSpaceDisabled(rootList, rootListOtherUser, comp, state);
+        }
+
+    }
+
+    private void addToApplicationItemListPrivateSpaceEnabled(List<UserId> userIds,
+            List<List<Item>> rootListAllUsers, ItemComparator comp, State state) {
+        for (int i = 0; i < userIds.size(); ++i) {
+            rootListAllUsers.get(i).sort(comp);
+            if (UserId.CURRENT_USER.equals(userIds.get(i))) {
+                mApplicationItemList.addAll(rootListAllUsers.get(i));
+            } else if (state.supportsCrossProfile && state.canInteractWith(userIds.get(i))) {
+                mApplicationItemList.addAll(rootListAllUsers.get(i));
+            }
+        }
+    }
+
+    private void addToApplicationItemListPrivateSpaceDisabled(List<Item> rootList,
+            List<Item> rootListOtherUser, ItemComparator comp, State state) {
+        rootList.sort(comp);
+        rootListOtherUser.sort(comp);
         if (state.supportsCrossProfile() && state.canShareAcrossProfile) {
             mApplicationItemList.addAll(rootList);
             mApplicationItemList.addAll(rootListOtherUser);
@@ -525,6 +607,25 @@
         }
     }
 
+    private void createRootListsPrivateSpaceEnabled(Item item, List<UserId> userIds,
+            List<List<Item>> rootListAllUsers) {
+        for (int i = 0; i < userIds.size(); ++i) {
+            if (userIds.get(i).equals(item.userId)) {
+                rootListAllUsers.get(i).add(item);
+                break;
+            }
+        }
+    }
+
+    private void createRootListsPrivateSpaceDisabled(Item item, List<Item> rootList,
+            List<Item> rootListOtherUser) {
+        if (UserId.CURRENT_USER.equals(item.userId)) {
+            rootList.add(item);
+        } else {
+            rootListOtherUser.add(item);
+        }
+    }
+
     @Override
     public void onResume() {
         super.onResume();
@@ -649,8 +750,8 @@
     }
 
     static void ejectClicked(View ejectIcon, RootInfo root, ActionHandler actionHandler) {
-        assert(ejectIcon != null);
-        assert(!root.ejecting);
+        assert (ejectIcon != null);
+        assert (!root.ejecting);
         ejectIcon.setEnabled(false);
         root.ejecting = true;
         actionHandler.ejectRoot(
diff --git a/src/com/android/documentsui/sidebar/UserItemsCombiner.java b/src/com/android/documentsui/sidebar/UserItemsCombiner.java
index 1a68ca7..564a511 100644
--- a/src/com/android/documentsui/sidebar/UserItemsCombiner.java
+++ b/src/com/android/documentsui/sidebar/UserItemsCombiner.java
@@ -36,6 +36,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Converts user-specific lists of items into a single merged list appropriate for displaying in the
@@ -49,6 +50,7 @@
     private final State mState;
     private List<Item> mRootList;
     private List<Item> mRootListOtherUser;
+    private List<List<Item>> mRootListAllUsers;
 
     UserItemsCombiner(Resources resources, DevicePolicyManager dpm, State state) {
         mCurrentUser = UserId.CURRENT_USER;
@@ -73,6 +75,11 @@
         return this;
     }
 
+    UserItemsCombiner setRootListForAllUsers(List<List<Item>> listOfRootLists) {
+        mRootListAllUsers = checkNotNull(listOfRootLists);
+        return this;
+    }
+
     /**
      * Returns a combined lists from the provided lists. {@link HeaderItem}s indicating profile
      * will be added if the list of current user and the other user are not empty.
@@ -109,6 +116,52 @@
         return result;
     }
 
+    public List<Item> createPresentableListForAllUsers(List<UserId> userIds,
+            Map<UserId, String> userIdToLabelMap) {
+
+        checkArgument(mRootListAllUsers != null, "RootListForAllUsers is not set");
+
+        final List<Item> result = new ArrayList<>();
+        if (mState.supportsCrossProfile()) {
+            // headerItemList will hold headers for userIds that are accessible, and
+            final List<Item> headerItemList = new ArrayList<>();
+            int accessibleProfilesCount = 0;
+            for (int i = 0; i < userIds.size(); ++i) {
+                // The received user id list contains all users present on the device,
+                // the headerItemList will contain header item or null at the same index as
+                // the user id in the received list
+                if (mState.canInteractWith(userIds.get(i))
+                        && !mRootListAllUsers.get(i).isEmpty()) {
+                    accessibleProfilesCount += 1;
+                    headerItemList.add(new HeaderItem(userIdToLabelMap.get(userIds.get(i))));
+                } else {
+                    headerItemList.add(null);
+                }
+            }
+            // Do not add header item if:
+            // 1. only the current profile is accessible
+            // 2. only one profile has non-empty root item list
+            if (accessibleProfilesCount == 1) {
+                for (int i = 0; i < userIds.size(); ++i) {
+                    if (headerItemList.get(i) == null) continue;
+                    result.addAll(mRootListAllUsers.get(i));
+                    break;
+                }
+            } else {
+                for (int i = 0; i < userIds.size(); ++i) {
+                    // Since the header item and the corresponding accessible user id share the same
+                    // index we add the user id along with its non-null header to the result.
+                    if (headerItemList.get(i) == null) continue;
+                    result.add(headerItemList.get(i));
+                    result.addAll(mRootListAllUsers.get(i));
+                }
+            }
+        } else {
+            result.addAll(mRootListAllUsers.get(userIds.indexOf(mCurrentUser)));
+        }
+        return result;
+    }
+
     private String getEnterpriseString(String updatableStringId, int defaultStringId) {
         if (SdkLevel.isAtLeastT()) {
             return getUpdatableEnterpriseString(updatableStringId, defaultStringId);
diff --git a/src/com/android/documentsui/util/CrossProfileUtils.java b/src/com/android/documentsui/util/CrossProfileUtils.java
index e60ffdd..3b53847 100644
--- a/src/com/android/documentsui/util/CrossProfileUtils.java
+++ b/src/com/android/documentsui/util/CrossProfileUtils.java
@@ -16,16 +16,27 @@
 
 package com.android.documentsui.util;
 
+import android.annotation.TargetApi;
+import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.content.pm.UserProperties;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.Log;
 
 import androidx.annotation.Nullable;
 
+import com.android.documentsui.base.UserId;
+import com.android.modules.utils.build.SdkLevel;
+
 /**
  * A utility class for cross-profile usage.
  */
 public class CrossProfileUtils {
+
+    private static final String TAG = "CrossProfileUtils";
     private static final String PROFILE_TARGET_ACTIVITY =
             "com.android.internal.app.IntentForwarderActivity";
 
@@ -46,11 +57,55 @@
     }
 
     /**
-     * Returns the {@ResolveInfo} if this intent is a cross-profile intent or {@code null}
+     * Returns the {@link ResolveInfo} if this intent is a cross-profile intent or {@code null}
      * otherwise.
      */
     @Nullable
-    public static ResolveInfo getCrossProfileResolveInfo(PackageManager packageManager,
+    public static ResolveInfo getCrossProfileResolveInfo(UserId currentUser,
+            PackageManager packageManager, Intent intent, Context context,
+            boolean isPrivateSpaceEnabled) {
+        if (isPrivateSpaceEnabled && SdkLevel.isAtLeastV()) {
+            return getCrossProfileResolveInfoPostV(currentUser, packageManager,
+                    intent, context);
+        }
+        return getCrossProfileResolveInfoPreV(packageManager, intent);
+    }
+
+    @Nullable
+    @TargetApi(35)
+    private static ResolveInfo getCrossProfileResolveInfoPostV(
+            UserId currentUser, PackageManager packageManager,
+            Intent intent, Context context) {
+        UserManager userManager = context.getSystemService(UserManager.class);
+        UserHandle queringUser = UserHandle.of(currentUser.getIdentifier());
+        if (userManager == null) {
+            Log.e(TAG, "cannot obtain user manager");
+            return null;
+        }
+
+        UserProperties userProperties = userManager.getUserProperties(queringUser);
+        if (userProperties == null) {
+            Log.e(TAG, "cannot obtain user properties");
+            return null;
+        }
+
+        if (userProperties.getCrossProfileContentSharingStrategy()
+                == UserProperties.CROSS_PROFILE_CONTENT_SHARING_DELEGATE_FROM_PARENT) {
+            queringUser = userManager.getProfileParent(queringUser);
+        }
+
+        for (ResolveInfo info : packageManager.queryIntentActivitiesAsUser(intent,
+                PackageManager.MATCH_DEFAULT_ONLY, queringUser)) {
+            if (isCrossProfileIntentForwarderActivity(info)) {
+                return info;
+            }
+        }
+        return null;
+    }
+
+    @Nullable
+    private static ResolveInfo getCrossProfileResolveInfoPreV(
+            PackageManager packageManager,
             Intent intent) {
         for (ResolveInfo info : packageManager.queryIntentActivities(intent,
                 PackageManager.MATCH_DEFAULT_ONLY)) {
diff --git a/tests/Android.bp b/tests/Android.bp
index 65a4bbd..334901d 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -16,35 +16,79 @@
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
-filegroup {
-    name: "DocumentsUIPerfTests-files",
+java_defaults {
+    name: "DocumentsUITests-defaults",
+    libs: [
+        "android.test.base",
+        "android.test.mock",
+        "android.test.runner",
+    ],
+
+    static_libs: [
+        "DocumentsUI-lib",
+        "androidx.test.rules",
+        "androidx.test.espresso.core",
+        "androidx.test.ext.truth",
+        "guava",
+        "mockito-target",
+        "androidx.test.uiautomator_uiautomator",
+    ],
+}
+
+android_library {
+    name: "DocumentsUIPerfTests-lib",
     srcs: [
         "common/com/android/documentsui/**/*.java",
         "functional/com/android/documentsui/ActivityTest.java",
     ],
+    resource_dirs: [],
+    libs: [
+        "android.test.base",
+        "android.test.mock",
+        "android.test.runner",
+        "DocumentsUI-lib",
+    ],
+
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "androidx.test.rules",
+        "androidx.test.espresso.core",
+        "mockito-target",
+        "ub-janktesthelper",
+        "androidx.test.uiautomator_uiautomator",
+    ],
 }
 
-filegroup {
-    name: "DocumentsUITests-srcs",
+android_library {
+    name: "DocumentsUIUnitTests-lib",
+    defaults: ["DocumentsUITests-defaults"],
+
+    manifest: "AndroidManifestUnitTests.xml",
+
+    srcs: [
+        "common/**/*.java",
+        "unit/**/*.java",
+    ],
+
+    resource_dirs: [
+        "res",
+    ],
+
+    min_sdk_version: "29",
+    target_sdk_version: "29",
+}
+
+android_library {
+    name: "DocumentsUITests-lib",
+    defaults: ["DocumentsUITests-defaults"],
+
+    manifest: "AndroidManifest.xml",
+
     srcs: [
         "common/**/*.java",
         "functional/**/*.java",
         "unit/**/*.java",
     ],
-}
-
-filegroup {
-    name: "DocumentsUIUnitTests-srcs",
-    srcs: [
-        "common/**/*.java",
-        "unit/**/*.java",
-    ],
-}
-
-android_library {
-    name: "DocumentsUITests-res-lib",
-
-    manifest: "AndroidManifest.xml",
 
     asset_dirs: [
         "assets",
@@ -57,45 +101,25 @@
     aaptflags: [
         // pack some raw file locate in assets folder
         "-0 .zip",
-        "--auto-add-overlay",
     ],
 
-    min_sdk_version : "29",
-    target_sdk_version : "29",
+    min_sdk_version: "29",
+    target_sdk_version: "29",
+    lint: {
+        baseline_filename: "lint-baseline.xml",
+    },
 }
 
 android_test {
     name: "DocumentsUITests",
+    defaults: ["DocumentsUITests-defaults"],
 
     manifest: "AndroidManifest.xml",
 
-    srcs: [
-        "common/**/*.java",
-        "functional/**/*.java",
-        "unit/**/*.java",
-    ],
-
-    resource_dirs: [
-        "res",
-    ],
-
-    aaptflags: [
-        "-0 .zip",
-    ],
-
-    libs: [
-        "android.test.base",
-        "android.test.mock",
-        "android.test.runner",
-    ],
+    resource_dirs: [],
 
     static_libs: [
-        "androidx.test.rules",
-        "androidx.test.espresso.core",
-        "androidx.test.ext.truth",
-        "guava",
-        "mockito-target",
-        "androidx.test.uiautomator_uiautomator",
+        "DocumentsUITests-lib",
     ],
 
     jarjar_rules: "jarjar-rules.txt",
@@ -110,6 +134,6 @@
     certificate: "platform",
 
     instrumentation_for: "DocumentsUI",
-    min_sdk_version : "29",
-    target_sdk_version : "29",
+    min_sdk_version: "29",
+    target_sdk_version: "29",
 }
diff --git a/tests/AndroidManifestUnitTests.xml b/tests/AndroidManifestUnitTests.xml
new file mode 100644
index 0000000..13d7a08
--- /dev/null
+++ b/tests/AndroidManifestUnitTests.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.documentsui.tests">
+
+</manifest>
diff --git a/tests/common/com/android/documentsui/TestActivity.java b/tests/common/com/android/documentsui/TestActivity.java
index eb321fa..5aa3faa 100644
--- a/tests/common/com/android/documentsui/TestActivity.java
+++ b/tests/common/com/android/documentsui/TestActivity.java
@@ -260,6 +260,14 @@
     }
 
     @Override
+    public final String getSystemServiceName(Class<?> serviceName) {
+        if (serviceName == UserManager.class) {
+            return Context.USER_SERVICE;
+        }
+        throw new IllegalArgumentException("Unknown service name " + serviceName);
+    }
+
+    @Override
     public final void finish() {
         finishedHandler.accept(null);
     }
diff --git a/tests/common/com/android/documentsui/TestConfigStore.java b/tests/common/com/android/documentsui/TestConfigStore.java
new file mode 100644
index 0000000..2e29b0c
--- /dev/null
+++ b/tests/common/com/android/documentsui/TestConfigStore.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2024 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.documentsui;
+
+import com.android.modules.utils.build.SdkLevel;
+
+public class TestConfigStore implements ConfigStore {
+    private boolean mIsPrivateSpaceEnabled = false;
+
+    /**
+     * Enables private space flag for PhotoPicker in test config
+     */
+    public void enablePrivateSpaceInPhotoPicker() {
+        mIsPrivateSpaceEnabled = true;
+    }
+    /**
+     * Disables private space flag for PhotoPicker in test config
+     */
+    public void disablePrivateSpaceInPhotoPicker() {
+        mIsPrivateSpaceEnabled = false;
+    }
+
+    @Override
+    public boolean isPrivateSpaceInDocsUIEnabled() {
+        return SdkLevel.isAtLeastS() && mIsPrivateSpaceEnabled;
+    }
+}
diff --git a/tests/common/com/android/documentsui/TestUserManagerState.java b/tests/common/com/android/documentsui/TestUserManagerState.java
new file mode 100644
index 0000000..8dbe62a
--- /dev/null
+++ b/tests/common/com/android/documentsui/TestUserManagerState.java
@@ -0,0 +1,74 @@
+/*
+ * 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.documentsui;
+
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+
+import com.android.documentsui.base.UserId;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class TestUserManagerState implements UserManagerState {
+
+    public List<UserId> userIds = new ArrayList<>();
+    public Map<UserId, String> userIdToLabelMap = new HashMap<>();
+    public Map<UserId, Boolean> canFrowardToProfileIdMap = new HashMap<>();
+    public Map<UserId, Drawable> userIdToBadgeMap = new HashMap<>();
+    public String profileLabel = "Test";
+    public Drawable profileBadge = null;
+
+    @Override
+    public List<UserId> getUserIds() {
+        return userIds;
+    }
+
+    @Override
+    public Map<UserId, String> getUserIdToLabelMap() {
+        return userIdToLabelMap;
+    }
+
+    @Override
+    public Map<UserId, Drawable> getUserIdToBadgeMap() {
+        return userIdToBadgeMap;
+    }
+
+    @Override
+    public Map<UserId, Boolean> getCanForwardToProfileIdMap(Intent intent) {
+        return canFrowardToProfileIdMap;
+    }
+
+    @Override
+    public void onProfileActionStatusChange(String action, UserId userId) {
+        if (Intent.ACTION_PROFILE_UNAVAILABLE.equals(action)) {
+            userIds.remove(userId);
+            userIdToLabelMap.remove(userId);
+            userIdToBadgeMap.remove(userId);
+            canFrowardToProfileIdMap.put(userId, false);
+            return;
+        }
+        if (!userIds.contains(userId)) {
+            userIds.add(userId);
+        }
+        userIdToLabelMap.put(userId, profileLabel);
+        userIdToBadgeMap.put(userId, profileBadge);
+        canFrowardToProfileIdMap.put(userId, true);
+    }
+}
diff --git a/tests/common/com/android/documentsui/bots/SearchBot.java b/tests/common/com/android/documentsui/bots/SearchBot.java
index 51f9394..bde74ca 100644
--- a/tests/common/com/android/documentsui/bots/SearchBot.java
+++ b/tests/common/com/android/documentsui/bots/SearchBot.java
@@ -33,12 +33,13 @@
 import android.content.Context;
 import android.view.View;
 
-import androidx.recyclerview.R;
 import androidx.test.uiautomator.UiDevice;
 import androidx.test.uiautomator.UiObject;
 import androidx.test.uiautomator.UiObjectNotFoundException;
 import androidx.test.uiautomator.UiSelector;
 
+import com.android.documentsui.R;
+
 import org.hamcrest.Matcher;
 
 /**
@@ -60,7 +61,7 @@
     // require this input be not clickable.
     @SuppressWarnings("unchecked")
     private static final Matcher<View> SEARCH_INPUT = allOf(
-            withId(R.id.search_src_text),
+            withId(androidx.appcompat.R.id.search_src_text),
             isDisplayed());
 
     public SearchBot(UiDevice device, Context context, int timeout) {
diff --git a/tests/common/com/android/documentsui/dirlist/TestContext.java b/tests/common/com/android/documentsui/dirlist/TestContext.java
index d5122f2..29047a4 100644
--- a/tests/common/com/android/documentsui/dirlist/TestContext.java
+++ b/tests/common/com/android/documentsui/dirlist/TestContext.java
@@ -30,7 +30,7 @@
      */
     static Context createStorageTestContext(Context context, String authority) {
         final MockContentResolver testResolver = new MockContentResolver();
-        TestDocumentsProvider provider = new TestDocumentsProvider(authority);
+        TestDocumentsProvider provider = new TestDocumentsProvider(context, authority);
         testResolver.addProvider(authority, provider);
 
         return new ContextWrapper(context) {
diff --git a/tests/common/com/android/documentsui/testing/TestDocumentsProvider.java b/tests/common/com/android/documentsui/testing/TestDocumentsProvider.java
index 3e4dffd..5c5ed85 100644
--- a/tests/common/com/android/documentsui/testing/TestDocumentsProvider.java
+++ b/tests/common/com/android/documentsui/testing/TestDocumentsProvider.java
@@ -17,6 +17,7 @@
 package com.android.documentsui.testing;
 
 import android.annotation.NonNull;
+import android.content.Context;
 import android.content.pm.ProviderInfo;
 import android.database.Cursor;
 import android.database.MatrixCursor;
@@ -51,10 +52,10 @@
     private Cursor mNextChildDocuments;
     private Cursor mNextRecentDocuments;
 
-    public TestDocumentsProvider(String authority) {
+    public TestDocumentsProvider(Context context, String authority) {
         ProviderInfo info = new ProviderInfo();
         info.authority = authority;
-        attachInfoForTesting(null, info);
+        attachInfoForTesting(context, info);
     }
 
     @Override
diff --git a/tests/common/com/android/documentsui/testing/TestEnv.java b/tests/common/com/android/documentsui/testing/TestEnv.java
index 3249c8c..8f74647 100644
--- a/tests/common/com/android/documentsui/testing/TestEnv.java
+++ b/tests/common/com/android/documentsui/testing/TestEnv.java
@@ -117,7 +117,8 @@
     private void registerProviders() {
         for (RootInfo root : providers.getRootsBlocking()) {
             if (!mockProviders.containsKey(root.authority)) {
-                TestDocumentsProvider provider = new TestDocumentsProvider(root.authority);
+                Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
+                TestDocumentsProvider provider = new TestDocumentsProvider(context, root.authority);
                 contentResolver.addProvider(root.authority, provider);
                 mockProviders.put(root.authority, provider);
             }
diff --git a/tests/common/com/android/documentsui/testing/TestIconHelper.java b/tests/common/com/android/documentsui/testing/TestIconHelper.java
index d9bf9ab..754eea1 100644
--- a/tests/common/com/android/documentsui/testing/TestIconHelper.java
+++ b/tests/common/com/android/documentsui/testing/TestIconHelper.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 
+import com.android.documentsui.ConfigStore;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.dirlist.IconHelper;
 
@@ -28,8 +29,8 @@
 
     public Drawable nextDocumentIcon;
 
-    private TestIconHelper() {
-        super(null, 0, false);
+    private TestIconHelper(ConfigStore configStore) {
+        super(null, 0, false, configStore);
     }
 
     @Override
diff --git a/tests/common/com/android/documentsui/testing/TestProvidersAccess.java b/tests/common/com/android/documentsui/testing/TestProvidersAccess.java
index 4fae7a7..5a138ea 100644
--- a/tests/common/com/android/documentsui/testing/TestProvidersAccess.java
+++ b/tests/common/com/android/documentsui/testing/TestProvidersAccess.java
@@ -111,7 +111,7 @@
         INSPECTOR.rootId = InspectorProvider.ROOT_ID;
         INSPECTOR.title = "Inspector";
         INSPECTOR.flags = Root.FLAG_LOCAL_ONLY
-            | Root.FLAG_SUPPORTS_CREATE;
+                | Root.FLAG_SUPPORTS_CREATE;
 
         IMAGE = new RootInfo();
         IMAGE.userId = userId;
@@ -229,6 +229,67 @@
         }
     }
 
+    public static class AnotherUser {
+        public static final UserHandle USER_HANDLE = UserHandle.of(
+                TestProvidersAccess.USER_ID.getIdentifier() + 2);
+        public static final UserId USER_ID = UserId.of(AnotherUser.USER_HANDLE);
+
+        public static final RootInfo DOWNLOADS;
+        public static final RootInfo HOME;
+        public static final RootInfo IMAGE;
+        public static final RootInfo PICKLES;
+        public static final RootInfo MTP_ROOT;
+
+        static {
+            UserId userId = AnotherUser.USER_ID;
+
+            DOWNLOADS = new RootInfo();
+            DOWNLOADS.userId = userId;
+            DOWNLOADS.authority = Providers.AUTHORITY_DOWNLOADS;
+            DOWNLOADS.rootId = Providers.ROOT_ID_DOWNLOADS;
+            DOWNLOADS.title = "Downloads";
+            DOWNLOADS.derivedType = RootInfo.TYPE_DOWNLOADS;
+            DOWNLOADS.flags = Root.FLAG_LOCAL_ONLY
+                    | Root.FLAG_SUPPORTS_CREATE
+                    | Root.FLAG_SUPPORTS_RECENTS;
+
+            HOME = new RootInfo();
+            HOME.userId = userId;
+            HOME.authority = Providers.AUTHORITY_STORAGE;
+            HOME.rootId = Providers.ROOT_ID_HOME;
+            HOME.title = "Home";
+            HOME.derivedType = RootInfo.TYPE_LOCAL;
+            HOME.flags = Root.FLAG_LOCAL_ONLY
+                    | Root.FLAG_SUPPORTS_CREATE
+                    | Root.FLAG_SUPPORTS_IS_CHILD
+                    | Root.FLAG_SUPPORTS_RECENTS;
+
+            IMAGE = new RootInfo();
+            IMAGE.userId = userId;
+            IMAGE.authority = Providers.AUTHORITY_MEDIA;
+            IMAGE.rootId = Providers.ROOT_ID_IMAGES;
+            IMAGE.title = "Images";
+            IMAGE.derivedType = RootInfo.TYPE_IMAGES;
+
+            PICKLES = new RootInfo();
+            PICKLES.userId = userId;
+            PICKLES.authority = "yummies";
+            PICKLES.rootId = "pickles";
+            PICKLES.title = "Pickles";
+            PICKLES.summary = "Yummy pickles";
+
+            MTP_ROOT = new RootInfo();
+            MTP_ROOT.userId = userId;
+            MTP_ROOT.authority = Providers.AUTHORITY_MTP;
+            MTP_ROOT.rootId = Providers.ROOT_ID_DOCUMENTS;
+            MTP_ROOT.title = "MTP";
+            MTP_ROOT.derivedType = RootInfo.TYPE_MTP;
+            MTP_ROOT.flags = Root.FLAG_SUPPORTS_CREATE
+                    | Root.FLAG_LOCAL_ONLY
+                    | Root.FLAG_SUPPORTS_IS_CHILD;
+        }
+    }
+
     public final Map<String, Collection<RootInfo>> roots = new HashMap<>();
     private @Nullable RootInfo nextRoot;
 
diff --git a/tests/functional/com/android/documentsui/ActionCreateDocumentUiTest.java b/tests/functional/com/android/documentsui/ActionCreateDocumentUiTest.java
index 6939e3d..fd17f72 100644
--- a/tests/functional/com/android/documentsui/ActionCreateDocumentUiTest.java
+++ b/tests/functional/com/android/documentsui/ActionCreateDocumentUiTest.java
@@ -80,8 +80,8 @@
         final String fileName = UUID.randomUUID() + ".txt";
 
         bots.main.setDialogText(fileName);
-        bots.main.clickSaveButton();
         device.waitForIdle();
+        bots.main.clickSaveButton();
 
         final Instrumentation.ActivityResult activityResult = mRule.getActivityResult();
         assertThat(activityResult.getResultCode()).isEqualTo(RESULT_OK);
@@ -93,8 +93,8 @@
         assertThat(uri.getPath()).contains(fileName);
 
         assertThat(resultData.getFlags()).isEqualTo(FLAG_GRANT_READ_URI_PERMISSION
-                        | FLAG_GRANT_WRITE_URI_PERMISSION
-                        | FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
+                | FLAG_GRANT_WRITE_URI_PERMISSION
+                | FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
 
         final boolean deletedSuccessfully =
                 DocumentsContract.deleteDocument(context.getContentResolver(), uri);
diff --git a/tests/functional/com/android/documentsui/DialogUiTest.java b/tests/functional/com/android/documentsui/DialogUiTest.java
index eec7ef1..d1bd2a2 100644
--- a/tests/functional/com/android/documentsui/DialogUiTest.java
+++ b/tests/functional/com/android/documentsui/DialogUiTest.java
@@ -50,6 +50,7 @@
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -192,6 +193,7 @@
     }
 
     @Test
+    @Ignore
     public void testCreateDirectoryFragmentShows_textInputEditText_shouldNotTruncateOnLandscape()
             throws Throwable {
         switchOrientation(mActivityTestRule.getActivity());
diff --git a/tests/functional/com/android/documentsui/FileCopyUiTest.java b/tests/functional/com/android/documentsui/FileCopyUiTest.java
index 1f35868..0284c30 100644
--- a/tests/functional/com/android/documentsui/FileCopyUiTest.java
+++ b/tests/functional/com/android/documentsui/FileCopyUiTest.java
@@ -425,7 +425,7 @@
 
     // Copy Internal Storage -> Internal Storage //
     @HugeLongTest
-    public void testCopyDocuments_InternalStorage() throws Exception {
+    public void ignored_testCopyDocuments_InternalStorage() throws Exception {
         createDocuments(StubProvider.ROOT_0_ID, rootDir0, mDocsHelper);
         copyFiles(StubProvider.ROOT_0_ID, StubProvider.ROOT_1_ID);
 
@@ -472,7 +472,7 @@
     }
 
     @HugeLongTest
-    public void testCopyDocuments_documentsDisabled() throws Exception {
+    public void ignored_testCopyDocuments_documentsDisabled() throws Exception {
         mDocsHelper.createDocument(rootDir0, "text/plain", fileName1);
         bots.roots.openRoot(StubProvider.ROOT_0_ID);
         bots.directory.selectDocument(fileName1, 1);
diff --git a/tests/functional/com/android/documentsui/FilesActivityDefaultsUiTest.java b/tests/functional/com/android/documentsui/FilesActivityDefaultsUiTest.java
index b8ef8d6..a33cca3 100644
--- a/tests/functional/com/android/documentsui/FilesActivityDefaultsUiTest.java
+++ b/tests/functional/com/android/documentsui/FilesActivityDefaultsUiTest.java
@@ -21,7 +21,6 @@
 
 import android.os.RemoteException;
 
-import androidx.recyclerview.R;
 import androidx.test.filters.LargeTest;
 
 import com.android.documentsui.base.RootInfo;
diff --git a/tests/functional/com/android/documentsui/PickActivityTest.java b/tests/functional/com/android/documentsui/PickActivityTest.java
index cd042b1..5d32036 100644
--- a/tests/functional/com/android/documentsui/PickActivityTest.java
+++ b/tests/functional/com/android/documentsui/PickActivityTest.java
@@ -37,12 +37,20 @@
 import com.android.documentsui.testing.TestProvidersAccess;
 import com.android.documentsui.ui.TestDialogController;
 import com.android.documentsui.util.VersionUtils;
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.common.collect.Lists;
 
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 
 @SmallTest
+@RunWith(Parameterized.class)
 public class PickActivityTest {
 
     private static final String RESULT_EXTRA = "test_result_extra";
@@ -51,6 +59,19 @@
     private Context mTargetContext;
     private Intent mIntentGetContent;
     private TestDialogController mTestDialogs;
+    private TestConfigStore mTestConfigStore;
+
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
 
     @Rule
     public final ActivityTestRule<PickActivity> mRule =
@@ -67,6 +88,9 @@
         mIntentGetContent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, hintUri);
 
         mTestDialogs = new TestDialogController();
+        mTestConfigStore = new TestConfigStore();
+
+        isPrivateSpaceEnabled = SdkLevel.isAtLeastS() && isPrivateSpaceEnabled;
     }
 
     @Test
@@ -77,7 +101,13 @@
         doc.documentId = "documentId";
 
         PickActivity pickActivity = mRule.launchActivity(mIntentGetContent);
-        pickActivity.mState.canShareAcrossProfile = true;
+        pickActivity.mState.configStore = mTestConfigStore;
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            pickActivity.mState.canForwardToProfileIdMap.put(TestProvidersAccess.USER_ID, true);
+        } else {
+            pickActivity.mState.canShareAcrossProfile = true;
+        }
         pickActivity.onDocumentPicked(doc);
         SystemClock.sleep(3000);
 
@@ -96,7 +126,15 @@
             doc.documentId = "documentId";
 
             PickActivity pickActivity = mRule.launchActivity(mIntentGetContent);
-            pickActivity.mState.canShareAcrossProfile = true;
+            pickActivity.mState.configStore = mTestConfigStore;
+            if (isPrivateSpaceEnabled) {
+                mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+                pickActivity.mState.canForwardToProfileIdMap.put(TestProvidersAccess.USER_ID, true);
+                pickActivity.mState.canForwardToProfileIdMap.put(
+                        TestProvidersAccess.OtherUser.USER_ID, true);
+            } else {
+                pickActivity.mState.canShareAcrossProfile = true;
+            }
             pickActivity.onDocumentPicked(doc);
             SystemClock.sleep(3000);
 
@@ -114,7 +152,13 @@
         doc.documentId = "documentId";
 
         PickActivity pickActivity = mRule.launchActivity(mIntentGetContent);
-        pickActivity.mState.canShareAcrossProfile = false;
+        pickActivity.mState.configStore = mTestConfigStore;
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            pickActivity.mState.canForwardToProfileIdMap.put(TestProvidersAccess.USER_ID, true);
+        } else {
+            pickActivity.mState.canShareAcrossProfile = false;
+        }
         pickActivity.getInjector().dialogs = mTestDialogs;
         pickActivity.onDocumentPicked(doc);
         SystemClock.sleep(3000);
diff --git a/tests/functional/com/android/documentsui/SearchViewUiTest.java b/tests/functional/com/android/documentsui/SearchViewUiTest.java
index 04ea87a..78ce44a 100644
--- a/tests/functional/com/android/documentsui/SearchViewUiTest.java
+++ b/tests/functional/com/android/documentsui/SearchViewUiTest.java
@@ -19,7 +19,6 @@
 import static com.android.documentsui.StubProvider.ROOT_0_ID;
 import static com.android.documentsui.StubProvider.ROOT_1_ID;
 
-import androidx.recyclerview.R;
 import androidx.test.filters.LargeTest;
 import androidx.test.filters.Suppress;
 
diff --git a/tests/functional/com/android/documentsui/dirlist/DirectoryAddonsAdapterPrivateSpaceTest.java b/tests/functional/com/android/documentsui/dirlist/DirectoryAddonsAdapterPrivateSpaceTest.java
new file mode 100644
index 0000000..cf057de
--- /dev/null
+++ b/tests/functional/com/android/documentsui/dirlist/DirectoryAddonsAdapterPrivateSpaceTest.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (C) 2024 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.documentsui.dirlist;
+
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.UserProperties;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.DocumentsContract;
+import android.test.AndroidTestCase;
+import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.filters.SdkSuppress;
+
+import com.android.documentsui.ActionHandler;
+import com.android.documentsui.ModelId;
+import com.android.documentsui.TestConfigStore;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.UserId;
+import com.android.documentsui.testing.TestActionHandler;
+import com.android.documentsui.testing.TestEnv;
+import com.android.documentsui.testing.TestFileTypeLookup;
+import com.android.documentsui.testing.TestProvidersAccess;
+import com.android.documentsui.testing.UserManagers;
+import com.android.documentsui.util.VersionUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@SdkSuppress(minSdkVersion = 35, codeName = "V")
+public class DirectoryAddonsAdapterPrivateSpaceTest extends AndroidTestCase {
+
+    private static final String AUTHORITY = "test_authority";
+    private static final UserId CURRENT_USER = TestProvidersAccess.USER_ID;
+    private static final UserId SELECTED_USER = TestProvidersAccess.OtherUser.USER_ID;
+
+    private TestEnv mEnv;
+    private DirectoryAddonsAdapter mAdapter;
+    private ActionHandler mActionHandler;
+    private TestConfigStore mTestConfigStore;
+    private UserManager mUserManager;
+
+    /**
+     * set up for the test assuming that private space is enabled.
+     */
+    public void setUp() {
+
+        mEnv = TestEnv.create(AUTHORITY);
+        mActionHandler = new TestActionHandler();
+        mEnv.clear();
+        mTestConfigStore = new TestConfigStore();
+        mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+        mUserManager = UserManagers.create();
+
+        UserProperties selectedUserProperties = new UserProperties.Builder().setShowInQuietMode(
+                UserProperties.SHOW_IN_QUIET_MODE_HIDDEN).build();
+        when(mUserManager.getUserProperties(
+                UserHandle.of(SELECTED_USER.getIdentifier()))).thenReturn(selectedUserProperties);
+
+        final Context testContext = TestContext.createStorageTestContext(getContext(), AUTHORITY);
+        DocumentsAdapter.Environment env = new TestEnvironment(testContext, mEnv, mActionHandler);
+        Map<UserId, String> userIdToLabelMap = new HashMap<>();
+        userIdToLabelMap.put(CURRENT_USER, "Personal");
+        userIdToLabelMap.put(SELECTED_USER, "Profile");
+
+        mAdapter = new DirectoryAddonsAdapter(
+                env,
+                new ModelBackedDocumentsAdapter(
+                        env,
+                        new IconHelper(testContext, State.MODE_GRID, /* maybeShowBadge= */ false,
+                                mTestConfigStore),
+                        new TestFileTypeLookup(), mTestConfigStore),
+                CURRENT_USER, SELECTED_USER, userIdToLabelMap, mUserManager, mTestConfigStore);
+
+        mEnv.model.addUpdateListener(mAdapter.getModelUpdateListener());
+    }
+
+    // Tests that the item count is correct for a directory containing files and subdirs.
+    public void testItemCount_mixed() {
+        mEnv.reset();  // creates a mix of folders and files for us.
+
+        assertEquals(mEnv.model.getItemCount() + 1, mAdapter.getItemCount());
+    }
+
+    public void testGetPosition() {
+        mEnv.model.createFolder("a");  // id will be "1"...derived from insert position.
+        mEnv.model.createFile("b");  // id will be "2"
+        mEnv.model.update();
+
+        assertEquals(0, mAdapter.getPosition(ModelId.build(mEnv.model.mUserId, AUTHORITY, "1")));
+        // adapter inserts a view between item 0 and 1 to force layout
+        // break between folders and files. This is reflected by an offset position.
+        assertEquals(2, mAdapter.getPosition(ModelId.build(mEnv.model.mUserId, AUTHORITY, "2")));
+    }
+
+    // Tests that the item count is correct for a directory containing only subdirs.
+    public void testItemCount_allDirs() {
+        String[] names = {"Trader Joe's", "Alphabeta", "Lucky", "Vons", "Gelson's"};
+        for (String name : names) {
+            mEnv.model.createFolder(name);
+        }
+        mEnv.model.update();
+        assertEquals(mEnv.model.getItemCount(), mAdapter.getItemCount());
+    }
+
+    // Tests that the item count is correct for a directory containing only files.
+    public void testItemCount_allFiles() {
+        String[] names = {"123.txt", "234.jpg", "abc.pdf"};
+        for (String name : names) {
+            mEnv.model.createFile(name);
+        }
+        mEnv.model.update();
+        assertEquals(mEnv.model.getItemCount(), mAdapter.getItemCount());
+    }
+
+    public void testAddsInfoMessage_WithDirectoryChildren() {
+        String[] names = {"123.txt", "234.jpg", "abc.pdf"};
+        for (String name : names) {
+            mEnv.model.createFile(name);
+        }
+        Bundle bundle = new Bundle();
+        bundle.putString(DocumentsContract.EXTRA_INFO, "some info");
+        mEnv.model.setCursorExtras(bundle);
+        mEnv.model.update();
+        assertEquals(mEnv.model.getItemCount() + 1, mAdapter.getItemCount());
+        assertHolderType(0, DocumentsAdapter.ITEM_TYPE_HEADER_MESSAGE);
+    }
+
+    public void testItemCount_none() {
+        mEnv.model.update();
+        assertEquals(1, mAdapter.getItemCount());
+        assertHolderType(0, DocumentsAdapter.ITEM_TYPE_INFLATED_MESSAGE);
+    }
+
+    public void testAddsInfoMessage_WithNoItem() {
+        Bundle bundle = new Bundle();
+        bundle.putString(DocumentsContract.EXTRA_INFO, "some info");
+        mEnv.model.setCursorExtras(bundle);
+
+        mEnv.model.update();
+        assertEquals(2, mAdapter.getItemCount());
+        assertHolderType(0, DocumentsAdapter.ITEM_TYPE_HEADER_MESSAGE);
+    }
+
+    public void testAddsErrorMessage_WithNoItem() {
+        Bundle bundle = new Bundle();
+        bundle.putString(DocumentsContract.EXTRA_ERROR, "some error");
+        mEnv.model.setCursorExtras(bundle);
+
+        mEnv.model.update();
+        assertEquals(2, mAdapter.getItemCount());
+        assertHolderType(0, DocumentsAdapter.ITEM_TYPE_HEADER_MESSAGE);
+    }
+
+    public void testOpenTreeMessage_shouldBlockChild() {
+        if (!VersionUtils.isAtLeastR()) {
+            return;
+        }
+
+        mEnv.state.action = State.ACTION_OPEN_TREE;
+        mEnv.state.restrictScopeStorage = true;
+        DocumentInfo info = new DocumentInfo();
+        info.flags += DocumentsContract.Document.FLAG_DIR_BLOCKS_OPEN_DOCUMENT_TREE;
+        mEnv.state.stack.push(info);
+
+        mEnv.model.update();
+        assertEquals(2, mAdapter.getItemCount());
+        assertHolderType(0, DocumentsAdapter.ITEM_TYPE_HEADER_MESSAGE);
+    }
+
+    public void testOpenTreeMessage_normalChild() {
+        mEnv.state.action = State.ACTION_OPEN_TREE;
+        DocumentInfo info = new DocumentInfo();
+        mEnv.state.stack.push(info);
+
+        mEnv.model.update();
+        // Should only no items message show
+        assertEquals(1, mAdapter.getItemCount());
+        assertHolderType(0, DocumentsAdapter.ITEM_TYPE_INFLATED_MESSAGE);
+    }
+
+    public void testOpenTreeMessage_restrictStorageAccessFalse_blockTreeChild() {
+        if (!VersionUtils.isAtLeastR()) {
+            return;
+        }
+
+        mEnv.state.action = State.ACTION_OPEN_TREE;
+        DocumentInfo info = new DocumentInfo();
+        info.flags += DocumentsContract.Document.FLAG_DIR_BLOCKS_OPEN_DOCUMENT_TREE;
+        mEnv.state.stack.push(info);
+
+        mEnv.model.update();
+        // Should only no items message show
+        assertEquals(1, mAdapter.getItemCount());
+        assertHolderType(0, DocumentsAdapter.ITEM_TYPE_INFLATED_MESSAGE);
+    }
+
+    private void assertHolderType(int index, int type) {
+        assertTrue(mAdapter.getItemViewType(index) == type);
+    }
+
+    private static class StubAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
+
+        @Override
+        public int getItemCount() {
+            return 0;
+        }
+
+        @Override
+        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+        }
+
+        @Override
+        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+            return null;
+        }
+    }
+}
diff --git a/tests/functional/com/android/documentsui/dirlist/DirectoryAddonsAdapterTest.java b/tests/functional/com/android/documentsui/dirlist/DirectoryAddonsAdapterTest.java
index bcd1131..49c3165 100644
--- a/tests/functional/com/android/documentsui/dirlist/DirectoryAddonsAdapterTest.java
+++ b/tests/functional/com/android/documentsui/dirlist/DirectoryAddonsAdapterTest.java
@@ -27,11 +27,13 @@
 
 import com.android.documentsui.ActionHandler;
 import com.android.documentsui.ModelId;
+import com.android.documentsui.TestConfigStore;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.State;
 import com.android.documentsui.testing.TestActionHandler;
 import com.android.documentsui.testing.TestEnv;
 import com.android.documentsui.testing.TestFileTypeLookup;
+import com.android.documentsui.testing.TestProvidersAccess;
 import com.android.documentsui.util.VersionUtils;
 
 @MediumTest
@@ -42,12 +44,14 @@
     private TestEnv mEnv;
     private DirectoryAddonsAdapter mAdapter;
     private ActionHandler mActionHandler;
+    private TestConfigStore mTestConfigStore;
 
     public void setUp() {
 
         mEnv = TestEnv.create(AUTHORITY);
         mActionHandler = new TestActionHandler();
         mEnv.clear();
+        mTestConfigStore = new TestConfigStore();
 
         final Context testContext = TestContext.createStorageTestContext(getContext(), AUTHORITY);
         DocumentsAdapter.Environment env = new TestEnvironment(testContext, mEnv, mActionHandler);
@@ -56,8 +60,10 @@
                 env,
                 new ModelBackedDocumentsAdapter(
                         env,
-                        new IconHelper(testContext, State.MODE_GRID, /* maybeShowBadge= */ false),
-                        new TestFileTypeLookup()));
+                        new IconHelper(testContext, State.MODE_GRID, /* maybeShowBadge= */ false,
+                                null, TestProvidersAccess.OtherUser.USER_ID, null,
+                                mTestConfigStore),
+                        new TestFileTypeLookup(), mTestConfigStore), mTestConfigStore);
 
         mEnv.model.addUpdateListener(mAdapter.getModelUpdateListener());
     }
@@ -202,4 +208,4 @@
             return null;
         }
     }
-}
+}
\ No newline at end of file
diff --git a/tests/functional/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterPrivateSpaceTest.java b/tests/functional/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterPrivateSpaceTest.java
new file mode 100644
index 0000000..34a6d6f
--- /dev/null
+++ b/tests/functional/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterPrivateSpaceTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2024 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.documentsui.dirlist;
+
+import android.content.Context;
+import android.test.AndroidTestCase;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SdkSuppress;
+
+import com.android.documentsui.ActionHandler;
+import com.android.documentsui.Model;
+import com.android.documentsui.TestConfigStore;
+import com.android.documentsui.base.State;
+import com.android.documentsui.testing.TestActionHandler;
+import com.android.documentsui.testing.TestEnv;
+import com.android.documentsui.testing.TestFileTypeLookup;
+
+@MediumTest
+public class ModelBackedDocumentsAdapterPrivateSpaceTest extends AndroidTestCase {
+
+    private static final String AUTHORITY = "test_authority";
+
+    private TestEnv mEnv;
+    private ActionHandler mActionHandler;
+    private TestConfigStore mTestConfigStore;
+    private ModelBackedDocumentsAdapter mAdapter;
+
+    /**
+     * set up for the test assuming that private space is enabled.
+     */
+    @SdkSuppress(minSdkVersion = 35, codeName = "V")
+    public void setUp() {
+
+        final Context testContext = TestContext.createStorageTestContext(getContext(), AUTHORITY);
+        mEnv = TestEnv.create(AUTHORITY);
+        mActionHandler = new TestActionHandler();
+        mTestConfigStore = new TestConfigStore();
+        mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+
+        DocumentsAdapter.Environment env = new TestEnvironment(testContext, mEnv, mActionHandler);
+
+        mAdapter = new ModelBackedDocumentsAdapter(
+                env,
+                new IconHelper(testContext, State.MODE_GRID, /* maybeShowBadge= */ false,
+                        mTestConfigStore),
+                new TestFileTypeLookup(), mTestConfigStore);
+        mAdapter.getModelUpdateListener().accept(Model.Update.UPDATE);
+    }
+
+    // Tests that the item count is correct.
+    public void testItemCount() {
+        assertEquals(mEnv.model.getItemCount(), mAdapter.getItemCount());
+    }
+}
diff --git a/tests/functional/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java b/tests/functional/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java
index 72014f6..cf699d3 100644
--- a/tests/functional/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java
+++ b/tests/functional/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java
@@ -23,10 +23,12 @@
 
 import com.android.documentsui.ActionHandler;
 import com.android.documentsui.Model;
+import com.android.documentsui.TestConfigStore;
 import com.android.documentsui.base.State;
 import com.android.documentsui.testing.TestActionHandler;
 import com.android.documentsui.testing.TestEnv;
 import com.android.documentsui.testing.TestFileTypeLookup;
+import com.android.documentsui.testing.TestProvidersAccess;
 
 @MediumTest
 public class ModelBackedDocumentsAdapterTest extends AndroidTestCase {
@@ -35,6 +37,7 @@
 
     private TestEnv mEnv;
     private ActionHandler mActionHandler;
+    private TestConfigStore mTestConfigStore;
     private ModelBackedDocumentsAdapter mAdapter;
 
     public void setUp() {
@@ -42,13 +45,15 @@
         final Context testContext = TestContext.createStorageTestContext(getContext(), AUTHORITY);
         mEnv = TestEnv.create(AUTHORITY);
         mActionHandler = new TestActionHandler();
+        mTestConfigStore = new TestConfigStore();
 
         DocumentsAdapter.Environment env = new TestEnvironment(testContext, mEnv, mActionHandler);
 
         mAdapter = new ModelBackedDocumentsAdapter(
                 env,
-                new IconHelper(testContext, State.MODE_GRID, /* maybeShowBadge= */ false),
-                new TestFileTypeLookup());
+                new IconHelper(testContext, State.MODE_GRID, /* maybeShowBadge= */ false, null,
+                        TestProvidersAccess.OtherUser.USER_ID, null, mTestConfigStore),
+                new TestFileTypeLookup(), mTestConfigStore);
         mAdapter.getModelUpdateListener().accept(Model.Update.UPDATE);
     }
 
@@ -56,4 +61,4 @@
     public void testItemCount() {
         assertEquals(mEnv.model.getItemCount(), mAdapter.getItemCount());
     }
-}
+}
\ No newline at end of file
diff --git a/tests/lint-baseline.xml b/tests/lint-baseline.xml
new file mode 100644
index 0000000..ed87eb9
--- /dev/null
+++ b/tests/lint-baseline.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues format="6" by="lint 8.4.0-alpha01" type="baseline" client="" dependencies="true" name="" variant="all" version="8.4.0-alpha01">
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="        when(mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+        errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="85"
+            column="30"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="        when(mOverlayManager.getOverlayInfosForTarget(getDisabledTargetPackageId(),"
+        errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="89"
+            column="30"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+        errorLine1="        verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,"
+        errorLine2="                                          ~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="104"
+            column="43"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="        verify(mOverlayManager, times(1)).getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+        errorLine2="                                          ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="116"
+            column="43"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+        errorLine1="        verify(mOverlayManager, never()).setEnabled(getOverlayPackageId(), enabled,"
+        errorLine2="                                         ~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="129"
+            column="42"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="        assertThat(mOverlayManager.getOverlayInfosForTarget(getDisabledTargetPackageId(),"
+        errorLine2="                                   ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="137"
+            column="36"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayInfo#isEnabled`"
+        errorLine1="                mUserHandle).get(0).isEnabled()).isEqualTo(!enabled);"
+        errorLine2="                                    ~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="138"
+            column="37"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+        errorLine1="        verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,"
+        errorLine2="                                          ~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="146"
+            column="43"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="        assertThat(mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+        errorLine2="                                   ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="154"
+            column="36"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayInfo#isEnabled`"
+        errorLine1="                mUserHandle).get(0).isEnabled()).isEqualTo(!enabled);"
+        errorLine2="                                    ~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="155"
+            column="37"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+        errorLine1="        verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,"
+        errorLine2="                                          ~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="163"
+            column="43"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+        errorLine1="                mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+        errorLine2="                                ~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="192"
+            column="33"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 34 (current min is 29): `new android.content.om.OverlayInfo`"
+        errorLine1='        return new OverlayInfo(packageName, targetPackageName, null, null, "",'
+        errorLine2="               ~~~~~~~~~~~~~~~">
+        <location
+            file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+            line="211"
+            column="16"/>
+    </issue>
+
+</issues>
\ No newline at end of file
diff --git a/tests/unit/com/android/documentsui/AbstractActionHandlerTest.java b/tests/unit/com/android/documentsui/AbstractActionHandlerTest.java
index 3eb8ab2..104a8d7 100644
--- a/tests/unit/com/android/documentsui/AbstractActionHandlerTest.java
+++ b/tests/unit/com/android/documentsui/AbstractActionHandlerTest.java
@@ -32,7 +32,6 @@
 
 import androidx.recyclerview.selection.ItemDetailsLookup.ItemDetails;
 import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.base.DocumentStack;
 import com.android.documentsui.base.EventListener;
@@ -48,10 +47,16 @@
 import com.android.documentsui.testing.TestEventHandler;
 import com.android.documentsui.testing.TestProvidersAccess;
 import com.android.documentsui.testing.UserManagers;
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.android.collect.Lists;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 
 import java.util.Arrays;
 import java.util.concurrent.CountDownLatch;
@@ -60,19 +65,39 @@
 /**
  * A unit test *for* AbstractActionHandler, not an abstract test baseclass.
  */
-@RunWith(AndroidJUnit4.class)
+@RunWith(Parameterized.class)
 @MediumTest
 public class AbstractActionHandlerTest {
 
+    private final TestConfigStore mTestConfigStore = new TestConfigStore();
     private TestActivity mActivity;
     private TestEnv mEnv;
     private AbstractActionHandler<TestActivity> mHandler;
 
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
+
     @Before
     public void setUp() {
         mEnv = TestEnv.create();
         mActivity = TestActivity.create(mEnv);
         mActivity.userManager = UserManagers.create();
+        mEnv.state.configStore = mTestConfigStore;
+
+        isPrivateSpaceEnabled = SdkLevel.isAtLeastS() && isPrivateSpaceEnabled;
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.USER_ID, true);
+        }
         mHandler = new AbstractActionHandler<TestActivity>(
                 mActivity,
                 mEnv.state,
@@ -281,7 +306,11 @@
     @Test
     public void testCrossProfileDocuments_success() throws Exception {
         mEnv.state.action = State.ACTION_GET_CONTENT;
-        mEnv.state.canShareAcrossProfile = true;
+        if (isPrivateSpaceEnabled) {
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.OtherUser.USER_ID, true);
+        } else {
+            mEnv.state.canShareAcrossProfile = true;
+        }
         mEnv.state.stack.changeRoot(TestProvidersAccess.OtherUser.HOME);
         mEnv.state.stack.push(TestEnv.OtherUser.FOLDER_0);
 
@@ -308,7 +337,11 @@
     @Test
     public void testLoadCrossProfileDoc_failsWithQuietModeException() throws Exception {
         mEnv.state.action = State.ACTION_GET_CONTENT;
-        mEnv.state.canShareAcrossProfile = true;
+        if (isPrivateSpaceEnabled) {
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.OtherUser.USER_ID, true);
+        } else {
+            mEnv.state.canShareAcrossProfile = true;
+        }
         mEnv.state.stack.changeRoot(TestProvidersAccess.OtherUser.HOME);
         mEnv.state.stack.push(TestEnv.OtherUser.FOLDER_0);
         // Turn off the other user.
@@ -389,7 +422,11 @@
                 .setNextChildDocumentsReturns(TestEnv.OtherUser.FILE_PNG);
 
         // Disallow sharing across profile
-        mEnv.state.canShareAcrossProfile = false;
+        if (isPrivateSpaceEnabled) {
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.OtherUser.USER_ID, false);
+        } else {
+            mEnv.state.canShareAcrossProfile = false;
+        }
 
         TestEventHandler<Model.Update> listener = new TestEventHandler<>();
         mEnv.model.addUpdateListener(listener::accept);
@@ -404,7 +441,11 @@
                 .isInstanceOf(CrossProfileNoPermissionException.class);
 
         // Allow sharing across profile.
-        mEnv.state.canShareAcrossProfile = true;
+        if (isPrivateSpaceEnabled) {
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.OtherUser.USER_ID, true);
+        } else {
+            mEnv.state.canShareAcrossProfile = true;
+        }
 
         CountDownLatch latch2 = new CountDownLatch(1);
         mEnv.model.addUpdateListener(update -> latch2.countDown());
diff --git a/tests/unit/com/android/documentsui/DocumentsAccessTest.java b/tests/unit/com/android/documentsui/DocumentsAccessTest.java
index 8a08d43..f52c21b 100644
--- a/tests/unit/com/android/documentsui/DocumentsAccessTest.java
+++ b/tests/unit/com/android/documentsui/DocumentsAccessTest.java
@@ -18,27 +18,47 @@
 
 import static junit.framework.Assert.fail;
 
+import static org.mockito.Mockito.mock;
+
+import android.content.ContentProviderClient;
 import android.content.pm.PackageManager;
 
 import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.testing.TestEnv;
 import com.android.documentsui.testing.TestProvidersAccess;
+import com.android.modules.utils.build.SdkLevel;
 
 import com.google.common.collect.Lists;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 
-@RunWith(AndroidJUnit4.class)
+@RunWith(Parameterized.class)
 @MediumTest
 public class DocumentsAccessTest {
 
+    private final TestConfigStore mTestConfigStore = new TestConfigStore();
     private TestActivity mActivity;
     private DocumentsAccess mDocumentsAccess;
     private TestEnv mEnv;
+    private ContentProviderClient mMockContentProviderClient = mock(ContentProviderClient.class);
+
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
 
     @Before
     public void setUp() throws PackageManager.NameNotFoundException {
@@ -46,6 +66,11 @@
         mEnv.reset();
         mActivity = TestActivity.create(mEnv);
         mDocumentsAccess = DocumentsAccess.create(mActivity, mEnv.state);
+        mEnv.state.configStore = mTestConfigStore;
+        isPrivateSpaceEnabled = SdkLevel.isAtLeastS() && isPrivateSpaceEnabled;
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+        }
     }
 
     @Test
diff --git a/tests/unit/com/android/documentsui/GlobalSearchLoaderTest.java b/tests/unit/com/android/documentsui/GlobalSearchLoaderTest.java
index c52dbd3..3cbed80 100644
--- a/tests/unit/com/android/documentsui/GlobalSearchLoaderTest.java
+++ b/tests/unit/com/android/documentsui/GlobalSearchLoaderTest.java
@@ -27,7 +27,6 @@
 import android.provider.DocumentsContract.Document;
 
 import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.State;
@@ -38,13 +37,19 @@
 import com.android.documentsui.testing.TestFileTypeLookup;
 import com.android.documentsui.testing.TestImmediateExecutor;
 import com.android.documentsui.testing.TestProvidersAccess;
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.common.collect.Lists;
 
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 
-@RunWith(AndroidJUnit4.class)
+@RunWith(Parameterized.class)
 @MediumTest
 public class GlobalSearchLoaderTest {
 
@@ -55,13 +60,34 @@
     private TestEnv mEnv;
     private TestActivity mActivity;
     private GlobalSearchLoader mLoader;
+    private TestConfigStore mTestConfigStore;
     private Bundle mQueryArgs = new Bundle();
 
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
+
     @Before
     public void setUp() {
         mEnv = TestEnv.create();
         mActivity = TestActivity.create(mEnv);
         mActivity.activityManager = ActivityManagers.create(false);
+        mTestConfigStore = new TestConfigStore();
+        mEnv.state.configStore = mTestConfigStore;
+
+        isPrivateSpaceEnabled &= SdkLevel.isAtLeastS();
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.USER_ID, true);
+        }
 
         mEnv.state.action = State.ACTION_BROWSE;
         mEnv.state.acceptMimes = new String[]{"*/*"};
@@ -93,6 +119,7 @@
 
     @Test
     public void testNotLocalOnlyRoot_beIgnored() {
+        if (isPrivateSpaceEnabled) return;
         TestProvidersAccess.PICKLES.flags |= DocumentsContract.Root.FLAG_SUPPORTS_SEARCH;
         assertTrue(mLoader.shouldIgnoreRoot(TestProvidersAccess.PICKLES));
         TestProvidersAccess.PICKLES.flags &= ~DocumentsContract.Root.FLAG_SUPPORTS_SEARCH;
@@ -301,7 +328,11 @@
 
     @Test
     public void testSearchResult_includeBothUsersRoots() {
-        mEnv.state.canShareAcrossProfile = true;
+        if (isPrivateSpaceEnabled) {
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.OtherUser.USER_ID, true);
+        } else {
+            mEnv.state.canShareAcrossProfile = true;
+        }
         mEnv.state.supportsCrossProfile = true;
 
         final DocumentInfo pdfDoc = mEnv.model.createFile(SEARCH_STRING + ".pdf");
diff --git a/tests/unit/com/android/documentsui/ProfileTabsTest.java b/tests/unit/com/android/documentsui/ProfileTabsTest.java
index 373f4e5..8eac484 100644
--- a/tests/unit/com/android/documentsui/ProfileTabsTest.java
+++ b/tests/unit/com/android/documentsui/ProfileTabsTest.java
@@ -18,6 +18,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.junit.Assume.assumeTrue;
+
 import android.content.Context;
 import android.net.Uri;
 import android.os.UserHandle;
@@ -32,20 +34,27 @@
 import com.android.documentsui.base.UserId;
 import com.android.documentsui.testing.TestEnv;
 import com.android.documentsui.testing.TestProvidersAccess;
+import com.android.modules.utils.build.SdkLevel;
 
-import com.google.android.collect.Lists;
 import com.google.android.material.tabs.TabLayout;
+import com.google.common.collect.Lists;
 
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 
-import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
+@RunWith(Parameterized.class)
 public class ProfileTabsTest {
 
-    private final UserId systemUser = UserId.of(UserHandle.SYSTEM);
-    private final UserId managedUser = UserId.of(100);
+    private final UserId mSystemUser = UserId.of(UserHandle.SYSTEM);
+    private final UserId mManagedUser = UserId.of(100);
+    private final UserId mPrivateUser = UserId.of(101);
 
     private ProfileTabs mProfileTabs;
 
@@ -55,8 +64,22 @@
     private TestEnvironment mTestEnv;
     private State mState;
     private TestUserIdManager mTestUserIdManager;
+    private TestUserManagerState mTestUserManagerState;
     private TestCommonAddons mTestCommonAddons;
     private boolean mIsListenerInvoked;
+    private TestConfigStore mTestConfigStore;
+
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
 
     @Before
     public void setUp() {
@@ -76,14 +99,21 @@
         mTestEnv = new TestEnvironment();
         mTestEnv.isSearchExpanded = false;
 
-        mTestUserIdManager = new TestUserIdManager();
+        isPrivateSpaceEnabled = SdkLevel.isAtLeastS() && isPrivateSpaceEnabled;
+        if (isPrivateSpaceEnabled) {
+            mTestUserManagerState = new TestUserManagerState();
+        } else {
+            mTestUserIdManager = new TestUserIdManager();
+        }
+
         mTestCommonAddons = new TestCommonAddons();
         mTestCommonAddons.mCurrentRoot = TestProvidersAccess.DOWNLOADS;
+        mTestConfigStore = new TestConfigStore();
     }
 
     @Test
     public void testUpdateView_singleUser_shouldHide() {
-        initializeWithUsers(systemUser);
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser);
 
         assertThat(mTabLayoutContainer.getVisibility()).isEqualTo(View.GONE);
         assertThat(mTabLayout.getTabCount()).isEqualTo(0);
@@ -91,23 +121,40 @@
 
     @Test
     public void testUpdateView_twoUsers_shouldShow() {
-        initializeWithUsers(systemUser, managedUser);
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser, mManagedUser);
 
         assertThat(mTabLayoutContainer.getVisibility()).isEqualTo(View.VISIBLE);
         assertThat(mTabLayout.getTabCount()).isEqualTo(2);
 
         TabLayout.Tab tab1 = mTabLayout.getTabAt(0);
-        assertThat(tab1.getTag()).isEqualTo(systemUser);
+        assertThat(tab1.getTag()).isEqualTo(mSystemUser);
         assertThat(tab1.getText()).isEqualTo(mContext.getString(R.string.personal_tab));
 
         TabLayout.Tab tab2 = mTabLayout.getTabAt(1);
-        assertThat(tab2.getTag()).isEqualTo(managedUser);
+        assertThat(tab2.getTag()).isEqualTo(mManagedUser);
         assertThat(tab2.getText()).isEqualTo(mContext.getString(R.string.work_tab));
     }
 
     @Test
+    public void testUpdateView_multiUsers_shouldShow() {
+        assumeTrue(SdkLevel.isAtLeastV() && isPrivateSpaceEnabled);
+        initializeWithUsers(true, mSystemUser, mManagedUser, mPrivateUser);
+
+        assertThat(mTabLayoutContainer.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(mTabLayout.getTabCount()).isEqualTo(3);
+
+        final Map<UserId, String> userIdToLabelMap = mTestUserManagerState.getUserIdToLabelMap();
+        for (int i = 0; i < 3; ++i) {
+            TabLayout.Tab tab = mTabLayout.getTabAt(i);
+            assertThat(tab).isNotNull();
+            UserId userId = (UserId) tab.getTag();
+            assertThat(tab.getText()).isEqualTo(userIdToLabelMap.get(userId));
+        }
+    }
+
+    @Test
     public void testUpdateView_twoUsers_doesNotSupportCrossProfile_shouldHide() {
-        initializeWithUsers(systemUser, managedUser);
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser, mManagedUser);
 
         mState.supportsCrossProfile = false;
         mProfileTabs.updateView();
@@ -117,7 +164,7 @@
 
     @Test
     public void testUpdateView_twoUsers_subFolder_shouldHide() {
-        initializeWithUsers(systemUser, managedUser);
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser, mManagedUser);
 
         // Push 1 more folder. Now the stack has size of 2.
         mState.stack.push(TestEnv.FOLDER_1);
@@ -129,7 +176,7 @@
 
     @Test
     public void testUpdateView_twoUsers_recents_subFolder_shouldHide() {
-        initializeWithUsers(systemUser, managedUser);
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser, mManagedUser);
 
         mState.stack.changeRoot(TestProvidersAccess.RECENTS);
         // This(stack of size 2 in Recents) may not happen in real world.
@@ -142,7 +189,7 @@
 
     @Test
     public void testUpdateView_twoUsers_thirdParty_shouldHide() {
-        initializeWithUsers(systemUser, managedUser);
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser, mManagedUser);
 
         mState.stack.changeRoot(TestProvidersAccess.PICKLES);
         mState.stack.push((TestEnv.FOLDER_0));
@@ -155,7 +202,7 @@
     @Test
     public void testUpdateView_twoUsers_isSearching_shouldHide() {
         mTestEnv.isSearchExpanded = true;
-        initializeWithUsers(systemUser, managedUser);
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser, mManagedUser);
 
         assertThat(mTabLayoutContainer.getVisibility()).isEqualTo(View.GONE);
         assertThat(mTabLayout.getTabCount()).isEqualTo(2);
@@ -163,78 +210,149 @@
 
     @Test
     public void testUpdateView_getSelectedUser_afterUsersChanged() {
-        initializeWithUsers(systemUser, managedUser);
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser, mManagedUser);
         mProfileTabs.updateView();
         mTabLayout.selectTab(mTabLayout.getTabAt(1));
         assertThat(mTabLayoutContainer.getVisibility()).isEqualTo(View.VISIBLE);
-        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(managedUser);
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mManagedUser);
 
-        mTestUserIdManager.userIds = Collections.singletonList(systemUser);
+        if (isPrivateSpaceEnabled) {
+            mTestUserManagerState.userIds = Lists.newArrayList(mSystemUser);
+        } else {
+            mTestUserIdManager.userIds = Lists.newArrayList(mSystemUser);
+        }
         mProfileTabs.updateView();
         assertThat(mTabLayoutContainer.getVisibility()).isEqualTo(View.GONE);
-        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(systemUser);
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mSystemUser);
     }
 
     @Test
     public void testUpdateView_afterCurrentRootChanged_shouldChangeSelectedUser() {
-        initializeWithUsers(systemUser, managedUser);
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser, mManagedUser);
         mProfileTabs.updateView();
 
-        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(systemUser);
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mSystemUser);
 
         RootInfo newRoot = RootInfo.copyRootInfo(mTestCommonAddons.mCurrentRoot);
-        newRoot.userId = managedUser;
+        newRoot.userId = mManagedUser;
         mTestCommonAddons.mCurrentRoot = newRoot;
         mProfileTabs.updateView();
 
-        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(managedUser);
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mManagedUser);
         // updating view should not trigger listener callback.
         assertThat(mIsListenerInvoked).isFalse();
     }
 
     @Test
-    public void testgetSelectedUser_twoUsers() {
-        initializeWithUsers(systemUser, managedUser);
+    public void testUpdateView_afterCurrentRootChangedMultiUser_shouldChangeSelectedUser() {
+        assumeTrue(SdkLevel.isAtLeastV() && isPrivateSpaceEnabled);
+        initializeWithUsers(true, mSystemUser, mManagedUser, mPrivateUser);
+        mProfileTabs.updateView();
+
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mSystemUser);
+
+        for (UserId userId : Lists.newArrayList(mManagedUser, mPrivateUser)) {
+            RootInfo newRoot = RootInfo.copyRootInfo(mTestCommonAddons.mCurrentRoot);
+            newRoot.userId = userId;
+            mTestCommonAddons.mCurrentRoot = newRoot;
+            mProfileTabs.updateView();
+
+            assertThat(mProfileTabs.getSelectedUser()).isEqualTo(userId);
+            // updating view should not trigger listener callback.
+            assertThat(mIsListenerInvoked).isFalse();
+        }
+    }
+
+    @Test
+    public void testUpdateView_afterSelectedUserBecomesUnavailable_shouldSwitchToCurrentUser() {
+        // here current user refers to UserId.CURRENT_USER, which in this case will be mSystemUser
+        assumeTrue(SdkLevel.isAtLeastV() && isPrivateSpaceEnabled);
+        initializeWithUsers(true, mSystemUser, mManagedUser, mPrivateUser);
+
+        mTabLayout.selectTab(mTabLayout.getTabAt(2));
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mPrivateUser);
+
+        mTestUserManagerState.userIds.remove(mPrivateUser);
+        mTestUserManagerState.userIdToLabelMap.remove(mPrivateUser);
+        mProfileTabs.updateView();
+
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mSystemUser);
+    }
+
+    @Test
+    public void testGetSelectedUser_twoUsers() {
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser, mManagedUser);
 
         mTabLayout.selectTab(mTabLayout.getTabAt(0));
-        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(systemUser);
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mSystemUser);
 
         mTabLayout.selectTab(mTabLayout.getTabAt(1));
-        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(managedUser);
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mManagedUser);
         assertThat(mIsListenerInvoked).isTrue();
     }
 
     @Test
+    public void testGetSelectedUser_multiUsers() {
+        assumeTrue(SdkLevel.isAtLeastV() && isPrivateSpaceEnabled);
+        initializeWithUsers(true, mSystemUser, mManagedUser, mPrivateUser);
+
+        List<UserId> expectedProfiles = Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser);
+
+        for (int i = 0; i < 3; ++i) {
+            mTabLayout.selectTab(mTabLayout.getTabAt(i));
+            assertThat(mProfileTabs.getSelectedUser()).isEqualTo(expectedProfiles.get(i));
+            if (i == 0) continue;
+            assertThat(mIsListenerInvoked).isTrue();
+        }
+    }
+
+    @Test
     public void testReselectedUser_doesNotInvokeListener() {
-        initializeWithUsers(systemUser, managedUser);
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser, mManagedUser);
 
         assertThat(mTabLayout.getSelectedTabPosition()).isAtLeast(0);
-        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(systemUser);
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mSystemUser);
 
         mTabLayout.selectTab(mTabLayout.getTabAt(0));
-        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(systemUser);
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mSystemUser);
         assertThat(mIsListenerInvoked).isFalse();
     }
 
     @Test
-    public void testgetSelectedUser_singleUsers() {
-        initializeWithUsers(systemUser);
+    public void testGetSelectedUser_singleUsers() {
+        initializeWithUsers(isPrivateSpaceEnabled, mSystemUser);
 
-        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(systemUser);
+        assertThat(mProfileTabs.getSelectedUser()).isEqualTo(mSystemUser);
     }
 
-    private void initializeWithUsers(UserId... userIds) {
-        mTestUserIdManager.userIds = Lists.newArrayList(userIds);
-        for (UserId userId : userIds) {
-            if (userId.isSystem()) {
-                mTestUserIdManager.systemUser = userId;
-            } else {
-                mTestUserIdManager.managedUser = userId;
+    private void initializeWithUsers(boolean isPrivateSpaceEnabled, UserId... userIds) {
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            mTestUserManagerState.userIds = Lists.newArrayList(userIds);
+            for (UserId userId : userIds) {
+                if (userId.isSystem()) {
+                    mTestUserManagerState.userIdToLabelMap.put(userId, "Personal");
+                } else if (userId.getIdentifier() == 100) {
+                    mTestUserManagerState.userIdToLabelMap.put(userId, "Work");
+                } else {
+                    mTestUserManagerState.userIdToLabelMap.put(userId, "Private");
+                }
             }
+            mProfileTabs = new ProfileTabs(mTabLayoutContainer, mState, mTestUserManagerState,
+                    mTestEnv, mTestCommonAddons, mTestConfigStore);
+        } else {
+            mTestConfigStore.disablePrivateSpaceInPhotoPicker();
+            mTestUserIdManager.userIds = Lists.newArrayList(userIds);
+            for (UserId userId : userIds) {
+                if (userId.isSystem()) {
+                    mTestUserIdManager.systemUser = userId;
+                } else {
+                    mTestUserIdManager.managedUser = userId;
+                }
+            }
+            mProfileTabs = new ProfileTabs(mTabLayoutContainer, mState, mTestUserIdManager,
+                    mTestEnv, mTestCommonAddons, mTestConfigStore);
         }
-
-        mProfileTabs = new ProfileTabs(mTabLayoutContainer, mState, mTestUserIdManager, mTestEnv,
-                mTestCommonAddons);
         mProfileTabs.updateView();
         mProfileTabs.setListener(userId -> mIsListenerInvoked = true);
     }
diff --git a/tests/unit/com/android/documentsui/RecentsLoaderTests.java b/tests/unit/com/android/documentsui/RecentsLoaderTests.java
index 915a3bd..bf8c97e 100644
--- a/tests/unit/com/android/documentsui/RecentsLoaderTests.java
+++ b/tests/unit/com/android/documentsui/RecentsLoaderTests.java
@@ -29,7 +29,6 @@
 import android.provider.DocumentsContract.Document;
 
 import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.State;
@@ -41,21 +40,40 @@
 import com.android.documentsui.testing.TestImmediateExecutor;
 import com.android.documentsui.testing.TestProvidersAccess;
 import com.android.documentsui.testing.UserManagers;
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.common.collect.Lists;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-@RunWith(AndroidJUnit4.class)
+@RunWith(Parameterized.class)
 @MediumTest
 public class RecentsLoaderTests {
 
     private TestEnv mEnv;
     private TestActivity mActivity;
     private RecentsLoader mLoader;
+    private TestConfigStore mTestConfigStore;
+
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parameterized test to run all the tests in this class twice, once with private space enabled
+     * and once with private space disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
 
     @Before
     public void setUp() {
@@ -63,14 +81,23 @@
         mActivity = TestActivity.create(mEnv);
         mActivity.activityManager = ActivityManagers.create(false);
         mActivity.userManager = UserManagers.create();
+        mTestConfigStore = new TestConfigStore();
+        mEnv.state.configStore = mTestConfigStore;
 
         mEnv.state.action = State.ACTION_BROWSE;
-        mEnv.state.acceptMimes = new String[] { "*/*" };
-        mEnv.state.canShareAcrossProfile = true;
+        mEnv.state.acceptMimes = new String[]{"*/*"};
+        isPrivateSpaceEnabled = SdkLevel.isAtLeastS() && isPrivateSpaceEnabled;
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            mEnv.state.canForwardToProfileIdMap.put(UserId.DEFAULT_USER, true);
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.OtherUser.USER_ID, true);
+        } else {
+            mEnv.state.canShareAcrossProfile = true;
+        }
 
         mLoader = new RecentsLoader(mActivity, mEnv.providers, mEnv.state,
                 TestImmediateExecutor.createLookup(), new TestFileTypeLookup(),
-                UserId.DEFAULT_USER);
+                TestProvidersAccess.USER_ID);
     }
 
     @Test
@@ -113,7 +140,7 @@
         mEnv.mockProviders.get(TestProvidersAccess.HOME.authority)
                 .setNextRecentDocumentsReturns(doc1, doc2);
 
-        assertEquals(false, mLoader.mState.showHiddenFiles);
+        assertFalse(mLoader.mState.showHiddenFiles);
         DirectoryResult result = mLoader.loadInBackground();
         assertEquals(0, result.getCursor().getCount());
 
@@ -172,7 +199,11 @@
 
     @Test
     public void testLoaderOnUserWithoutPermission() {
-        mEnv.state.canShareAcrossProfile = false;
+        if (isPrivateSpaceEnabled) {
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.OtherUser.USER_ID, false);
+        } else {
+            mEnv.state.canShareAcrossProfile = false;
+        }
         mLoader = new RecentsLoader(mActivity, mEnv.providers, mEnv.state,
                 TestImmediateExecutor.createLookup(), new TestFileTypeLookup(),
                 TestProvidersAccess.OtherUser.USER_ID);
diff --git a/tests/unit/com/android/documentsui/UserManagerStateTest.java b/tests/unit/com/android/documentsui/UserManagerStateTest.java
new file mode 100644
index 0000000..25c7607
--- /dev/null
+++ b/tests/unit/com/android/documentsui/UserManagerStateTest.java
@@ -0,0 +1,681 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.documentsui;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.Manifest;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.UserProperties;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import androidx.test.filters.SdkSuppress;
+import androidx.test.filters.SmallTest;
+
+import com.android.documentsui.base.UserId;
+import com.android.documentsui.testing.UserManagers;
+import com.android.documentsui.util.VersionUtils;
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.common.collect.Lists;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@SmallTest
+@SdkSuppress(minSdkVersion = 31, codeName = "S")
+public class UserManagerStateTest {
+
+    private final UserHandle mSystemUser = UserHandle.SYSTEM;
+    private final UserHandle mManagedUser = UserHandle.of(100);
+    private final UserHandle mPrivateUser = UserHandle.of(101);
+    private final UserHandle mOtherUser = UserHandle.of(102);
+    private final UserHandle mNormalUser = UserHandle.of(103);
+
+    private final ResolveInfo mMockInfo1 = mock(ResolveInfo.class);
+    private final ResolveInfo mMockInfo2 = mock(ResolveInfo.class);
+    private final ResolveInfo mMockInfo3 = mock(ResolveInfo.class);
+
+    private final Context mMockContext = mock(Context.class);
+    private final Intent mMockIntent = mock(Intent.class);
+    private final UserManager mMockUserManager = UserManagers.create();
+    private final PackageManager mMockPackageManager = mock(PackageManager.class);
+    private UserManagerState mUserManagerState;
+
+    @Before
+    public void setup() throws Exception {
+        when(mMockContext.getApplicationContext()).thenReturn(mMockContext);
+
+        when(mMockUserManager.isManagedProfile(mManagedUser.getIdentifier())).thenReturn(true);
+        when(mMockUserManager.isManagedProfile(mSystemUser.getIdentifier())).thenReturn(false);
+        when(mMockUserManager.isManagedProfile(mPrivateUser.getIdentifier())).thenReturn(false);
+        when(mMockUserManager.isManagedProfile(mOtherUser.getIdentifier())).thenReturn(false);
+
+        if (SdkLevel.isAtLeastV()) {
+            UserProperties systemUserProperties = new UserProperties.Builder()
+                    .setShowInSharingSurfaces(UserProperties.SHOW_IN_SHARING_SURFACES_SEPARATE)
+                    .setCrossProfileContentSharingStrategy(
+                            UserProperties.CROSS_PROFILE_CONTENT_SHARING_NO_DELEGATION)
+                    .build();
+            UserProperties managedUserProperties = new UserProperties.Builder()
+                    .setShowInSharingSurfaces(UserProperties.SHOW_IN_SHARING_SURFACES_SEPARATE)
+                    .setCrossProfileContentSharingStrategy(
+                            UserProperties.CROSS_PROFILE_CONTENT_SHARING_NO_DELEGATION)
+                    .setShowInQuietMode(UserProperties.SHOW_IN_QUIET_MODE_PAUSED)
+                    .build();
+            UserProperties privateUserProperties = new UserProperties.Builder()
+                    .setShowInSharingSurfaces(UserProperties.SHOW_IN_SHARING_SURFACES_SEPARATE)
+                    .setCrossProfileContentSharingStrategy(
+                            UserProperties.CROSS_PROFILE_CONTENT_SHARING_DELEGATE_FROM_PARENT)
+                    .setShowInQuietMode(UserProperties.SHOW_IN_QUIET_MODE_HIDDEN)
+                    .build();
+            UserProperties otherUserProperties = new UserProperties.Builder()
+                    .setShowInSharingSurfaces(UserProperties.SHOW_IN_SHARING_SURFACES_WITH_PARENT)
+                    .setCrossProfileContentSharingStrategy(
+                            UserProperties.CROSS_PROFILE_CONTENT_SHARING_DELEGATE_FROM_PARENT)
+                    .build();
+            UserProperties normalUserProperties = new UserProperties.Builder()
+                    .setShowInSharingSurfaces(UserProperties.SHOW_IN_SHARING_SURFACES_NO)
+                    .setCrossProfileContentSharingStrategy(
+                            UserProperties.CROSS_PROFILE_CONTENT_SHARING_DELEGATE_FROM_PARENT)
+                    .build();
+            when(mMockUserManager.getUserProperties(mSystemUser)).thenReturn(systemUserProperties);
+            when(mMockUserManager.getUserProperties(mManagedUser)).thenReturn(
+                    managedUserProperties);
+            when(mMockUserManager.getUserProperties(mPrivateUser)).thenReturn(
+                    privateUserProperties);
+            when(mMockUserManager.getUserProperties(mOtherUser)).thenReturn(otherUserProperties);
+            when(mMockUserManager.getUserProperties(mNormalUser)).thenReturn(normalUserProperties);
+        }
+
+        when(mMockUserManager.getProfileParent(mSystemUser)).thenReturn(mSystemUser);
+        when(mMockUserManager.getProfileParent(mManagedUser)).thenReturn(mSystemUser);
+        when(mMockUserManager.getProfileParent(mPrivateUser)).thenReturn(mSystemUser);
+        when(mMockUserManager.getProfileParent(mOtherUser)).thenReturn(mSystemUser);
+        when(mMockUserManager.getProfileParent(mNormalUser)).thenReturn(null);
+
+        if (SdkLevel.isAtLeastR()) {
+            when(mMockInfo1.isCrossProfileIntentForwarderActivity()).thenReturn(true);
+            when(mMockInfo2.isCrossProfileIntentForwarderActivity()).thenReturn(false);
+            when(mMockInfo3.isCrossProfileIntentForwarderActivity()).thenReturn(false);
+        }
+
+        when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager);
+        when(mMockContext.getSystemServiceName(UserManager.class)).thenReturn("mMockUserManager");
+        when(mMockContext.getSystemService(UserManager.class)).thenReturn(mMockUserManager);
+    }
+
+    @Test
+    public void testGetUserIds_onlySystemUser_returnsSystemUser() {
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser));
+
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds()).containsExactly(UserId.of(mSystemUser));
+    }
+
+    @Test
+    public void testGetUserIds_allProfilesCurrentUserSystem_allShowInSharingSurfacesSeparate() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser, mOtherUser,
+                        mNormalUser));
+
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mSystemUser), UserId.of(mManagedUser),
+                        UserId.of(mPrivateUser));
+    }
+
+    @Test
+    public void testGetUserIds_allProfilesCurrentUserManaged_allShowInSharingSurfacesSeparate() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mManagedUser);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser, mOtherUser,
+                        mNormalUser));
+
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mSystemUser), UserId.of(mManagedUser),
+                        UserId.of(mPrivateUser));
+    }
+
+    @Test
+    public void testGetUserIds_allProfilesCurrentUserPrivate_allShowInSharingSurfacesSeparate() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mPrivateUser);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser, mOtherUser));
+
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mSystemUser), UserId.of(mManagedUser),
+                        UserId.of(mPrivateUser));
+    }
+
+    @Test
+    public void testGetUserIds_systemAndManagedUserCurrentUserSystem_returnsBoth() {
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser));
+
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mSystemUser), UserId.of(mManagedUser));
+    }
+
+    @Test
+    public void testGetUserIds_systemAndManagedUserCurrentUserManaged_returnsBoth() {
+        UserId currentUser = UserId.of(mManagedUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser));
+
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mSystemUser), UserId.of(mManagedUser));
+    }
+
+    @Test
+    public void testGetUserIds_systemAndPrivateUserCurrentUserSystem_returnsBoth() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mPrivateUser));
+
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mSystemUser), UserId.of(mPrivateUser));
+    }
+
+    @Test
+    public void testGetUserIds_systemAndPrivateUserCurrentUserPrivate_returnsBoth() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mPrivateUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mPrivateUser));
+
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mSystemUser), UserId.of(mPrivateUser));
+    }
+
+    @Test
+    public void testGetUserIds_systemAndOtherUserCurrentUserOtherPreV_returnsCurrentUser() {
+        if (SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mOtherUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mOtherUser));
+
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(currentUser);
+    }
+
+    @Test
+    public void testGetUserIds_systemAndOtherUserCurrentUserOtherPostV_returnsSystemUser() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mOtherUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mOtherUser));
+
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mSystemUser));
+    }
+
+    @Test
+    public void testGetUserIds_normalAndOtherUserCurrentUserNormal_returnsCurrentUser() {
+        // since both users do not have show in sharing surfaces separate, returns current user
+        UserId currentUser = UserId.of(mNormalUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mOtherUser, mNormalUser));
+
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mNormalUser));
+    }
+
+    @Test
+    public void testGetUserIds_systemAndManagedUserCurrentUserSystem_returnsBothInOrder() {
+        // Returns the both if there are system and managed users.
+        if (SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser));
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mSystemUser), UserId.of(mManagedUser)).inOrder();
+    }
+
+    @Test
+    public void testGetUserIds_systemAndManagedUserCurrentUserManaged_returnsBothInOrder() {
+        // Returns the both if there are system and managed users.
+        if (SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mManagedUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser));
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mSystemUser), UserId.of(mManagedUser)).inOrder();
+    }
+
+    @Test
+    public void testGetUserIds_managedAndSystemUserCurrentUserSystem_returnsBothInOrder() {
+        // Returns the both if there are system and managed users, regardless of input list order.
+        if (SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mManagedUser, mSystemUser));
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds())
+                .containsExactly(UserId.of(mSystemUser), UserId.of(mManagedUser)).inOrder();
+    }
+
+    @Test
+    public void testGetUserIds_otherAndManagedUserCurrentUserOtherPreV_returnsCurrentUser() {
+        // When there is no system user, returns the current user.
+        // This is a case theoretically can happen but we don't expect. So we return the current
+        // user only.
+        if (SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mOtherUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mOtherUser, mManagedUser));
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds()).containsExactly(currentUser);
+    }
+
+    @Test
+    public void testGetUserIds_otherAndManagedUserCurrentUserOtherPostV_returnsManagedUser() {
+        // Only the users with show in sharing surfaces separate are eligible to be returned
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mOtherUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mOtherUser, mManagedUser));
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds()).containsExactly(UserId.of(mManagedUser));
+    }
+
+    @Test
+    public void testGetUserIds_otherAndManagedUserCurrentUserManaged_returnsCurrentUser() {
+        // When there is no system user, returns the current user.
+        // This is a case theoretically can happen, but we don't expect. So we return the current
+        // user only.
+        UserId currentUser = UserId.of(mManagedUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mOtherUser, mManagedUser));
+        assertWithMessage("getUserIds returns unexpected list of user ids")
+                .that(mUserManagerState.getUserIds()).containsExactly(currentUser);
+    }
+
+    @Test
+    public void testGetUserIds_unsupportedDeviceCurrent_returnsCurrentUser() {
+        // This test only tests for Android R or later. This test case always passes before R.
+        if (VersionUtils.isAtLeastR()) {
+            // When permission is denied, only returns the current user.
+            when(mMockContext.checkSelfPermission(Manifest.permission.INTERACT_ACROSS_USERS))
+                    .thenReturn(PackageManager.PERMISSION_DENIED);
+            UserId currentUser = UserId.of(mSystemUser);
+            when(mMockUserManager.getUserProfiles()).thenReturn(
+                    Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser, mOtherUser));
+            mUserManagerState = UserManagerState.create(mMockContext);
+            assertWithMessage("Unsupported device should have returned only the current user")
+                    .that(mUserManagerState.getUserIds()).containsExactly(currentUser);
+        }
+    }
+
+    @Test
+    public void testGetUserIds_returnCachedList() {
+        // Returns all three if there are system, managed and private users.
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser, mOtherUser));
+        assertWithMessage("getUserIds does not return cached instance")
+                .that(mUserManagerState.getUserIds())
+                .isSameInstanceAs(mUserManagerState.getUserIds());
+    }
+
+    @Test
+    public void testGetCanForwardToProfileIdMap_systemUserCanForwardToAll() {
+        UserId currentUser = UserId.of(mSystemUser);
+        final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfo1, mMockInfo2);
+        if (SdkLevel.isAtLeastV()) {
+            initializeUserManagerState(currentUser,
+                    Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser));
+            when(mMockPackageManager.queryIntentActivitiesAsUser(mMockIntent,
+                    PackageManager.MATCH_DEFAULT_ONLY, mSystemUser)).thenReturn(
+                    mMockResolveInfoList);
+        } else {
+            initializeUserManagerState(currentUser,
+                    Lists.newArrayList(mSystemUser, mManagedUser));
+            when(mMockPackageManager.queryIntentActivities(mMockIntent,
+                    PackageManager.MATCH_DEFAULT_ONLY)).thenReturn(mMockResolveInfoList);
+        }
+
+        Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>();
+        expectedCanForwardToProfileIdMap.put(UserId.of(mSystemUser), true);
+        expectedCanForwardToProfileIdMap.put(UserId.of(mManagedUser), true);
+        if (SdkLevel.isAtLeastV()) {
+            expectedCanForwardToProfileIdMap.put(UserId.of(mPrivateUser), true);
+        }
+
+        assertWithMessage("getCanForwardToProfileIdMap returns incorrect mappings")
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent))
+                .isEqualTo(expectedCanForwardToProfileIdMap);
+    }
+
+    @Test
+    public void testGetCanForwardToProfileIdMap_systemUserCanForwardToManaged() {
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser));
+        final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfo1, mMockInfo2);
+        if (SdkLevel.isAtLeastV()) {
+            when(mMockPackageManager.queryIntentActivitiesAsUser(mMockIntent,
+                    PackageManager.MATCH_DEFAULT_ONLY, mSystemUser)).thenReturn(
+                    mMockResolveInfoList);
+        } else {
+            when(mMockPackageManager.queryIntentActivities(mMockIntent,
+                    PackageManager.MATCH_DEFAULT_ONLY)).thenReturn(mMockResolveInfoList);
+        }
+
+        Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>();
+        expectedCanForwardToProfileIdMap.put(UserId.of(mSystemUser), true);
+        expectedCanForwardToProfileIdMap.put(UserId.of(mManagedUser), true);
+
+        assertWithMessage("getCanForwardToProfileIdMap returns incorrect mappings")
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent))
+                .isEqualTo(expectedCanForwardToProfileIdMap);
+    }
+
+    @Test
+    public void testGetCanForwardToProfileIdMap_systemUserCanAlwaysForwardToPrivate() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mPrivateUser));
+
+        Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>();
+        expectedCanForwardToProfileIdMap.put(UserId.of(mSystemUser), true);
+        expectedCanForwardToProfileIdMap.put(UserId.of(mPrivateUser), true);
+
+        assertWithMessage("getCanForwardToProfileIdMap returns incorrect mappings")
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent))
+                .isEqualTo(expectedCanForwardToProfileIdMap);
+    }
+
+    @Test
+    public void testGetCanForwardToProfileIdMap_systemUserCanNotForwardToManagedUser() {
+        UserId currentUser = UserId.of(mSystemUser);
+        final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfo2, mMockInfo3);
+        if (SdkLevel.isAtLeastV()) {
+            initializeUserManagerState(currentUser,
+                    Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser));
+            when(mMockPackageManager.queryIntentActivitiesAsUser(mMockIntent,
+                    PackageManager.MATCH_DEFAULT_ONLY, mSystemUser)).thenReturn(
+                    mMockResolveInfoList);
+        } else {
+            initializeUserManagerState(currentUser,
+                    Lists.newArrayList(mSystemUser, mManagedUser));
+            when(mMockPackageManager.queryIntentActivities(mMockIntent,
+                    PackageManager.MATCH_DEFAULT_ONLY)).thenReturn(mMockResolveInfoList);
+        }
+
+        Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>();
+        expectedCanForwardToProfileIdMap.put(UserId.of(mSystemUser), true);
+        expectedCanForwardToProfileIdMap.put(UserId.of(mManagedUser), false);
+        if (SdkLevel.isAtLeastV()) {
+            expectedCanForwardToProfileIdMap.put(UserId.of(mPrivateUser), true);
+        }
+
+        assertWithMessage("getCanForwardToProfileIdMap returns incorrect mappings")
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent))
+                .isEqualTo(expectedCanForwardToProfileIdMap);
+    }
+
+    @Test
+    public void testGetCanForwardToProfileIdMap_managedCanForwardToAll() {
+        UserId currentUser = UserId.of(mManagedUser);
+        final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfo1, mMockInfo2);
+        if (SdkLevel.isAtLeastV()) {
+            initializeUserManagerState(currentUser,
+                    Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser));
+            when(mMockPackageManager.queryIntentActivitiesAsUser(mMockIntent,
+                    PackageManager.MATCH_DEFAULT_ONLY, mManagedUser)).thenReturn(
+                    mMockResolveInfoList);
+        } else {
+            initializeUserManagerState(currentUser,
+                    Lists.newArrayList(mSystemUser, mManagedUser));
+            when(mMockPackageManager.queryIntentActivities(mMockIntent,
+                    PackageManager.MATCH_DEFAULT_ONLY)).thenReturn(mMockResolveInfoList);
+        }
+
+        Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>();
+        expectedCanForwardToProfileIdMap.put(UserId.of(mSystemUser), true);
+        expectedCanForwardToProfileIdMap.put(UserId.of(mManagedUser), true);
+        if (SdkLevel.isAtLeastV()) {
+            expectedCanForwardToProfileIdMap.put(UserId.of(mPrivateUser), true);
+        }
+
+        assertWithMessage("getCanForwardToProfileIdMap returns incorrect mappings")
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent))
+                .isEqualTo(expectedCanForwardToProfileIdMap);
+    }
+
+    @Test
+    public void testGetCanForwardToProfileIdMap_managedCanNotForwardToAll() {
+        UserId currentUser = UserId.of(mManagedUser);
+        final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfo2, mMockInfo3);
+
+        if (SdkLevel.isAtLeastV()) {
+            initializeUserManagerState(currentUser,
+                    Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser));
+            when(mMockPackageManager.queryIntentActivitiesAsUser(mMockIntent,
+                    PackageManager.MATCH_DEFAULT_ONLY, mSystemUser)).thenReturn(
+                    mMockResolveInfoList);
+        } else {
+            initializeUserManagerState(currentUser,
+                    Lists.newArrayList(mSystemUser, mManagedUser));
+            when(mMockPackageManager.queryIntentActivities(mMockIntent,
+                    PackageManager.MATCH_DEFAULT_ONLY)).thenReturn(mMockResolveInfoList);
+        }
+
+        Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>();
+        expectedCanForwardToProfileIdMap.put(UserId.of(mSystemUser), false);
+        expectedCanForwardToProfileIdMap.put(UserId.of(mManagedUser), true);
+        if (SdkLevel.isAtLeastV()) {
+            expectedCanForwardToProfileIdMap.put(UserId.of(mPrivateUser), false);
+        }
+
+        assertWithMessage("getCanForwardToProfileIdMap returns incorrect mappings")
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent))
+                .isEqualTo(expectedCanForwardToProfileIdMap);
+    }
+
+    @Test
+    public void testGetCanForwardToProfileIdMap_privateCanForwardToAll() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mPrivateUser);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser));
+        final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfo1, mMockInfo2);
+        when(mMockPackageManager.queryIntentActivitiesAsUser(mMockIntent,
+                PackageManager.MATCH_DEFAULT_ONLY, mSystemUser)).thenReturn(mMockResolveInfoList);
+
+        Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>();
+        expectedCanForwardToProfileIdMap.put(UserId.of(mSystemUser), true);
+        expectedCanForwardToProfileIdMap.put(UserId.of(mManagedUser), true);
+        expectedCanForwardToProfileIdMap.put(UserId.of(mPrivateUser), true);
+
+        assertWithMessage("getCanForwardToProfileIdMap returns incorrect mappings")
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent))
+                .isEqualTo(expectedCanForwardToProfileIdMap);
+    }
+
+    @Test
+    public void testGetCanForwardToProfileIdMap_privateCanNotForwardToManagedUser() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mPrivateUser);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser));
+        final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfo2, mMockInfo3);
+        when(mMockPackageManager.queryIntentActivitiesAsUser(mMockIntent,
+                PackageManager.MATCH_DEFAULT_ONLY, mSystemUser)).thenReturn(mMockResolveInfoList);
+
+        Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>();
+        expectedCanForwardToProfileIdMap.put(UserId.of(mSystemUser), true);
+        expectedCanForwardToProfileIdMap.put(UserId.of(mManagedUser), false);
+        expectedCanForwardToProfileIdMap.put(UserId.of(mPrivateUser), true);
+
+        assertWithMessage("getCanForwardToProfileIdMap returns incorrect mappings")
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent))
+                .isEqualTo(expectedCanForwardToProfileIdMap);
+    }
+
+    @Test
+    public void testGetCanForwardToProfileIdMap_privateCanAlwaysForwardToSystemUser() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mPrivateUser);
+        initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mPrivateUser));
+
+        Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>();
+        expectedCanForwardToProfileIdMap.put(UserId.of(mSystemUser), true);
+        expectedCanForwardToProfileIdMap.put(UserId.of(mPrivateUser), true);
+
+        assertWithMessage("getCanForwardToProfileIdMap returns incorrect mappings")
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent))
+                .isEqualTo(expectedCanForwardToProfileIdMap);
+    }
+
+    @Test
+    public void testOnProfileStatusChange_anyIntentActionOnManagedProfile() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser));
+
+        // UserManagerState#mUserId and UserManagerState#mCanForwardToProfileIdMap will empty
+        // by default if the getters of these member variables have not been called
+        List<UserId> userIdsBeforeIntent = new ArrayList<>(mUserManagerState.getUserIds());
+        Map<UserId, Boolean> canForwardToProfileIdMapBeforeIntent = new HashMap<>(
+                mUserManagerState.getCanForwardToProfileIdMap(mMockIntent));
+
+        String action = "any_intent";
+        mUserManagerState.onProfileActionStatusChange(action, UserId.of(mManagedUser));
+
+        assertWithMessage("Unexpected changes to user id list on receiving intent: " + action)
+                .that(mUserManagerState.getUserIds()).isEqualTo(userIdsBeforeIntent);
+        assertWithMessage(
+                "Unexpected changes to canForwardToProfileIdMap on receiving intent: " + action)
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent)).isEqualTo(
+                        canForwardToProfileIdMapBeforeIntent);
+    }
+
+    @Test
+    public void testOnProfileStatusChange_actionProfileUnavailableOnPrivateProfile() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        UserId managedUser = UserId.of(mManagedUser);
+        UserId privateUser = UserId.of(mPrivateUser);
+        final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfo1, mMockInfo2);
+        when(mMockPackageManager.queryIntentActivitiesAsUser(mMockIntent,
+                PackageManager.MATCH_DEFAULT_ONLY, mSystemUser)).thenReturn(
+                mMockResolveInfoList);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser));
+
+        // UserManagerState#mUserId and UserManagerState#mCanForwardToProfileIdMap will empty
+        // by default if the getters of these member variables have not been called
+        List<UserId> userIdsBeforeIntent = new ArrayList<>(mUserManagerState.getUserIds());
+        Map<UserId, Boolean> canForwardToProfileIdMapBeforeIntent = new HashMap<>(
+                mUserManagerState.getCanForwardToProfileIdMap(mMockIntent));
+
+        List<UserId> expectedUserIdsAfterIntent = Lists.newArrayList(currentUser, managedUser);
+        Map<UserId, Boolean> expectedCanForwardToProfileIdMapAfterIntent = new HashMap<>();
+        expectedCanForwardToProfileIdMapAfterIntent.put(currentUser, true);
+        expectedCanForwardToProfileIdMapAfterIntent.put(managedUser, true);
+
+        String action = Intent.ACTION_PROFILE_UNAVAILABLE;
+        mUserManagerState.onProfileActionStatusChange(action, privateUser);
+
+        assertWithMessage(
+                "UserIds list should not be same before and after receiving intent: " + action)
+                .that(mUserManagerState.getUserIds()).isNotEqualTo(userIdsBeforeIntent);
+        assertWithMessage("Unexpected changes to user id list on receiving intent: " + action)
+                .that(mUserManagerState.getUserIds()).isEqualTo(expectedUserIdsAfterIntent);
+        assertWithMessage(
+                "CanForwardToLabelMap should not be same before and after receiving intent: "
+                        + action)
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent)).isNotEqualTo(
+                        canForwardToProfileIdMapBeforeIntent);
+        assertWithMessage(
+                "Unexpected changes to canForwardToProfileIdMap on receiving intent: " + action)
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent)).isEqualTo(
+                        expectedCanForwardToProfileIdMapAfterIntent);
+    }
+
+    @Test
+    public void testOnProfileStatusChange_actionProfileAvailableOnPrivateProfile() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        UserId managedUser = UserId.of(mManagedUser);
+        UserId privateUser = UserId.of(mPrivateUser);
+        final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfo1, mMockInfo2);
+        when(mMockPackageManager.queryIntentActivitiesAsUser(mMockIntent,
+                PackageManager.MATCH_DEFAULT_ONLY, mSystemUser)).thenReturn(
+                mMockResolveInfoList);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser));
+
+        // UserManagerState#mUserId and UserManagerState#mCanForwardToProfileIdMap will empty
+        // by default if the getters of these member variables have not been called
+        List<UserId> userIdsBeforeIntent = new ArrayList<>(mUserManagerState.getUserIds());
+        Map<UserId, Boolean> canForwardToProfileIdMapBeforeIntent = new HashMap<>(
+                mUserManagerState.getCanForwardToProfileIdMap(mMockIntent));
+
+        List<UserId> expectedUserIdsAfterIntent = Lists.newArrayList(currentUser, managedUser,
+                privateUser);
+        Map<UserId, Boolean> expectedCanForwardToProfileIdMapAfterIntent = new HashMap<>();
+        expectedCanForwardToProfileIdMapAfterIntent.put(currentUser, true);
+        expectedCanForwardToProfileIdMapAfterIntent.put(managedUser, true);
+        expectedCanForwardToProfileIdMapAfterIntent.put(privateUser, true);
+
+        String action = Intent.ACTION_PROFILE_AVAILABLE;
+        mUserManagerState.onProfileActionStatusChange(action, privateUser);
+
+        assertWithMessage(
+                "UserIds list should not be same before and after receiving intent: " + action)
+                .that(mUserManagerState.getUserIds()).isNotEqualTo(userIdsBeforeIntent);
+        assertWithMessage("Unexpected changes to user id list on receiving intent: " + action)
+                .that(mUserManagerState.getUserIds()).isEqualTo(expectedUserIdsAfterIntent);
+        assertWithMessage(
+                "CanForwardToLabelMap should not be same before and after receiving intent: "
+                        + action)
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent)).isNotEqualTo(
+                        canForwardToProfileIdMapBeforeIntent);
+        assertWithMessage(
+                "Unexpected changes to canForwardToProfileIdMap on receiving intent: " + action)
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent)).isEqualTo(
+                        expectedCanForwardToProfileIdMapAfterIntent);
+    }
+
+    private void initializeUserManagerState(UserId current, List<UserHandle> usersOnDevice) {
+        when(mMockUserManager.getUserProfiles()).thenReturn(usersOnDevice);
+        TestConfigStore testConfigStore = new TestConfigStore();
+        testConfigStore.enablePrivateSpaceInPhotoPicker();
+        mUserManagerState = new UserManagerState.RuntimeUserManagerState(mMockContext, current,
+                true, testConfigStore);
+    }
+}
diff --git a/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java b/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
index cfcbf0f..09b1933 100644
--- a/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
+++ b/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
@@ -25,6 +25,7 @@
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.test.filters.SmallTest;
 
+import com.android.documentsui.TestConfigStore;
 import com.android.documentsui.testing.TestRecyclerView;
 import com.android.documentsui.testing.Views;
 
@@ -61,12 +62,36 @@
         assertTrue(info.isSelected());
     }
 
-    public void testNullItemDetails_NoActionClick() throws Exception {
+    public void testNullItemDetails_NoActionClick_PrivateSpaceEnabled() throws Exception {
         View item = Views.createTestView(true);
         AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
 
         List<RecyclerView.ViewHolder> holders = new ArrayList<>();
-        holders.add(new MessageHolder(mView.getContext(), new Space(mView.getContext())) {
+        TestConfigStore testConfigStore = new TestConfigStore();
+        testConfigStore.enablePrivateSpaceInPhotoPicker();
+        holders.add(new MessageHolder(mView.getContext(), new Space(mView.getContext()),
+                testConfigStore) {
+            @Override
+            public void bind(Cursor cursor, String modelId) {
+
+            }
+        });
+
+        mView.setHolders(holders);
+
+        mAccessibilityDelegate.getItemDelegate().onInitializeAccessibilityNodeInfo(item, info);
+        assertFalse(info.isClickable());
+    }
+
+    public void testNullItemDetails_NoActionClick_PrivateSpaceDisabled() throws Exception {
+        View item = Views.createTestView(true);
+        AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
+
+        List<RecyclerView.ViewHolder> holders = new ArrayList<>();
+        TestConfigStore testConfigStore = new TestConfigStore();
+        testConfigStore.disablePrivateSpaceInPhotoPicker();
+        holders.add(new MessageHolder(mView.getContext(), new Space(mView.getContext()),
+                testConfigStore) {
             @Override
             public void bind(Cursor cursor, String modelId) {
 
diff --git a/tests/unit/com/android/documentsui/dirlist/AppsRowManagerTest.java b/tests/unit/com/android/documentsui/dirlist/AppsRowManagerTest.java
index 6482440..a69a913 100644
--- a/tests/unit/com/android/documentsui/dirlist/AppsRowManagerTest.java
+++ b/tests/unit/com/android/documentsui/dirlist/AppsRowManagerTest.java
@@ -35,7 +35,9 @@
 import com.android.documentsui.ActionHandler;
 import com.android.documentsui.BaseActivity;
 import com.android.documentsui.R;
+import com.android.documentsui.TestConfigStore;
 import com.android.documentsui.TestUserIdManager;
+import com.android.documentsui.TestUserManagerState;
 import com.android.documentsui.base.State;
 import com.android.documentsui.base.UserId;
 import com.android.documentsui.sidebar.AppItem;
@@ -45,15 +47,21 @@
 import com.android.documentsui.testing.TestProvidersAccess;
 import com.android.documentsui.testing.TestResolveInfo;
 import com.android.documentsui.util.VersionUtils;
+import com.android.modules.utils.build.SdkLevel;
 
 import com.google.common.collect.Lists;
 
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 
 import java.util.ArrayList;
 import java.util.List;
 
+@RunWith(Parameterized.class)
 public class AppsRowManagerTest {
 
     private AppsRowManager mAppsRowManager;
@@ -62,17 +70,32 @@
     private boolean mMaybeShowBadge;
     private BaseActivity mActivity;
     private TestUserIdManager mTestUserIdManager;
+    private TestUserManagerState mTestUserManagerState;
     private State mState;
 
     private View mAppsRow;
     private LinearLayout mAppsGroup;
+    private final TestConfigStore mTestConfigStore = new TestConfigStore();
+
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return com.google.android.collect.Lists.newArrayList(true, false);
+    }
 
     @Before
     public void setUp() {
         mActionHandler = new TestActionHandler();
         mTestUserIdManager = new TestUserIdManager();
+        mTestUserManagerState = new TestUserManagerState();
 
-        mAppsRowManager = new AppsRowManager(mActionHandler, mMaybeShowBadge, mTestUserIdManager);
+        mAppsRowManager = getAppsRowManager();
 
         Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
         LayoutInflater layoutInflater = LayoutInflater.from(context);
@@ -81,18 +104,39 @@
         mAppsRow = layoutInflater.inflate(R.layout.apps_row, null);
         mAppsGroup = mAppsRow.findViewById(R.id.apps_row);
 
+        mState.configStore = mTestConfigStore;
+
         when(mActivity.getLayoutInflater()).thenReturn(layoutInflater);
         when(mActivity.getDisplayState()).thenReturn(mState);
         when(mActivity.findViewById(R.id.apps_row)).thenReturn(mAppsRow);
         when(mActivity.findViewById(R.id.apps_group)).thenReturn(mAppsGroup);
         when(mActivity.getSelectedUser()).thenReturn(TestProvidersAccess.USER_ID);
 
+        isPrivateSpaceEnabled &= SdkLevel.isAtLeastS();
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+        }
+    }
+
+    private AppsRowManager getAppsRowManager() {
+        if (isPrivateSpaceEnabled && SdkLevel.isAtLeastS()) {
+            mTestUserManagerState = new TestUserManagerState();
+            mTestUserManagerState.userIds =
+                    Lists.newArrayList(UserId.DEFAULT_USER, TestProvidersAccess.OtherUser.USER_ID,
+                            TestProvidersAccess.AnotherUser.USER_ID);
+            return new AppsRowManager(mActionHandler, mMaybeShowBadge, mTestUserManagerState,
+                    mTestConfigStore);
+        }
+        mTestUserIdManager = new TestUserIdManager();
         mTestUserIdManager.userIds =
                 Lists.newArrayList(UserId.DEFAULT_USER, TestProvidersAccess.OtherUser.USER_ID);
+        return new AppsRowManager(mActionHandler, mMaybeShowBadge, mTestUserIdManager,
+                mTestConfigStore);
     }
 
     @Test
     public void testUpdateList_byRootItem() {
+        mActivity.setConfigStore(mTestConfigStore);
         final List<Item> rootList = new ArrayList<>();
         rootList.add(new RootItem(TestProvidersAccess.INSPECTOR, mActionHandler, mMaybeShowBadge));
         rootList.add(new RootItem(TestProvidersAccess.PICKLES, mActionHandler, mMaybeShowBadge));
@@ -105,15 +149,16 @@
 
         assertEquals(chipDataList.size(), rootList.size());
         assertEquals(TestProvidersAccess.INSPECTOR.title, chipDataList.get(0).getTitle());
-        assertEquals(null, chipDataList.get(0).getSummary());
+        assertNull(chipDataList.get(0).getSummary());
         assertEquals(TestProvidersAccess.PICKLES.title, chipDataList.get(1).getTitle());
-        assertEquals(null, chipDataList.get(1).getSummary());
+        assertNull(chipDataList.get(1).getSummary());
         assertEquals(TestProvidersAccess.PICKLES.summary, chipDataList.get(2).getSummary());
         assertEquals(TestProvidersAccess.PICKLES.summary, chipDataList.get(3).getSummary());
     }
 
     @Test
     public void testUpdateList_byHybridItem() {
+        mActivity.setConfigStore(mTestConfigStore);
         final String testPackageName = "com.test1";
         final ResolveInfo info = TestResolveInfo.create();
         info.activityInfo.packageName = testPackageName;
@@ -136,6 +181,7 @@
 
     @Test
     public void testUpdateView_matchedState_showRow() {
+        mActivity.setConfigStore(mTestConfigStore);
         mState.action = State.ACTION_BROWSE;
         mState.stack.changeRoot(TestProvidersAccess.RECENTS);
         final List<Item> rootList = new ArrayList<>();
@@ -150,6 +196,7 @@
 
     @Test
     public void testUpdateView_showSelectedUserItems() {
+        mActivity.setConfigStore(mTestConfigStore);
         mState.action = State.ACTION_GET_CONTENT;
         mState.stack.changeRoot(TestProvidersAccess.RECENTS);
         final List<Item> rootList = new ArrayList<>();
@@ -173,6 +220,7 @@
         if (!VersionUtils.isAtLeastR()) {
             return;
         }
+        mActivity.setConfigStore(mTestConfigStore);
         mState.action = State.ACTION_GET_CONTENT;
         when(mActivity.getSelectedUser()).thenReturn(TestProvidersAccess.OtherUser.USER_ID);
         mState.stack.changeRoot(TestProvidersAccess.RECENTS);
@@ -194,6 +242,7 @@
 
     @Test
     public void testUpdateView_notInRecent_hideRow() {
+        mActivity.setConfigStore(mTestConfigStore);
         mState.action = State.ACTION_BROWSE;
         final List<Item> rootList = new ArrayList<>();
         rootList.add(new RootItem(TestProvidersAccess.INSPECTOR, mActionHandler, mMaybeShowBadge));
@@ -208,6 +257,7 @@
 
     @Test
     public void testUpdateView_notHandledAction_hideRow() {
+        mActivity.setConfigStore(mTestConfigStore);
         mState.action = State.ACTION_OPEN_TREE;
 
         mState.stack.changeRoot(TestProvidersAccess.RECENTS);
@@ -222,6 +272,7 @@
 
     @Test
     public void testUpdateView_noItems_hideRow() {
+        mActivity.setConfigStore(mTestConfigStore);
         mState.action = State.ACTION_BROWSE;
         mState.stack.changeRoot(TestProvidersAccess.RECENTS);
 
@@ -235,6 +286,7 @@
 
     @Test
     public void testUpdateView_crossProfileSearch_hideRow() {
+        mActivity.setConfigStore(mTestConfigStore);
         mState.supportsCrossProfile = true;
         when(mActivity.isSearchExpanded()).thenReturn(true);
 
@@ -256,6 +308,7 @@
 
     @Test
     public void testUpdateView_notCrossProfileSearch_showRow() {
+        mActivity.setConfigStore(mTestConfigStore);
         mState.supportsCrossProfile = true;
         when(mActivity.isSearchExpanded()).thenReturn(false);
 
@@ -277,6 +330,7 @@
 
     @Test
     public void testUpdateView_noItemsOnSelectedUser_hideRow() {
+        mActivity.setConfigStore(mTestConfigStore);
         mState.supportsCrossProfile = true;
         mState.stack.changeRoot(TestProvidersAccess.RECENTS);
         when(mActivity.getSelectedUser()).thenReturn(TestProvidersAccess.OtherUser.USER_ID);
diff --git a/tests/unit/com/android/documentsui/dirlist/DocumentHolderTest.java b/tests/unit/com/android/documentsui/dirlist/DocumentHolderTest.java
index 2574f73..bd76f57 100644
--- a/tests/unit/com/android/documentsui/dirlist/DocumentHolderTest.java
+++ b/tests/unit/com/android/documentsui/dirlist/DocumentHolderTest.java
@@ -27,24 +27,26 @@
 import android.view.MotionEvent.PointerCoords;
 import android.view.MotionEvent.PointerProperties;
 
-import androidx.test.filters.SmallTest;
 import androidx.test.filters.Suppress;
 
 import com.android.documentsui.R;
+import com.android.documentsui.TestConfigStore;
 
-@SmallTest
 public class DocumentHolderTest extends AndroidTestCase {
 
     DocumentHolder mHolder;
     TestListener mListener;
+    TestConfigStore mTestConfigStore = new TestConfigStore();
 
     @Override
     public void setUp() throws Exception {
         Context context = getContext();
         LayoutInflater inflater = LayoutInflater.from(context);
-        mHolder = new DocumentHolder(getContext(), inflater.inflate(R.layout.item_doc_list, null)) {
+        mHolder = new DocumentHolder(getContext(), inflater.inflate(R.layout.item_doc_list, null),
+                mTestConfigStore) {
             @Override
-            public void bind(Cursor cursor, String modelId) {}
+            public void bind(Cursor cursor, String modelId) {
+            }
         };
 
         mListener = new TestListener();
@@ -67,12 +69,12 @@
     public MotionEvent createEvent(int tooltype) {
         long time = SystemClock.uptimeMillis();
 
-        PointerProperties properties[] = new PointerProperties[] {
+        PointerProperties[] properties = new PointerProperties[]{
                 new PointerProperties()
         };
         properties[0].toolType = tooltype;
 
-        PointerCoords coords[] = new PointerCoords[] {
+        PointerCoords[] coords = new PointerCoords[]{
                 new PointerCoords()
         };
 
@@ -96,7 +98,7 @@
                 0, // edgeflags
                 0, // source
                 0 // flags
-                );
+        );
     }
 
     private class TestListener extends KeyboardEventListener<DocumentItemDetails> {
diff --git a/tests/unit/com/android/documentsui/dirlist/IconHelperTest.java b/tests/unit/com/android/documentsui/dirlist/IconHelperTest.java
index d2419e8..2df2ae2 100644
--- a/tests/unit/com/android/documentsui/dirlist/IconHelperTest.java
+++ b/tests/unit/com/android/documentsui/dirlist/IconHelperTest.java
@@ -24,51 +24,119 @@
 import androidx.test.filters.SmallTest;
 import androidx.test.platform.app.InstrumentationRegistry;
 
+import com.android.documentsui.TestConfigStore;
+import com.android.documentsui.TestUserManagerState;
 import com.android.documentsui.ThumbnailCache;
 import com.android.documentsui.base.State;
 import com.android.documentsui.base.UserId;
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.common.collect.Lists;
 
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 
 @SmallTest
+@RunWith(Parameterized.class)
 public final class IconHelperTest {
-
+    private final UserId mSystemUser = UserId.of(UserHandle.SYSTEM);
+    private final UserId mManagedUser = UserId.of(100);
+    private final UserId mPrivateUser = UserId.of(101);
     private Context mContext;
     private IconHelper mIconHelper;
     private ThumbnailCache mThumbnailCache = new ThumbnailCache(1000);
+    private final TestUserManagerState mTestUserManagerState = new TestUserManagerState();
+    private final TestConfigStore mTestConfigStore = new TestConfigStore();
 
-    private UserId systemUser = UserId.of(UserHandle.SYSTEM);
-    private UserId managedUser = UserId.of(100);
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
 
     @Before
     public void setUp() {
         mContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-        mIconHelper = new IconHelper(mContext, State.MODE_LIST, /* maybeShowBadge= */ true,
-                mThumbnailCache, managedUser);
+
+        isPrivateSpaceEnabled = SdkLevel.isAtLeastS() && isPrivateSpaceEnabled;
+        mIconHelper = isPrivateSpaceEnabled
+                ? new IconHelper(mContext, State.MODE_LIST, /* maybeShowBadge= */ true,
+                mThumbnailCache, null, mTestUserManagerState, mTestConfigStore)
+                : new IconHelper(mContext, State.MODE_LIST, /* maybeShowBadge= */ true,
+                        mThumbnailCache, mManagedUser, null, mTestConfigStore);
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            mTestUserManagerState.userIds = SdkLevel.isAtLeastV()
+                    ? Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser)
+                    : Lists.newArrayList(mSystemUser, mManagedUser);
+        }
     }
 
     @Test
     public void testShouldShowBadge_returnFalse_onSystemUser() {
-        assertThat(mIconHelper.shouldShowBadge(systemUser.getIdentifier())).isFalse();
+        assertThat(mIconHelper.shouldShowBadge(mSystemUser.getIdentifier())).isFalse();
     }
 
     @Test
     public void testShouldShowBadge_returnTrue_onManagedUser() {
-        assertThat(mIconHelper.shouldShowBadge(managedUser.getIdentifier())).isTrue();
+        assertThat(mIconHelper.shouldShowBadge(mManagedUser.getIdentifier())).isTrue();
+    }
+
+    @Test
+    public void testShouldShowBadge_returnTrue_onPrivateUser() {
+        if (!SdkLevel.isAtLeastV() || !isPrivateSpaceEnabled) return;
+        assertThat(mIconHelper.shouldShowBadge(mPrivateUser.getIdentifier())).isTrue();
     }
 
     @Test
     public void testShouldShowBadge_returnFalse_onManagedUser_doNotShowBadge() {
+        if (isPrivateSpaceEnabled) return;
         mIconHelper = new IconHelper(mContext, State.MODE_LIST, /* maybeShowBadge= */ false,
-                mThumbnailCache, managedUser);
-        assertThat(mIconHelper.shouldShowBadge(managedUser.getIdentifier())).isFalse();
+                mThumbnailCache, mManagedUser, null, mTestConfigStore);
+        assertThat(mIconHelper.shouldShowBadge(mManagedUser.getIdentifier())).isFalse();
     }
 
     @Test
-    public void testShouldShowBadge_returnFalse_onManagedUser_withoutManagedUser() {
+    public void testShouldShowBadge_returnFalseOnPrivateUser_doNotShowBadge() {
+        if (!isPrivateSpaceEnabled) return;
+        mIconHelper = new IconHelper(mContext, State.MODE_LIST, /* maybeShowBadge= */ false,
+                mThumbnailCache, null, mTestUserManagerState, mTestConfigStore);
+        assertThat(mIconHelper.shouldShowBadge(mPrivateUser.getIdentifier())).isFalse();
+    }
+
+    @Test
+    public void testShouldShowBadge_returnFalseOnManagedUser_withoutManagedUser() {
+        if (isPrivateSpaceEnabled) return;
         mIconHelper = new IconHelper(mContext, State.MODE_LIST, /* maybeShowBadge= */ true,
-                mThumbnailCache, /* managedUser= */ null);
-        assertThat(mIconHelper.shouldShowBadge(managedUser.getIdentifier())).isFalse();
+                mThumbnailCache, /* mManagedUser= */ null, null, mTestConfigStore);
+        assertThat(mIconHelper.shouldShowBadge(mManagedUser.getIdentifier())).isFalse();
+    }
+
+    @Test
+    public void testShouldShowBadge_returnFalseOnManagedUser_withoutMultipleUsers() {
+        if (!isPrivateSpaceEnabled) return;
+        mTestUserManagerState.userIds = Lists.newArrayList(mManagedUser);
+        mIconHelper = new IconHelper(mContext, State.MODE_LIST, /* maybeShowBadge= */ true,
+                mThumbnailCache, /* mManagedUser= */ null, mTestUserManagerState, mTestConfigStore);
+        assertThat(mIconHelper.shouldShowBadge(mManagedUser.getIdentifier())).isFalse();
+    }
+
+    @Test
+    public void testShouldShowBadge_returnFalseOnPrivateUser_withoutMultipleUsers() {
+        if (!SdkLevel.isAtLeastV() || !isPrivateSpaceEnabled) return;
+        mTestUserManagerState.userIds = Lists.newArrayList(mPrivateUser);
+        mIconHelper = new IconHelper(mContext, State.MODE_LIST, /* maybeShowBadge= */ true,
+                mThumbnailCache, /* mManagedUser= */ null, mTestUserManagerState, mTestConfigStore);
+        assertThat(mIconHelper.shouldShowBadge(mPrivateUser.getIdentifier())).isFalse();
     }
 }
diff --git a/tests/unit/com/android/documentsui/dirlist/InflateMessageDocumentHolderTest.java b/tests/unit/com/android/documentsui/dirlist/InflateMessageDocumentHolderTest.java
index 436e4fb..507e9bf 100644
--- a/tests/unit/com/android/documentsui/dirlist/InflateMessageDocumentHolderTest.java
+++ b/tests/unit/com/android/documentsui/dirlist/InflateMessageDocumentHolderTest.java
@@ -18,7 +18,11 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.when;
+
 import android.content.Context;
+import android.content.pm.UserProperties;
+import android.os.UserManager;
 import android.view.View;
 import android.widget.Button;
 
@@ -28,15 +32,29 @@
 import com.android.documentsui.CrossProfileQuietModeException;
 import com.android.documentsui.Model;
 import com.android.documentsui.R;
+import com.android.documentsui.TestConfigStore;
 import com.android.documentsui.base.State;
+import com.android.documentsui.base.UserId;
 import com.android.documentsui.testing.TestActionHandler;
 import com.android.documentsui.testing.TestEnv;
 import com.android.documentsui.testing.TestProvidersAccess;
+import com.android.documentsui.testing.UserManagers;
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.common.collect.Lists;
 
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
+
+import java.util.HashMap;
+import java.util.Map;
 
 @SmallTest
+@RunWith(Parameterized.class)
 public final class InflateMessageDocumentHolderTest {
 
     private Context mContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
@@ -45,23 +63,70 @@
     private Message mInflateMessage;
     private TestActionHandler mTestActionHandler = new TestActionHandler();
     private InflateMessageDocumentHolder mHolder;
+    private TestConfigStore mTestConfigStore = new TestConfigStore();
+
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
 
     @Before
     public void setUp() {
         DocumentsAdapter.Environment env =
                 new TestEnvironment(mContext, TestEnv.create(), mTestActionHandler);
         env.getDisplayState().action = State.ACTION_GET_CONTENT;
-        env.getDisplayState().canShareAcrossProfile = true;
         env.getDisplayState().supportsCrossProfile = true;
-        mInflateMessage = new Message.InflateMessage(env, mDefaultCallback);
+
         mContext.setTheme(R.style.DocumentsTheme);
         mContext.getTheme().applyStyle(R.style.DocumentsDefaultTheme,  /* force= */false);
 
-        mHolder = new InflateMessageDocumentHolder(mContext, /* parent= */null);
+        isPrivateSpaceEnabled = SdkLevel.isAtLeastS() && isPrivateSpaceEnabled;
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            Map<UserId, String> userIdToLabelMap = new HashMap<>();
+            userIdToLabelMap.put(TestProvidersAccess.USER_ID, "Personal");
+            userIdToLabelMap.put(TestProvidersAccess.OtherUser.USER_ID, "Work");
+            env.getDisplayState().canForwardToProfileIdMap.put(TestProvidersAccess.USER_ID, true);
+            env.getDisplayState().canForwardToProfileIdMap.put(
+                    TestProvidersAccess.OtherUser.USER_ID, true);
+            UserManager userManager = UserManagers.create();
+            if (SdkLevel.isAtLeastV()) {
+                userIdToLabelMap.put(TestProvidersAccess.AnotherUser.USER_ID, "Private");
+                env.getDisplayState().canForwardToProfileIdMap.put(
+                        TestProvidersAccess.AnotherUser.USER_ID, true);
+                UserProperties otherUserProperties = new UserProperties.Builder()
+                        .setShowInQuietMode(UserProperties.SHOW_IN_QUIET_MODE_PAUSED)
+                        .build();
+                UserProperties anotherUserProperties = new UserProperties.Builder()
+                        .setShowInQuietMode(UserProperties.SHOW_IN_QUIET_MODE_PAUSED)
+                        .build();
+                when(userManager.getUserProperties(TestProvidersAccess.OtherUser.USER_HANDLE))
+                        .thenReturn(otherUserProperties);
+                when(userManager.getUserProperties(TestProvidersAccess.AnotherUser.USER_HANDLE))
+                        .thenReturn(anotherUserProperties);
+            }
+
+            mInflateMessage = new Message.InflateMessage(env, mDefaultCallback,
+                    TestProvidersAccess.USER_ID,
+                    TestProvidersAccess.OtherUser.USER_ID, userIdToLabelMap, userManager,
+                    mTestConfigStore);
+        } else {
+            mInflateMessage = new Message.InflateMessage(env, mDefaultCallback, mTestConfigStore);
+            env.getDisplayState().canShareAcrossProfile = true;
+        }
+        mHolder = new InflateMessageDocumentHolder(mContext, /* parent= */null, mTestConfigStore);
     }
 
     @Test
     public void testClickingButtonShouldShowProgressBar() {
+        if (SdkLevel.isAtLeastV()) return;
         Model.Update error = new Model.Update(
                 new CrossProfileQuietModeException(TestProvidersAccess.OtherUser.USER_ID),
                 /* remoteActionsEnabled= */ true);
diff --git a/tests/unit/com/android/documentsui/dirlist/MessageTest.java b/tests/unit/com/android/documentsui/dirlist/MessageTest.java
index 0816684..efc25f5 100644
--- a/tests/unit/com/android/documentsui/dirlist/MessageTest.java
+++ b/tests/unit/com/android/documentsui/dirlist/MessageTest.java
@@ -16,6 +16,8 @@
 
 package com.android.documentsui.dirlist;
 
+import static com.android.documentsui.DevicePolicyResources.Drawables.Style.OUTLINE;
+import static com.android.documentsui.DevicePolicyResources.Drawables.WORK_PROFILE_OFF_ICON;
 import static com.android.documentsui.DevicePolicyResources.Strings.CANT_SELECT_WORK_FILES_MESSAGE;
 import static com.android.documentsui.DevicePolicyResources.Strings.CANT_SELECT_WORK_FILES_TITLE;
 import static com.android.documentsui.DevicePolicyResources.Strings.WORK_PROFILE_OFF_ENABLE_BUTTON;
@@ -31,6 +33,9 @@
 import android.app.admin.DevicePolicyManager;
 import android.app.admin.DevicePolicyResourcesManager;
 import android.content.Context;
+import android.content.pm.UserProperties;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
 import android.os.UserManager;
 
 import androidx.core.util.Preconditions;
@@ -41,17 +46,29 @@
 import com.android.documentsui.CrossProfileQuietModeException;
 import com.android.documentsui.Model;
 import com.android.documentsui.R;
+import com.android.documentsui.TestConfigStore;
 import com.android.documentsui.base.State;
 import com.android.documentsui.base.UserId;
 import com.android.documentsui.testing.TestActionHandler;
 import com.android.documentsui.testing.TestEnv;
+import com.android.documentsui.testing.TestProvidersAccess;
 import com.android.documentsui.testing.UserManagers;
 import com.android.modules.utils.build.SdkLevel;
 
+import com.google.common.collect.Lists;
+
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
+
+import java.util.HashMap;
+import java.util.Map;
 
 @SmallTest
+@RunWith(Parameterized.class)
 public final class MessageTest {
 
     private UserId mUserId = UserId.of(100);
@@ -62,6 +79,19 @@
     private UserManager mUserManager;
     private DevicePolicyManager mDevicePolicyManager;
     private TestActionHandler mTestActionHandler;
+    private final TestConfigStore mTestConfigStore = new TestConfigStore();
+
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
 
     @Before
     public void setUp() {
@@ -69,7 +99,8 @@
         mUserManager = UserManagers.create();
         mTestActionHandler = new TestActionHandler();
         mDevicePolicyManager = mock(DevicePolicyManager.class);
-        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+        when(mContext.getSystemServiceName(UserManager.class)).thenReturn("mUserManager");
+        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
         when(mContext.getSystemServiceName(DevicePolicyManager.class))
                 .thenReturn(Context.DEVICE_POLICY_SERVICE);
         when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE))
@@ -79,7 +110,28 @@
         DocumentsAdapter.Environment env =
                 new TestEnvironment(mContext, TestEnv.create(), mTestActionHandler);
         env.getDisplayState().action = State.ACTION_GET_CONTENT;
-        mInflateMessage = new Message.InflateMessage(env, mDefaultCallback);
+
+        isPrivateSpaceEnabled = SdkLevel.isAtLeastS() && isPrivateSpaceEnabled;
+        if (SdkLevel.isAtLeastV()) {
+            UserProperties userProperties = new UserProperties.Builder()
+                    .setShowInQuietMode(UserProperties.SHOW_IN_QUIET_MODE_PAUSED)
+                    .build();
+            UserHandle userHandle = UserHandle.of(mUserId.getIdentifier());
+            when(mUserManager.getUserProperties(userHandle)).thenReturn(userProperties);
+        }
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            String personalLabel = mContext.getString(R.string.personal_tab);
+            String workLabel = mContext.getString(R.string.work_tab);
+            Map<UserId, String> userIdToLabelMap = new HashMap<>();
+            userIdToLabelMap.put(TestProvidersAccess.USER_ID, personalLabel);
+            userIdToLabelMap.put(mUserId, workLabel);
+            mInflateMessage = new Message.InflateMessage(env, mDefaultCallback,
+                    TestProvidersAccess.USER_ID, mUserId, userIdToLabelMap, mUserManager,
+                    mTestConfigStore);
+        } else {
+            mInflateMessage = new Message.InflateMessage(env, mDefaultCallback, mTestConfigStore);
+        }
     }
 
     @Test
@@ -115,6 +167,7 @@
 
     @Test
     public void testInflateMessage_updateToCrossProfileQuietMode() {
+        if (SdkLevel.isAtLeastV()) return;
         Model.Update error = new Model.Update(
                 new CrossProfileQuietModeException(mUserId),
                 /* isRemoteActionsEnabled= */ true);
@@ -143,4 +196,47 @@
 
         assertThat(mTestActionHandler.mRequestDisablingQuietModeHappened).isTrue();
     }
+
+    @Test
+    public void testInflateMessage_updateToCrossProfileQuietMode_PostV() {
+        if (!SdkLevel.isAtLeastV()) return;
+        Model.Update error = new Model.Update(
+                new CrossProfileQuietModeException(mUserId),
+                /* isRemoteActionsEnabled= */ true);
+
+        DevicePolicyResourcesManager devicePolicyResourcesManager = mock(
+                DevicePolicyResourcesManager.class);
+        when(mDevicePolicyManager.getResources()).thenReturn(devicePolicyResourcesManager);
+
+        if (isPrivateSpaceEnabled) {
+            Drawable icon = mContext.getDrawable(R.drawable.work_off);
+            when(devicePolicyResourcesManager.getDrawable(eq(WORK_PROFILE_OFF_ICON), eq(OUTLINE),
+                    any()))
+                    .thenReturn(icon);
+        } else {
+            String title = mContext.getString(R.string.quiet_mode_error_title);
+            String text = mContext.getString(R.string.quiet_mode_button);
+            when(devicePolicyResourcesManager.getString(eq(WORK_PROFILE_OFF_ERROR_TITLE), any()))
+                    .thenReturn(title);
+            when(devicePolicyResourcesManager.getString(eq(WORK_PROFILE_OFF_ENABLE_BUTTON), any()))
+                    .thenReturn(text);
+        }
+        mInflateMessage.update(error);
+
+        assertThat(mInflateMessage.getLayout())
+                .isEqualTo(InflateMessageDocumentHolder.LAYOUT_CROSS_PROFILE_ERROR);
+
+        if (!isPrivateSpaceEnabled) {
+            assert mInflateMessage.getTitleString() != null;
+            assertThat(mInflateMessage.getTitleString())
+                    .isEqualTo(mContext.getString(R.string.quiet_mode_error_title));
+            assert mInflateMessage.getButtonString() != null;
+            assertThat(mInflateMessage.getButtonString().toString()).isEqualTo(
+                    mContext.getString(R.string.quiet_mode_button));
+        }
+        assertThat(mInflateMessage.mCallback).isNotNull();
+        mInflateMessage.mCallback.run();
+
+        assertThat(mTestActionHandler.mRequestDisablingQuietModeHappened).isTrue();
+    }
 }
diff --git a/tests/unit/com/android/documentsui/files/ActionHandlerTest.java b/tests/unit/com/android/documentsui/files/ActionHandlerTest.java
index 62fea24..049d064 100644
--- a/tests/unit/com/android/documentsui/files/ActionHandlerTest.java
+++ b/tests/unit/com/android/documentsui/files/ActionHandlerTest.java
@@ -47,12 +47,12 @@
 import androidx.core.util.Preconditions;
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.AbstractActionHandler;
 import com.android.documentsui.ModelId;
 import com.android.documentsui.R;
 import com.android.documentsui.TestActionModeAddons;
+import com.android.documentsui.TestConfigStore;
 import com.android.documentsui.archives.ArchivesProvider;
 import com.android.documentsui.base.DebugFlags;
 import com.android.documentsui.base.DocumentInfo;
@@ -72,16 +72,22 @@
 import com.android.documentsui.testing.UserManagers;
 import com.android.documentsui.ui.TestDialogController;
 import com.android.documentsui.util.VersionUtils;
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.common.collect.Lists;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-@RunWith(AndroidJUnit4.class)
+@RunWith(Parameterized.class)
 @MediumTest
 public class ActionHandlerTest {
 
@@ -93,8 +99,21 @@
     private TestDocumentClipper mClipper;
     private TestDragAndDropManager mDragAndDropManager;
     private TestFeatures mFeatures;
+    private TestConfigStore mTestConfigStore;
     private boolean refreshAnswer = false;
 
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
+
     @Before
     public void setUp() {
         mFeatures = new TestFeatures();
@@ -105,6 +124,14 @@
         mDialogs = new TestDialogController();
         mClipper = new TestDocumentClipper();
         mDragAndDropManager = new TestDragAndDropManager();
+        mTestConfigStore = new TestConfigStore();
+        mEnv.state.configStore = mTestConfigStore;
+
+        isPrivateSpaceEnabled &= SdkLevel.isAtLeastS();
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.USER_ID, true);
+        }
 
         mEnv.providers.configurePm(mActivity.packageMgr);
         ((TestActivityConfig) mEnv.injector.config).nextDocumentEnabled = true;
diff --git a/tests/unit/com/android/documentsui/picker/ActionHandlerTest.java b/tests/unit/com/android/documentsui/picker/ActionHandlerTest.java
index 61094ba..166e48e 100644
--- a/tests/unit/com/android/documentsui/picker/ActionHandlerTest.java
+++ b/tests/unit/com/android/documentsui/picker/ActionHandlerTest.java
@@ -36,13 +36,11 @@
 import androidx.fragment.app.FragmentActivity;
 import androidx.test.filters.MediumTest;
 import androidx.test.filters.SdkSuppress;
-import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.DocumentsAccess;
 import com.android.documentsui.Injector;
 import com.android.documentsui.R;
-import com.android.documentsui.TestUserIdManager;
-import com.android.documentsui.UserIdManager;
+import com.android.documentsui.TestConfigStore;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.DocumentStack;
 import com.android.documentsui.base.Lookup;
@@ -59,28 +57,47 @@
 import com.android.documentsui.testing.TestProvidersAccess;
 import com.android.documentsui.testing.TestResolveInfo;
 import com.android.documentsui.util.VersionUtils;
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.common.collect.Lists;
 
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 
 import java.util.Arrays;
 import java.util.concurrent.Executor;
 
-@RunWith(AndroidJUnit4.class)
+@RunWith(Parameterized.class)
 @MediumTest
 public class ActionHandlerTest {
 
     private static final String EXTRA_INTENT = "EXTRA_INTENT";
     private static final String EXTRA_USER = "EXTRA_USER";
 
+    private final TestConfigStore mTestConfigStore = new TestConfigStore();
+
     private TestEnv mEnv;
     private TestActivity mActivity;
     private TestableActionHandler<TestActivity> mHandler;
     private TestLastAccessedStorage mLastAccessed;
     private PickCountRecordStorage mPickCountRecord;
-    private TestUserIdManager mTestUserIdManager;
+
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
 
     @Before
     public void setUp() {
@@ -89,8 +106,14 @@
         mEnv.providers.configurePm(mActivity.packageMgr);
         mEnv.injector.pickResult = new PickResult();
         mLastAccessed = new TestLastAccessedStorage();
-        mTestUserIdManager = new TestUserIdManager();
         mPickCountRecord = mock(PickCountRecordStorage.class);
+        mEnv.state.configStore = mTestConfigStore;
+
+        isPrivateSpaceEnabled = SdkLevel.isAtLeastS() && isPrivateSpaceEnabled;
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.USER_ID, true);
+        }
 
         mHandler = new TestableActionHandler<>(
                 mActivity,
@@ -101,17 +124,17 @@
                 mEnv::lookupExecutor,
                 mEnv.injector,
                 mLastAccessed,
-                mPickCountRecord,
-                mTestUserIdManager
+                mPickCountRecord
         );
 
+
         mEnv.selectionMgr.select("1");
 
         AsyncTask.setDefaultExecutor(mEnv.mExecutor);
     }
 
     private static class TestableActionHandler<T extends FragmentActivity & Addons>
-        extends ActionHandler {
+            extends ActionHandler {
 
         private UpdatePickResultTask mTask;
 
@@ -124,10 +147,8 @@
                 Lookup<String, Executor> executors,
                 Injector injector,
                 LastAccessedStorage lastAccessed,
-                PickCountRecordStorage pickCountRecordStorage,
-                UserIdManager userIdManager) {
-            super(activity, state, providers, docs, searchMgr, executors, injector, lastAccessed,
-                    userIdManager);
+                PickCountRecordStorage pickCountRecordStorage) {
+            super(activity, state, providers, docs, searchMgr, executors, injector, lastAccessed);
             mTask = new UpdatePickResultTask(
                     mActivity, mInjector.pickResult, pickCountRecordStorage);
         }
@@ -284,7 +305,7 @@
         mEnv.beforeAsserts();
 
         verify(mPickCountRecord).increasePickCountRecord(
-            mActivity.getApplicationContext(), TestEnv.FILE_JPG.derivedUri);
+                mActivity.getApplicationContext(), TestEnv.FILE_JPG.derivedUri);
 
         mActivity.finishedHandler.assertCalled();
     }
@@ -355,7 +376,8 @@
         final String mimeType = "audio/aac";
         final String displayName = "foobar.m4a";
 
-        mHandler.saveDocument(mimeType, displayName, (boolean inProgress) -> {});
+        mHandler.saveDocument(mimeType, displayName, (boolean inProgress) -> {
+        });
 
         mEnv.beforeAsserts();
 
@@ -431,7 +453,7 @@
         mEnv.state.action = State.ACTION_GET_CONTENT;
         mEnv.state.stack.changeRoot(TestProvidersAccess.HOME);
         mEnv.state.stack.push(TestEnv.FOLDER_1);
-        mEnv.state.acceptMimes = new String[] { "image/*" };
+        mEnv.state.acceptMimes = new String[]{"image/*"};
 
         mActivity.finishedHandler.assertNotCalled();
 
@@ -483,7 +505,7 @@
         mEnv.state.action = State.ACTION_OPEN;
         mEnv.state.stack.changeRoot(TestProvidersAccess.HOME);
         mEnv.state.stack.push(TestEnv.FOLDER_1);
-        mEnv.state.acceptMimes = new String[] { "image/*" };
+        mEnv.state.acceptMimes = new String[]{"image/*"};
 
         mActivity.finishedHandler.assertNotCalled();
 
@@ -539,13 +561,17 @@
     @Test
     public void testOpenAppRoot_otherUser() throws Exception {
         ResolveInfo info = TestResolveInfo.create();
-        mEnv.state.canShareAcrossProfile = true;
+        if (isPrivateSpaceEnabled) {
+            mEnv.state.canForwardToProfileIdMap.put(TestProvidersAccess.OtherUser.USER_ID, true);
+        } else {
+            mEnv.state.canShareAcrossProfile = true;
+        }
         mHandler.openRoot(info, TestProvidersAccess.OtherUser.USER_ID);
         assertThat(mActivity.startActivityAsUser.getLastValue().first.getComponent()).isEqualTo(
                 new ComponentName(info.activityInfo.applicationInfo.packageName,
-                info.activityInfo.name));
+                        info.activityInfo.name));
         assertThat(mActivity.startActivityAsUser.getLastValue().second)
-            .isEqualTo(TestProvidersAccess.OtherUser.USER_HANDLE);
+                .isEqualTo(TestProvidersAccess.OtherUser.USER_HANDLE);
 
         int flags = mActivity.startActivityAsUser.getLastValue().first.getFlags();
         assertEquals(0, flags & Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
@@ -569,7 +595,7 @@
         mHandler.openRoot(info, TestProvidersAccess.USER_ID);
         assertThat(mActivity.startActivity.getLastValue().getComponent()).isEqualTo(
                 new ComponentName(info.activityInfo.applicationInfo.packageName,
-                info.activityInfo.name));
+                        info.activityInfo.name));
 
         int flags = mActivity.startActivity.getLastValue().getFlags();
         assertEquals(0, flags & Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
@@ -589,7 +615,7 @@
         mHandler.openRoot(TestResolveInfo.create(), TestProvidersAccess.USER_ID);
         assertEquals(queryContent,
                 mActivity.startActivity.getLastValue().getStringExtra(
-                Intent.EXTRA_CONTENT_QUERY));
+                        Intent.EXTRA_CONTENT_QUERY));
     }
 
     @Test
@@ -712,4 +738,4 @@
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/tests/unit/com/android/documentsui/sidebar/RootsFragmentTest.java b/tests/unit/com/android/documentsui/sidebar/RootsFragmentTest.java
index ea88cfb..39e8ea2 100644
--- a/tests/unit/com/android/documentsui/sidebar/RootsFragmentTest.java
+++ b/tests/unit/com/android/documentsui/sidebar/RootsFragmentTest.java
@@ -28,32 +28,42 @@
 
 import androidx.test.filters.MediumTest;
 import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
 
+import com.android.documentsui.TestConfigStore;
+import com.android.documentsui.TestUserManagerState;
 import com.android.documentsui.base.RootInfo;
-import com.android.documentsui.base.State;
 import com.android.documentsui.base.UserId;
+import com.android.documentsui.testing.TestEnv;
 import com.android.documentsui.testing.TestProvidersAccess;
 import com.android.documentsui.testing.TestResolveInfo;
+import com.android.modules.utils.build.SdkLevel;
+
+import com.google.android.collect.Lists;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
 /**
- * An unit test for RootsFragment.
+ * A unit test for RootsFragment.
  */
-@RunWith(AndroidJUnit4.class)
+@RunWith(Parameterized.class)
 @MediumTest
 public class RootsFragmentTest {
 
     private Context mContext;
     private DevicePolicyManager mDevicePolicyManager;
     private RootsFragment mRootsFragment;
+    private TestEnv mEnv;
+    private final TestConfigStore mTestConfigStore = new TestConfigStore();
+    private final TestUserManagerState mTestUserManagerState = new TestUserManagerState();
 
     private static final String[] EXPECTED_SORTED_RESULT = {
             TestProvidersAccess.RECENTS.title,
@@ -69,15 +79,37 @@
             TestProvidersAccess.INSPECTOR.title,
             TestProvidersAccess.PICKLES.title};
 
+    @Parameter(0)
+    public boolean isPrivateSpaceEnabled;
+
+    /**
+     * Parametrize values for {@code isPrivateSpaceEnabled} to run all the tests twice once with
+     * private space flag enabled and once with it disabled.
+     */
+    @Parameters(name = "privateSpaceEnabled={0}")
+    public static Iterable<?> data() {
+        return Lists.newArrayList(true, false);
+    }
+
     @Before
     public void setUp() {
+        mEnv = TestEnv.create();
+        mEnv.state.configStore = mTestConfigStore;
+
         mContext = mock(Context.class);
         mDevicePolicyManager = mock(DevicePolicyManager.class);
         when(mContext.getResources()).thenReturn(
                 InstrumentationRegistry.getInstrumentation().getTargetContext().getResources());
         when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE))
                 .thenReturn(mDevicePolicyManager);
+        when(mContext.getApplicationContext()).thenReturn(
+                InstrumentationRegistry.getInstrumentation().getTargetContext());
 
+        isPrivateSpaceEnabled = SdkLevel.isAtLeastS() && isPrivateSpaceEnabled;
+        if (isPrivateSpaceEnabled) {
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+            mTestUserManagerState.canFrowardToProfileIdMap.put(UserId.DEFAULT_USER, true);
+        }
         mRootsFragment = new RootsFragment();
     }
 
@@ -85,12 +117,12 @@
     public void testSortLoadResult_WithCorrectOrder() {
         List<Item> items = mRootsFragment.sortLoadResult(
                 mContext,
-                new State(),
+                mEnv.state,
                 createFakeRootInfoList(),
                 null /* excludePackage */, null /* handlerAppIntent */, new TestProvidersAccess(),
                 UserId.DEFAULT_USER,
                 Collections.singletonList(UserId.DEFAULT_USER),
-                /* maybeShowBadge */ false);
+                /* maybeShowBadge */ false, mTestUserManagerState);
         assertTrue(assertSortedResult(items));
     }
 
diff --git a/tests/unit/com/android/documentsui/sidebar/UserItemsCombinerTest.java b/tests/unit/com/android/documentsui/sidebar/UserItemsCombinerTest.java
index 2a80867..f8f4fd0 100644
--- a/tests/unit/com/android/documentsui/sidebar/UserItemsCombinerTest.java
+++ b/tests/unit/com/android/documentsui/sidebar/UserItemsCombinerTest.java
@@ -27,9 +27,11 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.R;
+import com.android.documentsui.TestConfigStore;
 import com.android.documentsui.base.State;
 import com.android.documentsui.base.UserId;
 import com.android.documentsui.testing.TestProvidersAccess;
+import com.android.modules.utils.build.SdkLevel;
 
 import com.google.common.collect.Lists;
 import com.google.common.truth.Correspondence;
@@ -38,8 +40,11 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -50,6 +55,7 @@
 public class UserItemsCombinerTest {
     private static final UserId PERSONAL_USER = TestProvidersAccess.USER_ID;
     private static final UserId WORK_USER = TestProvidersAccess.OtherUser.USER_ID;
+    private static final UserId PRIVATE_USER = TestProvidersAccess.AnotherUser.USER_ID;
 
     private static final List<Item> PERSONAL_ITEMS = Lists.newArrayList(
             personalItem("personal 1"),
@@ -61,10 +67,14 @@
             workItem("work 1")
     );
 
+    private static final List<Item> PRIVATE_ITEMS = Lists.newArrayList(
+            privateItem("private1")
+    );
+
     private static final Correspondence<Item, Item> ITEM_CORRESPONDENCE =
             Correspondence.from((Item actual, Item expected) -> {
-                    return Objects.equals(actual.title, expected.title)
-                            && Objects.equals(actual.userId, expected.userId);
+                return Objects.equals(actual.title, expected.title)
+                        && Objects.equals(actual.userId, expected.userId);
             }, "has same title and userId as in");
 
     private final State mState = new State();
@@ -73,12 +83,29 @@
     private final DevicePolicyManager mDpm =
             InstrumentationRegistry.getInstrumentation().getTargetContext().getSystemService(
                     DevicePolicyManager.class);
+    private final List<UserId> mUserIds = new ArrayList<>();
+    private final Map<UserId, String> mUserIdToLabelMap = new HashMap<>();
+    private final TestConfigStore mTestConfigStore = new TestConfigStore();
     private UserItemsCombiner mCombiner;
 
     @Before
     public void setUp() {
         mState.canShareAcrossProfile = true;
         mState.supportsCrossProfile = true;
+        mUserIds.add(PERSONAL_USER);
+        mUserIds.add(WORK_USER);
+        mUserIdToLabelMap.put(PERSONAL_USER, "Personal");
+        mUserIdToLabelMap.put(WORK_USER, "Work");
+        mState.canForwardToProfileIdMap.put(PERSONAL_USER, true);
+        mState.canForwardToProfileIdMap.put(WORK_USER, true);
+        mState.configStore = mTestConfigStore;
+
+        if (SdkLevel.isAtLeastV()) {
+            mUserIds.add(PRIVATE_USER);
+            mUserIdToLabelMap.put(PRIVATE_USER, "Private");
+            mState.canForwardToProfileIdMap.put(PRIVATE_USER, true);
+            mTestConfigStore.enablePrivateSpaceInPhotoPicker();
+        }
     }
 
     @Test
@@ -90,6 +117,20 @@
     }
 
     @Test
+    public void testCreatePresentableListForAllUsers_empty() {
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(Collections.emptyList());
+        rootListAllUsers.add(Collections.emptyList());
+        if (SdkLevel.isAtLeastV()) {
+            rootListAllUsers.add(Collections.emptyList());
+        }
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .setRootListForAllUsers(rootListAllUsers);
+        assertThat(
+                mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap)).isEmpty();
+    }
+
+    @Test
     public void testCreatePresentableList_currentIsPersonal_personalItemsOnly() {
         mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
                 .setRootListForCurrentUser(PERSONAL_ITEMS)
@@ -113,6 +154,55 @@
     }
 
     @Test
+    public void testCreatePresentableListForAllUsers_currentIsPersonal_personalItemsOnly() {
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(Lists.newArrayList(PERSONAL_ITEMS));
+        rootListAllUsers.add(Collections.emptyList());
+        if (SdkLevel.isAtLeastV()) {
+            rootListAllUsers.add(Collections.emptyList());
+        }
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .setRootListForAllUsers(rootListAllUsers);
+        assertThat(mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap))
+                .comparingElementsUsing(ITEM_CORRESPONDENCE)
+                .containsExactlyElementsIn(PERSONAL_ITEMS)
+                .inOrder();
+    }
+
+    @Test
+    public void testCreatePresentableListForAllUsers_currentIsWork_personalItemsOnly() {
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(Lists.newArrayList(PERSONAL_ITEMS));
+        rootListAllUsers.add(Collections.emptyList());
+        if (SdkLevel.isAtLeastV()) {
+            rootListAllUsers.add(Collections.emptyList());
+        }
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .overrideCurrentUserForTest(WORK_USER)
+                .setRootListForAllUsers(rootListAllUsers);
+        assertThat(mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap))
+                .comparingElementsUsing(ITEM_CORRESPONDENCE)
+                .containsExactlyElementsIn(PERSONAL_ITEMS)
+                .inOrder();
+    }
+
+    @Test
+    public void testCreatePresentableListForAllUsers_currentIsPrivate_personalItemsOnly() {
+        if (!SdkLevel.isAtLeastV()) return;
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(Lists.newArrayList(PERSONAL_ITEMS));
+        rootListAllUsers.add(Collections.emptyList());
+        rootListAllUsers.add(Collections.emptyList());
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .overrideCurrentUserForTest(PRIVATE_USER)
+                .setRootListForAllUsers(rootListAllUsers);
+        assertThat(mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap))
+                .comparingElementsUsing(ITEM_CORRESPONDENCE)
+                .containsExactlyElementsIn(PERSONAL_ITEMS)
+                .inOrder();
+    }
+
+    @Test
     public void testCreatePresentableList_currentIsPersonal_workItemsOnly() {
         mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
                 .setRootListForCurrentUser(Collections.emptyList())
@@ -136,6 +226,56 @@
     }
 
     @Test
+    public void testCreatePresentableListForAllUsers_currentIsPersonal_workItemsOnly() {
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(Collections.emptyList());
+        rootListAllUsers.add(Lists.newArrayList(WORK_ITEMS));
+        if (SdkLevel.isAtLeastV()) {
+            rootListAllUsers.add(Collections.emptyList());
+        }
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .overrideCurrentUserForTest(PERSONAL_USER)
+                .setRootListForAllUsers(rootListAllUsers);
+        assertThat(mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap))
+                .comparingElementsUsing(ITEM_CORRESPONDENCE)
+                .containsExactlyElementsIn(WORK_ITEMS)
+                .inOrder();
+    }
+
+    @Test
+    public void testCreatePresentableListForAllUsers_currentIsWork_workItemsOnly() {
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(Collections.emptyList());
+        rootListAllUsers.add(Lists.newArrayList(WORK_ITEMS));
+        if (SdkLevel.isAtLeastV()) {
+            rootListAllUsers.add(Collections.emptyList());
+        }
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .overrideCurrentUserForTest(WORK_USER)
+                .setRootListForAllUsers(rootListAllUsers);
+        assertThat(mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap))
+                .comparingElementsUsing(ITEM_CORRESPONDENCE)
+                .containsExactlyElementsIn(WORK_ITEMS)
+                .inOrder();
+    }
+
+    @Test
+    public void testCreatePresentableListForAllUsers_currentIsPrivate_workItemsOnly() {
+        if (!SdkLevel.isAtLeastV()) return;
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(Collections.emptyList());
+        rootListAllUsers.add(Lists.newArrayList(WORK_ITEMS));
+        rootListAllUsers.add(Collections.emptyList());
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .overrideCurrentUserForTest(PRIVATE_USER)
+                .setRootListForAllUsers(rootListAllUsers);
+        assertThat(mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap))
+                .comparingElementsUsing(ITEM_CORRESPONDENCE)
+                .containsExactlyElementsIn(WORK_ITEMS)
+                .inOrder();
+    }
+
+    @Test
     public void testCreatePresentableList_currentIsPersonal_personalAndWorkItems() {
         mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
                 .setRootListForCurrentUser(PERSONAL_ITEMS)
@@ -173,6 +313,89 @@
     }
 
     @Test
+    public void testCreatePresentableListForAllUsers_currentIsPersonal_allUsersItems() {
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(PERSONAL_ITEMS);
+        rootListAllUsers.add(Lists.newArrayList(WORK_ITEMS));
+        if (SdkLevel.isAtLeastV()) {
+            rootListAllUsers.add(PRIVATE_ITEMS);
+        }
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .setRootListForAllUsers(rootListAllUsers);
+
+        List<Item> expected = Lists.newArrayList();
+        expected.add(new HeaderItem("Personal"));
+        expected.addAll(PERSONAL_ITEMS);
+        expected.add(new HeaderItem("Work"));
+        expected.addAll(WORK_ITEMS);
+        if (SdkLevel.isAtLeastV()) {
+            expected.add(new HeaderItem("Private"));
+            expected.addAll(PRIVATE_ITEMS);
+        }
+
+        assertThat(mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap))
+                .comparingElementsUsing(ITEM_CORRESPONDENCE)
+                .containsExactlyElementsIn(expected)
+                .inOrder();
+    }
+
+    @Test
+    public void testCreatePresentableListForAllUsers_currentIsWork_allUsersItems() {
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(PERSONAL_ITEMS);
+        rootListAllUsers.add(Lists.newArrayList(WORK_ITEMS));
+        if (SdkLevel.isAtLeastV()) {
+            rootListAllUsers.add(PRIVATE_ITEMS);
+        }
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .overrideCurrentUserForTest(WORK_USER)
+                .setRootListForAllUsers(rootListAllUsers);
+
+        List<Item> expected = Lists.newArrayList();
+        expected.add(new HeaderItem("Personal"));
+        expected.addAll(PERSONAL_ITEMS);
+        expected.add(new HeaderItem("Work"));
+        expected.addAll(WORK_ITEMS);
+        if (SdkLevel.isAtLeastV()) {
+            expected.add(new HeaderItem("Private"));
+            expected.addAll(PRIVATE_ITEMS);
+        }
+
+        assertThat(mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap))
+                .comparingElementsUsing(ITEM_CORRESPONDENCE)
+                .containsExactlyElementsIn(expected)
+                .inOrder();
+    }
+
+    @Test
+    public void testCreatePresentableListForAllUsers_currentIsPrivate_allUsersItems() {
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(PERSONAL_ITEMS);
+        rootListAllUsers.add(Lists.newArrayList(WORK_ITEMS));
+        if (SdkLevel.isAtLeastV()) {
+            rootListAllUsers.add(PRIVATE_ITEMS);
+        }
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .overrideCurrentUserForTest(PRIVATE_USER)
+                .setRootListForAllUsers(rootListAllUsers);
+
+        List<Item> expected = Lists.newArrayList();
+        expected.add(new HeaderItem("Personal"));
+        expected.addAll(PERSONAL_ITEMS);
+        expected.add(new HeaderItem("Work"));
+        expected.addAll(WORK_ITEMS);
+        if (SdkLevel.isAtLeastV()) {
+            expected.add(new HeaderItem("Private"));
+            expected.addAll(PRIVATE_ITEMS);
+        }
+
+        assertThat(mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap))
+                .comparingElementsUsing(ITEM_CORRESPONDENCE)
+                .containsExactlyElementsIn(expected)
+                .inOrder();
+    }
+
+    @Test
     public void testCreatePresentableList_currentIsPersonal_personalAndWorkItems_cannotShare() {
         mState.canShareAcrossProfile = false;
         mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
@@ -196,6 +419,56 @@
         assertThat(mCombiner.createPresentableList()).isEmpty();
     }
 
+    @Test
+    public void testCreatePresentableListForAllUsers_currentIsPersonal_cannotShareToWork() {
+        if (!SdkLevel.isAtLeastV()) return;
+        mState.canForwardToProfileIdMap.put(WORK_USER, false);
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(PERSONAL_ITEMS);
+        rootListAllUsers.add(Lists.newArrayList(WORK_ITEMS));
+        if (SdkLevel.isAtLeastV()) {
+            rootListAllUsers.add(PRIVATE_ITEMS);
+        }
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .setRootListForAllUsers(rootListAllUsers);
+
+        List<Item> expected = Lists.newArrayList();
+        expected.add(new HeaderItem("Personal"));
+        expected.addAll(PERSONAL_ITEMS);
+        if (SdkLevel.isAtLeastV()) {
+            expected.add(new HeaderItem("Private"));
+            expected.addAll(PRIVATE_ITEMS);
+        }
+
+        assertThat(mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap))
+                .comparingElementsUsing(ITEM_CORRESPONDENCE)
+                .containsExactlyElementsIn(expected)
+                .inOrder();
+    }
+
+    @Test
+    public void testCreatePresentableListForAllUsers_currentIsWork_AllItems_cannotSharePersonal() {
+        if (!SdkLevel.isAtLeastV()) return;
+        mState.canForwardToProfileIdMap.put(PERSONAL_USER, false);
+        // In the current implementation of cross profile content sharing strategy work profile will
+        // be able to share to all the child profiles of the parent/personal profile only if it is
+        // able to share with parent/personal profile
+        mState.canForwardToProfileIdMap.put(PRIVATE_USER, false);
+        final List<List<Item>> rootListAllUsers = new ArrayList<>();
+        rootListAllUsers.add(PERSONAL_ITEMS);
+        rootListAllUsers.add(Lists.newArrayList(WORK_ITEMS));
+        if (SdkLevel.isAtLeastV()) {
+            rootListAllUsers.add(PRIVATE_ITEMS);
+        }
+        mCombiner = new UserItemsCombiner(mResources, mDpm, mState)
+                .setRootListForAllUsers(rootListAllUsers);
+
+        assertThat(mCombiner.createPresentableListForAllUsers(mUserIds, mUserIdToLabelMap))
+                .comparingElementsUsing(ITEM_CORRESPONDENCE)
+                .containsExactlyElementsIn(WORK_ITEMS)
+                .inOrder();
+    }
+
     private static TestItem personalItem(String title) {
         return new TestItem(title, PERSONAL_USER);
     }
@@ -204,6 +477,10 @@
         return new TestItem(title, WORK_USER);
     }
 
+    private static TestItem privateItem(String title) {
+        return new TestItem(title, PRIVATE_USER);
+    }
+
     private static class TestItem extends Item {
 
         TestItem(String title, UserId userId) {
