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/inspector_strings.xml b/res/values-hr/inspector_strings.xml
index 14d4985..a9b5083 100644
--- a/res/values-hr/inspector_strings.xml
+++ b/res/values-hr/inspector_strings.xml
@@ -30,7 +30,7 @@
     <string name="metadata_coordinates" msgid="6897383227370702734">"Koordinate"</string>
     <string name="metadata_coordinates_format" msgid="1402724596764547761">"<xliff:g id="LATITUDE">%1$,.3f</xliff:g>, <xliff:g id="LONGITUDE">%2$,.3f</xliff:g>"</string>
     <string name="metadata_altitude" msgid="8063792127436794294">"Nadmorska visina"</string>
-    <string name="metadata_camera" msgid="2363009732801281319">"Fotoaparat"</string>
+    <string name="metadata_camera" msgid="2363009732801281319">"Kamera"</string>
     <string name="metadata_camera_format" msgid="1494489751904311612">"<xliff:g id="MAKE">%1$s</xliff:g> <xliff:g id="MODEL">%2$s</xliff:g>"</string>
     <string name="metadata_aperture" msgid="6538741952698935357">"Otvor blende"</string>
     <string name="metadata_shutter_speed" msgid="8204739885103326131">"Brzina zatvarača"</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..fc266ef 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -92,16 +92,22 @@
     <string name="save_error" msgid="8631128801982095782">"Kan document niet opslaan"</string>
     <string name="create_error" msgid="3092144450044861994">"Kan map niet maken"</string>
     <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_error_title" msgid="554319751414657910">"Werk-apps zijn gepauzeerd"</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 gepauzeerd"</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..8b5e87f 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -52,13 +52,13 @@
     <string name="menu_view_in_owner" msgid="7228948660557554770">"Zobraziť v službe <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
     <string name="menu_new_window" msgid="2947837751796109126">"Nové okno"</string>
     <string name="menu_cut_to_clipboard" msgid="2878752142015026229">"Vystrihnúť"</string>
-    <string name="menu_copy_to_clipboard" msgid="5064081159073330776">"Kopírovať"</string>
+    <string name="menu_copy_to_clipboard" msgid="5064081159073330776">"Skopírovať"</string>
     <string name="menu_paste_from_clipboard" msgid="360947260414135827">"Prilepiť"</string>
     <string name="menu_paste_into_folder" msgid="8000644546983240101">"Prilepiť do priečinka"</string>
     <string name="menu_advanced_show" msgid="7558626506462906726">"Zobraziť interné úložisko"</string>
     <string name="menu_advanced_hide" msgid="6488381508009246334">"Skryť interné úložisko"</string>
     <string name="button_select" msgid="240863497069321364">"Vybrať"</string>
-    <string name="button_copy" msgid="8219059853840996027">"Kopírovať"</string>
+    <string name="button_copy" msgid="8219059853840996027">"Skopírovať"</string>
     <string name="button_compress" msgid="8951561310857223966">"Komprimovať"</string>
     <string name="button_extract" msgid="1038674453689912247">"Extrahovať"</string>
     <string name="button_move" msgid="8596460499325291272">"Presunúť"</string>
@@ -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..14973e6 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -35,7 +35,7 @@
     <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_share" msgid="4307140947108068356">"షేర్ చేయి"</string>
+    <string name="menu_share" msgid="4307140947108068356">"షేర్ చేయండి"</string>
     <string name="menu_delete" msgid="1022254131543256626">"తొలగించండి"</string>
     <string name="menu_select_all" msgid="7600576812185570403">"అన్నింటినీ ఎంచుకోండి"</string>
     <string name="menu_deselect_all" msgid="7729916068862742979">"అన్నింటి ఎంపికను తీసివేయండి"</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">"వ్యక్తిగత యాప్ నుండి ఆఫీస్ ఫైళ్లను యాక్సెస్ చేయడానికి మీ 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>
@@ -168,7 +174,7 @@
       <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> అంశాన్ని తొలగించడం సాధ్యపడలేదు</item>
     </plurals>
     <string name="notification_touch_for_details" msgid="2385563502445129570">"వివరాలను చూడటానికి నొక్కండి"</string>
-    <string name="close" msgid="905969391788869975">"మూసివేయి"</string>
+    <string name="close" msgid="905969391788869975">"మూసివేయండి"</string>
     <plurals name="copy_failure_alert_content" formatted="false" msgid="5570549471912990536">
       <item quantity="other">ఈ ఫైళ్లు కాపీ కాలేదు: <xliff:g id="LIST_1">%1$s</xliff:g></item>
       <item quantity="one">ఈ ఫైల్ కాపీ కాలేదు: <xliff:g id="LIST_0">%1$s</xliff:g></item>
@@ -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..9e38303 100644
--- a/src/com/android/documentsui/BaseActivity.java
+++ b/src/com/android/documentsui/BaseActivity.java
@@ -54,6 +54,7 @@
 import com.android.documentsui.Injector.Injected;
 import com.android.documentsui.NavigationViewManager.Breadcrumb;
 import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.DocumentStack;
 import com.android.documentsui.base.EventHandler;
 import com.android.documentsui.base.RootInfo;
 import com.android.documentsui.base.Shared;
@@ -87,10 +88,12 @@
         extends AppCompatActivity implements CommonAddons, NavigationViewManager.Environment {
 
     private static final String BENCHMARK_TESTING_PACKAGE = "com.android.documentsui.appperftests";
+    private static final String TAG = "BaseActivity";
 
     protected SearchViewManager mSearchManager;
     protected AppsRowManager mAppsRowManager;
     protected UserIdManager mUserIdManager;
+    protected UserManagerState mUserManagerState;
     protected State mState;
 
     @Injected
@@ -102,6 +105,7 @@
 
     protected NavigationViewManager mNavigator;
     protected SortController mSortController;
+    protected ConfigStore mConfigStore;
 
     private final List<EventListener> mEventListeners = new ArrayList<>();
     private final String mTag;
@@ -116,18 +120,51 @@
 
     private PreferencesMonitor mPreferencesMonitor;
 
+    private final DocumentStack mInitialStack = new DocumentStack();
+    private UserId mLastSelectedUser = null;
+
+    protected void setInitialStack(DocumentStack stack) {
+        if (mInitialStack.isInitialized()) {
+            if (DEBUG) {
+                Log.d(TAG, "Initial stack already initialised. " + mInitialStack.isInitialized());
+            }
+            return;
+        }
+        mInitialStack.reset(stack);
+    }
+
+    public DocumentStack getInitialStack() {
+        return mInitialStack;
+    }
+
+    public UserId getLastSelectedUser() {
+        return mLastSelectedUser;
+    }
+
     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();
+    }
+
+    @VisibleForTesting
+    public void setConfigStore(ConfigStore configStore) {
+        mConfigStore = configStore;
+    }
+
     @CallSuper
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -149,6 +186,8 @@
 
         setContainer();
 
+        initConfigStore();
+
         mInjector = getInjector();
         mState = getState(savedInstanceState);
         mDrawer = DrawerController.create(this, mInjector.config);
@@ -161,12 +200,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 +301,15 @@
                         cmdInterceptor);
 
         ViewGroup chipGroup = findViewById(R.id.search_chip_group);
+
         mUserIdManager = DocumentsApplication.getUserIdManager(this);
+        mUserManagerState = DocumentsApplication.getUserManagerState(this);
+        // If private space feature flag is enabled, we should store the intent that launched docsUi
+        // so that we can use this intent to get CrossProfileResolveInfo when ever we want to,
+        // for example when ACTION_PROFILE_AVAILABLE intent is received
+        if (mUserManagerState != null) {
+            mUserManagerState.setCurrentStateIntent(intent);
+        }
         mSearchManager = new SearchViewManager(searchListener, queryInterceptor,
                 chipGroup, savedInstanceState);
         // initialize the chip sets by accept mime types
@@ -313,6 +359,9 @@
                 // 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();
+                // 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(getCurrentRoot(), userId);
             }
         });
@@ -329,6 +378,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
@@ -352,6 +413,12 @@
     }
 
     @Override
+    protected void onPause() {
+        super.onPause();
+        mLastSelectedUser = getSelectedUser();
+    }
+
+    @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         boolean showMenu = super.onCreateOptionsMenu(menu);
 
@@ -386,6 +453,8 @@
         mRootsMonitor.stop();
         mPreferencesMonitor.stop();
         mSortController.destroy();
+        DocumentsApplication.invalidateUserManagerState(this);
+        DocumentsApplication.invalidateConfigStore();
         super.onDestroy();
     }
 
@@ -411,6 +480,7 @@
                 getApplicationContext()
                         .getResources()
                         .getBoolean(R.bool.show_hidden_files_by_default));
+        state.configStore = mConfigStore;
 
         includeState(state);
 
@@ -544,7 +614,6 @@
 
     /**
      * Returns true if a directory can be created in the current location.
-     * @return
      */
     protected boolean canCreateDirectory() {
         final RootInfo root = getCurrentRoot();
@@ -582,7 +651,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 +700,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 +776,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 +852,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 +882,7 @@
 
     /**
      * Get title string equal to the string action bar displayed.
+     *
      * @return current directory title name
      */
     public String getCurrentTitle() {
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..84e4754 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,19 +62,24 @@
             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) {
@@ -101,7 +111,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().isPrivateSpaceInDocsUIEnabled()) {
+            userManagerState = UserManagerState.create(context);
+            ((DocumentsApplication) context.getApplicationContext()).mUserManagerState =
+                    userManagerState;
+        }
+        return userManagerState;
     }
 
     public static DragAndDropManager getDragAndDropManager(Context context) {
@@ -112,6 +143,34 @@
         return ((DocumentsApplication) context.getApplicationContext()).mFileTypeLookup;
     }
 
+    /**
+     * Retrieve {@link ConfigStore} instance to access feature flags in production code.
+     */
+    public static synchronized ConfigStore getConfigStore() {
+        if (sConfigStore == null) {
+            sConfigStore = new ConfigStore.ConfigStoreImpl();
+        }
+        return sConfigStore;
+    }
+
+    /**
+     * 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 +179,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 +196,15 @@
             Log.w(TAG, "Can't obtain OverlayManager from System Service!");
         }
 
-        mUserIdManager = UserIdManager.create(this);
+        if (getConfigStore().isPrivateSpaceInDocsUIEnabled()) {
+            mUserManagerState = UserManagerState.create(this);
+            mUserIdManager = null;
+        } else {
+            mUserManagerState = null;
+            mUserIdManager = UserIdManager.create(this);
+        }
+        mProviders = new ProvidersCache(this);
 
-        mProviders = new ProvidersCache(this, mUserIdManager);
         mProviders.updateAsync(/* forceRefreshAll= */ false, /* callback= */  null);
 
         mThumbnailCache = new ThumbnailCache(memoryClassBytes / 4);
@@ -159,11 +229,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,7 +261,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)) {
+                // Make the changes to UserManagerState object before calling providers updateAsync
+                // so that providers for all the users are loaded
+                if (getConfigStore().isPrivateSpaceInDocsUIEnabled()) {
+                    UserHandle userHandle = intent.getParcelableExtra(Intent.EXTRA_USER);
+                    UserId userId = UserId.of(userHandle);
+                    getUserManagerState(context).onProfileActionStatusChange(action, userId);
+                }
                 // After we have reloaded roots. Resend the broadcast locally so the other
                 // components can reload properly after roots are updated.
                 mProviders.updateAsync(/* forceRefreshAll= */ true,
diff --git a/src/com/android/documentsui/MultiRootDocumentsLoader.java b/src/com/android/documentsui/MultiRootDocumentsLoader.java
index 7668b06..db78daa 100644
--- a/src/com/android/documentsui/MultiRootDocumentsLoader.java
+++ b/src/com/android/documentsui/MultiRootDocumentsLoader.java
@@ -59,7 +59,7 @@
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 
-/*
+/**
  * The abstract class to query multiple roots from {@link android.provider.DocumentsProvider}
  * and return the combined result.
  */
@@ -88,7 +88,7 @@
     private LockingContentObserver mObserver;
 
     @GuardedBy("mTasks")
-    /** A authority -> QueryTask map */
+    /* A authority -> QueryTask map */
     private final Map<String, QueryTask> mTasks = new HashMap<>();
 
     private CountDownLatch mFirstPassLatch;
@@ -96,7 +96,7 @@
 
     private DirectoryResult mResult;
 
-    /*
+    /**
      * Create the loader to query roots from {@link android.provider.DocumentsProvider}.
      *
      * @param context the context
@@ -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..c376c86 100644
--- a/src/com/android/documentsui/NavigationViewManager.java
+++ b/src/com/android/documentsui/NavigationViewManager.java
@@ -68,9 +68,11 @@
     private final ViewOutlineProvider mDefaultOutlineProvider;
     private final ViewOutlineProvider mSearchBarOutlineProvider;
     private final boolean mShowSearchBar;
+    private final ConfigStore mConfigStore;
 
     private boolean mIsActionModeActivated = false;
-    private @ColorRes int mDefaultStatusBarColorResId;
+    @ColorRes
+    private int mDefaultStatusBarColorResId;
 
     public NavigationViewManager(
             BaseActivity activity,
@@ -79,7 +81,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 +119,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 +160,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 +182,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..b692c7a 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();
@@ -110,13 +136,13 @@
         // 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 +153,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 +171,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..eccc6b0
--- /dev/null
+++ b/src/com/android/documentsui/UserManagerState.java
@@ -0,0 +1,640 @@
+/*
+ * 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);
+
+    /**
+     * Sets the intent that triggered the launch of the DocsUI
+     */
+    void setCurrentStateIntent(Intent intent);
+
+    /**
+     * 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 Intent mCurrentStateIntent;
+
+        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());
+        }
+
+        @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()) {
+                    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);
+                }
+            } else if (Intent.ACTION_PROFILE_AVAILABLE.equals(action)) {
+                synchronized (mUserIds) {
+                    if (!mUserIds.contains(userId)) {
+                        mUserIds.add(userId);
+                    }
+                }
+                synchronized (mUserIdToLabelMap) {
+                    if (!mUserIdToLabelMap.containsKey(userId)) {
+                        mUserIdToLabelMap.put(userId, getProfileLabel(userId));
+                    }
+                }
+                synchronized (mUserIdToBadgeMap) {
+                    if (!mUserIdToBadgeMap.containsKey(userId)) {
+                        mUserIdToBadgeMap.put(userId, getProfileBadge(userId));
+                    }
+                }
+                synchronized (mCanFrowardToProfileIdMap) {
+                    if (!mCanFrowardToProfileIdMap.containsKey(userId)) {
+                        if (userId.getIdentifier() == ActivityManager.getCurrentUser()
+                                || isCrossProfileContentSharingStrategyDelegatedFromParent(
+                                UserHandle.of(userId.getIdentifier()))
+                                || CrossProfileUtils.getCrossProfileResolveInfo(mCurrentUser,
+                                mContext.getPackageManager(), mCurrentStateIntent, mContext,
+                                mConfigStore.isPrivateSpaceInDocsUIEnabled()) != null) {
+                            mCanFrowardToProfileIdMap.put(userId, true);
+                        } else {
+                            mCanFrowardToProfileIdMap.put(userId, false);
+                        }
+
+                    }
+                }
+            } else {
+                Log.e(TAG, "Unexpected action received: " + action);
+            }
+        }
+
+        @Override
+        public void setCurrentStateIntent(Intent intent) {
+            mCurrentStateIntent = intent;
+        }
+
+        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..bf54e25 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)) {
+            if (mProviderTestRunnable != null) {
+                mHandler.removeCallbacks(mProviderTestRunnable);
+                mProviderTestRunnable = null;
+            }
+            if (!mActivity.isSearchExpanded()) {
+                if (mActivity.getLastSelectedUser() != null
+                        && mActivity.getLastSelectedUser().equals(userId)) {
+                    mState.stack.reset(mActivity.getInitialStack());
+                }
+                mActivity.refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
+            }
+        } 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..7a53e53 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
+    protected void onDestroy() {
+        super.onDestroy();
+    }
+
+    @Override
     public String getDrawerTitle() {
         Intent intent = getIntent();
         return (intent != null && intent.hasExtra(Intent.EXTRA_TITLE))
@@ -333,7 +352,9 @@
         final RootInfo root = getCurrentRoot();
         final DocumentInfo cwd = getCurrentDirectory();
 
-        assert(!mSearchManager.isSearching());
+        setInitialStack(mState.stack);
+
+        assert (!mSearchManager.isSearching());
 
         if (mState.stack.isRecents()) {
             DirectoryFragment.showRecentsOpen(fm, anim);
@@ -355,7 +376,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..c14c8b8 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
@@ -281,6 +300,11 @@
     }
 
     @Override
+    protected void onDestroy() {
+        super.onDestroy();
+    }
+
+    @Override
     public String getDrawerTitle() {
         String title;
         try {
@@ -334,6 +358,8 @@
         final RootInfo root = getCurrentRoot();
         final DocumentInfo cwd = getCurrentDirectory();
 
+        setInitialStack(mState.stack);
+
         if (mState.stack.isRecents()) {
             DirectoryFragment.showRecentsOpen(fm, anim);
 
@@ -345,8 +371,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 +384,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 +395,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..15089a6 100644
--- a/src/com/android/documentsui/roots/ProvidersCache.java
+++ b/src/com/android/documentsui/roots/ProvidersCache.java
@@ -51,7 +51,6 @@
 
 import com.android.documentsui.DocumentsApplication;
 import com.android.documentsui.R;
-import com.android.documentsui.UserIdManager;
 import com.android.documentsui.UserPackage;
 import com.android.documentsui.archives.ArchivesProvider;
 import com.android.documentsui.base.LookupApplicationName;
@@ -90,10 +89,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;
@@ -121,13 +120,13 @@
     @GuardedBy("mObservedAuthoritiesDetails")
     private final Map<UserAuthority, PackageDetails> mObservedAuthoritiesDetails = new HashMap<>();
 
-    private final UserIdManager mUserIdManager;
-
-    public ProvidersCache(Context context, UserIdManager userIdManager) {
+    public ProvidersCache(Context context) {
         mContext = context;
-        mUserIdManager = userIdManager;
     }
 
+    /**
+     * Generates recent root for the provided user id
+     */
     private RootInfo generateRecentsRoot(UserId rootUserId) {
         return new RootInfo() {{
             // Special root for recents
@@ -199,7 +198,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 = new ArrayList<>(getUserIds());
+        for (UserId userId : userIds) {
             RootInfo recentRoot = createOrGetRecentsRoot(userId);
             recentRoot.title = title;
             // Nothing else about the root should ever change.
@@ -509,11 +509,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 +537,8 @@
 
             final long start = SystemClock.elapsedRealtime();
 
-            for (UserId userId : mUserIdManager.getUserIds()) {
+            List<UserId> userIds = new ArrayList<>(getUserIds());
+            for (UserId userId : userIds) {
                 final RootInfo recents = createOrGetRecentsRoot(userId);
                 synchronized (mLock) {
                     mLocalRoots.put(new UserAuthority(recents.userId, recents.authority), recents);
@@ -544,7 +546,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 +563,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 +703,11 @@
             packageName = pckgName;
         }
     }
+
+    private List<UserId> getUserIds() {
+        if (DocumentsApplication.getConfigStore().isPrivateSpaceInDocsUIEnabled()) {
+            return DocumentsApplication.getUserManagerState(mContext).getUserIds();
+        }
+        return DocumentsApplication.getUserIdManager(mContext).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..5f41ce3
--- /dev/null
+++ b/tests/common/com/android/documentsui/TestUserManagerState.java
@@ -0,0 +1,87 @@
+/*
+ * 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 android.util.Log;
+
+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 {
+
+    private static final String TAG = "TestUserManagerState";
+    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;
+    public Intent intent = new Intent();
+
+    @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);
+            return;
+        } else if (Intent.ACTION_PROFILE_AVAILABLE.equals(action)) {
+            if (!userIds.contains(userId)) {
+                userIds.add(userId);
+            }
+            if (!userIdToLabelMap.containsKey(userId)) {
+                userIdToLabelMap.put(userId, profileLabel);
+            }
+            if (!userIdToBadgeMap.containsKey(userId)) {
+                userIdToBadgeMap.put(userId, profileBadge);
+            }
+            if (!canFrowardToProfileIdMap.containsKey(userId)) {
+                canFrowardToProfileIdMap.put(userId, true);
+            }
+        } else {
+            Log.e(TAG, "Unexpected action received: " + action);
+        }
+    }
+
+    @Override
+    public void setCurrentStateIntent(Intent intent) {
+    }
+}
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/archives/WriteableArchiveTest.java b/tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java
index 7092d12..da470da 100644
--- a/tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java
+++ b/tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java
@@ -21,9 +21,9 @@
 import android.os.ParcelFileDescriptor;
 import android.provider.DocumentsContract.Document;
 import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.MediumTest;
 
 import java.io.File;
 import java.io.IOException;
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/functional/com/android/documentsui/inspector/DocumentLoaderTest.java b/tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java
index 8a2b21f..ac417c9 100644
--- a/tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java
+++ b/tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java
@@ -25,8 +25,8 @@
 import android.os.Bundle;
 import android.os.Looper;
 import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.MediumTest;
 
+import androidx.test.filters.MediumTest;
 import androidx.test.rule.provider.ProviderTestRule;
 
 import com.android.documentsui.InspectorProvider;
diff --git a/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java b/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java
index 7b2cb82..525397b 100644
--- a/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java
+++ b/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java
@@ -23,9 +23,10 @@
 import android.app.Notification;
 import android.net.Uri;
 import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.MediumTest;
 import android.text.format.DateUtils;
 
+import androidx.test.filters.MediumTest;
+
 import com.android.documentsui.R;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.services.FileOperationService.OpType;
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/FocusManagerTest.java b/tests/unit/com/android/documentsui/FocusManagerTest.java
index 67e7000..36637f3 100644
--- a/tests/unit/com/android/documentsui/FocusManagerTest.java
+++ b/tests/unit/com/android/documentsui/FocusManagerTest.java
@@ -17,10 +17,10 @@
 package com.android.documentsui;
 
 import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
 
 import androidx.recyclerview.selection.SelectionTracker;
 import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.filters.SmallTest;
 
 import com.android.documentsui.base.UserId;
 import com.android.documentsui.dirlist.TestData;
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..afe8f45
--- /dev/null
+++ b/tests/unit/com/android/documentsui/UserManagerStateTest.java
@@ -0,0 +1,857 @@
+/*
+ * 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.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.google.common.truth.Truth.assertWithMessage;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.Manifest;
+import android.app.admin.DevicePolicyManager;
+import android.app.admin.DevicePolicyResourcesManager;
+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.graphics.drawable.Drawable;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import androidx.test.filters.SdkSuppress;
+import androidx.test.filters.SmallTest;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+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 static final String PERSONAL = "Personal";
+    private static final String WORK = "Work";
+    private static final String PRIVATE = "Private";
+
+    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 final DevicePolicyManager mDevicePolicyManager = mock(DevicePolicyManager.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(null);
+        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);
+        when(mMockContext.getSystemServiceName(DevicePolicyManager.class))
+                .thenReturn(Context.DEVICE_POLICY_SERVICE);
+        when(mMockContext.getSystemService(Context.DEVICE_POLICY_SERVICE))
+                .thenReturn(mDevicePolicyManager);
+        when(mMockContext.getResources()).thenReturn(
+                InstrumentationRegistry.getInstrumentation().getTargetContext().getResources());
+    }
+
+    @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_anyIntentActionForManagedProfile() {
+        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_actionProfileUnavailableForPrivateProfile() {
+        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);
+
+        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 be same before and after receiving intent: "
+                + action)
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent)).isEqualTo(
+                        canForwardToProfileIdMapBeforeIntent);
+    }
+
+    @Test
+    public void testOnProfileStatusChange_actionProfileAvailable_profileInitialised() {
+        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));
+
+        // initialising the userIds list and canForwardToProfileIdMap
+        mUserManagerState.getUserIds();
+        mUserManagerState.getCanForwardToProfileIdMap(mMockIntent);
+
+        // Making the private profile unavailable after it has been initialised
+        mUserManagerState.onProfileActionStatusChange(Intent.ACTION_PROFILE_UNAVAILABLE,
+                privateUser);
+
+        List<UserId> userIdsBeforeIntent = new ArrayList<>(mUserManagerState.getUserIds());
+        Map<UserId, Boolean> canForwardToProfileIdMapBeforeIntent = new HashMap<>(
+                mUserManagerState.getCanForwardToProfileIdMap(mMockIntent));
+
+        List<UserId> expectedUserIdsAfterIntent = Lists.newArrayList(currentUser, managedUser,
+                privateUser);
+
+        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 be same before and after receiving intent: "
+                + action)
+                .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent)).isEqualTo(
+                        canForwardToProfileIdMapBeforeIntent);
+    }
+
+    @Test
+    public void testOnProfileStatusChange_actionProfileAvailable_profileNotInitialised() {
+        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);
+
+        // Private user will not be initialised if it is in quiet mode
+        when(mMockUserManager.isQuietModeEnabled(mPrivateUser)).thenReturn(true);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser));
+
+        // UserManagerState#mUserId and UserManagerState#mCanForwardToProfileIdMap will be 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);
+    }
+
+    @Test
+    public void testGetUserIdToLabelMap_systemUserAndManagedUser_PreV() {
+        if (SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser));
+        if (SdkLevel.isAtLeastT()) {
+            DevicePolicyResourcesManager devicePolicyResourcesManager = mock(
+                    DevicePolicyResourcesManager.class);
+            when(mDevicePolicyManager.getResources()).thenReturn(devicePolicyResourcesManager);
+            when(devicePolicyResourcesManager.getString(eq(PERSONAL_TAB), any())).thenReturn(
+                    PERSONAL);
+            when(devicePolicyResourcesManager.getString(eq(WORK_TAB), any())).thenReturn(WORK);
+        }
+
+        Map<UserId, String> userIdToLabelMap = mUserManagerState.getUserIdToLabelMap();
+
+        assertWithMessage("Incorrect label returned for user id " + mSystemUser)
+                .that(userIdToLabelMap.get(UserId.of(mSystemUser))).isEqualTo(PERSONAL);
+        assertWithMessage("Incorrect label returned for user id " + mManagedUser)
+                .that(userIdToLabelMap.get(UserId.of(mManagedUser))).isEqualTo(WORK);
+    }
+
+    @Test
+    public void testGetUserIdToLabelMap_systemUserManagedUserPrivateUser_PostV() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser));
+        if (SdkLevel.isAtLeastT()) {
+            DevicePolicyResourcesManager devicePolicyResourcesManager = mock(
+                    DevicePolicyResourcesManager.class);
+            when(mDevicePolicyManager.getResources()).thenReturn(devicePolicyResourcesManager);
+            when(devicePolicyResourcesManager.getString(eq(PERSONAL_TAB), any())).thenReturn(
+                    PERSONAL);
+        }
+        UserManager managedUserManager = getUserManagerForManagedUser();
+        UserManager privateUserManager = getUserManagerForPrivateUser();
+        when(managedUserManager.getProfileLabel()).thenReturn(WORK);
+        when(privateUserManager.getProfileLabel()).thenReturn(PRIVATE);
+
+        Map<UserId, String> userIdToLabelMap = mUserManagerState.getUserIdToLabelMap();
+
+        assertWithMessage("Incorrect label returned for user id " + mSystemUser)
+                .that(userIdToLabelMap.get(UserId.of(mSystemUser))).isEqualTo(PERSONAL);
+        assertWithMessage("Incorrect label returned for user id " + mManagedUser)
+                .that(userIdToLabelMap.get(UserId.of(mManagedUser))).isEqualTo(WORK);
+        assertWithMessage("Incorrect label returned for user id " + mPrivateUser)
+                .that(userIdToLabelMap.get(UserId.of(mPrivateUser))).isEqualTo(PRIVATE);
+    }
+
+    @Test
+    public void testGetUserIdToBadgeMap_systemUserManagedUser_PreV() {
+        if (SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser));
+        Drawable workBadge = mMockContext.getDrawable(R.drawable.ic_briefcase);
+        if (SdkLevel.isAtLeastT()) {
+            DevicePolicyResourcesManager devicePolicyResourcesManager = mock(
+                    DevicePolicyResourcesManager.class);
+            when(mDevicePolicyManager.getResources()).thenReturn(devicePolicyResourcesManager);
+            when(devicePolicyResourcesManager.getDrawable(eq(WORK_PROFILE_ICON), eq(SOLID_COLORED),
+                    any())).thenReturn(workBadge);
+        }
+
+        Map<UserId, Drawable> userIdToBadgeMap = mUserManagerState.getUserIdToBadgeMap();
+
+        assertWithMessage("There should be no badge present for personal user")
+                .that(userIdToBadgeMap.containsKey(UserId.of(mSystemUser))).isFalse();
+        assertWithMessage("Incorrect badge returned for user id " + mManagedUser)
+                .that(userIdToBadgeMap.get(UserId.of(mManagedUser))).isEqualTo(workBadge);
+    }
+
+    @Test
+    public void testGetUserIdToBadgeMap_systemUserManagedUserPrivateUser_PostV() {
+        if (!SdkLevel.isAtLeastV()) return;
+        UserId currentUser = UserId.of(mSystemUser);
+        initializeUserManagerState(currentUser,
+                Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser));
+        Drawable workBadge = mock(Drawable.class);
+        Drawable privateBadge = mock(Drawable.class);
+        UserManager managedUserManager = getUserManagerForManagedUser();
+        UserManager privateUserManager = getUserManagerForPrivateUser();
+        when(managedUserManager.getUserBadge()).thenReturn(workBadge);
+        when(privateUserManager.getUserBadge()).thenReturn(privateBadge);
+
+        Map<UserId, Drawable> userIdToBadgeMap = mUserManagerState.getUserIdToBadgeMap();
+
+        assertWithMessage("There should be no badge present for personal user")
+                .that(userIdToBadgeMap.get(UserId.of(mSystemUser))).isNull();
+        assertWithMessage("Incorrect badge returned for user id " + mManagedUser)
+                .that(userIdToBadgeMap.get(UserId.of(mManagedUser))).isEqualTo(workBadge);
+        assertWithMessage("Incorrect badge returned for user id " + mPrivateUser)
+                .that(userIdToBadgeMap.get(UserId.of(mPrivateUser))).isEqualTo(privateBadge);
+    }
+
+    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);
+    }
+
+    private UserManager getUserManagerForManagedUser() {
+        Context managedUserContext = mock(Context.class);
+        when(mMockContext.createContextAsUser(mManagedUser, 0)).thenReturn(managedUserContext);
+        UserManager managedUserManager = mock(UserManager.class);
+        when(managedUserContext.getSystemServiceName(UserManager.class))
+                .thenReturn("managedUserManager");
+        when(managedUserContext.getSystemService(UserManager.class)).thenReturn(managedUserManager);
+        return managedUserManager;
+    }
+
+    private UserManager getUserManagerForPrivateUser() {
+        Context privateUserContext = mock(Context.class);
+        when(mMockContext.createContextAsUser(mPrivateUser, 0)).thenReturn(privateUserContext);
+        UserManager privateUserManager = mock(UserManager.class);
+        when(privateUserContext.getSystemServiceName(UserManager.class))
+                .thenReturn("privateUserManager");
+        when(privateUserContext.getSystemService(UserManager.class)).thenReturn(privateUserManager);
+        return privateUserManager;
+    }
+}
diff --git a/tests/unit/com/android/documentsui/base/DocumentInfoTest.java b/tests/unit/com/android/documentsui/base/DocumentInfoTest.java
index eba30d2..4e73333 100644
--- a/tests/unit/com/android/documentsui/base/DocumentInfoTest.java
+++ b/tests/unit/com/android/documentsui/base/DocumentInfoTest.java
@@ -28,8 +28,8 @@
 import android.net.Uri;
 import android.provider.DocumentsContract;
 import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
 
+import androidx.test.filters.SmallTest;
 import androidx.test.rule.provider.ProviderTestRule;
 
 import com.android.documentsui.InspectorProvider;
diff --git a/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java b/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
index 07a55f8..09b1933 100644
--- a/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
+++ b/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
@@ -18,13 +18,14 @@
 
 import android.database.Cursor;
 import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
 import android.view.View;
 import android.widget.Space;
 
 import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 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/inspector/GpsCoordinatesTextClassifierTest.java b/tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java
index e25d227..f4e0422 100644
--- a/tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java
+++ b/tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java
@@ -20,12 +20,12 @@
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.os.LocaleList;
-import android.test.suitebuilder.annotation.SmallTest;
 import android.view.textclassifier.TextClassification;
 import android.view.textclassifier.TextClassificationManager;
 import android.view.textclassifier.TextClassifier;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.testing.TestPackageManager;
diff --git a/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java b/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java
index 30178ce..28bc667 100644
--- a/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java
+++ b/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java
@@ -19,12 +19,12 @@
 import static junit.framework.Assert.assertTrue;
 
 import android.content.Context;
-import android.test.suitebuilder.annotation.SmallTest;
 import android.text.Spannable;
 import android.text.SpannableString;
 import android.widget.TextView;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.inspector.HeaderTextSelector.Selector;
diff --git a/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java b/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java
index 9a7bad5..f3d5b59 100644
--- a/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java
+++ b/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java
@@ -29,10 +29,10 @@
 import android.os.UserHandle;
 import android.provider.DocumentsContract;
 import android.provider.DocumentsContract.Document;
-import android.test.suitebuilder.annotation.SmallTest;
 import android.view.View.OnClickListener;
 
 import androidx.annotation.Nullable;
+import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.InspectorProvider;
diff --git a/tests/unit/com/android/documentsui/inspector/MediaViewTest.java b/tests/unit/com/android/documentsui/inspector/MediaViewTest.java
index 80c3c47..db87e42 100644
--- a/tests/unit/com/android/documentsui/inspector/MediaViewTest.java
+++ b/tests/unit/com/android/documentsui/inspector/MediaViewTest.java
@@ -19,8 +19,8 @@
 import android.media.MediaMetadata;
 import android.os.Bundle;
 import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.SmallTest;
 
+import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.documentsui.R;
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/roots/ProvidersAccessTest.java b/tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java
index cab6641..255c1cb 100644
--- a/tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java
+++ b/tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java
@@ -21,9 +21,9 @@
 
 import android.provider.DocumentsContract;
 import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
 
 import androidx.annotation.Nullable;
+import androidx.test.filters.SmallTest;
 
 import com.android.documentsui.base.Providers;
 import com.android.documentsui.base.RootInfo;
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) {
