diff --git a/Android.bp b/Android.bp
index 619a390..5bf5514 100644
--- a/Android.bp
+++ b/Android.bp
@@ -35,6 +35,15 @@
     ],
 }
 
+java_library {
+    name: "Settings-change-ids",
+    srcs: ["src/com/android/settings/ChangeIds.java"],
+    libs: [
+        "app-compat-annotations",
+    ],
+}
+
+
 // Build the Settings APK
 android_library {
     name: "Settings-core",
@@ -77,18 +86,18 @@
         "lottie",
         "WifiTrackerLib",
         "SettingsLibActivityEmbedding",
+        "Settings-change-ids",
     ],
 
     libs: [
         "telephony-common",
         "ims-common",
-        "app-compat-annotations",
     ],
 }
 
 platform_compat_config {
     name: "settings-platform-compat-config",
-    src: ":Settings-core",
+    src: ":Settings-change-ids",
     system_ext_specific: true,
 }
 
@@ -126,7 +135,7 @@
 // over all the sources together.
 filegroup {
     name: "Settings_srcs",
-    srcs: ["src/**/*.java"],
+    srcs: ["src/**/*.java", "src/**/*.kt"],
 }
 
 filegroup {
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a8e0390..c8c33a8 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2848,7 +2848,7 @@
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
-                android:value="com.android.settings.fuelgauge.PowerUsageSummary" />
+                android:value="com.android.settings.fuelgauge.batteryusage.PowerUsageSummary" />
             <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                        android:value="@string/menu_key_battery"/>
         </activity>
diff --git a/color-check-baseline.xml b/color-check-baseline.xml
index edd2d59..b4915b9 100644
--- a/color-check-baseline.xml
+++ b/color-check-baseline.xml
@@ -4405,27 +4405,11 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
-        errorLine1="    &lt;string name=&quot;sync_plug&quot; msgid=&quot;7956982719077985381&quot;>&quot;‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‎‎‎‎‏‏‎‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‎‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎&quot;&lt;font fgcolor=&quot;#ffffffff&quot;>&quot;‎‏‎‎‏‏‏‎Welcome to Google sync!‎‏‎‎‏‏‎&quot;&lt;/font>&quot;‎‏‎‎‏‏‏‎ ‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎A Google approach to syncing data to allow access to your contacts, appointments, and more from wherever you are.‎‏‎‎‏‎&quot;&lt;/string>"
-        errorLine2="                                                                                                                                                                         ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="res/values-en-rXC/strings.xml"
-            line="3152"
-            column="170"/>
-    </issue>
-
-    <issue
-        id="HardCodedColor"
-        severity="Error"
-        message="Avoid using hardcoded color"
-        category="Correctness"
-        priority="4"
-        summary="Using hardcoded color"
-        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="    &lt;string name=&quot;sync_plug&quot; msgid=&quot;7956982719077985381&quot;>&lt;font fgcolor=&quot;#ffffffff&quot;>&quot;Welcome to Google sync!&quot;&lt;/font>&quot; \nA Google approach to syncing data to allow access to your contacts, appointments and more from wherever you are.&quot;&lt;/string>"
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values-en-rAU/strings.xml"
-            line="3157"
+            line="3173"
             column="64"/>
     </issue>
 
@@ -4441,7 +4425,7 @@
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values-en-rCA/strings.xml"
-            line="3157"
+            line="3173"
             column="64"/>
     </issue>
 
@@ -4457,7 +4441,7 @@
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values-en-rGB/strings.xml"
-            line="3157"
+            line="3173"
             column="64"/>
     </issue>
 
@@ -4473,7 +4457,7 @@
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values-en-rIN/strings.xml"
-            line="3157"
+            line="3173"
             column="64"/>
     </issue>
 
@@ -4485,11 +4469,27 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="    &lt;string name=&quot;sync_plug&quot; msgid=&quot;7956982719077985381&quot;>&quot;‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‎‎‎‎‏‏‎‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‎‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎&quot;&lt;font fgcolor=&quot;#ffffffff&quot;>&quot;‎‏‎‎‏‏‏‎Welcome to Google sync!‎‏‎‎‏‏‎&quot;&lt;/font>&quot;‎‏‎‎‏‏‏‎ ‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎A Google approach to syncing data to allow access to your contacts, appointments, and more from wherever you are.‎‏‎‎‏‎&quot;&lt;/string>"
+        errorLine2="                                                                                                                                                                         ~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/values-en-rXC/strings.xml"
+            line="3173"
+            column="170"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="    &lt;string name=&quot;sync_plug&quot;>&lt;font fgcolor=&quot;#ffffffff&quot;>Welcome to Google sync!&lt;/font>"
         errorLine2="                                   ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/strings.xml"
-            line="7160"
+            line="7204"
             column="36"/>
     </issue>
 
@@ -4757,11 +4757,43 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="        &lt;item name=&quot;wifi_signal_color&quot;>@color/setup_wizard_wifi_color_dark&lt;/item>"
+        errorLine2="                                       ^">
+        <location
+            file="res/values/themes_suw.xml"
+            line="145"
+            column="40"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="        &lt;item name=&quot;wifi_signal_color&quot;>@color/setup_wizard_wifi_color_light&lt;/item>"
+        errorLine2="                                       ^">
+        <location
+            file="res/values/themes_suw.xml"
+            line="164"
+            column="40"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="        &lt;item name=&quot;android:colorPrimary&quot;>@color/material_grey_100&lt;/item>"
         errorLine2="                                          ^">
         <location
             file="res/values/themes_suw.xml"
-            line="196"
+            line="233"
             column="43"/>
     </issue>
 
@@ -4777,7 +4809,7 @@
         errorLine2="                                         ^">
         <location
             file="res/values/themes_suw.xml"
-            line="197"
+            line="234"
             column="42"/>
     </issue>
 
@@ -4793,7 +4825,7 @@
         errorLine2="                                            ^">
         <location
             file="res/values/themes_suw.xml"
-            line="198"
+            line="235"
             column="45"/>
     </issue>
 
diff --git a/res/drawable/ic_guest_exit.xml b/res/drawable/ic_guest_exit.xml
new file mode 100644
index 0000000..2f7ca09
--- /dev/null
+++ b/res/drawable/ic_guest_exit.xml
@@ -0,0 +1,25 @@
+<!--
+Copyright (C) 2022 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorControlNormal">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M3,13v-2h8.65L9.1,8.45 10.5,7l5,5 -5,5 -1.4,-1.45L11.65,13zM5,15v4h14L19,5L5,5v4L3,9L3,5q0,-0.825 0.587,-1.413Q4.175,3 5,3h14q0.825,0 1.413,0.587Q21,4.175 21,5v14q0,0.825 -0.587,1.413Q19.825,21 19,21L5,21q-0.825,0 -1.413,-0.587Q3,19.825 3,19v-4z"/>
+</vector>
diff --git a/res/drawable/ic_guest_reset.xml b/res/drawable/ic_guest_reset.xml
new file mode 100644
index 0000000..243a322
--- /dev/null
+++ b/res/drawable/ic_guest_reset.xml
@@ -0,0 +1,25 @@
+<!--
+Copyright (C) 2022 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorControlNormal">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M11,20.95q-3.025,-0.375 -5.013,-2.637Q4,16.05 4,13q0,-1.65 0.65,-3.163Q5.3,8.325 6.5,7.2l1.425,1.425q-0.95,0.85 -1.438,1.975Q6,11.725 6,13q0,2.2 1.4,3.887 1.4,1.688 3.6,2.063zM13,20.95v-2q2.175,-0.4 3.587,-2.075Q18,15.2 18,13q0,-2.5 -1.75,-4.25T12,7h-0.075l1.1,1.1 -1.4,1.4 -3.5,-3.5 3.5,-3.5 1.4,1.4 -1.1,1.1L12,5q3.35,0 5.675,2.325Q20,9.65 20,13q0,3.025 -1.988,5.288Q16.026,20.55 13,20.95z"/>
+</vector>
diff --git a/res/layout/battery_chart_graph.xml b/res/layout/battery_chart_graph.xml
index e89c912..df48144 100644
--- a/res/layout/battery_chart_graph.xml
+++ b/res/layout/battery_chart_graph.xml
@@ -31,7 +31,7 @@
         android:textColor="?android:attr/textColorSecondary"
         android:text="@string/battery_usage_chart_graph_hint" />
 
-    <com.android.settings.fuelgauge.BatteryChartView
+    <com.android.settings.fuelgauge.batteryusage.BatteryChartView
         android:id="@+id/battery_chart"
         android:layout_width="match_parent"
         android:layout_height="170dp"
diff --git a/res/raw/lottie_power_menu.json b/res/raw/lottie_long_press_power_for_assistant.json
similarity index 100%
rename from res/raw/lottie_power_menu.json
rename to res/raw/lottie_long_press_power_for_assistant.json
diff --git a/res/raw/lottie_long_press_power_for_power_menu.json b/res/raw/lottie_long_press_power_for_power_menu.json
new file mode 100644
index 0000000..09e2f0a
--- /dev/null
+++ b/res/raw/lottie_long_press_power_for_power_menu.json
@@ -0,0 +1 @@
+{"v":"5.9.0","fr":60,"ip":0,"op":241,"w":412,"h":300,"nm":"Home Button_Digital Assistant_LPP","ddd":0,"assets":[{"id":"comp_0","nm":"Power menu","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".grey200","cl":"grey200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[24,24,0],"ix":2,"l":2},"a":{"a":0,"k":[24,24,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.293,1.1],[0,0],[0,-1.46],[2.58,0],[0,2.58],[-1.047,0.853],[0,0],[0,-1.826],[-3.313,0],[0,3.314]],"o":[[0,0],[1.054,0.846],[0,2.58],[-2.58,0],[0,-1.46],[0,0],[-1.294,1.1],[0,3.314],[3.314,0],[0,-1.826]],"v":[[3.887,-4.553],[2.94,-3.606],[4.667,0],[0,4.667],[-4.666,0],[-2.946,-3.613],[-3.886,-4.553],[-6,0],[0,6],[6,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.667,-6],[-0.666,-6],[-0.666,0.667],[0.667,0.667]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.917647058824,0.929411764706,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24,24],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[24,24,0],"ix":2,"l":2},"a":{"a":0,"k":[24,24,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.941,0],[0,-9.941],[9.941,0],[0,9.941]],"o":[[9.941,0],[0,9.941],[-9.941,0],[0,-9.941]],"v":[[0,-18],[18,0],[0,18],[-18,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24,24],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.941,0],[0,-9.941],[9.941,0],[0,9.941]],"o":[[9.941,0],[0,9.941],[-9.941,0],[0,-9.941]],"v":[[0,-18],[18,0],[0,18],[-18,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24,68],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.941,0],[0,-9.941],[9.941,0],[0,9.941]],"o":[[9.941,0],[0,9.941],[-9.941,0],[0,-9.941]],"v":[[0,-18],[18,0],[0,18],[-18,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[68,24],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.941,0],[0,-9.941],[9.941,0],[0,9.941]],"o":[[9.941,0],[0,9.941],[-9.941,0],[0,-9.941]],"v":[[0,-18],[18,0],[0,18],[-18,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[68,68],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".grey900","cl":"grey900","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[46,46,0],"ix":2,"l":2},"a":{"a":0,"k":[46,46,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.627,0],[0,0],[0,-6.627],[0,0],[6.627,0],[0,0],[0,6.627],[0,0]],"o":[[0,0],[6.627,0],[0,0],[0,6.627],[0,0],[-6.627,0],[0,0],[0,-6.627]],"v":[[-34,-46],[34,-46],[46,-34],[46,34],[34,46],[-34,46],[-46,34],[-46,-34]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.125490196078,0.129411764706,0.141176470588,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[46,46],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":8,"ty":3,"nm":"Null 7","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,264.875,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[10,10,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":1500,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":0,"nm":"Power menu","refId":"comp_0","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":89,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":120,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":190,"s":[100]},{"t":210,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":80,"s":[206,175,0],"to":[0,-4.167,0],"ti":[0,4.167,0]},{"i":{"x":0.3,"y":0.3},"o":{"x":0.167,"y":0.167},"t":120,"s":[206,150,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":1},"o":{"x":0.3,"y":0},"t":190,"s":[206,150,0],"to":[0,4.167,0],"ti":[0,-4.167,0]},{"t":230,"s":[206,175,0]}],"ix":2,"l":2},"a":{"a":0,"k":[46,46,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":92,"h":92,"ip":80,"op":980,"st":80,"bm":0},{"ddd":0,"ind":30,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.243,0],[0,0],[0,5.244],[0,0],[-5.243,0],[0,0],[0,-5.244]],"o":[[0,5.244],[0,0],[-5.243,0],[0,0],[0,-5.244],[0,0],[5.243,0],[0,0]],"v":[[64.188,114.112],[54.679,123.622],[-54.679,123.622],[-64.188,114.112],[-64.188,-114.112],[-54.679,-123.622],[54.679,-123.622],[64.188,-114.112]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[6.554,0],[0,0],[0,-6.555],[0,0],[-6.554,0],[0,0],[0,6.555],[0,0],[0,1.313],[0,0],[1.313,0]],"o":[[0,-6.555],[0,0],[-6.554,0],[0,0],[0,6.555],[0,0],[6.554,0],[0,0],[1.313,0],[0,0],[0,-1.313],[0,0]],"v":[[66.566,-114.112],[54.679,-126],[-54.679,-126],[-66.566,-114.112],[-66.566,114.112],[-54.679,126],[54.679,126],[66.566,114.112],[66.566,-2.378],[68.943,-4.755],[68.943,-28.528],[66.566,-30.906]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901969433,0.86274510622,0.878431379795,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1500,"st":0,"bm":0},{"ddd":0,"ind":31,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.605],"y":[0.583]},"o":{"x":[0.36],"y":[0]},"t":40,"s":[206]},{"i":{"x":[0.635],"y":[0.851]},"o":{"x":[0.314],"y":[3.484]},"t":60,"s":[205.339]},{"i":{"x":[0.456],"y":[1]},"o":{"x":[0.665],"y":[-0.02]},"t":119.92,"s":[205.15]},{"t":139.919921875,"s":[206]}],"ix":3},"y":{"a":0,"k":150,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,1.313],[0,0],[1.313,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,-1.313],[0,0],[0,0],[0,0],[1.313,0]],"v":[[68.943,-52.302],[68.943,-61.811],[66.566,-64.188],[65.456,-64.188],[65.55,-49.906],[66.566,-49.924]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901969433,0.86274510622,0.878431379795,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1500,"st":0,"bm":0},{"ddd":0,"ind":32,"ty":4,"nm":".grey400","cl":"grey400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.243,0],[0,0],[0,5.244],[0,0],[-5.243,0],[0,0],[0,-5.244]],"o":[[0,5.244],[0,0],[-5.243,0],[0,0],[0,-5.244],[0,0],[5.243,0],[0,0]],"v":[[64.188,114.112],[54.679,123.622],[-54.679,123.622],[-64.188,114.112],[-64.188,-114.112],[-54.679,-123.622],[54.679,-123.622],[64.188,-114.112]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1500,"st":0,"bm":0},{"ddd":0,"ind":33,"ty":4,"nm":"Gesture Tap","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[273.205,92.869,0],"ix":2,"l":2},"a":{"a":0,"k":[273.205,92.869,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.226],[-5.226,0],[0,5.226],[5.226,0]],"o":[[0,5.226],[5.226,0],[0,-5.226],[-5.226,0]],"v":[[-9.463,0],[0,9.463],[9.463,0],[0,-9.463]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[273.205,92.869],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.239,0.239],"y":[0.604,0.604]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":35,"s":[13,13]},{"i":{"x":[0.596,0.596],"y":[1,1]},"o":{"x":[0.182,0.182],"y":[0.996,0.996]},"t":55,"s":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.793,0.793],"y":[0,0]},"t":124.92,"s":[129,129]},{"t":139.919921875,"s":[13,13]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.26],[-8.26,0],[0,8.26],[8.26,0]],"o":[[0,8.26],[8.26,0],[0,-8.26],[-8.26,0]],"v":[[-14.957,0],[0,14.957],[14.957,0],[0,-14.957]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.68235296011,0.796078443527,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[273.205,92.869],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.304,0.304],"y":[0.758,0.758]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":30,"s":[13,13]},{"i":{"x":[0.709,0.709],"y":[0.99,0.99]},"o":{"x":[0.196,0.196],"y":[1.618,1.618]},"t":50,"s":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.609,0.609],"y":[-0.001,-0.001]},"t":125,"s":[113.775,113.775]},{"t":140,"s":[8,8]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1500,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 9f1bd68..afa1b57 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Stelseltaal"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Stelselverstek"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Taalkeuse vir hierdie program is nie in Instellings beskikbaar nie."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Taal kan verskil van tale wat in die program beskikbaar is. Sommige programme steun dalk nie hierdie instelling nie."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">Verwyder gekose tale?</item>
       <item quantity="one">Verwyder gekose taal?</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Sluimerskerm"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Gebruik sluimerskerm"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Terwyl dit laai of gedok is"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Enige een"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Terwyl dit laai"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Terwyl dit gedok is"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nooit"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Af"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Skakel sluimerskerm aan om te beheer wat gebeur wanneer die foon gedok is en/of slaap."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Wanneer om te begin"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Huidige sluimerskerm"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Instellings"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Outomatiese helderheid"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Lig op om wakker te maak"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Stemmingvertoning"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Vee uit"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Alle programme en data in hierdie sessie sal uitgevee word."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Verwyder"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gas (Jy)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Gebruikers"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Ander gebruikers"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Vee gasaktiwiteit uit"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Vee alle gasprogramme en -data uit wanneer jy gasmodus verlaat"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Vee gasaktiwiteit uit?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Programme en data van hierdie gastesessie sal nou uitgevee word, en alle toekomstige gasaktiwiteit sal uitgevee word elke keer wanneer jy gasmodus verlaat"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Skakel foonoproepe aan"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Skakel foonoproepe en SMS aan"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Vee gebruiker uit"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index b855bdb..3dac217 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"የስርዓት ቋንቋ"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"የሥርዓት ነባሪ"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"ለዚህ መተግበሪያ የቋንቋ መረጣ ከቅንብሮች አይገኝም።"</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"ቋንቋ በመተግበሪያው ውስጥ ካሉ ቋንቋዎች ሊለያይ ይችላል። አንዳንድ መተግበሪያዎች ይህን ቅንብር ላይደግፉ ይችላሉ።"</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">የተመረጡት ቋንቋዎች ይወገዱ?</item>
       <item quantity="other">የተመረጡት ቋንቋዎች ይወገዱ?</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"የማያ ገጽ ማቆያ"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"የማያ ገጽ አዳኝን ይጠቀሙ"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ኃይል እየሞላ ወይም ተተክሎ ሳለ"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"ማናቸውም"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"ባትሪ በመሙላት ላይ ሳለ"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ተተክሎ ሳለ"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"በጭራሽ"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"ጠፍቷል"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ስልኩ ሲተከል እና/ወይም ሲተኛ ምን እንደሚከሰት ለመቆጣጠር የገጽ ማያ ማቆያን ያብሩ።"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"መቼ እንደሚጀመር"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"የአሁኑ ማያ ገጽ ማሳረፊያ"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"ቅንብሮች"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"ራስ ሰርብሩህነት"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"ለማንቃት ያንሱ"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"ከባቢያዊ ማሳያ"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"ሰርዝ"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"በዚህ ክፍለ-ጊዜ ውስጥ ያሉ ሁሉም መተግበሪያዎች እና ውሂብ ይሰረዛሉ።"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"አስወግድ"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"እንግዳ (እርስዎ)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"ተጠቃሚዎች"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"ሌሎች ተጠቃሚዎች"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"የእንግዳ እንቅስቃሴን ይሰርዙ"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"ከእንግዳ ሁነታ ሲወጡ ሁሉንም የእንግዳ መተግበሪያዎችን እና ውሂብን ይሰርዙ"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"የእንግዳ እንቅስቃሴ ይሰረዝ?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"የዚህ የእንግዳ ክፍለ-ጊዜ መተግበሪያዎች እና ውሂብ አሁን ይሰረዛሉ እና ከእንግዳ ሁነታ በወጡ ቁጥር ሁሉም የወደፊት የእንግዳ እንቅስቃሴዎች ይሰረዛሉ።"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"የስልክ ጥሪዎችን አብራ"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ስልክ ጥሪዎችን እና ኤስኤምኤስን አብራ"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"ተጠቃሚን ሰርዝ"</string>
diff --git a/res/values-ar/arrays.xml b/res/values-ar/arrays.xml
index 34765cd..75cf024 100644
--- a/res/values-ar/arrays.xml
+++ b/res/values-ar/arrays.xml
@@ -579,7 +579,7 @@
     <!-- no translation found for rtt_setting_mode:2 (8525285145696236811) -->
     <!-- no translation found for rtt_setting_mode:3 (7725394146877517088) -->
   <string-array name="nfc_payment_favor">
-    <item msgid="9104058551372383947">"دومًا"</item>
+    <item msgid="9104058551372383947">"دائمًا"</item>
     <item msgid="5283665583617307336">"إلا إذا كان هناك تطبيق دفع آخر مفتوحًا"</item>
   </string-array>
   <string-array name="nfc_payment_favor_values">
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 6ed7e9c..58ce512 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -988,17 +988,17 @@
     <string name="art_verifier_for_debuggable_summary" msgid="4802875841862652879">"‏تمكين ART من التحقُّق من رمز البايت للتطبيقات القابلة للتصحيح"</string>
     <string name="show_refresh_rate" msgid="5742688821872354973">"إظهار معدّل إعادة التحميل"</string>
     <string name="show_refresh_rate_summary" msgid="3558118122374609663">"إظهار معدّل إعادة التحميل الحالي للشاشة"</string>
-    <string name="nfc_quick_toggle_title" msgid="3607620705230351666">"‏الاتصالات القريبة المدى (NFC)"</string>
+    <string name="nfc_quick_toggle_title" msgid="3607620705230351666">"‏الاتصال القصير المدى (NFC)"</string>
     <string name="nfc_quick_toggle_summary" product="tablet" msgid="3622326550467939809">"‏السماح بتبادل البيانات عند لمس الجهاز اللوحي لجهاز من خلال تقنية \"الاتصال قصير المدى\" (NFC)"</string>
     <string name="nfc_quick_toggle_summary" product="default" msgid="1460871052409162980">"‏السماح بتبادل البيانات عند لمس الهاتف لجهاز من خلال تقنية \"الاتصالات القريبة المدى\" (NFC)"</string>
     <string name="nfc_disclaimer_title" msgid="3696580694485048039">"‏تفعيل NFC"</string>
     <string name="nfc_disclaimer_content" msgid="8256675597551036207">"‏يتم من خلال تقنية الاتصال بالحقل القريب (NFC) تبادل البيانات بين هذا الجهاز والأجهزة أو الأهداف المجاورة الأخرى، مثل محطات الدفع وبرامج قراءة الوصول والعلامات أو الإعلانات التفاعلية."</string>
     <string name="nfc_secure_settings_title" msgid="4906958426927741485">"‏يجب فتح قفل الجهاز لاستخدام تقنية الاتصال القصير المدى (NFC)"</string>
-    <string name="nfc_secure_toggle_summary" product="default" msgid="407654335737959071">"‏السماح باستخدام الاتصال القصير المدى (NFC) عندما تكون الشاشة مفتوحة فقط."</string>
+    <string name="nfc_secure_toggle_summary" product="default" msgid="407654335737959071">"‏السماح باستخدام الاتصال القصير المدى (NFC) عندما تكون الشاشة مفتوحة فقط"</string>
     <string name="android_beam_settings_title" msgid="2797963824490671295">"‏شعاع Android"</string>
     <string name="android_beam_on_summary" msgid="6067720758437490896">"‏جاهز لنقل محتوى التطبيق عبر الاتصالات القريبة المدى (NFC)"</string>
     <string name="android_beam_off_summary" msgid="5693961375631325042">"إيقاف"</string>
-    <string name="nfc_disabled_summary" msgid="8737797364522502351">"‏غير متوفر بسبب إيقاف الاتصال بالحقل القريب (NFC)"</string>
+    <string name="nfc_disabled_summary" msgid="8737797364522502351">"‏الإعداد غير متاح بسبب إيقاف تقنية الاتصال القصير المدى (NFC)."</string>
     <string name="android_beam_label" msgid="7168565080321110094">"‏شعاع Android"</string>
     <string name="android_beam_explained" msgid="5684416131846701256">"‏عند تفعيل هذه الميزة، يمكنك إرسال محتوى التطبيق إلى جهاز به اتصال NFC عن طريق الإمساك بالجهازين بالقرب من بعضهما. ويمكنك على سبيل المثال إرسال صفحات ويب وفيديوهات YouTube وجهات اتصال وغيرها.\n\nما عليك سوى تقريب الجهازين لبعضهما بعضًا (من الخلف عادةً) والنقر على الشاشة وسيحدّد التطبيق ما يتم إرساله."</string>
     <string name="wifi_quick_toggle_title" msgid="2737097538432862807">"Wi‑Fi"</string>
@@ -1073,7 +1073,7 @@
     <string name="wifi_ssid_hint" msgid="1940577553241083524">"‏يُرجى إدخال SSID"</string>
     <string name="wifi_security" msgid="9095934643631406913">"الأمان"</string>
     <string name="wifi_hidden_network" msgid="6466834025375485596">"شبكة مخفية"</string>
-    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"إذا لم يكن جهاز التوجيه يبث معرّف شبكة وتريد الاتصال به في المستقبل، يمكنك ضبط الشبكة كشبكة مخفية.\n\nربما يُنشئ هذا الإجراء خطرًا أمنيًا لأن هاتفك سيبث إشارته بانتظام للعثور على الشبكة.\n\nلن يؤدي ضبط الشبكة كشبكة مخفية إلى تغيير إعدادات جهاز التوجيه."</string>
+    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"إذا لم يكن جهاز التوجيه يبث معرّف شبكة وتريد الاتصال به في المستقبل، يمكنك ضبط الشبكة كشبكة مخفية.\n\nقد يشكّل هذا الإجراء خطرًا أمنيًا لأن هاتفك سيبث إشارته بانتظام للعثور على الشبكة.\n\nلن يؤدي ضبط الشبكة كشبكة مخفية إلى تغيير إعدادات جهاز التوجيه."</string>
     <string name="wifi_signal" msgid="4442182285304271424">"قوة الإشارة"</string>
     <string name="wifi_status" msgid="5349199188871002778">"الحالة"</string>
     <string name="tx_wifi_speed" msgid="2368986629172050673">"سرعة نقل الرابط"</string>
@@ -1509,15 +1509,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"شاشة الاستراحة"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"استخدام شاشة التوقف"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"أثناء الشحن أو الإرساء"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"أيهما"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"أثناء الشحن"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"أثناء الإرساء"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"عدم التشغيل أبدًا"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"إيقاف"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"للتحكم في ما يحدث عند إرساء الهاتف و/أو دخوله حالة السكون، عليك تشغيل شاشة التوقف."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"وقت البدء"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"شاشة الاستراحة الحالية"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"إعدادات"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"سطوع تلقائي"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"الرفع لتنبيه الجهاز"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"العرض على الشاشة"</string>
@@ -3576,6 +3573,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"حذف"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"سيتم حذف كل التطبيقات والبيانات في هذه الجلسة."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"إزالة"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"الضيف (أنت)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"المستخدمون"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"مستخدمون آخرون"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"حذف نشاط الضيف"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"حذف جميع تطبيقات وبيانات وضع الضيف عند الخروج منه"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"هل تريد حذف نشاط وضع الضيف؟"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"ستُحذف الآن التطبيقات والبيانات من جلسة الضيف هذه. بالإضافة إلى ذلك، ستُحذف جميع أنشطة الضيف المستقبلية في كل مرّة تخرج فيها من وضع الضيف."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"تفعيل المكالمات الهاتفية"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"تفعيل المكالمات الهاتفية والرسائل القصيرة"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"حذف حساب المستخدم"</string>
@@ -3751,7 +3755,7 @@
     <string name="connected_devices_dashboard_android_auto_no_nfc_summary" msgid="2532811870469405527">"‏بلوتوث وAndroid Auto ووضع القيادة"</string>
     <string name="connected_devices_dashboard_android_auto_no_driving_mode_summary" msgid="6426996842202276640">"‏البلوتوث وAndroid Auto وNFC"</string>
     <string name="connected_devices_dashboard_android_auto_no_nfc_no_driving_mode" msgid="1672426693308438634">"‏بلوتوث وAndroid Auto"</string>
-    <string name="nfc_and_payment_settings_payment_off_nfc_off_summary" msgid="7132040463607801625">"‏الإعدادات غير متاحة بسبب إيقاف تقنية الاتصال القصير المدى (NFC)."</string>
+    <string name="nfc_and_payment_settings_payment_off_nfc_off_summary" msgid="7132040463607801625">"‏الإعداد غير متاح بسبب إيقاف تقنية الاتصال القصير المدى (NFC)."</string>
     <string name="nfc_and_payment_settings_no_payment_installed_summary" msgid="4879818114908207465">"لاستخدام هذه الميزة، يجب تثبيت تطبيق دفع أولاً."</string>
     <string name="app_and_notification_dashboard_title" msgid="2861781687031832943">"التطبيقات والإشعارات"</string>
     <string name="app_and_notification_dashboard_summary" msgid="8047683010984186106">"التطبيقات المُستخدِمة مؤخرًا، التطبيقات التلقائية"</string>
@@ -4793,7 +4797,7 @@
     <string name="usb_power_title" msgid="5602112548385798646">"خيارات التشغيل"</string>
     <string name="usb_file_transfer_title" msgid="2261577861371481478">"خيارات نقل الملفات"</string>
     <string name="usb_pref" msgid="8521832005703261700">"USB"</string>
-    <string name="usb_preference" msgid="5084550082591493765">"‏إعدادات USB"</string>
+    <string name="usb_preference" msgid="5084550082591493765">"‏إعدادات USB المفضّلة"</string>
     <string name="usb_control_title" msgid="1946791559052157693">"‏يتم التحكم في USB بواسطة"</string>
     <string name="usb_control_host" msgid="7404215921555021871">"جهاز متّصل"</string>
     <string name="usb_control_device" msgid="527916783743021577">"هذا الجهاز"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 4868bfe..6f6db37 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"ছিষ্টেমৰ ভাষা"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"ছিষ্টেম ডিফ’ল্ট"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"এই এপ্‌টোৰ বাবে ছেটিঙৰ পৰা ভাষা বাছনি কৰাৰ সুবিধা উপলব্ধ নহয়।"</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"ভাষাটো এপ্‌টোত উপলব্ধ ভাষাসমূহতকৈ পৃথক হ’ব পাৰে। কিছুমান এপে এই ছেটিংটো সমৰ্থন নকৰিব পাৰে।"</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">বাছনি কৰা ভাষাসমূহ আঁতৰাবনে?</item>
       <item quantity="other">বাছনি কৰা ভাষাসমূহ আঁতৰাবনে?</item>
@@ -850,7 +849,7 @@
     <string name="bluetooth_device_context_connect_advanced" msgid="934657460643490773">"বিকল্পসমূহ…"</string>
     <string name="bluetooth_menu_advanced" msgid="7633682234855216066">"উচ্চখাপৰ ছেটিং"</string>
     <string name="bluetooth_advanced_titlebar" msgid="5369701494951467257">"ব্লুটুথৰ উচ্চখাপৰ ছেটিংসমূহ"</string>
-    <string name="bluetooth_empty_list_bluetooth_off" msgid="316627049372961941">"যেতিয়া ব্লুটুথ অনহৈ থাকে, তেতিয়া আপোনাৰ ডিভাইচটোৱে ওচৰত থকা অইন ব্লুটুথ ডিভাইচৰ সৈতে যোগাযোগ কৰিব পাৰে।"</string>
+    <string name="bluetooth_empty_list_bluetooth_off" msgid="316627049372961941">"যেতিয়া ব্লুটুথ অন থাকে, তেতিয়া আপোনাৰ ডিভাইচে ওচৰত থকা আন ব্লুটুথ ডিভাইচৰ সৈতে যোগাযোগ কৰিব পাৰে।"</string>
     <string name="bluetooth_scanning_on_info_message" msgid="6667723887545056976">"ব্লুটুথ অন হৈ থকা অৱস্থাত আপোনাৰ ডিভাইচটোৱে অন্য নিকটৱৰ্তী ব্লুটুথ ডিভাইচৰ সৈতে সংযোগ স্থাপন কৰিব পাৰে।\n\nডিভাইচ ব্যৱহাৰৰ অভিজ্ঞতা উন্নত কৰিবলৈ এপ্‌ আৰু সেৱাসমূহে যিকোনো সময়তে, আনকি ব্লুটুথ অফ থকা অৱস্থাতো নিকটৱৰ্তী ডিভাইচৰ সন্ধান কৰিব পাৰে। ইয়াক অৱস্থানভিত্তিক সুবিধা আৰু সেৱা উন্নত কৰা আদিৰ দৰে কাৰ্যৰ বাবে ব্যৱহাৰ কৰিব পাৰি। আপুনি এইটো "<annotation id="link">"ব্লুটুথ স্কেনিঙৰ ছেটিঙ"</annotation>"ত সলনি কৰিব পাৰে।"</string>
     <string name="ble_scan_notify_text" msgid="1358879010396045164">"অৱস্থান নিৰ্ভুলভাৱে নিৰ্ণয় কৰিবলৈ, ছিষ্টেম এপ্ আৰু সেৱাসমূহে এতিয়াও ব্লুটুথ ডিভাইচ বিচাৰি পাব পাৰে। আপুনি ইয়াক <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>ত থকা স্কেনিং ছেটিঙত সলনি কৰিব পাৰিব <xliff:g id="LINK_END_1">LINK_END</xliff:g>।"</string>
     <string name="bluetooth_connect_failed" msgid="7892663424429584925">"সংযোগ কৰিব পৰা নগ\'ল। আকৌ চেষ্টা কৰক।"</string>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"স্ক্ৰীন ছেভাৰ"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"স্ক্ৰীন ছেভাৰ ব্যৱহাৰ কৰক"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"চাৰ্জ কৰোঁতে বা ডক কৰি থওঁতে"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"কোনোবা এটা"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"চাৰ্জ কৰি থকাৰ সময়ত"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ডক হৈ থাকোঁতে"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"কেতিয়াও নহয়"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"অফ হৈ আছে"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ফ\'নটো ড’ক আৰু/বা সুপ্ত অৱস্থাত থাকিলে যি হয় তাক নিয়ন্ত্ৰণ কৰিবলৈ, স্ক্ৰীন ছেভাৰ অন কৰক৷"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"ষ্টাৰ্ট কৰাৰ সময়"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"বৰ্তমান ব্যৱহৃত স্ক্ৰীন ছেভাৰ"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"ছেটিং"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"স্বয়ংক্ৰিয় উজ্জ্বলতা"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"সক্ৰিয় কৰিবলৈ দাঙক"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"স্তিমিত ডিছপ্লে’"</string>
@@ -1745,7 +1741,7 @@
     <string name="reset_dashboard_summary" msgid="4390780188264852956">"নেটৱৰ্ক, এপ্ বা ডিভাইচ ৰিছেট কৰিব পৰা যায়"</string>
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"এপ্‌সমূহ ৰিছেট কৰিব পাৰি"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"ৱাই-ফাই, ম’বাইল আৰু ব্লুটুথ ৰিছেট কৰক"</string>
-    <string name="reset_network_desc" msgid="1112523764899788246">"ই :\n\n"<li>"ৱাই-ফাই"</li>\n<li>"ম\'বাইল ডেটা"</li>\n<li>"ব্লুটুথ"</li>"কে আদি কৰি আটাইবোৰ নেটৱৰ্ক ছেটিং ৰিছেট কৰিব"</string>
+    <string name="reset_network_desc" msgid="1112523764899788246">"ই এইবোৰকে অন্তৰ্ভুক্ত কৰি আটাইবোৰ নেটৱৰ্ক ছেটিং ৰিছেট কৰিব:\n\n"<li>"ৱাই-ফাই"</li>\n<li>"ম\'বাইল ডেটা"</li>\n<li>"ব্লুটুথ"</li></string>
     <string name="erase_euicc_data_button" msgid="728078969563311737">"মচক"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ডাউনল’ড কৰা ছিমবোৰ মচক"</string>
     <string name="reset_esim_desc" msgid="3662444090563399131">"ই কোনো ম’বাইল সেৱাৰ আঁচনি বাতিল নকৰে। সলনি কৰা ছিম ডাউনল’ড কৰিবলৈ আপোনাৰ বাহকৰ সৈতে যোগাযোগ কৰক।"</string>
@@ -2096,7 +2092,7 @@
     <string name="internal_storage" msgid="999496851424448809">"আভ্যন্তৰীণ ষ্ট’ৰেজ"</string>
     <string name="recompute_size" msgid="1098091228370999128">"এপৰ আকাৰ পুনঃগণনা কৰা হৈছে…"</string>
     <string name="clear_data_dlg_title" msgid="180446967743732410">"এপ্ ডেটা মচিবনে?"</string>
-    <string name="clear_data_dlg_text" msgid="3440011276559762619">"ফাইল আৰু ছেটিঙকে ধৰি এই এপ্‌টোৰ ডেটা এই ডিভাইচটোৰ পৰা মচা হ\'ব"</string>
+    <string name="clear_data_dlg_text" msgid="3440011276559762619">"ফাইল আৰু ছেটিঙকে ধৰি এই এপ্‌টোৰ ডেটা এই ডিভাইচটোৰ পৰা স্থায়ীভাৱে মচা হ\'ব"</string>
     <string name="dlg_ok" msgid="1421350367857960997">"ঠিক"</string>
     <string name="dlg_cancel" msgid="5164705061530774899">"বাতিল কৰক"</string>
     <string name="dlg_delete" msgid="1790919205039397659">"মচক"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"মচক"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"এই ছেছনৰ আটাইবোৰ এপ্ আৰু ডেটা মচা হ\'ব।"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"আঁতৰাওক"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"অতিথি (আপুনি)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"ব্যৱহাৰকাৰী"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"অন্য ব্যৱহাৰকাৰী"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"অতিথিৰ ছেশ্বনত কৰা কাৰ্যকলাপ মচক"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"অতিথি ম’ডৰ পৰা বাহিৰ হওঁতে আটাইবোৰ অতিথি এপ্ আৰু ডেটা মচক"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"অতিথিৰ কাৰ্যকলাপ মচিবনে?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"এতিয়া এই অতিথিৰ ছেশ্বনৰ এপ্ আৰু ডেটা মচা হ’ব আৰু আপুনি অতিথি ম’ডৰ পৰা প্ৰতিবাৰ বাহিৰ হওঁতে ভৱিষ্যতে কৰা আটাইবোৰ অতিথিৰ কাৰ্যকলাপ মচা হ’ব।"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"ফ\'ন কল অন কৰক"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ফ\'ন কল আৰু এছএমএছ অন কৰক"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"ব্যৱহাৰকাৰীজন মচক"</string>
@@ -4733,7 +4736,7 @@
     <string name="ethernet_data_usage" msgid="4552227880905679761">"ইথাৰনেট ডেটাৰ ব্যৱহাৰ"</string>
     <string name="wifi" msgid="2932584495223243842">"ৱাই-ফাই"</string>
     <string name="ethernet" msgid="4665162609974492983">"ইথাৰনেট"</string>
-    <string name="cell_data_template" msgid="6077963976103260821">"<xliff:g id="AMOUNT">^1</xliff:g> ম’বাইল ডাটা"</string>
+    <string name="cell_data_template" msgid="6077963976103260821">"<xliff:g id="AMOUNT">^1</xliff:g> ম’বাইল ডেটা"</string>
     <string name="wifi_data_template" msgid="935934798340307438">"<xliff:g id="AMOUNT">^1</xliff:g> ৱাই-ফাই ডেটা"</string>
     <string name="ethernet_data_template" msgid="1429173767445201145">"<xliff:g id="AMOUNT">^1</xliff:g> ইথাৰনেটৰ ডেটা"</string>
     <string name="billing_cycle" msgid="6618424022653876279">"ডেটা ব্যৱহাৰৰ সকীয়নি আৰু সীমা"</string>
@@ -5141,7 +5144,7 @@
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;আপুনি এই এপ্‌টোক বিশ্বাস কৰাটো নিশ্চিত কৰক&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; এ স্বয়ংপূৰ্তিৰ বাবে নিৰ্ধাৰণ কৰিবলৈ আপোনাৰ স্ক্ৰীনত দেখা দিয়া বস্তুবোৰ ব্যৱহাৰ কৰে।"</string>
     <string name="debug_autofill_category" msgid="5998163555428196185">"স্বয়ংপূৰ্তি"</string>
     <string name="autofill_logging_level_title" msgid="3733958845861098307">"লগিঙৰ স্তৰ"</string>
-    <string name="autofill_max_partitions" msgid="7342195529574406366">"প্ৰতি ছেশ্বন কৰিব পৰা অধিকতম অনুৰোধ"</string>
+    <string name="autofill_max_partitions" msgid="7342195529574406366">"প্ৰতি ছেশ্বনত কৰিব পৰা অধিকতম অনুৰোধ"</string>
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"দেখিব পৰা অধিকতম ডেটাছেট"</string>
     <string name="autofill_reset_developer_options" msgid="6425613608979498608">"ডিফ’ল্ট মানলৈ ৰিছেট কৰক"</string>
     <string name="autofill_reset_developer_options_complete" msgid="1276741935956594965">"বিকাশকৰ্তাৰ স্বয়ংপূৰ্তি হোৱা বিকল্পসমূহ ৰিছেট কৰা হৈছে"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 9fde195..c3b3025 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Sistem dili"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Sistem defoltu"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Bu tətbiq üçün dil seçimini Ayarlardan etmək olmur."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Dil tətbiqdə əlçatan dillərdən fərqli ola bilər. Bəzi tətbiqlər bu ayarı dəstəkləməyə bilər."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">Seçilmiş dillər silinsin?</item>
       <item quantity="one">Seçilmiş dil silinsin?</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Ekran qoruyucu"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Ekran qoruyucusundan istifadə edin"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Şarj ərzində və ya dok-stansiyada"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Hər ikisi"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Şarj ərzində"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Dok-stansiyada"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Heç vaxt"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Qapalı"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Telefon doklanmış və/və ya yatan zaman baş verənlərə nəzarət edin, ekran qoruyucunu aktiv edin."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Başlama vaxtı"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Cari ekran qoruyucu"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Ayarlar"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Avtomatik parlaqlıq"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Oyatmaq üçün qaldırın"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ətraf mühit displeyi"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Silin"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Bu sessiyada bütün tətbiqlər və data itəcək."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Yığışdır"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Qonaq (Siz)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"İstifadəçilər"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Digər istifadəçilər"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Qonaq fəaliyyətini silin"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Qonaq rejimindən çıxarkən bütün qonaq tətbiqləri və datasını silin"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Qonaq fəaliyyəti silinsin?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Bu qonaq sessiyasındakı tətbiqlər və data indi silinəcək və hər dəfə qonaq rejimindən çıxanda bütün gələcək qonaq fəaliyyəti silinəcək"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Telefon zəngləri aktivləşdirilsin"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Telefon zəngləri &amp; SMS-i aktivləşdir"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"İstifadəçini silin"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 79bf54e..1900996 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -228,8 +228,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Jezik sistema"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Podrazumevani sistemski"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Izbor jezika za ovu aplikaciju nije dostupan iz Podešavanja."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Jezik može da se razlikuje od jezika dostupnih u aplikaciji. Neke aplikacije možda ne podržavaju ovo podešavanje."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">Želite li da uklonite izabrane jezike?</item>
       <item quantity="few">Želite li da uklonite izabrane jezike?</item>
@@ -1449,15 +1448,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Čuvar ekrana"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Koristi čuvar ekrana"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Tokom punjenja ili na baznoj stanici"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Bilo koje od ova dva"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Tokom punjenja"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Dok je na baznoj stanici"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nikada"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Isključeno"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Da biste kontrolisali šta se dešava kada je telefon na baznoj stanici i/ili u stanju spavanja, uključite čuvar ekrana."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Kada da počne"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Trenutni čuvar ekrana"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Podešavanja"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatski nivo osvetljenosti"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Podigni za aktivaciju"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ambijentalni ekran"</string>
@@ -2658,7 +2654,7 @@
     <string name="keywords_rtt" msgid="2429130928152514402">"oštećenje sluha, gubitak sluha, titl, teleprinter, tty"</string>
     <string name="keywords_voice_access" msgid="7807335263195876454"></string>
     <string name="fast_pair_settings" msgid="3308819519080016185">"Brzo uparivanje"</string>
-    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Otkrivanje Bluetooth uređ. za Brzo upariv. u bliz."</string>
+    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Otkrivanje Bluetooth uređaja za Brzo uparivanje u blizini"</string>
     <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"Potraži uređaje u blizini"</string>
     <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"Sačuvani uređaji"</string>
     <string name="print_settings" msgid="8519810615863882491">"Štampanje"</string>
@@ -2683,7 +2679,7 @@
     <string name="print_menu_item_add_service" msgid="1549091062463044676">"Dodaj uslugu"</string>
     <string name="print_menu_item_add_printer" msgid="8711630848324870892">"Dodaj štampač"</string>
     <string name="print_menu_item_search" msgid="5989979785203603169">"Pretraži"</string>
-    <string name="print_searching_for_printers" msgid="5401413178028348800">"Pretraga štampača"</string>
+    <string name="print_searching_for_printers" msgid="5401413178028348800">"Traženje štampača"</string>
     <string name="print_service_disabled" msgid="9185935228930987786">"Usluga je onemogućena"</string>
     <string name="print_print_jobs" msgid="2605944855933091183">"Zadaci za štampanje"</string>
     <string name="print_print_job" msgid="8477859161886726608">"Zadatak za štampanje"</string>
@@ -3444,6 +3440,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Izbriši"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Sve aplikacije i podaci u ovoj sesiji će biti izbrisani."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Ukloni"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gost (vi)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Korisnici"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Ostali korisnici"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Izbriši aktivnosti gosta"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Izbrišite sve aplikacije i podatke gosta pri izlazu iz režima gosta"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Izbrisaćete aktivnosti gosta?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Aplikacije i podaci iz ove sesije gosta biće odmah izbrisane, a sve buduće aktivnosti gosta biće izbrisane svaki put kada izađete iz režima gosta"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Uključi telefonske pozive"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Uključi telefonske pozive i SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Izbrišite korisnika"</string>
@@ -3473,8 +3476,8 @@
     <string name="nfc_payment_default" msgid="3769788268378614608">"Podrazumevano za plaćanje"</string>
     <string name="nfc_payment_default_not_set" msgid="6471905683119084622">"Nije podešeno"</string>
     <string name="nfc_payment_app_and_desc" msgid="2607417639227030398">"<xliff:g id="APP">%1$s</xliff:g> – <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
-    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Koristite podrazumevanu aplikaciju za plaćanje"</string>
-    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Koristite podrazumevanu za plaćanje"</string>
+    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Koristi podrazumevanu aplikaciju za plaćanje"</string>
+    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Koristi podrazumevanu za plaćanje"</string>
     <string name="nfc_payment_favor_default" msgid="4508491832174644772">"Uvek"</string>
     <string name="nfc_payment_favor_open" msgid="8554643344050373346">"Osim kad je otvorena druga aplikacija za plaćanje"</string>
     <string name="nfc_payment_pay_with" msgid="3001320460566523453">"Na terminalu za beskontaktno plaćanje koristiće se:"</string>
@@ -3965,7 +3968,7 @@
     <string name="lock_screen_notifs_redact_work" msgid="3833920196569208430">"Osetljiva obaveštenja o poslovnom profilu"</string>
     <string name="lock_screen_notifs_redact_work_summary" msgid="3238238380405430156">"Prikazuj osetljiv sadržaj poslovnog profila na zaključanom ekranu"</string>
     <string name="lock_screen_notifications_summary_show" msgid="6540443483088311328">"Prikaži sav sadržaj obaveštenja"</string>
-    <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Prikaži osetljiv sadržaj samo kada je otključano"</string>
+    <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Prikaži osetljiv sadržaj samo kada je otključan"</string>
     <string name="lock_screen_notifications_summary_disable" msgid="3388290397947365744">"Ne prikazuj uopšte obaveštenja"</string>
     <string name="lock_screen_notifications_interstitial_message" msgid="4688399629301178487">"Kako želite da se prikazuje sadržaj na zaključanom ekranu?"</string>
     <string name="lock_screen_notifications_interstitial_title" msgid="1360388192096354315">"Zaključan ekran"</string>
@@ -4580,7 +4583,7 @@
     <string name="usb_use_file_transfers" msgid="483915710802018503">"Prenos datoteka"</string>
     <string name="usb_use_file_transfers_desc" msgid="1020257823387107336">"Prenosite datoteke na drugi uređaj"</string>
     <string name="usb_use_photo_transfers" msgid="4641181628966036093">"PTP"</string>
-    <string name="usb_transcode_files" msgid="2441954752105119109">"Konvertujte video snimke u AVC"</string>
+    <string name="usb_transcode_files" msgid="2441954752105119109">"Konvertuj video snimke u AVC"</string>
     <string name="usb_transcode_files_summary" msgid="307102635711961513">"Video snimci će moći da se puste na više medija plejera, ali će im kvalitet možda biti lošiji"</string>
     <string name="usb_use_photo_transfers_desc" msgid="7490250033610745765">"Prenosite slike ili datoteke ako MTP nije podržan (PTP)"</string>
     <string name="usb_use_tethering" msgid="2897063414491670531">"USB privezivanje"</string>
@@ -5739,7 +5742,7 @@
     <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Koristi WiFi hotspot"</string>
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Koristi kačenje aplikacija"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"Koristi opcije za programere"</string>
-    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Koristite uslugu štampanja"</string>
+    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Koristi uslugu štampanja"</string>
     <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Dozvoli više korisnika"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Koristi bežično otklanjanje grešaka"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Koristi podešavanja upravljačkog programa za grafiku"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 160976b..5f39756 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -1471,15 +1471,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Экранная застаўка"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Ужываць экранную застаўку"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Пакуль прылада зараджаецца ці падключана"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"У абодвух выпадках"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Падчас зарадкі"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Пры падключэнні"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Ніколі"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Выключана"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Каб кантраляваць тое, што адбываецца, калі тэлефон прыстыкаваны і/або знаходзіцца ў рэжыме сну, уключыце экранную застаўку."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Калі пачынаць"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Бягучая экранная застаўка"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Налады"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Аўтаматычная яркасць"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Абуджэнне пры падняцці"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Неактыўны рэжым экрана"</string>
@@ -3490,6 +3487,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Выдаліць"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Усе дадаткі і даныя гэтага сеансу будуць выдаленыя."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Выдаліць"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Госць (вы)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Карыстальнікі"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Іншыя карыстальнікі"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Выдаліць звесткі пра дзеянні госця"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Выдаляць усе праграмы і даныя госця ў час выхаду з гасцявога рэжыму"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Выдаліць звесткі пра дзеянні госця?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Праграмы і даныя гэтага гасцявога сеанса будуць выдалены, і ўсе будучыя звесткі пра дзеянні госця будуць выдаляцца падчас кожнага выхаду з гасцявога рэжыму"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Уключыць тэлефонныя выклікі"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Уключыць тэлефонныя выклікі і SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Выдаліць карыстальніка"</string>
diff --git a/res/values-bg/arrays.xml b/res/values-bg/arrays.xml
index 57f2615..6e018b1 100644
--- a/res/values-bg/arrays.xml
+++ b/res/values-bg/arrays.xml
@@ -389,7 +389,7 @@
   <string-array name="captioning_font_size_selector_titles">
     <item msgid="923916134548435468">"Много малък"</item>
     <item msgid="5738147437573674872">"Малък"</item>
-    <item msgid="4691660235626027304">"Средно"</item>
+    <item msgid="4691660235626027304">"Среден"</item>
     <item msgid="824386705928670045">"Голям"</item>
     <item msgid="2790561781512874585">"Много голям"</item>
   </string-array>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index f2b0605..7b4c4f5 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -102,7 +102,7 @@
     <string name="bluetooth_no_devices_found" msgid="7704539337219953182">"В района няма намерени у-ва с Bluetooth."</string>
     <string name="bluetooth_notif_ticker" msgid="209515545257862858">"Заявка за сдвояване чрез Bluetooth"</string>
     <string name="bluetooth_notif_title" msgid="1196532269131348647">"Заявка за сдвояване"</string>
-    <string name="bluetooth_notif_message" msgid="5584717784198086653">"Докоснете за сдвояване с/ъс „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“."</string>
+    <string name="bluetooth_notif_message" msgid="5584717784198086653">"Докоснете за сдвояване с(ъс) <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_show_received_files" msgid="685424727760622632">"Получени файлове"</string>
     <string name="bluetooth_devices_card_off_title" msgid="1320149821945129127">"Функцията за Bluetooth е изключена"</string>
     <string name="bluetooth_devices_card_off_summary" msgid="2276527382891105858">"Докоснете за включване"</string>
@@ -932,7 +932,7 @@
     <string name="android_beam_settings_title" msgid="2797963824490671295">"Android Beam"</string>
     <string name="android_beam_on_summary" msgid="6067720758437490896">"В готовност за предаване на съдържание на приложения чрез КБП"</string>
     <string name="android_beam_off_summary" msgid="5693961375631325042">"Изключено"</string>
-    <string name="nfc_disabled_summary" msgid="8737797364522502351">"Не е налице, защото КБП е изключена"</string>
+    <string name="nfc_disabled_summary" msgid="8737797364522502351">"Не е налице, защото функцията за NFC е изключена"</string>
     <string name="android_beam_label" msgid="7168565080321110094">"Android Beam"</string>
     <string name="android_beam_explained" msgid="5684416131846701256">"Когато тази функция е включена, можете да излъчвате съдържание от приложенията до друго устройство с поддръжка за КБП, като държите устройствата близо едно до друго. Например можете да излъчвате уеб страници, видеоклипове от YouTube, контакти и др.\n\nТрябва само да поставите устройствата едно до друго (обикновено задните им страни), след което да докоснете екрана си. Приложението определя какво се излъчва."</string>
     <string name="wifi_quick_toggle_title" msgid="2737097538432862807">"Wi‑Fi"</string>
@@ -1301,7 +1301,7 @@
     <string name="search_settings" msgid="7573686516434589771">"Търсене"</string>
     <string name="display_settings" msgid="7197750639709493852">"Дисплей"</string>
     <string name="accelerometer_title" msgid="7745991950833748909">"Авт. завъртане на екрана"</string>
-    <string name="auto_rotate_option_off" msgid="2788096269396290731">"Изключено"</string>
+    <string name="auto_rotate_option_off" msgid="2788096269396290731">"Изкл."</string>
     <string name="auto_rotate_option_on" msgid="5776678230808498171">"Включено"</string>
     <string name="auto_rotate_option_face_based" msgid="3438645484087953174">"Вкл. – въз основа на лицето"</string>
     <string name="auto_rotate_switch_face_based" msgid="7824467067774120000">"Вкл. на лицевото разпознаване"</string>
@@ -1431,15 +1431,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Скрийнсейвър"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Използване на скрийнсейвър"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"При зареждане или връзка с докинг станция"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"И в двата случая"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"При зареждане"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"При свързване с докинг станция"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Никога"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Изкл."</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"За да контролирате какво се случва, когато телефонът е свързан с докинг станция и/или е в спящ режим, включете скрийнсейвъра."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Кога да стартира функцията"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Текущ скрийнсейвър"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Настройки"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Автоматична яркост"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Събуждане при повдигане"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Дисплей, открояващ важни неща"</string>
@@ -1766,7 +1763,7 @@
     <string name="main_clear_desc" product="default" msgid="6984348811887162647">"Това ще изтрие всички данни от "<b>"вътрешното хранилище"</b>" на телефона ви, включително:\n\n"<li>"профила ви в Google"</li>\n<li>"данните и настройките от системата и приложенията"</li>\n<li>"изтеглените приложения"</li></string>
     <string name="main_clear_accounts" product="default" msgid="7675859115108318537">\n\n"Понастоящем сте влезли в следните профили:\n"</string>
     <string name="main_clear_other_users_present" product="default" msgid="2672976674798019077">\n\n"На това устройство има други потребители.\n"</string>
-    <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"музика"</li>\n<li>"снимки"</li>\n<li>"други потребителски данни"</li></string>
+    <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"музика"</li>\n<li>"снимки"</li>\n<li>"други потребителски данни."</li></string>
     <string name="main_clear_desc_also_erases_esim" msgid="4553469876411831729"><li>"електронни SIM карти"</li></string>
     <string name="main_clear_desc_no_cancel_mobile_plan" msgid="369883568059127035">\n\n"Планът ви за мобилна услуга няма да бъде анулиран."</string>
     <string name="main_clear_desc_erase_external_storage" product="nosdcard" msgid="4441604184663452046">\n\n"За да изчистите музиката, снимките и другите потребителски данни, трябва да се изтрие "<b>"USB хранилището"</b>"."</string>
@@ -2097,7 +2094,7 @@
     <string name="no_applications" msgid="985069304755391640">"Няма приложения."</string>
     <string name="internal_storage" msgid="999496851424448809">"Вътр. хранилище"</string>
     <string name="recompute_size" msgid="1098091228370999128">"Размерът се преизчислява..."</string>
-    <string name="clear_data_dlg_title" msgid="180446967743732410">"Да се изтрият ли данните от приложенията?"</string>
+    <string name="clear_data_dlg_title" msgid="180446967743732410">"Да се изтрият ли данните от приложението?"</string>
     <string name="clear_data_dlg_text" msgid="3440011276559762619">"Данните в това приложение, включително файловете и настройките, ще бъдат изтрити за постоянно от устройството"</string>
     <string name="dlg_ok" msgid="1421350367857960997">"OK"</string>
     <string name="dlg_cancel" msgid="5164705061530774899">"Отказ"</string>
@@ -3402,6 +3399,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Изтриване"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Всички приложения и данни в тази сесия ще бъдат изтрити."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Премахване"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Гост (вие)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Потребители"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Други потребители"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Изтриване на активността като гост"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Изтриване на всички приложения и данни при изход от режима на гост"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Изтриване на активността като гост?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Приложенията и данните от тази сесия като гост ще бъдат изтрити сега, а цялата бъдеща активност като гост ще се изтрива всеки път, когато излезете от режима на гост"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Включване на телефонните обаждания"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Включване на тел. обаждания и SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Изтриване на потребителя"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 10fed31..b6e90de 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -225,8 +225,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"সাজেস্ট করা ভাষা"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"সব ভাষা"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"সিস্টেমের ভাষা"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"সিস্টেম ডিফল্ট"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"এই অ্যাপের জন্য \'সেটিংস\' থেকে ভাষা বেছে নেওয়ার সুবিধা উপলভ্য নেই।"</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -845,7 +844,7 @@
     <string name="bluetooth_preference_no_found_devices" msgid="1331122763066030155">"কোনো ডিভাইস উপলব্ধ নয়"</string>
     <string name="bluetooth_device_context_connect" msgid="4913860372216815855">"কানেক্ট করুন"</string>
     <string name="bluetooth_device_context_disconnect" msgid="4464167389972513232">"ডিসকানেক্ট করুন"</string>
-    <string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"যুক্ত করুন &amp; কানেক্ট করুন"</string>
+    <string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"যুক্ত করুন ও কানেক্ট করুন"</string>
     <string name="bluetooth_device_context_unpair" msgid="7525735305244087162">"চেনা তালিকে থেকে সরান"</string>
     <string name="bluetooth_device_context_disconnect_unpair" msgid="2001359431289794561">"ডিসকানেক্ট করুন ও চেনা তালিকে থেকে সরান"</string>
     <string name="bluetooth_device_context_connect_advanced" msgid="934657460643490773">"বিকল্পগুলি..."</string>
@@ -1430,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"স্ক্রিন সেভার"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"স্ক্রিন সেভার ব্যবহার করা"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"চার্জ অথবা ডক করার সময়"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"উভয় ক্ষেত্রেই"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"চার্জ করার সময়"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ডক করে রাখার সময়"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"কখনই নয়"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"বন্ধ আছে"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ফোন ডক করা এবং/অথবা নিদ্রা মোডে থাকাকালীন কি হচ্ছে তা নিয়ন্ত্রণের জন্য স্ক্রিন সেভার চালু করুন।"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"কখন শুরু করবেন"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"বর্তমান স্ক্রিন সেভার"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"সেটিংস"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"স্বয়ংক্রিয় উজ্জ্বলতা"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"সক্রিয় করতে লিফ্ট করুন"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"অ্যাম্বিয়েন্ট ডিসপ্লে"</string>
@@ -1856,8 +1852,8 @@
     <string name="location_app_level_permissions" msgid="907206607664629759">"অ্যাপ লোকেশনের অনুমতি"</string>
     <string name="location_app_permission_summary_location_off" msgid="2711822936853500335">"লোকেশন বন্ধ করা আছে"</string>
     <plurals name="location_app_permission_summary_location_on" formatted="false" msgid="8286873148858526214">
-      <item quantity="one"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g>টি অ্যাপের মধ্যে <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g>টি লোকেশন অ্যাক্সেস করতে পারবে</item>
-      <item quantity="other"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g>টি অ্যাপের মধ্যে <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g>টি লোকেশন অ্যাক্সেস করতে পারবে</item>
+      <item quantity="one"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g>টির মধ্যে <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g>টি অ্যাপ লোকেশন অ্যাক্সেস করতে পারবে</item>
+      <item quantity="other"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g>টির মধ্যে <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g>টি অ্যাপ লোকেশন অ্যাক্সেস করতে পারবে</item>
     </plurals>
     <string name="location_category_recent_location_access" msgid="2558063524482178146">"সম্প্রতি লোকেশন অ্যাক্সেসের অ্যাক্টিভিটি"</string>
     <string name="location_recent_location_access_see_all" msgid="4203102419355323325">"সবকটি দেখুন"</string>
@@ -2629,7 +2625,7 @@
     <string name="keywords_hearing_aids" msgid="524979615168196199">"কম শুনতে পাওয়া, শুনতে সমস্যা হওয়া"</string>
     <string name="keywords_rtt" msgid="2429130928152514402">"কম শুনতে পাওয়া, শুনতে সমস্যা হওয়া, ক্যাপশন, টেলিটাইপ, tty"</string>
     <string name="keywords_voice_access" msgid="7807335263195876454"></string>
-    <string name="fast_pair_settings" msgid="3308819519080016185">"দ্রুত পেয়ার করা"</string>
+    <string name="fast_pair_settings" msgid="3308819519080016185">"দ্রুত যুক্ত করা"</string>
     <string name="fast_pair_settings_summary" msgid="1786567691058982987">"দ্রুত পেয়ার করে এমন ব্লুটুথ ডিভাইস কাছাকাছি শনাক্ত করা গেছে।"</string>
     <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"আশেপাশের ডিভাইস খুঁজতে স্ক্যান করুন"</string>
     <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"সেভ করে রাখা ডিভাইস"</string>
@@ -3399,8 +3395,15 @@
     <string name="user_adding_new_user" msgid="7439602720177181412">"নতুন ব্যবহারকারী যোগ করা হচ্ছে..."</string>
     <string name="user_delete_user_description" msgid="7764153465503821011">"ব্যবহারকারীকে মুছুন"</string>
     <string name="user_delete_button" msgid="3833498650182594653">"মুছুন"</string>
-    <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"এই সেশনের সব অ্যাপ্লিকেশান ও ডেটা মুছে ফেলা হবে।"</string>
+    <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"এই সেশনের সব অ্যাপ ও ডেটা মুছে ফেলা হবে।"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"সরান"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"অতিথি (আপনি)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"ব্যবহারকারী"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"অন্যান্য ব্যবহারকারী"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"অতিথি অ্যাক্টিভিটি মুছুন"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"\'অতিথি মোড\' ছেড়ে বেরিয়ে আসার সময় সব অতিথি অ্যাপ ও ডেটা মুছুন"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"অতিথি অ্যাক্টিভিটি মুছবেন?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"এই অতিথি সেশন থেকে এখন অ্যাপ এবং ডেটা মুছে দেওয়া হবে ও আপনি প্রত্যেকবার \'অতিথি মোড\' ছেড়ে বেরিয়ে আসার সময় পরবর্তী সব অতিথি অ্যাক্টিভিটি মুছে যাবে"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"ফোন কলের সুবিধা চালু করুন"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ফোন কল এবং এসএমএস চালু করবেন?"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"ব্যবহারকারীর অ্যাকাউন্ট মুছে দিন"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 7aac8b6..2e6b11a 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -103,7 +103,7 @@
     <string name="bluetooth_no_devices_found" msgid="7704539337219953182">"Nema Bluetooth uređaja u blizini."</string>
     <string name="bluetooth_notif_ticker" msgid="209515545257862858">"Zahtjev za uparivanje putem Bluetootha"</string>
     <string name="bluetooth_notif_title" msgid="1196532269131348647">"Zahtjev za uparivanje"</string>
-    <string name="bluetooth_notif_message" msgid="5584717784198086653">"Dodirnite za spajanje s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_notif_message" msgid="5584717784198086653">"Dodirnite da uparite s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_show_received_files" msgid="685424727760622632">"Primljeni fajlovi"</string>
     <string name="bluetooth_devices_card_off_title" msgid="1320149821945129127">"Bluetooth je isključen"</string>
     <string name="bluetooth_devices_card_off_summary" msgid="2276527382891105858">"Dodirnite da ga uključite"</string>
@@ -179,7 +179,7 @@
     <string name="proxy_exclusionlist_label" msgid="2598613986784917542">"Zaobilazni proksi za"</string>
     <string name="proxy_defaultView_text" msgid="6795150505379688451">"Vrati na zadano"</string>
     <string name="proxy_action_text" msgid="1103328484441449542">"Gotovo"</string>
-    <string name="proxy_hostname_label" msgid="5504327742505848063">"Hostname za proksi"</string>
+    <string name="proxy_hostname_label" msgid="5504327742505848063">"Naziv host računara za proksi"</string>
     <string name="proxy_error" msgid="3615905975598084126">"Pažnja"</string>
     <string name="proxy_error_dismiss" msgid="4207430265140873078">"Uredu"</string>
     <string name="proxy_error_invalid_host" msgid="3814412792702059247">"Uneseni naziv host računara nije važeći."</string>
@@ -327,7 +327,7 @@
       <item quantity="other">Uključeno – <xliff:g id="COUNT_1">%1$d</xliff:g> aplikacija ima pristup lokaciji</item>
     </plurals>
     <string name="location_settings_loading_app_permission_stats" msgid="6054103701535557342">"Učitavanje…"</string>
-    <string name="location_settings_footer_general" msgid="1040507068701188821">"Aplikacije s odobrenjem Uređaji u blizini mogu otkriti relativan položaj povezanih uređaja."</string>
+    <string name="location_settings_footer_general" msgid="1040507068701188821">"Aplikacije s odobrenjem Uređaja u blizini mogu otkriti relativan položaj povezanih uređaja."</string>
     <string name="location_settings_footer_location_off" msgid="8568995909147566720">"Pristup lokaciji je isključen za aplikacije i usluge. Lokacija uređaja se i dalje može slati hitnim službama kada pozovete broj za hitne slučajeve ili pošaljete SMS na njega."</string>
     <string name="location_settings_footer_learn_more_content_description" msgid="5329024810729665156">"Saznajte više o postavkama lokacije."</string>
     <string name="account_settings_title" msgid="9138880127246241885">"Računi"</string>
@@ -842,7 +842,7 @@
     <string name="bluetooth_paring_group_msg" msgid="4609515924670823316">"Potvrdite da uparite s koordiniranim kompletom"</string>
     <string name="bluetooth_incoming_pairing_msg" msgid="1068123527866596779">"Od:&lt;br&gt;&lt;b&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/b&gt;&lt;br&gt;&lt;br&gt;Želite izvršiti uparivanje s ovim uređajem?"</string>
     <string name="bluetooth_display_passkey_pin_msg" msgid="8672803845151786521">"Da biste izvršili uparivanje s uređajem:<xliff:g id="BOLD1_0">&lt;br&gt;&lt;b&gt;</xliff:g><xliff:g id="DEVICE_NAME">%1$s</xliff:g><xliff:g id="END_BOLD1">&lt;/b&gt;&lt;br&gt;&lt;br&gt;</xliff:g>Otkucajte na njemu:<xliff:g id="BOLD2_1">&lt;br&gt;&lt;b&gt;</xliff:g><xliff:g id="PASSKEY">%2$s</xliff:g><xliff:g id="END_BOLD2">&lt;/b&gt;</xliff:g>, a zatim pritisnite Return ili Enter."</string>
-    <string name="bluetooth_pairing_shares_phonebook" msgid="4329325125260724843">"Dozvolite pristup kontaktima i historiji poziva"</string>
+    <string name="bluetooth_pairing_shares_phonebook" msgid="4329325125260724843">"Dozvoli pristup kontaktima i historiji poziva"</string>
     <string name="bluetooth_error_title" msgid="2284738188253690278"></string>
     <string name="bluetooth_connecting_error_message" msgid="3941893154784152112">"Nije uspjelo povezivanje sa uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_preference_scan_title" msgid="3460316252463771851">"Potraži uređaje"</string>
@@ -947,7 +947,7 @@
     <string name="android_beam_settings_title" msgid="2797963824490671295">"Android Beam"</string>
     <string name="android_beam_on_summary" msgid="6067720758437490896">"Spremno za prijenos sadržaja aplikacije putem NFC-a"</string>
     <string name="android_beam_off_summary" msgid="5693961375631325042">"Isključeno"</string>
-    <string name="nfc_disabled_summary" msgid="8737797364522502351">"Nedostupno jer je NFC isključen"</string>
+    <string name="nfc_disabled_summary" msgid="8737797364522502351">"Nije dostupno jer je NFC isključen"</string>
     <string name="android_beam_label" msgid="7168565080321110094">"Android Beam"</string>
     <string name="android_beam_explained" msgid="5684416131846701256">"Kada je uključena ova funkcija, možete emitirati sadržaj aplikacije na drugi uređaj koji podržava NFC približavanjem uređaja jedan drugome. Naprimjer, možete emitirati web stranice, videozapise s YouTubea, kontakte i drugo.\n\nSamo približite uređaje jedan drugome (u pravilu, poleđinu uz poleđinu) a zatim dodirnite svoj ekran. Aplikacija će sama prepoznati šta treba emitirati."</string>
     <string name="wifi_quick_toggle_title" msgid="2737097538432862807">"WiFi"</string>
@@ -1012,7 +1012,7 @@
     <string name="wifi_setup_wps" msgid="4303694722593999931">"Autom. postavljanje (WPS)"</string>
     <string name="wifi_settings_scanning_required_title" msgid="1088663325396007484">"Uključiti skeniranje WiFi mreže?"</string>
     <string name="wifi_settings_scanning_required_summary" msgid="4770243653675416569">"Za automatsko uključivanje WiFi mreže, prvo morate uključiti skeniranje WiFi mreže."</string>
-    <string name="wifi_settings_scanning_required_info" msgid="1473411566072565789">"Skeniranje WiFi mreže omogućava aplikacijama i uslugama da traže WiFi mreže u svakom trenutku, čak i kada je WiFi mreža isključena. Ovim se, naprimjer, mogu poboljšati funkcije i usluge zasnovane na lokaciji."</string>
+    <string name="wifi_settings_scanning_required_info" msgid="1473411566072565789">"Skeniranje WiFi mreže omogućava aplikacijama i uslugama da traže WiFi mreže u svakom trenutku, čak i kada je WiFi isključen. Ovim se, naprimjer, mogu poboljšati funkcije i usluge zasnovane na lokaciji."</string>
     <string name="wifi_settings_scanning_required_turn_on" msgid="1112223196123955447">"Uključi"</string>
     <string name="wifi_settings_scanning_required_enabled" msgid="4721729158927146365">"Skeniranje WiFi mreže je uključeno"</string>
     <string name="wifi_show_advanced" msgid="2969378109942071741">"Napredne opcije"</string>
@@ -1022,7 +1022,7 @@
     <string name="wifi_ssid_hint" msgid="1940577553241083524">"Unesite SSID"</string>
     <string name="wifi_security" msgid="9095934643631406913">"Sigurnost"</string>
     <string name="wifi_hidden_network" msgid="6466834025375485596">"Skrivena mreža"</string>
-    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"Ukoliko ruter ne emitira ID mreže, ali biste se u buduće željeli povezati na njega, možete postaviti mrežu kao skrivenu.\n\nNa taj način sigurnost može biti ugrožena jer će telefon redovno emitirati signal da pronađe mrežu.\n\nPostavljenjem mreže kao skrivene neće se promijeniti postavke vašeg rutera."</string>
+    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"Ukoliko ruter ne emitira ID mreže, ali biste se ubuduće željeli povezati na njega, možete postaviti mrežu kao skrivenu.\n\nNa taj način može biti ugrožena sigurnost jer će telefon redovno emitirati signal da pronađe mrežu.\n\nPostavljenjem mreže kao skrivene neće se promijeniti postavke vašeg rutera."</string>
     <string name="wifi_signal" msgid="4442182285304271424">"Jačina signala"</string>
     <string name="wifi_status" msgid="5349199188871002778">"Status"</string>
     <string name="tx_wifi_speed" msgid="2368986629172050673">"Brzina prijenosa veze"</string>
@@ -1449,15 +1449,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Čuvar ekrana"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Koristi čuvara ekrana"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Tokom punjenja ili kada je na priključnoj stanici"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Bilo koje"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Tokom punjenja"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Kada je na priključnoj stanici"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nikada"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Isključeno"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Za kontrolisanje dešavanja kada je telefon priključen i/ili dok miruje, uključi čuvara ekrana."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Kada početi"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Trenutni čuvar ekrana"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Postavke"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatsko osvjetljenje"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Podignite za buđenje"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ambijentalni prikaz"</string>
@@ -1888,7 +1885,7 @@
     <string name="location_high_battery_use" msgid="4277318891200626524">"Visoka potrošnja baterije"</string>
     <string name="location_low_battery_use" msgid="5218950289737996431">"Niska potrošnja baterije"</string>
     <string name="location_scanning_wifi_always_scanning_title" msgid="5004781272733434794">"Skeniranje WiFi-ja"</string>
-    <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Dozvolite aplikacijama i uslugama da skeniraju WiFi mreže u svakom trenutku, čak i kada je WiFi mreža isključena. Ovim se, naprimjer, mogu poboljšati funkcije i usluge zasnovane na lokaciji."</string>
+    <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Dozvolite aplikacijama i uslugama da skeniraju WiFi mreže u svakom trenutku, čak i kada je WiFi isključen. Ovim se, naprimjer, mogu poboljšati funkcije i usluge zasnovane na lokaciji."</string>
     <string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"Skeniranje Bluetootha"</string>
     <string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Dozvolite aplikacijama i uslugama da skeniraju uređaje u blizini u svakom trenutku, čak i kada je Bluetooth isključen. Ovim se, naprimjer, mogu poboljšati funkcije i usluge zasnovane na lokaciji."</string>
     <string name="location_services_preference_title" msgid="604317859531782159">"Usluge lokacije"</string>
@@ -2119,8 +2116,8 @@
     <string name="no_applications" msgid="985069304755391640">"Nema aplikacija."</string>
     <string name="internal_storage" msgid="999496851424448809">"Unutrašnja pohrana"</string>
     <string name="recompute_size" msgid="1098091228370999128">"Ponovno izračunavanje veličine…"</string>
-    <string name="clear_data_dlg_title" msgid="180446967743732410">"Izbrisati podatke aplikacija?"</string>
-    <string name="clear_data_dlg_text" msgid="3440011276559762619">"Podaci ove aplikacije, uključujući fajlove i postavke, trajno će se izbrisati iz ovog uređaja."</string>
+    <string name="clear_data_dlg_title" msgid="180446967743732410">"Izbrisati podatke aplikacije?"</string>
+    <string name="clear_data_dlg_text" msgid="3440011276559762619">"Podaci ove aplikacije, uključujući fajlove i postavke, trajno će se izbrisati s ovog uređaja."</string>
     <string name="dlg_ok" msgid="1421350367857960997">"Uredu"</string>
     <string name="dlg_cancel" msgid="5164705061530774899">"Otkaži"</string>
     <string name="dlg_delete" msgid="1790919205039397659">"Izbriši"</string>
@@ -2457,7 +2454,7 @@
     <string name="accessibility_display_inversion_switch_title" msgid="7458595722552743503">"Koristi inverziju boja"</string>
     <string name="accessibility_display_inversion_shortcut_title" msgid="6889624526691513462">"Prečica za inverziju boja"</string>
     <string name="accessibility_display_inversion_preference_intro_text" msgid="1159663288481145318">"Inverzija boja mijenja svijetle ekrane u tamne, kao i tamne u svijetle."</string>
-    <string name="accessibility_display_inversion_preference_subtitle" msgid="4494767676482389509">"&lt;b&gt;Imajte na umu&lt;/b&gt;&lt;br/&gt; &lt;ol&gt; &lt;li&gt; Boje u medijskim fajlovima i slikama će se promijeniti&lt;/li&gt; &lt;li&gt; Inverzija boja funkcionira u svim aplikacijama&lt;/li&gt; &lt;li&gt; Za prikazivanje tamne pozadine se može koristiti tamna tema&lt;/li&gt; &lt;/ol&gt;"</string>
+    <string name="accessibility_display_inversion_preference_subtitle" msgid="4494767676482389509">"&lt;b&gt;Imajte na umu&lt;/b&gt;&lt;br/&gt; &lt;ol&gt; &lt;li&gt;&amp;nbsp;Boje u medijskim fajlovima i slikama će se promijeniti&lt;/li&gt; &lt;li&gt;&amp;nbsp;Inverzija boja funkcionira u svim aplikacijama&lt;/li&gt; &lt;li&gt;&amp;nbsp;Za prikazivanje tamne pozadine se može koristiti tamna tema&lt;/li&gt; &lt;/ol&gt;"</string>
     <string name="accessibility_autoclick_preference_title" msgid="2703143361605555752">"Automatski klik (vrijeme zadržavanja)"</string>
     <string name="accessibility_autoclick_about_title" msgid="152923024405552594">"Automatski klik (vrijeme zadržavanja)"</string>
     <string name="accessibility_autoclick_footer_learn_more_content_description" msgid="7056189627042350691">"Saznajte više o automatskom kliku (vrijeme zadržavanja)"</string>
@@ -3190,7 +3187,7 @@
     <string name="sync_plug" msgid="7956982719077985381"><font fgcolor="#ffffffff">"Dobro došli u Google sync!"</font>" \nGoogle pristup sinhroniziranju podataka kako bi se omogućio pristup vašim kontaktima, obavezama i drugim stavkama gdje god da se nalazite."</string>
     <string name="header_application_sync_settings" msgid="7427706834875419243">"Postavke sinhroniziranja aplikacija"</string>
     <string name="header_data_and_synchronization" msgid="453920312552838939">"Podaci i sinhroniziranje"</string>
-    <string name="preference_change_password_title" msgid="5465821666939825972">"Promijenite lozinku"</string>
+    <string name="preference_change_password_title" msgid="5465821666939825972">"Promijeni lozinku"</string>
     <string name="header_account_settings" msgid="1189339410278750008">"Postavke računa"</string>
     <string name="remove_account_label" msgid="4169490568375358010">"Ukloni račun"</string>
     <string name="header_add_an_account" msgid="3919151542338822661">"Dodajte račun"</string>
@@ -3444,6 +3441,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Izbriši"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Sve aplikacije i podaci iz ove sesije će se izbrisati."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Ukloniti"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gost (vi)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Korisnici"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Drugi korisnici"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Izbrišite aktivnost gosta"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Izbrisati sve aplikacije i podatke gosta pri napuštanju načina rada za gosta"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Izbrisati aktivnost gosta?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Aplikacije i podaci iz ove sesije gosta će se sada izbrisati i svaka buduća aktivnost gosta će se izbrisati svaki put kada napustite način rada za gosta"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Uključi telefonske pozive"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Uključi telefonske pozive i SMS-ove"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Izbriši korisnika"</string>
@@ -5717,7 +5721,7 @@
     <string name="mobile_data_disable_message" msgid="7829414836454769970">"Nećete imati pristup podacima ili internetu putem mobilnog operatera <xliff:g id="CARRIER">%s</xliff:g>. Internet će biti dostupan samo putem WiFi-ja."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="4449469407705838612">"vaš mobilni operater"</string>
     <string name="not_allowed_by_ent" msgid="1958611623122304411">"Organizacija ne dozvoljava"</string>
-    <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nedostupno jer je uključen način rada za spavanje"</string>
+    <string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"Nije dostupno jer je uključen način rada za spavanje"</string>
     <string name="reset_importance_completed" msgid="3595536767426097205">"Poništavanje važnosti obavještenja je završeno."</string>
     <string name="apps_dashboard_title" msgid="3269953499954393706">"Aplikacije"</string>
     <string name="bluetooth_message_access_notification_content" msgid="5111712860712823893">"Uređaj želi pristupiti vašim porukama. Dodirnite za detalje."</string>
@@ -5739,7 +5743,7 @@
     <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Koristi WiFi pristupnu tačku"</string>
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Koristi kačenje aplikacije"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"Koristi opcije za programere"</string>
-    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Koristite uslugu štampanja"</string>
+    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Koristi uslugu štampanja"</string>
     <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Dozvoli više korisnika"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Koristi bežično otklanjanje grešaka"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Koristi postavke drajvera za grafiku"</string>
@@ -5769,7 +5773,7 @@
     <string name="enable_2g_summary_disabled_carrier" msgid="8141118453219482762">"<xliff:g id="CARRIER_NAME_2G">%1$s</xliff:g> zahtijeva da 2G mreža bude dostupna"</string>
     <string name="app_info_all_services_label" msgid="3600929226735860271">"Sve usluge"</string>
     <string name="show_clip_access_notification" msgid="7782300987639778542">"Prikaži pristup međumemoriji"</string>
-    <string name="show_clip_access_notification_summary" msgid="474090757777203207">"Prikaz poruke kada aplikacije pristupe tekstu, slikama ili drugom sadržaju koji ste kopirali"</string>
+    <string name="show_clip_access_notification_summary" msgid="474090757777203207">"Vidite poruku kada aplikacije pristupe tekstu, slikama ili drugom sadržaju koji ste kopirali"</string>
     <string name="all_apps" msgid="3054120149509114789">"Sve aplikacije"</string>
     <string name="request_manage_bluetooth_permission_dont_allow" msgid="8798061333407581300">"Nemoj dozvoliti"</string>
     <string name="uwb_settings_title" msgid="8578498712312002231">"Ultra široki opseg (Ultra-WideBand, UWB)"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index f57604f..d8845b6 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -225,8 +225,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"Idiomes suggerits"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"Tots els idiomes"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Idioma del sistema"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Valor predeterminat del sistema"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"La selecció d\'idioma per a aquesta aplicació no està disponible des de Configuració."</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -1430,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Estalvi de pantalla"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Utilitza l\'estalvi de pantalla"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Mentre es carrega o està acoblat a la base"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Els dos casos"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Mentre es carrega"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Mentre està acoblat a la base"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Mai"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Desactivat"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Per controlar què passa quan el telèfon està acoblat a una base o en mode de repòs, activa l\'estalvi de pantalla."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Quan comença"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Estalvi de pantalla actual"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Configuració"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Brillantor adaptativa"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Aixeca el dispositiu per activar-lo"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Pantalla ambient"</string>
@@ -2630,7 +2626,7 @@
     <string name="keywords_rtt" msgid="2429130928152514402">"deficiències auditives, pèrdua auditiva, subtítols, teletip, tty"</string>
     <string name="keywords_voice_access" msgid="7807335263195876454"></string>
     <string name="fast_pair_settings" msgid="3308819519080016185">"Vinculació ràpida"</string>
-    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Det. disp. Bluetooth propers amb Vinculació ràpida."</string>
+    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Detecció de dispositius Bluetooth propers amb Vinculació ràpida"</string>
     <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"Cerca dispositius propers"</string>
     <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"Dispositius desats"</string>
     <string name="print_settings" msgid="8519810615863882491">"Impressió"</string>
@@ -3401,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Suprimeix"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Totes les aplicacions i les dades d\'aquesta sessió se suprimiran."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Suprimeix"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Convidat (Tu)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Usuaris"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Altres usuaris"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Suprimeix l\'activitat de convidat"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Suprimeix totes les aplicacions i dades de la sessió de convidat en sortir d\'aquest mode"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Suprimir l\'activitat de convidat?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Les aplicacions i les dades d\'aquesta sessió de convidat se suprimiran ara, i tota l\'activitat de convidat que facis en el futur se suprimirà cada vegada que surtis del mode de convidat"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Activa les trucades telefòniques"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Activa les trucades telefòniques i els SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Suprimeix l\'usuari"</string>
@@ -5651,7 +5654,7 @@
     <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Utilitza el punt d\'accés Wi‑Fi"</string>
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Utilitza la fixació d\'aplicacions"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"Utilitza les opcions per a desenvolupadors"</string>
-    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Utilitza el servei d\'impressions"</string>
+    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Utilitza el servei d\'impressió"</string>
     <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Permet diversos usuaris"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Utilitza la depuració sense fil"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Utilitza les preferències del controlador de gràfics"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 5ada383..43a3abd 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -884,7 +884,7 @@
     <string name="bluetooth_device_context_connect_advanced" msgid="934657460643490773">"Možnosti"</string>
     <string name="bluetooth_menu_advanced" msgid="7633682234855216066">"Rozšířené nastavení"</string>
     <string name="bluetooth_advanced_titlebar" msgid="5369701494951467257">"Rozšířené nastavení Bluetooth"</string>
-    <string name="bluetooth_empty_list_bluetooth_off" msgid="316627049372961941">"Když je připojení Bluetooth zapnuté, zařízení může komunikovat s ostatními zařízeními Bluetooth v okolí."</string>
+    <string name="bluetooth_empty_list_bluetooth_off" msgid="316627049372961941">"Když je připojení Bluetooth zapnuto, vaše zařízení může komunikovat s ostatními zařízeními Bluetooth v okolí."</string>
     <string name="bluetooth_scanning_on_info_message" msgid="6667723887545056976">"Když je zapnuté připojení Bluetooth, zařízení může komunikovat s ostatními zařízeními Bluetooth v okolí.\n\nZa účelem vylepšení funkcí mohou aplikace a služby nadále vyhledávat zařízení v okolí, i když je Bluetooth vypnuté. Lze tak například vylepšit funkce a služby založené na poloze. Toto chování můžete změnit v "<annotation id="link">"nastavení vyhledávání Bluetooth"</annotation>"."</string>
     <string name="ble_scan_notify_text" msgid="1358879010396045164">"Za účelem zvýšení přesnosti určování polohy mohou systémové aplikace a služby neustále vyhledávat zařízení Bluetooth. Toto chování můžete změnit v <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>nastavení vyhledávání<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
     <string name="bluetooth_connect_failed" msgid="7892663424429584925">"Nelze se připojit. Zkuste to znovu."</string>
@@ -964,7 +964,7 @@
     <string name="android_beam_settings_title" msgid="2797963824490671295">"Android Beam"</string>
     <string name="android_beam_on_summary" msgid="6067720758437490896">"Přenos obsahu aplikace prostřednictvím NFC je připraven"</string>
     <string name="android_beam_off_summary" msgid="5693961375631325042">"Vypnuto"</string>
-    <string name="nfc_disabled_summary" msgid="8737797364522502351">"Není k dispozici, protože je vypnutá funkce NFC"</string>
+    <string name="nfc_disabled_summary" msgid="8737797364522502351">"Není k dispozici, protože funkce NFC je vypnutá"</string>
     <string name="android_beam_label" msgid="7168565080321110094">"Android Beam"</string>
     <string name="android_beam_explained" msgid="5684416131846701256">"Když je funkce zapnutá, můžete přenášet obsah aplikace do jiného zařízení s funkcí NFC tak, že obě zařízení podržíte blízko sebe. Přenášet můžete například webové stránky, videa na YouTube, kontakty a další.\n\nPřiložte zařízení k sobě (zpravidla zadní stranou) a klepněte na obrazovku. Aplikace určí, jaký obsah se bude přenášet."</string>
     <string name="wifi_quick_toggle_title" msgid="2737097538432862807">"Wi-Fi"</string>
@@ -1469,15 +1469,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Spořič obrazovky"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Používat spořič obrazovky"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Při nabíjení nebo v doku"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"V obou případech"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Při nabíjení"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Při vložení do doku"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nikdy"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Vyp."</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Chcete-li nastavit, co se stane, když je telefon vložen do doku nebo je v režimu spánku, zapněte spořič obrazovky."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Kdy spustit"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Aktuální spořič obrazovky"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Nastavení"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatický jas"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Probudit zvednutím zařízení"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ambientní displej"</string>
@@ -3488,6 +3485,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Smazat"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Veškeré aplikace a data v této relaci budou vymazána."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Odstranit"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Host (vy)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Uživatelé"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Další uživatelé"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Smazat aktivitu hosta"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Při ukončení režimu hosta smazat všechny aplikace a data hosta"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Smazat aktivitu hosta?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Aplikace a data z této relace hosta budou nyní smazány a veškerá budoucí aktivita hostů bude smazána pokaždé, když opustíte režim hosta"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Zapnout telefonní hovory"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Zapnout telefonní hovory a SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Smazání uživatele"</string>
@@ -3506,7 +3510,7 @@
     <string name="user_copy_apps_menu_title" msgid="5354300105759670300">"Nainstalovat dostupné aplikace"</string>
     <string name="nfc_payment_settings_title" msgid="2043139180030485500">"Bezkontaktní platby"</string>
     <string name="nfc_default_payment_settings_title" msgid="2150504446774382261">"Výchozí platební aplikace"</string>
-    <string name="nfc_default_payment_footer" msgid="978535088340021360">"Chcete-li zaplatit pomocí platební aplikace, přiložte zadní stranu zařízení k platebnímu terminálu"</string>
+    <string name="nfc_default_payment_footer" msgid="978535088340021360">"Pokud chcete zaplatit pomocí platební aplikace, přiložte zadní stranu zařízení k platebnímu terminálu."</string>
     <string name="nfc_more_details" msgid="1700713533074275233">"Další informace"</string>
     <string name="nfc_default_payment_workapp_confirmation_title" msgid="746921251872504687">"Nastavit pracovní aplikaci jako výchozí platební aplikaci?"</string>
     <string name="nfc_default_payment_workapp_confirmation_message_title" msgid="1533022606333010329">"Chcete-li zaplatit pomocí pracovní aplikace:"</string>
@@ -3517,8 +3521,8 @@
     <string name="nfc_payment_default" msgid="3769788268378614608">"Výchozí platební aplikace"</string>
     <string name="nfc_payment_default_not_set" msgid="6471905683119084622">"Nenastaveno"</string>
     <string name="nfc_payment_app_and_desc" msgid="2607417639227030398">"<xliff:g id="APP">%1$s</xliff:g> – <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
-    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Použít výchozí platební aplikaci"</string>
-    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Použít výchozí platební aplikaci"</string>
+    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Používat výchozí platební aplikaci"</string>
+    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Používat výchozí platební aplikaci"</string>
     <string name="nfc_payment_favor_default" msgid="4508491832174644772">"Vždy"</string>
     <string name="nfc_payment_favor_open" msgid="8554643344050373346">"Jen pokud není spuštěna jiná platební aplikace"</string>
     <string name="nfc_payment_pay_with" msgid="3001320460566523453">"Na bezkontaktním terminálu zaplaťte pomocí aplikace:"</string>
@@ -3661,7 +3665,7 @@
     <string name="connected_devices_dashboard_android_auto_no_nfc_summary" msgid="2532811870469405527">"Bluetooth, Android Auto, režim jízdy autem"</string>
     <string name="connected_devices_dashboard_android_auto_no_driving_mode_summary" msgid="6426996842202276640">"Bluetooth, Android Auto, NFC"</string>
     <string name="connected_devices_dashboard_android_auto_no_nfc_no_driving_mode" msgid="1672426693308438634">"Bluetooth, Android Auto"</string>
-    <string name="nfc_and_payment_settings_payment_off_nfc_off_summary" msgid="7132040463607801625">"Nedostupné, protože je vypnutá funkce NFC"</string>
+    <string name="nfc_and_payment_settings_payment_off_nfc_off_summary" msgid="7132040463607801625">"Nejsou dostupné, protože funkce NFC je vypnutá"</string>
     <string name="nfc_and_payment_settings_no_payment_installed_summary" msgid="4879818114908207465">"Před použitím nejprve nainstalujte platební aplikaci"</string>
     <string name="app_and_notification_dashboard_title" msgid="2861781687031832943">"Aplikace a oznámení"</string>
     <string name="app_and_notification_dashboard_summary" msgid="8047683010984186106">"Nedávné aplikace, výchozí aplikace"</string>
@@ -4010,7 +4014,7 @@
     <string name="lock_screen_notifs_redact_work" msgid="3833920196569208430">"Citlivá oznámení v pracovním profilu"</string>
     <string name="lock_screen_notifs_redact_work_summary" msgid="3238238380405430156">"Při uzamknutí zobrazovat citlivý obsah pracovního profilu"</string>
     <string name="lock_screen_notifications_summary_show" msgid="6540443483088311328">"Zobrazovat veškerý obsah oznámení"</string>
-    <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Citlivý obsah zobrazovat jen po odemknutí"</string>
+    <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Zobrazovat citlivý obsah jen po odemknutí"</string>
     <string name="lock_screen_notifications_summary_disable" msgid="3388290397947365744">"Oznámení vůbec nezobrazovat"</string>
     <string name="lock_screen_notifications_interstitial_message" msgid="4688399629301178487">"Jak chcete zobrazovat obrazovku uzamčení?"</string>
     <string name="lock_screen_notifications_interstitial_title" msgid="1360388192096354315">"Obrazovka uzamčení"</string>
@@ -4647,7 +4651,7 @@
     <string name="usb_use_file_transfers" msgid="483915710802018503">"Přenos souborů"</string>
     <string name="usb_use_file_transfers_desc" msgid="1020257823387107336">"Přenos souborů do jiného zařízení"</string>
     <string name="usb_use_photo_transfers" msgid="4641181628966036093">"PTP"</string>
-    <string name="usb_transcode_files" msgid="2441954752105119109">"Převádění videí do formátu AVC"</string>
+    <string name="usb_transcode_files" msgid="2441954752105119109">"Převádět videa do formátu AVC"</string>
     <string name="usb_transcode_files_summary" msgid="307102635711961513">"Videa bude možné přehrát ve více přehrávačích médií, ale může se zhoršit kvalita"</string>
     <string name="usb_use_photo_transfers_desc" msgid="7490250033610745765">"Přenést fotky nebo soubory, pokud MTP není podporováno (PTP)"</string>
     <string name="usb_use_tethering" msgid="2897063414491670531">"Tethering přes USB"</string>
@@ -5823,12 +5827,12 @@
     <string name="category_name_others" msgid="2366006298768550310">"Jiné"</string>
     <string name="category_name_general" msgid="7737273712848115886">"Obecné"</string>
     <string name="dark_theme_main_switch_title" msgid="4045147031947562280">"Používat tmavý motiv"</string>
-    <string name="bluetooth_main_switch_title" msgid="8409835540311309632">"Použít Bluetooth"</string>
+    <string name="bluetooth_main_switch_title" msgid="8409835540311309632">"Používat Bluetooth"</string>
     <string name="prevent_ringing_main_switch_title" msgid="4726252811262086643">"Blokovat vyzvánění"</string>
     <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Použít hotspot sítě Wi‑Fi"</string>
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Používat připnutí aplikace"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"Používat nastavení pro vývojáře"</string>
-    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Použít tiskovou službu"</string>
+    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Používat tiskovou službu"</string>
     <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Povolit více uživatelů"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Používat bezdrátové ladění"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Použít nastavení ovladače grafiky"</string>
@@ -5857,8 +5861,8 @@
     <string name="enable_2g_summary" msgid="2794534052372565914">"Připojení 2G je méně bezpečné, ale v některých oblastech může zlepšit kvalitu vašeho připojení. Pro tísňová volání je připojení 2G vždy zapnuté."</string>
     <string name="enable_2g_summary_disabled_carrier" msgid="8141118453219482762">"Operátor <xliff:g id="CARRIER_NAME_2G">%1$s</xliff:g> vyžaduje připojení 2G"</string>
     <string name="app_info_all_services_label" msgid="3600929226735860271">"Všechny služby"</string>
-    <string name="show_clip_access_notification" msgid="7782300987639778542">"Zobrazit použití schránky"</string>
-    <string name="show_clip_access_notification_summary" msgid="474090757777203207">"Zobrazit zprávu, když aplikace použijí text, obrázky nebo jiný obsah, který jste zkopírovali"</string>
+    <string name="show_clip_access_notification" msgid="7782300987639778542">"Zobrazovat použití schránky"</string>
+    <string name="show_clip_access_notification_summary" msgid="474090757777203207">"Zobrazovat zprávu, když aplikace použijí text, obrázky nebo jiný obsah, který jste zkopírovali"</string>
     <string name="all_apps" msgid="3054120149509114789">"Všechny aplikace"</string>
     <string name="request_manage_bluetooth_permission_dont_allow" msgid="8798061333407581300">"Nepovolovat"</string>
     <string name="uwb_settings_title" msgid="8578498712312002231">"Ultra-WideBand (UWB)"</string>
@@ -5868,7 +5872,7 @@
     <string name="mic_toggle_title" msgid="265145278323852547">"Přístup k mikrofonu"</string>
     <string name="location_toggle_title" msgid="5229867700421750868">"Přístup k poloze"</string>
     <string name="perm_toggle_description" msgid="5754629581767319022">"Aplikace a služby"</string>
-    <string name="mic_toggle_description" msgid="484139688645092237">"Aplikace a služby. Pokud je toto nastavení vypnuté a zavoláte na číslo tísňového volání, mohou být nadále sdílena data z mikrofonu."</string>
+    <string name="mic_toggle_description" msgid="484139688645092237">"Týká se aplikací a služeb. Pokud je toto nastavení vypnuté a zavoláte na číslo tísňového volání, data z mikrofonu se mohou stále sdílet."</string>
     <string name="previous_page_content_description" msgid="6438292457923282991">"Předchozí"</string>
     <string name="next_page_content_description" msgid="1641835099813416294">"Další"</string>
     <string name="colors_viewpager_content_description" msgid="2591751086138259565">"Náhled barvy"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 65cd4c5..86c841d 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -930,7 +930,7 @@
     <string name="android_beam_settings_title" msgid="2797963824490671295">"Android Beam"</string>
     <string name="android_beam_on_summary" msgid="6067720758437490896">"Klar til at overføre appindhold via NFC"</string>
     <string name="android_beam_off_summary" msgid="5693961375631325042">"Fra"</string>
-    <string name="nfc_disabled_summary" msgid="8737797364522502351">"Utilgængelig, fordi NFC er slået fra"</string>
+    <string name="nfc_disabled_summary" msgid="8737797364522502351">"Ikke tilgængelig, fordi NFC er slået fra"</string>
     <string name="android_beam_label" msgid="7168565080321110094">"Android Beam"</string>
     <string name="android_beam_explained" msgid="5684416131846701256">"Når denne funktion er slået til, kan du overføre appindhold til en anden NFC-kompatibel enhed ved at placere enhederne tæt på hinanden. Du kan f.eks. overføre websider, YouTube-videoer, kontakter og meget mere.\n\nDu skal blot placere enhederne tæt på hinanden (normalt bagside mod bagside) og derefter trykke på din skærm. Appen bestemmer, hvad der overføres."</string>
     <string name="wifi_quick_toggle_title" msgid="2737097538432862807">"Wi-Fi"</string>
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Pauseskærm"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Brug pauseskærm"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Når enheden oplades eller tilsluttes en dockingstation"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Begge dele"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Under opladning"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Når enheden er tilsluttet en dockingstation"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Aldrig"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Fra"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Aktivér pauseskærmen for at administrere, hvad der sker, når telefonen er sat i dockingstationen og/eller går i dvale."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Starttidspunkt"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Aktuel pauseskærm"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Indstillinger"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatisk lysstyrke"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Løft enheden for at vække den"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Aktiv låseskærm"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Slet"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Alle apps og data i denne session slettes."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Fjern"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gæst (dig)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Brugere"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Andre brugere"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Slet gæsteaktivitet"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Slet alle gæsteapps og -data ved afslutning af gæstetilstand"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Vil du slette gæsteaktiviteten?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Apps og data fra denne gæstesession slettes nu, og al fremtidig gæsteaktivitet slettes, hver gang du afslutter gæstetilstand"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Aktivér telefonopkald"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Aktivér telefonopkald og sms"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Slet bruger"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 4a26824..1c9712a 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -225,8 +225,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"Vorgeschlagene Sprachen"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"Alle Sprachen"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Systemsprache"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Standardeinstellung des Systems"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Für diese App ist in den Einstellungen keine Sprachauswahl verfügbar."</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -1433,15 +1432,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Bildschirmschoner"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Bildschirmschoner verwenden"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Beim Aufladen oder wenn in Dockingstation"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"In beiden Fällen"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Beim Aufladen"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Wenn in Dockingstation"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nie"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Aus"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Um festzulegen, was geschieht, wenn dein Smartphone angedockt oder im Ruhemodus ist, aktiviere den Bildschirmschoner."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Zeitpunkt der Aktivierung"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Aktueller Bildschirmschoner"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Einstellungen"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatische Helligkeit"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Zum Aktivieren anheben"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Inaktivitätsdisplay"</string>
@@ -3404,6 +3400,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Löschen"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Alle Apps und Daten in dieser Sitzung werden gelöscht."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Entfernen"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gast (ich)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Nutzer"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Andere Nutzer"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Gastaktivität löschen"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Alle Gast-Apps und -daten beim Beenden des Gastmodus löschen"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Gastaktivität löschen?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Apps und Daten dieser Gastsitzung werden jetzt gelöscht, und alle künftigen Gastaktivitäten werden jeweils beim Beenden des Gastmodus gelöscht"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Telefonieren zulassen"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Telefonieren &amp; SMS zulassen"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Nutzer löschen"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index eb44d38..e05443d 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -225,10 +225,9 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"Προτεινόμενες γλώσσες"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"Όλες οι γλώσσες"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Γλώσσα συστήματος"</string>
-    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Προεπιλεγμένο από το σύστημα"</string>
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Προεπιλογή συστήματος"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Η δυνατότητα επιλογής γλώσσας για αυτήν την εφαρμογή δεν είναι διαθέσιμη από τις Ρυθμίσεις."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Η γλώσσα μπορεί να διαφέρει από τις γλώσσες που είναι διαθέσιμες στην εφαρμογή. Ορισμένες εφαρμογές μπορεί να μην υποστηρίζουν αυτήν τη ρύθμιση."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">Να αφαιρεθούν οι επιλεγμένες γλώσσες;</item>
       <item quantity="one">Να αφαιρεθεί η επιλεγμένη γλώσσα;</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Προφύλαξη οθόνης"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Χρήση προφύλαξης οθόνης"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Στη φόρτιση ή στη βάση"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Είτε"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Στη φόρτιση"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Στη βάση"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Ποτέ"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Απενεργοποίηση"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Ενεργοποιήστε την προφύλαξη οθόνης για να ελέγξετε τι συμβαίνει όταν το τηλέφωνό σας είναι συνδεδεμένο στη βάση σύνδεσης ή/και βρίσκεται σε κατάσταση αδράνειας."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Πότε να ξεκινάει"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Τρέχουσα προφύλαξη οθόνης"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Ρυθμίσεις"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Αυτόματη φωτεινότητα"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Σηκώστε για ενεργοποίηση"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Οθόνη περιβάλλοντος"</string>
@@ -3048,7 +3044,7 @@
     <string name="certificate_warning_dont_install" msgid="3794366420884560605">"Να μην γίνει εγκατάσταση"</string>
     <string name="certificate_warning_install_anyway" msgid="4633118283407228740">"Εγκατάσταση ούτως ή άλλως"</string>
     <string name="cert_not_installed" msgid="6725137773549974522">"Δεν εγκαταστάθηκε πιστοποιητικό"</string>
-    <string name="request_manage_credentials_title" msgid="596805634568013413">"Να επιτρέπεται στην εφαρμογή "<b>"<xliff:g id="APP_NAME">^1</xliff:g>"</b>" η εγκατάσταση πιστοποιητικών σε αυτήν τη συσκευή;"</string>
+    <string name="request_manage_credentials_title" msgid="596805634568013413">"Να επιτρέπεται στο "<b>"<xliff:g id="APP_NAME">^1</xliff:g>"</b>" η εγκατάσταση πιστοποιητικών σε αυτήν τη συσκευή;"</string>
     <string name="request_manage_credentials_description" msgid="8044839857171509619">"Αυτά τα πιστοποιητικά θα σας επαληθεύουν κοινοποιώντας το μοναδικό αναγνωριστικό της συσκευής σας στις παρακάτω εφαρμογές και URL."</string>
     <string name="request_manage_credentials_dont_allow" msgid="3630610197644877809">"Να μην επιτρέπεται"</string>
     <string name="request_manage_credentials_allow" msgid="4910940118408348245">"Να επιτρέπεται"</string>
@@ -3366,7 +3362,7 @@
       <item quantity="other">Έλεγχος πιστοποιητικών</item>
       <item quantity="one">Έλεγχος πιστοποιητικού</item>
     </plurals>
-    <string name="user_settings_title" msgid="6550866465409807877">"Πολλοί χρήστες"</string>
+    <string name="user_settings_title" msgid="6550866465409807877">"Πολλαπλοί χρήστες"</string>
     <string name="user_settings_footer_text" product="device" msgid="7523914344521302179">"Μοιραστείτε τη συσκευή σας προσθέτοντας νέους χρήστες. Κάθε χρήστης έχει έναν προσωπικό χώρο στη συσκευή σας για προσαρμοσμένες αρχικές οθόνες, λογαριασμούς, εφαρμογές, ρυθμίσεις και άλλα."</string>
     <string name="user_settings_footer_text" product="tablet" msgid="3730074318510244552">"Μοιραστείτε το tablet σας προσθέτοντας νέους χρήστες. Κάθε χρήστης έχει έναν προσωπικό χώρο στο tablet σας για προσαρμοσμένες αρχικές οθόνες, λογαριασμούς, εφαρμογές, ρυθμίσεις και άλλα."</string>
     <string name="user_settings_footer_text" product="default" msgid="4420915712050349125">"Μοιραστείτε το τηλέφωνό σας προσθέτοντας νέους χρήστες. Κάθε χρήστης έχει έναν προσωπικό χώρο στο τηλέφωνό σας για προσαρμοσμένες αρχικές οθόνες, λογαριασμούς, εφαρμογές, ρυθμίσεις και άλλα."</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Διαγραφή"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Όλες οι εφαρμογές και τα δεδομένα αυτής της περιόδου σύνδεσης θα διαγραφούν."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Κατάργηση"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Επισκέπτης (Εσείς)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Χρήστες"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Άλλοι χρήστες"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Διαγραφή δραστηριότητας επισκέπτη"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Διαγραφή όλων των εφαρμογών και των δεδομένων επισκέπτη κατά την έξοδο από τη λειτουργία επισκέπτη"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Διαγραφή δραστηριότητας επισκέπτη;"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Οι εφαρμογές και τα δεδομένα από αυτήν την περίοδο σύνδεσης επισκέπτη θα διαγραφούν τώρα και όλη η μελλοντική δραστηριότητα επισκέπτη θα διαγράφεται κάθε φορά που εξέρχεστε από τη λειτουργία επισκέπτη"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Ενεργοποίηση τηλεφωνικών κλήσεων"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Ενεργοποίηση κλήσεων και SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Διαγραφή χρήστη"</string>
@@ -3876,7 +3879,7 @@
     <string name="bubbles_conversation_app_link" msgid="5468779786387915337">"Όλες οι ρυθμίσεις για τα Συννεφάκια"</string>
     <string name="bubbles_conversation_toggle_title" msgid="5225039214083311316">"Εμφάνιση αυτής της συνομιλίας σε συννεφάκι"</string>
     <string name="bubbles_conversation_toggle_summary" msgid="720229032254323578">"Εμφάνιση κινούμενου εικονιδίου πάνω από εφαρμογές"</string>
-    <string name="bubbles_app_toggle_summary" msgid="1574515698567947948">"Να επιτρέπεται στην εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> να εμφανίζει ορισμένες ειδοποιήσεις ως συννεφάκια"</string>
+    <string name="bubbles_app_toggle_summary" msgid="1574515698567947948">"Να επιτρέπεται στο <xliff:g id="APP_NAME">%1$s</xliff:g> να εμφανίζει ορισμένες ειδοποιήσεις ως συννεφάκια"</string>
     <string name="bubbles_feature_disabled_dialog_title" msgid="1794193899792284007">"Θέλετε να ενεργοποιήσετε τα συννεφάκια για τη συσκευή;"</string>
     <string name="bubbles_feature_disabled_dialog_text" msgid="5275666953364031055">"Για να ενεργοποιήσετε τα συννεφάκια για αυτήν την εφαρμογή, θα πρέπει να τα ενεργοποιήσετε για τη συσκευή σας.\n\n Αυτή η ενέργεια επηρεάζει και άλλες εφαρμογές ή συζητήσεις στις οποίες επιτρέπεται να προσθέτουν συννεφάκια."</string>
     <string name="bubbles_feature_disabled_button_approve" msgid="2042628067101419871">"Ενεργοποίηση"</string>
@@ -4580,7 +4583,7 @@
     <string name="ignore_optimizations_off" msgid="9186557038453586295">"Βελτιστοποίηση"</string>
     <string name="ignore_optimizations_on_desc" msgid="1280043916460939932">"Η μπαταρία σας μπορεί να εξαντλείται πιο γρήγορα. Θα επιτρέπεται πλέον η χρήση μπαταρίας στο παρασκήνιο από την εφαρμογή."</string>
     <string name="ignore_optimizations_off_desc" msgid="3324571675983286177">"Συνιστάται για μεγαλύτερη διάρκεια μπαταρίας"</string>
-    <string name="ignore_optimizations_title" msgid="3464172726254542889">"Να επιτρέπεται στην εφαρμογή <xliff:g id="APP">%s</xliff:g> να αγνοεί τις βελτιστοποιήσεις μπαταρίας;"</string>
+    <string name="ignore_optimizations_title" msgid="3464172726254542889">"Να επιτρέπεται στο <xliff:g id="APP">%s</xliff:g> να αγνοεί τις βελτιστοποιήσεις μπαταρίας;"</string>
     <string name="app_list_preference_none" msgid="1635406344616653756">"Κανένα"</string>
     <string name="work_profile_usage_access_warning" msgid="3477719910927319122">"Η απενεργοποίηση της πρόσβασης χρήσης γι\' αυτήν την εφαρμογή δεν αποτρέπει τον διαχειριστή σας από την παρακολούθηση της χρήσης δεδομένων για εφαρμογές του προφίλ εργασίας σας"</string>
     <string name="accessibility_lock_screen_progress" msgid="4597298121698665401">"Χρησιμοποιούνται <xliff:g id="COUNT_0">%1$d</xliff:g> από <xliff:g id="COUNT_1">%2$d</xliff:g> χαρακτήρες"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index ecf27b7..7459293 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -1428,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Screen saver"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Use screen saver"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"While charging or docked"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Either"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"While charging"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"While docked"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Never"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Off"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"To control what happens when the phone is docked and/or sleeping, turn the screen saver on."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"When to start"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Current screen saver"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Settings"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatic brightness"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Lift to wake"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ambient display"</string>
@@ -3399,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Delete"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"All apps and data in this session will be deleted."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Remove"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Guest (you)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Users"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Other users"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Delete guest activity"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Delete all guest apps and data when exiting guest mode"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Delete guest activity?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Apps and data from this guest session will be deleted now, and all future guest activity will be deleted each time that you exit guest mode"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Turn on phone calls"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Turn on phone calls &amp; SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Delete user"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 83060bd..2d5399f 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -1428,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Screen saver"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Use screen saver"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"While charging or docked"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Either"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"While charging"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"While docked"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Never"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Off"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"To control what happens when the phone is docked and/or sleeping, turn the screen saver on."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"When to start"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Current screen saver"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Settings"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatic brightness"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Lift to wake"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ambient display"</string>
@@ -3399,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Delete"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"All apps and data in this session will be deleted."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Remove"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Guest (you)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Users"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Other users"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Delete guest activity"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Delete all guest apps and data when exiting guest mode"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Delete guest activity?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Apps and data from this guest session will be deleted now, and all future guest activity will be deleted each time that you exit guest mode"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Turn on phone calls"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Turn on phone calls &amp; SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Delete user"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 3fb0b50..5c4a77d 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -1428,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Screen saver"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Use screen saver"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"While charging or docked"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Either"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"While charging"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"While docked"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Never"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Off"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"To control what happens when the phone is docked and/or sleeping, turn the screen saver on."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"When to start"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Current screen saver"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Settings"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatic brightness"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Lift to wake"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ambient display"</string>
@@ -3399,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Delete"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"All apps and data in this session will be deleted."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Remove"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Guest (you)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Users"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Other users"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Delete guest activity"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Delete all guest apps and data when exiting guest mode"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Delete guest activity?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Apps and data from this guest session will be deleted now, and all future guest activity will be deleted each time that you exit guest mode"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Turn on phone calls"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Turn on phone calls &amp; SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Delete user"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 3749451..f4776d6 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -1428,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Screen saver"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Use screen saver"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"While charging or docked"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Either"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"While charging"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"While docked"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Never"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Off"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"To control what happens when the phone is docked and/or sleeping, turn the screen saver on."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"When to start"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Current screen saver"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Settings"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatic brightness"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Lift to wake"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ambient display"</string>
@@ -3399,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Delete"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"All apps and data in this session will be deleted."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Remove"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Guest (you)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Users"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Other users"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Delete guest activity"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Delete all guest apps and data when exiting guest mode"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Delete guest activity?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Apps and data from this guest session will be deleted now, and all future guest activity will be deleted each time that you exit guest mode"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Turn on phone calls"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Turn on phone calls &amp; SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Delete user"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index ae708f0..1aa53e4 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -1428,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‎‏‏‎‏‎‎‎‎‏‎‏‎‎‎‏‎‎‏‏‎‏‏‎‎‎‎‏‎‏‎‎‎‎‎‎‎‎‎‏‎‎‎‎‏‎‏‎‏‎‎‏‏‎Screen saver‎‏‎‎‏‎"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‏‏‎‎‎‎‎‎‏‎‎‎‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‎‏‎‏‏‎‎Use screen saver‎‏‎‎‏‎"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‏‎‎‏‎‏‎‎‏‎‏‏‎‏‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‎‏‎‎‎‏‏‎‎‎‏‏‏‏‎‏‎‎‏‏‏‏‎‎‏‏‏‏‎While charging or docked‎‏‎‎‏‎"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎‎‎‏‎‎‎‎‏‏‎‏‎‎‏‎‎‏‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‏‎‎‎‎Either‎‏‎‎‏‎"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‎‏‏‎‎‎‎‏‎‎‏‏‏‎‎‎‎‎‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‏‎‎‎‎While charging‎‏‎‎‏‎"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‎‎‏‏‎‏‏‎‏‏‏‏‎‎‎‎‏‎‏‎While docked‎‏‎‎‏‎"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‏‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‏‎‏‏‎‎‏‎‏‏‎‏‏‎‏‎‎‎‎‎‎‏‎‎‎‏‏‏‏‎‏‏‎‎‏‎‎Never‎‏‎‎‏‎"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‎‏‏‎‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎‏‎‏‏‎Off‎‏‎‎‏‎"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‏‏‏‏‏‎‏‎‏‏‏‎‏‏‏‏‎‏‎‎‏‏‎‎‎‎‎‏‏‏‏‎‎‎‎‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‏‏‎To control what happens when the phone is docked and/or sleeping, turn screen saver on.‎‏‎‎‏‎"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‏‎‎‎‏‏‏‏‎‎‎‏‏‏‎‎‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‎‎‎‎When to start‎‏‎‎‏‎"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‏‏‎‎‏‏‏‏‎‏‎‎‎‎‎‎‎‎‏‎‏‏‎‎‏‎‎‎‏‎‏‎‎‎‏‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‎Current screen saver‎‏‎‎‏‎"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‏‎‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‏‏‏‎‎‏‏‎‎‏‏‏‏‏‎‎Settings‎‏‎‎‏‎"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‏‏‏‏‎‎‎‏‎‏‏‎‎‏‏‏‎‎‏‎‎‏‎‏‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‏‎‎‏‎Automatic brightness‎‏‎‎‏‎"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‎‎‎‏‏‏‎‎‎‎‏‏‎‎‎‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎Lift to wake‎‏‎‎‏‎"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‎‏‎‎‏‏‏‎‏‎‏‏‏‎‎‎‏‎‏‎‎‏‎‏‏‎‎‏‏‎‏‎Ambient display‎‏‎‎‏‎"</string>
@@ -3399,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‏‏‎‏‎‏‎‎‏‎‏‎‏‏‎‏‏‎‎‎‏‎‏‎‏‏‎‎‎‏‎‎‏‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‎‏‎Delete‎‏‎‎‏‎"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‏‎‏‏‎‏‏‎‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‏‎‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎‏‎‏‎‏‎‎All apps and data in this session will be deleted.‎‏‎‎‏‎"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‏‏‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‏‎‏‏‏‎‎‏‎‏‏‏‏‏‏‎‏‎Remove‎‏‎‎‏‎"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‏‎‏‎‎‎‏‏‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‎‏‎‎‎‏‏‏‏‎‎‏‎‏‎‎‎‎‎‎‎‎Guest (You)‎‏‎‎‏‎"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‎‎‎‎‏‎‏‎‎‎‎‏‏‎‏‏‎‎‎‏‎‎‏‎‎‏‏‎‎‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‏‏‎Users‎‏‎‎‏‎"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‎‎‏‎‎‏‎‏‎‏‎‎‎‎‏‏‎‏‎‏‎‎‎‏‎‏‎‎‏‏‎‏‏‎‎‏‏‏‎‏‎‏‎‎‏‎‏‎‏‎‎‎‏‎Other users‎‏‎‎‏‎"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‏‎‎‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‏‏‎‎‏‏‎‎‏‏‎‏‏‏‎‏‎‎Delete guest activity‎‏‎‎‏‎"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‎‎‏‎‎‏‏‎‏‏‏‎‎‎‏‏‏‏‎‎‏‎‎‎‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎Delete all guest apps and data when exiting guest mode‎‏‎‎‏‎"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‏‎‏‎‏‏‏‏‎‎‏‎‎‎‏‏‏‎‎‏‎‏‏‎‏‏‏‎‎‎‎‎‏‏‎‎‏‎‎‎‎‏‏‏‎‎‎‎Delete guest activity?‎‏‎‎‏‎"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‎‏‎‏‎‎‎‏‎‎‎‏‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‏‎‏‎‎‎‎‏‎‎‎‎‏‎‎‏‎‏‏‏‎‏‎‏‏‎Apps and data from this guest session will be deleted now, and all future guest activity will be deleted each time you exit guest mode‎‏‎‎‏‎"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‏‎‏‎‏‏‎‏‎‎‎‎‎‏‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎‎‏‏‏‏‏‎‏‎‏‏‏‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎Turn on phone calls‎‏‎‎‏‎"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‏‎‎‎‎‎‏‎‏‎‏‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‎‎‎‎‏‏‎‎‎‏‏‎‎‎Turn on phone calls &amp; SMS‎‏‎‎‏‎"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‎‏‎‎‎‏‏‎‏‎‎‏‏‏‏‎‏‎‏‏‏‏‎‏‎‏‎‎‎‎‏‏‎‏‎‎‎‏‎‏‏‏‎‎‎‏‎‏‎‏‎Delete user‎‏‎‎‏‎"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 31b995c..5a41d25 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -101,7 +101,7 @@
     <string name="progress_scanning" msgid="2564746192843011826">"Buscando"</string>
     <string name="bluetooth_no_devices_found" msgid="7704539337219953182">"No se encontraron dispositivos Bluetooth cercanos."</string>
     <string name="bluetooth_notif_ticker" msgid="209515545257862858">"Solicitud de vinculación de Bluetooth"</string>
-    <string name="bluetooth_notif_title" msgid="1196532269131348647">"Vinculando solicitud"</string>
+    <string name="bluetooth_notif_title" msgid="1196532269131348647">"Solicitud de vinculación"</string>
     <string name="bluetooth_notif_message" msgid="5584717784198086653">"Presiona para realizar una sincronización con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_show_received_files" msgid="685424727760622632">"Archivos recibidos"</string>
     <string name="bluetooth_devices_card_off_title" msgid="1320149821945129127">"Bluetooth desactivado"</string>
@@ -1431,15 +1431,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Protector de pantalla"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Usar protector de pantalla"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Mientras se carga o está conectado"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"En ambos casos"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Mientras se carga"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Cuando está conectado"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nunca"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Apagado"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Para controlar qué sucede cuando el teléfono está conectado o suspendido, activa el protector de pantalla."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Cuándo comenzar"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Protector de pantalla actual"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Configuración"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Brillo automático"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Levantar el dispositivo para activarlo"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Pantalla Ambiente"</string>
@@ -3402,6 +3399,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Borrar"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Se eliminarán las aplicaciones y los datos de esta sesión."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Eliminar"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Invitado (tú)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Usuarios"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Otros usuarios"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Borrar la actividad de invitado"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Borra todas las apps y los datos de invitado cuando salgas del modo de invitado"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"¿Borrar la actividad de invitado?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Las apps y los datos de esta sesión de invitado se borrarán ahora, y toda la actividad futura de invitado se borrará cada vez que salgas del modo de invitado"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Activar llamadas telefónicas"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Activar llamadas telefónicas y SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Borrar usuario"</string>
@@ -5561,7 +5565,7 @@
     <string name="no_5g_in_dsds_text" product="default" msgid="772747677303920132">"Este teléfono se limitará a 4G cuando se usen 2 tarjetas SIM. "<annotation id="url">"Más información"</annotation></string>
     <string name="no_5g_in_dsds_text" product="tablet" msgid="4757328474425714624">"Esta tablet se limitará a 4G cuando se usen 2 tarjetas SIM. "<annotation id="url">"Más información"</annotation></string>
     <string name="no_5g_in_dsds_text" product="device" msgid="6983783505032683314">"Este dispositivo se limitará a 4G cuando se usen 2 tarjetas SIM. "<annotation id="url">"Más información"</annotation></string>
-    <string name="cached_apps_freezer" msgid="1057519579761550350">"Suspende la ejecución de apps almacenadas en caché"</string>
+    <string name="cached_apps_freezer" msgid="1057519579761550350">"Suspender la ejecución de apps almacenadas en caché"</string>
     <string name="blob_never_expires_text" msgid="7293376386620106623">"Nunca vence."</string>
     <string name="accessor_never_expires_text" msgid="4647624492147788340">"La asignación de tiempo nunca vence."</string>
     <string name="overlay_settings_title" msgid="1032863083496396365">"Permitir pantallas superpuestas en Configuración"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 2485440..fea4ad8 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -258,9 +258,9 @@
     <string name="settings_label" msgid="943294133671632976">"Ajustes"</string>
     <string name="settings_label_launcher" msgid="820982375501978609">"Ajustes"</string>
     <string name="settings_shortcut" msgid="8548239727871847171">"Acceso a Ajustes"</string>
-    <string name="airplane_mode" msgid="3196085857882526817">"Modo avión"</string>
+    <string name="airplane_mode" msgid="3196085857882526817">"Modo Avión"</string>
     <string name="wireless_networks_settings_title" msgid="8557542379234105369">"Conexiones inalámbricas y redes"</string>
-    <string name="radio_controls_summary" msgid="9028430178697624501">"Administrar Wi‑Fi, Bluetooth, modo avión, redes móviles y redes VPN"</string>
+    <string name="radio_controls_summary" msgid="9028430178697624501">"Gestionar Wi‑Fi, Bluetooth, modo Avión, redes móviles y redes VPN"</string>
     <string name="cellular_data_summary" msgid="6551434804367912367">"Permitir el uso de datos en redes móviles"</string>
     <string name="allow_data_usage_title" msgid="2645963379925196671">"Permitir uso datos roaming"</string>
     <string name="roaming" msgid="3055365654530847985">"Roaming"</string>
@@ -945,7 +945,7 @@
     <string name="wifi_stopping" msgid="4471699665741299711">"Desactivando Wi‑Fi…"</string>
     <string name="wifi_error" msgid="4903954145386086899">"Error"</string>
     <string name="wifi_sap_no_channel_error" msgid="2126487622024749402">"Banda de 5 GHz no disponible en este país"</string>
-    <string name="wifi_in_airplane_mode" msgid="1235412508135267981">"Modo avión"</string>
+    <string name="wifi_in_airplane_mode" msgid="1235412508135267981">"Modo Avión"</string>
     <string name="wifi_notify_open_networks" msgid="2610323626246818961">"Notificar si hay redes públicas"</string>
     <string name="wifi_notify_open_networks_summary" msgid="191058832201741013">"Recibe una notificación si hay una red pública de alta calidad disponible"</string>
     <string name="wifi_wakeup" msgid="3834327315861781611">"Activar Wi-Fi automáticamente"</string>
@@ -1252,7 +1252,7 @@
     <string name="all_volume_title" msgid="6196367642878437513">"Volumen"</string>
     <string name="musicfx_title" msgid="5458574743312283473">"Efectos de música"</string>
     <string name="ring_volume_title" msgid="4869034595079914541">"Volumen del tono y de las notificaciones"</string>
-    <string name="vibrate_in_silent_title" msgid="5076579100685867363">"Vibrar en modo silencio"</string>
+    <string name="vibrate_in_silent_title" msgid="5076579100685867363">"Vibrar en modo Silencio"</string>
     <string name="notification_sound_title" msgid="8747567935870133157">"Sonido de notificación predeterminado"</string>
     <string name="incoming_call_volume_title" msgid="8445408274513654261">"Tono"</string>
     <string name="notification_volume_title" msgid="328053763590888609">"Notificación"</string>
@@ -1393,7 +1393,7 @@
     <string name="dark_ui_activation_off_manual" msgid="2395333709291250065">"Desactivar ahora"</string>
     <string name="dark_ui_activation_on_auto" msgid="4824339634784765049">"Activar hasta el amanecer"</string>
     <string name="dark_ui_activation_off_auto" msgid="9136717444658505208">"Desactivar hasta el anochecer"</string>
-    <string name="dark_ui_title" msgid="3373976268671557416">"Modo oscuro"</string>
+    <string name="dark_ui_title" msgid="3373976268671557416">"Modo Oscuro"</string>
     <string name="dark_ui_auto_mode_title" msgid="9027528859262295099">"Programación"</string>
     <string name="dark_ui_auto_mode_never" msgid="3980412582267787662">"Desactivado"</string>
     <string name="dark_ui_auto_mode_auto" msgid="6658909029498623375">"Activar del anochecer al amanecer"</string>
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Salvapantallas"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Usar salvapantallas"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Durante la carga o en una base"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Ambos casos"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Durante la carga"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Con el dispositivo en una base"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nunca"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Desactivado"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Para controlar lo que ocurre cuando el teléfono está en un dock o inactivo, activa el salvapantallas."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Cuándo empezar a mostrarlo"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Salvapantallas actual"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Ajustes"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Brillo automático"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Levantar el dispositivo para activarlo"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Pantalla ambiente"</string>
@@ -2472,8 +2469,8 @@
     <string name="accessibility_color_inversion_qs_tooltip_content" msgid="5046332142185711869">"También puedes añadir la inversión de colores a los ajustes rápidos desde la parte superior de la pantalla"</string>
     <string name="accessibility_reduce_bright_colors_auto_added_qs_tooltip_content" msgid="1906588335786328512">"Se ha añadido la atenuación extra a los ajustes rápidos. Desliza el dedo hacia abajo en cualquier momento para activarla o para desactivarla."</string>
     <string name="accessibility_reduce_bright_colors_qs_tooltip_content" msgid="7522121299176176785">"También puedes añadir la atenuación extra a los ajustes rápidos desde la parte superior de la pantalla"</string>
-    <string name="accessibility_one_handed_mode_auto_added_qs_tooltip_content" msgid="7914554254280416532">"Se ha añadido el Modo una mano a los ajustes rápidos. Desliza el dedo hacia abajo en cualquier momento para activarlo o para desactivarlo."</string>
-    <string name="accessibility_one_handed_mode_qs_tooltip_content" msgid="2754332083184384603">"También puedes añadir el Modo una mano a los ajustes rápidos desde la parte superior de la pantalla"</string>
+    <string name="accessibility_one_handed_mode_auto_added_qs_tooltip_content" msgid="7914554254280416532">"Se ha añadido el modo Una mano a los ajustes rápidos. Desliza el dedo hacia abajo en cualquier momento para activarlo o para desactivarlo."</string>
+    <string name="accessibility_one_handed_mode_qs_tooltip_content" msgid="2754332083184384603">"También puedes añadir el modo Una mano a los ajustes rápidos desde la parte superior de la pantalla"</string>
     <string name="accessibility_quick_settings_tooltip_dismiss" msgid="3269120277643884190">"Cerrar"</string>
     <string name="accessibility_daltonizer_about_intro_text" product="default" msgid="3636710237139542212">"Ajusta cómo se muestran los colores en tu teléfono"</string>
     <string name="accessibility_daltonizer_about_intro_text" product="tablet" msgid="3702653229533336133">"Ajusta cómo se muestran los colores en tu tablet"</string>
@@ -2861,7 +2858,7 @@
     <string name="battery_desc_standby" product="tablet" msgid="5818742458684767043">"Batería utilizada cuando el tablet está inactivo"</string>
     <string name="battery_desc_standby" product="default" msgid="2543075041964578103">"Batería utilizada cuando el teléfono está inactivo"</string>
     <string name="battery_desc_radio" msgid="454677140485133914">"Batería utilizada por la señal móvil"</string>
-    <string name="battery_sugg_radio" msgid="5476234634503535270">"Cambia a modo avión para ahorrar batería en zonas sin cobertura."</string>
+    <string name="battery_sugg_radio" msgid="5476234634503535270">"Cambia a modo Avión para ahorrar batería en zonas sin cobertura."</string>
     <string name="battery_desc_flashlight" msgid="6694895513133361404">"Batería utilizada por la linterna"</string>
     <string name="battery_desc_camera" msgid="6152712271731518018">"Batería utilizada por la cámara"</string>
     <string name="battery_desc_display" msgid="7175017688954602685">"Batería utilizada por la pantalla y por la retroiluminación"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Eliminar"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Se eliminarán todas las aplicaciones y datos de esta sesión."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Quitar"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Invitado (tú)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Usuarios"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Otros usuarios"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Eliminar actividad de invitado"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Elimina todas las aplicaciones y datos de la sesión de invitado al salir del modo Invitados"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"¿Eliminar actividad de invitado?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Se eliminarán las aplicaciones y datos de esta sesión de invitado ahora, y toda la actividad futura de invitado se borrará cada vez que salgas del modo Invitados"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Activar llamadas"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Activar llamadas y SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Eliminar usuario"</string>
@@ -3596,7 +3600,7 @@
     <string name="keywords_wifi_calling" msgid="4319184318421027136">"wifi, wi-fi, llamada, llamadas"</string>
     <string name="keywords_display" msgid="874738809280751745">"pantalla, pantalla táctil"</string>
     <string name="keywords_display_brightness_level" msgid="850742707616318056">"atenuar pantalla, pantalla táctil, batería, nitidez"</string>
-    <string name="keywords_display_night_display" msgid="4711054330804250058">"atenuar pantalla, noche, tono, modo nocturno, brillo, color de la pantalla, color"</string>
+    <string name="keywords_display_night_display" msgid="4711054330804250058">"atenuar pantalla, noche, tono, modo Noche, brillo, color de la pantalla, color"</string>
     <string name="keywords_display_wallpaper" msgid="8478137541939526564">"segundo plano, personalizar, personalizar pantalla"</string>
     <string name="keywords_display_font_size" msgid="3593317215149813183">"tamaño del texto"</string>
     <string name="keywords_display_cast_screen" msgid="2572331770299149370">"proyectar, enviar, proyección de pantalla, pantalla compartida, proyección, compartir pantalla, enviar pantalla"</string>
@@ -3642,7 +3646,7 @@
     <string name="keywords_sim_status" msgid="8784456547742075508">"red, estado de la red móvil, estado del servicio, intensidad de la señal, tipo de red móvil, roaming, iccid, eid"</string>
     <string name="keywords_model_and_hardware" msgid="4723665865709965044">"número de serie, versión de hardware"</string>
     <string name="keywords_android_version" msgid="1629882125290323070">"nivel del parche de seguridad de android, versión de banda base, versión de kernel"</string>
-    <string name="keywords_dark_ui_mode" msgid="6373999418195344014">"tema, claro, oscuro, modo, sensibilidad a la luz, fotofobia, hacer más oscuro, oscurecer, modo oscuro, migraña"</string>
+    <string name="keywords_dark_ui_mode" msgid="6373999418195344014">"tema, claro, oscuro, modo, sensibilidad a la luz, fotofobia, hacer más oscuro, oscurecer, modo Oscuro, migraña"</string>
     <string name="keywords_systemui_theme" msgid="6341194275296707801">"tema oscuro"</string>
     <string name="keywords_device_feedback" msgid="5489930491636300027">"error"</string>
     <string name="keywords_ambient_display_screen" msgid="661492302323274647">"Pantalla ambiente, pantalla de bloqueo"</string>
@@ -4681,7 +4685,7 @@
     <string name="condition_expand_show" msgid="1501084007540953213">"Mostrar"</string>
     <string name="condition_expand_hide" msgid="8347564076209121058">"Ocultar"</string>
     <string name="condition_hotspot_title" msgid="7903918338790641071">"Compartir Internet activo"</string>
-    <string name="condition_airplane_title" msgid="5847967403687381705">"Modo avión activado"</string>
+    <string name="condition_airplane_title" msgid="5847967403687381705">"Modo Avión activado"</string>
     <string name="condition_airplane_summary" msgid="1964500689287879888">"Redes no disponibles"</string>
     <string name="condition_zen_title" msgid="7674761111934567490">"Modo No molestar activado"</string>
     <string name="condition_zen_summary_phone_muted" msgid="6516753722927681820">"Teléfono silenciado"</string>
@@ -4944,14 +4948,14 @@
     <string name="ambient_display_title" product="default" msgid="5885136049497127396">"Doble toque para consultar el teléfono"</string>
     <string name="ambient_display_title" product="tablet" msgid="205744440641466921">"Doble toque para consultar el tablet"</string>
     <string name="ambient_display_title" product="device" msgid="4164103424628824786">"Doble toque para consultar el dispositivo"</string>
-    <string name="one_handed_title" msgid="2584414010282746195">"Modo una mano"</string>
-    <string name="one_handed_mode_enabled" msgid="3396864848786359651">"Usar Modo una mano"</string>
-    <string name="one_handed_mode_shortcut_title" msgid="1847871530184067369">"Acceso directo al Modo una mano"</string>
+    <string name="one_handed_title" msgid="2584414010282746195">"Modo Una mano"</string>
+    <string name="one_handed_mode_enabled" msgid="3396864848786359651">"Usar modo Una mano"</string>
+    <string name="one_handed_mode_shortcut_title" msgid="1847871530184067369">"Acceso directo al modo Una mano"</string>
     <string name="keywords_one_handed" msgid="969440592493034101">"fácil alcance"</string>
     <string name="one_handed_mode_swipe_down_category" msgid="110178629274462484">"Desliza hacia abajo para"</string>
     <string name="one_handed_mode_use_shortcut_category" msgid="1414714099339147711">"Usar el acceso directo para"</string>
     <string name="one_handed_mode_intro_text" msgid="7921988617828924342">"Baja la mitad superior de la pantalla para que sea más fácil de alcanzar con una mano"</string>
-    <string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"Cómo usar el Modo una mano"</b>\n" • Comprueba que la navegación por gestos está seleccionada en los ajustes de navegación del sistema.\n • Desliza el dedo hacia abajo cerca del borde inferior de la pantalla."</string>
+    <string name="one_handed_mode_footer_text" msgid="6336209800330679840">" "<b>"Cómo usar el Modo Una mano"</b>\n" • Comprueba que la navegación por gestos está seleccionada en los ajustes de navegación del sistema.\n • Desliza el dedo hacia abajo cerca del borde inferior de la pantalla."</string>
     <string name="one_handed_action_pull_down_screen_title" msgid="9187194533815438150">"Mover pantalla para tenerla al alcance"</string>
     <string name="one_handed_action_pull_down_screen_summary" msgid="7582432473450036628">"La parte superior de la pantalla se moverá para que la tengas al alcance del pulgar"</string>
     <string name="one_handed_action_show_notification_title" msgid="8789305491485437130">"Mostrar notificaciones"</string>
@@ -5069,7 +5073,7 @@
     <string name="financed_privacy_intro" msgid="5458393846604867947">"Tu entidad de crédito puede cambiar ajustes e instalar software en este dispositivo.\n\nSi olvidas un pago, tu dispositivo se bloqueará.\n\nPide más información a tu entidad de crédito."</string>
     <string name="financed_privacy_restrictions_category" msgid="2472659467919651602">"Si tu dispositivo está financiado, no podrás:"</string>
     <string name="financed_privacy_install_apps" msgid="7381718005710210851">"Instalar aplicaciones de fuentes externas a Play Store"</string>
-    <string name="financed_privacy_safe_mode" msgid="5362149445732602578">"Reiniciar tu dispositivo en modo seguro"</string>
+    <string name="financed_privacy_safe_mode" msgid="5362149445732602578">"Reiniciar tu dispositivo en modo Seguro"</string>
     <string name="financed_privacy_multi_users" msgid="1727194928477613081">"Añadir usuarios a tu dispositivo"</string>
     <string name="financed_privacy_config_date_time" msgid="8567370445374984365">"Cambiar la fecha, la hora y la zona horaria"</string>
     <string name="financed_privacy_developer_options" msgid="7602001474669831672">"Usar opciones para desarrolladores"</string>
@@ -5447,13 +5451,13 @@
     <string name="settings_panel_title" msgid="346363079938069215">"Panel de ajustes"</string>
     <string name="internet_connectivity_panel_title" msgid="2044237561024730108">"Conexión a Internet"</string>
     <string name="volume_connectivity_panel_title" msgid="8772438444782726321">"Volumen"</string>
-    <string name="mobile_data_ap_mode_disabled" msgid="6067959496888990983">"No están disponibles en modo avión"</string>
-    <string name="force_desktop_mode" msgid="1336913605091334238">"Forzar modo de escritorio"</string>
-    <string name="force_desktop_mode_summary" msgid="4587416867846930479">"Fuerza el modo de escritorio experimental en pantallas secundarias"</string>
+    <string name="mobile_data_ap_mode_disabled" msgid="6067959496888990983">"No están disponibles en modo Avión"</string>
+    <string name="force_desktop_mode" msgid="1336913605091334238">"Forzar modo Escritorio"</string>
+    <string name="force_desktop_mode_summary" msgid="4587416867846930479">"Fuerza el modo Escritorio experimental en pantallas secundarias"</string>
     <string name="enable_non_resizable_multi_window" msgid="6832903754625404477">"Habilitar aplicaciones de tamaño no modificable en multiventana"</string>
     <string name="enable_non_resizable_multi_window_summary" msgid="3275763753261901999">"Permite que las aplicaciones de tamaño no modificable se muestren en multiventana"</string>
-    <string name="hwui_force_dark_title" msgid="4256904905631994219">"Forzar modo oscuro"</string>
-    <string name="hwui_force_dark_summary" msgid="6515748781487952769">"Fuerza el modo oscuro para que esté siempre activo"</string>
+    <string name="hwui_force_dark_title" msgid="4256904905631994219">"Forzar modo Oscuro"</string>
+    <string name="hwui_force_dark_summary" msgid="6515748781487952769">"Fuerza el modo Oscuro para que esté siempre activo"</string>
     <string name="privacy_dashboard_title" msgid="6845403825611829558">"Privacidad"</string>
     <string name="privacy_dashboard_summary" msgid="5775090172422786808">"Permisos, actividad de la cuenta, datos personales"</string>
     <string name="privacy_controls_title" msgid="1383047169455206604">"Controles"</string>
@@ -5579,7 +5583,7 @@
     <string name="bluetooth_setting_off" msgid="4965493913199554789">"Desactivado"</string>
     <string name="provider_internet_settings" msgid="3831259474776313323">"Internet"</string>
     <string name="provider_network_settings_title" msgid="2624756136016346774">"SIMs"</string>
-    <string name="keywords_airplane_safe_networks" msgid="5902708537892978245">"modo avión, seguro para modo avión"</string>
+    <string name="keywords_airplane_safe_networks" msgid="5902708537892978245">"modo Avión, seguro para modo Avión"</string>
     <string name="calls_and_sms" msgid="1931855083959003306">"Llamadas y SMS"</string>
     <string name="calls_and_sms_category" msgid="3788238090898237767">"Llamadas por Wi-Fi"</string>
     <string name="calls_sms_wfc_summary" msgid="3940529919408667336">"Llamar y recibir llamadas por Wi‐Fi"</string>
@@ -5685,7 +5689,7 @@
     <string name="request_manage_bluetooth_permission_dont_allow" msgid="8798061333407581300">"No permitir"</string>
     <string name="uwb_settings_title" msgid="8578498712312002231">"Banda ultraancha"</string>
     <string name="uwb_settings_summary" msgid="3074271396764672268">"Ayuda a determinar la posición relativa de los dispositivos cercanos que usan la banda ultraancha"</string>
-    <string name="uwb_settings_summary_airplane_mode" msgid="1328864888135086484">"Desactiva el modo avión para usar la banda ultraancha"</string>
+    <string name="uwb_settings_summary_airplane_mode" msgid="1328864888135086484">"Desactiva el modo Avión para usar la banda ultraancha"</string>
     <string name="camera_toggle_title" msgid="8952668677727244992">"Acceso a la cámara"</string>
     <string name="mic_toggle_title" msgid="265145278323852547">"Acceso al micrófono"</string>
     <string name="location_toggle_title" msgid="5229867700421750868">"Acceso a la ubicación"</string>
@@ -5754,7 +5758,7 @@
     <string name="dream_setup_description" msgid="7508547154038580296">"Elige lo que quieres ver en tu pantalla cuando tu tablet no está conectado. Es posible que el dispositivo gaste más energía cuando use el salvapantallas."</string>
     <string name="customize_button_title" msgid="1110284655990203359">"Personalizar"</string>
     <string name="reboot_dialog_enable_freeform_support" msgid="6412591361284929149">"Debes reiniciar para habilitar el formato libre."</string>
-    <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Debes reiniciar para forzar el modo de escritorio en pantallas secundarias."</string>
+    <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Debes reiniciar para forzar el modo Escritorio en pantallas secundarias."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reiniciar ahora"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reiniciar más tarde"</string>
     <string name="bluetooth_details_spatial_audio_title" msgid="1368071116994002707">"Audio espacial"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index b13f96d..e5052ec 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -1431,15 +1431,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Ekraanisäästja"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Ekraanisäästja kasutamine"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Laadimise ajal või dokis"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Kui on dokitud või laeb"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Laadimise ajal"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Kui on dokitud"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Mitte kunagi"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Välja"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Kui soovite juhtida, mis juhtub telefoni dokkimisel ja/või puhkerežiimi lülitamisel, siis lülitage ekraanisäästja sisse."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Alustamise aeg"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Praegune ekraanisäästja"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Seaded"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automaatne eredus"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Tõstke äratamiseks"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Säästlik ekraan"</string>
@@ -1760,7 +1757,7 @@
     <string name="reset_network_complete_toast" msgid="1367872474130621115">"Võrguseaded lähtestati"</string>
     <string name="reset_esim_error_title" msgid="4670073610967959597">"SIM-kaarte ei saa kustutada"</string>
     <string name="reset_esim_error_msg" msgid="4441504470684307370">"Allalaaditud SIM-kaarte ei saa vea tõttu kustutada.\n\nTaaskäivitage seade ja proovige uuesti."</string>
-    <string name="main_clear_title" msgid="277664302144837723">"Kõikide andmete kustutamine (tehaseseadetele lähtestamine)"</string>
+    <string name="main_clear_title" msgid="277664302144837723">"Kõigi andmete kustutamine (tehaseseaded)"</string>
     <string name="main_clear_short_title" msgid="4752094765533020696">"Kõigi andmete kustutamine (tehaseseaded)"</string>
     <string name="main_clear_desc" product="tablet" msgid="1651178880680056849">"See kustutab teie tahvelarvuti "<b>"sisemälust"</b>" kõik andmed, sh järgmised.\n\n"<li>"Teie Google\'i konto"</li>\n<li>"Süsteemi- ja rakenduste andmed ning seaded"</li>\n<li>"Allalaaditud rakendused"</li></string>
     <string name="main_clear_desc" product="default" msgid="6984348811887162647">"See kustutab teie telefoni "<b>"sisemälust"</b>" kõik andmed, sh järgmised.\n\n"<li>"Teie Google\'i konto"</li>\n<li>"Süsteemi- ja rakenduste andmed ning seaded"</li>\n<li>"Allalaaditud rakendused"</li></string>
@@ -2098,7 +2095,7 @@
     <string name="internal_storage" msgid="999496851424448809">"Sisemälu"</string>
     <string name="recompute_size" msgid="1098091228370999128">"Suuruse ümberarvutamine ..."</string>
     <string name="clear_data_dlg_title" msgid="180446967743732410">"Kas kustutada rakenduse andmed?"</string>
-    <string name="clear_data_dlg_text" msgid="3440011276559762619">"Selle rakenduse andmed, sh failid ja seaded, kustutatakse sellest seadmest jäädavalt"</string>
+    <string name="clear_data_dlg_text" msgid="3440011276559762619">"Selle rakenduse andmed, sh failid ja seaded, kustutatakse sellest seadmest jäädavalt."</string>
     <string name="dlg_ok" msgid="1421350367857960997">"OK"</string>
     <string name="dlg_cancel" msgid="5164705061530774899">"Tühista"</string>
     <string name="dlg_delete" msgid="1790919205039397659">"Kustuta"</string>
@@ -3402,6 +3399,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Kustuta"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Seansi kõik rakendused ja andmed kustutatakse."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Eemalda"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Külaline (teie)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Kasutajad"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Teised kasutajad"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Kustuta külalise tegevus"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Kustuta külalisrežiimist väljumisel kõik külalise rakendused ja andmed"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Kas kustutada külalise tegevus?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Selle külastajaseansi rakendused ja andmed kustutatakse kohe ja kõik tulevased külastajate tegevused kustutatakse külalisrežiimist väljumisel."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Lülita telefonikõned sisse"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Lülita telefonikõned ja SMS-id sisse"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Kustuta kasutaja"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 85efc3e..b5bc407 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -101,7 +101,7 @@
     <string name="progress_scanning" msgid="2564746192843011826">"Bilatzen"</string>
     <string name="bluetooth_no_devices_found" msgid="7704539337219953182">"Bluetooth bidezko gailurik ez inguruan."</string>
     <string name="bluetooth_notif_ticker" msgid="209515545257862858">"Bluetooth bidez parekatzeko eskaera"</string>
-    <string name="bluetooth_notif_title" msgid="1196532269131348647">"Bikotetzeko eskaera"</string>
+    <string name="bluetooth_notif_title" msgid="1196532269131348647">"Parekatzeko eskaera"</string>
     <string name="bluetooth_notif_message" msgid="5584717784198086653">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin parekatzeko, sakatu hau."</string>
     <string name="bluetooth_show_received_files" msgid="685424727760622632">"Jasotako fitxategiak"</string>
     <string name="bluetooth_devices_card_off_title" msgid="1320149821945129127">"Bluetooth-a desaktibatuta dago"</string>
@@ -326,7 +326,7 @@
     </plurals>
     <string name="location_settings_loading_app_permission_stats" msgid="6054103701535557342">"Kargatzen…"</string>
     <string name="location_settings_footer_general" msgid="1040507068701188821">"Aplikazioek inguruko gailuak atzitzeko baimena badute, konektatutako gailuen posizio erlatiboa zehatz dezakete."</string>
-    <string name="location_settings_footer_location_off" msgid="8568995909147566720">"Aplikazioek eta zerbitzuek ez dute kokapena atzitzeko baimenik. Hala ere, larrialdietarako zenbaki batera deitzen edo mezua bidaltzen baduzu, baliteke larrialdi-zerbitzuei gailuaren kokapena bidaltzea."</string>
+    <string name="location_settings_footer_location_off" msgid="8568995909147566720">"Aplikazioek eta zerbitzuek ez dute kokapena atzitzeko baimenik. Hala ere, larrialdietarako zenbaki batera deitzen edo mezu bat bidaltzen baduzu, baliteke larrialdi-zerbitzuei gailuaren kokapena bidaltzea."</string>
     <string name="location_settings_footer_learn_more_content_description" msgid="5329024810729665156">"Lortu informazio gehiago kokapen-ezarpenei buruz."</string>
     <string name="account_settings_title" msgid="9138880127246241885">"Kontuak"</string>
     <string name="security_settings_title" msgid="6710768415432791970">"Segurtasuna"</string>
@@ -921,13 +921,13 @@
     <string name="art_verifier_for_debuggable_summary" msgid="4802875841862652879">"Eman araz daitezkeen aplikazioen byte-kodea egiaztatzeko baimena ART egiaztatzaileari"</string>
     <string name="show_refresh_rate" msgid="5742688821872354973">"Erakutsi freskatze-abiadura"</string>
     <string name="show_refresh_rate_summary" msgid="3558118122374609663">"Erakutsi pantailaren freskatze-abiadura"</string>
-    <string name="nfc_quick_toggle_title" msgid="3607620705230351666">"NFC"</string>
+    <string name="nfc_quick_toggle_title" msgid="3607620705230351666">"NFCa"</string>
     <string name="nfc_quick_toggle_summary" product="tablet" msgid="3622326550467939809">"Eman datuak trukatzeko baimena tabletak NFC darabilen beste gailu bat ukitzean"</string>
     <string name="nfc_quick_toggle_summary" product="default" msgid="1460871052409162980">"Eman datuak trukatzeko baimena telefonoak NFC darabilen beste gailu bat ukitzean"</string>
     <string name="nfc_disclaimer_title" msgid="3696580694485048039">"Aktibatu NFC"</string>
     <string name="nfc_disclaimer_content" msgid="8256675597551036207">"NFC eginbideak datuak trukatzen ditu gailu honen eta inguruko beste gailu edo helburu batzuen artean (adibidez, ordainketa-terminalak, sarbide-irakurgailuak, eta iragarki edo etiketa interaktiboak)."</string>
-    <string name="nfc_secure_settings_title" msgid="4906958426927741485">"Behartu gailua desblokeatzera NFC erabiltzeko"</string>
-    <string name="nfc_secure_toggle_summary" product="default" msgid="407654335737959071">"Eman NFC erabiltzeko baimena pantaila desblokeatuta dagoenean soilik"</string>
+    <string name="nfc_secure_settings_title" msgid="4906958426927741485">"Behartu gailua desblokeatzera NFCa erabiltzeko"</string>
+    <string name="nfc_secure_toggle_summary" product="default" msgid="407654335737959071">"Eman NFCa erabiltzeko baimena pantaila desblokeatuta dagoenean soilik"</string>
     <string name="android_beam_settings_title" msgid="2797963824490671295">"Android Beam"</string>
     <string name="android_beam_on_summary" msgid="6067720758437490896">"Aplikazioaren edukia NFC bidez transmititzeko prest"</string>
     <string name="android_beam_off_summary" msgid="5693961375631325042">"Desaktibatuta"</string>
@@ -1006,7 +1006,7 @@
     <string name="wifi_ssid_hint" msgid="1940577553241083524">"Idatzi SSIDa"</string>
     <string name="wifi_security" msgid="9095934643631406913">"Segurtasuna"</string>
     <string name="wifi_hidden_network" msgid="6466834025375485596">"Sare ezkutua"</string>
-    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"Bideratzaileak ez badu igortzen sarearen IDrik baina etorkizunean harekin konektatu nahi baduzu, ezkutuko gisa ezar dezakezu sarea.\n\nBaliteke horrek segurtasuna arriskuan jartzea, telefonoak aldian-aldian igorriko baitu seinalea sarea aurkitzeko.\n\nSarea ezkutuko gisa ezartzeak ez ditu aldatuko bideratzailearen ezarpenak."</string>
+    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"Bideratzaileak sarearen IDrik igortzen ez badu baina etorkizunean harekin konektatu nahi baduzu, ezkutuko gisa ezar dezakezu sarea.\n\nBaliteke horrek segurtasuna arriskuan jartzea, telefonoak aldian-aldian igorriko baitu seinalea sarea aurkitzeko.\n\nSarea ezkutuko gisa ezartzeak ez ditu aldatuko bideratzailearen ezarpenak."</string>
     <string name="wifi_signal" msgid="4442182285304271424">"Seinalearen indarra"</string>
     <string name="wifi_status" msgid="5349199188871002778">"Egoera"</string>
     <string name="tx_wifi_speed" msgid="2368986629172050673">"Transmititzeko lotura-abiadura"</string>
@@ -1430,15 +1430,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Pantaila-babeslea"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Erabili pantaila-babeslea"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Kargatzen ari denean edo oinarrian dagoenean"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Bietako edozein"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Kargatzen ari denean"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Oinarrian dagoenean"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Inoiz ez"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Desaktibatuta"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Telefonoa oinarrian edo inaktibo dagoenean zer gertatzen den kontrolatzeko, aktibatu pantaila-babeslea."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Noiz abiarazi"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Oraingo pantaila-babeslea"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Ezarpenak"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Distira automatikoa"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Aktibatu eskuetan hartzen denean"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Pantaila ilundua"</string>
@@ -1746,7 +1743,7 @@
     <string name="reset_dashboard_summary" msgid="4390780188264852956">"Sarea, aplikazioak edota gailua berrezar daitezke"</string>
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Berrezar daitezke aplikazioak"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Berrezarri wifia, Bluetooth-a eta sare mugikorrak"</string>
-    <string name="reset_network_desc" msgid="1112523764899788246">"Hori eginez gero, sare guztien ezarpenak berrezarriko dira, besteak beste: \n\n"<li>"wifia"</li>\n<li>"datu-konexioa"</li>\n<li>"Bluetooth-a"</li></string>
+    <string name="reset_network_desc" msgid="1112523764899788246">"Hori eginez gero, sare guztien ezarpenak berrezarriko dira; besteak beste: \n\n"<li>"wifia"</li>\n<li>"datu-konexioa"</li>\n<li>"Bluetooth-a"</li></string>
     <string name="erase_euicc_data_button" msgid="728078969563311737">"Ezabatu eduki guztia"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"Ezabatu deskargatutako SIMetako edukia"</string>
     <string name="reset_esim_desc" msgid="3662444090563399131">"Ez da utziko bertan behera inongo zerbitzu-planik. Ordezko SIMak deskargatzeko, jarri harremanetan operadorearekin."</string>
@@ -1859,7 +1856,7 @@
       <item quantity="other"> <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g>/<xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> aplikaziok atzi dezakete kokapena</item>
       <item quantity="one"> <xliff:g id="PERMITTED_LOCATION_APP_COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTAL_LOCATION_APP_COUNT_1">%2$d</xliff:g> aplikaziok atzi dezake kokapena</item>
     </plurals>
-    <string name="location_category_recent_location_access" msgid="2558063524482178146">"Atzitutako azkenak"</string>
+    <string name="location_category_recent_location_access" msgid="2558063524482178146">"Atzitu duten azkenak"</string>
     <string name="location_recent_location_access_see_all" msgid="4203102419355323325">"Ikusi guztiak"</string>
     <string name="location_recent_location_access_view_details" msgid="5803264082558504544">"Ikusi xehetasunak"</string>
     <string name="location_no_recent_apps" msgid="6814206631456177033">"Ez dago kokapena duela gutxi eskatu duen aplikaziorik"</string>
@@ -3401,6 +3398,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Ezabatu"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Saioko aplikazio eta datu guztiak ezabatuko dira."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Kendu"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gonbidatua (zu)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Erabiltzaileak"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Beste erabiltzaileak"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Ezabatu gonbidatuaren jarduerak"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Gonbidatu modutik irtetean, ezabatu gonbidatuaren aplikazio eta datu guztiak"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Gonbidatuaren jarduerak ezabatu nahi dituzu?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Gonbidatuentzako saio honetako aplikazio eta datuak orain ezabatuko dira; bestalde, etorkizuneko gonbidatuen jarduera guztiak gonbidatu modutik irteten zaren bakoitzean ezabatuko dira"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Aktibatu telefono-deiak"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Aktibatu telefono-deiak eta SMSak"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Ezabatu erabiltzailea"</string>
@@ -3502,7 +3506,7 @@
     <string name="restriction_wifi_config_summary" msgid="920419010472168694">"Baimendu Wi‑Fi ezarpenak eta datu mugikorren ezarpenak aldatzea."</string>
     <string name="restriction_bluetooth_config_title" msgid="220586273589093821">"Bluetooth-a"</string>
     <string name="restriction_bluetooth_config_summary" msgid="7558879931011271603">"Eman Bluetooth parekatzeak eta ezarpenak aldatzeko baimena"</string>
-    <string name="restriction_nfc_enable_title" msgid="525512312298242911">"NFC"</string>
+    <string name="restriction_nfc_enable_title" msgid="525512312298242911">"NFCa"</string>
     <string name="restriction_nfc_enable_summary_config" msgid="8065688740509581028">"Baimendu datuak trukatzea <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuak beste NFC gailu bat ukitzen duenean"</string>
     <string name="restriction_nfc_enable_summary" product="tablet" msgid="6397567147629410131">"Eman datuak trukatzeko baimena tabletak beste gailu bat ukitzean"</string>
     <string name="restriction_nfc_enable_summary" product="default" msgid="3331800894734678808">"Eman datuak trukatzeko baimena telefonoak beste gailu bat ukitzean"</string>
@@ -5395,7 +5399,7 @@
     <string name="privileged_action_disable_fail_title" msgid="6689494935697043555">"Ezin da desgaitu operadorea"</string>
     <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Arazo bat izan da, eta ezin izan da desgaitu operadorea."</string>
     <string name="sim_action_enable_dsds_title" msgid="226508711751577169">"Bi SIM erabili nahi dituzu?"</string>
-    <string name="sim_action_enable_dsds_text" msgid="970986559326263949">"Gailu honek bi SIM izan ditzake aktibo aldi berean. SIM bakarra erabili nahi baduzu, sakatu \"Ez\"."</string>
+    <string name="sim_action_enable_dsds_text" msgid="970986559326263949">"Gailu honek bi SIM izan ditzake aktibo aldi berean. SIM bakarra erabili nahi baduzu, sakatu \"Ez, eskerrik asko\"."</string>
     <string name="sim_action_restart_title" msgid="7054617569121993825">"Gailua berrabiarazi nahi duzu?"</string>
     <string name="sim_action_restart_text" msgid="8019300474703571013">"Hasteko, berrabiarazi gailua. Gero, beste SIM txartel bat gehitu ahalko duzu."</string>
     <string name="sim_action_continue" msgid="1688813133152389943">"Egin aurrera"</string>
@@ -5427,7 +5431,7 @@
     <string name="switch_sim_dialog_no_switch_text" msgid="7053939850026876088">"Geroago datu-konexioa, deien eginbideak eta SMSak erabiltzeko, joan sarearen ezarpenetara"</string>
     <string name="sim_card_label" msgid="5632157635124050923">"SIM txartela"</string>
     <string name="erase_sim_dialog_title" msgid="881253002169177016">"Deskargatutako SIM honetako eduki guztia ezabatu nahi duzu?"</string>
-    <string name="erase_sim_dialog_text" msgid="753031064269699885">"SIM honetako eduki guztia ezabatuz gero, <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> operadorearen zerbitzua kenduko da gailu honetatik.\n\nEz da utziko bertan behera <xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> operadorearen zerbitzua."</string>
+    <string name="erase_sim_dialog_text" msgid="753031064269699885">"SIM honetako eduki guztia ezabatuz gero, <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> operadorearen zerbitzua gailu honetatik kenduko da.\n\nEz da utziko bertan behera <xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> operadorearen zerbitzua."</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"Ezabatu eduki guztia"</string>
     <string name="erasing_sim" msgid="7877703231075699139">"SIM txarteleko eduki guztia ezabatzen…"</string>
     <string name="erase_sim_fail_title" msgid="2024446702985862427">"Ezin da ezabatu SIM txarteleko eduki guztia"</string>
@@ -5554,7 +5558,7 @@
     <string name="rtt_settings_no_visible" msgid="7440356831140948382"></string>
     <string name="rtt_settings_visible_during_call" msgid="7866181103286073700"></string>
     <string name="rtt_settings_always_visible" msgid="2364173070088756238"></string>
-    <string name="media_output_panel_stop_casting_button" msgid="6094875883164119035">"Utzi igortzeari"</string>
+    <string name="media_output_panel_stop_casting_button" msgid="6094875883164119035">"Gelditu igorpena"</string>
     <string name="volte_5G_limited_title" msgid="5908052268836750629">"VoLTE desaktibatu nahi duzu?"</string>
     <string name="volte_5G_limited_text" msgid="7150583768725182345">"5G konexioa desaktibatu ere egiten du horrek.\nAhots-dei bat egiten duzun bitartean, ezingo duzu erabili Internet, eta baliteke aplikazio batzuek ez funtzionatzea."</string>
     <string name="no_5g_in_dsds_text" product="default" msgid="772747677303920132">"Bi SIM txartel darabiltzanean, telefonoak 4G sarea erabili ahal izango du, gehienez. "<annotation id="url">"Lortu informazio gehiago"</annotation></string>
@@ -5587,7 +5591,7 @@
     <string name="calls_sms_footnote" msgid="1003530944232362815">"Wifi bidezko deietan, operadore batenak ez diren wifi-sareen bidez egin eta jasotzen dira deiak. "<annotation id="url">"Lortu informazio gehiago"</annotation></string>
     <string name="calls_preference_title" msgid="7536882032182563800">"Deiak"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMSak"</string>
-    <string name="calls_sms_preferred" msgid="6016477652522583496">"hobetsiak"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"hobetsia"</string>
     <string name="calls_sms_calls_preferred" msgid="9004261125829377885">"deietarako lehenetsia"</string>
     <string name="calls_sms_sms_preferred" msgid="3855778890660922711">"SMSetarako lehenetsia"</string>
     <string name="calls_sms_unavailable" msgid="4055729705246556529">"ez dago erabilgarri"</string>
@@ -5691,7 +5695,7 @@
     <string name="mic_toggle_title" msgid="265145278323852547">"Mikrofonoa atzitzeko baimena"</string>
     <string name="location_toggle_title" msgid="5229867700421750868">"Kokapenerako sarbidea"</string>
     <string name="perm_toggle_description" msgid="5754629581767319022">"Aplikazio eta zerbitzuetarako"</string>
-    <string name="mic_toggle_description" msgid="484139688645092237">"Aplikazio eta zerbitzuetarako. Ezarpena desaktibatuta badago, agian mikrofonotik lortutako datuak partekatu egingo dira larrialdietarako zenbaki batera deitzen duzunean."</string>
+    <string name="mic_toggle_description" msgid="484139688645092237">"Aplikazio eta zerbitzuetarako. Ezarpena desaktibatuta badago ere, baliteke mikrofonotik lortutako datuak partekatzea larrialdietarako zenbaki batera deitzen duzunean."</string>
     <string name="previous_page_content_description" msgid="6438292457923282991">"Aurrekoa"</string>
     <string name="next_page_content_description" msgid="1641835099813416294">"Hurrengoa"</string>
     <string name="colors_viewpager_content_description" msgid="2591751086138259565">"Kolorearen aurrebista"</string>
@@ -5766,20 +5770,12 @@
     <string name="ingress_rate_limit_summary" msgid="1097811019742438371">"Konfiguratu sarearen banda-zabalerari dagokion sarrera-abiaduraren muga, zeina Interneteko konexioa eskaintzen duten sare guztiei aplikatzen baitzaie."</string>
     <string name="ingress_rate_limit_dialog_title" msgid="5359461052422633789">"Konfiguratu sarearen deskargatzeko abiaduraren muga"</string>
     <string name="ingress_rate_limit_no_limit_entry" msgid="8741098826008012163">"Mugagabea"</string>
-    <!-- no translation found for bluetooth_broadcast_dialog_title (9172775308463135884) -->
-    <skip />
-    <!-- no translation found for bluetooth_broadcast_dialog_find_message (6621660851669953883) -->
-    <skip />
-    <!-- no translation found for bluetooth_broadcast_dialog_broadcast_message (6198264676009094495) -->
-    <skip />
-    <!-- no translation found for bluetooth_find_broadcast_title (5385985218699831970) -->
-    <skip />
-    <!-- no translation found for bluetooth_find_broadcast_summary (3907899428626210673) -->
-    <skip />
-    <!-- no translation found for bluetooth_find_broadcast (1768337775649457586) -->
-    <skip />
-    <!-- no translation found for bluetooth_find_broadcast_button_leave (7881206581147104908) -->
-    <skip />
-    <!-- no translation found for bluetooth_find_broadcast_button_scan (3995664694641895189) -->
-    <skip />
+    <string name="bluetooth_broadcast_dialog_title" msgid="9172775308463135884">"Igorpena"</string>
+    <string name="bluetooth_broadcast_dialog_find_message" msgid="6621660851669953883">"Entzun zure inguruan igortzen ari diren edukia"</string>
+    <string name="bluetooth_broadcast_dialog_broadcast_message" msgid="6198264676009094495">"Igorri multimedia-edukia inguruko gailuetara edo entzun besteek igorritako edukia"</string>
+    <string name="bluetooth_find_broadcast_title" msgid="5385985218699831970">"Igorpenak"</string>
+    <string name="bluetooth_find_broadcast_summary" msgid="3907899428626210673">"Hau ari zara entzuten:"</string>
+    <string name="bluetooth_find_broadcast" msgid="1768337775649457586">"Bilatu igorpenak"</string>
+    <string name="bluetooth_find_broadcast_button_leave" msgid="7881206581147104908">"Irten igorpenetik"</string>
+    <string name="bluetooth_find_broadcast_button_scan" msgid="3995664694641895189">"Eskaneatu QR kodea"</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index d749da9..8d0cdb6 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"زبان سیستم"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"پیش‌فرض سیستم"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"انتخاب زبان از «تنظیمات» برای این برنامه دردسترس نیست."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"زبان ممکن است با زبان‌های موجود در برنامه متفاوت باشد. ممکن است برخی‌از برنامه‌ها از این تنظیم پشتیبانی نکنند."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">زبان‌های انتخابی حذف شوند؟</item>
       <item quantity="other">زبان‌های انتخابی حذف شوند؟</item>
@@ -1004,7 +1003,7 @@
     <string name="wifi_ssid" msgid="2713062130735103151">"نام شبکه"</string>
     <string name="wifi_ssid_hint" msgid="1940577553241083524">"‏SSID را وارد کنید"</string>
     <string name="wifi_security" msgid="9095934643631406913">"امنیت"</string>
-    <string name="wifi_hidden_network" msgid="6466834025375485596">"شبکه مخفی"</string>
+    <string name="wifi_hidden_network" msgid="6466834025375485596">"شبکه پنهان"</string>
     <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"اگر رهیابتان شناسه شبکه را پخش نمی‌کند اما می‌خواهید در آینده به آن متصل شوید، می‌توانید شبکه را روی پنهان تنظیم کنید.\n\nاین کار می‌تواند خطر امنیتی ایجاد کند زیرا تلفن شما سیگنالش را به‌طور منظم برای پیدا کردن شبکه پخش می‌کند.\n\nتنظیم کردن شبکه روی پنهان تنظیمات رهیاب را تغییر نخواهد داد."</string>
     <string name="wifi_signal" msgid="4442182285304271424">"قدرت سیگنال"</string>
     <string name="wifi_status" msgid="5349199188871002778">"وضعیت"</string>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"محافظ صفحه"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"استفاده از محافظ صفحه‌نمایش"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"هنگام شارژ یا اتصال به پایه"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"هر دو"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"هنگام شارژ شدن"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"وقتی روی پایه است"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"هرگز"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"خاموش"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"برای کنترل اینکه وقتی تلفن روی پایه اتصال قرار دارد و/یا در حالت خواب است چه اتفاقی بیفتد، محافظ صفحه را روشن کنید."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"زمان شروع شدن"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"محافظ صفحه کنونی"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"تنظیمات"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"روشنایی خودکار"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"بیدار شدن با بالا بردن"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"نمایشگر محیط"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"حذف"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"همه برنامه‌ها و داده‌های این جلسه حذف خواهد شد."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"حذف"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"مهمان (شما)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"کاربران"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"کاربران دیگر"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"حذف فعالیت مهمان"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"همه برنامه‌ها و داده‌های مهمان هنگام خروج از حالت مهمان حذف می‌شوند"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"فعالیت مهمان حذف شود؟"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"برنامه‌ها و داده‌های این جلسه مهمان اکنون حذف خواهند شد و همه فعالیت‌های آتی مهمان هربار که از حالت مهمان خارج شوید حذف خواهد شد"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"روشن کردن تماس‌های تلفنی"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"روشن کردن تماس‌های تلفنی و پیامک"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"حذف کاربر"</string>
@@ -4861,7 +4864,7 @@
     <string name="bluetooth_disabled" msgid="835838280837359514">"خاموش"</string>
     <string name="bluetooth_connected_summary" msgid="8043167194934315712">"به <xliff:g id="ID_1">%1$s</xliff:g> متصل شد"</string>
     <string name="bluetooth_connected_multiple_devices_summary" msgid="2294954614327771844">"به چند دستگاه متصل شد"</string>
-    <string name="demo_mode" msgid="6566167465451386728">"حالت نمایشی میانای کاربر سیستم"</string>
+    <string name="demo_mode" msgid="6566167465451386728">"حالت نمایشی واسط کاربر سیستم"</string>
     <string name="dark_ui_mode" msgid="898146394425795281">"زمینه تیره"</string>
     <string name="dark_ui_mode_disabled_summary_dark_theme_on" msgid="4554134480159161533">"به‌دلیل روشن بودن «بهینه‌سازی باتری» موقتاً غیرفعال شده است"</string>
     <string name="ambient_camera_summary_battery_saver_on" msgid="1787784892047029560">"به‌دلیل روشن بودن «بهینه‌سازی باتری»، موقتاً غیرفعال شده است"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 237ef09..4b34ed0 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Näytönsäästäjä"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Käytä näytönsäästäjää"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Latauksen aikana tai telakoituna"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Kumpi vain"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Latauksen aikana"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Telakoituna"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Ei koskaan"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Pois päältä"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Ota näytönsäästäjä käyttöön, niin voit hallita puhelimen toimintaa telakoituna ja/tai lepotilassa."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Aloitus"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Nykyinen näytönsäästäjä"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Asetukset"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automaattinen kirkkaus"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Herätä nostamalla"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Himmennetty näyttö"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Poista"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Kaikki sovellukset ja tämän istunnon tiedot poistetaan."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Poista"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Vieras (sinä)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Käyttäjät"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Muut käyttäjät"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Poista vierastoimintaa"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Poista kaikki vierassovellukset ja ‑data vierailija-käyttökerrasta poistumisen yhteydessä"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Poistetaanko vierastoiminta?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Tämän vierailija-käyttökerran sovellukset ja data poistetaan nyt. Kaikki tuleva vierastoiminta poistetaan aina, kun poistut vierailija-käyttökerrasta."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Ota puhelut käyttöön"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Ota puhelut ja tekstiviestit käyttöön"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Poista käyttäjä"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 4638b53..8f71f04 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -225,8 +225,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"Langues suggérées"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"Toutes les langues"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Langue du système"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Paramètre système par défaut"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"La sélection de la langue pour cette application n\'est pas accessible à partir des paramètres."</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -1430,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Écran de veille"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Utiliser l\'écran de veille"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Pendant la charge ou sur la station d\'accueil"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Les deux"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Pendant la charge"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Sur la station d\'accueil"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Jamais"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Désactivé"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Pour déterminer le comportement du téléphone lorsqu\'il se trouve sur une station d\'accueil ou lorsqu\'il est en veille, activez l\'écran de veille."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Quand commencer"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Écran de veille actuel"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Paramètres"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Ajuster automatiquement la luminosité"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Soulever pour activer"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Affichage en mode Veille"</string>
@@ -3401,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Supprimer"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Toutes les applications et les données de cette session seront supprimées."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Supprimer"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Invité (vous)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Utilisateurs"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Autres utilisateurs"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Supprimer l\'activité d\'invité"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Supprimer toutes les applications et données d\'invité en quittant le mode Invité"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Supprimer l\'activité d\'invité?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Les applications et les données de cette session d\'invité seront supprimées maintenant, et toutes les activités d\'invité futures seront supprimées chaque fois que vous quitterez le mode Invité"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Activer les appels téléphoniques"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Activer appels téléphoniques et textos"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Supprimer l\'utilisateur"</string>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
index ad5ed0a..a4dbc05 100644
--- a/res/values-fr/arrays.xml
+++ b/res/values-fr/arrays.xml
@@ -505,7 +505,7 @@
   </string-array>
   <string-array name="wifi_metered_entries">
     <item msgid="3237321077949659241">"Détecter automatiquement"</item>
-    <item msgid="3779092145391320375">"Considérer comme facturé à l\'usage"</item>
+    <item msgid="3779092145391320375">"Traiter comme facturé à l\'usage"</item>
     <item msgid="2047166446768045816">"Traiter comme sans compteur"</item>
   </string-array>
   <string-array name="wifi_privacy_entries">
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index fed5bf5..030ee87 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -317,7 +317,7 @@
     <string name="show_profile_info_on_lockscreen_label" msgid="5734739022887933365">"Afficher infos de profil sur écran de verrouillage"</string>
     <string name="Accounts_settings_title" msgid="8434263183710375412">"Comptes"</string>
     <string name="location_settings_title" msgid="8375074508036087178">"Localisation"</string>
-    <string name="location_settings_primary_switch_title" msgid="8849081766644685127">"Utiliser la position"</string>
+    <string name="location_settings_primary_switch_title" msgid="8849081766644685127">"Utiliser la localisation"</string>
     <string name="location_settings_summary_location_off" msgid="4797932754681162262">"Désactivé"</string>
     <plurals name="location_settings_summary_location_on" formatted="false" msgid="1019959038518185676">
       <item quantity="one">Activée - <xliff:g id="COUNT_1">%1$d</xliff:g> application a accès à votre position</item>
@@ -813,7 +813,7 @@
     <string name="bluetooth_settings" msgid="2967239493428695171">"Bluetooth"</string>
     <string name="bluetooth_settings_title" msgid="2642029095769509647">"Bluetooth"</string>
     <string name="bluetooth_settings_summary" msgid="6805458703566046784">"Gérer les connexions, configurer le nom et l\'identification de l\'appareil"</string>
-    <string name="bluetooth_pairing_request" msgid="7762990650683525640">"Associer avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ?"</string>
+    <string name="bluetooth_pairing_request" msgid="7762990650683525640">"Associer à <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ?"</string>
     <string name="bluetooth_pairing_key_msg" msgid="1329835708475701761">"Code d\'association Bluetooth"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5806420933599368592">"Saisissez le code d\'association, puis appuyez sur Retour ou Entrée."</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="7256286571636950635">"Le code PIN contient des lettres ou des symboles."</string>
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Économiseur d\'écran"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Utiliser l\'économiseur d\'écran"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Lorsque l\'appareil est en charge ou connecté à une station d\'accueil"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Dans les deux cas"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Lorsque l\'appareil est en charge"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Lorsque l\'appareil est connecté à une station d\'accueil"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Jamais"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Désactivé"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Pour contrôler le comportement du téléphone lorsqu\'il se trouve sur une station d\'accueil et/ou lorsqu\'il est en veille, activez l\'économiseur d\'écran."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Quand l\'activer"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Économiseur d\'écran actuel"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Paramètres"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Ajuster automatiquement la luminosité"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Soulever pour activer"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Affichage en mode Veille"</string>
@@ -1852,7 +1849,7 @@
     <string name="location_category_location_services" msgid="8163798686832434284">"Services de localisation"</string>
     <string name="location_title" msgid="5819154746934945021">"Ma position"</string>
     <string name="managed_profile_location_switch_title" msgid="1265007506385460066">"Position du profil pro"</string>
-    <string name="location_app_level_permissions" msgid="907206607664629759">"Autorisations de géolocalisation"</string>
+    <string name="location_app_level_permissions" msgid="907206607664629759">"Accès des applis à votre position"</string>
     <string name="location_app_permission_summary_location_off" msgid="2711822936853500335">"La localisation est désactivée"</string>
     <plurals name="location_app_permission_summary_location_on" formatted="false" msgid="8286873148858526214">
       <item quantity="one"> <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> application sur <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> a accès à votre position</item>
@@ -2629,7 +2626,7 @@
     <string name="keywords_rtt" msgid="2429130928152514402">"malentendant, perte d\'audition, sous-titres, téléscripteur, TTY"</string>
     <string name="keywords_voice_access" msgid="7807335263195876454"></string>
     <string name="fast_pair_settings" msgid="3308819519080016185">"Association express"</string>
-    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Détection à proximité appareils Bluetooth Association express."</string>
+    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Détection des appareils Bluetooth à Association express à proximité."</string>
     <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"Rechercher des appareils à proximité"</string>
     <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"Appareils enregistrés"</string>
     <string name="print_settings" msgid="8519810615863882491">"Impression"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Supprimer"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Toutes les applications et les données de cette session seront supprimées."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Supprimer"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Invité (Vous)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Utilisateurs"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Autres utilisateurs"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Supprimer l\'activité"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Supprimer toutes les applis et données de la session lorsque vous quittez le mode Invité"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Supprimer l\'activité ?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Les applis et données de cette session Invité seront immédiatement supprimées, et toute l\'activité des futures sessions sera supprimée à chaque fois que vous quitterez le mode Invité"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Activer les appels téléphoniques"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Activer les appels téléphoniques et les SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Supprimer un compte utilisateur"</string>
@@ -4517,7 +4521,7 @@
     <string name="usb_transcode_files_summary" msgid="307102635711961513">"Les vidéos seront lisibles sur un plus grand nombre de lecteurs multimédias, mais la qualité peut être réduite"</string>
     <string name="usb_use_photo_transfers_desc" msgid="7490250033610745765">"Transférer des photos ou des fichiers si MTP n\'est pas compatible (PTP)"</string>
     <string name="usb_use_tethering" msgid="2897063414491670531">"Partage de connexion via USB"</string>
-    <string name="usb_use_MIDI" msgid="8621338227628859789">"Mode MIDI"</string>
+    <string name="usb_use_MIDI" msgid="8621338227628859789">"MIDI"</string>
     <string name="usb_use_MIDI_desc" msgid="6464135515868405143">"Utiliser cet appareil en tant que MIDI"</string>
     <string name="usb_use" msgid="6783183432648438528">"Utiliser la connexion USB pour"</string>
     <string name="usb_default_label" msgid="3372838450371060750">"Configuration USB par défaut"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index ea6b494..a27d700 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Protector de pantalla"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Usar protector de pantalla"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Ao estar cargando ou na base"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"As dúas opcións"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Ao estar cargando"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Ao estar na base"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nunca"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Desactivado"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Para controlar o que sucederá cando o teléfono estea ancorado ou en modo de suspensión, activa o protector de pantalla."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Cando comezar"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Protector de pantalla actual"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Configuración"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Brillo intelixente"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Levantar para acender"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Pantalla en suspensión"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Eliminar"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Eliminaranse todas as aplicacións e datos desta sesión."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Quitar"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Convidado (ti)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Usuarios"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Outros usuarios"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Eliminar actividade do convidado"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Elimina todas as aplicacións e datos da sesión de convidado ao saír do modo de convidado"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Eliminar actividade do convidado?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"As aplicacións e os datos desta sesión de convidado eliminaranse agora, e toda actividade de convidados futura eliminarase cada vez que saias do modo de convidado"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Activar chamadas telefónicas"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Activar chamadas telefónicas e SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Eliminar usuario"</string>
@@ -4165,7 +4169,7 @@
     <string name="zen_mode_custom_behavior_summary" msgid="5390522750884328843">"Configura esta planificación de forma personalizada"</string>
     <string name="zen_mode_custom_behavior_category_title" msgid="7815612569425733764">"Para \"<xliff:g id="SCHEDULE_NAME">%1$s</xliff:g>\""</string>
     <string name="summary_divider_text" msgid="8836285171484563986">", "</string>
-    <string name="summary_range_symbol_combination" msgid="8447490077794415525">"Do <xliff:g id="START">%1$s</xliff:g> ao <xliff:g id="END">%2$s</xliff:g>"</string>
+    <string name="summary_range_symbol_combination" msgid="8447490077794415525">"<xliff:g id="START">%1$s</xliff:g> - <xliff:g id="END">%2$s</xliff:g>"</string>
     <string name="summary_range_verbal_combination" msgid="6022314482293187463">"Do <xliff:g id="START">%1$s</xliff:g> ao <xliff:g id="END">%2$s</xliff:g>"</string>
     <string name="zen_mode_conversations_title" msgid="5491912973456026379">"Conversas"</string>
     <string name="zen_mode_conversations_section_title" msgid="666809483050936026">"Conversas que poden interromper"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 561cd6f..6e3cb74 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -186,7 +186,7 @@
     <string name="proxy_error_empty_port" msgid="4250295137005082992">"તમારે પોર્ટ ફીલ્ડ પૂર્ણ કરવાની જરૂર છે."</string>
     <string name="proxy_error_empty_host_set_port" msgid="8886572276450900049">"હોસ્ટ ફીલ્ડ ખાલી હોય તો પોર્ટ ફીલ્ડ ખાલી હોવું આવશ્યક છે."</string>
     <string name="proxy_error_invalid_port" msgid="2830054691770209166">"તમે ટાઇપ કરેલ પોર્ટ માન્ય નથી."</string>
-    <string name="proxy_warning_limited_support" msgid="3277104160797351942">"HTTP પ્રોક્સીનો ઉપયોગ બ્રાઉઝર દ્વારા કરવામાં આવે છે પરંતુ અન્ય ઍપ્લિકેશનો દ્વારા કરી શકાતો નથી."</string>
+    <string name="proxy_warning_limited_support" msgid="3277104160797351942">"HTTP પ્રોક્સીનો ઉપયોગ બ્રાઉઝર દ્વારા કરવામાં આવે છે પરંતુ અન્ય ઍપ દ્વારા કરી શકાતો નથી."</string>
     <string name="proxy_url_title" msgid="3502625766036404073">"PAC URL: "</string>
     <string name="radio_info_ping_hostname_v4" msgid="4790577760885127088">"હોસ્ટનું નામ પિંગ કરો(www.google.com) IPv4:"</string>
     <string name="radio_info_ping_hostname_v6" msgid="8327436534663560713">"હોસ્ટનું નામ પિંગ કરો(www.google.com) IPv6:"</string>
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"સિસ્ટમની ભાષા"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"સિસ્ટમ ડિફૉલ્ટ"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"આ ઍપ માટે સેટિંગમાંથી ભાષા પસંદ કરી શકાતી નથી."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"આ ભાષા ઍપમાં ઉપલબ્ધ ભાષાઓથી અલગ હોઈ શકે છે. કેટલીક ઍપ આ સેટિંગને સપોર્ટ ન કરે એવું બની શકે છે."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">પસંદ કરેલ ભાષાઓને કાઢી નાખીએ?</item>
       <item quantity="other">પસંદ કરેલ ભાષાઓને કાઢી નાખીએ?</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"સ્ક્રીન સેવર"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"સ્ક્રીન સેવરનો ઉપયોગ કરો"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ચાર્જ થતું હોય અથવા ડૉક કરેલ હોય ત્યારે"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"બેમાંથી કોઈપણ એક"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"ચાર્જિંગ થતી વખતે"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ડૉક હોય ત્યારે"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"ક્યારેય નહીં"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"બંધ"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ફોન ડૉક થાય અને/અથવા નિષ્ક્રિય થઈ જાય ત્યારે શું થાય તેને નિયંત્રિત કરવા માટે, સ્ક્રીન સેવર ચાલુ કરો."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"ક્યારે શરૂ કરવું"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"વર્તમાન સ્ક્રીન સેવર"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"સેટિંગ"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"સ્વચલિત તેજ"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"જાગૃત કરવા માટે લિફ્ટ કરો"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"ઍમ્બિઅન્ટ ડિસ્પ્લે"</string>
@@ -1749,10 +1745,10 @@
     <string name="erase_euicc_data_button" msgid="728078969563311737">"કાઢી નાખો"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ડાઉનલોડ કરેલાં સિમ કાઢી નખાશે"</string>
     <string name="reset_esim_desc" msgid="3662444090563399131">"આનાથી કોઈપણ મોબાઇલ સેવા પ્લાન રદ થશે નહીં. બદલીના સિમ કાર્ડ ડાઉનલોડ કરવા માટે, તમારા મોબાઇલ ઑપરેટરનો સંપર્ક કરો."</string>
-    <string name="reset_network_button_text" msgid="2281476496459610071">"સેટિંગ ફરીથી સેટ કરો"</string>
+    <string name="reset_network_button_text" msgid="2281476496459610071">"સેટિંગ રીસેટ કરો"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"બધાં નેટવર્ક સેટિંગ રીસેટ કરીએ? તમે આ ક્રિયા માટે કરેલો છેલ્લો ફેરફાર રદ કરી શકશો નહીં."</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"બધા નેટવર્ક સેટિંગ રીસેટ કરીએ અને ડાઉનલોડ કરેલાં સિમ કાઢી નાખીએ? તમે આ ક્રિયા માટે કરેલો છેલ્લો ફેરફાર રદ કરી શકશો નહીં."</string>
-    <string name="reset_network_final_button_text" msgid="2433867118414000462">"સેટિંગ ફરીથી સેટ કરો"</string>
+    <string name="reset_network_final_button_text" msgid="2433867118414000462">"સેટિંગ રીસેટ કરો"</string>
     <string name="reset_network_confirm_title" msgid="913014422184481270">"ફરીથી સેટ કરીએ?"</string>
     <string name="network_reset_not_available" msgid="1966334631394607829">"આ વપરાશકર્તા માટે નેટવર્ક ફરીથી સેટ કરો ઉપલબ્ધ નથી"</string>
     <string name="reset_network_complete_toast" msgid="1367872474130621115">"નેટવર્ક સેટિંગ રીસેટ કરવામાં આવ્યા છે"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"ડિલીટ કરો"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"આ સત્રમાંની તમામ ઍપ અને ડેટા કાઢી નાખવામાં આવશે."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"કાઢી નાખો"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"અતિથિ (તમે)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"વપરાશકર્તાઓ"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"અન્ય વપરાશકર્તાઓ"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"અતિથિ પ્રવૃત્તિ ડિલીટ કરો"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"અતિથિ મોડમાંથી બહાર નીકળતી વખતે તમામ અતિથિ ઍપ અને ડેટા ડિલીટ કરો"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"શું અતિથિની પ્રવૃત્તિ ડિલીટ કરીએ?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"આ અતિથિ સત્રમાંની તમામ ઍપ અને ડેટા હમણાં ડિલીટ કરવામાં આવશે તેમજ ભવિષ્યમાં જ્યારે પણ તમે અતિથિ મોડમાંથી બહાર નીકળો, ત્યારે તમામ અતિથિ પ્રવૃત્તિ ડિલીટ કરવામાં આવશે"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"ફોન કૉલ ચાલુ કરો"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ફોન કૉલ અને SMS ચાલુ કરો"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"વપરાશકર્તાને ડિલીટ કરો"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 9233d41..05963d7 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -102,7 +102,7 @@
     <string name="bluetooth_no_devices_found" msgid="7704539337219953182">"आस-पास कोई ब्लूटूथ डिवाइस नहीं मिला."</string>
     <string name="bluetooth_notif_ticker" msgid="209515545257862858">"ब्लूटूथ से जोड़ने का अनुरोध किया गया है"</string>
     <string name="bluetooth_notif_title" msgid="1196532269131348647">"दूसरे डिवाइस से जोड़ने का अनुरोध किया गया है"</string>
-    <string name="bluetooth_notif_message" msgid="5584717784198086653">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> से युग्मित करने के लिए टैप करें."</string>
+    <string name="bluetooth_notif_message" msgid="5584717784198086653">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> से जोड़ने के लिए टैप करें."</string>
     <string name="bluetooth_show_received_files" msgid="685424727760622632">"मिलने वाली फ़ाइलें"</string>
     <string name="bluetooth_devices_card_off_title" msgid="1320149821945129127">"ब्लूटूथ बंद है"</string>
     <string name="bluetooth_devices_card_off_summary" msgid="2276527382891105858">"इसे चालू करने के लिए टैप करें"</string>
@@ -140,7 +140,7 @@
     <string name="bluetooth_map_acceptance_dialog_text" msgid="2647611490952377156">"%1$s आपके मैसेज तक पहुंचना चाहता है. %2$s को पहुंचने दें?"</string>
     <string name="bluetooth_sap_request" msgid="473439406287008397">"सिम का इस्तेमाल करने के लिए अनुरोध"</string>
     <string name="bluetooth_sap_acceptance_dialog_text" msgid="2849083276356078655">"<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g> आपके SIM कार्ड को ऐक्सेस करना चाहता है. SIM कार्ड की ऐक्सेस देने से कनेक्शन की अवधि तक आपके डिवाइस पर डेटा कनेक्टिविटी अक्षम हो जाएगी. <xliff:g id="DEVICE_NAME_1">%2$s?</xliff:g> को ऐक्सेस दें"</string>
-    <string name="bluetooth_device_name_summary" msgid="8678342689845439583">"दूसरे डिवाइसों को \'<xliff:g id="DEVICE_NAME">^1</xliff:g>\' के रूप में दिखाई देता है"</string>
+    <string name="bluetooth_device_name_summary" msgid="8678342689845439583">"दूसरे डिवाइसों को \'<xliff:g id="DEVICE_NAME">^1</xliff:g>\' के रूप में दिखता है"</string>
     <string name="bluetooth_off_footer" msgid="76578735660216295">"अपने डिवाइस को दूसरे डिवाइस से जोड़ने के लिए ब्लूटूथ चालू करें."</string>
     <string name="bluetooth_paired_device_title" msgid="3240639218362342026">"आपके डिवाइस"</string>
     <string name="bluetooth_pairing_page_title" msgid="3403981358823707692">"नया डिवाइस जोड़ें"</string>
@@ -178,7 +178,7 @@
     <string name="proxy_exclusionlist_label" msgid="2598613986784917542">"इसके लिए प्रॉक्‍सी का इस्तेमाल न करें"</string>
     <string name="proxy_defaultView_text" msgid="6795150505379688451">"डिफ़ॉल्ट पुनर्स्थापित करें"</string>
     <string name="proxy_action_text" msgid="1103328484441449542">"हो गया"</string>
-    <string name="proxy_hostname_label" msgid="5504327742505848063">"प्रॉक्सी होस्‍टनाम"</string>
+    <string name="proxy_hostname_label" msgid="5504327742505848063">"प्रॉक्सी होस्टनेम"</string>
     <string name="proxy_error" msgid="3615905975598084126">"ध्यान दें"</string>
     <string name="proxy_error_dismiss" msgid="4207430265140873078">"ठीक है"</string>
     <string name="proxy_error_invalid_host" msgid="3814412792702059247">"  लिखा गया होस्‍टनाम मान्‍य नहीं है."</string>
@@ -187,7 +187,7 @@
     <string name="proxy_error_empty_host_set_port" msgid="8886572276450900049">"अगर होस्‍ट फ़ील्‍ड खाली है तो पोर्ट फ़ील्‍ड को खाली होना ही चाहिए."</string>
     <string name="proxy_error_invalid_port" msgid="2830054691770209166">"  लिखा गया पोर्ट मान्‍य नहीं है."</string>
     <string name="proxy_warning_limited_support" msgid="3277104160797351942">"एचटीटीपी प्रॉक्सी का इस्तेमाल ब्राउज़र करता है, लेकिन हो सकता है कि अन्य ऐप्लिकेशन इसका इस्तेमाल न कर पाएं."</string>
-    <string name="proxy_url_title" msgid="3502625766036404073">"PAC यूआरएल: "</string>
+    <string name="proxy_url_title" msgid="3502625766036404073">"पीएसी यूआरएल: "</string>
     <string name="radio_info_ping_hostname_v4" msgid="4790577760885127088">"होस्‍टनाम(www.google.com) IPv4 पिंग करें:"</string>
     <string name="radio_info_ping_hostname_v6" msgid="8327436534663560713">"होस्‍टनाम(www.google.com) IPv6 पिंग करें:"</string>
     <string name="radio_info_http_client_test" msgid="5673975677271544085">"HTTP क्लाइंट परीक्षण:"</string>
@@ -225,8 +225,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"सुझाई गई भाषाएं"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"सभी भाषाएं"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"सिस्टम की भाषा"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"सिस्टम डिफ़ॉल्ट"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"सेटिंग में, इस ऐप्लिकेशन की भाषा चुनने का विकल्प मौजूद नहीं है."</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -326,7 +325,7 @@
     </plurals>
     <string name="location_settings_loading_app_permission_stats" msgid="6054103701535557342">"लोड हो रहा है…"</string>
     <string name="location_settings_footer_general" msgid="1040507068701188821">"ऐसे ऐप्लिकेशन, जिन्हें आस-पास मौजूद डिवाइसों के साथ इंटरैक्ट करने की अनुमति मिली है वे कनेक्ट किए गए डिवाइसों की जगह की जानकारी का पता लगा सकते हैं."</string>
-    <string name="location_settings_footer_location_off" msgid="8568995909147566720">"ऐप्लिकेशन और सेवाओं के लिए, जगह की जानकारी का ऐक्सेस बंद है. आपके डिवाइस की जगह की जानकारी, आपातकालीन स्थिति में मदद करने वालों को अब भी दी जा सकती है. ऐसा तब किया जाएगा, जब आप किसी आपातकालीन नंबर पर कॉल करेंगे या मैसेज भेजेंगे."</string>
+    <string name="location_settings_footer_location_off" msgid="8568995909147566720">"ऐप्लिकेशन और सेवाओं के लिए, जगह की जानकारी का ऐक्सेस बंद है. आपके डिवाइस की जगह की जानकारी, आपातकालीन स्थिति में मदद करने वाले व्यक्तियों को अब भी दी जा सकती है. ऐसा आपके किसी आपातकालीन नंबर पर कॉल करने या मैसेज भेजने पर किया जाएगा."</string>
     <string name="location_settings_footer_learn_more_content_description" msgid="5329024810729665156">"जगह की जानकारी की सेटिंग के बारे में ज़्यादा जानें."</string>
     <string name="account_settings_title" msgid="9138880127246241885">"खाते"</string>
     <string name="security_settings_title" msgid="6710768415432791970">"सुरक्षा"</string>
@@ -845,7 +844,7 @@
     <string name="bluetooth_preference_no_found_devices" msgid="1331122763066030155">"कोई डिवाइस उपलब्ध नहीं"</string>
     <string name="bluetooth_device_context_connect" msgid="4913860372216815855">"कनेक्ट करें"</string>
     <string name="bluetooth_device_context_disconnect" msgid="4464167389972513232">"डिसकनेक्ट करें"</string>
-    <string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"युग्‍मित और कनेक्‍ट करें"</string>
+    <string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"जोड़े और कनेक्‍ट करें"</string>
     <string name="bluetooth_device_context_unpair" msgid="7525735305244087162">"जुड़ा हुआ डिवाइस हटाएं"</string>
     <string name="bluetooth_device_context_disconnect_unpair" msgid="2001359431289794561">"डिस्‍कनेक्‍ट करें और जुड़ा हुआ डिवाइस हटाएं"</string>
     <string name="bluetooth_device_context_connect_advanced" msgid="934657460643490773">"विकल्प…"</string>
@@ -858,7 +857,7 @@
     <string name="device_details_title" msgid="1155622417516195481">"डिवाइस की जानकारी"</string>
     <string name="bluetooth_device_mac_address" msgid="4873325074786732703">"डिवाइस का ब्लूटूथ पता: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
     <string name="bluetooth_multuple_devices_mac_address" msgid="4974301550897923376">"डिवाइस के ब्लूटूथ का पता:\n<xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
-    <string name="bluetooth_unpair_dialog_title" msgid="6943633443716052995">"डिवाइस को भूलना चाहते हैं?"</string>
+    <string name="bluetooth_unpair_dialog_title" msgid="6943633443716052995">"डिवाइस को भूलना है?"</string>
     <string name="remove_association_button" msgid="5004208145998061135">"डिसकनेक्ट करें"</string>
     <string name="bluetooth_companion_app_remove_association_dialog_title" msgid="1344518601377991897">"क्या आप ऐप्लिकेशन को डिसकनेक्ट करना चाहते हैं?"</string>
     <string name="bluetooth_unpair_dialog_body" product="default" msgid="4730377171981539265">"आपका फ़ोन अब <xliff:g id="DEVICE_NAME">%1$s</xliff:g> के साथ जुड़ा नहीं रहेगा"</string>
@@ -1006,7 +1005,7 @@
     <string name="wifi_ssid_hint" msgid="1940577553241083524">"SSID डालें"</string>
     <string name="wifi_security" msgid="9095934643631406913">"सुरक्षा"</string>
     <string name="wifi_hidden_network" msgid="6466834025375485596">"छिपा हुआ नेटवर्क"</string>
-    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"अगर आपका राऊटर कोई नेटवर्क आईडी नहीं दिखा रहा है, लेकिन आप आने वाले समय में इससे जुड़ना चाहते हैं, तो इसे छिपे हुए नेटवर्क के रूप में सेट किया जा सकता है.\n\nइससे सुरक्षा का खतरा पैदा हो सकता है, क्योंकि आपका फ़ोन नेटवर्क ढूंढने के लिए लगातार अपने सिग्नल ब्रॉडकास्ट करता रहेगा.\n\nनेटवर्क को छिपे हुए नेटवर्क के रूप में सेट करने से, आपके राऊटर की सेटिंग में कोई बदलाव नहीं होगा."</string>
+    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"अगर आपका राऊटर कोई नेटवर्क आईडी नहीं दिखा रहा है, लेकिन आने वाले समय में आपको इससे जुड़ना है, तो इसे छिपे हुए नेटवर्क के रूप में सेट किया जा सकता है.\n\nइससे सुरक्षा का खतरा पैदा हो सकता है, क्योंकि आपका फ़ोन नेटवर्क ढूंढने के लिए लगातार अपने सिग्नल ब्रॉडकास्ट करता रहेगा.\n\nनेटवर्क को छिपे हुए नेटवर्क के रूप में सेट करने से, आपके राऊटर की सेटिंग में कोई बदलाव नहीं होगा."</string>
     <string name="wifi_signal" msgid="4442182285304271424">"सिग्‍नल की क्षमता"</string>
     <string name="wifi_status" msgid="5349199188871002778">"स्थिति"</string>
     <string name="tx_wifi_speed" msgid="2368986629172050673">"ट्रांसमिट लिंक की रफ़्तार"</string>
@@ -1430,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"स्क्रीन सेवर"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"स्क्रीन सेवर का इस्तेमाल करें"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"चार्ज करते समय या डॉक किए होने पर"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"कोई एक"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"चार्ज करते समय"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"जब डॉक किया हुआ हो"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"कभी नहीं"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"बंद"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"फ़ोन के डॉक रहते समय और/या उपयोग में नहीं होने पर जो भी होता है, उसे नियंत्रित करने के लिए स्क्रीन सेवर चालू करें."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"कब शुरू करना है"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"मौजूदा स्क्रीन सेवर"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"सेटिंग"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"अपनेआप स्क्रीन की रोशनी"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"सक्रिय करने के लिए उठाएं"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"हमेशा चालू स्क्रीन दिखाएं"</string>
@@ -1612,7 +1608,7 @@
     <string name="usb_mtp_summary" msgid="6293240861011560842">"आपको Windows पर मीडि‍या फ़ाइल ट्रांसफ़र करने, या Mac पर Android File Transfer का इस्तेमाल करने देता है (www.android.com/filetransfer देखें)"</string>
     <string name="usb_ptp_title" msgid="4496529268189091846">"कैमरा (PTP)"</string>
     <string name="usb_ptp_summary" msgid="8382539472311655671">"आपको कैमरा सॉफ़्टवेयर का इस्तेमाल करके फ़ोटो ट्रांसफ़र करने देता है और जिन कंप्‍यूटर पर MTP काम नहीं करता, उन पर कोई भी फ़ाइल ट्रांसफ़र करने देता है"</string>
-    <string name="usb_midi_title" msgid="1139558846427981761">"MIDI"</string>
+    <string name="usb_midi_title" msgid="1139558846427981761">"एमआईडीआई"</string>
     <string name="usb_midi_summary" msgid="1842457325845863840">"MIDI सक्षम ऐप्‍लिकेशन को आपके कंप्‍यूटर पर MIDI सॉफ़्टवेयर के साथ USB पर काम करने देती है."</string>
     <string name="storage_other_users" msgid="7017206190449510992">"अन्य उपयोगकर्ता"</string>
     <string name="storage_internal_title" msgid="3265098802217660829">"डिवाइस मेमोरी"</string>
@@ -2096,8 +2092,8 @@
     <string name="no_applications" msgid="985069304755391640">"कोई ऐप्लिकेशन नहीं."</string>
     <string name="internal_storage" msgid="999496851424448809">"मोबाइल मेमोरी"</string>
     <string name="recompute_size" msgid="1098091228370999128">"आकार फिर से परिकलित कर रहा है…"</string>
-    <string name="clear_data_dlg_title" msgid="180446967743732410">"ऐप्लिकेशन डेटा मिटाना चाहते हैं?"</string>
-    <string name="clear_data_dlg_text" msgid="3440011276559762619">"इस ऐप्लिकेशन का डेटा, इस डिवाइस से हमेशा के लिए मिट जाएगा. इस डेटा में, फ़ाइलें, और सेटिंग शामिल हैं"</string>
+    <string name="clear_data_dlg_title" msgid="180446967743732410">"ऐप्लिकेशन डेटा मिटाना है?"</string>
+    <string name="clear_data_dlg_text" msgid="3440011276559762619">"इस ऐप्लिकेशन का डेटा, इस डिवाइस से हमेशा के लिए मिट जाएगा. इस डेटा में, फ़ाइलें और सेटिंग शामिल हैं"</string>
     <string name="dlg_ok" msgid="1421350367857960997">"ठीक है"</string>
     <string name="dlg_cancel" msgid="5164705061530774899">"रद्द करें"</string>
     <string name="dlg_delete" msgid="1790919205039397659">"मिटाएं"</string>
@@ -3399,8 +3395,15 @@
     <string name="user_adding_new_user" msgid="7439602720177181412">"नया उपयोगकर्ता जोड़ा जा रहा है…"</string>
     <string name="user_delete_user_description" msgid="7764153465503821011">"उपयोगकर्ता मिटाएं"</string>
     <string name="user_delete_button" msgid="3833498650182594653">"मिटाएं"</string>
-    <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"इस सत्र के सभी ऐप्लिकेशन और डेटा को हटा दिया जाएगा."</string>
+    <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"इस सेशन के सभी ऐप्लिकेशन और डेटा को हटा दिया जाएगा."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"निकालें"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"मेहमान (आप)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"उपयोगकर्ता"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"अन्य उपयोगकर्ता"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"मेहमान मोड में की गई गतिविधि मिटाएं"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"मेहमान मोड से बाहर निकलने पर, मेहमान मोड में मौजूद डेटा और इस्तेमाल किए गए सभी ऐप्लिकेशन को मिटा दिया जाता है"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"मेहमान मोड की गतिविधि को मिटाना है?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"मेहमान के तौर पर ब्राउज़ किए गए इस सेशन में मौजूद डेटा और इस्तेमाल किए गए ऐप्लिकेशन को मिटा दिया जाएगा. इसके अलावा, आने वाले समय में हर बार मेहमान मोड से बाहर निकलने पर, उस दौरान की गई गतिविधियां मिटा दी जाएंगी"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"फ़ोन कॉल की सुविधा चालू करें"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"फ़ोन कॉल और मैसेज (एसएमएस) चालू करें"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"उपयोगकर्ता को हटाना"</string>
@@ -4518,7 +4521,7 @@
     <string name="usb_transcode_files_summary" msgid="307102635711961513">"इससे वीडियो, दूसरे कई और मीडिया प्लेयर पर भी चलेगा. हालांकि, उसकी क्वालिटी पर थोड़ा असर पड़ सकता है"</string>
     <string name="usb_use_photo_transfers_desc" msgid="7490250033610745765">"MTP समर्थित नहीं होने पर फ़ोटो या फ़ाइलें ट्रांसफर करें (PTP)"</string>
     <string name="usb_use_tethering" msgid="2897063414491670531">"यूएसबी टेदरिंग"</string>
-    <string name="usb_use_MIDI" msgid="8621338227628859789">"MIDI"</string>
+    <string name="usb_use_MIDI" msgid="8621338227628859789">"एमआईडीआई"</string>
     <string name="usb_use_MIDI_desc" msgid="6464135515868405143">"इस डिवाइस का उपयोग MIDI के रूप में करें"</string>
     <string name="usb_use" msgid="6783183432648438528">"यूएसबी का इस्तेमाल इसके लिए करें"</string>
     <string name="usb_default_label" msgid="3372838450371060750">"यूएसबी का डिफ़ॉल्ट कॉन्फ़िगरेशन"</string>
@@ -5376,7 +5379,7 @@
     <string name="sim_action_enable_sub_dialog_title" msgid="4003377033815971802">"क्या आपको <xliff:g id="CARRIER_NAME">%1$s</xliff:g> चालू करना है?"</string>
     <string name="sim_action_enable_sub_dialog_title_without_carrier_name" msgid="4842051610633654278">"क्या आप सिम चालू करना चाहते हैं?"</string>
     <string name="sim_action_switch_sub_dialog_title" msgid="9180969453358718635">"क्या आपको <xliff:g id="CARRIER_NAME">%1$s</xliff:g> पर स्विच करना है?"</string>
-    <string name="sim_action_switch_psim_dialog_title" msgid="5613177333235213024">"क्या आप सिम कार्ड पर स्विच करना चाहते हैं?"</string>
+    <string name="sim_action_switch_psim_dialog_title" msgid="5613177333235213024">"क्या आपको सिम कार्ड पर स्विच करना है?"</string>
     <string name="sim_action_switch_sub_dialog_mep_title" msgid="933856847099933004">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> का इस्तेमाल करना है?"</string>
     <string name="sim_action_switch_sub_dialog_text" msgid="2091834911153293004">"एक समय में सिर्फ़ एक सिम चालू हो सकता है.\n\n<xliff:g id="TO_CARRIER_NAME">%1$s</xliff:g> पर स्विच करने से आपके <xliff:g id="FROM_CARRIER_NAME">%2$s</xliff:g> की सेवा रद्द नहीं की जाएगी."</string>
     <string name="sim_action_switch_sub_dialog_text_downloaded" msgid="1396320209544698027">"एक समय में, डाउनलोड किया गया सिर्फ़ एक सिम चालू हो सकता है.\n\n<xliff:g id="TO_CARRIER_NAME">%1$s</xliff:g> पर स्विच करने से आपके <xliff:g id="FROM_CARRIER_NAME">%2$s</xliff:g> की सेवा रद्द नहीं की जाएगी."</string>
@@ -5394,8 +5397,8 @@
     <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"सिम बंद किया जा रहा है<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
     <string name="privileged_action_disable_fail_title" msgid="6689494935697043555">"मोबाइल और इंटरनेट सेवा देने वाली कंपनी का नेटवर्क बंद नहीं किया जा सकता"</string>
     <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"कोई गड़बड़ी हुई, जिसकी वजह से आपकी मोबाइल और इंटरनेट सेवा देने वाली कंपनी का नेटवर्क बंद नहीं किया जा सका."</string>
-    <string name="sim_action_enable_dsds_title" msgid="226508711751577169">"क्या आप दो सिम इस्तेमाल करना चाहते हैं?"</string>
-    <string name="sim_action_enable_dsds_text" msgid="970986559326263949">"इस डिवाइस में एक साथ दाे सिम चालू रह सकते हैं. अगर आप एक बार में एक सिम इस्तेमाल करना चाहते हैं, तो \"रहने दें\" पर टैप करें."</string>
+    <string name="sim_action_enable_dsds_title" msgid="226508711751577169">"क्या आपको दो सिम इस्तेमाल करने हैं?"</string>
+    <string name="sim_action_enable_dsds_text" msgid="970986559326263949">"इस डिवाइस में एक साथ दाे सिम चालू रह सकते हैं. अगर आपको एक बार में एक सिम इस्तेमाल करना है, तो \"रहने दें\" पर टैप करें."</string>
     <string name="sim_action_restart_title" msgid="7054617569121993825">"क्या आप डिवाइस को रीस्टार्ट करना चाहते हैं?"</string>
     <string name="sim_action_restart_text" msgid="8019300474703571013">"शुरू करने के लिए, अपने डिवाइस को रीस्टार्ट करें. इसके बाद, आप दूसरा सिम जोड़ सकते हैं."</string>
     <string name="sim_action_continue" msgid="1688813133152389943">"जारी रखें"</string>
@@ -5426,7 +5429,7 @@
     <string name="switch_sim_dialog_no_switch_title" msgid="809763410787744247">"चालू किया गया कोई सिम उपलब्ध नहीं है"</string>
     <string name="switch_sim_dialog_no_switch_text" msgid="7053939850026876088">"मोबाइल डेटा, कॉल से जुड़ी सुविधाएं, और मैसेज (एसएमएस) को बाद में इस्तेमाल करने के लिए, अपने नेटवर्क की सेटिंग पर जाएं"</string>
     <string name="sim_card_label" msgid="5632157635124050923">"सिम कार्ड"</string>
-    <string name="erase_sim_dialog_title" msgid="881253002169177016">"क्या आप डाउनलोड किए गए इस सिम को हमेशा के लिए मिटाना चाहते हैं?"</string>
+    <string name="erase_sim_dialog_title" msgid="881253002169177016">"क्या आपको डाउनलोड किए गए इस सिम को हमेशा के लिए मिटाना है?"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"इस सिम को मिटाने से, <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> की सेवा इस डिवाइस से हट जाती है.\n\nहालांकि, <xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> की सेवा रद्द नहीं की जाएगी."</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"मिटाएं"</string>
     <string name="erasing_sim" msgid="7877703231075699139">"सिम को हमेशा के लिए मिटाया जा रहा है…"</string>
@@ -5652,7 +5655,7 @@
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"ऐप्लिकेशन पिन करने की सुविधा का इस्तेमाल करें"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"डेवलपर के लिए सेटिंग और टूल की सुविधा का इस्तेमाल करें"</string>
     <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"प्रिंट करने की सेवा का इस्तेमाल करें"</string>
-    <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"कई उपयोगकर्ताओं को अनुमति दें"</string>
+    <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"एक से ज़्यादा उपयोगकर्ताओं को अनुमति दें"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"वॉयरलेस डीबगिंग का इस्तेमाल करें"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"ग्राफ़िक ड्राइवर की सेटिंग का इस्तेमाल करें"</string>
     <string name="battery_saver_main_switch_title" msgid="5072135547489779352">"बैटरी सेवर सुविधा का इस्तेमाल करें"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 62a051f..54db9e9 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -869,14 +869,14 @@
     <string name="bluetooth_device_context_connect_advanced" msgid="934657460643490773">"Opcije…"</string>
     <string name="bluetooth_menu_advanced" msgid="7633682234855216066">"Dodatne postavke"</string>
     <string name="bluetooth_advanced_titlebar" msgid="5369701494951467257">"Napredni Bluetooth"</string>
-    <string name="bluetooth_empty_list_bluetooth_off" msgid="316627049372961941">"Kada je Bluetooth uključen, uređaj može komunicirati s ostalim Bluetooth uređajima u blizini."</string>
+    <string name="bluetooth_empty_list_bluetooth_off" msgid="316627049372961941">"Kada je Bluetooth uključen, vaš uređaj može komunicirati s drugim Bluetooth uređajima u blizini."</string>
     <string name="bluetooth_scanning_on_info_message" msgid="6667723887545056976">"Kada je Bluetooth uključen, uređaj može komunicirati s ostalim Bluetooth uređajima u blizini.\n\nDa bi se poboljšala učinkovitost uređaja, aplikacije i usluge mogu tražiti uređaje u blizini u bilo kojem trenutku, čak i kada je Bluetooth isključen. Na taj se način mogu, na primjer, poboljšati značajke i usluge koje se temelje na lokaciji. To možete promijeniti u "<annotation id="link">"postavkama pretraživanja Bluetootha"</annotation>"."</string>
     <string name="ble_scan_notify_text" msgid="1358879010396045164">"Radi poboljšanja preciznosti lokacije aplikacije i usluge sustava i dalje mogu otkriti Bluetooth uređaje. To možete promijeniti u <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>postavkama traženja<xliff:g id="LINK_END_1">LINK_END</xliff:g>."</string>
     <string name="bluetooth_connect_failed" msgid="7892663424429584925">"Povezivanje nije uspjelo. Pokušajte ponovo."</string>
     <string name="device_details_title" msgid="1155622417516195481">"O uređaju"</string>
     <string name="bluetooth_device_mac_address" msgid="4873325074786732703">"Bluetooth adresa uređaja: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
     <string name="bluetooth_multuple_devices_mac_address" msgid="4974301550897923376">"Bluetooth adresa uređaja:\n<xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
-    <string name="bluetooth_unpair_dialog_title" msgid="6943633443716052995">"Zaboraviti uređaj?"</string>
+    <string name="bluetooth_unpair_dialog_title" msgid="6943633443716052995">"Želite li zaboraviti uređaj?"</string>
     <string name="remove_association_button" msgid="5004208145998061135">"Ukloni povezivanje"</string>
     <string name="bluetooth_companion_app_remove_association_dialog_title" msgid="1344518601377991897">"Prekinuti vezu s aplikacijom?"</string>
     <string name="bluetooth_unpair_dialog_body" product="default" msgid="4730377171981539265">"Vaš telefon više neće biti uparen s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
@@ -1451,15 +1451,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Čuvar zaslona"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Koristi čuvara zaslona"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Tijekom punjenja ili kada je na priključnoj stanici"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Bilo koje od navedenog"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Tijekom punjenja"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Kada je na priključnoj stanici"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nikada"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Isključeno"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Da biste kontrolirali događaje dok je telefon na priključnoj stanici i/ili dok miruje, uključite čuvar zaslona."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Kada pokrenuti"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Trenutačni čuvar zaslona"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Postavke"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatska svjetlina"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Aktivacija podizanjem"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ambijentalni zaslon"</string>
@@ -2121,7 +2118,7 @@
     <string name="no_applications" msgid="985069304755391640">"Nema aplikacija."</string>
     <string name="internal_storage" msgid="999496851424448809">"Unutarnja pohrana"</string>
     <string name="recompute_size" msgid="1098091228370999128">"Ponovni izračun veličine…"</string>
-    <string name="clear_data_dlg_title" msgid="180446967743732410">"Izbrisati podatke aplikacije?"</string>
+    <string name="clear_data_dlg_title" msgid="180446967743732410">"Želite li izbrisati podatke aplikacije?"</string>
     <string name="clear_data_dlg_text" msgid="3440011276559762619">"Podaci ove aplikacije, uključujući datoteke i postavke, trajno će se izbrisati s ovog uređaja"</string>
     <string name="dlg_ok" msgid="1421350367857960997">"U redu"</string>
     <string name="dlg_cancel" msgid="5164705061530774899">"Odustani"</string>
@@ -2306,7 +2303,7 @@
     <string name="vision_settings_suggestion_title" msgid="4689275412658803919">"Promijenite veličinu fonta"</string>
     <string name="screen_reader_category_title" msgid="5825700839731107803">"Čitač zaslona"</string>
     <string name="captions_category_title" msgid="574490148949400274">"Titlovi"</string>
-    <string name="audio_category_title" msgid="5283853679967605826">"Audiozapis"</string>
+    <string name="audio_category_title" msgid="5283853679967605826">"Zvuk"</string>
     <string name="general_category_title" msgid="6298579528716834157">"Općenito"</string>
     <string name="display_category_title" msgid="6638191682294461408">"Zaslon"</string>
     <string name="accessibility_color_and_motion_title" msgid="2323301706545305874">"Boja i pokret"</string>
@@ -2386,7 +2383,7 @@
     <string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"Da biste koristili značajku pristupačnosti, prijeđite s tri prsta prema gore od dna zaslona.\n\nDa biste prešli na neku drugu značajku, prijeđite s tri prsta prema gore i zadržite."</string>
     <string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"Shvaćam"</string>
     <string name="accessibility_shortcut_title" msgid="8125867833704517463">"Prečac za uslugu <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
-    <string name="accessibility_shortcut_edit_summary_software" msgid="6405629977940618205">"Gumb za Pristupačnost"</string>
+    <string name="accessibility_shortcut_edit_summary_software" msgid="6405629977940618205">"Gumb za pristupačnost"</string>
     <string name="accessibility_shortcut_edit_summary_software_gesture" msgid="5489284264414421286">"Pokret za pristupačnost"</string>
     <string name="accessibility_shortcut_edit_dialog_title_software_gesture" msgid="8078659880723370597">"Prijeđite s dva prsta prema gore"</string>
     <string name="accessibility_shortcut_edit_dialog_title_software_gesture_talkback" msgid="7422753388389160524">"Prijeđite s tri prsta prema gore"</string>
@@ -2471,7 +2468,7 @@
     <string name="accessibility_autoclick_medium_title" msgid="3134175117576834320">"Srednje"</string>
     <string name="accessibility_autoclick_medium_summary" msgid="1343390686514222871">"0,6 sekundi"</string>
     <string name="accessibility_autoclick_long_title" msgid="6799311820641687735">"Dugo"</string>
-    <string name="accessibility_autoclick_long_summary" msgid="3747153151313563637">"1 s"</string>
+    <string name="accessibility_autoclick_long_summary" msgid="3747153151313563637">"1 sekunda"</string>
     <string name="accessibility_autoclick_custom_title" msgid="4597792235546232038">"Prilagođeno"</string>
     <string name="accessibility_autoclick_shorter_desc" msgid="7631013255724544348">"Kraće"</string>
     <string name="accessibility_autoclick_longer_desc" msgid="2566025502981487443">"Dulje"</string>
@@ -3107,7 +3104,7 @@
     </plurals>
     <string name="emergency_tone_title" msgid="6673118505206685168">"Signal za hitne pozive"</string>
     <string name="emergency_tone_summary" msgid="2519776254708767388">"Postavite način ponašanja za hitni poziv"</string>
-    <string name="privacy_settings_title" msgid="6437057228255974577">"Sigurnosna kopija"</string>
+    <string name="privacy_settings_title" msgid="6437057228255974577">"Sigurnosno kopiranje"</string>
     <string name="backup_summary_state_on" msgid="9018954639693085240">"Uključeno"</string>
     <string name="backup_summary_state_off" msgid="5341339397224835909">"Isključeno"</string>
     <string name="backup_section_title" msgid="6539706829848457794">"Sigurnosna kopija i vraćanje"</string>
@@ -3195,7 +3192,7 @@
     <string name="preference_change_password_title" msgid="5465821666939825972">"Promijeni zaporku"</string>
     <string name="header_account_settings" msgid="1189339410278750008">"Postavke računa"</string>
     <string name="remove_account_label" msgid="4169490568375358010">"Ukloni račun"</string>
-    <string name="header_add_an_account" msgid="3919151542338822661">"Dodavanje računa"</string>
+    <string name="header_add_an_account" msgid="3919151542338822661">"Dodajte račun"</string>
     <string name="really_remove_account_title" msgid="253097435885652310">"Želite li ukloniti račun?"</string>
     <string name="really_remove_account_message" product="tablet" msgid="8893801622174947887">"Uklanjanjem ovog računa izbrisat će se sve njegove poruke, kontakti i ostali podaci s tabletnog računala!"</string>
     <string name="really_remove_account_message" product="default" msgid="1217810840427479274">"Uklanjanjem ovog računa izbrisat će se sve njegove poruke, kontakti i ostali podaci s telefona!"</string>
@@ -3444,8 +3441,15 @@
     <string name="user_adding_new_user" msgid="7439602720177181412">"Dodavanje novog korisnika…"</string>
     <string name="user_delete_user_description" msgid="7764153465503821011">"Izbriši korisnika"</string>
     <string name="user_delete_button" msgid="3833498650182594653">"Izbriši"</string>
-    <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Sve aplikacije i podaci u ovoj sesiji bit će izbrisani."</string>
+    <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Izbrisat će se sve aplikacije i podaci u ovoj sesiji."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Ukloni"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gost (vi)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Korisnici"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Drugi korisnici"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Izbriši aktivnost gostujuće sesije"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Izbriši sve aplikacije i podatke gostujuće sesije prilikom izlaska iz načina rada za goste"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Izbrisati aktivnost gosta?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Aplikacije i podaci iz ove gostujuće sesije izbrisat će se odmah, a sve buduće aktivnosti gostujuće sesije izbrisat će se svaki put kad napustite način rada za goste."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Uključivanje telefonskih poziva"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Uključivanje telefonskih poziva i SMS-a"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Brisanje korisnika"</string>
@@ -4257,7 +4261,7 @@
     <string name="zen_calls_summary_contacts_repeat" msgid="2276432091940405376">"Kontakti i ponovni pozivatelji"</string>
     <string name="zen_calls_summary_repeat_only" msgid="7748352153193832632">"Samo ponovni pozivatelji"</string>
     <string name="zen_mode_none_calls" msgid="2047166006414016327">"Nitko"</string>
-    <string name="zen_mode_none_messages" msgid="1386626352943268342">"Ništa"</string>
+    <string name="zen_mode_none_messages" msgid="1386626352943268342">"Nitko"</string>
     <string name="zen_mode_alarms" msgid="5989343060100771099">"Alarmi"</string>
     <string name="zen_mode_alarms_summary" msgid="3388679177457223967">"Alarmi odbrojavanja, sata, sigurnosnih sustava i drugih aplikacija"</string>
     <string name="zen_mode_alarms_list" msgid="334782233067365405">"alarmi"</string>
@@ -5227,7 +5231,7 @@
     </plurals>
     <string name="autofill_keywords" msgid="8598763328489346438">"automatsko, popunjavanje, automatsko popunjavanje, zaporka"</string>
     <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Provjerite je li ova aplikacija pouzdana&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google automatsko popunjavanje&gt;%1$s&lt;/xliff:g&gt; upotrebljava sadržaj na zaslonu za procjenu onoga što se može automatski popuniti."</string>
-    <string name="debug_autofill_category" msgid="5998163555428196185">"Automatski popuni"</string>
+    <string name="debug_autofill_category" msgid="5998163555428196185">"Automatsko popunjavanje"</string>
     <string name="autofill_logging_level_title" msgid="3733958845861098307">"Razina zapisivanja"</string>
     <string name="autofill_max_partitions" msgid="7342195529574406366">"Maksimalan broj zahtjeva po sesiji"</string>
     <string name="autofill_max_visible_datasets" msgid="4970201981694392229">"Maksimalan broj vidljivih skupova podataka"</string>
@@ -5582,7 +5586,7 @@
     <string name="forget_passpoint_dialog_message" msgid="2433875063907365760">"Možda ćete izgubiti pristup preostalom vremenu ili podacima. Prije uklanjanja provjerite s davateljem usluga."</string>
     <string name="keywords_content_capture" msgid="7802155522681936956">"snimanje sadržaja, sadržaj aplikacija"</string>
     <string name="content_capture" msgid="868372905432812238">"Sadržaj aplikacije"</string>
-    <string name="content_capture_summary" msgid="49720773699715531">"Dopusti aplikacijama da šalju sadržaj sustavu Android"</string>
+    <string name="content_capture_summary" msgid="49720773699715531">"Dopustite aplikacijama da šalju sadržaj sustavu Android"</string>
     <string name="capture_system_heap_dump_title" msgid="9210974110606886455">"Izradi snimku memorije sustava"</string>
     <string name="reboot_with_mte_title" msgid="9167242803901899693">"Ponovno pokretanje uz MTE"</string>
     <string name="reboot_with_mte_message" msgid="7675836625682561153">"Sustav će se ponovno pokrenuti i omogućiti eksperimentiranje s proširenjima za označavanje memorije (MTE). MTE može imati negativan učinak na izvedbu i stabilnost sustava. Poništit će se prilikom naknadnog ponovnog pokretanja."</string>
@@ -5741,7 +5745,7 @@
     <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Upotreba Wi‑Fi žarišne točke"</string>
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Upotrijebi prikvačivanje aplikacije"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"Upotreba opcija za razvojne programere"</string>
-    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Upotreba usluge ispisa"</string>
+    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Koristi uslugu ispisa"</string>
     <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Dopusti više korisnika"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Upotreba bežičnog otklanjanja pogrešaka"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Upotreba preferencija upravlj. programa za grafiku"</string>
@@ -5749,7 +5753,7 @@
     <string name="do_not_disturb_main_switch_title_on" msgid="6965566556539821313">"Isključi odmah"</string>
     <string name="do_not_disturb_main_switch_title_off" msgid="7088088515823752545">"Uključi odmah"</string>
     <string name="night_light_main_switch_title" msgid="3428298022467805219">"Upotreba noćnog svjetla"</string>
-    <string name="nfc_main_switch_title" msgid="6295839988954817432">"Upotreba NFC-a"</string>
+    <string name="nfc_main_switch_title" msgid="6295839988954817432">"Koristi NFC"</string>
     <string name="adaptive_battery_main_switch_title" msgid="3127477920505485813">"Upotreba adaptivne baterije"</string>
     <string name="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"Upotreba prilagodljive svjetline"</string>
     <string name="wifi_calling_main_switch_title" msgid="4070224008346815634">"Upotreba Wi-Fi poziva"</string>
@@ -5771,7 +5775,7 @@
     <string name="enable_2g_summary_disabled_carrier" msgid="8141118453219482762">"<xliff:g id="CARRIER_NAME_2G">%1$s</xliff:g> zahtijeva dostupnost 2G tehnologije"</string>
     <string name="app_info_all_services_label" msgid="3600929226735860271">"Sve usluge"</string>
     <string name="show_clip_access_notification" msgid="7782300987639778542">"Prikaži pristup međuspremniku"</string>
-    <string name="show_clip_access_notification_summary" msgid="474090757777203207">"Prikaži poruku kad aplikacije pristupe tekstu, slikama ili drugom kopiranom sadržaju"</string>
+    <string name="show_clip_access_notification_summary" msgid="474090757777203207">"Primite poruku kad aplikacije pristupe tekstu, slikama ili drugom kopiranom sadržaju"</string>
     <string name="all_apps" msgid="3054120149509114789">"Sve aplikacije"</string>
     <string name="request_manage_bluetooth_permission_dont_allow" msgid="8798061333407581300">"Nemoj dopustiti"</string>
     <string name="uwb_settings_title" msgid="8578498712312002231">"Ultraširokopojasno povezivanje (UWB)"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 9a4a671..f72ca61 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Képernyővédő"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Képernyővédő használata"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Töltés és dokkolás közben"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Bármelyik"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Töltés közben"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Dokkolt állapotban"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Soha"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Ki"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"A képernyővédő bekapcsolásával beállíthatja, hogy mit csináljon a telefon dokkolt, illetve alvó állapotban."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Kezdés ideje"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Jelenlegi képernyővédő"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Beállítások"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatikus fényerő"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Felébresztéshez emelje meg"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Környezeti kijelző"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Törlés"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"A munkamenetben található összes alkalmazás és adat törlődni fog."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Eltávolítás"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Vendég (Ön)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Felhasználók"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Egyéb felhasználók"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Vendégtevékenységek törlése"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Összes vendégalkalmazás és -adat törlése a vendég módból való kilépéskor"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Törli a vendégtevékenységeket?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Az ebből a vendégmunkamenetből származó alkalmazások és adatok azonnal törlődnek, és az összes jövőbeli, vendég módban végzett tevékenység törlődik minden olyan alkalomkor, amikor kilép a vendég módból"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Hívások engedélyezése"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Hívások és SMS-ek engedélyezése"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Felhasználó törlése"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 3c4152c..5289bb0 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -101,7 +101,7 @@
     <string name="progress_scanning" msgid="2564746192843011826">"Որոնում"</string>
     <string name="bluetooth_no_devices_found" msgid="7704539337219953182">"Bluetooth սարքեր մոտակայքում չեն գտնվել:"</string>
     <string name="bluetooth_notif_ticker" msgid="209515545257862858">"Bluetooth զուգավորման հայց"</string>
-    <string name="bluetooth_notif_title" msgid="1196532269131348647">"Զուգավորման հայց"</string>
+    <string name="bluetooth_notif_title" msgid="1196532269131348647">"Զուգակցման հայտ"</string>
     <string name="bluetooth_notif_message" msgid="5584717784198086653">"Հպեք` <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի հետ զուգակցելու համար:"</string>
     <string name="bluetooth_show_received_files" msgid="685424727760622632">"Ստացված ֆայլեր"</string>
     <string name="bluetooth_devices_card_off_title" msgid="1320149821945129127">"Bluetooth-ն անջատված է"</string>
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Էկրանապահ"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Օգտագործել էկրանապահ"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Լիցքավորման ընթացքում կամ դոկ-կայանում"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Երկու դեպքում էլ"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Լիցքավորման ընթացքում"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Դոկ-կայանում"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Երբեք"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Անջատված է"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Հեռախոսը դոկ-կայանում և քնի ռեժիմում վերահսկելու համար միացրեք էկրանապահը։"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Երբ սկսել"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Ընթացիկ էկրանապահ"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Կարգավորումներ"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Ավտոմատ պայծառություն"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Բարձրացնել՝ միանալու համար"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ամբիենտ էկրան"</string>
@@ -1741,7 +1738,7 @@
     <string name="restore_default_apn" msgid="6596048535642130689">"Կանխադրված APN կարգավորումների վերականգնում:"</string>
     <string name="menu_restore" msgid="4310539620115151551">"Վերականգնել կանխադրվածները"</string>
     <string name="restore_default_apn_completed" msgid="5167505087078340256">"Սկզբնական APN կարգավորումների վերակարգավորումն ավարտված է:"</string>
-    <string name="reset_dashboard_title" msgid="7423200250697886918">"Վերակայման ընտրանքներ"</string>
+    <string name="reset_dashboard_title" msgid="7423200250697886918">"Զրոյացման կարգավորումներ"</string>
     <string name="reset_dashboard_summary" msgid="4390780188264852956">"Ցանցի, հավելվածների և սարքի կարգավորումները հնարավոր է զրոյացնել"</string>
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Հավելվածների կարգավորումները կարելի է զրոյացնել"</string>
     <string name="reset_network_title" msgid="1395494440355807616">"Զրոյացնել Wi-Fi-ի, բջջային թրաֆիկի և Bluetooth-ի կարգավորումները"</string>
@@ -1861,14 +1858,14 @@
     <string name="location_category_recent_location_access" msgid="2558063524482178146">"Վերջին օգտագործումը"</string>
     <string name="location_recent_location_access_see_all" msgid="4203102419355323325">"Տեսնել բոլորը"</string>
     <string name="location_recent_location_access_view_details" msgid="5803264082558504544">"Մանրամասն"</string>
-    <string name="location_no_recent_apps" msgid="6814206631456177033">"Վերջին ժամանակաշրջանում հավելվածները տեղադրության հարցում չեն արել"</string>
+    <string name="location_no_recent_apps" msgid="6814206631456177033">"Վերջերս ոչ մի հավելված տեղադրության հարցում չի արել"</string>
     <string name="location_no_recent_accesses" msgid="6031735777805464247">"Ոչ մի հավելված չի օգտագործել տեղորոշումը"</string>
     <string name="location_high_battery_use" msgid="4277318891200626524">"Մարտկոցի շատ օգտագործում"</string>
     <string name="location_low_battery_use" msgid="5218950289737996431">"Մարտկոցի ցածր սպառում"</string>
     <string name="location_scanning_wifi_always_scanning_title" msgid="5004781272733434794">"Wi‑Fi ցանցերի որոնում"</string>
     <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Թույլ տալ հավելվածներին և ծառայություններին որոնել Wi‑Fi ցանցեր, նույնիսկ երբ Wi-Fi-ն անջատված է: Դա կարող է բարելավել տեղորոշում օգտագործող գործառույթների և ծառայությունների աշխատանքը։"</string>
     <string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"Bluetooth սարքերի որոնում"</string>
-    <string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Թույլ տալ հավելվածներին և ծառայություններին որոնել մոտակայքում գտնվող սարքեր նույնիսկ երբ Bluetooth-ն անջատված է: Դա կարող է բարելավել տեղորոշում օգտագործող գործառույթների և ծառայությունների աշխատանքը:"</string>
+    <string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Թույլ տալ հավելվածներին և ծառայություններին որոնել մոտակայքում գտնվող սարքեր, նույնիսկ երբ Bluetooth-ն անջատված է: Դա կարող է բարելավել տեղորոշում օգտագործող գործառույթների և ծառայությունների աշխատանքը:"</string>
     <string name="location_services_preference_title" msgid="604317859531782159">"Տեղորոշման ծառայություններ"</string>
     <string name="location_services_screen_title" msgid="5640002489976602476">"Տեղորոշման ծառայություններ"</string>
     <string name="managed_profile_location_services" msgid="8172092734138341880">"Տեղորոշման ծառայություններ աշխատանքի համար"</string>
@@ -3398,8 +3395,15 @@
     <string name="user_adding_new_user" msgid="7439602720177181412">"Նոր օգտատիրոջ ավելացում…"</string>
     <string name="user_delete_user_description" msgid="7764153465503821011">"Ջնջել օգտատիրոջը"</string>
     <string name="user_delete_button" msgid="3833498650182594653">"Ջնջել"</string>
-    <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Այս աշխատաշրջանի բոլոր ծրագրերն ու տվյալները կջնջվեն:"</string>
+    <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Այս աշխատաշրջանի բոլոր հավելվածներն ու տվյալները կջնջվեն:"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Հեռացնել"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Հյուր (դուք)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Օգտատերեր"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Այլ օգտատերեր"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Ջնջել հյուրի պատմությունը"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Դուրս գալիս ջնջել հյուրի աշխատաշրջանի բոլոր հավելվածներն ու տվյալները"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Ջնջե՞լ հյուրի պատմությունը"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Հյուրի այս աշխատաշրջանի հավելվածներն ու տվյալները հիմա կջնջվեն։ Հետագայում պատմությունը կջնջվի ամեն անգամ հյուրի ռեժիմից դուրս գալիս։"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Միացնել հեռախոսազանգերը"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Միացնել զանգերն ու SMS-ները"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Ջնջել օգտատիրոջը"</string>
@@ -3429,7 +3433,7 @@
     <string name="nfc_payment_default" msgid="3769788268378614608">"Վճարումների հիմնական հավելված"</string>
     <string name="nfc_payment_default_not_set" msgid="6471905683119084622">"Կարգավորված չէ"</string>
     <string name="nfc_payment_app_and_desc" msgid="2607417639227030398">"<xliff:g id="APP">%1$s</xliff:g> - <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
-    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Օգտագործեք կանխադրված վճարային հավելվածը"</string>
+    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Օգտագործել կանխադրված վճարային հավելվածը"</string>
     <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Օգտագործեք կանխադրված վճարային հավելվածը"</string>
     <string name="nfc_payment_favor_default" msgid="4508491832174644772">"Միշտ"</string>
     <string name="nfc_payment_favor_open" msgid="8554643344050373346">"Եթե ուրիշ վճարային հավելված բացված չէ"</string>
@@ -3921,7 +3925,7 @@
     <string name="lock_screen_notifs_redact_work_summary" msgid="3238238380405430156">"Ցույց տալ աշխատանքային պրոֆիլի գաղտնի տվյալները կողպէկրանին"</string>
     <string name="lock_screen_notifications_summary_show" msgid="6540443483088311328">"Ծանուցումները ցույց տալ ամբողջությամբ"</string>
     <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Կոնֆիդենցիալ տվյալները ցույց տալ միայն ապակողպված էկրանին"</string>
-    <string name="lock_screen_notifications_summary_disable" msgid="3388290397947365744">"Չցուցադրել ծանուցումներ"</string>
+    <string name="lock_screen_notifications_summary_disable" msgid="3388290397947365744">"Ցույց չտալ ծանուցումներ"</string>
     <string name="lock_screen_notifications_interstitial_message" msgid="4688399629301178487">"Կարգավորեք ծանուցումների ցուցադրումը կողպէկրանին"</string>
     <string name="lock_screen_notifications_interstitial_title" msgid="1360388192096354315">"Կողպէկրան"</string>
     <string name="lock_screen_notifications_summary_show_profile" msgid="8373401288962523946">"Ցույց տալ աշխատանքային ծանուցումն ամբողջությամբ"</string>
@@ -4527,7 +4531,7 @@
     <string name="usb_pref" msgid="8521832005703261700">"USB"</string>
     <string name="usb_preference" msgid="5084550082591493765">"USB-ի կարգավորումներ"</string>
     <string name="usb_control_title" msgid="1946791559052157693">"USB-ն վերահսկող սարքը"</string>
-    <string name="usb_control_host" msgid="7404215921555021871">"Միացված սարք"</string>
+    <string name="usb_control_host" msgid="7404215921555021871">"Միացված սարքը"</string>
     <string name="usb_control_device" msgid="527916783743021577">"Այս սարքը"</string>
     <string name="usb_switching" msgid="3654709188596609354">"Սպասեք…"</string>
     <string name="usb_switching_failed" msgid="5721262697715454137">"Չհաջողվեց փոխարկել"</string>
@@ -5651,7 +5655,7 @@
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Օգտագործել հավելվածի ամրացումը"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"Օգտագործել մշակողի ընտրանքները"</string>
     <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Օգտագործել տպման ծառայությունը"</string>
-    <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Թույլատրեք մեկից ավելի օգտատերեր"</string>
+    <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Թույլատրել մեկից ավելի օգտատերեր"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Օգտագործել անլար վրիպազերծումը"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Օգտագործել գրաֆիկական սարքավարի կարգավորումները"</string>
     <string name="battery_saver_main_switch_title" msgid="5072135547489779352">"Օգտագործել մարտկոցի տնտեսումը"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 17f1d27..2bd034c 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -100,9 +100,9 @@
     <string name="bluetooth_device" msgid="2217973503732544291">"Perangkat Bluetooth tak bernama"</string>
     <string name="progress_scanning" msgid="2564746192843011826">"Menelusuri"</string>
     <string name="bluetooth_no_devices_found" msgid="7704539337219953182">"Tak ada prngkt Bluetooth terdekat."</string>
-    <string name="bluetooth_notif_ticker" msgid="209515545257862858">"Permintaan penyandingan bluetooth"</string>
-    <string name="bluetooth_notif_title" msgid="1196532269131348647">"Permintaan penyandingan"</string>
-    <string name="bluetooth_notif_message" msgid="5584717784198086653">"Ketuk untuk menyandingkan dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_notif_ticker" msgid="209515545257862858">"Permintaan penyambungan Bluetooth"</string>
+    <string name="bluetooth_notif_title" msgid="1196532269131348647">"Permintaan penyambungan"</string>
+    <string name="bluetooth_notif_message" msgid="5584717784198086653">"Ketuk untuk menyambungkan dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_show_received_files" msgid="685424727760622632">"File yang diterima"</string>
     <string name="bluetooth_devices_card_off_title" msgid="1320149821945129127">"Bluetooth nonaktif"</string>
     <string name="bluetooth_devices_card_off_summary" msgid="2276527382891105858">"Ketuk untuk mengaktifkannya"</string>
@@ -823,7 +823,7 @@
     <string name="bluetooth_enter_passkey_other_device" msgid="8270426446247344709">"Anda mungkin juga perlu mengetikkan sandi ini ke perangkat lain."</string>
     <string name="bluetooth_confirm_passkey_msg" msgid="327192310468680072">"Untuk menyandingkan dengan:&lt;br&gt;&lt;b&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/b&gt;&lt;br&gt;&lt;br&gt;Pastikan bahwa perangkat tersebut menampilkan kode sandi:&lt;br&gt;&lt;b&gt;<xliff:g id="PASSKEY">%2$s</xliff:g>&lt;/b&gt;"</string>
     <string name="bluetooth_paring_group_msg" msgid="4609515924670823316">"Konfirmasikan agar dapat tersambung dengan kumpulan perangkat terkoordinasi"</string>
-    <string name="bluetooth_incoming_pairing_msg" msgid="1068123527866596779">"Dari:&lt;br&gt;&lt;b&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/b&gt;&lt;br&gt;&lt;br&gt;Sandingkan dengan perangkat ini?"</string>
+    <string name="bluetooth_incoming_pairing_msg" msgid="1068123527866596779">"Dari:&lt;br&gt;&lt;b&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/b&gt;&lt;br&gt;&lt;br&gt;Sambungkan dengan perangkat ini?"</string>
     <string name="bluetooth_display_passkey_pin_msg" msgid="8672803845151786521">"Untuk menyandingkan dengan:<xliff:g id="BOLD1_0">&lt;br&gt;&lt;b&gt;</xliff:g><xliff:g id="DEVICE_NAME">%1$s</xliff:g><xliff:g id="END_BOLD1">&lt;/b&gt;&lt;br&gt;&lt;br&gt;</xliff:g>Ketikkan:<xliff:g id="BOLD2_1">&lt;br&gt;&lt;b&gt;</xliff:g><xliff:g id="PASSKEY">%2$s</xliff:g><xliff:g id="END_BOLD2">&lt;/b&gt;</xliff:g>, kemudian tekan Kembali atau Enter."</string>
     <string name="bluetooth_pairing_shares_phonebook" msgid="4329325125260724843">"Izinkan akses ke kontak dan histori panggilan Anda"</string>
     <string name="bluetooth_error_title" msgid="2284738188253690278"></string>
@@ -844,7 +844,7 @@
     <string name="bluetooth_preference_no_found_devices" msgid="1331122763066030155">"Perangkat tak tersedia"</string>
     <string name="bluetooth_device_context_connect" msgid="4913860372216815855">"Hubungkan"</string>
     <string name="bluetooth_device_context_disconnect" msgid="4464167389972513232">"Putuskan koneksi"</string>
-    <string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"Sandingkan &amp; sambungkan"</string>
+    <string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"Sambungkan &amp; hubungkan"</string>
     <string name="bluetooth_device_context_unpair" msgid="7525735305244087162">"Menghapus penyandingan"</string>
     <string name="bluetooth_device_context_disconnect_unpair" msgid="2001359431289794561">"Putuskan &amp; lepaskan pasangan"</string>
     <string name="bluetooth_device_context_connect_advanced" msgid="934657460643490773">"Opsi…"</string>
@@ -1082,7 +1082,7 @@
     <string name="wifi_use_system_certs" msgid="5587866698144996931">"Gunakan sertifikat sistem"</string>
     <string name="wifi_do_not_provide_eap_user_cert" msgid="6336636553673065145">"Jangan berikan"</string>
     <string name="wifi_do_not_validate_eap_server" msgid="4673867078988209732">"Jangan validasi"</string>
-    <string name="wifi_trust_on_first_use" msgid="7488431582505858774">"Percayai pada Penggunaan Pertama"</string>
+    <string name="wifi_trust_on_first_use" msgid="7488431582505858774">"Percayai pada penggunaan pertama"</string>
     <string name="wifi_ssid_too_long" msgid="5961719058705013875">"Nama jaringan terlalu panjang."</string>
     <string name="wifi_no_domain_warning" msgid="1452133316532366772">"Domain harus ditentukan."</string>
     <string name="wifi_no_user_cert_warning" msgid="8466376918835248956">"Sertifikat diwajibkan."</string>
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Screensaver"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Gunakan screensaver"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Saat mengisi baterai atau dipasang ke dok"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Keduanya"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Saat mengisi baterai"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Selagi dipasang ke dok"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Tidak pernah"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Mati"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Untuk mengontrol yang terjadi saat ponsel dipasang ke dok dan/atau sedang tidur, aktifkan screen saver."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Waktu mulai"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Screensaver saat ini"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Setelan"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Kecerahan otomatis"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Angkat untuk membangunkan"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Tampilan standby"</string>
@@ -1866,9 +1863,9 @@
     <string name="location_high_battery_use" msgid="4277318891200626524">"Penggunaan baterai tinggi"</string>
     <string name="location_low_battery_use" msgid="5218950289737996431">"Penggunaan baterai rendah"</string>
     <string name="location_scanning_wifi_always_scanning_title" msgid="5004781272733434794">"Pemindaian Wi-Fi"</string>
-    <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Izinkan aplikasi dan layanan untuk memindai jaringan Wi-Fi kapan saja, meski Wi-Fi nonaktif. Ini dapat dilakukan, misalnya, untuk meningkatkan kualitas fitur dan layanan berbasis lokasi."</string>
+    <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Izinkan aplikasi dan layanan untuk memindai jaringan Wi-Fi kapan saja, bahkan saat Wi-Fi nonaktif. Ini dapat dilakukan, misalnya, untuk meningkatkan kualitas fitur dan layanan berbasis lokasi."</string>
     <string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"Pemindaian Bluetooth"</string>
-    <string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Izinkan aplikasi dan layanan untuk memindai perangkat di sekitar kapan saja, meski Bluetooth nonaktif. Ini dapat dilakukan, misalnya, untuk meningkatkan kualitas fitur dan layanan berbasis lokasi."</string>
+    <string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Izinkan aplikasi dan layanan untuk memindai perangkat di sekitar kapan saja, bahkan saat Bluetooth nonaktif. Ini dapat dilakukan, misalnya, untuk meningkatkan kualitas fitur dan layanan berbasis lokasi."</string>
     <string name="location_services_preference_title" msgid="604317859531782159">"Layanan lokasi"</string>
     <string name="location_services_screen_title" msgid="5640002489976602476">"Layanan lokasi"</string>
     <string name="managed_profile_location_services" msgid="8172092734138341880">"Layanan lokasi untuk profil kerja"</string>
@@ -2195,7 +2192,7 @@
     <string name="hardkeyboard_category" msgid="8729780593378161071">"Setelan keyboard fisik"</string>
     <string name="auto_punctuate_summary" msgid="3549190848611386748">"Tekan Spasi dua kali untuk memasukkan \".\""</string>
     <string name="show_password" msgid="7101900779571040117">"Tampilkan sandi"</string>
-    <string name="show_password_summary" msgid="9025960283785111619">"Tampilkan karakter sejenak saat Anda mengetik"</string>
+    <string name="show_password_summary" msgid="9025960283785111619">"Menampilkan karakter sejenak saat Anda mengetik"</string>
     <string name="spellchecker_security_warning" msgid="2016059050608271820">"Pemeriksa ejaan ini mungkin dapat mengumpulkan semua teks yang Anda ketik, termasuk data pribadi seperti sandi dan nomor kartu kredit. Pemeriksa ejaan ini berasal dari aplikasi <xliff:g id="SPELLCHECKER_APPLICATION_NAME">%1$s</xliff:g>. Gunakan pemeriksa ejaan ini?"</string>
     <string name="spellchecker_quick_settings" msgid="6449414356743946577">"Setelan"</string>
     <string name="spellchecker_language" msgid="8905487366580285282">"Bahasa"</string>
@@ -2689,7 +2686,7 @@
     <string name="manager_battery_usage_restricted_summary" msgid="8324695640704416905">"Batasi penggunaan baterai saat di latar belakang. Aplikasi mungkin tidak berfungsi sesuai harapan. Notifikasi mungkin tertunda."</string>
     <string name="manager_battery_usage_footer" msgid="2635906573922553766">"Mengubah cara aplikasi menggunakan baterai dapat memengaruhi performanya."</string>
     <string name="manager_battery_usage_footer_limited" msgid="5180776148877306780">"Aplikasi ini memerlukan penggunaan baterai <xliff:g id="STATE">%1$s</xliff:g>."</string>
-    <string name="manager_battery_usage_unrestricted_only" msgid="3646162131339418216">"tak terbatas"</string>
+    <string name="manager_battery_usage_unrestricted_only" msgid="3646162131339418216">"tanpa batasan"</string>
     <string name="manager_battery_usage_optimized_only" msgid="7121785281913056432">"dioptimalkan"</string>
     <string name="manager_battery_usage_link_a11y" msgid="374918091821438564">"Pelajari lebih lanjut opsi penggunaan baterai"</string>
     <string name="device_screen_usage" msgid="1011630249648289909">"Penggunaan layar sejak pengisian baterai penuh terakhir"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Hapus"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Semua aplikasi dan data dalam sesi ini akan dihapus."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Hapus"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Tamu (Anda)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Pengguna"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Pengguna lainnya"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Hapus aktivitas tamu"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Hapus semua aplikasi dan data tamu saat keluar dari mode tamu"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Hapus aktivitas tamu?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Aplikasi dan data dari sesi tamu ini akan dihapus sekarang, dan semua aktivitas tamu mendatang akan dihapus setiap kali Anda keluar dari mode tamu"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Aktifkan panggilan telepon"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Aktifkan panggilan telepon &amp; SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Hapus pengguna"</string>
@@ -3418,7 +3422,7 @@
     <string name="user_copy_apps_menu_title" msgid="5354300105759670300">"Instal aplikasi yang tersedia"</string>
     <string name="nfc_payment_settings_title" msgid="2043139180030485500">"Pembayaran nirsentuh"</string>
     <string name="nfc_default_payment_settings_title" msgid="2150504446774382261">"Aplikasi pembayaran default"</string>
-    <string name="nfc_default_payment_footer" msgid="978535088340021360">"Untuk membayar dengan aplikasi pembayaran, tempelkan sisi belakang perangkat ke terminal pembayaran"</string>
+    <string name="nfc_default_payment_footer" msgid="978535088340021360">"Untuk membayar dengan aplikasi pembayaran, dekatkan bagian belakang perangkat ke terminal pembayaran"</string>
     <string name="nfc_more_details" msgid="1700713533074275233">"Pelajari lebih lanjut"</string>
     <string name="nfc_default_payment_workapp_confirmation_title" msgid="746921251872504687">"Setel aplikasi kerja sebagai aplikasi pembayaran default?"</string>
     <string name="nfc_default_payment_workapp_confirmation_message_title" msgid="1533022606333010329">"Untuk membayar dengan aplikasi kerja:"</string>
@@ -4531,7 +4535,7 @@
     <string name="usb_control_device" msgid="527916783743021577">"Perangkat ini"</string>
     <string name="usb_switching" msgid="3654709188596609354">"Mengalihkan …"</string>
     <string name="usb_switching_failed" msgid="5721262697715454137">"Tidak dapat beralih"</string>
-    <string name="usb_summary_charging_only" msgid="678095599403565146">"Mengisi baterai perangkat ini"</string>
+    <string name="usb_summary_charging_only" msgid="678095599403565146">"Daya perangkat sedang diisi"</string>
     <string name="usb_summary_power_only" msgid="4901734938857822887">"Mengisi daya perangkat yang terhubung"</string>
     <string name="usb_summary_file_transfers" msgid="5498487271972556431">"Transfer file"</string>
     <string name="usb_summary_tether" msgid="2554569836525075702">"Tethering USB"</string>
@@ -5138,7 +5142,7 @@
       <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> sandi</item>
     </plurals>
     <string name="autofill_keywords" msgid="8598763328489346438">"otomatis, isi, isi otomatis, sandi"</string>
-    <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Pastikan Anda memercayai aplikasi ini&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google IsiOtomatis&gt;%1$s&lt;/xliff:g&gt; menggunakan item yang ada di layar untuk menentukan item apa saja yang dapat diisi otomatis."</string>
+    <string name="autofill_confirmation_message" msgid="4888767934273494272">"&lt;b&gt;Pastikan Anda memercayai aplikasi ini&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Isi Otomatis Google&gt;%1$s&lt;/xliff:g&gt; menggunakan item yang ada di layar untuk menentukan item apa saja yang dapat diisi otomatis."</string>
     <string name="debug_autofill_category" msgid="5998163555428196185">"Isi Otomatis"</string>
     <string name="autofill_logging_level_title" msgid="3733958845861098307">"Level logging"</string>
     <string name="autofill_max_partitions" msgid="7342195529574406366">"Permintaan maks per sesi"</string>
@@ -5374,7 +5378,7 @@
     <string name="see_less" msgid="2642392725363552793">"Lihat lebih sedikit"</string>
     <string name="sim_action_enable_sub_dialog_title" msgid="4003377033815971802">"Aktifkan <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
     <string name="sim_action_enable_sub_dialog_title_without_carrier_name" msgid="4842051610633654278">"Aktifkan SIM?"</string>
-    <string name="sim_action_switch_sub_dialog_title" msgid="9180969453358718635">"Alihkan ke <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+    <string name="sim_action_switch_sub_dialog_title" msgid="9180969453358718635">"Beralih ke <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
     <string name="sim_action_switch_psim_dialog_title" msgid="5613177333235213024">"Beralih menggunakan kartu SIM?"</string>
     <string name="sim_action_switch_sub_dialog_mep_title" msgid="933856847099933004">"Gunakan <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
     <string name="sim_action_switch_sub_dialog_text" msgid="2091834911153293004">"Hanya satu SIM yang dapat diaktifkan pada satu waktu.\n\nBeralih ke <xliff:g id="TO_CARRIER_NAME">%1$s</xliff:g> tidak akan membatalkan layanan <xliff:g id="FROM_CARRIER_NAME">%2$s</xliff:g>."</string>
@@ -5491,7 +5495,7 @@
     <string name="forget_passpoint_dialog_message" msgid="2433875063907365760">"Anda dapat kehilangan akses ke waktu atau data apa pun yang tersisa. Hubungi penyedia Anda sebelum menghapus."</string>
     <string name="keywords_content_capture" msgid="7802155522681936956">"gambar konten, konten aplikasi"</string>
     <string name="content_capture" msgid="868372905432812238">"Konten aplikasi"</string>
-    <string name="content_capture_summary" msgid="49720773699715531">"Izinkan aplikasi mengirimkan konten ke sistem Android"</string>
+    <string name="content_capture_summary" msgid="49720773699715531">"Mengizinkan aplikasi mengirimkan konten ke sistem Android"</string>
     <string name="capture_system_heap_dump_title" msgid="9210974110606886455">"Ambil heap dump sistem"</string>
     <string name="reboot_with_mte_title" msgid="9167242803901899693">"Mulai ulang dengan MTE"</string>
     <string name="reboot_with_mte_message" msgid="7675836625682561153">"Sistem akan memulai ulang dan mengizinkan eksperimen dengan Memory Tagging Extension (MTE). MTE dapat berdampak negatif pada performa dan stabilitas sistem. Akan direset pada mulai ulang berikutnya."</string>
@@ -5680,7 +5684,7 @@
     <string name="enable_2g_summary_disabled_carrier" msgid="8141118453219482762">"<xliff:g id="CARRIER_NAME_2G">%1$s</xliff:g> mengharuskan jaringan 2G tersedia"</string>
     <string name="app_info_all_services_label" msgid="3600929226735860271">"Semua Layanan"</string>
     <string name="show_clip_access_notification" msgid="7782300987639778542">"Tampilkan akses papan klip"</string>
-    <string name="show_clip_access_notification_summary" msgid="474090757777203207">"Tampilkan pesan saat aplikasi mengakses teks, gambar, atau konten lainnya yang telah Anda salin"</string>
+    <string name="show_clip_access_notification_summary" msgid="474090757777203207">"Menampilkan pesan saat aplikasi mengakses teks, gambar, atau konten lainnya yang telah Anda salin"</string>
     <string name="all_apps" msgid="3054120149509114789">"Semua aplikasi"</string>
     <string name="request_manage_bluetooth_permission_dont_allow" msgid="8798061333407581300">"Jangan izinkan"</string>
     <string name="uwb_settings_title" msgid="8578498712312002231">"Ultra-Wideband (UWB)"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 5f4875f..1d0fd5f 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Skjávari"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Nota skjávara"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Við hleðslu eða í dokku"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Annaðhvort"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Við hleðslu"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Þegar tækið er í dokku"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Aldrei"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Slökkt"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Kveiktu á skjávaranum til að stjórna því hvað gerist þegar síminn er í dokku og/eða í biðstöðu."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Hvenær á að byrja"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Núverandi skjávari"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Stillingar"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Sjálfvirk birtustilling"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Lyfta til að vekja"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Umhverfisskjár"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Eyða"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Öllum forritum og gögnum í þessari lotu verður eytt."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Fjarlægja"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gestur (þú)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Notendur"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Aðrir notendur"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Eyða aðgerðum úr gestalotu"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Eyða öllum forritum og gögnum úr gestalotu þegar gestastillingu er lokað"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Eyða aðgerðum úr gestalotu?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Forritum og gögnum úr þessari gestalotu verður eytt núna og öllum aðgerðum úr síðari gestalotum verður eytt í hvert skipti sem gestastillingu er lokað"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Kveikja á símtölum"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Kveikja á símtölum og SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Eyða notanda"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 9c039d8..4669933 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Lingua di sistema"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Predefinita di sistema"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"La selezione della lingua per questa app non è disponibile nelle Impostazioni."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"La lingua potrebbe essere diversa dalle lingue disponibili nell\'app. Alcune app potrebbero non supportare questa impostazione."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">Rimuovere le lingue selezionate?</item>
       <item quantity="one">Rimuovere la lingua selezionata?</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Salvaschermo"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Usa il salvaschermo"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Durante la ricarica o quando inserito nel dock"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Entrambi i casi"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Durante la ricarica"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Quando inserito nel dock"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Mai"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Off"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Attiva il salvaschermo per controllare ciò che accade quando il telefono è inserito nel dock e/o in standby."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Quando avviare"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Salvaschermo attuale"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Impostazioni"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Luminosità automatica"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Solleva per riattivare"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Display ambient"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Elimina"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Tutte le app e i dati di questa sessione verranno eliminati."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Rimuovi"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Ospite (tu)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Utenti"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Altri utenti"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Elimina attività Ospite"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Elimina tutti i dati e le app Ospite quando esci dalla modalità Ospite"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Vuoi eliminare l\'attività Ospite?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Le app e i dati di questa sessione Ospite verranno eliminati subito e ogni volta che uscirai dalla modalità Ospite verrà eliminata tutta l\'attività Ospite"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Attiva chiamate"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Attiva chiamate e SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Elimina utente"</string>
diff --git a/res/values-iw/arrays.xml b/res/values-iw/arrays.xml
index 37acbd3..df97f79 100644
--- a/res/values-iw/arrays.xml
+++ b/res/values-iw/arrays.xml
@@ -505,8 +505,8 @@
   </string-array>
   <string-array name="wifi_metered_entries">
     <item msgid="3237321077949659241">"זיהוי אוטומטי"</item>
-    <item msgid="3779092145391320375">"יש להתייחס כרשת עם חיוב לפי צריכת הנתונים"</item>
-    <item msgid="2047166446768045816">"יש להתייחס כרשת שבה החיוב הוא לא לפי צריכת הנתונים"</item>
+    <item msgid="3779092145391320375">"יש להתייחס כרשת עם חיוב לפי שימוש בנתונים"</item>
+    <item msgid="2047166446768045816">"יש להתייחס כרשת שבה החיוב הוא לא לפי שימוש בנתונים"</item>
   </string-array>
   <string-array name="wifi_privacy_entries">
     <item msgid="3485945604919292489">"‏שימוש בכתובת MAC אקראית (ברירת מחדל)"</item>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 21a045e..aff763f 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -164,7 +164,7 @@
     <string name="connected_device_previously_connected_title" msgid="605808252622814415">"מכשירים שהיו מחוברים בעבר"</string>
     <string name="connected_device_previously_connected_screen_title" msgid="8823331744788100605">"מכשירים שחוברו בעבר"</string>
     <string name="connected_device_bluetooth_turned_on_toast" msgid="144664089794199928">"‏Bluetooth הופעל"</string>
-    <string name="previous_connected_see_all" msgid="7759413145713251328">"הצגת כל הרשתות"</string>
+    <string name="previous_connected_see_all" msgid="7759413145713251328">"הצגת כל המכשירים"</string>
     <string name="date_and_time" msgid="1788358029823431692">"תאריך ושעה"</string>
     <string name="choose_timezone" msgid="1450780665958642147">"בחירת אזור זמן"</string>
     <!-- no translation found for intent_sender_data_label (1733806423295725392) -->
@@ -229,8 +229,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"שפת המערכת"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"ברירת המחדל של המערכת"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"בחירות השפה לאפליקציה הזו לא זמינה בהגדרות."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"השפה עשויה להיות שונה מהשפות הזמינות באפליקציה. יכול להיות שחלק מהאפליקציות לא תומכות בהגדרה הזו."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="two">להסיר את השפות שנבחרו?</item>
       <item quantity="many">להסיר את השפות שנבחרו?</item>
@@ -966,7 +965,7 @@
     <string name="android_beam_settings_title" msgid="2797963824490671295">"Android Beam"</string>
     <string name="android_beam_on_summary" msgid="6067720758437490896">"‏מוכן לשדר תוכן אפליקציה באמצעות NFC"</string>
     <string name="android_beam_off_summary" msgid="5693961375631325042">"כבוי"</string>
-    <string name="nfc_disabled_summary" msgid="8737797364522502351">"‏לא זמינה כי ה-NFC כבוי"</string>
+    <string name="nfc_disabled_summary" msgid="8737797364522502351">"‏לא זמינה כי NFC כבוי"</string>
     <string name="android_beam_label" msgid="7168565080321110094">"Android Beam"</string>
     <string name="android_beam_explained" msgid="5684416131846701256">"‏כשתכונה זו מופעלת, אפשר לשדר תוכן מאפליקציה למכשיר אחר התומך ב-NFC על ידי החזקת המכשירים קרוב זה לזה. לדוגמה, אפשר לשדר דפי אינטרנט, סרטוני YouTube, אנשי קשר ועוד.\n\nפשוט מקרבים את המכשירים זה לזה (בדרך כלל גב אל גב) ולאחר מכן נוגעים במסך. האפליקציה תקבע מה ישודר."</string>
     <string name="wifi_quick_toggle_title" msgid="2737097538432862807">"Wi-Fi"</string>
@@ -1471,15 +1470,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"שומר מסך"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"שימוש בשומר מסך"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"במהלך טעינה או עגינה"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"בשני המצבים"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"במהלך טעינה"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"בזמן עגינה"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"אף פעם"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"כבוי"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"כדי לשלוט במה שקורה כאשר הטלפון בעגינה ו/או במצב שינה, הפעל את שומר המסך."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"מתי להפעיל"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"שומר המסך הנוכחי"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"הגדרות"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"בהירות אוטומטית"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"אפשר להרים כדי להוציא ממצב שינה"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"תצוגה רגישה לסביבה"</string>
@@ -2691,7 +2687,7 @@
     <string name="fast_pair_settings" msgid="3308819519080016185">"התאמה מהירה"</string>
     <string name="fast_pair_settings_summary" msgid="1786567691058982987">"‏זיהוי מכשירי Bluetooth עם התאמה מהירה בקרבת מקום."</string>
     <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"סריקה לאיתור מכשירים בקרבת מקום"</string>
-    <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"התקנים שמורים"</string>
+    <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"מכשירים שמורים"</string>
     <string name="print_settings" msgid="8519810615863882491">"הדפסה"</string>
     <string name="print_settings_summary_no_service" msgid="6721731154917653862">"כבוי"</string>
     <plurals name="print_settings_summary" formatted="false" msgid="1034273609054146099">
@@ -3490,6 +3486,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"מחיקה"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"כל האפליקציות והנתונים בסשן הזה יימחקו."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"הסרה"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"אורח (את/ה)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"משתמשים"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"משתמשים אחרים"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"מחיקת פעילות האורח"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"מחיקת כל האפליקציות והנתונים של האורח ביציאה ממצב אורח"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"למחוק את פעילות האורח?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"האפליקציות והנתונים מהגלישה הזו כאורח יימחקו עכשיו, וכל פעילות עתידית של האורח תימחק בכל יציאה ממצב אורח"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"הפעלת שיחות טלפון"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"‏הפעלת שיחות טלפון ו-SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"מחיקת משתמש"</string>
@@ -4011,7 +4014,7 @@
     <string name="lock_screen_notifs_redact_summary" msgid="1395483766035470612">"הצגת תוכן רגיש כשהמכשיר נעול"</string>
     <string name="lock_screen_notifs_redact_work" msgid="3833920196569208430">"התראות רגישות מפרופיל העבודה"</string>
     <string name="lock_screen_notifs_redact_work_summary" msgid="3238238380405430156">"הצגת תוכן רגיש מפרופיל העבודה כשהמכשיר נעול"</string>
-    <string name="lock_screen_notifications_summary_show" msgid="6540443483088311328">"תוכן ההתראות יופיע במלואו"</string>
+    <string name="lock_screen_notifications_summary_show" msgid="6540443483088311328">"הצגת תוכן ההתראות במלואו"</string>
     <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"הצגת תוכן רגיש רק כשהמכשיר לא נעול"</string>
     <string name="lock_screen_notifications_summary_disable" msgid="3388290397947365744">"לא להציג התראות בכלל"</string>
     <string name="lock_screen_notifications_interstitial_message" msgid="4688399629301178487">"איך ברצונך להציג את מסך הנעילה?"</string>
@@ -5870,7 +5873,7 @@
     <string name="mic_toggle_title" msgid="265145278323852547">"גישה למיקרופון"</string>
     <string name="location_toggle_title" msgid="5229867700421750868">"גישה למיקום"</string>
     <string name="perm_toggle_description" msgid="5754629581767319022">"לאפליקציות ולשירותים"</string>
-    <string name="mic_toggle_description" msgid="484139688645092237">"לאפליקציות ולשירותים. אם ההגדרה מושבתת, נתוני המיקרופון ישותפו כשתתבצע שיחה למספר חירום."</string>
+    <string name="mic_toggle_description" msgid="484139688645092237">"לאפליקציות ולשירותים. אם ההגדרה מושבתת, ייתכן שנתוני המיקרופון ישותפו כשתתבצע שיחה למספר חירום."</string>
     <string name="previous_page_content_description" msgid="6438292457923282991">"הקודם"</string>
     <string name="next_page_content_description" msgid="1641835099813416294">"הבא"</string>
     <string name="colors_viewpager_content_description" msgid="2591751086138259565">"תצוגה מקדימה של הצבע"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 0203b0b..a6573c4 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -860,7 +860,7 @@
     <string name="bluetooth_unpair_dialog_title" msgid="6943633443716052995">"このデバイスとのペア設定を解除しますか？"</string>
     <string name="remove_association_button" msgid="5004208145998061135">"関連付けを削除"</string>
     <string name="bluetooth_companion_app_remove_association_dialog_title" msgid="1344518601377991897">"アプリの接続を解除しますか？"</string>
-    <string name="bluetooth_unpair_dialog_body" product="default" msgid="4730377171981539265">"このスマートフォンと <xliff:g id="DEVICE_NAME">%1$s</xliff:g> とのペア設定が解除されます"</string>
+    <string name="bluetooth_unpair_dialog_body" product="default" msgid="4730377171981539265">"お使いのスマートフォンと <xliff:g id="DEVICE_NAME">%1$s</xliff:g> とのペア設定が解除されます"</string>
     <string name="bluetooth_unpair_dialog_body" product="tablet" msgid="3428463407231980054">"このタブレットと <xliff:g id="DEVICE_NAME">%1$s</xliff:g> とのペア設定を解除します"</string>
     <string name="bluetooth_unpair_dialog_body" product="device" msgid="5117397433721336918">"このデバイスと <xliff:g id="DEVICE_NAME">%1$s</xliff:g> とのペア設定を解除します"</string>
     <string name="bluetooth_companion_app_body" msgid="8442643629075687761">"<xliff:g id="APP_NAME">%1$s</xliff:g> アプリは <xliff:g id="DEVICE_NAME">%2$s</xliff:g> に接続できなくなります。"</string>
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"スクリーンセーバー"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"スクリーン セーバーを使用する"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"充電時またはドッキング時"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"いずれか"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"充電時"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ドッキング時"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"なし"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"OFF"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"スマートフォンのドッキング時やスリープ時の動作を管理するには、スクリーン セーバーを ON にします。"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"起動するタイミング"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"現在のスクリーンセーバー"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"設定"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"明るさを自動調整"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"指を離してスリープ状態から復帰"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"アンビエント表示"</string>
@@ -2096,7 +2093,7 @@
     <string name="internal_storage" msgid="999496851424448809">"内部ストレージ"</string>
     <string name="recompute_size" msgid="1098091228370999128">"サイズを再計算中..."</string>
     <string name="clear_data_dlg_title" msgid="180446967743732410">"アプリのデータを削除しますか？"</string>
-    <string name="clear_data_dlg_text" msgid="3440011276559762619">"このアプリのデータ（ファイル、設定など）はこのデバイスから完全に削除されます"</string>
+    <string name="clear_data_dlg_text" msgid="3440011276559762619">"このアプリのデータ（ファイル、設定など）がデバイスから完全に削除されます"</string>
     <string name="dlg_ok" msgid="1421350367857960997">"OK"</string>
     <string name="dlg_cancel" msgid="5164705061530774899">"キャンセル"</string>
     <string name="dlg_delete" msgid="1790919205039397659">"削除"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"削除"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"このセッションでのアプリとデータはすべて削除されます。"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"削除"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"ゲスト（自分）"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"ユーザー"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"その他のユーザー"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"ゲストのアクティビティを削除"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"ゲストモードの終了時にゲストのすべてのアプリとデータを削除します"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"ゲストのアクティビティを削除しますか？"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"今回のゲスト セッションのアプリとデータが今すぐ削除され、今後のゲストのアクティビティはすべて、ゲストモードを終了するたびに削除されます"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"通話をON"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"通話とSMSをON"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"ユーザーの削除"</string>
@@ -5650,7 +5654,7 @@
     <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Wi-Fi アクセス ポイントの使用"</string>
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"アプリ固定機能を使用"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"開発者向けオプションの使用"</string>
-    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"印刷サービスの使用"</string>
+    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"印刷サービスを使用"</string>
     <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"複数のユーザーの許可"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"ワイヤレス デバッグの使用"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"グラフィックス ドライバの設定の使用"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 96b09bf..6f072f6 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -1428,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"ეკრანმზოგი"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"გამოიყენეთ ეკრანმზოგი"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"დატენვისას ან სანამ ჩამაგრებულია"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"ორივე შემთხვევაში"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"დატენვისას"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"სანამ ჩამაგრებულია"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"არასოდეს"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"გამორთული"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"დოკ-სადგურთან მიერთების და/ან ძილის რეჟიმზე გადასვლის დროს ტელეფონის ქცევის სამართავად, ჩართეთ ეკრანმზოგი."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"გაშვების დრო"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"ამჟამინდელი ეკრანმზოგი"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"პარამეტრები"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"ავტომატური სიკაშკაშე"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"გაღვიძება აწევისას"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"ემბიენტური ეკრანი"</string>
@@ -3399,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"წაშლა"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"ამ სესიის ყველა აპი და მონაცემი წაიშლება."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"ამოშლა"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"სტუმარი (თქვენ)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"მომხმარებლები"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"სხვა მომხმარებლები"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"სტუმრის აქტივობის წაშლა"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"სტუმრის ყველა აპის და მონაცემის წაშლა სტუმრის რეჟიმიდან გასვლისას"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"გსურთ სტუმრის აქტივობის წაშლა?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"აპები და მონაცემები სტუმრის ამ სესიიდან წაიშლება ახლავე, ხოლო სტუმრის ყველა მომავალი აქტივობა წაიშლება ყოველთვის, როცა სტუმრის რეჟიმიდან გახვალთ"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"სატელეფონო ზარების ჩართვა"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"სატელ. ზარების და SMS-ის ჩართვა"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"მომხმარებლის წაშლა"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 0cbbab6..4f06ed9 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -325,7 +325,7 @@
     </plurals>
     <string name="location_settings_loading_app_permission_stats" msgid="6054103701535557342">"Жүктелуде…"</string>
     <string name="location_settings_footer_general" msgid="1040507068701188821">"Маңайдағы құрылғыларды пайдалану рұқсаты бар қолданбалар телефонға жалғанған құрылғылардың тиісті орнын анықтай алады."</string>
-    <string name="location_settings_footer_location_off" msgid="8568995909147566720">"Қолданбалар мен қызметтер үшін локацияны пайдалану рұқсаты өшірулі. Сіз құтқару қызметінің нөміріне қоңырау шалған немесе мәтіндік хабар жіберген кезде, құрылғыңыздың локациясы бұрынғысынша құтқару қызметтеріне жіберілуі мүмкін."</string>
+    <string name="location_settings_footer_location_off" msgid="8568995909147566720">"Қолданбалар мен қызметтер үшін локацияны пайдалану рұқсаты өшірулі. Бірақ құтқару қызметіне қоңырау шалатын немесе хабар жіберетін болсаңыз, құрылғыңыздың локациясы беріледі."</string>
     <string name="location_settings_footer_learn_more_content_description" msgid="5329024810729665156">"Локация параметрлері туралы толығырақ ақпарат алыңыз."</string>
     <string name="account_settings_title" msgid="9138880127246241885">"Аккаунттар"</string>
     <string name="security_settings_title" msgid="6710768415432791970">"Қауіпсіздік"</string>
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Скринсейвер"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Скринсейверді пайдалану"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Зарядтау кезінде немесе қондыру станциясында"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Екеуі де"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Зарядтау кезінде"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Қондыру станциясында"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Ешқашан"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Өшірулі"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Телефон қондырылған және/немесе ұйықтаған кездегі процесті бақылау үшін скринсейверді қосыңыз."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Іске қосылатын кезі"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Қазіргі скринсейвер"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Параметрлер"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Aвтоматтық жарықтық"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Ояту үшін көтеру"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Экранды автоматты қосу"</string>
@@ -1851,7 +1848,7 @@
     <string name="location_recent_location_requests_see_all" msgid="7918405176741692524">"Барлығын көру"</string>
     <string name="location_category_location_services" msgid="8163798686832434284">"Локация қызметтері"</string>
     <string name="location_title" msgid="5819154746934945021">"Mенің аймағым"</string>
-    <string name="managed_profile_location_switch_title" msgid="1265007506385460066">"Жұмыс профилі үшін орналасу дерегі"</string>
+    <string name="managed_profile_location_switch_title" msgid="1265007506385460066">"Жұмыс профиліндегі локация"</string>
     <string name="location_app_level_permissions" msgid="907206607664629759">"Қолданбалардың локацияны пайдалануы"</string>
     <string name="location_app_permission_summary_location_off" msgid="2711822936853500335">"Локация өшірулі"</string>
     <plurals name="location_app_permission_summary_location_on" formatted="false" msgid="8286873148858526214">
@@ -2629,20 +2626,20 @@
     <string name="keywords_rtt" msgid="2429130928152514402">"нашар есту қабілеті, есту қабілетінен айырылу, жазулар, телетайп"</string>
     <string name="keywords_voice_access" msgid="7807335263195876454"></string>
     <string name="fast_pair_settings" msgid="3308819519080016185">"Fast Pair"</string>
-    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Nearby-дың Fast Pair арқылы Bluetooth құрылғыларын анықтауы."</string>
+    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Маңайдағы Fast Pair Bluetooth құрылғыларын анықтау"</string>
     <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"Маңайдағы құрылғыларды іздеу"</string>
     <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"Сақталған құрылғылар"</string>
     <string name="print_settings" msgid="8519810615863882491">"Басып шығару"</string>
     <string name="print_settings_summary_no_service" msgid="6721731154917653862">"Өшірулі"</string>
     <plurals name="print_settings_summary" formatted="false" msgid="1034273609054146099">
-      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> басып шығару қызметі қосулы</item>
-      <item quantity="one">1 басып шығару қызметі қосулы</item>
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> баспа қызметі қосулы</item>
+      <item quantity="one">1 баспа қызметі қосулы</item>
     </plurals>
     <plurals name="print_jobs_summary" formatted="false" msgid="3933688846338306536">
       <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> басып шығару тапсырмасы</item>
       <item quantity="one">1 басып шығару тапсырмасы</item>
     </plurals>
-    <string name="print_settings_title" msgid="7680498284751129935">"Басып шығару қызметтері"</string>
+    <string name="print_settings_title" msgid="7680498284751129935">"Баспа қызметтері"</string>
     <string name="print_no_services_installed" msgid="7554057966540602692">"Ешқандай қызметтер орнатылмаған"</string>
     <string name="print_no_printers_found" msgid="4833082484646109486">"Ешқандай принтерлер табылмады"</string>
     <string name="print_menu_item_settings" msgid="8202755044784599740">"Параметрлер"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Жою"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Осы сеанстағы барлық қолданбалар мен деректер жойылады."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Алып тастау"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Қонақ (сіз)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Пайдаланушылар"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Басқа пайдаланушылар"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Қонақ әрекетін жою"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Қонақ режимінен шыққан кезде, барлық қонақ қолданбасы мен дерегін жою"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Қонақ әрекетін жою керек пе?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Осы қонақ сеансындағы қолданбалар мен деректер қазір жойылады және қонақ режимінен шыққан сайын қонақтың барлық әрекеті өшіп отырады."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Телефон қоңырауларын қосу"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Телефон қоңырауларын және SMS қосу"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Пайдаланушыны жою"</string>
@@ -3418,7 +3422,7 @@
     <string name="user_copy_apps_menu_title" msgid="5354300105759670300">"Қолжетімді қолданбаларды орнату"</string>
     <string name="nfc_payment_settings_title" msgid="2043139180030485500">"Контактісіз төлемдер"</string>
     <string name="nfc_default_payment_settings_title" msgid="2150504446774382261">"Әдепкі төлем қолданбасы"</string>
-    <string name="nfc_default_payment_footer" msgid="978535088340021360">"Төлем қолданбасы арқылы төлеу үшін құрылғыңыздың артқы жағын төлем терминалына жақындатып ұстаңыз."</string>
+    <string name="nfc_default_payment_footer" msgid="978535088340021360">"Төлем қолданбасы арқылы төлеу үшін құрылғыңыздың артқы жағын төлем терминалына жақындатыңыз."</string>
     <string name="nfc_more_details" msgid="1700713533074275233">"Толығырақ"</string>
     <string name="nfc_default_payment_workapp_confirmation_title" msgid="746921251872504687">"Жұмыс қолданбасы әдепкі төлем қолданбасы етіп орнатылсын ба?"</string>
     <string name="nfc_default_payment_workapp_confirmation_message_title" msgid="1533022606333010329">"Жұмыс қолданбасы арқылы төлем жасау:"</string>
@@ -3429,8 +3433,8 @@
     <string name="nfc_payment_default" msgid="3769788268378614608">"Әдепкі төлем қолданбасы"</string>
     <string name="nfc_payment_default_not_set" msgid="6471905683119084622">"Орнатылмаған"</string>
     <string name="nfc_payment_app_and_desc" msgid="2607417639227030398">"<xliff:g id="APP">%1$s</xliff:g> – <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
-    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Әдепкі төлем қолданбасын пайдаланыңыз"</string>
-    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Әдепкі төлем қолданбасын пайдаланыңыз"</string>
+    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Әдепкі төлем қолданбасын пайдалану"</string>
+    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Әдепкі төлем қолданбасын пайдалану"</string>
     <string name="nfc_payment_favor_default" msgid="4508491832174644772">"Әрқашан"</string>
     <string name="nfc_payment_favor_open" msgid="8554643344050373346">"Басқа төлем қолданбасы ашық кезді қоспағанда"</string>
     <string name="nfc_payment_pay_with" msgid="3001320460566523453">"Контактісіз төлем терминалында төлеу әдісі:"</string>
@@ -3910,7 +3914,7 @@
     <string name="lockscreen_bypass_summary" msgid="464277506200346748">"Құлыпты ашқан соң, бірден соңғы ашылған экранға өту"</string>
     <string name="keywords_lockscreen_bypass" msgid="41035425468915498">"Құлып экраны, құлыптаулы экран, өткізіп жіберу, өткізу"</string>
     <string name="locked_work_profile_notification_title" msgid="279367321791301499">"Жұмыс профилі өшірулі болғанда"</string>
-    <string name="lock_screen_notifs_title" msgid="3412042692317304449">"Құлыптаулы экрандағы хабарландырулар"</string>
+    <string name="lock_screen_notifs_title" msgid="3412042692317304449">"Құлып экранындағы хабарландыру"</string>
     <string name="lock_screen_notifs_show_all_summary" msgid="4226586018375762117">"Әңгімелерді (әдепкі және дыбыссыз) көрсету"</string>
     <string name="lock_screen_notifs_show_all" msgid="1300418674456749664">"Барлық хабарландыруды көрсету"</string>
     <string name="lock_screen_notifs_show_alerting" msgid="6584682657382684566">"Үнсіз әңгімелерді және хабарландыруларды жасыру"</string>
@@ -5690,7 +5694,7 @@
     <string name="mic_toggle_title" msgid="265145278323852547">"Микрофонды пайдалану"</string>
     <string name="location_toggle_title" msgid="5229867700421750868">"Локацияны пайдалану рұқсаты"</string>
     <string name="perm_toggle_description" msgid="5754629581767319022">"Қолданбалар мен қызметтер үшін"</string>
-    <string name="mic_toggle_description" msgid="484139688645092237">"Қолданбалар мен қызметтерге арналған. Бұл параметр өшірілсе де, құтқару қызметінің нөміріне қоңырау шалғанда, микрофон деректері жіберілуі мүмкін."</string>
+    <string name="mic_toggle_description" msgid="484139688645092237">"Қолданбалар мен қызметтер үшін таңдалады. Бұл параметр өшірілсе де, құтқару қызметінің нөміріне қоңырау шалғанда, микрофон деректері жіберілуі мүмкін."</string>
     <string name="previous_page_content_description" msgid="6438292457923282991">"Алдыңғы"</string>
     <string name="next_page_content_description" msgid="1641835099813416294">"Келесі"</string>
     <string name="colors_viewpager_content_description" msgid="2591751086138259565">"Түсті алдын ала қарау"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 99d9d39..17ea5fa 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"ធាតុរក្សាអេក្រង់"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"ប្រើធាតុ​រក្សា​អេក្រង់"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ពេលសាកថ្ម ឬភ្ជាប់"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"ទាំង​ពីរ"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"ពេលសាកថ្ម"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ពេល​​ភ្ជាប់"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"កុំឲ្យសោះ"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"បិទ"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ដើម្បីគ្រប់គ្រងអ្វីដែលកើតឡើង នៅពេលទូរស័ព្ទត្រូវបានដោត និង/ឬកំពុងដេក សូមបើកធាតុរក្សាអេក្រង់។"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"ពេលដែលត្រូវចាប់ផ្តើម"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"ធាតុ​រក្សា​អេក្រង់​បច្ចុប្បន្ន"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"ការ​កំណត់"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"ពន្លឺ​ស្វ័យ​ប្រវត្តិ"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"លើក​ដៃ​ដើម្បី​ឲ្យ​ភ្ញាក់"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"មុខងារអេក្រង់សម្ងំ"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"លុប"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"កម្មវិធី និងទិន្នន័យ​ទាំងអស់​ក្នុង​វគ្គ​នេះ​នឹង​ត្រូវ​លុប។"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"ដកចេញ"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"ភ្ញៀវ (អ្នក)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"អ្នកប្រើប្រាស់"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"អ្នក​ប្រើ​ប្រាស់ផ្សេងទៀត"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"លុបសកម្មភាពភ្ញៀវ"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"លុបទិន្នន័យ និងកម្មវិធីភ្ញៀវទាំងអស់ នៅពេលចាកចេញពីមុខងារភ្ញៀវ"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"លុបសកម្មភាពភ្ញៀវឬ?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"កម្មវិធី និងទិន្នន័យពីវគ្គភ្ញៀវនេះនឹងត្រូវបានលុបឥឡូវនេះ ហើយសកម្មភាពភ្ញៀវនាពេលអនាគតទាំងអស់នឹងត្រូវបានលុប នៅរាល់ពេលដែលអ្នកចាកចេញពីមុខងារភ្ញៀវ"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"បើកការហៅទូរសព្ទ"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"បើកការហៅទូរសព្ទ និងសារ SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"លុប​អ្នក​ប្រើប្រាស់"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index a4a245b..24c1d32 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -225,8 +225,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"ಸೂಚಿಸಿರುವ ಭಾಷೆಗಳು"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"ಎಲ್ಲಾ ಭಾಷೆಗಳು"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"ಸಿಸ್ಟಂ ಭಾಷೆ"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"ಸಿಸ್ಟಂ ಡೀಫಾಲ್ಟ್"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಮೂಲಕ ಈ ಆ್ಯಪ್‌ಗಾಗಿ ಭಾಷೆಯ ಆಯ್ಕೆಯು ಲಭ್ಯವಿಲ್ಲ."</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -745,7 +744,7 @@
       <item quantity="one">ಪಿನ್‌ ಕನಿಷ್ಠ <xliff:g id="COUNT_1">%d</xliff:g> ಅಂಕಿಗಳನ್ನು ಹೊಂದಿರಬೇಕು</item>
       <item quantity="other">ಪಿನ್‌ ಕನಿಷ್ಠ <xliff:g id="COUNT_1">%d</xliff:g> ಅಂಕಿಗಳನ್ನು ಹೊಂದಿರಬೇಕು</item>
     </plurals>
-    <string name="lockpassword_continue_label" msgid="2507983991979547816">"ಮುಂದುವರಿಸು"</string>
+    <string name="lockpassword_continue_label" msgid="2507983991979547816">"ಮುಂದುವರಿಸಿ"</string>
     <plurals name="lockpassword_password_too_long" formatted="false" msgid="8118091957172967677">
       <item quantity="one"> <xliff:g id="NUMBER_1">%d</xliff:g> ಗಿಂತ ಕಡಿಮೆ ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿರಬೇಕು</item>
       <item quantity="other"> <xliff:g id="NUMBER_1">%d</xliff:g> ಗಿಂತ ಕಡಿಮೆ ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿರಬೇಕು</item>
@@ -845,7 +844,7 @@
     <string name="bluetooth_preference_no_found_devices" msgid="1331122763066030155">"ಯಾವುದೇ ಸಾಧನಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="bluetooth_device_context_connect" msgid="4913860372216815855">"ಸಂಪರ್ಕಿಸಿ"</string>
     <string name="bluetooth_device_context_disconnect" msgid="4464167389972513232">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿ"</string>
-    <string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"ಜೋಡಿಸು ಮತ್ತು ಸಂಪರ್ಕಪಡಿಸು"</string>
+    <string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"ಜೋಡಿಸಿ ಮತ್ತು ಸಂಪರ್ಕಪಡಿಸಿ"</string>
     <string name="bluetooth_device_context_unpair" msgid="7525735305244087162">"ಜೋಡಣೆ ರದ್ದುಗೊಳಿಸು"</string>
     <string name="bluetooth_device_context_disconnect_unpair" msgid="2001359431289794561">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸು &amp; ಜೋಡಣೆ ರದ್ದುಗೊಳಿಸು"</string>
     <string name="bluetooth_device_context_connect_advanced" msgid="934657460643490773">"ಆಯ್ಕೆಗಳು..."</string>
@@ -1430,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"ಸ್ಕ್ರೀನ್ ಸೇವರ್"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"ಸ್ಕ್ರೀನ್ ಸೇವರ್ ಅನ್ನು ಬಳಸಿ"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ಚಾರ್ಜ್ ಮಾಡುವಾಗ ಅಥವಾ ಡಾಕ್ ಮಾಡುವಾಗ"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"ಎರಡೂ ಸಂದರ್ಭಗಳಲ್ಲಿ"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"ಚಾರ್ಜ್‌ ಆಗುತ್ತಿರುವಾಗ"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ಡಾಕ್‌ ಆಗಿರುವಾಗ"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"ಎಂದಿಗೂ ಇಲ್ಲ"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"ಆಫ್"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ಫೋನ್‌ ಡಾಕ್‌ ಆದಾಗ ಮತ್ತು/ಅಥವಾ ನಿದ್ದೆ ಮೋಡ್‌ನಲ್ಲಿರುವಾಗ ಏನಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಲು ಸ್ಕ್ರೀನ್ ಸೇವರ್ ಆನ್‌ ಮಾಡಿ."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"ಯಾವಾಗ ಪ್ರಾರಂಭಿಸಬೇಕು"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"ಪ್ರಸ್ತುತ ಸ್ಕ್ರೀನ್ ಸೇವರ್"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"ಸ್ವಯಂಚಾಲಿತ ಪ್ರಖರತೆ"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"ಎಬ್ಬಿಸಲು ಎತ್ತಿರಿ"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"ಆಂಬಿಯೆಂಟ್ ಡಿಸ್‌ಪ್ಲೇ"</string>
@@ -1856,8 +1852,8 @@
     <string name="location_app_level_permissions" msgid="907206607664629759">"ಆ್ಯಪ್ ಸ್ಥಳದ ಅನುಮತಿಗಳು"</string>
     <string name="location_app_permission_summary_location_off" msgid="2711822936853500335">"ಸ್ಥಳ ಆಫ್‌ ಆಗಿದೆ"</string>
     <plurals name="location_app_permission_summary_location_on" formatted="false" msgid="8286873148858526214">
-      <item quantity="one"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> ರಲ್ಲಿ <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> ಆ್ಯಪ್‌ಗಳು ಸ್ಥಳಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದೆ</item>
-      <item quantity="other"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> ರಲ್ಲಿ <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> ಆ್ಯಪ್‌ಗಳು ಸ್ಥಳಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದೆ</item>
+      <item quantity="one"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> ರಲ್ಲಿ <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> ಆ್ಯಪ್‌ಗಳು ಸ್ಥಳಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿವೆ</item>
+      <item quantity="other"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> ರಲ್ಲಿ <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> ಆ್ಯಪ್‌ಗಳು ಸ್ಥಳಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿವೆ</item>
     </plurals>
     <string name="location_category_recent_location_access" msgid="2558063524482178146">"ಇತ್ತೀಚಿನ ಪ್ರವೇಶ"</string>
     <string name="location_recent_location_access_see_all" msgid="4203102419355323325">"ಎಲ್ಲವನ್ನೂ ನೋಡಿ"</string>
@@ -3401,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"ಅಳಿಸಿ"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"ಈ ಸೆಷನ್‌ನಲ್ಲಿನ ಎಲ್ಲ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"ತೆಗೆದುಹಾಕಿ"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"ಅತಿಥಿ (ನೀವು)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"ಬಳಕೆದಾರರು"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"ಇತರ ಬಳಕೆದಾರರು"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"ಅಥಿತಿ ಚಟುವಟಿಕೆಯನ್ನು ಅಳಿಸಿ"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"ಅತಿಥಿ ಮೋಡ್‌ನಿಂದ ನಿರ್ಗಮಿಸುವಾಗ ಎಲ್ಲಾ ಅತಿಥಿ ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಿ"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"ಅಥಿತಿ ಚಟುವಟಿಕೆಯನ್ನು ಅಳಿಸಬೇಕೆ?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"ಈ ಅತಿಥಿ ಸೆಶನ್‌ನಿಂದ ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಈಗ ಅಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ನೀವು ಅತಿಥಿ ಮೋಡ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿದ ಪ್ರತಿ ಬಾರಿ ಭವಿಷ್ಯದ ಎಲ್ಲಾ ಅತಿಥಿ ಚಟುವಟಿಕೆಯನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"ಫೋನ್ ಕರೆಗಳನ್ನು ಆನ್ ಮಾಡಿ"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ಫೋನ್ ಕರೆಗಳು ಮತ್ತು ಎಸ್‌ಎಂಎಸ್‌ ಆನ್ ಮಾಡಿ"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಿ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 0d52526..490bcf7 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -1431,15 +1431,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"화면 보호기"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"화면 보호기 사용"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"충전 또는 도킹하는 동안"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"도킹이나 충전 중일 때"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"충전하는 동안"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"도킹하는 동안"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"사용 안함"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"사용 안함"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"휴대전화가 도킹 또는 절전 모드일 때 작동 방식을 조정하려면 화면 보호기를 사용 설정합니다."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"표시 시간"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"현재 화면 보호기"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"설정"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"자동 밝기"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"기기를 들어 대기 모드 해제"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"절전 모드 자동 해제"</string>
@@ -3402,6 +3399,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"삭제"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"이 세션에 있는 모든 앱과 데이터가 삭제됩니다."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"삭제"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"게스트(나)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"사용자"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"다른 사용자"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"게스트 활동 삭제"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"게스트 모드 종료 시 모든 게스트 앱 및 데이터 삭제"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"게스트 활동을 삭제하시겠습니까?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"현재 게스트 세션의 앱과 데이터가 지금 삭제되고 이후 모든 게스트 활동은 게스트 모드를 종료할 때마다 삭제됩니다."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"통화 기능 사용"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"통화 및 SMS 기능 사용"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"사용자 삭제"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 8f4f17c..613b7a0 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Тутумдун тили"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Тутумдун демейки параметрлери"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Бул колдонмонун тилин Жөндөөлөрдөн тандоого болбойт."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Тил колдонмодо жеткиликтүү тилдерден айырмаланышы мүмкүн. Бул жөндөө айрым колдонмолор тарабынан колдоого алынбайт болушу мүмкүн."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">Тандалган тилдерди өчүрөсүзбү?</item>
       <item quantity="one">Тандалган тилди өчүрөсүзбү?</item>
@@ -791,7 +790,7 @@
     <string name="lockpassword_confirm_label" msgid="560897521093566777">"Ырастоо"</string>
     <string name="lockpassword_cancel_label" msgid="6711112212489992112">"Жок"</string>
     <string name="lockpassword_clear_label" msgid="311359833434539894">"Тазалоо"</string>
-    <string name="lockpassword_credential_changed" msgid="5934778179732392028">"Экранды бөгөттөө өзгөртүлгөн. Жаңы экранды бөгөттөө дайындары менен аракет кылып көрүңүз."</string>
+    <string name="lockpassword_credential_changed" msgid="5934778179732392028">"Экранды бөгөттөө өзгөргөн. Жаңы экранды бөгөттөө дайындары менен аракет кылып көрүңүз."</string>
     <string name="lockpattern_tutorial_cancel_label" msgid="775215267818384016">"Жок"</string>
     <string name="lockpattern_tutorial_continue_label" msgid="1329049481210689408">"Кийинки"</string>
     <string name="lock_setup" msgid="4622999020926280737">"Орнотуу аяктады."</string>
@@ -1267,7 +1266,7 @@
     <string name="sound_effects_enable_title" msgid="328569690466233866">"Таптоонун добуштары"</string>
     <string name="lock_sounds_enable_title" msgid="804365014499259673">"Бөгөттөөчү көшөгөнүн үнү"</string>
     <string name="audio_record_proc_title" msgid="486071779724181619">"Чуу басар"</string>
-    <string name="volume_media_description" msgid="2736061076584067204">"Музыка, видео, оюндар, жана башка медиалар"</string>
+    <string name="volume_media_description" msgid="2736061076584067204">"Музыка, видео, оюндар жана башка медиа файлдар"</string>
     <string name="volume_ring_description" msgid="5423168446359881864">"Рингтон жана билдирмелер"</string>
     <string name="volume_notification_description" msgid="3241009629930030492">"Билдирмелер"</string>
     <string name="volume_alarm_description" msgid="156563371961039376">"Ойготкучтар"</string>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Көшөгө"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Көшөгөнү колдонуу"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Кубатталып жатканда же док-станцияга туташканда"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Эки учурда тең"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Кубатталып жатканда"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Док-станцияда"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Эч качан"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Өчүк"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Телефон докко орнотулганда жана/же уйку режиминде турганда эмне болоорун көзөмөлдөө үчүн көшөгөнү күйгүзүңүз."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Качан иштеп баштайт"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Учурдагы көшөгө"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Жөндөөлөр"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Автоматтык жарыктык"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Ойготуу үчүн көтөрүү"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Экран автоматтык түрдө күйөт"</string>
@@ -3081,7 +3077,7 @@
     <string name="backup_inactive_title" msgid="6753265378043349277">"Камдык көчүрмөнү сактоо кызматы иштетилген эмес"</string>
     <string name="backup_configure_account_default_summary" msgid="5323225330966306690">"Камдык көчүрмөлөр сакталган бир дагы аккаунт табылган жок"</string>
     <string name="backup_erase_dialog_title" msgid="5892431263348766484"></string>
-    <string name="backup_erase_dialog_message" msgid="2250872501409574331">"Колдонмолордун берилиштерин, Wi-Fi сырсөздөрүн, бүктөмөлөрдү, жана башка тууралоолорду, колдономолордун берилиштерин Google\'дун серверине сактоо токтотулуп, бардык көчүрмөлөр жок кылынсынбы?"</string>
+    <string name="backup_erase_dialog_message" msgid="2250872501409574331">"Колдонмолордун берилиштерин, Wi-Fi сырсөздөрүн, бүктөмөлөрдү жана башка тууралоолорду, колдономолордун берилиштерин Google\'дун серверине сактоо токтотулуп, бардык көчүрмөлөр жок кылынсынбы?"</string>
     <string name="fullbackup_erase_dialog_message" msgid="2379053988557486162">"Түзмөктөгү нерселердин (мисалы, Wi-Fi тармагынын сырсөздөрү жана чалуулар таржымалы) жана колдонмодогу нерселердин (мисалы жөндөөлөр жана файлдар) камдык көчүрмөсү мындан ары сакталбай, аралыктагы серверлердеги бардык көчүрмөлөр өчүрүлөт. Уланта бересизби?"</string>
     <string name="fullbackup_data_summary" msgid="971587401251601473">"Түзмөктөгү нерселердин (мисалы, Wi-Fi тармагынын сырсөздөрү жана чалуулар таржымалы) жана колдонмодогу нерселердин (мисалы жөндөөлөр жана файлдар) камдык көчүрмөсү алыстан автоматтык түрдө сакталат.\n\nКамдык көчүрмөнү автоматтык түрдө сактоо мүмкүнчүлүгү иштетилгенде, түзмөктүн жана колдонмонун дайындары маалы менен автоматтык түрдө сакталып турат. Иштеп чыгуучунун жөндөөлөрүнө ылайык колдонмодо сакталган дайындарда байланыштар, билдирүүлөр, сүрөттөр сыяктуу купуя маалыматтар камтылышы мүмкүн."</string>
     <string name="device_admin_settings_title" msgid="31392408594557070">"Түзмөктү башкарган колдонмонун жөндөөлөрү"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Жок кылуу"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Бул сеанстагы бардык колдонмолор жана маалыматтар өчүрүлөт."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Өчүрүү"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Конок (сиз)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Колдонуучулар"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Башка колдонуучулар"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Коноктун аракеттерин жок кылуу"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Конок режиминен чыкканда коноктун бардык колдонмолорду жана дайындарды өчүрүүү"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Коноктун аракеттери өчүрүлсүнбү?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Бул конок сеансындагы бардык колдонмолор жана дайындар азыр жок кылынат жана кийин конок режиминен чыккан сайын бардык конок аракеттери өчүрүлүп турат"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Телефон аркылуу чалууну иштетүү"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Чалуулар менен SMS иштетүү"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Колдонуучуну жок кылуу"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 8011f2b..a78a330 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"ພາບພັກໜ້າຈໍ"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"ໃຊ້ພາບພັກໜ້າຈໍ"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ໃນຂະນະທີ່ກຳລັງສາກ ຫຼື ວາງໄວ້ບ່ອນຕັ້ງສາກ"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"ແບບໃດກໍໄດ້"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"ໃນຂະນະທີ່ກຳລັງສາກໄຟ"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ໃນຂະນະຕັ້ງໃສ່ບ່ອນຕັ້ງສາກ"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"ບໍ່ມີກຳນົດ"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"ປິດ"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ເພື່ອຄວບຄຸມວ່າຈະເກີດຫຍັງຂຶ້ນເມື່ອວາງໂທລະສັບໄວ້ ແລະ/ຫຼື ເມື່ອກຳລັງນອນຫຼັບ, ໃຫ້ເປີດພາບພັກໜ້າຈໍກ່ອນ."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"ເລີ່ມຕອນໃດ"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"ຕົວພັກໜ້າຈໍປັດຈຸບັນ"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"ການຕັ້ງຄ່າ"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"ປັບຄວາມແຈ້ງອັດຕະໂນມັດ"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"ຍົກ​ເພື່ອ​ເປີດ​ໜ້າ​ຈໍ"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"ການສະແດງຜົນສະພາບແວດລ້ອມ"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"ລຶບ"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"​ແອັບ ແລະ ​ຂໍ້​ມູນ​ທັງ​ໝົດ​ໃນ​ເຊດ​ຊັນ​ນີ້​ຈະ​ຖືກ​ລຶບ​ອອກ."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"ລຶບ​"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"ແຂກ (ທ່ານ)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"ຜູ້ໃຊ້"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"ຜູ້ໃຊ້ອື່ນໆ"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"ລຶບການເຄື່ອນໄຫວແຂກ"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"ລຶບແອັບ ແລະ ຂໍ້ມູນແຂກທັງໝົດອອກໃນເວລາອອກຈາກໂໝດແຂກ"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"ລຶບການເຄື່ອນໄຫວແຂກບໍ?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"ແອັບ ແລະ ຂໍ້ມູນຈາກໄລຍະເວລາຂອງແຂກຈະຖືກລຶບອອກຕອນນີ້ ແລະ ການເຄື່ອນໄຫວແຂກໃນອະນາຄົດທັງໝົດຈະຖືກລຶບອອກໃນແຕ່ລະເທື່ອທີ່ທ່ານອອກຈາກໂໝດແຂກ"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"ເປີດ​ການໂທ​"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ເປີດ​ໂທ​ລະ​ສັບ ແລະ SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"ລຶບຜູ້ໃຊ້"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 943a678..f0b5c6d 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -1469,15 +1469,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Ekrano užsklanda"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Ekrano užsklandos naudojimas"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Įkraunat ar prijungus prie doko"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Abiem atvejais"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Įkraunant"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Kai yra doke"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Niekada"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Išjungta"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Jei norite valdyti, kas vyksta, kai telefonas yra doke ir (arba) veikia miego režimu, įjunkite ekrano užsklandą."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Kada paleisti"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Dabartinė ekrano užsklanda"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Nustatymai"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatinis šviesumas"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Pakelti ir pažadinti"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Adaptyvusis vaizdas"</string>
@@ -3488,6 +3485,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Ištrinti"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Bus ištrintos visos šios sesijos programos ir duomenys."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Pašalinti"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Svečias (jūs)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Naudotojai"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Kiti naudotojai"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Ištrinti svečio veiklą"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Išeinant iš svečio režimo ištrinti visas svečio programas ir duomenis"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Ištrinti svečio veiklą?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Šios svečio sesijos programos ir duomenys bus ištrinti dabar, o visa būsima svečio veikla bus ištrinta kiekvieną kartą, kai išeisite iš svečio režimo"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Įjungti telefono skambučius"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Įjungti telefono skambučius ir SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Naudotojo ištrynimas"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index b7c519c..82bfa3c 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -226,8 +226,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"Ieteiktās valodas"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"Visas valodas"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Sistēmas valoda"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Sistēmas noklusējums"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Iestatījumos nav pieejama valodas atlase šai lietotnei."</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -1450,15 +1449,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Ekrānsaudzētājs"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Izmantot ekrānsaudzētāju"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Uzlādes vai dokošanas laikā"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Vienmēr"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Uzlādes laikā"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Kamēr tiek dokots"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nekad"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Izslēgts"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Lai kontrolētu, kas notiek, kad tālrunis tiek dokots un/vai ir miega režīmā, ieslēdziet ekrānsaudzētāju."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Kad sākt"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Pašreizējais ekrānsaudzētājs"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Iestatījumi"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automātisks spilgtums"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Pacelt, lai ieslēgtu"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Gaidstāves ekrāns"</string>
@@ -3445,6 +3441,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Dzēst"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Tiks dzēstas visas šīs sesijas lietotnes un dati."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Noņemt"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Viesis (jūs)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Lietotāji"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Citi lietotāji"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Dzēst viesa darbības"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Dzēst visas viesa lietotnes un darbības, izejot no viesa režīma"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Vai dzēst viesa darbības?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Šīs viesa sesijas darbības un dati tagad tiks dzēsti, un turpmākās viesu darbības tiks dzēstas katru reizi, kad iziesiet no viesa režīma."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Ieslēgt tālruņa zvanus"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Ieslēgt tālruņa zvanus un īsziņas"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Dzēst lietotāju"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index faa9638..fa7deb2 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -1430,15 +1430,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Заштитник на екран"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Користи заштитник на екран"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Додека се полни или е приклучен"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"И во двата случаи"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Додека се полни"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Додека е приклучен на док"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Никогаш"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Исклучено"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"За да контролирате што се случува кога телефонот е приклучен на полнач и/или е во мирување, вклучете го заштитникот на екранот."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Кога да започне"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Тековен заштитник на екранот"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Поставки"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Автоматска осветленост"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Подигнете да се активира"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Амбиентален екран"</string>
@@ -1748,7 +1745,7 @@
     <string name="reset_network_title" msgid="1395494440355807616">"Ресетирај Wi-Fi, мобилен интернет и Bluetooth"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"Ова ќе ги ресетира сите мрежни поставки, вклучувајќи:\n\n"<li>"Wi‑Fi"</li>\n<li>"Мобилен интернет"</li>\n<li>"Bluetooth"</li></string>
     <string name="erase_euicc_data_button" msgid="728078969563311737">"Избриши"</string>
-    <string name="reset_esim_title" msgid="6152167073280852849">"Избриши преземени SIM-картички"</string>
+    <string name="reset_esim_title" msgid="6152167073280852849">"Избриши ги преземените SIM-картички"</string>
     <string name="reset_esim_desc" msgid="3662444090563399131">"Ова нема да ги откаже пакетите за мобилни услуги. За да преземете SIM-картички за замена, контактирајте со операторот."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Ресетирај поставки"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Да се ресетираат сите мрежни поставки? Ова дејство не може да се врати."</string>
@@ -1765,7 +1762,7 @@
     <string name="main_clear_desc" product="default" msgid="6984348811887162647">"Ова ќе ги избрише сите податоци од "<b>"внатрешната меморија"</b>" на телефонот, заедно со:\n\n"<li>"вашата сметка на Google"</li>\n<li>"податоците и поставките на системот и апликациите"</li>\n<li>"преземените апликации"</li></string>
     <string name="main_clear_accounts" product="default" msgid="7675859115108318537">\n\n"Моментално сте најавени на следниве сметки:\n"</string>
     <string name="main_clear_other_users_present" product="default" msgid="2672976674798019077">\n\n"Присутни се и други корисници на уредот.\n"</string>
-    <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"Музика"</li>\n<li>"Фотографии"</li>\n<li>"Други податоци за корисникот"</li></string>
+    <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"музиката"</li>\n<li>"фотографиите"</li>\n<li>"другите кориснички податоци"</li></string>
     <string name="main_clear_desc_also_erases_esim" msgid="4553469876411831729"><li>"eSIM-картичките"</li></string>
     <string name="main_clear_desc_no_cancel_mobile_plan" msgid="369883568059127035">\n\n"Со ова нема да се откаже вашиот пакет за мобилни услуги."</string>
     <string name="main_clear_desc_erase_external_storage" product="nosdcard" msgid="4441604184663452046">\n\n"За да исчистите музика, слики и други податоци на корисникот, "<b>"меморијата"</b>" треба да се избрише."</string>
@@ -2097,7 +2094,7 @@
     <string name="internal_storage" msgid="999496851424448809">"Внатрешен капацитет"</string>
     <string name="recompute_size" msgid="1098091228370999128">"Повторно пресметување големина..."</string>
     <string name="clear_data_dlg_title" msgid="180446967743732410">"Да се избришат податоците на апликацијата?"</string>
-    <string name="clear_data_dlg_text" msgid="3440011276559762619">"Податоците за апликацијава, вклучително датотеките и поставките, ќе се избришат трајно од уредов"</string>
+    <string name="clear_data_dlg_text" msgid="3440011276559762619">"Податоците, датотеките и поставките на апликацијава ќе се избришат трајно од уредов"</string>
     <string name="dlg_ok" msgid="1421350367857960997">"Во ред"</string>
     <string name="dlg_cancel" msgid="5164705061530774899">"Откажи"</string>
     <string name="dlg_delete" msgid="1790919205039397659">"Избриши"</string>
@@ -3401,6 +3398,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Избриши"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Сите апликации и податоци во сесијата ќе се избришат."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Отстрани"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Гостин (Вие)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Корисници"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Други корисници"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Избришете ја активноста на гостинот"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Избришете ги сите гостински апликации и податоци кога излегувате од режимот на гостин"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Да се избрише активноста на гостин?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Апликациите и податоците од оваа гостинска сесија ќе се избришат сега, а целата идна активност на гостите ќе се брише секој пат кога ќе излезете од режимот на гостин"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Вклучи телефонски повици"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Вклучи телефонски повици и SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Избриши корисник"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index ea1e23d..0e79439 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"സിസ്റ്റത്തിന്റെ ഭാഷ"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"സിസ്‌റ്റം ഡിഫോൾട്ട്"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"ക്രമീകരണത്തിൽ നിന്ന് ഈ ആപ്പിനുള്ള ഭാഷ തിരഞ്ഞെടുക്കാനുള്ള ഓപ്‌ഷൻ ലഭ്യമല്ല."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"ആപ്പിൽ ലഭ്യമായ ഭാഷകളിൽ നിന്ന് ഭാഷ വ്യത്യാസപ്പെട്ടേക്കാം. ചില ആപ്പുകൾ ഈ ക്രമീകരണത്തെ പിന്തുണച്ചേക്കില്ല."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">തിരഞ്ഞെടുത്ത ഭാഷകൾ നീക്കംചെയ്യണോ?</item>
       <item quantity="one">തിരഞ്ഞെടുത്ത ഭാഷ നീക്കംചെയ്യണോ?</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"സ്ക്രീൻ സേവർ"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"സ്ക്രീൻ സേവർ ഉപയോഗിക്കുക"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ചാർജ്/ഡോക്ക് ചെയ്യുമ്പോൾ"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"ഏതിലെങ്കിലും"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"ചാർജ് ചെയ്യുമ്പോൾ"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ഡോക്ക് ചെയ്‌തിരിക്കുമ്പോൾ"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"ഒരിക്കലും വേണ്ട"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"ഓഫ്"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ഫോൺ ഡോക്ക് ചെയ്തിരിക്കുമ്പോൾ ഒപ്പം/അല്ലെങ്കിൽ ഉറക്കത്തിലായിരിക്കുമ്പോൾ ഫോണിൽ നടക്കുന്നതെല്ലാം നിയന്ത്രിക്കുന്നതിന് സ്ക്രീൻ സേവർ ഓണാക്കുക."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"എപ്പോൾ തുടങ്ങണം"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"നിലവിലെ സ്‌ക്രീൻ സേവർ"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"ക്രമീകരണം"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"യാന്ത്രിക തെളിച്ചം"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"സജീവമാക്കാൻ ലിഫ്റ്റുചെയ്യുക"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"പാതിമയക്ക ഡിസ്‌പ്ലേ"</string>
@@ -1761,7 +1757,7 @@
     <string name="main_clear_title" msgid="277664302144837723">"എല്ലാ ഡാറ്റയും മായ്‌ക്കുക (ഫാക്‌ടറി റീസെറ്റ്)"</string>
     <string name="main_clear_short_title" msgid="4752094765533020696">"എല്ലാ ഡാറ്റയും മായ്‌ക്കുക (ഫാക്‌ടറി റീസെറ്റ്)"</string>
     <string name="main_clear_desc" product="tablet" msgid="1651178880680056849">"ഇത് നിങ്ങളുടെ ടാബ്‌ലെറ്റിന്റെ "<b>"ഉള്ളിലെ മെമ്മറിയിൽ"</b>" നിന്നും ഇനിപ്പറയുന്നവ ഉൾപ്പെടെയുള്ള എല്ലാ ഡാറ്റയും മായ്ക്കും:\n\n"<li>"നിങ്ങളുടെ Google അക്കൗണ്ട്"</li>\n<li>"സിസ്‌റ്റം, ആപ്പ് ഡാറ്റയും ക്രമീകരണവും"</li>\n<li>"ഡൗൺലോഡ് ചെയ്‌ത ആപ്പുകൾ"</li></string>
-    <string name="main_clear_desc" product="default" msgid="6984348811887162647">"ഇത് നിങ്ങളുടെ ഫോണിന്‍റെ "<b>"ഉള്ളിലെ മെമ്മറിയിൽ"</b>" നിന്നും ഇനിപ്പറയുന്നവ ഉൾപ്പെയുള്ള എല്ലാ ഡാറ്റയും മായ്ക്കും:\n\n"<li>"നിങ്ങളുടെ Google അക്കൗണ്ട്"</li>\n<li>"സിസ്‌റ്റം, ആപ്പ് ഡാറ്റയും ക്രമീകരണവും"</li>\n<li>"ഡൗൺലോഡ് ചെയ്‌ത ആപ്പുകൾ"</li></string>
+    <string name="main_clear_desc" product="default" msgid="6984348811887162647">"ഇത് നിങ്ങളുടെ ഫോണിന്‍റെ "<b>"ഉള്ളിലെ മെമ്മറിയിൽ"</b>" നിന്നും ഇനിപ്പറയുന്നവ ഉൾപ്പെടെയുള്ള എല്ലാ ഡാറ്റയും മായ്ക്കും:\n\n"<li>"നിങ്ങളുടെ Google അക്കൗണ്ട്"</li>\n<li>"സിസ്‌റ്റം, ആപ്പ് ഡാറ്റയും ക്രമീകരണവും"</li>\n<li>"ഡൗൺലോഡ് ചെയ്‌ത ആപ്പുകൾ"</li></string>
     <string name="main_clear_accounts" product="default" msgid="7675859115108318537">\n\n" ഇനിപ്പറയുന്ന അക്കൗണ്ടുകളിൽ നിങ്ങൾ നിലവിൽ സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്നു:\n"</string>
     <string name="main_clear_other_users_present" product="default" msgid="2672976674798019077">\n\n"ഈ ഉപകരണത്തിൽ മറ്റ് ഉപയോക്താക്കളുണ്ട്.\n"</string>
     <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"സംഗീതം"</li>\n<li>"ഫോട്ടോകൾ"</li>\n<li>"മറ്റ് ഉപയോക്തൃ ഡാറ്റ"</li></string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"ഇല്ലാതാക്കുക"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"ഈ സെഷനിലെ എല്ലാ ആപ്പുകളും ഡാറ്റയും ഇല്ലാതാക്കും."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"നീക്കംചെയ്യുക"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"അതിഥി (നിങ്ങൾ)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"ഉപയോക്താക്കൾ"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"മറ്റ് ഉപയോക്താക്കൾ"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"അതിഥി ആക്‌റ്റിവിറ്റി ഇല്ലാതാക്കുക"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"അതിഥി മോഡിൽ നിന്ന് പുറത്തുകടക്കുമ്പോൾ എല്ലാ അതിഥി ആപ്പുകളും ഡാറ്റയും ഇല്ലാതാക്കുക"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"അതിഥി ആക്‌റ്റിവിറ്റി ഇല്ലാതാക്കണോ?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"ഈ അതിഥി സെഷനിൽ നിന്നുള്ള ആപ്പുകളും ഡാറ്റയും ഇപ്പോൾ ഇല്ലാതാക്കും, അതിഥി മോഡിൽ നിന്ന് നിങ്ങൾ പുറത്തുകടക്കുമ്പോഴെല്ലാം ഭാവിയിലെ എല്ലാ അതിഥി ആക്‌റ്റിവിറ്റിയും ഇല്ലാതാക്കും"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"ഫോൺ കോളുകൾ ഓണാക്കുക"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ഫോൺ കോളുകൾ, SMS എന്നിവ ഓണാക്കുക"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"ഉപയോക്താവിനെ ഇല്ലാതാക്കുക"</string>
@@ -3416,7 +3419,7 @@
     <string name="apps_with_restrictions_settings_button" msgid="2648355133416902221">"അപ്ലിക്കേഷനുകൾക്കായുള്ള ക്രമീകരണങ്ങൾ വിപുലീകരിക്കുക"</string>
     <string name="user_choose_copy_apps_to_another_user" msgid="5914037067347012870">"ഇൻസ്‌റ്റാൾ ചെയ്യാൻ ആപ്പുകൾ തിരഞ്ഞെടുക്കുക"</string>
     <string name="user_copy_apps_menu_title" msgid="5354300105759670300">"ലഭ്യമായ ആപ്പുകൾ ഇൻസ്‌റ്റാൾ ചെയ്യുക"</string>
-    <string name="nfc_payment_settings_title" msgid="2043139180030485500">"കോണ്ടാക്റ്റ്‍ലെസ് പേയ്‌മെന്റുകൾ"</string>
+    <string name="nfc_payment_settings_title" msgid="2043139180030485500">"സമ്പർക്കരഹിത പേയ്‌മെന്റുകൾ"</string>
     <string name="nfc_default_payment_settings_title" msgid="2150504446774382261">"ഡിഫോൾട്ട് പേയ്‌മെന്റ് ആപ്പ്"</string>
     <string name="nfc_default_payment_footer" msgid="978535088340021360">"പേയ്മെന്റ് ആപ്പ് ഉപയോഗിച്ചുള്ള പേയ്മെന്റിന്, ഉപകരണത്തിന്റെ പിൻഭാഗം പേയ്മെന്റ് ടെർമിനലിന് അടുത്തേക്ക് പിടിക്കൂ"</string>
     <string name="nfc_more_details" msgid="1700713533074275233">"കൂടുതലറിയുക"</string>
@@ -5553,7 +5556,7 @@
     <string name="rtt_settings_no_visible" msgid="7440356831140948382"></string>
     <string name="rtt_settings_visible_during_call" msgid="7866181103286073700"></string>
     <string name="rtt_settings_always_visible" msgid="2364173070088756238"></string>
-    <string name="media_output_panel_stop_casting_button" msgid="6094875883164119035">"കാസ്റ്റ് ചെയ്യുന്നത് നിർത്തുക"</string>
+    <string name="media_output_panel_stop_casting_button" msgid="6094875883164119035">"കാസ്‌‌റ്റിംഗ് നിർത്തുക"</string>
     <string name="volte_5G_limited_title" msgid="5908052268836750629">"VoLTE ഓഫാക്കണോ?"</string>
     <string name="volte_5G_limited_text" msgid="7150583768725182345">"ഇത് നിങ്ങളുടെ 5G കണക്ഷനും ഓഫാക്കും.\nവോയ്‌സ് കോൾ ചെയ്യുമ്പോൾ നിങ്ങൾക്ക് ഇന്റർനെറ്റ് ഉപയോഗിക്കാനാവില്ല, ചില ആപ്പുകളും പ്രവർത്തിച്ചേക്കില്ല."</string>
     <string name="no_5g_in_dsds_text" product="default" msgid="772747677303920132">"2 സിമ്മുകൾ ഉപയോഗിക്കുമ്പോൾ ഈ ഫോണിൽ 4G മാത്രമേ ലഭിക്കൂ. "<annotation id="url">"കൂടുതലറിയുക"</annotation></string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index b82cf86..b848b16 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Системийн хэл"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Системийн өгөгдмөл"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Энэ аппын хэлийг Тохиргоо хэсгээс сонгох боломжгүй байна."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Хэл нь аппад боломжтой хэлээс шалтгаалан харилцан адилгүй байж болно. Зарим апп энэ тохиргоог дэмждэггүй байж магадгүй."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">Сонгосон хэлийг хасах уу?</item>
       <item quantity="one">Сонгосон хэлийг хасах уу?</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Дэлгэц амраагч"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Дэлгэц амраагчийг ашиглах"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Цэнэглэх эсвэл суурилуулах үед"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Аль аль нь"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Цэнэглэж байх үед"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Док дээр суурилуулсан үед"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Хэзээ ч үгүй"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Идэвхгүй"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Утсыг суурилуулсан ба/эсвэл идэвхгүй үед хэрхэхийг удирдахын тулд дэлгэц амраагчийг асаана уу."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Эхлэх үе"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Одоогийн дэлгэц амраагч"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Тохиргоо"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Автомат гэрэлтүүлэг"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Сэрээхийн тулд өргөх"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Идэвхгүй дэлгэц"</string>
@@ -1975,7 +1971,7 @@
     <string name="lockpassword_confirm_your_password_header_frp" msgid="7932240547542564033">"Нууц үг баталгаажуулах"</string>
     <string name="lockpassword_invalid_pin" msgid="7530854476819820600">"ПИН код буруу байна"</string>
     <string name="lockpassword_invalid_password" msgid="1588184930542221687">"Нууц үг буруу байна"</string>
-    <string name="lockpattern_need_to_unlock_wrong" msgid="8109305107409924083">"Зурган түгжээ буруу байна"</string>
+    <string name="lockpattern_need_to_unlock_wrong" msgid="8109305107409924083">"Хээ буруу байна"</string>
     <string name="lock_settings_title" msgid="665707559508132349">"Төхөөрөмжийн аюулгүй байдал"</string>
     <string name="lockpattern_change_lock_pattern_label" msgid="5853706275279878879">"Тайлах хээг өөрчлөх"</string>
     <string name="lockpattern_change_lock_pin_label" msgid="7327409886587802756">"Тайлах ПИН өөрчлөх"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Устгах"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Энэ харилцан үйлдлийн бүх апп болон дата устах болно."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Хасах"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Зочин (Та)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Хэрэглэгчид"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Бусад хэрэглэгч"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Зочны үйл ажиллагааг устгах"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Бүх зочны апп болон өгөгдлийг зочны горимоос гарах үед устгана"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Зочны үйл ажиллагааг устгах уу?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Энэ зочны харилцан үйлдлийн аппууд болон өгөгдлийг одоо устгах бөгөөд ирээдүйн бүх зочны үйл ажиллагааг таныг зочны горимоос гарах бүрд устгана"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Утасны дуудлагыг идэвхжүүлэх"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Утасны дуудлага &amp; SMS авах"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Хэрэглэгчийг устгах"</string>
@@ -4544,9 +4547,9 @@
     <string name="background_check_pref" msgid="5304564658578987535">"Дэвсгэрийг шалгах"</string>
     <string name="background_check_title" msgid="225170874283229686">"Бүтэн дэвсгэрийн хандалт"</string>
     <string name="assist_access_context_title" msgid="5201495523514096201">"Дэлгэцийн текстийг ашиглах"</string>
-    <string name="assist_access_context_summary" msgid="6951814413185646275">"Туслах апп-ийг дэлгэцийн агуулгад текстээр хандахыг зөвшөөрөх"</string>
+    <string name="assist_access_context_summary" msgid="6951814413185646275">"Туслах аппад дэлгэцийн агуулгад текстээр хандахыг зөвшөөрөх"</string>
     <string name="assist_access_screenshot_title" msgid="4395902231753643633">"Дэлгэцийн агшныг ашиглах"</string>
-    <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"Туслах апп-ийг дэлгэцийн зурагт хандахыг зөвшөөрөх"</string>
+    <string name="assist_access_screenshot_summary" msgid="5276593070956201863">"Туслах аппад дэлгэцийн зурагт хандахыг зөвшөөрөх"</string>
     <string name="assist_flash_title" msgid="5449512572885550108">"Дэлгэц гэрэлтэх"</string>
     <string name="assist_flash_summary" msgid="3032289860177784594">"Дэлгэц эсвэл дэлгэцийн зургаас текст рүү туслах апп хандах үед дэлгэцийн ирмэг гэрэлтэх"</string>
     <string name="assist_footer" msgid="8248015363806299068">"Туслах апп нь таны харж байгаа дэлгэцийн мэдээлэлд тулгуурлан танд туслах боломжтой. Зарим апп нь танд нэгдсэн тусламжийн үйлчилгээ үзүүлэх үүднээс эхлүүлэгч болон дуун оролтыг дэмждэг."</string>
@@ -5103,7 +5106,7 @@
     <string name="app_names_concatenation_template_2" msgid="8320181646458855457">"<xliff:g id="FIRST_APP_NAME">%1$s</xliff:g>, <xliff:g id="SECOND_APP_NAME">%2$s</xliff:g>"</string>
     <string name="app_names_concatenation_template_3" msgid="7019703249717854148">"<xliff:g id="FIRST_APP_NAME">%1$s</xliff:g>, <xliff:g id="SECOND_APP_NAME">%2$s</xliff:g>, <xliff:g id="THIRD_APP_NAME">%3$s</xliff:g>"</string>
     <string name="storage_default_internal_storage" msgid="4055660218818688131">"Энэ төхөөрөмж"</string>
-    <string name="storage_photos_videos" msgid="6926197783745481869">"Зураг &amp; видео"</string>
+    <string name="storage_photos_videos" msgid="6926197783745481869">"Зураг, видео"</string>
     <string name="storage_music_audio" msgid="1185624135490182822">"Хөгжим &amp; аудио"</string>
     <string name="storage_games" msgid="1176568610086802469">"Тоглоом"</string>
     <string name="storage_other_apps" msgid="5902520888043081176">"Бусад апп"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index a8147de..f430b68 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -225,11 +225,9 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"सुचवलेल्या भाषा"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"सर्व भाषा"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"सिस्टीम भाषा"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"सिस्टीम डीफॉल्ट"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"या अ‍ॅपसाठीची भाषा निवडणे हे सेटिंग्ज मध्ये उपलब्ध नाही."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"अ‍ॅपमध्ये उपलब्ध असलेल्या भाषांपेक्षा भाषा वेगळी असू शकते. काही अ‍ॅप्स कदाचित या सेटिंगला सपोर्ट करत नाहीत."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">निवडक भाषा काढायच्या?</item>
       <item quantity="one">निवडक भाषा काढायची?</item>
@@ -1430,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"स्क्रीन सेव्हर"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"स्क्रीन सेव्हर वापरा"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"चार्ज होत असताना किंवा डॉक केलेले असताना"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"दोन्ही"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"चार्ज होत असताना"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"डॉक केलेले असताना"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"कधीही नाही"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"बंद"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"फोन डॉक केलेला असताना आणि/किंवा निष्क्रिय असताना काय होते हे नियंत्रित करण्यासाठी स्क्रीन सेव्हर सुरू करा."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"कधी सुरू करायचे"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"सध्याचा स्क्रीन सेव्हर"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"सेटिंग्ज"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"स्वयंचलित चकाकी"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"सक्रिय करण्‍यासाठी लिफ्‍ट"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"अँबियंट डिस्प्ले"</string>
@@ -3402,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"हटवा"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"या सत्रातील सर्व अ‍ॅप्स आणि डेटा हटवला जाईल."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"काढा"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"अतिथी (तुम्ही)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"वापरकर्ते"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"इतर वापरकर्ते"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"अतिथी अ‍ॅक्टिव्हिटी हटवा"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"अतिथी मोडमधून बाहेर पडताना सर्व अतिथी अ‍ॅप्स आणि डेटा हटवा"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"अतिथी अ‍ॅक्टिव्हिटी हटवायची का?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"या अतिथी सत्रातील अ‍ॅप्स आणि डेटा आता हटवला जाईल व प्रत्येक वेळी तुम्ही अतिथी मोडमधून बाहेर पडाल, तेव्हा भविष्यातील सर्व अतिथी अ‍ॅक्टिव्हिटी हटवली जाईल"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"फोन कॉल सुरू करा"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"फोन कॉल आणि SMS सुरू करा"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"वापरकर्ता हटवा"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index d459921..32cecad 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Penyelamat skrin"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Gunakan penyelamat skrin"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Semasa dicas atau didok"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Salah satu"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Semasa mengecas"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Semasa didok"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Jangan sekali-kali"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Mati"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Untuk mengawal perkara yang berlaku semasa telefon didok dan/atau tidur, hidupkan penyelamat skrin."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Masa untuk mulakan"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Penyelamat skrin semasa"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Tetapan"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Kecerahan automatik"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Angkat untuk bangunkan"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Paparan ambien"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Padam"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Semua apl dan data dalam sesi ini akan dipadam."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Alih keluar"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Tetamu (Anda)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Pengguna"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Pengguna lain"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Padamkan aktiviti tetamu"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Padamkan semua apl dan data tetamu semasa keluar daripada mod tetamu"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Padamkan aktiviti tetamu?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Apl dan data daripada sesi tetamu ini akan dipadamkan sekarang dan semua aktiviti tetamu pada masa hadapan akan dipadamkan setiap kali anda keluar daripada mod tetamu"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Hidupkan panggilan telefon"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Hidupkan panggilan telefon &amp; SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Padamkan pengguna"</string>
@@ -3922,7 +3926,7 @@
     <string name="lock_screen_notifications_summary_show" msgid="6540443483088311328">"Tunjukkan semua kandungan pemberitahuan"</string>
     <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Kandungan sensitif apabila tidak berkunci sahaja"</string>
     <string name="lock_screen_notifications_summary_disable" msgid="3388290397947365744">"Jangan tunjukkan pemberitahuan sama sekali"</string>
-    <string name="lock_screen_notifications_interstitial_message" msgid="4688399629301178487">"Bagaimanakah anda ingin skrin kunci paparkan?"</string>
+    <string name="lock_screen_notifications_interstitial_message" msgid="4688399629301178487">"Bagaimanakah paparan skrin kunci yang anda inginkan?"</string>
     <string name="lock_screen_notifications_interstitial_title" msgid="1360388192096354315">"Skrin kunci"</string>
     <string name="lock_screen_notifications_summary_show_profile" msgid="8373401288962523946">"Tunjukkan semua kandungan pemberitahuan kerja"</string>
     <string name="lock_screen_notifications_summary_hide_profile" msgid="2183455323048921579">"Sembunyikan kandungan kerja yang sensitif"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index b6758be..2293dcf 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"စနစ်၏ ဘာသာစကား"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"စနစ်မူရင်း"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"ဤအက်ပ်အတွက် ‘ဆက်တင်များ’ မှ ဘာသာစကား ရွေးချယ်မှု မရရှိနိုင်ပါ။"</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"ဘာသာစကားသည် အက်ပ်တွင် ရရှိနိုင်သော ဘာသာစကားများမှ ကွဲပြားနိုင်သည်။ အချို့အက်ပ်များက ဤဆက်တင်ကို မပံ့ပိုးနိုင်ပါ။"</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">ရွေးထားသည့် ဘာသာစကားများကို ဖယ်ရှားမလား။</item>
       <item quantity="one">ရွေးထားသည့် ဘာသာစကားကို ဖယ်ရှားမလား။</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"ဖန်သားပြင်ချွေတာစနစ်"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"ဖန်သားပြင်ချွေတာစနစ် သုံးခြင်း"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"အားသွင်းနေစဉ် သို့မဟုတ် တပ်ဆင်ထားစဉ်"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"နှစ်မျိုးအနက် တမျိုးရွေးချယ်ရန်"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"အားသွင်းနေစဉ်"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"အထိုင်တွင်တပ်ထားစဉ်"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"ဘယ်တော့မှ"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"ပိတ်"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ဖုန်းကို အထိုင်တွင် တပ်ဆင်လိုက်ချိန် နှင့်/သို့မဟုတ် အနားယူနေချိန်တွင် လုပ်ဆောင်မည့်အရာများကို ထိန်းချုပ်ရန်၊ ဖန်သားပြင်အသုံးပြုမှု ချွေတာမှုစနစ်ကို ဖွင့်ပါ။"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"စတင်ရန်အချိန်"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"လက်ရှိဖန်သားပြင်ချွေတာစနစ်"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"ဆက်တင်များ"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"အလိုအလျောက်အလင်းချိန်ခြင်း။"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"‘မ’ ယူ၍ နှိုးရန်"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"ဝန်းကျင်ပြသမှု"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"ဖျက်ရန်"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"ဤချိတ်ဆက်မှုမှ အက်ပ်နှင့် ဒေတာအားလုံးကို ဖျက်ပါမည်။"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"ဖယ်ထုတ်ပါ"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"ဧည့်သည် (သင်)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"အသုံးပြုသူများ"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"အခြားအသုံးပြုသူများ"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"ဧည့်သည်လုပ်ဆောင်ချက် ဖျက်ရန်"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"ဧည့်သည်မုဒ်မှ ထွက်ချိန်တွင် ဧည့်သည်အက်ပ်နှင့် ဒေတာအားလုံးကို ဖျက်ရန်"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"ဧည့်သည်လုပ်ဆောင်ချက် ဖျက်မလား။"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"ဤဧည့်သည် စက်ရှင်မှ အက်ပ်နှင့် ဒေတာများကို ယခုဖျက်လိုက်မည်ဖြစ်ပြီး လာမည့်ဧည့်သည် လုပ်ဆောင်ချက်အားလုံးကို ဧည့်သည်မုဒ်မှ ထွက်ချိန်တိုင်းတွင် ဖျက်လိုက်ပါမည်"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"ဖုန်းခေါ်ဆိုမှုများ ဖွင့်ရန်"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ဖုန်းခေါ်ဆိုမှုနှင့် SMS ဖွင့်မည်"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"အသုံးပြုသူကို ဖျက်ပါ"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 3e148ce..3745ed9 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Skjermsparer"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Bruk skjermsparer"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Når enheten lades / er i dokken"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Begge"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Når enheten lades"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Når enheten er i dokken"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Aldri"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Av"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"For å kontrollere hva som skjer når telefonen er plassert i dokken og/eller i hvilemodus, slå på skjermspareren."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Starttidspunkt"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Aktiv skjermsparer"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Innstillinger"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatisk lysstyrke"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Aktiver enheten med løftebevegelser"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Passiv skjerm"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Slett"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Alle apper og data i denne økten blir slettet."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Fjern"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gjest (du)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Brukere"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Andre brukere"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Slett gjesteaktivitet"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Slett alle gjesteapper og -data når du avslutter gjestemodus"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Vil du slette gjesteaktivitet?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Apper og data fra denne gjesteøkten slettes nå, og all fremtidig gjesteaktivitet slettes hver gang du avslutter gjestemodus"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Slå på telefonsamtaler"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Slå på telefonsamtaler og SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Slett brukeren"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 94b1d15..615c037 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -101,8 +101,8 @@
     <string name="progress_scanning" msgid="2564746192843011826">"खोजी गर्दै"</string>
     <string name="bluetooth_no_devices_found" msgid="7704539337219953182">"नजिकै कुनै ब्लुटुथ उपकरण भेटिएन।"</string>
     <string name="bluetooth_notif_ticker" msgid="209515545257862858">"ब्लुटुथ जोडा मिलाउन अनुरोध"</string>
-    <string name="bluetooth_notif_title" msgid="1196532269131348647">"जोडी पार्ने अनुरोध"</string>
-    <string name="bluetooth_notif_message" msgid="5584717784198086653">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>सँग जोड्न ट्याप गर्नुहोस्।"</string>
+    <string name="bluetooth_notif_title" msgid="1196532269131348647">"कनेक्ट गर्ने अनुरोध"</string>
+    <string name="bluetooth_notif_message" msgid="5584717784198086653">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सँग कनेक्ट गर्न ट्याप गर्नुहोस्।"</string>
     <string name="bluetooth_show_received_files" msgid="685424727760622632">"प्राप्त गरिएका फाइलहरू"</string>
     <string name="bluetooth_devices_card_off_title" msgid="1320149821945129127">"ब्लुटुथ निष्क्रिय छ"</string>
     <string name="bluetooth_devices_card_off_summary" msgid="2276527382891105858">"यसलाई सक्रिय गर्न ट्याप गर्नुहोस्"</string>
@@ -225,8 +225,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"सिफारिस गरिएका भाषाहरू"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"सबै भाषा"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"सिस्टमको भाषा"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"सिस्टम डिफल्ट"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"सेटिङबाट यो एपका लागि भाषा चयन गर्न मिल्दैन।"</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -326,7 +325,7 @@
     </plurals>
     <string name="location_settings_loading_app_permission_stats" msgid="6054103701535557342">"लोड गर्दै…"</string>
     <string name="location_settings_footer_general" msgid="1040507068701188821">"वरपर रहेका ब्लुटुथ चल्ने डिभाइसहरू खोज्ने अनुमति दिइएका एपहरूले कनेक्ट गरिएका डिभाइसहरूको सापेक्ष लोकेसन पत्ता लगाउन सक्छन्।"</string>
-    <string name="location_settings_footer_location_off" msgid="8568995909147566720">"एप तथा सेवाहरूलाई स्थानसम्बन्धी जानकारी प्रयोग गर्ने अनुमति दिइएको छैन। तपाईंले कुनै आपत्‌कालीन नम्बरमा कल गर्दा वा टेक्स्ट म्यासेज पठाउँदा भने आपत्‌कालीन सेवा प्रदान गर्ने निकायलाई तपाईंको डिभाइसको स्थानसम्बन्धी जानकारी पठाइन सक्छ।"</string>
+    <string name="location_settings_footer_location_off" msgid="8568995909147566720">"एप तथा सेवाहरूलाई लोकेसन प्रयोग गर्ने अनुमति दिइएको छैन। तपाईंले कुनै आपत्‌कालीन नम्बरमा कल गर्दा वा टेक्स्ट म्यासेज पठाउँदा भने आपत्‌कालीन सेवा प्रदान गर्ने निकायलाई तपाईंको डिभाइसको लोकेनस पठाइन सक्छ।"</string>
     <string name="location_settings_footer_learn_more_content_description" msgid="5329024810729665156">"स्थानसम्बन्धी सेटिङका बारेमा थप जान्नुहोस्।"</string>
     <string name="account_settings_title" msgid="9138880127246241885">"खाताहरू"</string>
     <string name="security_settings_title" msgid="6710768415432791970">"सुरक्षा"</string>
@@ -1430,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"स्क्रिन सेभर"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"स्क्रिन सेभर प्रयोग गरियोस्"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"चार्ज वा डक गरिरहँदा"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"कुनै"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"चार्ज गरिरहेका बेला"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"डक गरिएको बेला"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"कहिल्यै पनि होइन"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"बन्द"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"फोन डकमा र/वा शयन अवस्थामा हुँदा हुने कुरालाई नियन्त्रण गर्न स्क्रिन सेभरलाई अन गर्नुहोस्।"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"सुरु हुने समय"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"हालको स्क्रिन सेभर"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"सेटिङहरू"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"स्वचालित उज्यालोपना"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"चालु गर्न उठाउनुहोस्"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"एम्बियन्ट प्रदर्शन"</string>
@@ -1761,8 +1757,8 @@
     <string name="reset_esim_error_msg" msgid="4441504470684307370">"कुनै त्रुटि भएका कारण डाउनलोड गरिएका SIM हरू मेटाउन सकिएन।\n\nआफ्नो यन्त्र पुनः सुरु गरी फेरि प्रयास गर्नुहोस्।"</string>
     <string name="main_clear_title" msgid="277664302144837723">"सबै डेटा मेटाउनुहोस् (फ्याक्ट्री रिसेट गर्नुहोस्)"</string>
     <string name="main_clear_short_title" msgid="4752094765533020696">"सबै डेटा मेटाउनुहोस् (फ्याक्ट्री रिसेट गर्नुहोस्)"</string>
-    <string name="main_clear_desc" product="tablet" msgid="1651178880680056849">"यसो गर्नुभयो भने तपाईंको ट्याब्लेटको "<b>"आन्तरिक भण्डारण"</b>"मा भएका निम्नलगायतका सबै डेटा मेटाइने छ:\n\n"<li>"तपाईंको Google खाता"</li>\n<li>"प्रणाली र एपका डेटा तथा सेटिङ"</li>\n<li>"डाउनलोड गरिएका एपहरू"</li></string>
-    <string name="main_clear_desc" product="default" msgid="6984348811887162647">"यसो गर्नुभयो भने तपाईंको फोनको "<b>"आन्तरिक भण्डारण"</b>"मा भएका निम्नलगायतका सबै डेटा मेटाइने छ:\n\n"<li>"तपाईंको Google खाता"</li>\n<li>"प्रणाली र एपका डेटा तथा सेटिङ"</li>\n<li>"डाउनलोड गरिएका एपहरू"</li></string>
+    <string name="main_clear_desc" product="tablet" msgid="1651178880680056849">"यसो गर्नुभयो भने तपाईंको ट्याब्लेटको "<b>"आन्तरिक भण्डारण"</b>"मा भएका निम्नलगायतका सबै डेटा मेटाइने छ:\n\n"<li>"तपाईंको Google खाता"</li>\n<li>"सिस्टम र एपका डेटा तथा सेटिङ"</li>\n<li>"डाउनलोड गरिएका एपहरू"</li></string>
+    <string name="main_clear_desc" product="default" msgid="6984348811887162647">"यसो गर्नुभयो भने तपाईंको फोनको "<b>"आन्तरिक भण्डारण"</b>"मा भएका निम्नलगायतका सबै डेटा मेटाइने छ:\n\n"<li>"तपाईंको Google खाता"</li>\n<li>"सिस्टम र एपका डेटा तथा सेटिङ"</li>\n<li>"डाउनलोड गरिएका एपहरू"</li></string>
     <string name="main_clear_accounts" product="default" msgid="7675859115108318537">\n" \nतपाईं हाल निम्न खाताहरूमा साइन इन हुनुहुन्छ:\n"</string>
     <string name="main_clear_other_users_present" product="default" msgid="2672976674798019077">\n\n"यो डिभाइसमा अन्य प्रयोगकर्ताहरू छन्।\n"</string>
     <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"सङ्गीत"</li>\n<li>"फोटोहरू"</li>\n<li>"प्रयोगकर्ताको अन्य डेटा"</li></string>
@@ -1863,7 +1859,7 @@
     <string name="location_recent_location_access_see_all" msgid="4203102419355323325">"सबै हेर्नुहोस्"</string>
     <string name="location_recent_location_access_view_details" msgid="5803264082558504544">"विवरणहरू हेर्नुहोस्"</string>
     <string name="location_no_recent_apps" msgid="6814206631456177033">"अहिले कुनै पनि एपहरूले लोकेसन मागेका छैनन्"</string>
-    <string name="location_no_recent_accesses" msgid="6031735777805464247">"कुनै पनि अनुप्रयोगले हाल स्थानमाथि पहुँच गरेको छैन"</string>
+    <string name="location_no_recent_accesses" msgid="6031735777805464247">"कुनै पनि एपले हालै लोकेसन प्रयोग गरेको छैन"</string>
     <string name="location_high_battery_use" msgid="4277318891200626524">"उच्च ब्याट्री प्रयोग"</string>
     <string name="location_low_battery_use" msgid="5218950289737996431">"कम ब्याट्री प्रयोग"</string>
     <string name="location_scanning_wifi_always_scanning_title" msgid="5004781272733434794">"Wi-Fi को खोजी"</string>
@@ -2631,7 +2627,7 @@
     <string name="keywords_voice_access" msgid="7807335263195876454"></string>
     <string name="fast_pair_settings" msgid="3308819519080016185">"फास्ट पेयर"</string>
     <string name="fast_pair_settings_summary" msgid="1786567691058982987">"फास्ट पेयर सुविधा चल्ने नजिकैका ब्लुटुथ डिभाइस पत्ता लगाउँछ।"</string>
-    <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"नजिकैका डिभाइसहरू स्क्यान गर्नुहोस्"</string>
+    <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"नजिकका डिभाइस खोज्नुहोस्"</string>
     <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"सेभ गरिएका डिभाइसहरू"</string>
     <string name="print_settings" msgid="8519810615863882491">"प्रिन्टिङ"</string>
     <string name="print_settings_summary_no_service" msgid="6721731154917653862">"निष्क्रिय छ"</string>
@@ -3401,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"मेट्नुहोस्"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"यो सत्रमा भएका सबै एपहरू र डेटा मेटाइने छ।"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"हटाउनुहोस्"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"अतिथि (तपाईं)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"प्रयोगकर्ताहरू"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"अन्य प्रयोगकर्ताहरू"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"अतिथि सत्रका क्रियाकलाप मेटाउनुहोस्"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"अतिथि मोडबाट बाहिरिँदा अतिथि सत्रका सबै एप तथा डेटा मेटाइऊन्"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"अतिथि सत्रका क्रियाकलाप मेटाउने हो?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"यो अतिथि सत्रका एप तथा डेटा अहिले नै मेटाइने छ र तपाईं अतिथि मोडबाट बाहिरिँदैपिच्छे अतिथि सत्रमा गरिने भविष्यका सबै क्रियाकलाप मेटाइने छन्"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"फोन गर्ने सेवा सक्रिय गरियोस्"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"फोन कल तथा SMS सक्षम पार्नुहोस्"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"प्रयोगकर्ता मेटाउनुहोस्"</string>
@@ -5652,7 +5655,7 @@
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"\"एप पिनिङ\" प्रयोग गरियोस्"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"\'विकासकर्ता विकल्पहरू\' प्रयोग गरियोस्"</string>
     <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"प्रिन्ट सेवा चलाउनुहोस्"</string>
-    <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"एकभन्दा बढी व्यक्तिलाई प्रयोग गर्न दिनुहोस्"</string>
+    <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"एकभन्दा बढी व्यक्तिलाई प्रयोग गर्न दिइयोस्"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"\'वायरलेस डिबगिङ\' सुविधा प्रयोग गरियोस्"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"\'ग्राफिक्स ड्राइभरसम्बन्धी प्राथमिकता\' प्रयोग गर्नुहोस्"</string>
     <string name="battery_saver_main_switch_title" msgid="5072135547489779352">"\'ब्याट्री सेभर\' नामक सुविधा प्रयोग गर्नुहोस्"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 4bb049f..ee2fd61 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Screensaver"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Screensaver gebruiken"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Tijdens opladen of docken"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Tijdens beide"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Tijdens het opladen"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Tijdens het docken"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nooit"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Uit"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Zet de screensaver aan om te bepalen wat er gebeurt als de telefoon is gedockt en/of de slaapstand actief is."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Wanneer starten"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Huidige screensaver"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Instellingen"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatische helderheid"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Optillen om te activeren"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Inactief scherm"</string>
@@ -2563,7 +2560,7 @@
     <string name="captioning_preview_title" msgid="2888561631323180535">"Voorbeeld"</string>
     <string name="captioning_standard_options_title" msgid="5360264497750980205">"Standaardopties"</string>
     <string name="captioning_locale" msgid="5533303294290661590">"Taal"</string>
-    <string name="captioning_text_size" msgid="8039448543171463017">"Tekengrootte"</string>
+    <string name="captioning_text_size" msgid="8039448543171463017">"Lettergrootte"</string>
     <string name="captioning_preset" msgid="4174276086501638524">"Ondertitelstijl"</string>
     <string name="captioning_custom_options_title" msgid="3858866498893566351">"Aangepaste opties"</string>
     <string name="captioning_background_color" msgid="5231412761368883107">"Achtergrondkleur"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Verwijderen"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Alle apps en gegevens in deze sessie worden verwijderd."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Verwijderen"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gast (jij)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Gebruikers"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Andere gebruikers"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Gastactiviteit verwijderen"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Verwijder alle gast-apps en -gegevens bij het afsluiten van de gastmodus"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Gastactiviteit verwijderen?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Apps en gegevens van deze gastsessie worden nu verwijderd en alle toekomstige gastactiviteit wordt verwijderd telkens wanneer je de gastmodus afsluit"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Telefoonoproepen aanzetten"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Telefoonoproepen en sms aanzetten"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Gebruiker verwijderen"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index f16b6d4..68bed81 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -225,8 +225,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"ପ୍ରସ୍ତାବିତ ଭାଷାଗୁଡ଼ିକ"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"ସମସ୍ତ ଭାଷା"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"ସିଷ୍ଟମ ଭାଷା"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"ସିଷ୍ଟମ ଡିଫଲ୍ଟ"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"ସେଟିଂସରୁ ଏହି ଆପ ପାଇଁ ଭାଷା ଚୟନ ଉପଲବ୍ଧ ନାହିଁ।"</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -1430,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"ସ୍କ୍ରିନ୍‌ ସେଭର୍‌"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"ସ୍କ୍ରିନ ସେଭର ବ୍ୟବହାର କରନ୍ତୁ"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ଚାର୍ଜ ହେଉଥିବା କିମ୍ବା ଡକ୍‌ ହୋଇଥିବା ବେଳେ"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"ଏହା କିମ୍ବା ତାହା"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"ଚାର୍ଜ ହେଉଥିବାବେଳେ"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ଡକ୍‌ ହୋଇଥିବାବେଳେ"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"ଆଦୌ ନୁହେଁ"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"ବନ୍ଦ"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ଫୋନ୍‌ ଡକ୍‌ କରାଯାଇଥିଲେ ଏବଂ/କିମ୍ବା ସୁପ୍ତ ଥିବାବେଳେ ସେଥିରେ ହେଉଥିବା ଘଟଣାଗୁଡ଼ିକୁ ନିୟନ୍ତ୍ରଣ କରିବା ପାଇଁ ସ୍କ୍ରୀନ୍‌ ସେଭର୍‌ ଅନ୍‌ କରନ୍ତୁ।"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"କେତେବେଳେ ଆରମ୍ଭ କରିବେ"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"ବର୍ତ୍ତମାନର ସ୍କ୍ରିନ୍ ସେଭର୍"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"ସେଟିଂସ"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"ସ୍ୱଚାଳିତ ଉଜ୍ଜ୍ୱଳତା"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"ଉଠାଇଲେ ଜାଗ୍ରତ ହେବ"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"ଆମ୍ବିଏଣ୍ଟ୍ ଡିସ୍‌ପ୍ଲେ"</string>
@@ -1749,7 +1745,7 @@
     <string name="reset_network_desc" msgid="1112523764899788246">"ଏହା:\n\n"<li>"ୱାଇ-ଫାଇ"</li>\n<li>"ମୋବାଇଲ ଡାଟା"</li>\n<li>"ବ୍ଲୁଟୁଥ୍‍"</li>" ସମେତ ସମସ୍ତ ନେଟୱାର୍କ ସେଟିଂସକୁ ରିସେଟ କରିବ"</string>
     <string name="erase_euicc_data_button" msgid="728078969563311737">"ଖାଲି କରନ୍ତୁ"</string>
     <string name="reset_esim_title" msgid="6152167073280852849">"ଡାଉନଲୋଡ୍ ହୋଇଥିବା SIMକୁ ଖାଲି କରନ୍ତୁ"</string>
-    <string name="reset_esim_desc" msgid="3662444090563399131">"ଏହା କୌଣସି ମୋବାଇଲ ସେବା ପ୍ଲାନକୁ ବାତିଲ୍ କରିବ ନାହିଁ। ରିପ୍ଲେସମେଣ୍ଟ SIMଗୁଡ଼ିକୁ ଡାଉନଲୋଡ୍ କରିବାକୁ ଆପଣଙ୍କ କ୍ୟାରିଅରଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string>
+    <string name="reset_esim_desc" msgid="3662444090563399131">"ଏହା କୌଣସି ମୋବାଇଲ ସେବା ପ୍ଲାନକୁ ବାତିଲ୍ କରିବ ନାହିଁ। ରିପ୍ଲେସମେଣ୍ଟ SIMଗୁଡ଼ିକୁ ଡାଉନଲୋଡ କରିବା ପାଇଁ ଆପଣଙ୍କ କ୍ୟାରିଅର ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"ସେଟିଂସ ରିସେଟ କରନ୍ତୁ"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"ସମସ୍ତ ନେଟୱାର୍କ ସେଟିଂସ ରିସେଟ କରିବେ? ଏହାକୁ ଆପଣ ଆଉ ପୂର୍ବବତ୍ କରିପାରିବେ ନାହିଁ।"</string>
     <string name="reset_network_final_desc_esim" msgid="8342882682282693844">"ସମସ୍ତ ନେଟୱାର୍କ ସେଟିଂସ ରିସେଟ ଏବଂ ଡାଉନଲୋଡ ହୋଇଥିବା SIMକୁ ଖାଲି କରିବେ କି? ଆପଣ ଏହି କାର୍ଯ୍ୟକୁ ପୂର୍ବବତ୍ କରିପାରିବେ ନାହିଁ।"</string>
@@ -3401,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"ଡିଲିଟ୍‌ କରନ୍ତୁ"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"ଏହି ସେସନ୍‌ର ସମସ୍ତ ଆପ୍‌ ଏବଂ ଡାଟା ଡିଲିଟ୍‍ ହୋଇଯିବ।"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"କାଢିଦିଅନ୍ତୁ"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"ଅତିଥି (ଆପଣ)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"ଉପଯୋଗକର୍ତ୍ତାମାନେ"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"ଅନ୍ୟ ଉପଯୋଗକର୍ତ୍ତାମାନେ"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"ଅତିଥି କାର୍ଯ୍ୟକଳାପକୁ ଡିଲିଟ କରନ୍ତୁ"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"ଅତିଥି ମୋଡରୁ ବାହାରକୁ ଯିବା ସମୟରେ ସମସ୍ତ ଅତିଥି ଆପ ଏବଂ ଡାଟା ଡିଲିଟ କରନ୍ତୁ"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"ଅତିଥି କାର୍ଯ୍ୟକଳାପକୁ ଡିଲିଟ କରିବେ?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"ବର୍ତ୍ତମାନ ଏହି ଅତିଥି ସେସନରୁ ଆପ୍ସ ଏବଂ ଡାଟା ଡିଲିଟ କରାଯିବ ଏବଂ ଆପଣ ପ୍ରତ୍ୟେକ ଥର ଅତିଥି ମୋଡରୁ ବାହାରକୁ ଗଲେ ଭବିଷ୍ୟତର ସମସ୍ତ ଅତିଥି କାର୍ଯ୍ୟକଳାପକୁ ଡିଲିଟ କରାଯିବ"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"ଫୋନ୍‌ କଲ୍‌ ଚାଲୁ କରନ୍ତୁ"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ଫୋନ୍‌ କଲ୍‌ ଓ SMS ଚାଲୁ କରନ୍ତୁ"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ଡିଲିଟ୍‌ କରନ୍ତୁ"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 3d1ab1d..5d9dd15 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -102,7 +102,7 @@
     <string name="bluetooth_no_devices_found" msgid="7704539337219953182">"ਕੋਈ ਨੇੜਲੀਆਂ Bluetooth ਡਿਵਾਈਸਾਂ ਨਹੀਂ ਮਿਲੀਆਂ।"</string>
     <string name="bluetooth_notif_ticker" msgid="209515545257862858">"ਬਲੂਟੁੱਥ ਜੋੜਾਬੱਧ ਕਰਨ ਦੀ ਬੇਨਤੀ"</string>
     <string name="bluetooth_notif_title" msgid="1196532269131348647">"ਜੋੜਾਬੱਧ ਕਰਨ ਦੀ ਬੇਨਤੀ"</string>
-    <string name="bluetooth_notif_message" msgid="5584717784198086653">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਨਾਲ ਜੋੜਾ ਬਣਾਉਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
+    <string name="bluetooth_notif_message" msgid="5584717784198086653">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਨਾਲ ਜੋੜਾਬੱਧ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
     <string name="bluetooth_show_received_files" msgid="685424727760622632">"ਪ੍ਰਾਪਤ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ"</string>
     <string name="bluetooth_devices_card_off_title" msgid="1320149821945129127">"ਬਲੂਟੁੱਥ ਬੰਦ ਹੈ"</string>
     <string name="bluetooth_devices_card_off_summary" msgid="2276527382891105858">"ਇਸਨੂੰ ਚਾਲੂ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
@@ -225,11 +225,9 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"ਸੁਝਾਈਆਂ ਗਈਆਂ ਭਾਸ਼ਾਵਾਂ"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"ਸਿਸਟਮ ਦੀ ਭਾਸ਼ਾ"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"ਸਿਸਟਮ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਸ ਐਪ ਲਈ ਭਾਸ਼ਾ ਦੀ ਚੋਣ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।"</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"ਭਾਸ਼ਾ ਐਪ ਵਿਚਲੀਆਂ ਉਪਲਬਧ ਭਾਸ਼ਾਵਾਂ ਨਾਲੋਂ ਵੱਖਰੀ ਹੋ ਸਕਦੀ ਹੈ। ਕੁਝ ਐਪਾਂ ਸ਼ਾਇਦ ਇਸ ਸੈਟਿੰਗਾਂ ਦਾ ਸਮਰਥਨ ਨਾ ਕਰਨ।"</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">ਕੀ ਚੁਣੀ ਗਈ ਭਾਸ਼ਾ ਨੂੰ ਹਟਾਉਣਾ ਹੈ?</item>
       <item quantity="other">ਕੀ ਚੁਣੀਆਂ ਗਈਆਂ ਭਾਸ਼ਾਵਾਂ ਨੂੰ ਹਟਾਉਣਾ ਹੈ?</item>
@@ -845,7 +843,7 @@
     <string name="bluetooth_preference_no_found_devices" msgid="1331122763066030155">"ਕੋਈ ਡਿਵਾਈਸਾਂ ਉਪਲਬਧ ਨਹੀਂ"</string>
     <string name="bluetooth_device_context_connect" msgid="4913860372216815855">"ਕਨੈਕਟ ਕਰੋ"</string>
     <string name="bluetooth_device_context_disconnect" msgid="4464167389972513232">"ਡਿਸਕਨੈਕਟ ਕਰੋ"</string>
-    <string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"ਪੇਅਰ &amp; ਕਨੈਕਟ ਕਰੋ"</string>
+    <string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"ਜੋੜਾਬੱਧ ਕਰਕੇ ਕਨੈਕਟ ਕਰੋ"</string>
     <string name="bluetooth_device_context_unpair" msgid="7525735305244087162">"ਅਨਪੇਅਰ ਕਰੋ"</string>
     <string name="bluetooth_device_context_disconnect_unpair" msgid="2001359431289794561">"ਡਿਸਕਨੈਕਟ &amp; ਅਨਪੇਅਰ ਕਰੋ"</string>
     <string name="bluetooth_device_context_connect_advanced" msgid="934657460643490773">"ਚੋਣਾਂ…"</string>
@@ -1430,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"ਸਕ੍ਰੀਨ ਸੇਵਰ"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"ਸਕ੍ਰੀਨ ਸੇਵਰ ਵਰਤੋ"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ਚਾਰਜ ਕਰਨ ਵੇਲੇ ਜਾਂ ਡੌਕ ਕੀਤੇ ਹੋਣ ਦੌਰਾਨ"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"ਦੋਵਾਂ ਵਿੱਚੋਂ ਇੱਕ"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"ਚਾਰਜ ਕਰਨ ਵੇਲੇ"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ਜਦੋਂ ਡੌਕ ਕੀਤਾ ਹੋਵੇ"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"ਕਦੇ ਵੀ ਨਹੀਂ"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"ਬੰਦ"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ਇਹ ਕੰਟਰੋਲ ਕਰਨ ਲਈ ਕਿ ਜਦੋਂ ਫ਼ੋਨ ਡੌਕ ਕੀਤਾ ਅਤੇ/ਜਾਂ ਸਲੀਪ ਮੋਡ ਵਿੱਚ ਹੁੰਦਾ ਹੈ ਉਦੋਂ ਕੀ ਹੁੰਦਾ ਹੈ, ਸਕ੍ਰੀਨ ਸੇਵਰ ਚਾਲੂ ਕਰੋ।"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"ਕਦੋਂ ਸ਼ੁਰੂ ਕਰਨਾ ਹੈ"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"ਮੌਜੂਦਾ ਸਕ੍ਰੀਨ ਸੇਵਰ"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"ਸੈਟਿੰਗਾਂ"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"ਸਵੈਚਲਿਤ ਚਮਕ"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"ਕਿਰਿਆਸ਼ੀਲ ਕਰਨ ਲਈ ਚੁੱਕੋ"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"ਸਰਗਰਮ ਡਿਸਪਲੇ"</string>
@@ -3401,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"ਮਿਟਾਓ"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"ਇਸ ਸੈਸ਼ਨ ਵਿਚਲੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟਾ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਜਾਏਗਾ।"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"ਹਟਾਓ"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"ਮਹਿਮਾਨ (ਤੁਸੀਂ)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"ਵਰਤੋਂਕਾਰ"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"ਹੋਰ ਵਰਤੋਂਕਾਰ"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"ਮਹਿਮਾਨ ਦੀ ਸਰਗਰਮੀ ਮਿਟਾਓ"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"ਮਹਿਮਾਨ ਮੋਡ ਤੋਂ ਬਾਹਰ ਜਾਣ \'ਤੇ ਮਹਿਮਾਨ ਦੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟੇ ਨੂੰ ਮਿਟਾਓ"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"ਕੀ ਮਹਿਮਾਨ ਦੀ ਸਰਗਰਮੀ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"ਇਸ ਮਹਿਮਾਨ ਸੈਸ਼ਨ ਦੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟੇ ਨੂੰ ਹੁਣੇ ਮਿਟਾਇਆ ਜਾਵੇਗਾ ਅਤੇ ਮਹਿਮਾਨ ਦੀ ਸਾਰੀ ਭਵਿੱਖੀ ਸਰਗਰਮੀ ਨੂੰ ਤੁਹਾਡੇ ਮਹਿਮਾਨ ਮੋਡ ਤੋਂ ਬਾਹਰ ਜਾਣ \'ਤੇ ਹਰ ਵਾਰ ਮਿਟਾਇਆ ਜਾਵੇਗਾ"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"ਫ਼ੋਨ ਕਾਲਾਂ ਚਾਲੂ ਕਰੋ"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ਫ਼ੋਨ ਕਾਲਾਂ ਅਤੇ SMS ਚਾਲੂ ਕਰੋ"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"ਵਰਤੋਂਕਾਰ ਨੂੰ ਮਿਟਾਓ"</string>
diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml
index 1bbaca1..89e9936 100644
--- a/res/values-pl/arrays.xml
+++ b/res/values-pl/arrays.xml
@@ -176,7 +176,7 @@
   </string-array>
   <string-array name="wifi_ip_settings">
     <item msgid="6665889765350160154">"DHCP"</item>
-    <item msgid="6215795691318745695">"Statyczny"</item>
+    <item msgid="6215795691318745695">"Statyczne"</item>
   </string-array>
   <string-array name="wifi_proxy_settings">
     <item msgid="4669222334822978847">"Brak"</item>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index d992f37..ad724b5 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -1469,15 +1469,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Wygaszacz ekranu"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Używaj wygaszacza ekranu"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Podczas ładowania lub po zadokowaniu"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Po zadokowaniu lub podczas ładowania"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Podczas ładowania"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Po zadokowaniu"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nigdy"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Wył."</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Włącz wygaszacz ekranu, by kontrolować to, co dzieje się, gdy telefon jest w stacji dokującej i/lub w trybie uśpienia."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Kiedy włączać"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Bieżący wygaszacz ekranu"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Ustawienia"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatyczna"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Podnieś, by wybudzić"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Wygaszacz z powiadomieniami"</string>
@@ -1903,7 +1900,7 @@
       <item quantity="one"> <xliff:g id="PERMITTED_LOCATION_APP_COUNT_0">%1$d</xliff:g> z <xliff:g id="TOTAL_LOCATION_APP_COUNT_1">%2$d</xliff:g> aplikacji ma dostęp do lokalizacji</item>
     </plurals>
     <string name="location_category_recent_location_access" msgid="2558063524482178146">"Ostatni dostęp"</string>
-    <string name="location_recent_location_access_see_all" msgid="4203102419355323325">"Pokaż wszystko"</string>
+    <string name="location_recent_location_access_see_all" msgid="4203102419355323325">"Pokaż wszystkie"</string>
     <string name="location_recent_location_access_view_details" msgid="5803264082558504544">"Wyświetl szczegóły"</string>
     <string name="location_no_recent_apps" msgid="6814206631456177033">"Żadne aplikacje nie prosiły ostatnio o lokalizację"</string>
     <string name="location_no_recent_accesses" msgid="6031735777805464247">"Żadne aplikacje nie korzystały ostatnio z lokalizacji"</string>
@@ -2687,7 +2684,7 @@
     <string name="keywords_rtt" msgid="2429130928152514402">"niedosłuch, utrata słuchu, napisy, dalekopis, TTY"</string>
     <string name="keywords_voice_access" msgid="7807335263195876454"></string>
     <string name="fast_pair_settings" msgid="3308819519080016185">"Szybkie parowanie"</string>
-    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Wykryto w pobliżu urządzenia Bluetooth obsługujące Szybkie parowanie."</string>
+    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"W pobliżu wykryto urządzenia Bluetooth obsługujące Szybkie parowanie"</string>
     <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"Szukaj urządzeń w pobliżu"</string>
     <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"Zapisane urządzenia"</string>
     <string name="print_settings" msgid="8519810615863882491">"Drukowanie"</string>
@@ -3488,6 +3485,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Usuń"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Wszystkie aplikacje i dane w tej sesji zostaną usunięte."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Usuń"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gość (Ty)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Użytkownicy"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Inni użytkownicy"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Usuń aktywność gościa"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Usuwaj wszystkie aplikacje i dane gościa podczas zamykania trybu gościa"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Usunąć aktywność gościa?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Aplikacje i dane z tej sesji gościa zostaną teraz usunięte. Cała przyszła aktywność gościa będzie usuwana podczas zamykania trybu gościa."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Włącz rozmowy telefoniczne"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Włącz rozmowy telefoniczne i SMS-y"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Usuń użytkownika"</string>
@@ -3506,7 +3510,7 @@
     <string name="user_copy_apps_menu_title" msgid="5354300105759670300">"Zainstaluj dostępne aplikacje"</string>
     <string name="nfc_payment_settings_title" msgid="2043139180030485500">"Płatności zbliżeniowe"</string>
     <string name="nfc_default_payment_settings_title" msgid="2150504446774382261">"Domyślna aplikacja płatnicza"</string>
-    <string name="nfc_default_payment_footer" msgid="978535088340021360">"Aby dokonać płatności przy użyciu aplikacji płatniczej, zbliż urządzenie tylną częścią do terminalu"</string>
+    <string name="nfc_default_payment_footer" msgid="978535088340021360">"Aby dokonać płatności przy użyciu aplikacji płatniczej, zbliż urządzenie tylną częścią do terminala"</string>
     <string name="nfc_more_details" msgid="1700713533074275233">"Więcej informacji"</string>
     <string name="nfc_default_payment_workapp_confirmation_title" msgid="746921251872504687">"Ustawić aplikację służbową jako domyślną aplikację płatniczą?"</string>
     <string name="nfc_default_payment_workapp_confirmation_message_title" msgid="1533022606333010329">"Aby zapłacić aplikacją służbową:"</string>
@@ -3517,8 +3521,8 @@
     <string name="nfc_payment_default" msgid="3769788268378614608">"Płatność domyślna"</string>
     <string name="nfc_payment_default_not_set" msgid="6471905683119084622">"Nie ustawiono"</string>
     <string name="nfc_payment_app_and_desc" msgid="2607417639227030398">"<xliff:g id="APP">%1$s</xliff:g> – <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
-    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Użyj domyślnej aplikacji płatniczej"</string>
-    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Użyj domyślnej aplikacji płatniczej"</string>
+    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Używaj domyślnej aplikacji płatniczej"</string>
+    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Używaj domyślnej aplikacji płatniczej"</string>
     <string name="nfc_payment_favor_default" msgid="4508491832174644772">"Zawsze"</string>
     <string name="nfc_payment_favor_open" msgid="8554643344050373346">"Z wyjątkiem, gdy otwarta jest inna aplikacja płatnicza"</string>
     <string name="nfc_payment_pay_with" msgid="3001320460566523453">"Na terminalu zbliżeniowym płać przy użyciu:"</string>
@@ -4395,8 +4399,8 @@
     <string name="restr_pin_enter_admin_pin" msgid="4435410646541671918">"Wpisz kod PIN administratora"</string>
     <string name="switch_on_text" msgid="5664542327776075105">"Wł."</string>
     <string name="switch_off_text" msgid="1315547447393646667">"Wył."</string>
-    <string name="nfc_setting_on" msgid="7701896496026725772">"Wł."</string>
-    <string name="nfc_setting_off" msgid="7142103438532732309">"Wył."</string>
+    <string name="nfc_setting_on" msgid="7701896496026725772">"Włączona"</string>
+    <string name="nfc_setting_off" msgid="7142103438532732309">"Wyłączona"</string>
     <string name="screen_pinning_switch_on_text" msgid="6971386830247542552">"Włączono"</string>
     <string name="screen_pinning_switch_off_text" msgid="5032105155623003875">"Wyłączono"</string>
     <string name="screen_pinning_title" msgid="6927227272780208966">"Przypinanie aplikacji"</string>
@@ -4653,7 +4657,7 @@
     <string name="usb_use_tethering" msgid="2897063414491670531">"Tethering przez USB"</string>
     <string name="usb_use_MIDI" msgid="8621338227628859789">"MIDI"</string>
     <string name="usb_use_MIDI_desc" msgid="6464135515868405143">"Użyj tego urządzenia jako MIDI"</string>
-    <string name="usb_use" msgid="6783183432648438528">"Użyj USB do tych działań"</string>
+    <string name="usb_use" msgid="6783183432648438528">"Używaj USB do tych działań"</string>
     <string name="usb_default_label" msgid="3372838450371060750">"Domyślna konfiguracja USB"</string>
     <string name="usb_default_info" msgid="167172599497085266">"Te ustawienia będą obowiązywać, gdy zostanie połączone inne urządzenie, a Twój telefon będzie odblokowany. Łącz się tylko z zaufanymi urządzeniami."</string>
     <string name="usb_power_title" msgid="5602112548385798646">"Opcje zasilania"</string>
@@ -5828,7 +5832,7 @@
     <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Używaj hotspota Wi‑Fi"</string>
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Używaj przypinania aplikacji"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"Używaj opcji programisty"</string>
-    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Użyj usługi drukowania"</string>
+    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Używaj usługi drukowania"</string>
     <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Zezwól na wielu użytkowników"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Używaj debugowania bezprzewodowego"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Używaj ustawień sterownika grafiki"</string>
@@ -5943,20 +5947,12 @@
     <string name="ingress_rate_limit_summary" msgid="1097811019742438371">"Skonfiguruj ograniczenie liczby żądań ruchu przychodzącego dla przepustowości sieci we wszystkich sieciach, które zapewniają połączenie z internetem."</string>
     <string name="ingress_rate_limit_dialog_title" msgid="5359461052422633789">"Skonfiguruj ograniczenie liczby żądań pobierania w sieci"</string>
     <string name="ingress_rate_limit_no_limit_entry" msgid="8741098826008012163">"Brak limitu"</string>
-    <!-- no translation found for bluetooth_broadcast_dialog_title (9172775308463135884) -->
-    <skip />
-    <!-- no translation found for bluetooth_broadcast_dialog_find_message (6621660851669953883) -->
-    <skip />
-    <!-- no translation found for bluetooth_broadcast_dialog_broadcast_message (6198264676009094495) -->
-    <skip />
-    <!-- no translation found for bluetooth_find_broadcast_title (5385985218699831970) -->
-    <skip />
-    <!-- no translation found for bluetooth_find_broadcast_summary (3907899428626210673) -->
-    <skip />
-    <!-- no translation found for bluetooth_find_broadcast (1768337775649457586) -->
-    <skip />
-    <!-- no translation found for bluetooth_find_broadcast_button_leave (7881206581147104908) -->
-    <skip />
-    <!-- no translation found for bluetooth_find_broadcast_button_scan (3995664694641895189) -->
-    <skip />
+    <string name="bluetooth_broadcast_dialog_title" msgid="9172775308463135884">"Komunikat"</string>
+    <string name="bluetooth_broadcast_dialog_find_message" msgid="6621660851669953883">"Posłuchaj komunikatów odtwarzanych w pobliżu"</string>
+    <string name="bluetooth_broadcast_dialog_broadcast_message" msgid="6198264676009094495">"Przesyłaj multimedia na urządzenia w pobliżu lub posłuchaj komunikatu innej osoby"</string>
+    <string name="bluetooth_find_broadcast_title" msgid="5385985218699831970">"Komunikaty"</string>
+    <string name="bluetooth_find_broadcast_summary" msgid="3907899428626210673">"Odtwarzane"</string>
+    <string name="bluetooth_find_broadcast" msgid="1768337775649457586">"Znajdź komunikaty"</string>
+    <string name="bluetooth_find_broadcast_button_leave" msgid="7881206581147104908">"Zostaw komunikat"</string>
+    <string name="bluetooth_find_broadcast_button_scan" msgid="3995664694641895189">"Zeskanuj kod QR"</string>
 </resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 81d2149..8ad22b0 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Idioma do sistema"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Padrão do sistema"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"A seleção de idioma para este app não está disponível nas configurações."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"O idioma pode ser diferente dos disponíveis no app. Alguns apps podem não ter suporte a essa configuração."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">Remover o idioma selecionado?</item>
       <item quantity="other">Remover idiomas selecionados?</item>
@@ -1431,15 +1430,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Protetor de tela"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Usar o protetor de tela"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Ao carregar ou quando encaixado na base"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Ambos"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Ao carregar"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Encaixado na base"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nunca"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Desativado"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Para controlar o que acontece quando o smartphone está na base e/ou no modo de suspensão, ative o protetor de tela."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Quando começar"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Protetor de tela atual"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Configurações"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Brilho automático"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Levantar para ativar"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Tela ambiente"</string>
@@ -3402,6 +3398,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Excluir"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Todos os apps e dados nesta sessão serão excluídos."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Remover"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Visitante (você)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Usuários"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Outros usuários"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Excluir atividade de visitante"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Excluir todos os apps e dados do visitante ao sair do modo visitante"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Excluir atividade do visitante?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Os apps e dados desta Sessão de visitante serão excluídos agora e toda a atividade de visitante futura será excluída sempre que você sair do modo visitante"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Ativar chamadas telefônicas"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Ativar chamadas telefônicas e SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Excluir usuário"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 05d6e58..84bb86e 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -317,7 +317,7 @@
     <string name="show_profile_info_on_lockscreen_label" msgid="5734739022887933365">"Mostrar informação do perfil no ecrã de bloqueio"</string>
     <string name="Accounts_settings_title" msgid="8434263183710375412">"Contas"</string>
     <string name="location_settings_title" msgid="8375074508036087178">"Localização"</string>
-    <string name="location_settings_primary_switch_title" msgid="8849081766644685127">"Utilizar a localização"</string>
+    <string name="location_settings_primary_switch_title" msgid="8849081766644685127">"Usar localização"</string>
     <string name="location_settings_summary_location_off" msgid="4797932754681162262">"Desativada"</string>
     <plurals name="location_settings_summary_location_on" formatted="false" msgid="1019959038518185676">
       <item quantity="other">Ativada – <xliff:g id="COUNT_1">%1$d</xliff:g> apps têm acesso à localização</item>
@@ -857,7 +857,7 @@
     <string name="device_details_title" msgid="1155622417516195481">"Detalhes do dispositivo"</string>
     <string name="bluetooth_device_mac_address" msgid="4873325074786732703">"Endereço Bluetooth do dispositivo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
     <string name="bluetooth_multuple_devices_mac_address" msgid="4974301550897923376">"Endereço Bluetooth do dispositivo:\n<xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
-    <string name="bluetooth_unpair_dialog_title" msgid="6943633443716052995">"Pretende esquecer o dispositivo?"</string>
+    <string name="bluetooth_unpair_dialog_title" msgid="6943633443716052995">"Esquecer dispositivo?"</string>
     <string name="remove_association_button" msgid="5004208145998061135">"Remover associação"</string>
     <string name="bluetooth_companion_app_remove_association_dialog_title" msgid="1344518601377991897">"Pretende desassociar a app?"</string>
     <string name="bluetooth_unpair_dialog_body" product="default" msgid="4730377171981539265">"O telemóvel deixará de estar sincronizado com o <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Proteção de ecrã"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Usar proteção de ecrã"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Ao carregar ou na estação de ancoragem"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Ambos os casos"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Ao carregar"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Ancorado"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nunca"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Desligado"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Para controlar o que acontece quando o telemóvel está ancorado e/ou em suspensão, ative a proteção de ecrã."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Quando iniciar"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Proteção de ecrã atual"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Definições"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Brilho automático"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Ativar ao levantar"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Visualização ambiente"</string>
@@ -1777,7 +1774,7 @@
     <string name="main_clear_button_text" product="default" msgid="6246087475569640671">"Apagar todos os dados"</string>
     <string name="main_clear_final_desc" msgid="5800877928569039580">"Serão eliminadas todas as informações pessoais e apps transferidas. Não é possível anular esta ação."</string>
     <string name="main_clear_final_desc_esim" msgid="440406836793824969">"Todas as suas informações pessoais, incluindo apps e SIMs transferidos, serão eliminadas. Não é possível anular esta ação."</string>
-    <string name="main_clear_confirm_title" msgid="6577071819657853713">"Pretende apagar todos os dados?"</string>
+    <string name="main_clear_confirm_title" msgid="6577071819657853713">"Apagar todos os dados?"</string>
     <string name="main_clear_not_available" msgid="3433795327146684827">"A reposição de fábrica não está disponível para este utilizador."</string>
     <string name="main_clear_progress_title" msgid="7239741132015617719">"A apagar…"</string>
     <string name="main_clear_progress_text" msgid="4636695115176327972">"Aguarde…"</string>
@@ -1862,7 +1859,7 @@
     <string name="location_recent_location_access_see_all" msgid="4203102419355323325">"Ver tudo"</string>
     <string name="location_recent_location_access_view_details" msgid="5803264082558504544">"Ver detalhes"</string>
     <string name="location_no_recent_apps" msgid="6814206631456177033">"Nenhuma aplicação solicitou a localização recentemente"</string>
-    <string name="location_no_recent_accesses" msgid="6031735777805464247">"Nenhuma aplicação acedeu recentemente à localização"</string>
+    <string name="location_no_recent_accesses" msgid="6031735777805464247">"Nenhuma app acedeu recentemente à localização"</string>
     <string name="location_high_battery_use" msgid="4277318891200626524">"Utilização de bateria elevada"</string>
     <string name="location_low_battery_use" msgid="5218950289737996431">"Utilização de bateria baixa"</string>
     <string name="location_scanning_wifi_always_scanning_title" msgid="5004781272733434794">"Procurar Wi‑Fi"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Eliminar"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Todas as apps e dados desta sessão serão eliminados."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Remover"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Convidado (utilizador)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Utilizadores"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Outros utilizadores"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Elimine a atividade de convidado"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Elimine todas as apps e dados de convidado ao sair do modo convidado"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Eliminar a atividade de convidado?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"As apps e os dados desta sessão de convidado vão ser eliminados agora e toda a atividade de convidado futura é eliminada sempre que sair do modo convidado"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Ativar chamadas telefónicas"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Ativar chamadas telefónicas e SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Eliminar utilizador"</string>
@@ -5338,7 +5342,7 @@
     <string name="mobile_network_sim_name_label" msgid="1452440641628369625">"Nome"</string>
     <string name="mobile_network_sim_color_label" msgid="5293944087609632340">"Cor (usada por apps compatíveis)"</string>
     <string name="mobile_network_sim_name_rename" msgid="5967588549571582924">"Guardar"</string>
-    <string name="mobile_network_use_sim_on" msgid="7298332437547707908">"Utilizar SIM"</string>
+    <string name="mobile_network_use_sim_on" msgid="7298332437547707908">"Usar SIM"</string>
     <string name="mobile_network_use_sim_off" msgid="6303281166199670639">"Desativado"</string>
     <string name="mobile_network_disable_sim_explanation" msgid="2851862257846773796">"Para desativar este SIM, remova o cartão SIM"</string>
     <string name="mobile_network_tap_to_activate" msgid="4139979375717958102">"Toque para ativar o operador <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
@@ -5425,7 +5429,7 @@
     <string name="switch_sim_dialog_no_switch_title" msgid="809763410787744247">"Nenhum SIM ativo disponível"</string>
     <string name="switch_sim_dialog_no_switch_text" msgid="7053939850026876088">"Para utilizar dados móveis, funcionalidades de chamadas e SMS posteriormente, aceda às definições de rede."</string>
     <string name="sim_card_label" msgid="5632157635124050923">"Cartão SIM"</string>
-    <string name="erase_sim_dialog_title" msgid="881253002169177016">"Pretende apagar este SIM transferido?"</string>
+    <string name="erase_sim_dialog_title" msgid="881253002169177016">"Apagar este SIM transferido?"</string>
     <string name="erase_sim_dialog_text" msgid="753031064269699885">"Se apagar este SIM, o serviço do operador <xliff:g id="CARRIER_NAME_A">%1$s</xliff:g> será removido deste dispositivo.\n\nO serviço do operador <xliff:g id="CARRIER_NAME_B">%1$s</xliff:g> não é cancelado."</string>
     <string name="erase_sim_confirm_button" msgid="8309115684335320541">"Apagar"</string>
     <string name="erasing_sim" msgid="7877703231075699139">"A apagar SIM…"</string>
@@ -5621,7 +5625,7 @@
     <string name="preference_summary_default_combination" msgid="4643585915107796253">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="NETWORKMODE">%2$s</xliff:g>"</string>
     <string name="mobile_data_connection_active" msgid="2422223108911581552">"Ligado"</string>
     <string name="mobile_data_no_connection" msgid="905897142426974030">"Sem ligação"</string>
-    <string name="mobile_data_off_summary" msgid="1884248776904165539">"Não é efetuada ligação de dados móveis automática"</string>
+    <string name="mobile_data_off_summary" msgid="1884248776904165539">"Sem ligação automática com dados móveis"</string>
     <string name="non_carrier_network_unavailable" msgid="9031567407964127997">"Nenhuma outra rede disponível"</string>
     <string name="all_network_unavailable" msgid="1163897808282057496">"Sem redes disponíveis"</string>
     <string name="mobile_data_disable_title" msgid="8438714772256088913">"Desativar os dados móveis?"</string>
@@ -5645,12 +5649,12 @@
     <string name="category_name_others" msgid="2366006298768550310">"Outros"</string>
     <string name="category_name_general" msgid="7737273712848115886">"Geral"</string>
     <string name="dark_theme_main_switch_title" msgid="4045147031947562280">"Usar tema escuro"</string>
-    <string name="bluetooth_main_switch_title" msgid="8409835540311309632">"Utilizar Bluetooth"</string>
+    <string name="bluetooth_main_switch_title" msgid="8409835540311309632">"Usar Bluetooth"</string>
     <string name="prevent_ringing_main_switch_title" msgid="4726252811262086643">"Utilizar Impedir o toque"</string>
     <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Usar zona Wi-Fi"</string>
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Utilizar fixação de apps"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"Usar opções de programador"</string>
-    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Utilize o serviço de impressão"</string>
+    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Usar serviço de impressão"</string>
     <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Permitir vários utilizadores"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Utilizar depuração sem fios"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Utilizar preferências da placa gráfica"</string>
@@ -5658,7 +5662,7 @@
     <string name="do_not_disturb_main_switch_title_on" msgid="6965566556539821313">"Desativar agora"</string>
     <string name="do_not_disturb_main_switch_title_off" msgid="7088088515823752545">"Ativar agora"</string>
     <string name="night_light_main_switch_title" msgid="3428298022467805219">"Usar Luz noturna"</string>
-    <string name="nfc_main_switch_title" msgid="6295839988954817432">"Utilizar NFC"</string>
+    <string name="nfc_main_switch_title" msgid="6295839988954817432">"Usar NFC"</string>
     <string name="adaptive_battery_main_switch_title" msgid="3127477920505485813">"Utilizar bateria adaptável"</string>
     <string name="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"Usar luminosidade adaptável"</string>
     <string name="wifi_calling_main_switch_title" msgid="4070224008346815634">"Utilizar Chamadas Wi-Fi"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 81d2149..8ad22b0 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Idioma do sistema"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Padrão do sistema"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"A seleção de idioma para este app não está disponível nas configurações."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"O idioma pode ser diferente dos disponíveis no app. Alguns apps podem não ter suporte a essa configuração."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">Remover o idioma selecionado?</item>
       <item quantity="other">Remover idiomas selecionados?</item>
@@ -1431,15 +1430,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Protetor de tela"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Usar o protetor de tela"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Ao carregar ou quando encaixado na base"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Ambos"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Ao carregar"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Encaixado na base"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nunca"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Desativado"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Para controlar o que acontece quando o smartphone está na base e/ou no modo de suspensão, ative o protetor de tela."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Quando começar"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Protetor de tela atual"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Configurações"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Brilho automático"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Levantar para ativar"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Tela ambiente"</string>
@@ -3402,6 +3398,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Excluir"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Todos os apps e dados nesta sessão serão excluídos."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Remover"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Visitante (você)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Usuários"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Outros usuários"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Excluir atividade de visitante"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Excluir todos os apps e dados do visitante ao sair do modo visitante"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Excluir atividade do visitante?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Os apps e dados desta Sessão de visitante serão excluídos agora e toda a atividade de visitante futura será excluída sempre que você sair do modo visitante"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Ativar chamadas telefônicas"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Ativar chamadas telefônicas e SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Excluir usuário"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 74bfae2..29d70c4 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -1450,15 +1450,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Economizor de ecran"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Folosiți screensaverul"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"În timpul încărcării sau andocării"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"În ambele situații"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"În timpul încărcării"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Când dispozitivul este andocat"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Niciodată"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Dezactivat"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Pentru a stabili ce se întâmplă când telefonul este andocat și/sau inactiv, activați economizorul de ecran."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Când pornește"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Screensaver actual"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Setări"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Luminozitate automată"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Ridicați pentru a reactiva"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Afișaj ambiental"</string>
@@ -1577,7 +1574,7 @@
     <string name="memory_available_read_only" msgid="3201969221573511590">"Disponibil (numai în citire)"</string>
     <string name="memory_size" msgid="2710897518522931469">"Spațiu total"</string>
     <string name="memory_calculating_size" msgid="3898240439798661242">"Se calculează..."</string>
-    <string name="memory_apps_usage" msgid="8818570780540532952">"Aplicațiile și datele aplicațiilor"</string>
+    <string name="memory_apps_usage" msgid="8818570780540532952">"Aplicații și datele aplicațiilor"</string>
     <string name="memory_media_usage" msgid="5161308657995646963">"Media"</string>
     <string name="memory_downloads_usage" msgid="8252462247720191179">"Descărcări"</string>
     <string name="memory_dcim_usage" msgid="3568913845973164352">"Imagini, videoclipuri"</string>
@@ -1783,7 +1780,7 @@
     <string name="main_clear_title" msgid="277664302144837723">"Ștergeți datele (reveniți la setările din fabrică)"</string>
     <string name="main_clear_short_title" msgid="4752094765533020696">"Ștergeți datele (reveniți la setările din fabrică)"</string>
     <string name="main_clear_desc" product="tablet" msgid="1651178880680056849">"Această acțiune va șterge toate datele din "<b>"memoria internă"</b>" a tabletei, inclusiv:\n\n"<li>"Contul dvs. Google,"</li>\n<li>"datele și setările sistemului și ale aplicațiilor,"</li>\n<li>"aplicațiile descărcate."</li></string>
-    <string name="main_clear_desc" product="default" msgid="6984348811887162647">"Această acțiune va șterge toate datele din "<b>"memoria internă"</b>" a telefonului, inclusiv:\n\n"<li>"Contul dvs. Google,"</li>\n<li>"datele și setările sistemului și ale aplicațiilor,"</li>\n<li>"aplicațiile descărcate."</li></string>
+    <string name="main_clear_desc" product="default" msgid="6984348811887162647">"Această acțiune va șterge toate datele din "<b>"memoria internă"</b>" a telefonului, inclusiv:\n\n"<li>"Contul dvs. Google;"</li>\n<li>"datele și setările sistemului și ale aplicațiilor;"</li>\n<li>"aplicațiile descărcate;"</li></string>
     <string name="main_clear_accounts" product="default" msgid="7675859115108318537">\n\n"V-ați conectat la următoarele conturi:\n"</string>
     <string name="main_clear_other_users_present" product="default" msgid="2672976674798019077">\n\n"Pe acest dispozitiv sunt prezenți și alți utilizatori.\n"</string>
     <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"muzică;"</li>\n<li>"fotografii;"</li>\n<li>"alte date ale utilizatorului."</li></string>
@@ -3445,6 +3442,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Ștergeți"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Toate aplicațiile și datele din această sesiune vor fi șterse."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Ștergeți"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Invitat (dvs.)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Utilizatori"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Alți utilizatori"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Ștergeți activitatea invitatului"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Ștergeți toate aplicațiile și datele invitatului când ieșiți din modul pentru invitați"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Ștergeți activitatea invitatului?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Aplicațiile și datele din această sesiune pentru invitați vor fi șterse acum și toate activitățile viitoare ale invitaților vor fi șterse de fiecare dată când ieșiți din modul pentru invitați"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Activați apelurile telefonice"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Activați apelurile telefonice și SMS-urile"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Ștergeți utilizatorul"</string>
@@ -5711,7 +5715,7 @@
     <string name="preference_summary_default_combination" msgid="4643585915107796253">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="NETWORKMODE">%2$s</xliff:g>"</string>
     <string name="mobile_data_connection_active" msgid="2422223108911581552">"Conectat"</string>
     <string name="mobile_data_no_connection" msgid="905897142426974030">"Nicio conexiune"</string>
-    <string name="mobile_data_off_summary" msgid="1884248776904165539">"Datele mobile nu se corectează automat"</string>
+    <string name="mobile_data_off_summary" msgid="1884248776904165539">"Datele mobile nu se conectează automat"</string>
     <string name="non_carrier_network_unavailable" msgid="9031567407964127997">"Nu sunt disponibile alte rețele"</string>
     <string name="all_network_unavailable" msgid="1163897808282057496">"Nicio rețea disponibilă"</string>
     <string name="mobile_data_disable_title" msgid="8438714772256088913">"Dezactivați datele mobile?"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 0ec7de8..b7fc25e 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -229,8 +229,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Язык системы"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Системные настройки по умолчанию"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Для этого приложения не поддерживается выбор языка в настройках."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Выбранный язык может быть недоступен в приложении. Некоторые приложения могут не поддерживать этот параметр."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">Удалить выбранные языки?</item>
       <item quantity="few">Удалить выбранные языки?</item>
@@ -1469,15 +1468,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Заставка"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Использовать заставку"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Во время зарядки и на док-станции"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Всегда"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Во время зарядки"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"На док-станции"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Никогда"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Отключено"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Чтобы настроить поведение телефона при подключении к док-станции и в спящем режиме, включите заставку."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Когда запускать"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Текущая заставка"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Настройки"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Автонастройка"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Активация в вертикальном положении"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Автоматич. включение экрана"</string>
@@ -3488,6 +3484,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Удалить"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Все приложения и данные этого профиля будут удалены."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Удалить"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Гость (вы)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Пользователи"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Другие пользователи"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Удалить историю гостевого сеанса"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Удалять все приложения и данные при выходе из гостевого режима"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Удалить историю гостевого сеанса?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Все данные и приложения этого гостевого сеанса будут удалены. В дальнейшем история будет очищаться каждый раз при выходе из гостевого режима."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Включить звонки"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Включить звонки и SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Удалить пользователя"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index b3adf63..46ff45c 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"පද්ධති භාෂාව"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"පද්ධති පෙරනිමිය"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"මෙම යෙදුම සඳහා භාෂා තේරීම සැකසීම් වෙතින් ලබා ගත නොහැකිය."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"යෙදුමේ තිබෙන භාෂාවලට වඩා භාෂාව වෙනස් විය හැකිය. සමහර යෙදුම් මෙම සැකසීමට සහාය නොදක්වයි."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">තෝරා ගත් භාෂා ඉවත් කරන්නද?</item>
       <item quantity="other">තෝරා ගත් භාෂා ඉවත් කරන්නද?</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"තිර සුරැකුම"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"තිර සුරැකුම භාවිත කරන්න"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ආරෝපණය හෝ ඩොක් කර ඇති විට"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"දෙකෙන් එකක්"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"ආරෝපණය වන අතරතුර"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ඩොක් කර ඇති විට"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"කවදාවත් නෑ"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"අක්‍රියයි"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"දුරකථනය රඳවා ඇති විට සහ/හෝ නිද්‍රාවේ ඇති විට සිදු වන දේ පාලනය කිරීමට, තිර සුරැකුම ක්‍රියාත්මක කරන්න."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"පටන් ගන්න මොන වේලාවටද"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"වර්තමාන තිර සුරැකුම"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"සැකසීම්"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"ස්වයංක්‍රිය දීප්තිය"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"අවදි කිරීමට ඔසවන්න"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"ස්ථානික සංදර්ශකය"</string>
@@ -2628,7 +2624,7 @@
     <string name="keywords_hearing_aids" msgid="524979615168196199">"ඇසීමට අපහසු, ශ්‍රවණය අහිමි"</string>
     <string name="keywords_rtt" msgid="2429130928152514402">"ඇසීමට අපහසු, ශ්‍රවණය අහිමි, සිරස්තල, ටෙලිටයිප්, tty"</string>
     <string name="keywords_voice_access" msgid="7807335263195876454"></string>
-    <string name="fast_pair_settings" msgid="3308819519080016185">"Fast Pair"</string>
+    <string name="fast_pair_settings" msgid="3308819519080016185">"ඉක්මන් සබැඳිය"</string>
     <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Fast Pair බ්ලූටූත් උපාංගවල ළඟ හඳුනා ගැනීම."</string>
     <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"අවට උපාංග සඳහා ස්කෑන් කරන්න"</string>
     <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"සුරැකි උපාංග"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"මකන්න"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"මෙම සැසියේ සියළුම යෙදුම් සහ දත්ත මකාවී."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"ඉවත් කරන්න"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"ආගන්තුකයා (ඔබ)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"පරිශීලකයින්"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"වෙනත් පරිශීලකයින්"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"ආගන්තුක ක්‍රියාකාරකම් මකන්න"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"ආගන්තුක ප්‍රකාරයෙන් පිටවන විට සියලු ආගන්තුක යෙදුම් සහ දත්ත මකන්න"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"ආගන්තුක ක්‍රියාකාරකම මකන්නද?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"මෙම ආගන්තුක සැසියේ යෙදුම් සහ දත්ත දැන් මකනු ඇති අතර, ඔබ ආගන්තුක ප්‍රකාරයෙන් පිටවන සෑම අවස්ථාවකම අනාගත ආගන්තුකයන්ගේ ක්‍රියාකාරකම් සියල්ල මකනු ඇත"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"දුරකථන ඇමතුම් ක්‍රියාත්මක කරන්න"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"දුරකථන ඇමතුම් සහ SMS ක්‍රියාත්මක කරන්න?"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"පරිශීලකයා මකන්න"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index eaa93d8..7f7e6ff 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -103,7 +103,7 @@
     <string name="progress_scanning" msgid="2564746192843011826">"Vyhľadávanie"</string>
     <string name="bluetooth_no_devices_found" msgid="7704539337219953182">"V okolí nie sú žiadne zariadenia Bluetooth."</string>
     <string name="bluetooth_notif_ticker" msgid="209515545257862858">"Žiadosť o párovanie zariadenia Bluetooth"</string>
-    <string name="bluetooth_notif_title" msgid="1196532269131348647">"Žiadosť na párovanie"</string>
+    <string name="bluetooth_notif_title" msgid="1196532269131348647">"Žiadosť o párovanie"</string>
     <string name="bluetooth_notif_message" msgid="5584717784198086653">"Zariadenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g> spárujete klepnutím."</string>
     <string name="bluetooth_show_received_files" msgid="685424727760622632">"Prijaté súbory"</string>
     <string name="bluetooth_devices_card_off_title" msgid="1320149821945129127">"Rozhranie Bluetooth je vypnuté"</string>
@@ -229,8 +229,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Jazyk systému"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Predvolené systémom"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Výber jazyka pre túto aplikáciu nie je v Nastaveniach k dispozícii."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Jazyk môže byť iný, ako sú tie, ktoré sú k dispozícii v aplikácii. Niektoré aplikácie nemusia toto nastavenie podporovať."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="few">Odstrániť vybraté jazyky?</item>
       <item quantity="many">Odstrániť vybraté jazyky?</item>
@@ -962,7 +961,7 @@
     <string name="nfc_disclaimer_title" msgid="3696580694485048039">"Zapnutie NFC"</string>
     <string name="nfc_disclaimer_content" msgid="8256675597551036207">"NFC posiela dáta medzi týmto zariadením a ďalšími zariadeniami alebo cieľmi v okolí, ako sú platobné terminály, čítačky prístupových médií a interaktívne reklamy alebo značky."</string>
     <string name="nfc_secure_settings_title" msgid="4906958426927741485">"Vyžadovať odomknutie zariadenia pre NFC"</string>
-    <string name="nfc_secure_toggle_summary" product="default" msgid="407654335737959071">"Povoliť použitie NFC iba na odomknutej obrazovke"</string>
+    <string name="nfc_secure_toggle_summary" product="default" msgid="407654335737959071">"Povoliť použitie NFC iba po odomknutí obrazovky"</string>
     <string name="android_beam_settings_title" msgid="2797963824490671295">"Android Beam"</string>
     <string name="android_beam_on_summary" msgid="6067720758437490896">"Pripravené na prenos obsahu aplikácie prostredníctvom NFC"</string>
     <string name="android_beam_off_summary" msgid="5693961375631325042">"Vypnuté"</string>
@@ -1041,7 +1040,7 @@
     <string name="wifi_ssid_hint" msgid="1940577553241083524">"Zadajte SSID"</string>
     <string name="wifi_security" msgid="9095934643631406913">"Zabezpečenie"</string>
     <string name="wifi_hidden_network" msgid="6466834025375485596">"Skrytá sieť"</string>
-    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"Ak váš smerovač nevysiela ID určitej siete, ale chcete sa k nej pripojiť v budúcnosti, môžete ju nastaviť ako skrytú.\n\nMôže tým vzniknúť bezpečnostné riziko, pretože váš telefón bude pravidelne vysielať signál, aby sieť našiel.\n\nNastavením danej siete ako skrytej nezmeníte nastavenia smerovača."</string>
+    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"Ak váš smerovač nevysiela ID určitej siete, ale chcete sa k nej pripojiť v budúcnosti, môžete ju nastaviť ako skrytú.\n\nMôže tým vzniknúť bezpečnostné riziko, pretože váš telefón bude pravidelne vysielať signál siete, aby ju našiel.\n\nNastavením danej siete ako skrytej nezmeníte nastavenia smerovača."</string>
     <string name="wifi_signal" msgid="4442182285304271424">"Sila signálu"</string>
     <string name="wifi_status" msgid="5349199188871002778">"Stav"</string>
     <string name="tx_wifi_speed" msgid="2368986629172050673">"Rýchlosť posielania dát"</string>
@@ -1471,15 +1470,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Šetrič obrazovky"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Použiť šetrič obrazovky"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Pri nabíjaní alebo v doku"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"V oboch prípadoch"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Pri nabíjaní"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Pri vložení do doku"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nikdy"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Vypnuté"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Ak chcete ovládať, čo sa má stať, keď je telefón v doku alebo v režime spánku, zapnite šetrič obrazovky."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Čas spustenia"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Aktuálny šetrič obrazovky"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Nastavenia"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatický jas"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Prebudiť zdvihnutím"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ambientné zobrazenie"</string>
@@ -1805,7 +1801,7 @@
     <string name="main_clear_title" msgid="277664302144837723">"Vymazať dáta (obn. výr. nast.)"</string>
     <string name="main_clear_short_title" msgid="4752094765533020696">"Vymazať dáta (obn. výr. nast.)"</string>
     <string name="main_clear_desc" product="tablet" msgid="1651178880680056849">"Týmto vymažete všetky dáta v "<b>"internom úložisku"</b>" tabletu:\n\n"<li>"účet Google;"</li>\n<li>"dáta aj nastavenia systému a aplikácií;"</li>\n<li>"stiahnuté aplikácie."</li></string>
-    <string name="main_clear_desc" product="default" msgid="6984348811887162647">"Týmto vymažete všetky dáta v "<b>"internom úložisku"</b>" telefónu\n\n"<li>"účet Google"</li>\n<li>"dáta aj nastavenia systému a aplikácií"</li>\n<li>"stiahnuté aplikácie"</li></string>
+    <string name="main_clear_desc" product="default" msgid="6984348811887162647">"Týmto vymažete všetky dáta v "<b>"internom úložisku"</b>" telefónu:\n\n"<li>"účet Google"</li>\n<li>"dáta aj nastavenia systému a aplikácií"</li>\n<li>"stiahnuté aplikácie"</li></string>
     <string name="main_clear_accounts" product="default" msgid="7675859115108318537">\n\n"Momentálne ste prihlásený/-á do nasledujúcich účtov:\n"</string>
     <string name="main_clear_other_users_present" product="default" msgid="2672976674798019077">\n\n"V tomto zariadení sa nachádzajú ďalší používatelia.\n"</string>
     <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"Hudba"</li>\n<li>"Fotky"</li>\n<li>"Iné údaje používateľa"</li></string>
@@ -2689,7 +2685,7 @@
     <string name="keywords_rtt" msgid="2429130928152514402">"slabo počujúci, hluchota, titulky, ďalekopisný stroj, textový telefón"</string>
     <string name="keywords_voice_access" msgid="7807335263195876454"></string>
     <string name="fast_pair_settings" msgid="3308819519080016185">"Rýchle párovanie"</string>
-    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Rozpoznávanie zariadení s rozhraním Bluetooth rýchleho párovania v okolí"</string>
+    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Rozpoznávať zariadenia s rozhraním Bluetooth rýchleho párovania v okolí"</string>
     <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"Hľadať zariadenia v okolí"</string>
     <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"Uložené zariadenia"</string>
     <string name="print_settings" msgid="8519810615863882491">"Tlač"</string>
@@ -3490,6 +3486,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Odstrániť"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Všetky aplikácie a údaje v tejto relácii budú odstránené."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Odstrániť"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Hosť (vy)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Používatelia"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Ďalší používatelia"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Odstrániť aktivitu hosťa"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Odstrániť všetky aplikácie a údaje hosťa pri ukončení režimu pre hostí"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Chcete odstrániť aktivitu hosťa?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Aplikácie a údaje z tejto relácie hosťa sa odstránia teraz a budúca aktivita hosťa sa odstráni vždy pri ukončení režimu pre hostí"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Zapnúť telefonické hovory"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Zapnúť telefonáty a SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Odobrať používateľa"</string>
@@ -3944,7 +3947,7 @@
     <string name="asst_capability_ranking_summary" msgid="2293524677144599450">"Automaticky zoradiť upozornenia podľa relevancie"</string>
     <string name="asst_feedback_indicator_title" msgid="5169801869752395354">"Spätná väzba k prispôsobivým upozorneniam"</string>
     <string name="asst_feedback_indicator_summary" msgid="5862082842073307900">"Uveďte úpravy upozornení a zobrazujte možnosť poskytnúť spätnú väzbu k systému"</string>
-    <string name="asst_importance_reset_title" msgid="6191265591976440115">"Resetovanie dôležitosti upozornenia"</string>
+    <string name="asst_importance_reset_title" msgid="6191265591976440115">"Resetovať dôležitosť upozornenia"</string>
     <string name="asst_importance_reset_summary" msgid="684794589254282667">"Resetovanie nastavení dôležitosti zmenených používateľom a povolenie priorizácie v asistentovi upozornení"</string>
     <string name="asst_capabilities_actions_replies_title" msgid="4392470465646394289">"Navrhované akcie a odpovede"</string>
     <string name="asst_capabilities_actions_replies_summary" msgid="416234323365645871">"Automaticky zobrazovať navrhované akcie a odpovede"</string>
@@ -4758,7 +4761,7 @@
     <string name="camera_gesture_title" msgid="5559439253128696180">"Fotoaparát – dvakrát pokrúťte zápästím"</string>
     <string name="camera_gesture_desc" msgid="7557645057320805328">"Otvorte aplikáciu fotoaparátu tak, že dvakrát pokrútite zápästím"</string>
     <string name="camera_double_tap_power_gesture_title" msgid="8264757967127716261">"Fotoaparát dvojitým stlačením vypínača"</string>
-    <string name="camera_double_tap_power_gesture_desc" msgid="1539147023700755155">"Rýchlo otvárať fotoaparát bez odomknutia obrazovky"</string>
+    <string name="camera_double_tap_power_gesture_desc" msgid="1539147023700755155">"Rýchlo otvárať kameru bez odomknutia obrazovky"</string>
     <string name="screen_zoom_title" msgid="6928045302654960559">"Veľkosť zobrazenia"</string>
     <string name="screen_zoom_short_summary" msgid="756254364808639194">"Zväčšite alebo zmenšite obsah na obrazovke"</string>
     <string name="screen_zoom_keywords" msgid="5964023524422386592">"hustota obrazovky, priblíženie obrazovky, veľkosť, zmena veľkosti"</string>
@@ -5065,8 +5068,8 @@
     <string name="gesture_preference_summary" product="device" msgid="3520072325356373349">"Rýchle gestá na ovládanie zariadenia"</string>
     <string name="double_tap_power_for_camera_title" msgid="7982364144330923683">"Rýchlo spustiť kameru"</string>
     <string name="double_tap_power_for_camera_summary" msgid="1100926048598415509">"Rýchlo otvoriť kameru dvojitým stlačením vypínača. Funguje to na každej obrazovke."</string>
-    <string name="double_tap_power_for_camera_suggestion_title" msgid="4299496243418753571">"Rýchle spustenie fotoaparátu"</string>
-    <string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"Otočiť fotoaparát na selfie"</string>
+    <string name="double_tap_power_for_camera_suggestion_title" msgid="4299496243418753571">"Rýchle spustenie kamery"</string>
+    <string name="double_twist_for_camera_mode_title" msgid="472455236910935684">"Otočiť kameru na selfie"</string>
     <string name="double_twist_for_camera_mode_summary" msgid="592503740044744951"></string>
     <string name="double_twist_for_camera_suggestion_title" msgid="8178844037382604158">"Rýchlejšie fotenie snímok selfie"</string>
     <string name="system_navigation_title" msgid="1698862900901417194">"Navigácia v systéme"</string>
@@ -5553,9 +5556,9 @@
     <string name="sim_action_switch_sub_dialog_title" msgid="9180969453358718635">"Chcete prepnúť na operátora <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
     <string name="sim_action_switch_psim_dialog_title" msgid="5613177333235213024">"Chcete prepnúť na SIM kartu?"</string>
     <string name="sim_action_switch_sub_dialog_mep_title" msgid="933856847099933004">"Chcete používať operátora <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
-    <string name="sim_action_switch_sub_dialog_text" msgid="2091834911153293004">"V jednej chvíli môže byť aktívna iba jedna stiahnutá SIM karta.\n\nPrepnutím na operátora <xliff:g id="TO_CARRIER_NAME">%1$s</xliff:g> nezrušíte službu operátora <xliff:g id="FROM_CARRIER_NAME">%2$s</xliff:g>."</string>
+    <string name="sim_action_switch_sub_dialog_text" msgid="2091834911153293004">"V jednej chvíli môže byť aktívna iba jedna SIM karta.\n\nPrepnutím na operátora <xliff:g id="TO_CARRIER_NAME">%1$s</xliff:g> nezrušíte službu operátora <xliff:g id="FROM_CARRIER_NAME">%2$s</xliff:g>."</string>
     <string name="sim_action_switch_sub_dialog_text_downloaded" msgid="1396320209544698027">"V jednej chvíli môže byť aktívna iba jedna stiahnutá SIM karta.\n\nPrepnutím na operátora <xliff:g id="TO_CARRIER_NAME">%1$s</xliff:g> nezrušíte službu operátora <xliff:g id="FROM_CARRIER_NAME">%2$s</xliff:g>."</string>
-    <string name="sim_action_switch_sub_dialog_text_single_sim" msgid="6188750682431170845">"V jednej chvíli môže byť aktívna iba jedna stiahnutá SIM karta.\n\nPrepnutím na operátora nezrušíte službu operátora <xliff:g id="TO_CARRIER_NAME">%1$s</xliff:g>."</string>
+    <string name="sim_action_switch_sub_dialog_text_single_sim" msgid="6188750682431170845">"V jednej chvíli môže byť aktívna iba jedna SIM karta.\n\nPrepnutím nezrušíte službu operátora <xliff:g id="TO_CARRIER_NAME">%1$s</xliff:g>."</string>
     <string name="sim_action_switch_sub_dialog_mep_text" msgid="8348764755143679582">"Naraz môžete používať dve SIM karty. Ak chcete používať operátora <xliff:g id="CARRIER_NAME">%1$s</xliff:g>, vypnite druhú SIM kartu."</string>
     <string name="sim_action_switch_sub_dialog_confirm" msgid="1901181581944638961">"Prepnúť na operátora <xliff:g id="CARRIER_NAME">%1$s</xliff:g>"</string>
     <string name="sim_action_switch_sub_dialog_carrier_list_item_for_turning_off" msgid="5392037608705799522">"Vypnúť <xliff:g id="CARRIER_NAME">%1$s</xliff:g>"</string>
@@ -5825,7 +5828,7 @@
     <string name="category_name_others" msgid="2366006298768550310">"Iné"</string>
     <string name="category_name_general" msgid="7737273712848115886">"Všeobecné"</string>
     <string name="dark_theme_main_switch_title" msgid="4045147031947562280">"Použiť tmavý motív"</string>
-    <string name="bluetooth_main_switch_title" msgid="8409835540311309632">"Použiť Bluetooth"</string>
+    <string name="bluetooth_main_switch_title" msgid="8409835540311309632">"Používať Bluetooth"</string>
     <string name="prevent_ringing_main_switch_title" msgid="4726252811262086643">"Vypnúť zvonenie"</string>
     <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Používať hotspot Wi‑Fi"</string>
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Používať pripnutie aplikácie"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 745ec5b..0e02cbc 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -229,8 +229,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Sistemski jezik"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Sistemsko privzeto"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"V nastavitvah ni na voljo izbire jezika za to aplikacijo."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Jezik se morda razlikuje od jezikov, ki so na voljo v aplikaciji. Nekatere aplikacije morda ne podpirajo te nastavitve."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">Želite odstraniti izbrane jezike?</item>
       <item quantity="two">Želite odstraniti izbrane jezike?</item>
@@ -966,7 +965,7 @@
     <string name="android_beam_settings_title" msgid="2797963824490671295">"Android Beam"</string>
     <string name="android_beam_on_summary" msgid="6067720758437490896">"Pripravljen za prenos vsebine aplikacije prek NFC"</string>
     <string name="android_beam_off_summary" msgid="5693961375631325042">"Izklopljeno"</string>
-    <string name="nfc_disabled_summary" msgid="8737797364522502351">"Ni na voljo, ker je NFC izklopljen"</string>
+    <string name="nfc_disabled_summary" msgid="8737797364522502351">"Ni na voljo, ker je NFC izklopljen."</string>
     <string name="android_beam_label" msgid="7168565080321110094">"Android Beam"</string>
     <string name="android_beam_explained" msgid="5684416131846701256">"Ko je ta funkcija vklopljena, lahko vsebino iz aplikacije prenesete v drugo napravo, ki podpira NFC, tako, da napravi približate. Prenesete lahko na primer spletne strani, videoposnetke v YouTubu, stike in drugo.\n\nPreprosto približajte napravi (običajno s hrbtno stranjo) in se dotaknite zaslona. Vsebino prenosa določi aplikacija."</string>
     <string name="wifi_quick_toggle_title" msgid="2737097538432862807">"Wi‑Fi"</string>
@@ -1471,15 +1470,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Ohranjevalnik zaslona"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Uporabi ohranjevalnik zaslona"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Med polnjenjem ali v stojalu"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Eno ali drugo"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Med polnjenjem"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Ko je v stojalu"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Nikoli"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Izklopljeno"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Če želite nadzirati, kaj se dogaja, ko je telefon na nosilcu in/ali v stanju pripravljenosti, vklopite ohranjevalnik zaslona."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Kdaj naj se zažene"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Trenutni ohranjevalnik zaslona"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Nastavitve"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Samodejna svetlost"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Preklop iz stanja pripravlj. z dviganjem"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Prikaz na podlagi okolja"</string>
@@ -1788,10 +1784,10 @@
     <string name="reset_dashboard_title" msgid="7423200250697886918">"Možnosti ponastavitve"</string>
     <string name="reset_dashboard_summary" msgid="4390780188264852956">"Ponastavite lahko omrežje, aplikacije ali napravo"</string>
     <string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Aplikacije je mogoče ponastaviti"</string>
-    <string name="reset_network_title" msgid="1395494440355807616">"Ponastavi Wi-Fi, mob. podatke in Bluetooth"</string>
+    <string name="reset_network_title" msgid="1395494440355807616">"Ponastavitev Wi-Fi-ja, mobilnih podatkov in Bluetootha"</string>
     <string name="reset_network_desc" msgid="1112523764899788246">"S tem boste ponastavili vse omrežne nastavitve, vključno s temi:\n\n"<li>"Wi‑Fi,"</li>\n<li>"prenos podatkov v mobilnih omrežjih,"</li>\n<li>"Bluetooth."</li></string>
     <string name="erase_euicc_data_button" msgid="728078969563311737">"Izbriši"</string>
-    <string name="reset_esim_title" msgid="6152167073280852849">"Izbriši prenesene kartice SIM"</string>
+    <string name="reset_esim_title" msgid="6152167073280852849">"Izbris prenesenih kartic SIM"</string>
     <string name="reset_esim_desc" msgid="3662444090563399131">"S tem ne boste prekinili nobenega naročniškega paketa za mobilno telefonijo. Če želite prenesti nadomestne kartice SIM, se obrnite na operaterja."</string>
     <string name="reset_network_button_text" msgid="2281476496459610071">"Ponastavi nastavitve"</string>
     <string name="reset_network_final_desc" msgid="5304365082065278425">"Želite ponastaviti vse omrežne nastavitve? Tega dejanja ni mogoče razveljaviti."</string>
@@ -1802,13 +1798,13 @@
     <string name="reset_network_complete_toast" msgid="1367872474130621115">"Omrežne nastavitve so ponastavljene"</string>
     <string name="reset_esim_error_title" msgid="4670073610967959597">"Kartic SIM ni mogoče izbrisati"</string>
     <string name="reset_esim_error_msg" msgid="4441504470684307370">"Prenesenih kartic SIM ni mogoče izbrisati zaradi napake.\n\nZnova zaženite napravo in poskusite znova."</string>
-    <string name="main_clear_title" msgid="277664302144837723">"Izbriši vse podatke (tovarniška ponastavitev)"</string>
+    <string name="main_clear_title" msgid="277664302144837723">"Izbris vseh podatkov (tovarniška ponastavitev)"</string>
     <string name="main_clear_short_title" msgid="4752094765533020696">"Izbriši vse podatke (tov. po.)"</string>
-    <string name="main_clear_desc" product="tablet" msgid="1651178880680056849">"S tem boste iz "<b>"notranje shrambe"</b>" tabličnega računalnika izbrisali vse podatke, kar vključuje tudi:\n\n"<li>"Račun Google. "</li>\n<li>"Podatke in nastavitve sistema in aplikacij."</li>\n<li>"Prenesene aplikacije."</li></string>
-    <string name="main_clear_desc" product="default" msgid="6984348811887162647">"S tem boste iz "<b>"notranje shrambe"</b>" telefona izbrisali vse podatke, kar vključuje tudi:\n\n"<li>"Račun Google."</li>\n<li>"Podatke in nastavitve sistema in aplikacij."</li>\n<li>"Prenesene aplikacije."</li></string>
+    <string name="main_clear_desc" product="tablet" msgid="1651178880680056849">"S tem boste iz "<b>"notranje shrambe"</b>" tabličnega računalnika izbrisali vse podatke, kar vključuje tudi:\n\n"<li>"račun Google "</li>\n<li>"podatke in nastavitve sistema in aplikacij"</li>\n<li>"prenesene aplikacije"</li></string>
+    <string name="main_clear_desc" product="default" msgid="6984348811887162647">"S tem boste iz "<b>"notranje shrambe"</b>" telefona izbrisali vse podatke, kar vključuje tudi:\n\n"<li>"račun Google"</li>\n<li>"podatke in nastavitve sistema in aplikacij"</li>\n<li>"prenesene aplikacije"</li></string>
     <string name="main_clear_accounts" product="default" msgid="7675859115108318537">\n\n"Trenutno ste prijavljeni v te račune:\n"</string>
     <string name="main_clear_other_users_present" product="default" msgid="2672976674798019077">\n\n"V napravi so prisotni drugi uporabniki.\n"</string>
-    <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"Glasbo-"</li>\n<li>"Fotografije."</li>\n<li>"Druge uporabniške podatke."</li></string>
+    <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"glasbo"</li>\n<li>"fotografije"</li>\n<li>"druge uporabniške podatke"</li></string>
     <string name="main_clear_desc_also_erases_esim" msgid="4553469876411831729"><li>"Digitalne kartice e-SIM"</li></string>
     <string name="main_clear_desc_no_cancel_mobile_plan" msgid="369883568059127035">\n\n"S tem ne boste prekinili naročniškega paketa za mobilno telefonijo."</string>
     <string name="main_clear_desc_erase_external_storage" product="nosdcard" msgid="4441604184663452046">\n\n"Če želite izbrisati glasbo, slike in druge uporabniške podatke, morate izbrisati "<b>"pomnilnik USB"</b>"."</string>
@@ -1902,7 +1898,7 @@
       <item quantity="one"> Dostop do lokacije ima <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> od <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> aplikacij.</item>
       <item quantity="two"> Dostop do lokacije imata <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> od <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> aplikacij.</item>
       <item quantity="few"> Dostop do lokacije imajo <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> od <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> aplikacij.</item>
-      <item quantity="other"> Dostop do lokacije imajo <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> od <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> aplikacij.</item>
+      <item quantity="other"> Dostop do lokacije ima <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> od <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> aplikacij.</item>
     </plurals>
     <string name="location_category_recent_location_access" msgid="2558063524482178146">"Nedavni dostop"</string>
     <string name="location_recent_location_access_see_all" msgid="4203102419355323325">"Prikaz vseh"</string>
@@ -2127,7 +2123,7 @@
     <string name="show_running_services" msgid="8666008279959853318">"Pokaži storitve, ki se izvajajo"</string>
     <string name="show_background_processes" msgid="5682856012453562151">"Pokaži predpom. procese"</string>
     <string name="default_emergency_app" msgid="1929974800666613803">"Aplikacija v sili"</string>
-    <string name="reset_app_preferences" msgid="8861758340732716573">"Ponastavi nastavitve aplikacij"</string>
+    <string name="reset_app_preferences" msgid="8861758340732716573">"Ponastavitev nastavitev aplikacij"</string>
     <string name="reset_app_preferences_title" msgid="8935136792316050759">"Želite ponastaviti nastavitve aplikacij?"</string>
     <string name="reset_app_preferences_desc" msgid="6509978724602405805">"S tem bodo ponastavljene vse nastavitve za:\n\n"<li>" onemogočene aplikacije,"</li>\n<li>" obvestila za onemogočene aplikacije,"</li>\n<li>" privzete aplikacije za dejanja,"</li>\n<li>" omejitve prenosa podatkov v ozadju za aplikacije,"</li>\n<li>" omejitve dovoljenj."</li>\n\n" Podatkov aplikacij ne boste izgubili."</string>
     <string name="reset_app_preferences_button" msgid="2591318711372850058">"Ponastavi aplikacije"</string>
@@ -2689,7 +2685,7 @@
     <string name="keywords_rtt" msgid="2429130928152514402">"naglušnost, izguba sluha, podnapisi, teleprinter, tty"</string>
     <string name="keywords_voice_access" msgid="7807335263195876454"></string>
     <string name="fast_pair_settings" msgid="3308819519080016185">"Hitra seznanitev"</string>
-    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Zaznavanje naprav Bluetooth v bližini za hitro seznanitev."</string>
+    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Zaznavanje naprav Bluetooth v bližini za hitro seznanitev"</string>
     <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"Iskanje naprav v bližini"</string>
     <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"Shranjene naprave"</string>
     <string name="print_settings" msgid="8519810615863882491">"Tiskanje"</string>
@@ -3490,6 +3486,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Izbriši"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Vse aplikacije in podatki v tej seji bodo izbrisani."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Odstrani"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gost (vi)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Uporabniki"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Drugi uporabniki"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Izbriši dejavnost gosta"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Brisanje vseh aplikacij in podatkov gosta ob zaprtju načina za goste"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Želite izbrisati dejavnost gosta?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Aplikacije in podatki v tej seji gosta bodo zdaj izbrisani, prihodnja dejavnost gosta pa bo izbrisana vsakič, ko zaprete način za goste."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Vklopi telefonske klice"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Vklop telefonskih klicev in sporočil SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Brisanje uporabnika"</string>
@@ -3663,8 +3666,8 @@
     <string name="connected_devices_dashboard_android_auto_no_nfc_summary" msgid="2532811870469405527">"Bluetooth, Android Auto, način vožnje"</string>
     <string name="connected_devices_dashboard_android_auto_no_driving_mode_summary" msgid="6426996842202276640">"Bluetooth, Android Auto, NFC"</string>
     <string name="connected_devices_dashboard_android_auto_no_nfc_no_driving_mode" msgid="1672426693308438634">"Bluetooth, Android Auto"</string>
-    <string name="nfc_and_payment_settings_payment_off_nfc_off_summary" msgid="7132040463607801625">"Ni na voljo, ker je vmesnik NFC izklopljen"</string>
-    <string name="nfc_and_payment_settings_no_payment_installed_summary" msgid="4879818114908207465">"Za uporabo najprej namestite aplikacijo za plačevanje"</string>
+    <string name="nfc_and_payment_settings_payment_off_nfc_off_summary" msgid="7132040463607801625">"Ni na voljo, ker je vmesnik NFC izklopljen."</string>
+    <string name="nfc_and_payment_settings_no_payment_installed_summary" msgid="4879818114908207465">"Za uporabo najprej namestite aplikacijo za plačevanje."</string>
     <string name="app_and_notification_dashboard_title" msgid="2861781687031832943">"Aplikacije in obvestila"</string>
     <string name="app_and_notification_dashboard_summary" msgid="8047683010984186106">"Nedavne aplikacije, privzete aplikacije"</string>
     <string name="notification_settings_work_profile" msgid="6076211850526353975">"Dostop do obvestil ni na voljo za aplikacije v delovnem profilu."</string>
@@ -4012,7 +4015,7 @@
     <string name="lock_screen_notifs_redact_work" msgid="3833920196569208430">"Občutljiva obvestila za delovni profil"</string>
     <string name="lock_screen_notifs_redact_work_summary" msgid="3238238380405430156">"Prikaži občutljivo vsebino delovnega profila na zaklenjenem zaslonu."</string>
     <string name="lock_screen_notifications_summary_show" msgid="6540443483088311328">"Prikaži vso vsebino obvestil"</string>
-    <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Prikaži občutljivo vsebino samo na odklenjenem zaslonu."</string>
+    <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Prikaži občutljivo vsebino samo na odklenjenem zaslonu"</string>
     <string name="lock_screen_notifications_summary_disable" msgid="3388290397947365744">"Sploh ne prikazuj obvestil"</string>
     <string name="lock_screen_notifications_interstitial_message" msgid="4688399629301178487">"Kaj želite, da je prikazano na zaklenjenem zaslonu?"</string>
     <string name="lock_screen_notifications_interstitial_title" msgid="1360388192096354315">"Zaklenjen zaslon"</string>
@@ -4667,7 +4670,7 @@
     <string name="usb_control_device" msgid="527916783743021577">"Ta naprava"</string>
     <string name="usb_switching" msgid="3654709188596609354">"Preklapljanje …"</string>
     <string name="usb_switching_failed" msgid="5721262697715454137">"Preklop ni uspel"</string>
-    <string name="usb_summary_charging_only" msgid="678095599403565146">"Polnjenje te naprave."</string>
+    <string name="usb_summary_charging_only" msgid="678095599403565146">"Polnjenje te naprave"</string>
     <string name="usb_summary_power_only" msgid="4901734938857822887">"Polnjenje baterije v povezani napravi"</string>
     <string name="usb_summary_file_transfers" msgid="5498487271972556431">"Prenos datotek"</string>
     <string name="usb_summary_tether" msgid="2554569836525075702">"Internet prek USB-ja"</string>
@@ -5707,7 +5710,7 @@
     <string name="cards_passes_lower" msgid="2429722007109957877">"kartice in vstopnice"</string>
     <string name="power_menu_setting_name" msgid="7291642927216934159">"Pridržanje gumba za vklop"</string>
     <string name="power_menu_summary_long_press_for_assist_enabled" msgid="5322150755041458952">"Pritisnite in pridržite za Pomočnika."</string>
-    <string name="power_menu_summary_long_press_for_assist_disabled_with_power_menu" msgid="5165714995895517816">"Pridržanje za meni za vklop/izklop."</string>
+    <string name="power_menu_summary_long_press_for_assist_disabled_with_power_menu" msgid="5165714995895517816">"Pridržanje za meni za vklop/izklop"</string>
     <string name="power_menu_summary_long_press_for_assist_disabled_no_action" msgid="2831598484771657432">"Pridržanje je onemogočeno."</string>
     <string name="lockscreen_privacy_not_secure" msgid="3251276389681975912">"Za uporabo najprej nastavite zaklepanje zaslona."</string>
     <string name="power_menu_long_press_for_assist" msgid="2016813721240777737">"Pridržanje za Pomočnika"</string>
@@ -5830,7 +5833,7 @@
     <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Uporabi dostopno točko Wi‑Fi"</string>
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Uporabi pripenjanje aplikacije"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"Uporabi možnosti za razvijalce"</string>
-    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Uporaba storitve tiskanja"</string>
+    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Uporabi storitev tiskanja"</string>
     <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Dovoli več uporabnikov"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Uporabi brezžično odpravljanje napak"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Uporaba nastavitev grafičnega gonilnika"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index e4926de..36f013f 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Mbrojtësi i ekranit"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Përdor mbrojtësin e ekranit"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Gjatë karikimit ose lidhjes me stacionin"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Në të dyja rastet"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Gjatë karikimit"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Kur vendoset në stacion"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Asnjëherë"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Çaktivizuar"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Për të kontrolluar se çfarë ndodh kur telefonin e vendos te stacioni dhe/ose në gjumë, aktivizo mbrojtësin e ekranit."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Kur të fillojë"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Mbrojtësi aktual i ekranit"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Cilësimet"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Ndriçimi automatik"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Ngrije për ta zgjuar"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Shfaqja e ambientit"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Fshi"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Të gjitha aplikacionet dhe të dhënat në këtë sesion do të fshihen."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Hiq!"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Vizitor (ti)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Përdoruesit"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Përdorues të tjerë"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Fshi aktivitetin e vizitorit"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Fshi të gjitha aplikacionet dhe të dhënat e vizitorit kur del nga modaliteti \"vizitor\""</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Të fshihet aktiviteti i vizitorit?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Tani aplikacionet dhe të dhënat nga ky sesion për vizitorë do të fshihen dhe të gjitha aktivitetet e ardhshme të vizitorit do të fshihen sa herë që të dalësh nga modaliteti \"vizitor\""</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Aktivizo telefonatat"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Aktivizo telefonatat dhe SMS-të"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Fshi përdoruesin"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 1420672..e15b603 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -228,8 +228,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Језик система"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Подразумевани системски"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Избор језика за ову апликацију није доступан из Подешавања."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Језик може да се разликује од језика доступних у апликацији. Неке апликације можда не подржавају ово подешавање."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">Желите ли да уклоните изабране језике?</item>
       <item quantity="few">Желите ли да уклоните изабране језике?</item>
@@ -1449,15 +1448,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Чувар екрана"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Користи чувар екрана"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Током пуњења или на базној станици"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Било које од ова два"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Током пуњења"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Док је на базној станици"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Никада"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Искључено"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Да бисте контролисали шта се дешава када је телефон на базној станици и/или у стању спавања, укључите чувар екрана."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Када да почне"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Тренутни чувар екрана"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Подешавања"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Аутоматски ниво осветљености"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Подигни за активацију"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Амбијентални екран"</string>
@@ -2658,7 +2654,7 @@
     <string name="keywords_rtt" msgid="2429130928152514402">"оштећење слуха, губитак слуха, титл, телепринтер, tty"</string>
     <string name="keywords_voice_access" msgid="7807335263195876454"></string>
     <string name="fast_pair_settings" msgid="3308819519080016185">"Брзо упаривање"</string>
-    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Откривање Bluetooth уређ. за Брзо упарив. у близ."</string>
+    <string name="fast_pair_settings_summary" msgid="1786567691058982987">"Откривање Bluetooth уређаја за Брзо упаривање у близини"</string>
     <string name="fast_pair_main_switch_title" msgid="1439039801201425194">"Потражи уређаје у близини"</string>
     <string name="fast_pair_saved_devices_title" msgid="3799803309073333082">"Сачувани уређаји"</string>
     <string name="print_settings" msgid="8519810615863882491">"Штампање"</string>
@@ -2683,7 +2679,7 @@
     <string name="print_menu_item_add_service" msgid="1549091062463044676">"Додај услугу"</string>
     <string name="print_menu_item_add_printer" msgid="8711630848324870892">"Додај штампач"</string>
     <string name="print_menu_item_search" msgid="5989979785203603169">"Претражи"</string>
-    <string name="print_searching_for_printers" msgid="5401413178028348800">"Претрага штампача"</string>
+    <string name="print_searching_for_printers" msgid="5401413178028348800">"Тражење штампача"</string>
     <string name="print_service_disabled" msgid="9185935228930987786">"Услуга је онемогућена"</string>
     <string name="print_print_jobs" msgid="2605944855933091183">"Задаци за штампање"</string>
     <string name="print_print_job" msgid="8477859161886726608">"Задатак за штампање"</string>
@@ -3444,6 +3440,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Избриши"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Све апликације и подаци у овој сесији ће бити избрисани."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Уклони"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Гост (ви)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Корисници"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Остали корисници"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Избриши активности госта"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Избришите све апликације и податке госта при излазу из режима госта"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Избрисаћете активности госта?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Апликације и подаци из ове сесије госта биће одмах избрисане, а све будуће активности госта биће избрисане сваки пут када изађете из режима госта"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Укључи телефонске позиве"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Укључи телефонске позиве и SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Избришите корисника"</string>
@@ -3473,8 +3476,8 @@
     <string name="nfc_payment_default" msgid="3769788268378614608">"Подразумевано за плаћање"</string>
     <string name="nfc_payment_default_not_set" msgid="6471905683119084622">"Није подешено"</string>
     <string name="nfc_payment_app_and_desc" msgid="2607417639227030398">"<xliff:g id="APP">%1$s</xliff:g> – <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
-    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Користите подразумевану апликацију за плаћање"</string>
-    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Користите подразумевану за плаћање"</string>
+    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Користи подразумевану апликацију за плаћање"</string>
+    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Користи подразумевану за плаћање"</string>
     <string name="nfc_payment_favor_default" msgid="4508491832174644772">"Увек"</string>
     <string name="nfc_payment_favor_open" msgid="8554643344050373346">"Осим кад је отворена друга апликација за плаћање"</string>
     <string name="nfc_payment_pay_with" msgid="3001320460566523453">"На терминалу за бесконтактно плаћање користиће се:"</string>
@@ -3965,7 +3968,7 @@
     <string name="lock_screen_notifs_redact_work" msgid="3833920196569208430">"Осетљива обавештења о пословном профилу"</string>
     <string name="lock_screen_notifs_redact_work_summary" msgid="3238238380405430156">"Приказуј осетљив садржај пословног профила на закључаном екрану"</string>
     <string name="lock_screen_notifications_summary_show" msgid="6540443483088311328">"Прикажи сав садржај обавештења"</string>
-    <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Прикажи осетљив садржај само када је откључано"</string>
+    <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"Прикажи осетљив садржај само када је откључан"</string>
     <string name="lock_screen_notifications_summary_disable" msgid="3388290397947365744">"Не приказуј уопште обавештења"</string>
     <string name="lock_screen_notifications_interstitial_message" msgid="4688399629301178487">"Како желите да се приказује садржај на закључаном екрану?"</string>
     <string name="lock_screen_notifications_interstitial_title" msgid="1360388192096354315">"Закључан екран"</string>
@@ -4580,7 +4583,7 @@
     <string name="usb_use_file_transfers" msgid="483915710802018503">"Пренос датотека"</string>
     <string name="usb_use_file_transfers_desc" msgid="1020257823387107336">"Преносите датотеке на други уређај"</string>
     <string name="usb_use_photo_transfers" msgid="4641181628966036093">"PTP"</string>
-    <string name="usb_transcode_files" msgid="2441954752105119109">"Конвертујте видео снимке у AVC"</string>
+    <string name="usb_transcode_files" msgid="2441954752105119109">"Конвертуј видео снимке у AVC"</string>
     <string name="usb_transcode_files_summary" msgid="307102635711961513">"Видео снимци ће моћи да се пусте на више медија плејера, али ће им квалитет можда бити лошији"</string>
     <string name="usb_use_photo_transfers_desc" msgid="7490250033610745765">"Преносите слике или датотеке ако MTP није подржан (PTP)"</string>
     <string name="usb_use_tethering" msgid="2897063414491670531">"USB привезивање"</string>
@@ -5739,7 +5742,7 @@
     <string name="use_wifi_hotsopt_main_switch_title" msgid="3909731167290690539">"Користи WiFi хотспот"</string>
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Користи качење апликација"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"Користи опције за програмере"</string>
-    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Користите услугу штампања"</string>
+    <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Користи услугу штампања"</string>
     <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Дозволи више корисника"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Користи бежично отклањање грешака"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Користи подешавања управљачког програма за графику"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index f6a0ddd..f449046 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -860,7 +860,7 @@
     <string name="bluetooth_unpair_dialog_title" msgid="6943633443716052995">"Vill du glömma enheten?"</string>
     <string name="remove_association_button" msgid="5004208145998061135">"Ta bort kopplingen"</string>
     <string name="bluetooth_companion_app_remove_association_dialog_title" msgid="1344518601377991897">"Vill du koppla från appen?"</string>
-    <string name="bluetooth_unpair_dialog_body" product="default" msgid="4730377171981539265">"Mobilen kopplas bort från <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="bluetooth_unpair_dialog_body" product="default" msgid="4730377171981539265">"Telefonen kopplas bort från <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="bluetooth_unpair_dialog_body" product="tablet" msgid="3428463407231980054">"Surfplattan kopplas bort från <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="bluetooth_unpair_dialog_body" product="device" msgid="5117397433721336918">"Enheten kopplas bort från <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="bluetooth_companion_app_body" msgid="8442643629075687761">"Appen <xliff:g id="APP_NAME">%1$s</xliff:g> blir inte längre ansluten till <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Skärmsläckare"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Använd skärmsläckare"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Vid laddning eller dockning"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Båda"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Vid laddning"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Vid dockning"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Aldrig"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Av"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Om du vill styra vad som händer när mobilen är dockad eller i viloläge aktiverar du skärmsläckaren."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Startas"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Aktuell skärmsläckare"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Inställningar"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Automatisk ljusstyrka"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Gå ur viloläget vid lyft"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Aktiv låsskärm"</string>
@@ -1866,7 +1863,7 @@
     <string name="location_high_battery_use" msgid="4277318891200626524">"Hög batterianvändning"</string>
     <string name="location_low_battery_use" msgid="5218950289737996431">"Låg batterianvändning"</string>
     <string name="location_scanning_wifi_always_scanning_title" msgid="5004781272733434794">"Wifi-sökning"</string>
-    <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Tillåt att appar och tjänster söker efter Wi‑Fi-nätverk när som helst, även när Wi‑Fi är inaktiverat. Funktionen kan till exempel användas till att förbättra platsbaserade funktioner och tjänster."</string>
+    <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Tillåt att appar och tjänster söker efter wifi-nätverk när som helst, även när wifi är inaktiverat. Funktionen kan till exempel användas till att förbättra platsbaserade funktioner och tjänster."</string>
     <string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"Bluetooth-sökning"</string>
     <string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Tillåt att appar och tjänster söker efter enheter i närheten när som helst, även när Bluetooth är inaktiverat. Funktionen kan till exempel användas till att förbättra platsbaserade funktioner och tjänster."</string>
     <string name="location_services_preference_title" msgid="604317859531782159">"Platstjänster"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Ta bort"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Alla appar och data i denna session kommer att raderas."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Ta bort"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Gäst (du)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Användare"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Andra användare"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Radera gästaktivitet"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Radera alla appar och all data för gästen när gästläget avslutas"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Vill du radera gästaktivitet?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Appar och data från den här gästsessionen raderas nu och i fortsättningen raderas all gästaktivitet när du avslutar gästläget"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Aktivera telefonsamtal"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Aktivera telefonsamtal och sms"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Radera användare"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 669805b..dccf56e 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Taswira ya skrini"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Tumia seva ya skrini"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Wakati imeunganishwa na kifaa kingine au inapochaji"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Yoyote kati ya hizi mbili"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Inapochaji"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Wakati imeunganishwa na kifaa kingine"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Isiwahi"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Imezimwa"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Ili udhibiti kinachotendeka wakati simu imeambatishwa na/au iko katika hali tuli, washa taswira ya skrini."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Ianze lini?"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Taswira ya skrini ya sasa"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Mipangilio"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Mwangaza wa kiotomatiki"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Inua ili uondoe kifaa katika hali tuli"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Onyesho tulivu"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Futa"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Data na programu zote katika kipindi hiki zitafutwa."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Ondoa"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Mgeni (Wewe)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Watumiaji"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Watumiaji wengine"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Futa shughuli za mgeni"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Futa programu na data yote ya mgeni pale unapofunga matumizi ya wageni"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Ungependa kufuta shughuli za mgeni?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Programu na data kutoka kwenye kipindi hiki cha mgeni itafutwa sasa na kila shughuli ya mgeni ya baadaye itafutwa kila mara unapofunga matumizi ya wageni"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Ruhusu upigaji simu"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Washa kipengele cha SMS na kupiga simu"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Futa mtumiaji"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 6ec4da0..c5cf7dd 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -160,9 +160,9 @@
     <string name="connected_device_add_device_summary" msgid="8671009879957120802">"இணைப்பதற்கு, புளூடூத் ஆன் செய்யப்படும்"</string>
     <string name="connected_device_connections_title" msgid="4164120115341579170">"இணைப்பு விருப்பத்தேர்வுகள்"</string>
     <string name="connected_device_previously_connected_title" msgid="605808252622814415">"இதற்கு முன்னர் இணைத்த சாதனங்கள்"</string>
-    <string name="connected_device_previously_connected_screen_title" msgid="8823331744788100605">"ஏற்கனவே இணைத்தவை"</string>
+    <string name="connected_device_previously_connected_screen_title" msgid="8823331744788100605">"இதற்கு முன்னர் இணைத்தவை"</string>
     <string name="connected_device_bluetooth_turned_on_toast" msgid="144664089794199928">"புளூடூத் ஆன் செய்யப்பட்டது"</string>
-    <string name="previous_connected_see_all" msgid="7759413145713251328">"இணைக்கப்பட்ட சாதனங்கள் அனைத்தும்"</string>
+    <string name="previous_connected_see_all" msgid="7759413145713251328">"அனைத்தும் காட்டு"</string>
     <string name="date_and_time" msgid="1788358029823431692">"தேதி &amp; நேரம்"</string>
     <string name="choose_timezone" msgid="1450780665958642147">"நேரமண்டலத்தைத் தேர்வுசெய்க"</string>
     <!-- no translation found for intent_sender_data_label (1733806423295725392) -->
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"சிஸ்டம் மொழி"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"சிஸ்டத்தின் இயல்பு"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"அமைப்புகளில் இந்த ஆப்ஸுக்கான மொழித் தேர்வு கிடைக்கவில்லை."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"ஆப்ஸில் இருக்கும் மொழிகளிலிருந்து மொழி வேறுபடலாம். சில ஆப்ஸில் இந்த அமைப்பைப் பயன்படுத்த முடியாது."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">தேர்ந்தெடுத்த மொழிகளை அகற்றவா?</item>
       <item quantity="one">தேர்ந்தெடுத்த மொழியை அகற்றவா?</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"ஸ்கிரீன் சேவர்"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"ஸ்கிரீன் சேவரை உபயோகித்தல்"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"சார்ஜ் ஆகும் போது அல்லது சாதனத்தில் இணைந்திருக்கும்போது"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"இவற்றில் ஒன்று"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"சார்ஜ் செய்யப்படும்போது"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"சாதனத்தில் இணைந்திருக்கும்போது"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"ஒருபோதும் வேண்டாம்"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"ஆஃப்"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"மொபைல் உறக்கநிலையில் அல்லது சார்ஜாகும்போது, நிகழ்வுகளைக் கட்டுப்படுத்த பகல்கனாவை இயக்கு."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"தொடங்க வேண்டிய நேரம்"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"தற்போதைய ஸ்கிரீன் சேவர்"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"அமைப்பு"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"தானாக ஒளிர்வைச் சரிசெய்தல்"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"விரலை எடுக்கும் போது இயங்கு"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"சூழல்சார் திரை"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"நீக்கு"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"இந்த அமர்வின் எல்லா பயன்பாடுகளும், தரவும் நீக்கப்படும்."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"அகற்று"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"கெஸ்ட் (நீங்கள்)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"பயனர்கள்"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"பிற பயனர்கள்"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"கெஸ்ட் செயல்பாடுகளை நீக்குதல்"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"கெஸ்ட் பயன்முறையிலிருந்து வெளியேறும்போது கெஸ்ட் அமர்வின் ஆப்ஸ் மற்றும் தரவு அனைத்தும் நீக்கப்படும்"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"கெஸ்ட் செயல்பாடுகளை நீக்கவா?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"இந்த கெஸ்ட் அமர்வின் ஆப்ஸும் தரவும் இப்போது நீக்கப்படும். இனி கெஸ்ட் பயன்முறையிலிருந்து வெளியேறும் ஒவ்வொரு முறையும் கெஸ்ட் செயல்பாடுகள் நீக்கப்படும்"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"ஃபோன் அழைப்புகளை இயக்கு"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ஃபோன் அழைப்புகள் &amp; SMSஐ இயக்கு"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"பயனரை நீக்குதல்"</string>
@@ -3429,7 +3432,7 @@
     <string name="nfc_payment_default" msgid="3769788268378614608">"இயல்பு கட்டண ஆப்ஸ்"</string>
     <string name="nfc_payment_default_not_set" msgid="6471905683119084622">"அமைக்கப்படவில்லை"</string>
     <string name="nfc_payment_app_and_desc" msgid="2607417639227030398">"<xliff:g id="APP">%1$s</xliff:g> - <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
-    <string name="nfc_payment_use_default" msgid="6127665705799658860">"இயல்புநிலைப் பேமெண்ட் ஆப்ஸைப் பயன்படுத்துங்கள்"</string>
+    <string name="nfc_payment_use_default" msgid="6127665705799658860">"இயல்புநிலைப் பேமெண்ட் ஆப்ஸைப் பயன்படுத்து"</string>
     <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"இயல்புநிலை பேமெண்ட் ஆப்ஸைப் பயன்படுத்துக"</string>
     <string name="nfc_payment_favor_default" msgid="4508491832174644772">"எப்போதும்"</string>
     <string name="nfc_payment_favor_open" msgid="8554643344050373346">"மற்றொரு பேமெண்ட் ஆப்ஸ் திறந்திருக்கும் சமயங்கள் தவிர"</string>
@@ -5621,7 +5624,7 @@
     <string name="preference_summary_default_combination" msgid="4643585915107796253">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="NETWORKMODE">%2$s</xliff:g>"</string>
     <string name="mobile_data_connection_active" msgid="2422223108911581552">"இணைக்கப்பட்டது"</string>
     <string name="mobile_data_no_connection" msgid="905897142426974030">"இணைப்பு இல்லை"</string>
-    <string name="mobile_data_off_summary" msgid="1884248776904165539">"மொபைல் டேட்டாவைத் தானாகவே பயன்படுத்த முடியாது"</string>
+    <string name="mobile_data_off_summary" msgid="1884248776904165539">"மொபைல் டேட்டா தானியங்காக இணையாது"</string>
     <string name="non_carrier_network_unavailable" msgid="9031567407964127997">"வேறு நெட்வொர்க்குகள் எதுவும் கிடைக்கவில்லை"</string>
     <string name="all_network_unavailable" msgid="1163897808282057496">"நெட்வொர்க்குகள் எதுவும் கிடைக்கவில்லை"</string>
     <string name="mobile_data_disable_title" msgid="8438714772256088913">"மொபைல் டேட்டாவை முடக்கவா?"</string>
@@ -5690,7 +5693,7 @@
     <string name="mic_toggle_title" msgid="265145278323852547">"மைக்ரோஃபோன் அணுகல்"</string>
     <string name="location_toggle_title" msgid="5229867700421750868">"இருப்பிட அணுகல்"</string>
     <string name="perm_toggle_description" msgid="5754629581767319022">"ஆப்ஸுக்கும் சேவைகளுக்கும்"</string>
-    <string name="mic_toggle_description" msgid="484139688645092237">"ஆப்ஸ் &amp; சேவைகளுக்கு. இந்த அமைப்பு முடக்கப்பட்டிருந்தால் அவசர உதவி எண்ணைத் தொடர்பு கொள்ளும்போது மைக்ரோஃபோன் தரவு பகிரப்படலாம்."</string>
+    <string name="mic_toggle_description" msgid="484139688645092237">"ஆப்ஸ் &amp; சேவைகளுக்கு. இந்த அமைப்பு முடக்கப்பட்டிருந்தாலும் அவசர உதவி எண்ணைத் தொடர்பு கொள்ளும்போது மைக்ரோஃபோன் தரவு பகிரப்படலாம்."</string>
     <string name="previous_page_content_description" msgid="6438292457923282991">"முந்தையது"</string>
     <string name="next_page_content_description" msgid="1641835099813416294">"அடுத்து"</string>
     <string name="colors_viewpager_content_description" msgid="2591751086138259565">"வண்ண மாதிரிக்காட்சி"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 661b0ff..e2e343a 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -225,11 +225,9 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"సూచించిన భాషలు"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"అన్ని భాషలు"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"సిస్టమ్ భాష"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"సిస్టమ్ ఆటోమేటిక్ సెట్టింగ్"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"ఈ యాప్ కోసం భాష ఎంపిక సెట్టింగ్‌లలో అందుబాటులో లేదు."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"యాప్‌లో అందుబాటులో ఉన్న భాషలకు భాష భిన్నంగా ఉండవచ్చు. కొన్ని యాప్‌లు ఈ సెట్టింగ్‌కు సపోర్ట్ చేయకపోవచ్చు."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">ఎంచుకున్న భాషలను తీసివేయాలా?</item>
       <item quantity="one">ఎంచుకున్న భాషను తీసివేయాలా?</item>
@@ -1430,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"స్క్రీన్ సేవర్"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"స్క్రీన్ సేవర్‌ను ఉపయోగించండి"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ఛార్జ్ చేసేటప్పుడు లేదా డాక్ చేసినప్పుడు"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"పై రెండు సందర్భాల్లోనూ"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"ఛార్జింగ్‌లో ఉన్నప్పుడు"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"డాక్ చేయబడినప్పుడు"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"ఎప్పటికీ వద్దు"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"ఆఫ్‌లో ఉంది"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"ఫోన్ డాక్ చేయబడినప్పుడు మరియు/లేదా నిద్రావస్థలో ఉన్నప్పుడు ఏమి జరగాలో నియంత్రించడానికి, స్క్రీన్ సేవర్‌ను ఆన్ చేయండి."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"ఎప్పుడు ప్రారంభించాలి"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"ప్రస్తుత స్క్రీన్ సేవర్"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"సెట్టింగ్‌లు"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"ఆటోమేటిక్‌ ప్రకాశం"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"సక్రియం చేయడానికి వేళ్లను తీసివేయండి"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"యాంబియంట్ డిస్‌ప్లే"</string>
@@ -3401,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"తొలగించండి"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"ఈ సెషన్‌లోని అన్ని యాప్‌లు మరియు డేటా తొలగించబడతాయి."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"తీసివేయి"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"గెస్ట్ (మీరు)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"యూజర్‌లు"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"ఇతర యూజర్‌లు"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"గెస్ట్ యాక్టివిటీని తొలగించండి"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"గెస్ట్ మోడ్ నుండి నిష్క్రమించినప్పుడు అన్ని గెస్ట్ యాప్‌లు, డేటాను తొలగించండి"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"గెస్ట్ యాక్టివిటీని తొలగించాలా?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"ఈ గెస్ట్ సెషన్‌లోని యాప్‌లు, డేటా ఇప్పుడు తొలగించబడతాయి, మీరు గెస్ట్ మోడ్ నుండి నిష్క్రమించిన ప్రతిసారీ భవిష్యత్ గెస్ట్ యాక్టివిటీ మొత్తం తొలగించబడుతుంది"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"ఫోన్ కాల్స్‌ను ఆన్ చేయి"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"ఫోన్ కాల్స్‌ &amp; SMS ఆన్ చేయి"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"వినియోగదారుని తొలగించు"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 5542736..a735487 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"ภาษาของระบบ"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"ค่าเริ่มต้นของระบบ"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"การเลือกภาษาสำหรับแอปนี้ไม่พร้อมให้ใช้งานจากการตั้งค่า"</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"ภาษาอาจแตกต่างจากที่ให้บริการในแอป บางแอปอาจไม่รองรับการตั้งค่านี้"</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">นำภาษาที่เลือกออกไหม</item>
       <item quantity="one">นำภาษาที่เลือกออกไหม</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"โปรแกรมรักษาหน้าจอ"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"ใช้โปรแกรมรักษาหน้าจอ"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ขณะชาร์จหรือวางอยู่บนแท่นชาร์จ"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"แบบใดก็ได้"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"ขณะที่ชาร์จ"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ขณะวางอยู่บนแท่นชาร์จ"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"ไม่เลย"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"ปิด"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"หากต้องการควบคุมสิ่งที่เกิดขึ้นขณะที่โทรศัพท์อยู่บนแท่นชาร์จและ/หรืออยู่ในโหมดสลีป ให้เปิดโปรแกรมรักษาหน้าจอ"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"เริ่มเมื่อใด"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"โปรแกรมรักษาหน้าจอในปัจจุบัน"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"การตั้งค่า"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"ปรับความสว่างอัตโนมัติ"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"ยกขึ้นเพื่อเวก"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"หน้าจอแอมเบียนท์"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"ลบ"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"ระบบจะลบแอปและข้อมูลทั้งหมดในเซสชันนี้"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"นำออก"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"ผู้มาเยือน (คุณ)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"ผู้ใช้"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"ผู้ใช้รายอื่นๆ"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"ลบกิจกรรมของผู้มาเยือน"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"ลบแอปและข้อมูลทั้งหมดของผู้มาเยือนเมื่อออกจากโหมดผู้มาเยือน"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"ลบกิจกรรมของผู้มาเยือนไหม"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"ระบบจะลบแอปและข้อมูลจากเซสชันผู้มาเยือนนี้ตอนนี้เลย และต่อไปนี้จะลบกิจกรรมทั้งหมดของผู้มาเยือนทุกครั้งที่คุณออกจากโหมดผู้มาเยือน"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"เปิดการโทร"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"เปิดการโทรและ SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"ลบผู้ใช้"</string>
@@ -5586,7 +5589,7 @@
     <string name="calls_sms_footnote" msgid="1003530944232362815">"การโทรผ่าน Wi-Fi เป็นการโทรออกและรับสายผ่านเครือข่าย Wi‑Fi ที่ไม่ได้เป็นของผู้ให้บริการ "<annotation id="url">"ดูข้อมูลเพิ่มเติม"</annotation></string>
     <string name="calls_preference_title" msgid="7536882032182563800">"การโทร"</string>
     <string name="sms_preference_title" msgid="8392745501754864395">"SMS"</string>
-    <string name="calls_sms_preferred" msgid="6016477652522583496">"ต้องการ"</string>
+    <string name="calls_sms_preferred" msgid="6016477652522583496">"เลือกใช้"</string>
     <string name="calls_sms_calls_preferred" msgid="9004261125829377885">"ใช้สำหรับการโทร"</string>
     <string name="calls_sms_sms_preferred" msgid="3855778890660922711">"ใช้สำหรับ SMS"</string>
     <string name="calls_sms_unavailable" msgid="4055729705246556529">"ไม่ว่าง"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index ffb19d2..0274e73 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Wika ng system"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Default ng system"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Hindi available sa Mga Setting ang pagpili ng wika para sa app na ito."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Posibleng iba ang wika sa mga wikang available sa app. Posibleng hindi suportahan ng ilang app ang setting na ito."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">Alisin ang mga piniling wika?</item>
       <item quantity="other">Alisin ang mga piniling wika?</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Screen saver"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Gumamit ng screen saver"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Habang nagcha-charge o naka-dock"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Alinman"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Habang nagcha-charge"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Habang naka-dock"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Hindi kailanman"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Naka-off"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Upang makontrol kung ano ang mangyayari kapag naka-dock o naka-sleep ang telepono, i-on ang screen saver."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Kailan magsisimula"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Kasalukuyang screen saver"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Mga Setting"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Awtomatikong pagliwanag"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Angatin upang paganahin"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ambient na display"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"I-delete"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Ide-delete ang lahat ng app at data sa session na ito."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Alisin"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Bisita (Ikaw)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Mga User"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Iba pang user"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"I-delete ang aktibidad ng bisita"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"I-delete ang lahat ng app at data ng bisita kapag umaalis sa guest mode"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"I-delete ang aktibidad ng bisita?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Made-delete na ngayon ang mga app at data mula sa session na ito ng bisita, at made-delete ang lahat ng aktibidad ng bisita sa hinaharap sa tuwing aalis ka ng guest mode"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"I-on ang mga pagtawag sa telepono"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"I-on ang mga pagtawag sa telepono at SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"I-delete ang user"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index af153a3..5eab44f 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -225,8 +225,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"Önerilen diller"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"Tüm diller"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Sistem dili"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Sistem varsayılanı"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Ayarlar\'da bu uygulama için dil seçimi mevcut değil."</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -1006,7 +1005,7 @@
     <string name="wifi_ssid_hint" msgid="1940577553241083524">"SSID\'yi girin"</string>
     <string name="wifi_security" msgid="9095934643631406913">"Güvenlik"</string>
     <string name="wifi_hidden_network" msgid="6466834025375485596">"Gizli ağ"</string>
-    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"Yönlendiriciniz ağ kimliği yayınlamıyorsa, ancak bu yönlendiriciye gelecekte bağlanmak istiyorsanız ağın görünürlük ayarını gizli yapabilirsiniz.\n\nBu ayar, telefonunuzun ağı bulmak için düzenli olarak sinyal yayınlamasını gerektireceğinden güvenlik riski oluşturabilir.\n\nAğın görünürlüğü gizli yapıldığında yönlendirici ayarlarınız değişmez."</string>
+    <string name="wifi_hidden_network_warning" msgid="3937433813754746158">"Yönlendiriciniz ağ kimliği yayınlamıyor ve gelecekte ona bağlanmak istiyorsanız ağın görünürlük ayarını gizli yapabilirsiniz.\n\nBu ayar, telefonunuzun ağı bulmak için düzenli olarak sinyal yayınlamasını gerektireceğinden güvenlik riski oluşturabilir.\n\nAğın görünürlüğü gizli yapıldığında yönlendirici ayarlarınız değişmez."</string>
     <string name="wifi_signal" msgid="4442182285304271424">"Sinyal gücü"</string>
     <string name="wifi_status" msgid="5349199188871002778">"Durum"</string>
     <string name="tx_wifi_speed" msgid="2368986629172050673">"Bağlantı gönderim hızı"</string>
@@ -1083,7 +1082,7 @@
     <string name="wifi_use_system_certs" msgid="5587866698144996931">"Sistem sertifikalarını kullan"</string>
     <string name="wifi_do_not_provide_eap_user_cert" msgid="6336636553673065145">"Sağlama"</string>
     <string name="wifi_do_not_validate_eap_server" msgid="4673867078988209732">"Doğrulama yapma"</string>
-    <string name="wifi_trust_on_first_use" msgid="7488431582505858774">"İlk Kullanımda Güven"</string>
+    <string name="wifi_trust_on_first_use" msgid="7488431582505858774">"İlk kullanımda güven"</string>
     <string name="wifi_ssid_too_long" msgid="5961719058705013875">"Ağ adı çok uzun."</string>
     <string name="wifi_no_domain_warning" msgid="1452133316532366772">"Alan adı belirtilmelidir."</string>
     <string name="wifi_no_user_cert_warning" msgid="8466376918835248956">"Sertifika zorunlu."</string>
@@ -1430,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Ekran koruyucu"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Ekran koruyucu kullan"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Şarj olurken veya yuvadayken"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Her iki durumda da"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Şarj olurken"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Yuvadayken"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Hiçbir zaman"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Kapalı"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Telefon yuvaya yerleştirildiğinde ve/veya uyku durumundayken ne olacağını kontrol etmek için ekran koruyucuyu etkinleştirin."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Başlama zamanı"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Geçerli ekran koruyucu"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Ayarlar"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Otomatik parlaklık"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Kaldırarak uyandır"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Ortam ekranı"</string>
@@ -2097,7 +2093,7 @@
     <string name="internal_storage" msgid="999496851424448809">"Dahili Bellek"</string>
     <string name="recompute_size" msgid="1098091228370999128">"Boyut yeniden hesaplanıyor…"</string>
     <string name="clear_data_dlg_title" msgid="180446967743732410">"Uygulama verileri silinsin mi?"</string>
-    <string name="clear_data_dlg_text" msgid="3440011276559762619">"Dosyalar ve ayarlar da dahil olmak üzere bu uygulama verileri bu cihazdan kalıcı olarak silinecektir"</string>
+    <string name="clear_data_dlg_text" msgid="3440011276559762619">"Dosyalar ve ayarlar da dahil olmak üzere bu uygulamanın verileri bu cihazdan kalıcı olarak silinecektir"</string>
     <string name="dlg_ok" msgid="1421350367857960997">"Tamam"</string>
     <string name="dlg_cancel" msgid="5164705061530774899">"İptal"</string>
     <string name="dlg_delete" msgid="1790919205039397659">"Sil"</string>
@@ -3401,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Sil"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Bu oturumdaki tüm uygulamalar ve veriler silinecek."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Kaldır"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Misafir (Siz)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Kullanıcılar"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Diğer kullanıcılar"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Misafir etkinliğini silme"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Misafir modundan çıkarken tüm misafir uygulamalarını ve verilerini silin"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Misafir etkinliği silinsin mi?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Bu misafir oturumundaki uygulamalar ve veriler şimdi silinecektir. Bundan sonraki tüm misafir etkinlikleri ise misafir modundan her çıktığınızda silinir."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Telefon aramalarını aç"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Telefon aramalarını ve mesajları aç"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Kullanıcıyı sil"</string>
@@ -3430,8 +3433,8 @@
     <string name="nfc_payment_default" msgid="3769788268378614608">"Ödeme varsayılanı"</string>
     <string name="nfc_payment_default_not_set" msgid="6471905683119084622">"Ayarlanmadı"</string>
     <string name="nfc_payment_app_and_desc" msgid="2607417639227030398">"<xliff:g id="APP">%1$s</xliff:g> - <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
-    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Varsayılan ödeme uygulamasını kullanın"</string>
-    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Varsayılan ödeme uygulamasını kullanın"</string>
+    <string name="nfc_payment_use_default" msgid="6127665705799658860">"Varsayılan ödeme uygulamasını kullan"</string>
+    <string name="nfc_payment_use_default_dialog" msgid="8556328090777785383">"Varsayılan ödeme uygulamasını kullan"</string>
     <string name="nfc_payment_favor_default" msgid="4508491832174644772">"Her zaman"</string>
     <string name="nfc_payment_favor_open" msgid="8554643344050373346">"Başka bir ödeme uygulaması açık olmadığında"</string>
     <string name="nfc_payment_pay_with" msgid="3001320460566523453">"Temassız bir ödeme noktasında şununla ödeyin:"</string>
@@ -3572,7 +3575,7 @@
     <string name="connected_devices_dashboard_android_auto_no_nfc_summary" msgid="2532811870469405527">"Bluetooth, Android Auto, sürüş modu"</string>
     <string name="connected_devices_dashboard_android_auto_no_driving_mode_summary" msgid="6426996842202276640">"Bluetooth, Android Auto, NFC"</string>
     <string name="connected_devices_dashboard_android_auto_no_nfc_no_driving_mode" msgid="1672426693308438634">"Bluetooth, Android Auto"</string>
-    <string name="nfc_and_payment_settings_payment_off_nfc_off_summary" msgid="7132040463607801625">"NFC kapalı olduğundan kullanılamaz"</string>
+    <string name="nfc_and_payment_settings_payment_off_nfc_off_summary" msgid="7132040463607801625">"NFC kapalı olduğundan kullanılamıyor"</string>
     <string name="nfc_and_payment_settings_no_payment_installed_summary" msgid="4879818114908207465">"Kullanmak için önce bir ödeme uygulaması yükleyin"</string>
     <string name="app_and_notification_dashboard_title" msgid="2861781687031832943">"Uygulama ve bildirimler"</string>
     <string name="app_and_notification_dashboard_summary" msgid="8047683010984186106">"Son uygulamalar, varsayılan uygulamalar"</string>
@@ -4514,7 +4517,7 @@
     <string name="usb_use_file_transfers" msgid="483915710802018503">"Dosya Aktarımı"</string>
     <string name="usb_use_file_transfers_desc" msgid="1020257823387107336">"Dosyaları başka bir cihaza aktarın"</string>
     <string name="usb_use_photo_transfers" msgid="4641181628966036093">"PTP"</string>
-    <string name="usb_transcode_files" msgid="2441954752105119109">"Videoları AVC dosyasına dönüştür"</string>
+    <string name="usb_transcode_files" msgid="2441954752105119109">"Videoları AVC biçimine dönüştür"</string>
     <string name="usb_transcode_files_summary" msgid="307102635711961513">"Videolar daha fazla medya oynatıcıda çalışır ancak kalite düşebilir"</string>
     <string name="usb_use_photo_transfers_desc" msgid="7490250033610745765">"MTP desteklenmiyorsa fotoğrafları veya dosyaları aktarın (PTP)"</string>
     <string name="usb_use_tethering" msgid="2897063414491670531">"USB tethering"</string>
@@ -5170,8 +5173,8 @@
     <string name="zen_suggestion_summary" msgid="1984990920503217">"Konsantrasyonunuzu bozmamak için bildirimleri duraklatın"</string>
     <string name="disabled_feature" msgid="7151433782819744211">"Özellik kullanılamıyor"</string>
     <string name="disabled_feature_reason_slow_down_phone" msgid="5743569256308510404">"Bu özellik, telefonunuzu yavaşlattığı için kapatıldı."</string>
-    <string name="show_first_crash_dialog" msgid="1696584857732637389">"Kilitlenme iletişim kutusunu her zaman göster"</string>
-    <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Her uygulama kilitlendiğinde iletişim kutusunu göster"</string>
+    <string name="show_first_crash_dialog" msgid="1696584857732637389">"Kilitlenme iletişimini her zaman göster"</string>
+    <string name="show_first_crash_dialog_summary" msgid="4692334286984681111">"Her uygulama kilitlendiğinde iletişimi göster"</string>
     <string name="angle_enabled_app" msgid="6044941043384239076">"ANGLE özellikli uygulamayı seçin"</string>
     <string name="angle_enabled_app_not_set" msgid="4472572224881726067">"ANGLE özellikli uygulama ayarlanmadı"</string>
     <string name="angle_enabled_app_set" msgid="7811829383833353021">"ANGLE özellikli uygulama: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -5652,7 +5655,7 @@
     <string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Uygulama sabitlemeyi kullan"</string>
     <string name="developer_options_main_switch_title" msgid="1720074589554152501">"Geliştirici seçeneklerini kullan"</string>
     <string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Yazdırma hizmetini kullan"</string>
-    <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Birden fazla kullanıcıya izin verme"</string>
+    <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Birden fazla kullanıcıya izin ver"</string>
     <string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Kablosuz hata ayıklamayı kullan"</string>
     <string name="graphics_driver_main_switch_title" msgid="6125172901855813790">"Grafik sürücüsü tercihlerini kullan"</string>
     <string name="battery_saver_main_switch_title" msgid="5072135547489779352">"Pil tasarrufunu kullan"</string>
@@ -5691,7 +5694,7 @@
     <string name="mic_toggle_title" msgid="265145278323852547">"Mikrofon erişimi"</string>
     <string name="location_toggle_title" msgid="5229867700421750868">"Konum erişimi"</string>
     <string name="perm_toggle_description" msgid="5754629581767319022">"Uygulamalar ve hizmetler için"</string>
-    <string name="mic_toggle_description" msgid="484139688645092237">"Uygulamalar ve hizmetler için. Bu ayar kapalıyken bir acil durum numarasını aradığınızda mikrofon verileri paylaşılmaya devam edebilir."</string>
+    <string name="mic_toggle_description" msgid="484139688645092237">"Uygulamalar ve hizmetler için. Bu ayar kapalıyken bir acil durum numarasını aradığınızda mikrofon verileri paylaşılmaya devam edilebilir."</string>
     <string name="previous_page_content_description" msgid="6438292457923282991">"Önceki"</string>
     <string name="next_page_content_description" msgid="1641835099813416294">"Sonraki"</string>
     <string name="colors_viewpager_content_description" msgid="2591751086138259565">"Renk önizleme"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 9158156..512b040 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -227,8 +227,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"Пропоновані мови"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"Усі мови"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Мова системи"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Налаштування системи за умовчанням"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Вибір мови для цього додатка в налаштуваннях неможливий"</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -1470,15 +1469,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Заставка"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Використовувати заставку"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Під час заряджання чи в док-станції"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Завжди"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Під час заряджання"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Коли в док-станції"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Ніколи"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Вимк."</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Щоб контролювати поведінку телефона, коли він у док-станції та/або в режимі сну, увімкніть заставку."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Коли почати"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Поточна заставка"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Налаштування"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Автоматична яскравість"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Підняти, щоб активувати"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Активація екрана"</string>
@@ -3489,6 +3485,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Видалити"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Усі додатки й дані з цього сеансу буде видалено."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Вийти"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Гість (ви)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Користувачі"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Інші користувачі"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Видалити дії в режимі гостя"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Видалити всі додатки й дані гостя під час виходу з режиму гостя"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Видалити дії в режимі гостя?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Додатки й дані з цього сеансу в режимі гостя буде видалено зараз, а всі майбутні дії гостя видалятимуться під час кожного виходу з цього режиму"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Увімкнути телефонні дзвінки"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Увімкнути телефонні дзвінки й SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Видалити користувача"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index d8ab650..3c38aad 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -227,8 +227,7 @@
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"سسٹم کی زبان"</string>
     <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"سسٹم ڈیفالٹ"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"اس ایپ کے لیے زبان کا انتخاب ترتیبات سے دستیاب نہیں ہے۔"</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"زبان ایپ میں دستیاب زبانوں سے مختلف ہو سکتی ہے۔ ہو سکتا ہے کچھ ایپس اس ترتیب کو سپورٹ نہ کریں۔"</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="other">منتخب کردہ زبانیں ہٹائیں؟</item>
       <item quantity="one">منتخب کردہ زبان ہٹائیں؟</item>
@@ -1429,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"اسکرین سیور"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"اسکرین سیور کا استعمال کریں"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"ڈاک سے منسلک یا چارج ہونے کے دوران"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"دونوں صورتوں میں"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"چارج ہوتے وقت"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"ڈاک کیے ہونے پر"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"کبھی نہیں"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"آف"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"فون ڈاک کیے ہونے اور/یا سوئے ہوئے ہونے کے دوران کیا ہو اسے کنٹرول کرنے کیلئے، اسکرین سیور آن کریں۔"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"وقت آغاز"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"موجودہ اسکرین سیور"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"ترتیبات"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"خود کار چمک"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"جگانے کیلئے اٹھائیں"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"ايمبيئنٹ ڈسپلے"</string>
@@ -3400,6 +3396,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"حذف کریں"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"اس سیشن میں موجود سبھی ایپس اور ڈیٹا کو حذف کر دیا جائے گا۔"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"ہٹائیں"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"مہمان (آپ)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"صارفین"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"دیگر صارفین"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"مہمان کی سرگرمی کو حذف کریں"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"مہمان وضع سے باہر نکلتے وقت تمام مہمان ایپس اور ڈیٹا کو حذف کریں"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"مہمان کی سرگرمی کو حذف کریں؟"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"اس مہمان سیشن سے ایپس اور ڈیٹا کو اب حذف کر دیا جائے گا اور جب بھی آپ مہمان وضع سے باہر نکلیں گے تو تمام مستقبل کی مہمان کی سرگرمیاں حذف کر دی جائیں گی"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"فون کالز آن کریں"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"‏فون کالز اور SMS آن کریں"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"صارف کو حذف کریں"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 2be5f50..6724e80 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -225,8 +225,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"Tavsiya etilgan tillar"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"Barcha tillar"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Tizim tili"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Tizim standarti"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Bu ilova uchun Sozlamalardan tilni tanlash imkonsiz"</string>
     <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Bu til ilovadagi tillardan farq qilishi mumkin. Ayrim ilovalarda bu sozlama ishlamaydi."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
@@ -1431,15 +1430,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Ekran lavhasi"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Ekran lavhasidan foydalanish"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Quvvat yoki dok-stansiya"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Har doim"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Quvvat olayotganda"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Dok-stansiyaga ulanganda"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Hech qachon"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Yoqilmagan"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Telefon dok-stansiyaga ulanganda yoki uyqu rejimiga o‘tganida uning ekranida nima ko‘rinishini sozlash uchun ekran lavhasini yoqing."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Qachon boshlansin"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Joriy ekran lavhasi"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Sozlamalar"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Avtomatik yorqinlik"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Tik holatda faollashtirish"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Sezgir ekran"</string>
@@ -1766,7 +1762,7 @@
     <string name="main_clear_desc" product="default" msgid="6984348811887162647">"Telefonning "<b>"ichki xotirasidagi"</b>" hamma narsa tozalab tashlanadi, jumladan:\n\n"<li>"Google hisobingiz"</li>\n<li>"Tizim va ilovalar sozlamalari"</li>\n<li>"Yuklab olingan ilovalar"</li></string>
     <string name="main_clear_accounts" product="default" msgid="7675859115108318537">\n\n"Siz hozir tizimga quyidagi hisoblardan kirgansiz:\n"</string>
     <string name="main_clear_other_users_present" product="default" msgid="2672976674798019077">\n\n"Bu qurilmada boshqa foydalanuvchilar ham bor.\n"</string>
-    <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"Musiqalar"</li>\n<li>"Rasmlar"</li>\n<li>"Foydalanuvchining boshqa ma\'lumotlari"</li></string>
+    <string name="main_clear_desc_also_erases_external" msgid="3687911419628956693"><li>"Musiqalar"</li>\n<li>"Suratlar"</li>\n<li>"Foydalanuvchining boshqa ma\'lumotlari"</li></string>
     <string name="main_clear_desc_also_erases_esim" msgid="4553469876411831729"><li>"eSIM kartalar"</li></string>
     <string name="main_clear_desc_no_cancel_mobile_plan" msgid="369883568059127035">\n\n"Bunda, mobil aloqa xizmatiga hech narsa qilinmaydi."</string>
     <string name="main_clear_desc_erase_external_storage" product="nosdcard" msgid="4441604184663452046">\n\n"Musiqa, rasm va boshqa maʼlumotlarni tozalash uchun "<b>"USB xotirani"</b>" tozalash kerak."</string>
@@ -1863,7 +1859,7 @@
     <string name="location_category_recent_location_access" msgid="2558063524482178146">"Oxirgi kirish"</string>
     <string name="location_recent_location_access_see_all" msgid="4203102419355323325">"Hammasi"</string>
     <string name="location_recent_location_access_view_details" msgid="5803264082558504544">"Tafsilotlar"</string>
-    <string name="location_no_recent_apps" msgid="6814206631456177033">"Yaqin-orada hech qanday ilova joylashuv axborotini talab qilmadi"</string>
+    <string name="location_no_recent_apps" msgid="6814206631456177033">"Yaqin-orada hech qanday ilova joylashuv axborotini talab qilmagan"</string>
     <string name="location_no_recent_accesses" msgid="6031735777805464247">"Hech qanday ilova yaqinda joylashuv axborotidan foydalanmagan"</string>
     <string name="location_high_battery_use" msgid="4277318891200626524">"Yuqori batareya sarfi"</string>
     <string name="location_low_battery_use" msgid="5218950289737996431">"Batareya sarfi kam"</string>
@@ -3402,6 +3398,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"O‘chirib tashlash"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Ushbu seansdagi barcha ilovalar va ma’lumotlar o‘chirib tashlanadi."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Olib tashlash"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Mehmon (Siz)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Foydalanuvchilar"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Boshqa foydalanuvchilar"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Mehmon faoliyatini tozalash"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Mehmon rejimidan chiqishda barcha mehmon ilovalari va maʼlumotlarini oʻchirish"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Mehmon faoliyati tozalansinmi?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Joriy mehmon seansidagi ilova va maʼlumotlar hozir tozalanadi va har safar mehmon rejimidan chiqish vaqtida barcha keyingi mehmon faolliklari tozalanadi"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Telefon chaqiruvlari"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Telefon chaqiruvlari va SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Foydalanuvchini olib tashlash"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 61960cf..6a2c911 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -225,8 +225,7 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"Ngôn ngữ đề xuất"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"Tất cả ngôn ngữ"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Ngôn ngữ hệ thống"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Theo chế độ mặc định của hệ thống"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Bạn chưa thể chọn ngôn ngữ cho ứng dụng này trong phần Cài đặt."</string>
     <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
     <skip />
@@ -1432,15 +1431,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Trình bảo vệ màn hình"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Sử dụng trình bảo vệ màn hình"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Khi sạc hoặc gắn vào đế sạc"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Khi gắn đế và sạc"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Trong khi sạc"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Khi gắn vào đế sạc"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Không bao giờ"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Tắt"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Để kiểm soát những gì diễn ra khi điện thoại được gắn đế và/hoặc ở chế độ ngủ, hãy bật trình bảo vệ màn hình."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Thời điểm khởi động"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Trình bảo vệ màn hình hiện tại"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Cài đặt"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Độ sáng tự động"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Nhấc lên để đánh thức"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Màn hình sáng"</string>
@@ -3403,6 +3399,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Xóa"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Tất cả ứng dụng và dữ liệu trong phiên này sẽ bị xóa."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Xóa"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Khách (Bạn)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Người dùng"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Người dùng khác"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Xoá hoạt động ở chế độ khách"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Xoá mọi ứng dụng và dữ liệu ở chế độ khách khi thoát khỏi chế độ khách"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Xoá hoạt động ở chế độ khách?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Các ứng dụng và dữ liệu trong phiên khách này sẽ bị xoá ngay bây giờ, và tất cả hoạt động sau này ở chế độ khách sẽ bị xoá mỗi khi bạn thoát khỏi chế độ khách"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Bật cuộc gọi điện thoại"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Bật cuộc gọi điện thoại và SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Xóa người dùng"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 3390345..6030043 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -1429,15 +1429,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"屏保"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"使用屏保"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"充电或插入基座时"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"以上任一情况"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"充电时"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"插入基座时"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"一律不"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"已关闭"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"要控制手机在插入基座时和/或休眠状态下的行为，请开启屏保功能。"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"启用时机"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"当前的屏保"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"设置"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"自动调整亮度"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"拿起设备时唤醒"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"主动显示"</string>
@@ -3400,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"删除"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"此会话中的所有应用和数据都将被删除。"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"移除"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"访客（您）"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"用户"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"其他用户"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"删除访客活动记录"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"退出访客模式时删除所有访客应用和数据"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"要删除访客活动记录吗？"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"此访客会话中的应用和数据将会立即删除；日后您每次退出访客模式时，系统都会删除访客活动记录"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"开启通话功能"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"开启通话和短信功能"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"删除用户"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 8439146..78f0784 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -1431,15 +1431,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"螢幕保護程式"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"使用螢幕保護程式"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"充電或放上插座時"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"任何一個狀態"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"充電時"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"放上插座時"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"永不"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"關閉"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"如要控制手機在插座上和/或休眠時的操作，請開啟螢幕保護程式。"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"啟用時間"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"目前的螢幕保護程式"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"設定"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"自動調整亮度"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"拿起即可喚醒"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"微光螢幕"</string>
@@ -3403,6 +3400,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"刪除"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"這個工作階段中的所有應用程式和資料都會被刪除。"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"移除"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"訪客 (您)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"使用者"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"其他使用者"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"刪除訪客活動"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"結束訪客模式時刪除所有訪客應用程式和資料"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"要刪除訪客活動嗎？"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"系統現在會刪除此訪客工作階段中的應用程式和資料；日後每次結束訪客模式時，系統都會刪除所有未來的訪客活動"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"開啟通話功能"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"開啟通話和短訊功能"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"刪除使用者"</string>
diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml
index 1e6a3ca..6cd3522 100644
--- a/res/values-zh-rTW/arrays.xml
+++ b/res/values-zh-rTW/arrays.xml
@@ -579,7 +579,7 @@
     <!-- no translation found for rtt_setting_mode:2 (8525285145696236811) -->
     <!-- no translation found for rtt_setting_mode:3 (7725394146877517088) -->
   <string-array name="nfc_payment_favor">
-    <item msgid="9104058551372383947">"一律開啟"</item>
+    <item msgid="9104058551372383947">"一律使用"</item>
     <item msgid="5283665583617307336">"其他付款應用程式開啟時除外"</item>
   </string-array>
   <string-array name="nfc_payment_favor_values">
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index fc6f5d7..da7bde7 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -1431,15 +1431,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"螢幕保護程式"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"使用螢幕保護程式"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"充電或安置於座架上時"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"以上任一情況"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"充電時"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"安置於座架上時"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"永遠不要"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"關閉"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"如要控制手機安置於座架上和/或休眠時的設定，請開啟螢幕保護程式。"</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"啟用時機"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"目前的螢幕保護程式"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"設定"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"自動調整亮度"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"舉起即可喚醒"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"微光螢幕"</string>
@@ -3402,6 +3399,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"刪除"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"這個工作階段中的所有應用程式和資料都會遭到刪除。"</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"移除"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"訪客 (你)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"使用者"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"其他使用者"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"刪除訪客活動"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"離開訪客模式時刪除所有訪客應用程式和資料"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"要刪除訪客活動嗎？"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"系統將立即刪除這個訪客工作階段中的應用程式和資料，日後只要你離開訪客模式，系統也都會刪除所有未來的訪客活動"</string>
     <string name="user_enable_calling" msgid="264875360626905535">"開啟通話功能"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"開啟通話和簡訊功能"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"刪除使用者"</string>
@@ -5395,8 +5399,8 @@
     <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"正在停用 SIM 卡<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
     <string name="privileged_action_disable_fail_title" msgid="6689494935697043555">"無法停用電信業者"</string>
     <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"發生錯誤，無法停用你的電信業者。"</string>
-    <string name="sim_action_enable_dsds_title" msgid="226508711751577169">"要使用 2 張 SIM 卡嗎？"</string>
-    <string name="sim_action_enable_dsds_text" msgid="970986559326263949">"這部裝置可以同時使用 2 張 SIM 卡。如果不想同時使用 2 張 SIM 卡，請輕觸 [不用了，謝謝]。"</string>
+    <string name="sim_action_enable_dsds_title" msgid="226508711751577169">"要使用兩張 SIM 卡嗎？"</string>
+    <string name="sim_action_enable_dsds_text" msgid="970986559326263949">"這部裝置可以同時使用兩張 SIM 卡。如果不想同時使用兩張 SIM 卡，請輕觸「不用了，謝謝」。"</string>
     <string name="sim_action_restart_title" msgid="7054617569121993825">"要重新啟動裝置嗎？"</string>
     <string name="sim_action_restart_text" msgid="8019300474703571013">"如要開始使用，請重新啟動你的裝置。重新啟動後即可新增其他 SIM 卡。"</string>
     <string name="sim_action_continue" msgid="1688813133152389943">"繼續"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index d5b37ad..4c20892 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -225,11 +225,9 @@
     <string name="suggested_app_locales_title" msgid="8898358282377369405">"Izilimi eziphakanyisiwe"</string>
     <string name="all_supported_app_locales_title" msgid="5479289964316009026">"Zonke izilimi"</string>
     <string name="preference_of_system_locale_title" msgid="8067226276038751504">"Ulimi lwesistimu"</string>
-    <!-- no translation found for preference_of_system_locale_summary (5612241394431188535) -->
-    <skip />
+    <string name="preference_of_system_locale_summary" msgid="5612241394431188535">"Okuzenzakalelayo kwesistimu"</string>
     <string name="desc_no_available_supported_locale" msgid="7883271726226947273">"Ukukhetha ulimi kwale app akutholakali Kumasethingi."</string>
-    <!-- no translation found for desc_app_locale_disclaimer (5295933110644789052) -->
-    <skip />
+    <string name="desc_app_locale_disclaimer" msgid="5295933110644789052">"Ulimi lungahluka ezilimini ezitholakala ku-app. Amanye ama-app angase angalisekeli leli sethingi."</string>
     <plurals name="dlg_remove_locales_title" formatted="false" msgid="2845515796732609837">
       <item quantity="one">Susa izilimi ezikhethiwe?</item>
       <item quantity="other">Susa izilimi ezikhethiwe?</item>
@@ -1430,15 +1428,12 @@
     <string name="screensaver_settings_title" msgid="3588535639672365395">"Isigcini sihenqo"</string>
     <string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"Sebenzisa isilondolozi sesikrini"</string>
     <string name="screensaver_settings_summary_either_long" msgid="371949139331896271">"Ngenkathi ishaja noma idokhiwe"</string>
-    <string name="screensaver_settings_summary_either_short" msgid="2126139984738506920">"Noma"</string>
     <string name="screensaver_settings_summary_sleep" msgid="6555922932643037432">"Ngenkathi ishaja"</string>
     <string name="screensaver_settings_summary_dock" msgid="6997766385189369733">"Ngenkathi idokhiwe"</string>
     <string name="screensaver_settings_summary_never" msgid="4988141393040918450">"Akusoze"</string>
     <string name="screensaver_settings_summary_off" msgid="8720357504939106923">"Valiwe"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1166343194760238835">"Ukuze ulawule ukuthi kwenzakale ini uma ifoni idokhiwe kanye/noma ilele, vula isilondolozi sikrini."</string>
     <string name="screensaver_settings_when_to_dream" msgid="8145025742428940520">"Iqala nini"</string>
     <string name="screensaver_settings_current" msgid="390472865895976891">"Isithombe-skrini samanje"</string>
-    <string name="screensaver_settings_button" msgid="6159236558934930238">"Izilungiselelo"</string>
     <string name="automatic_brightness" msgid="4599827881929079513">"Ukukhanya okuzenzakalelayo"</string>
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Ilifti yokuvuka"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Isibonisi esi-Ambient"</string>
@@ -3402,6 +3397,13 @@
     <string name="user_delete_button" msgid="3833498650182594653">"Susa"</string>
     <string name="user_exit_guest_confirm_message" msgid="8995296853928816554">"Zonke izinhlelo zokusebenza nedatha kulesi sikhathi zizosuswa."</string>
     <string name="user_exit_guest_dialog_remove" msgid="7067727314172605181">"Susa"</string>
+    <string name="guest_category_title" msgid="5562663588315329152">"Isihambeli (Wena)"</string>
+    <string name="user_category_title" msgid="4368580529662699083">"Abasebenzisi"</string>
+    <string name="other_user_category_title" msgid="7089976887307643217">"Abanye abasebenzisi"</string>
+    <string name="remove_guest_on_exit" msgid="8202972371459611066">"Sula umsebenzi wesihambeli"</string>
+    <string name="remove_guest_on_exit_summary" msgid="3969962695703280353">"Sula wonke ama-app wesihambeli nedatha lapho uphuma kwimodi yesivakashi"</string>
+    <string name="remove_guest_on_exit_dialog_title" msgid="2310442892536079416">"Sula umsebenzi wesihambeli?"</string>
+    <string name="remove_guest_on_exit_dialog_message" msgid="8112409834021851883">"Ama-app nedatha okusuka kulesi sikhathi sesihambeli kuzosulwa manje, wonke umsebenzi wesihambeli wesikhathi esizayo uzosulwa njalo lapho uphuma kwimodi yesivakashi."</string>
     <string name="user_enable_calling" msgid="264875360626905535">"Vula amakholi wamafoni"</string>
     <string name="user_enable_calling_sms" msgid="8546430559552381324">"Vula amakholi wefoni ne-SMS"</string>
     <string name="user_remove_user" msgid="8468203789739693845">"Susa umsebenzisi"</string>
diff --git a/res/values/bools.xml b/res/values/bools.xml
new file mode 100644
index 0000000..25c3e0d
--- /dev/null
+++ b/res/values/bools.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2022, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources>
+  <!-- Referenced outside of Settings to confirm bug fixed - bug involved multiple
+  pending intents with difference only in intent extras, which doesn't work. -->
+  <bool name="config_isSafetyCenterLockScreenPendingIntentFixed">true</bool>
+</resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index 65eff4a..efde863 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -624,4 +624,7 @@
 
     <!-- Whether to put the apps with system UID into system component bucket or not -->
     <bool name="config_battery_combine_system_components">false</bool>
+
+    <!-- Whether to enable the advanced vpn feature. The default is not to. -->
+    <bool name="config_advanced_vpn_enabled">false</bool>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index c9557c1..26ebbf6 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -141,6 +141,7 @@
     <dimen name="avatar_margin_top">56dp</dimen>
     <dimen name="avatar_margin_end">24dp</dimen>
     <dimen name="multiple_users_avatar_size">20dp</dimen>
+    <dimen name="multiple_users_user_icon_size">40dp</dimen>
 
     <!-- Homepage -->
     <dimen name="homepage_title_margin_bottom">8dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 49695cb..f42ac0d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1036,7 +1036,11 @@
     <!-- Introduction description message shown in fingerprint enrollment introduction screen in setup wizard when asking for parental consent. [CHAR LIMIT=NONE] -->
     <string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_consent_4">You and your child can delete their fingerprint images and model, or turn off Fingerprint Unlock at any time in Settings. Fingerprint images and models are stored on the phone until they\u2019re deleted.</string>
     <!-- Introduction description message shown in fingerprint enrollment introduction screen in setup wizard. [CHAR LIMIT=NONE] -->
-    <string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_5">Your phone can be unlocked when you don\u2019t intend to, like if someone holds it up to your finger.</string>
+    <string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_5" product="default">Your phone can be unlocked when you don\u2019t intend to, like if someone holds it up to your finger.</string>
+    <!-- Introduction description message shown in fingerprint enrollment introduction screen in setup wizard. [CHAR LIMIT=NONE] -->
+    <string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_5" product="tablet">Your tablet can be unlocked when you don\u2019t intend to, like if someone holds it up to your finger.</string>
+    <!-- Introduction description message shown in fingerprint enrollment introduction screen in setup wizard. [CHAR LIMIT=NONE] -->
+    <string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_5" product="device">Your device can be unlocked when you don\u2019t intend to, like if someone holds it up to your finger.</string>
     <!-- Introduction description message shown in fingerprint enrollment introduction screen in setup wizard when asking for parental consent. [CHAR LIMIT=NONE] -->
     <string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_consent_5">Your child\u2019s phone can be unlocked when they don\u2019t intend to, like if someone holds it up to their finger.</string>
     <!-- Introduction description message shown in fingerprint enrollment introduction screen in setup wizard. [CHAR LIMIT=NONE] -->
@@ -1140,6 +1144,8 @@
     <string name="security_settings_fingerprint_enroll_dialog_name_label">Name</string>
     <!-- Button text shown in fingerprint dialog that allows the user to rename a fingerprint template [CHAR LIMIT=22] -->
     <string name="security_settings_fingerprint_enroll_dialog_ok">OK</string>
+    <!-- Button text shown in fingerprint dialog that allows the user to try and enroll again[CHAR LIMIT=22] -->
+    <string name="security_settings_fingerprint_enroll_dialog_try_again">Try again</string>
     <!-- Button text shown in fingerprint dialog that allows the user to delete the fingerprint template [CHAR LIMIT=22] -->
     <string name="security_settings_fingerprint_enroll_dialog_delete">Delete</string>
     <!-- Title shown in fingerprint enrollment dialog to begin enrollment [CHAR LIMIT=29]-->
@@ -1296,9 +1302,9 @@
     <!-- Dialog message for dialog which shows when user touches the icon on the screen, instead of the sensor at the back [CHAR LIMIT=NONE] -->
     <string name="security_settings_fingerprint_enroll_touch_dialog_message">Touch the sensor on the back of your phone. Use your index finger.</string>
     <!-- Dialog message for dialog which shows when finger cannot be enrolled. [CHAR LIMIT=45] -->
-    <string name="security_settings_fingerprint_enroll_error_dialog_title">Enrollment was not completed</string>
+    <string name="security_settings_fingerprint_enroll_error_dialog_title">Fingerprint setup timed out</string>
     <!-- Dialog message for dialog which shows when finger cannot be enrolled due to being idle too long. -->
-    <string name="security_settings_fingerprint_enroll_error_timeout_dialog_message">Fingerprint enrollment time limit reached. Try again.</string>
+    <string name="security_settings_fingerprint_enroll_error_timeout_dialog_message">Try again now or set up your fingerprint later in Settings</string>
     <!-- Dialog message for dialog which shows when finger cannot be enrolled due to an internal error or fingerprint can't be read. -->
     <string name="security_settings_fingerprint_enroll_error_generic_dialog_message">Fingerprint enrollment didn\'t work. Try again or use a different finger.</string>
     <!-- Button text shown at the end of enrollment that allows the user to add another fingerprint -->
@@ -3230,30 +3236,26 @@
     <string name="style_suggestion_title">Customize your phone</string>
     <!-- Styles and Wallpapers summary [CHAR_LIMIT=70] -->
     <string name="style_suggestion_summary">Try different styles, wallpapers, and more</string>
-    <!-- Display settings screen, trigger for screen saver options -->
+    <!-- Display settings screen, trigger for screen saver options [CHAR LIMIT=30] -->
     <string name="screensaver_settings_title">Screen saver</string>
+    <!-- List of synonyms used in the settings search bar to find the “Screen saver”. [CHAR LIMIT=NONE] -->
+    <string name="keywords_screensaver">screensaver</string>
     <!-- The title for the toggle which disables/enables screen savers [CHAR_LIMIT=30] -->
     <string name="screensaver_settings_toggle_title">Use screen saver</string>
-    <!-- Display settings screen, summary fragment for screen saver options, activated when docked or asleep and charging -->
+    <!-- Display settings screen, summary fragment for screen saver options, activated when docked or asleep and charging [CHAR LIMIT=35] -->
     <string name="screensaver_settings_summary_either_long">While charging or docked</string>
-    <!-- Dream settings screen, dialog option, activated when docked or asleep and charging -->
-    <string name="screensaver_settings_summary_either_short">Either</string>
-    <!-- Display settings screen, summary fragment for screen saver options, activated when asleep and charging -->
+    <!-- Display settings screen, summary fragment for screen saver options, activated when asleep and charging [CHAR LIMIT=35] -->
     <string name="screensaver_settings_summary_sleep">While charging</string>
-    <!-- Display settings screen, summary fragment for screen saver options, activated when docked  -->
+    <!-- Display settings screen, summary fragment for screen saver options, activated when docked [CHAR LIMIT=35] -->
     <string name="screensaver_settings_summary_dock">While docked</string>
-    <!-- Display settings screen, summary fragment for screen saver options, activated never  -->
+    <!-- Display settings screen, summary fragment for screen saver options, activated never [CHAR LIMIT=35] -->
     <string name="screensaver_settings_summary_never">Never</string>
-    <!-- Display settings screen, summary for screen saver options, screen saver is turned off -->
+    <!-- Display settings screen, summary for screen saver options, screen saver is turned off [CHAR LIMIT=20] -->
     <string name="screensaver_settings_summary_off">Off</string>
-    <!-- Dream settings screen, caption for when dreams are disabled -->
-    <string name="screensaver_settings_disabled_prompt">To control what happens when the phone is docked and/or sleeping, turn screen saver on.</string>
-    <!-- Dream settings screen, action label, when to dream -->
+    <!-- Dream settings screen, action label, when to dream [CHAR LIMIT=20] -->
     <string name="screensaver_settings_when_to_dream">When to start</string>
-    <!-- Dream settings screen, action label, current selected screen saver -->
+    <!-- Dream settings screen, action label, current selected screen saver [CHAR LIMIT=35] -->
     <string name="screensaver_settings_current">Current screen saver</string>
-    <!-- Dream settings screen, button label for settings for a specific screensaver -->
-    <string name="screensaver_settings_button">Settings</string>
     <!-- Sound & display settings screen, setting option name to change whether the screen adjusts automatically based on lighting conditions -->
     <string name="automatic_brightness">Automatic brightness</string>
     <!-- [CHAR LIMIT=40] Display settings screen, setting option name to change whether the device wakes up when a lift gesture is detected. -->
@@ -4409,6 +4411,8 @@
     <string name="lockpassword_choose_your_profile_pin_header">Set a work PIN</string>
     <!-- Header on first screen of choose device pattern flow [CHAR LIMIT=40] -->
     <string name="lockpassword_choose_your_pattern_header">Set a pattern</string>
+    <!-- Description on first screen of choose device pattern flow [CHAR LIMIT=NONE] -->
+    <string name="lockpassword_choose_your_pattern_description">For added security, set a pattern to unlock the device</string>
     <!-- Header on first screen of choose work profile pattern flow [CHAR LIMIT=40] -->
     <string name="lockpassword_choose_your_profile_pattern_header">Set a work pattern</string>
 
@@ -4775,7 +4779,7 @@
     <!-- [CHAR LIMIT=NONE] Manage applications screen, menu item.  Title of dialog to confirm resetting user's app preferences. -->
     <string name="reset_app_preferences_title">Reset app preferences?</string>
     <!-- [CHAR LIMIT=NONE] Manage applications screen, menu item.  Body of dialog to confirm resetting user's app preferences. -->
-    <string name="reset_app_preferences_desc">This will reset all preferences for:\n\n<li>Disabled apps</li>\n<li>Disabled app notifications</li>\n<li>Default applications for actions</li>\n<li>Background data restrictions for apps</li>\n<li>Any permission restrictions</li>\n\nYou will not lose any app data.</string>
+    <string name="reset_app_preferences_desc">This will reset all preferences for:\n\n<li>Disabled apps</li>\n<li>Disabled app notifications</li>\n<li>Default applications for actions</li>\n<li>Background data restrictions for apps</li>\n<li>Any permission restrictions</li>\n<li>Battery usage settings</li>\n\nYou will not lose any app data.</string>
     <!-- [CHAR LIMIT=25] Manage applications screen, menu item.  Confirmation button of dialog to confirm resetting user's app preferences. -->
     <string name="reset_app_preferences_button">Reset apps</string>
     <!-- Manage applications screen, individual app screen, button label when the user wants to manage the space taken up by an app. -->
@@ -5350,7 +5354,9 @@
     <!-- Title for the confirm dialog of reset settings. [CHAR LIMIT=NONE] -->
     <string name="accessibility_text_reading_confirm_dialog_title">Reset display size and text?</string>
     <!-- Message for the confirm dialog of reset settings. [CHAR LIMIT=NONE] -->
-    <string name="accessibility_text_reading_confirm_dialog_message">Your display size and text preferences will reset to the phone\u2019s original settings</string>
+    <string name="accessibility_text_reading_confirm_dialog_message" product="default">Your display size and text preferences will reset to the phone\u2019s original settings</string>
+    <!-- Message for the confirm dialog of reset settings. [CHAR LIMIT=NONE] -->
+    <string name="accessibility_text_reading_confirm_dialog_message" product="tablet">Your display size and text preferences will reset to the tablet\u2019s original settings</string>
     <!-- Title for the reset button of the confirm dialog of reset settings. [CHAR LIMIT=25] -->
     <string name="accessibility_text_reading_confirm_dialog_reset_button">Reset</string>
     <!-- Conversation message for the messaging app preview screen. [CHAR LIMIT=NONE] -->
@@ -6644,6 +6650,8 @@
     <string name="battery_not_usage_24hr">No usage for past 24 hr</string>
     <!-- Description for no usage time but have battery usage [CHAR LIMIT=120] -->
     <string name="battery_usage_without_time"></string>
+    <!-- Description for other users aggregated battery usage data [CHAR LIMIT=120] -->
+    <string name="battery_usage_other_users">Other users</string>
 
     <!-- Graph subtext displayed to user when enhanced battery estimate is being used [CHAR LIMIT=120] -->
     <string name="advanced_battery_graph_subtext">Battery left estimate is based on your device usage</string>
@@ -6874,6 +6882,14 @@
         behalf.  It comes from the <xliff:g id="voice_input_service_app_name">%s</xliff:g>
         application.  Enable the use of this service?</string>
 
+    <!-- On-device recognition settings --><skip />
+    <!-- [CHAR_LIMIT=NONE] Name of the settings item to open the on-device recognition settings. -->
+    <string name="on_device_recognition_settings">On-device recognition settings</string>
+    <!-- [CHAR_LIMIT=NONE] Title of the on-device recognition settings -->
+    <string name="on_device_recognition_settings_title">On-device recognition</string>
+    <!-- [CHAR_LIMIT=NONE] Summary of the on-device recognition settings -->
+    <string name="on_device_recognition_settings_summary">On-device speech recognition</string>
+
     <!-- [CHAR LIMIT=50] The text for the settings section that is used to set a preferred text to speech engine -->
     <string name="tts_engine_preference_title">Preferred engine</string>
     <!-- [CHAR LIMIT=50] The text for a settings screen of the currently set text to speech engine -->
@@ -7749,6 +7765,22 @@
     <string name="user_exit_guest_confirm_message">All apps and data in this session will be deleted.</string>
     <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
     <string name="user_exit_guest_dialog_remove">Remove</string>
+    <!-- Title for guest category in guest mode [CHAR LIMIT=35] -->
+    <string name="guest_category_title">Guest (You)</string>
+    <!-- Title for users preference [CHAR LIMIT=35] -->
+    <string name="user_category_title">Users</string>
+    <!-- Title for users preference when in guest mode [CHAR LIMIT=35] -->
+    <string name="other_user_category_title">Other users</string>
+    <!-- Title of preference to remove guest on exit option[CHAR LIMIT=35] -->
+    <string name="remove_guest_on_exit">Delete guest activity</string>
+    <!-- Summary of preference to remove guest on exit option[CHAR LIMIT=NONE] -->
+    <string name="remove_guest_on_exit_summary">Delete all guest apps and data
+        when exiting guest mode</string>
+    <!-- Title of dialog shown when remove_guest_on_exit toggle is ON [CHAR LIMIT=35] -->
+    <string name="remove_guest_on_exit_dialog_title">Delete guest activity?</string>
+    <!-- Message of dialog shown when remove_guest_on_exit toggle is ON [CHAR LIMIT=NONE] -->
+    <string name="remove_guest_on_exit_dialog_message">Apps and data from this guest session will be
+        deleted now, and all future guest activity will be deleted each time you exit guest mode</string>
 
     <!-- Title of preference to enable calling[CHAR LIMIT=40] -->
     <string name="user_enable_calling">Turn on phone calls</string>
@@ -9445,12 +9477,12 @@
 
     <!-- app summary of notification app list screen [CHAR LIMIT=100] -->
     <plurals name="notifications_sent_daily">
-        <item quantity="one">~<xliff:g id="number">%d</xliff:g> notification per day</item>
-        <item quantity="other">~<xliff:g id="number">%,d</xliff:g> notifications per day</item>
+        <item quantity="one">About <xliff:g id="number">%d</xliff:g> notification per day</item>
+        <item quantity="other">About <xliff:g id="number">%,d</xliff:g> notifications per day</item>
     </plurals>
     <plurals name="notifications_sent_weekly">
-        <item quantity="one">~<xliff:g id="number">%d</xliff:g> notification per week</item>
-        <item quantity="other">~<xliff:g id="number">%,d</xliff:g> notifications per week</item>
+        <item quantity="one">About <xliff:g id="number">%d</xliff:g> notification per week</item>
+        <item quantity="other">About <xliff:g id="number">%,d</xliff:g> notifications per week</item>
     </plurals>
     <!-- app summary of notification app list screen [CHAR LIMIT=100] -->
     <string name="notifications_sent_never">Never</string>
@@ -12708,7 +12740,7 @@
     <!-- Summary for prevent ringing setting -->
     <string name="prevent_ringing_option_mute_summary">Mute</string>
     <!-- Summary for prevent ringing setting when the option itself is unavailable. [CHAR LIMIT=NONE] -->
-    <string name="prevent_ringing_option_unavailable_lpp_summary">To enable, first change \"Press and hold power button\" to the power menu.</string>
+    <string name="prevent_ringing_option_unavailable_lpp_summary">To enable, first change \"Press &amp; hold power button\" to the power menu.</string>
 
     <!-- Title for detail page of wifi network [CHAR LIMIT=30] -->
     <string name="pref_title_network_details">Network details</string>
@@ -13467,29 +13499,28 @@
     <!-- Cards and passes name lower case [CHAR LIMIT=40] -->
     <string name="cards_passes_lower">cards &amp; passes</string>
 
-    <!-- Power menu setting name [CHAR LIMIT=NONE] -->
-    <string name="power_menu_setting_name">Press and hold power button</string>
+    <!-- Power menu setting name [CHAR LIMIT=60] -->
+    <string name="power_menu_setting_name">Press &amp; hold power button</string>
 
-    <!-- Power menu setting summary to describe press and hold power button for Assistant is enabled. [CHAR LIMIT=NONE] -->
-    <string name="power_menu_summary_long_press_for_assist_enabled">Press and hold for the Assistant</string>
-    <!-- Power menu setting summary to describe press and hold power button for Assistant is disabled and power menu will appear. [CHAR LIMIT=NONE] -->
-    <string name="power_menu_summary_long_press_for_assist_disabled_with_power_menu">Press and hold for the power menu</string>
-    <!-- Power menu setting summary to describe press and hold power button for Assistant is disabled and nothing will happen. [CHAR LIMIT=NONE] -->
-    <string name="power_menu_summary_long_press_for_assist_disabled_no_action">Press and hold disabled</string>
+    <!-- Power menu setting section title for selecting the press and hold power button behavior. [CHAR LIMIT=60] -->
+    <string name="power_menu_long_press_category_title">Press &amp; hold power button to access</string>
+    <!-- Power menu setting option to make press and hold power button to open Power Menu. [CHAR LIMIT=60] -->
+    <string name="power_menu_long_press_for_power_menu_title">Power menu</string>
+    <!-- Power menu setting option to make press and hold power button to open Assistant. [CHAR LIMIT=60] -->
+    <string name="power_menu_long_press_for_assistant_title">Digital assistant</string>
+
+    <!-- Power menu setting summary to describe press and hold power button will open Assistant. [CHAR LIMIT=NONE] -->
+    <string name="power_menu_summary_long_press_for_assistant">Access digital assistant</string>
+    <!-- Power menu setting summary to describe press and hold power button will open Power Menu. [CHAR LIMIT=NONE] -->
+    <string name="power_menu_summary_long_press_for_power_menu">Access power menu</string>
 
     <!-- Power menu setting privacy no secure screen lock set [CHAR_LIMIT=NONE] -->
     <string name="lockscreen_privacy_not_secure">To use, first set a screen lock</string>
 
-    <!-- Power menu setting use long press power to invoke assistant. [CHAR LIMIT=NONE] -->
-    <string name="power_menu_long_press_for_assist">Hold for Assistant</string>
-
-    <!-- Power menu setting use log press power to invoke assistant summary. [CHAR LIMIT=NONE] -->
-    <string name="power_menu_long_press_for_assist_summary">Trigger the Assistant by holding the power button</string>
-
-    <!-- Power menu explanation to press power and volume up to show power and emergency menu. [CHAR LIMIT=NONE] -->
-    <string name="power_menu_power_volume_up_hint">Power &amp; Emergency Menu:\nPress Power and Volume up at the same time.</string>
+    <!-- Power menu explanation to press power and volume up to show power menu. [CHAR LIMIT=NONE] -->
+    <string name="power_menu_power_volume_up_hint">Power menu:\nPress the power button and the volume up button at the same time</string>
     <!-- Power menu explanation where to find prevent ringing option. [CHAR LIMIT=NONE] -->
-    <string name="power_menu_power_prevent_ringing_hint">Prevent ringing:\nShortcut available in the volume menu.</string>
+    <string name="power_menu_power_prevent_ringing_hint">Prevent ringing:\nPress a volume button for the shortcut</string>
 
     <!-- Power menu title of the seekbar setting controlling duration of how long the power button must be held to invoke assistant. [CHAR LIMIT=NONE]-->
     <string name="power_menu_long_press_for_assist_sensitivity_title">Press &amp; hold duration</string>
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 2336c15..1b5e6c0 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -145,7 +145,8 @@
         <Preference
             android:key="screensaver"
             android:title="@string/screensaver_settings_title"
-            android:fragment="com.android.settings.dream.DreamSettings"/>
+            android:fragment="com.android.settings.dream.DreamSettings"
+            settings:keywords="@string/keywords_screensaver"/>
 
         <SwitchPreference
             android:key="camera_gesture"
diff --git a/res/xml/dream_fragment_overview.xml b/res/xml/dream_fragment_overview.xml
index 9a401a3..a7b5492 100644
--- a/res/xml/dream_fragment_overview.xml
+++ b/res/xml/dream_fragment_overview.xml
@@ -17,7 +17,9 @@
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:title="@string/screensaver_settings_title">
+    android:key="screensaver_settings_screen"
+    android:title="@string/screensaver_settings_title"
+    settings:keywords="@string/keywords_screensaver">
 
     <com.android.settingslib.widget.MainSwitchPreference
         android:key="dream_main_settings_switch"
diff --git a/res/xml/language_and_input.xml b/res/xml/language_and_input.xml
index 770a862..64b5003 100644
--- a/res/xml/language_and_input.xml
+++ b/res/xml/language_and_input.xml
@@ -64,6 +64,13 @@
             android:fragment="com.android.settings.language.DefaultVoiceInputPicker" />
 
         <Preference
+            android:key="on_device_recognition_settings"
+            android:title="@string/on_device_recognition_settings_title"
+            android:summary="@string/on_device_recognition_settings_summary"
+            settings:controller=
+                "com.android.settings.language.OnDeviceRecognitionPreferenceController" />
+
+        <Preference
             android:key="tts_settings_summary"
             android:title="@string/tts_settings_title"
             android:fragment="com.android.settings.tts.TextToSpeechSettings"
diff --git a/res/xml/power_menu_settings.xml b/res/xml/power_menu_settings.xml
index e5e2daa..48cc40c 100644
--- a/res/xml/power_menu_settings.xml
+++ b/res/xml/power_menu_settings.xml
@@ -23,19 +23,28 @@
         android:key="gesture_power_menu_video"
         settings:searchable="false"
         settings:lottie_imageAssetsFolder="power_menu"
-        settings:lottie_rawRes="@raw/lottie_power_menu"/>
+        settings:lottie_rawRes="@raw/lottie_long_press_power_for_power_menu"
+        settings:controller="com.android.settings.gestures.LongPressPowerIllustrationPreferenceController"/>
 
-    <SwitchPreference
-        android:key="gesture_power_menu_long_press_for_assist"
-        android:title="@string/power_menu_long_press_for_assist"
-        android:summary="@string/power_menu_long_press_for_assist_summary"
-        settings:controller="com.android.settings.gestures.LongPressPowerButtonPreferenceController"
-    />
+    <PreferenceCategory
+        android:key="gesture_power_menu_long_press_category"
+        android:title="@string/power_menu_long_press_category_title">
+        <com.android.settingslib.widget.SelectorWithWidgetPreference
+            android:key="gesture_power_menu_long_press_for_power_menu"
+            android:title="@string/power_menu_long_press_for_power_menu_title"
+            settings:controller="com.android.settings.gestures.LongPressPowerForPowerMenuPreferenceController"/>
+
+        <com.android.settingslib.widget.SelectorWithWidgetPreference
+            android:key="gesture_power_menu_long_press_for_assistant"
+            android:title="@string/power_menu_long_press_for_assistant_title"
+            settings:controller="com.android.settings.gestures.LongPressPowerForAssistantPreferenceController"/>
+    </PreferenceCategory>
 
     <com.android.settings.widget.LabeledSeekBarPreference
         android:key="gesture_power_menu_long_press_for_assist_sensitivity"
         android:title="@string/power_menu_long_press_for_assist_sensitivity_title"
         android:summary="@string/power_menu_long_press_for_assist_sensitivity_summary"
+        settings:allowDividerAbove="true"
         settings:textStart="@string/power_menu_long_press_for_assist_sensitivity_low_label"
         settings:textEnd="@string/power_menu_long_press_for_assist_sensitivity_high_label"
         settings:controller="com.android.settings.gestures.LongPressPowerSensitivityPreferenceController"
@@ -45,5 +54,6 @@
         android:key="power_menu_power_volume_up_hint"
         android:title="@string/power_menu_power_volume_up_hint"
         android:selectable="false"
-        settings:searchable="false"/>
+        settings:searchable="false"
+        settings:controller="com.android.settings.gestures.LongPressPowerFooterPreferenceController"/>
 </PreferenceScreen>
diff --git a/res/xml/power_usage_advanced.xml b/res/xml/power_usage_advanced.xml
index 7a9c44b..e9274ce 100644
--- a/res/xml/power_usage_advanced.xml
+++ b/res/xml/power_usage_advanced.xml
@@ -21,7 +21,7 @@
     android:title="@string/advanced_battery_title"
     settings:keywords="@string/keywords_battery_usage">
 
-    <com.android.settings.fuelgauge.BatteryHistoryPreference
+    <com.android.settings.fuelgauge.batteryusage.BatteryHistoryPreference
         android:key="battery_graph"/>
 
     <PreferenceCategory
diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml
index 58327c0..9e86bf5 100644
--- a/res/xml/power_usage_summary.xml
+++ b/res/xml/power_usage_summary.xml
@@ -39,7 +39,7 @@
         settings:controller="com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController" />
 
     <Preference
-        android:fragment="com.android.settings.fuelgauge.PowerUsageAdvanced"
+        android:fragment="com.android.settings.fuelgauge.batteryusage.PowerUsageAdvanced"
         android:key="battery_usage_summary"
         android:title="@string/advanced_battery_preference_title"
         settings:keywords="@string/keywords_battery_usage" />
diff --git a/res/xml/privacy_controls_settings.xml b/res/xml/privacy_controls_settings.xml
index a477dc2..cc88e0c 100644
--- a/res/xml/privacy_controls_settings.xml
+++ b/res/xml/privacy_controls_settings.xml
@@ -34,12 +34,6 @@
         android:summary="@string/mic_toggle_description"
         settings:controller="com.android.settings.privacy.MicToggleController"/>
 
-    <!-- Location toggle -->
-    <com.android.settingslib.RestrictedSwitchPreference
-        android:key="privacy_location_toggle"
-        android:title="@string/location_toggle_title"
-        android:summary="@string/perm_toggle_description"/>
-
     <!-- Clipboard access notifications -->
     <SwitchPreference
         android:key="show_clip_access_notification"
diff --git a/res/xml/top_level_settings.xml b/res/xml/top_level_settings.xml
index c9e6017..5fbc735 100644
--- a/res/xml/top_level_settings.xml
+++ b/res/xml/top_level_settings.xml
@@ -59,7 +59,7 @@
         settings:highlightableMenuKey="@string/menu_key_notifications"/>
 
     <com.android.settings.widget.HomepagePreference
-        android:fragment="com.android.settings.fuelgauge.PowerUsageSummary"
+        android:fragment="com.android.settings.fuelgauge.batteryusage.PowerUsageSummary"
         android:icon="@drawable/ic_settings_battery_white"
         android:key="top_level_battery"
         android:order="-110"
diff --git a/res/xml/user_settings.xml b/res/xml/user_settings.xml
index ab54989..5cbfe43 100644
--- a/res/xml/user_settings.xml
+++ b/res/xml/user_settings.xml
@@ -26,27 +26,58 @@
         settings:controller="com.android.settings.users.MultiUserTopIntroPreferenceController"/>
 
     <PreferenceCategory
-        android:key="user_list"
-        android:title="@string/user_list_title"
-        android:order="10"
-        settings:searchable="false">
-    </PreferenceCategory>
+        android:key="guest_category"
+        android:title="@string/guest_category_title"
+        android:order="2"
+        settings:searchable="false"/>
 
-    <com.android.settingslib.RestrictedPreference
-        android:key="guest_add"
-        android:title="@string/guest_new_guest"
-        android:order="15"/>
+    <Preference
+        android:key="guest_exit"
+        android:title="@string/guest_exit_button"
+        android:icon="@drawable/ic_guest_exit"
+        android:order="3"/>
+
+    <Preference
+        android:key="guest_reset"
+        android:title="@string/guest_reset_button"
+        android:icon="@drawable/ic_guest_reset"
+        android:order="4"/>
+
+    <PreferenceCategory
+        android:key="user_list"
+        android:title="@string/user_category_title"
+        android:order="10"
+        settings:searchable="false"/>
 
     <com.android.settingslib.RestrictedPreference
         android:key="user_add"
         android:title="@string/user_add_user_or_profile_menu"
+        android:icon="@drawable/ic_add_40dp"
         android:order="20"/>
 
     <com.android.settingslib.RestrictedPreference
         android:key="supervised_user_add"
         android:title="@*android:string/supervised_user_creation_label"
+        android:icon="@drawable/ic_add_40dp"
         android:order="25"/>
 
+    <PreferenceCategory
+        android:key="guest_user_category"
+        android:title="@*android:string/guest_name"
+        android:order="50"/>
+
+    <com.android.settingslib.RestrictedPreference
+        android:key="guest_add"
+        android:title="@string/guest_new_guest"
+        android:icon="@drawable/ic_add_40dp"
+        android:order="55"/>
+
+    <com.android.settingslib.RestrictedSwitchPreference
+            android:key="remove_guest_on_exit"
+            android:title="@string/remove_guest_on_exit"
+            android:summary="@string/remove_guest_on_exit_summary"
+            android:order="60"/>
+
     <com.android.settingslib.RestrictedSwitchPreference
         android:key="user_settings_add_users_when_locked"
         android:title="@string/user_add_on_lockscreen_menu"
diff --git a/res/xml/vpn_settings2.xml b/res/xml/vpn_settings2.xml
index 08075a6..0d374c7 100644
--- a/res/xml/vpn_settings2.xml
+++ b/res/xml/vpn_settings2.xml
@@ -16,4 +16,9 @@
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
         android:title="@string/vpn_title">
+    <PreferenceCategory
+        android:key="advanced_vpn_group"/>
+
+    <PreferenceCategory
+        android:key="vpn_group"/>
 </PreferenceScreen>
diff --git a/src/com/android/settings/ChangeIds.java b/src/com/android/settings/ChangeIds.java
new file mode 100644
index 0000000..1f77201
--- /dev/null
+++ b/src/com/android/settings/ChangeIds.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.LoggingOnly;
+
+/**
+ * All the {@link ChangeId} used for Settings App.
+ */
+public class ChangeIds {
+    /**
+     * Intents with action {@code android.settings.MANAGE_APP_OVERLAY_PERMISSION}
+     * and data URI scheme {@code package} don't go to the app-specific screen for managing the
+     * permission anymore. Instead, they redirect to this screen for managing all the apps that have
+     * requested such permission.
+     */
+    @ChangeId
+    @LoggingOnly
+    public static final long CHANGE_RESTRICT_SAW_INTENT = 135920175L;
+}
diff --git a/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java
index 0af8aa1..f9a1113 100644
--- a/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java
@@ -49,8 +49,6 @@
         if (mTopIntroPreference != null) {
             mTopIntroPreference.setVisible(false);
         }
-
-        mToggleServiceSwitchPreference.applyPartnerCustomizationPaddingStyle();
     }
 
     @Override
diff --git a/src/com/android/settings/accounts/AccountDashboardFragment.java b/src/com/android/settings/accounts/AccountDashboardFragment.java
index a2b6182..5456f0a 100644
--- a/src/com/android/settings/accounts/AccountDashboardFragment.java
+++ b/src/com/android/settings/accounts/AccountDashboardFragment.java
@@ -26,7 +26,6 @@
 import android.os.UserManager;
 
 import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.applications.autofill.PasswordsPreferenceController;
 import com.android.settings.applications.defaultapps.DefaultAutofillPreferenceController;
 import com.android.settings.applications.defaultapps.DefaultWorkAutofillPreferenceController;
@@ -96,7 +95,7 @@
     }
 
     private static void buildAccountPreferenceControllers(
-            Context context, SettingsPreferenceFragment parent, String[] authorities,
+            Context context, DashboardFragment parent, String[] authorities,
             List<AbstractPreferenceController> controllers) {
         final AccountPreferenceController accountPrefController =
                 new AccountPreferenceController(context, parent, authorities,
diff --git a/src/com/android/settings/accounts/AccountPersonalDashboardFragment.java b/src/com/android/settings/accounts/AccountPersonalDashboardFragment.java
index 9ad1206..4661c64 100644
--- a/src/com/android/settings/accounts/AccountPersonalDashboardFragment.java
+++ b/src/com/android/settings/accounts/AccountPersonalDashboardFragment.java
@@ -24,7 +24,6 @@
 import android.content.Context;
 
 import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.applications.autofill.PasswordsPreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
@@ -78,7 +77,7 @@
     }
 
     private static void buildAccountPreferenceControllers(
-            Context context, SettingsPreferenceFragment parent, String[] authorities,
+            Context context, DashboardFragment parent, String[] authorities,
             List<AbstractPreferenceController> controllers) {
         final AccountPreferenceController accountPrefController =
                 new AccountPreferenceController(context, parent, authorities,
diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java
index 1458988..8c717f0 100644
--- a/src/com/android/settings/accounts/AccountPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountPreferenceController.java
@@ -58,10 +58,10 @@
 
 import com.android.settings.AccessiblePreferenceCategory;
 import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.RestrictedPreference;
@@ -101,7 +101,7 @@
     private Preference mProfileNotAvailablePreference;
     private String[] mAuthorities;
     private int mAuthoritiesCount = 0;
-    private SettingsPreferenceFragment mFragment;
+    private DashboardFragment mFragment;
     private int mAccountProfileOrder = ORDER_ACCOUNT_PROFILES;
     private AccountRestrictionHelper mHelper;
     private MetricsFeatureProvider mMetricsFeatureProvider;
@@ -145,13 +145,13 @@
         public ArrayMap<String, AccountTypePreference> accountPreferences = new ArrayMap<>();
     }
 
-    public AccountPreferenceController(Context context, SettingsPreferenceFragment parent,
+    public AccountPreferenceController(Context context, DashboardFragment parent,
             String[] authorities, @ProfileSelectFragment.ProfileType int type) {
         this(context, parent, authorities, new AccountRestrictionHelper(context), type);
     }
 
     @VisibleForTesting
-    AccountPreferenceController(Context context, SettingsPreferenceFragment parent,
+    AccountPreferenceController(Context context, DashboardFragment parent,
             String[] authorities, AccountRestrictionHelper helper,
             @ProfileSelectFragment.ProfileType int type) {
         super(context);
@@ -314,6 +314,9 @@
         for (int i = 0; i < profilesCount; i++) {
             updateAccountTypes(mProfiles.valueAt(i));
         }
+
+        // Refresh for the auto-sync preferences
+        mFragment.forceUpdatePreferences();
     }
 
     private void updateProfileUi(final UserInfo userInfo) {
@@ -409,7 +412,6 @@
         return preference;
     }
 
-
     private Preference newManagedProfileSettings() {
         Preference preference = new Preference(mFragment.getPreferenceManager().getContext());
         preference.setKey(PREF_KEY_WORK_PROFILE_SETTING);
diff --git a/src/com/android/settings/accounts/AccountWorkProfileDashboardFragment.java b/src/com/android/settings/accounts/AccountWorkProfileDashboardFragment.java
index 1fdd3f6..f64e041 100644
--- a/src/com/android/settings/accounts/AccountWorkProfileDashboardFragment.java
+++ b/src/com/android/settings/accounts/AccountWorkProfileDashboardFragment.java
@@ -24,7 +24,6 @@
 import android.content.Context;
 
 import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.applications.autofill.PasswordsPreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
@@ -78,7 +77,7 @@
     }
 
     private static void buildAccountPreferenceControllers(
-            Context context, SettingsPreferenceFragment parent, String[] authorities,
+            Context context, DashboardFragment parent, String[] authorities,
             List<AbstractPreferenceController> controllers) {
         final AccountPreferenceController accountPrefController =
                 new AccountPreferenceController(context, parent, authorities,
diff --git a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java
index d69c2c8..99c630d 100644
--- a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java
@@ -38,12 +38,12 @@
 import com.android.settings.Utils;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
-import com.android.settings.fuelgauge.BatteryChartPreferenceController;
-import com.android.settings.fuelgauge.BatteryDiffEntry;
-import com.android.settings.fuelgauge.BatteryEntry;
-import com.android.settings.fuelgauge.BatteryUsageStatsLoader;
 import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
+import com.android.settings.fuelgauge.batteryusage.BatteryChartPreferenceController;
+import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry;
+import com.android.settings.fuelgauge.batteryusage.BatteryEntry;
+import com.android.settings.fuelgauge.batteryusage.BatteryUsageStatsLoader;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.applications.AppUtils;
 import com.android.settingslib.core.lifecycle.Lifecycle;
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index ead9840..e12bc1c 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -18,6 +18,7 @@
 
 import static androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE;
 
+import static com.android.settings.ChangeIds.CHANGE_RESTRICT_SAW_INTENT;
 import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_ALL;
 import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_BLOCKED;
 import static com.android.settings.applications.manageapplications.AppFilterRegistry.FILTER_APPS_DISABLED;
@@ -37,8 +38,6 @@
 import android.app.ActivityManager;
 import android.app.settings.SettingsEnums;
 import android.app.usage.IUsageStatsManager;
-import android.compat.annotation.ChangeId;
-import android.compat.annotation.LoggingOnly;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
@@ -190,16 +189,6 @@
     public static final int STORAGE_TYPE_DEFAULT = 0; // Show all apps that are not categorized.
     public static final int STORAGE_TYPE_LEGACY = 1;  // Show apps even if they can be categorized.
 
-    /**
-     * Intents with action {@code android.settings.MANAGE_APP_OVERLAY_PERMISSION}
-     * and data URI scheme {@code package} don't go to the app-specific screen for managing the
-     * permission anymore. Instead, they redirect to this screen for managing all the apps that have
-     * requested such permission.
-     */
-    @ChangeId
-    @LoggingOnly
-    private static final long CHANGE_RESTRICT_SAW_INTENT = 135920175L;
-
     // sort order
     @VisibleForTesting
     int mSortOrder = R.id.sort_order_alpha;
diff --git a/src/com/android/settings/applications/manageapplications/ResetAppsHelper.java b/src/com/android/settings/applications/manageapplications/ResetAppsHelper.java
index 9cb5a3f..708f8b7 100644
--- a/src/com/android/settings/applications/manageapplications/ResetAppsHelper.java
+++ b/src/com/android/settings/applications/manageapplications/ResetAppsHelper.java
@@ -38,6 +38,7 @@
 import androidx.appcompat.app.AlertDialog;
 
 import com.android.settings.R;
+import com.android.settings.fuelgauge.BatteryOptimizeUtils;
 
 import java.util.Arrays;
 import java.util.List;
@@ -152,6 +153,7 @@
                 } catch (RemoteException e) {
                 }
                 mAom.resetAllModes();
+                BatteryOptimizeUtils.resetAppOptimizationMode(mContext, mIPm, mAom);
                 final int[] restrictedUids = mNpm.getUidsWithPolicy(
                         POLICY_REJECT_METERED_BACKGROUND);
                 final int currentUserId = ActivityManager.getCurrentUser();
diff --git a/src/com/android/settings/biometrics/BiometricEnrollActivity.java b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
index e682934..6b830c9 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollActivity.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
@@ -93,6 +93,10 @@
     public static final String EXTRA_PARENTAL_CONSENT_STATUS = "consent_status";
 
     private static final String SAVED_STATE_CONFIRMING_CREDENTIALS = "confirming_credentials";
+    private static final String SAVED_STATE_FINGERPRINT_ONLY_ENROLLING =
+            "fingerprint_only_enrolling";
+    private static final String SAVED_STATE_PASS_THROUGH_EXTRAS_FROM_CHOSEN_LOCK_IN_SUW =
+            "pass_through_extras_from_chosen_lock_in_suw";
     private static final String SAVED_STATE_ENROLL_ACTION_LOGGED = "enroll_action_logged";
     private static final String SAVED_STATE_PARENTAL_OPTIONS = "enroll_preferences";
     private static final String SAVED_STATE_GK_PW_HANDLE = "gk_pw_handle";
@@ -101,6 +105,8 @@
 
     private int mUserId = UserHandle.myUserId();
     private boolean mConfirmingCredentials;
+    private boolean mFingerprintOnlyEnrolling;
+    private Bundle mPassThroughExtrasFromChosenLockInSuw = null;
     private boolean mIsEnrollActionLogged;
     private boolean mHasFeatureFace = false;
     private boolean mHasFeatureFingerprint = false;
@@ -129,6 +135,10 @@
         if (savedInstanceState != null) {
             mConfirmingCredentials = savedInstanceState.getBoolean(
                     SAVED_STATE_CONFIRMING_CREDENTIALS, false);
+            mFingerprintOnlyEnrolling = savedInstanceState.getBoolean(
+                    SAVED_STATE_FINGERPRINT_ONLY_ENROLLING, false);
+            mPassThroughExtrasFromChosenLockInSuw = savedInstanceState.getBundle(
+                    SAVED_STATE_PASS_THROUGH_EXTRAS_FROM_CHOSEN_LOCK_IN_SUW);
             mIsEnrollActionLogged = savedInstanceState.getBoolean(
                     SAVED_STATE_ENROLL_ACTION_LOGGED, false);
             mParentalOptions = savedInstanceState.getBundle(SAVED_STATE_PARENTAL_OPTIONS);
@@ -302,7 +312,11 @@
                 setOrConfirmCredentialsNow();
             }
         } else if (canUseFingerprint) {
-            launchFingerprintOnlyEnroll();
+            if (mGkPwHandle != null) {
+                launchFingerprintOnlyEnroll();
+            } else {
+                setOrConfirmCredentialsNow();
+            }
         } else if (canUseFace) {
             launchFaceOnlyEnroll();
         } else { // no modalities available
@@ -320,6 +334,9 @@
     protected void onSaveInstanceState(@NonNull Bundle outState) {
         super.onSaveInstanceState(outState);
         outState.putBoolean(SAVED_STATE_CONFIRMING_CREDENTIALS, mConfirmingCredentials);
+        outState.putBoolean(SAVED_STATE_FINGERPRINT_ONLY_ENROLLING, mFingerprintOnlyEnrolling);
+        outState.putBundle(SAVED_STATE_PASS_THROUGH_EXTRAS_FROM_CHOSEN_LOCK_IN_SUW,
+                mPassThroughExtrasFromChosenLockInSuw);
         outState.putBoolean(SAVED_STATE_ENROLL_ACTION_LOGGED, mIsEnrollActionLogged);
         if (mParentalOptions != null) {
             outState.putBundle(SAVED_STATE_PARENTAL_OPTIONS, mParentalOptions);
@@ -333,6 +350,12 @@
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
 
+        if (isSuccessfulChooseCredential(requestCode, resultCode)
+                && data != null && data.getExtras() != null && data.getExtras().size() > 0
+                && WizardManagerHelper.isAnySetupWizard(getIntent())) {
+            mPassThroughExtrasFromChosenLockInSuw = data.getExtras();
+        }
+
         Log.d(TAG,
                 "onActivityResult(requestCode=" + requestCode + ", resultCode=" + resultCode + ")");
         // single enrollment is handled entirely by the launched activity
@@ -406,7 +429,7 @@
                     }
                 } else {
                     Log.d(TAG, "Unknown or cancelled parental consent");
-                    setResult(RESULT_CANCELED);
+                    setResult(RESULT_CANCELED, newResultIntent());
                     finish();
                 }
                 break;
@@ -432,18 +455,22 @@
                     mConfirmingCredentials = false;
                     final boolean isOk =
                             isSuccessfulConfirmOrChooseCredential(requestCode, resultCode);
-                    // single modality enrollment requests confirmation directly
+                    // single face enrollment requests confirmation directly
                     // via BiometricEnrollBase#onCreate and should never get here
                     if (isOk && mHasFeatureFace && mHasFeatureFingerprint) {
                         updateGatekeeperPasswordHandle(data);
                         launchFaceAndFingerprintEnroll();
+                    } else if (isOk && mHasFeatureFingerprint) {
+                        updateGatekeeperPasswordHandle(data);
+                        launchFingerprintOnlyEnroll();
                     } else {
                         Log.d(TAG, "Unknown result for set/choose lock: " + resultCode);
-                        setResult(resultCode);
+                        setResult(resultCode, newResultIntent());
                         finish();
                     }
                     break;
                 case REQUEST_SINGLE_ENROLL:
+                    mFingerprintOnlyEnrolling = false;
                     finishOrLaunchHandToParent(resultCode);
                     break;
                 default:
@@ -466,25 +493,37 @@
                 finish();
             }
         } else {
-            setResult(resultCode);
+            setResult(resultCode, newResultIntent());
             finish();
         }
     }
 
+    @NonNull
     private Intent newResultIntent() {
         final Intent intent = new Intent();
-        final Bundle consentStatus = mParentalOptions.deepCopy();
-        intent.putExtra(EXTRA_PARENTAL_CONSENT_STATUS, consentStatus);
-        Log.v(TAG, "Result consent status: " + consentStatus);
+        if (mParentalOptionsRequired && mParentalOptions != null) {
+            final Bundle consentStatus = mParentalOptions.deepCopy();
+            intent.putExtra(EXTRA_PARENTAL_CONSENT_STATUS, consentStatus);
+            Log.v(TAG, "Result consent status: " + consentStatus);
+        }
+        if (mPassThroughExtrasFromChosenLockInSuw != null) {
+            intent.putExtras(mPassThroughExtrasFromChosenLockInSuw);
+        }
         return intent;
     }
 
     private static boolean isSuccessfulConfirmOrChooseCredential(int requestCode, int resultCode) {
-        final boolean okChoose = requestCode == REQUEST_CHOOSE_LOCK
+        return isSuccessfulChooseCredential(requestCode, resultCode)
+                || isSuccessfulConfirmCredential(requestCode, resultCode);
+    }
+
+    private static boolean isSuccessfulChooseCredential(int requestCode, int resultCode) {
+        return requestCode == REQUEST_CHOOSE_LOCK
                 && resultCode == ChooseLockPattern.RESULT_FINISHED;
-        final boolean okConfirm = requestCode == REQUEST_CONFIRM_LOCK
-                && resultCode == RESULT_OK;
-        return okChoose || okConfirm;
+    }
+
+    private static boolean isSuccessfulConfirmCredential(int requestCode, int resultCode) {
+        return requestCode == REQUEST_CONFIRM_LOCK && resultCode == RESULT_OK;
     }
 
     @Override
@@ -572,15 +611,18 @@
     }
 
     private void launchFingerprintOnlyEnroll() {
-        final Intent intent;
-        // ChooseLockGeneric can request to start fingerprint enroll bypassing the intro screen.
-        if (getIntent().getBooleanExtra(EXTRA_SKIP_INTRO, false)
-                && this instanceof InternalActivity) {
-            intent = BiometricUtils.getFingerprintFindSensorIntent(this, getIntent());
-        } else {
-            intent = BiometricUtils.getFingerprintIntroIntent(this, getIntent());
+        if (!mFingerprintOnlyEnrolling) {
+            mFingerprintOnlyEnrolling = true;
+            final Intent intent;
+            // ChooseLockGeneric can request to start fingerprint enroll bypassing the intro screen.
+            if (getIntent().getBooleanExtra(EXTRA_SKIP_INTRO, false)
+                    && this instanceof InternalActivity) {
+                intent = BiometricUtils.getFingerprintFindSensorIntent(this, getIntent());
+            } else {
+                intent = BiometricUtils.getFingerprintIntroIntent(this, getIntent());
+            }
+            launchSingleSensorEnrollActivity(intent, REQUEST_SINGLE_ENROLL);
         }
-        launchSingleSensorEnrollActivity(intent, REQUEST_SINGLE_ENROLL);
     }
 
     private void launchFaceOnlyEnroll() {
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
index 98210b3..ca79a24 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
@@ -76,6 +76,7 @@
 
     private static final String TAG = "FingerprintEnrollEnrolling";
     static final String TAG_SIDECAR = "sidecar";
+    static final String KEY_STATE_CANCELED = "is_canceled";
 
     private static final int PROGRESS_BAR_MAX = 10000;
 
@@ -115,6 +116,7 @@
 
     private FingerprintManager mFingerprintManager;
     private boolean mCanAssumeUdfps;
+    private boolean mCanAssumeSidefps;
     @Nullable private ProgressBar mProgressBar;
     private ObjectAnimator mProgressAnim;
     private TextView mDescriptionText;
@@ -129,6 +131,7 @@
     private boolean mRestoring;
     private Vibrator mVibrator;
     private boolean mIsSetupWizard;
+    private boolean mIsCanceled;
     private AccessibilityManager mAccessibilityManager;
     private boolean mIsAccessibilityEnabled;
     private LottieAnimationView mIllustrationLottie;
@@ -153,10 +156,14 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
+        if (savedInstanceState != null) {
+            restoreSavedState(savedInstanceState);
+        }
         mFingerprintManager = getSystemService(FingerprintManager.class);
         final List<FingerprintSensorPropertiesInternal> props =
                 mFingerprintManager.getSensorPropertiesInternal();
-        mCanAssumeUdfps = props.size() == 1 && props.get(0).isAnyUdfpsType();
+        mCanAssumeUdfps = props != null && props.size() == 1 && props.get(0).isAnyUdfpsType();
+        mCanAssumeSidefps = props != null && props.size() == 1 && props.get(0).isAnySidefpsType();
 
         mAccessibilityManager = getSystemService(AccessibilityManager.class);
         mIsAccessibilityEnabled = mAccessibilityManager.isEnabled();
@@ -238,7 +245,6 @@
                 return true;
             });
         }
-        mRestoring = savedInstanceState != null;
     }
 
     @Override
@@ -253,12 +259,23 @@
         if (mCanAssumeUdfps) {
             // Continue enrollment if restoring (e.g. configuration changed). Otherwise, wait
             // for the entry animation to complete before starting.
-            return mRestoring;
+            return mRestoring && !mIsCanceled;
         }
         return true;
     }
 
     @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putBoolean(KEY_STATE_CANCELED, mIsCanceled);
+    }
+
+    private void restoreSavedState(Bundle savedInstanceState) {
+        mRestoring = true;
+        mIsCanceled = savedInstanceState.getBoolean(KEY_STATE_CANCELED, false);
+    }
+
+    @Override
     protected void onStart() {
         super.onStart();
         updateProgress(false /* animate */);
@@ -498,7 +515,10 @@
     @Override
     public void onEnrollmentError(int errMsgId, CharSequence errString) {
         FingerprintErrorDialog.showErrorDialog(this, errMsgId);
+        mIsCanceled = true;
+        cancelEnrollment();
         stopIconAnimation();
+        stopListenOrientationEvent();
         if (!mCanAssumeUdfps) {
             mErrorText.removeCallbacks(mTouchAgainRunnable);
         }
@@ -508,7 +528,6 @@
     public void onEnrollmentProgressChange(int steps, int remaining) {
         updateProgress(true /* animate */);
         updateTitleAndDescription();
-        clearError();
         animateFlash();
         if (!mCanAssumeUdfps) {
             mErrorText.removeCallbacks(mTouchAgainRunnable);
@@ -537,6 +556,11 @@
 
         int progress = getProgress(
                 mSidecar.getEnrollmentSteps(), mSidecar.getEnrollmentRemaining());
+        // Only clear the error when progress has been made.
+        // TODO (b/234772728) Add tests.
+        if (mProgressBar != null && mProgressBar.getProgress() < progress) {
+            clearError();
+        }
         if (animate) {
             animateProgress(progress);
         } else {
@@ -563,7 +587,7 @@
     }
 
     private void showError(CharSequence error) {
-        if (mCanAssumeUdfps) {
+        if (mCanAssumeUdfps || mCanAssumeSidefps) {
             setHeaderText(error);
             // Show nothing for subtitle when getting an error message.
             setDescriptionText("");
@@ -635,13 +659,17 @@
             new Animator.AnimatorListener() {
 
                 @Override
-                public void onAnimationStart(Animator animation) { }
+                public void onAnimationStart(Animator animation) {
+                    startIconAnimation();
+                }
 
                 @Override
                 public void onAnimationRepeat(Animator animation) { }
 
                 @Override
                 public void onAnimationEnd(Animator animation) {
+                    stopIconAnimation();
+
                     if (mProgressBar.getProgress() >= PROGRESS_BAR_MAX) {
                         mProgressBar.postDelayed(mDelayedFinishRunnable, getFinishDelay());
                     }
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
index b9e9dcc..71d0c8e 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
@@ -61,6 +61,7 @@
     @Nullable private FooterButton mSecondaryFooterButton;
 
     private DevicePolicyManager mDevicePolicyManager;
+    private boolean mCanAssumeUdfps;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -72,6 +73,10 @@
         }
 
         super.onCreate(savedInstanceState);
+        final FingerprintManager fingerprintManager = getSystemService(FingerprintManager.class);
+        final List<FingerprintSensorPropertiesInternal> props =
+                fingerprintManager.getSensorPropertiesInternal();
+        mCanAssumeUdfps = props != null && props.size() == 1 && props.get(0).isAnyUdfpsType();
 
         mDevicePolicyManager = getSystemService(DevicePolicyManager.class);
 
@@ -79,11 +84,13 @@
         final ImageView iconDeviceLocked = findViewById(R.id.icon_device_locked);
         final ImageView iconTrashCan = findViewById(R.id.icon_trash_can);
         final ImageView iconInfo = findViewById(R.id.icon_info);
+        final ImageView iconShield = findViewById(R.id.icon_shield);
         final ImageView iconLink = findViewById(R.id.icon_link);
         iconFingerprint.getDrawable().setColorFilter(getIconColorFilter());
         iconDeviceLocked.getDrawable().setColorFilter(getIconColorFilter());
         iconTrashCan.getDrawable().setColorFilter(getIconColorFilter());
         iconInfo.getDrawable().setColorFilter(getIconColorFilter());
+        iconShield.getDrawable().setColorFilter(getIconColorFilter());
         iconLink.getDrawable().setColorFilter(getIconColorFilter());
 
         final TextView footerMessage2 = findViewById(R.id.footer_message_2);
@@ -97,6 +104,14 @@
         footerMessage5.setText(getFooterMessage5());
         footerMessage6.setText(getFooterMessage6());
 
+        if (mCanAssumeUdfps) {
+            footerMessage6.setVisibility(View.VISIBLE);
+            iconShield.setVisibility(View.VISIBLE);
+        } else {
+            footerMessage6.setVisibility(View.GONE);
+            iconShield.setVisibility(View.GONE);
+        }
+
         final TextView footerTitle1 = findViewById(R.id.footer_title_1);
         final TextView footerTitle2 = findViewById(R.id.footer_title_2);
         footerTitle1.setText(getFooterTitle1());
@@ -226,6 +241,8 @@
         final boolean isSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
         final boolean isDeferredSetupWizard =
                 WizardManagerHelper.isDeferredSetupWizard(getIntent());
+        final boolean isPortalSetupWizard =
+                WizardManagerHelper.isPortalSetupWizard(getIntent());
         if (mFingerprintManager != null) {
             final List<FingerprintSensorPropertiesInternal> props =
                     mFingerprintManager.getSensorPropertiesInternal();
@@ -237,7 +254,7 @@
                     getApplicationContext()
                             .getResources()
                             .getInteger(R.integer.suw_max_fingerprints_enrollable);
-            if (isSetupWizard && !isDeferredSetupWizard) {
+            if (isSetupWizard && !isDeferredSetupWizard && !isPortalSetupWizard) {
                 if (numEnrolledFingerprints >= maxFingerprintsEnrollableIfSUW) {
                     return R.string.fingerprint_intro_error_max;
                 } else {
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java b/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java
index a238119..9f9efdc 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintErrorDialog.java
@@ -16,20 +16,84 @@
 
 package com.android.settings.biometrics.fingerprint;
 
+import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED;
+import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_TIMEOUT;
+import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.KEY_STATE_CANCELED;
+
+import android.app.Activity;
+import android.app.Dialog;
 import android.app.settings.SettingsEnums;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.hardware.biometrics.BiometricConstants;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.Bundle;
 
+import androidx.appcompat.app.AlertDialog;
 import androidx.fragment.app.FragmentManager;
 
 import com.android.settings.R;
 import com.android.settings.biometrics.BiometricEnrollBase;
-import com.android.settings.biometrics.BiometricErrorDialog;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
-/**
- * Fingerprint error dialog, will be shown when an error occurs during fingerprint enrollment.
- */
-public class FingerprintErrorDialog extends BiometricErrorDialog {
+/** Fingerprint error dialog, will be shown when an error occurs during fingerprint enrollment. */
+public class FingerprintErrorDialog extends InstrumentedDialogFragment {
+
+    public static final String KEY_ERROR_MSG = "error_msg";
+    public static final String KEY_ERROR_ID = "error_id";
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        CharSequence errorString = getArguments().getCharSequence(KEY_ERROR_MSG);
+        final int errMsgId = getArguments().getInt(KEY_ERROR_ID);
+        boolean wasTimeout = errMsgId == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT;
+
+        builder.setTitle(R.string.security_settings_fingerprint_enroll_error_dialog_title)
+                .setMessage(errorString)
+                .setCancelable(false)
+                .setPositiveButton(
+                        R.string.security_settings_fingerprint_enroll_dialog_ok,
+                        new DialogInterface.OnClickListener() {
+                            @Override
+                            public void onClick(DialogInterface dialog, int which) {
+                                dialog.dismiss();
+                                Activity activity = getActivity();
+                                activity.setResult(RESULT_FINISHED);
+                                activity.finish();
+                            }
+                        });
+        if (wasTimeout) {
+            builder.setPositiveButton(
+                            R.string.security_settings_fingerprint_enroll_dialog_try_again,
+                            new DialogInterface.OnClickListener() {
+                                @Override
+                                public void onClick(DialogInterface dialog, int which) {
+                                    dialog.dismiss();
+                                    Activity activity = getActivity();
+                                    Intent intent = activity.getIntent();
+                                    intent.putExtra(KEY_STATE_CANCELED, false);
+                                    activity.startActivity(intent);
+                                    activity.finish();
+                                }
+                            })
+                    .setNegativeButton(
+                            R.string.security_settings_fingerprint_enroll_dialog_ok,
+                            new DialogInterface.OnClickListener() {
+                                @Override
+                                public void onClick(DialogInterface dialog, int which) {
+                                    dialog.dismiss();
+                                    Activity activity = getActivity();
+                                    activity.setResult(RESULT_TIMEOUT);
+                                    activity.finish();
+                                }
+                            });
+        }
+        AlertDialog dialog = builder.create();
+        dialog.setCanceledOnTouchOutside(false);
+        return dialog;
+    }
+
     public static void showErrorDialog(BiometricEnrollBase host, int errMsgId) {
         if (host.isFinishing()) {
             return;
@@ -48,8 +112,8 @@
     private static int getErrorMessage(int errMsgId) {
         switch (errMsgId) {
             case FingerprintManager.FINGERPRINT_ERROR_TIMEOUT:
-                // This message happens when the underlying crypto layer decides to revoke the
-                // enrollment auth token.
+                // This message happens when the underlying crypto layer decides to revoke
+                // the enrollment auth token.
                 return R.string.security_settings_fingerprint_enroll_error_timeout_dialog_message;
             case FingerprintManager.FINGERPRINT_ERROR_BAD_CALIBRATION:
                 return R.string.security_settings_fingerprint_bad_calibration;
@@ -69,16 +133,6 @@
     }
 
     @Override
-    public int getTitleResId() {
-        return R.string.security_settings_fingerprint_enroll_error_dialog_title;
-    }
-
-    @Override
-    public int getOkButtonTextResId() {
-        return R.string.security_settings_fingerprint_enroll_dialog_ok;
-    }
-
-    @Override
     public int getMetricsCategory() {
         return SettingsEnums.DIALOG_FINGERPINT_ERROR;
     }
diff --git a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroduction.java
index af25ecd..b313961 100644
--- a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroduction.java
@@ -16,21 +16,16 @@
 
 package com.android.settings.biometrics.fingerprint;
 
-import android.app.Activity;
 import android.app.KeyguardManager;
 import android.app.settings.SettingsEnums;
 import android.content.Intent;
 import android.hardware.fingerprint.FingerprintManager;
-import android.os.Bundle;
-import android.os.UserHandle;
 import android.view.View;
 
-import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.SetupWizardUtils;
 import com.android.settings.Utils;
 import com.android.settings.biometrics.BiometricUtils;
 import com.android.settings.password.ChooseLockSettingsHelper;
-import com.android.settings.password.SetupChooseLockGeneric;
 import com.android.settings.password.SetupSkipDialog;
 
 public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntroduction {
@@ -40,24 +35,6 @@
     private static final String EXTRA_FINGERPRINT_ENROLLED_COUNT = "fingerprint_enrolled_count";
 
     private static final String KEY_LOCK_SCREEN_PRESENT = "wasLockScreenPresent";
-    private boolean mAlreadyHadLockScreenSetup = false;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        if (savedInstanceState == null) {
-            mAlreadyHadLockScreenSetup = isKeyguardSecure();
-        } else {
-            mAlreadyHadLockScreenSetup = savedInstanceState.getBoolean(
-                    KEY_LOCK_SCREEN_PRESENT, false);
-        }
-    }
-
-    @Override
-    protected void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-        outState.putBoolean(KEY_LOCK_SCREEN_PRESENT, mAlreadyHadLockScreenSetup);
-    }
 
     @Override
     protected Intent getEnrollingIntent() {
@@ -85,12 +62,6 @@
             }
         }
         if (requestCode == BIOMETRIC_FIND_SENSOR_REQUEST && isKeyguardSecure()) {
-            // if lock was already present, do not return intent data since it must have been
-            // reported in previous attempts
-            if (!mAlreadyHadLockScreenSetup) {
-                data = getMetricIntent(data);
-            }
-
             // Report fingerprint count if user adding a new fingerprint
             if (resultCode == RESULT_FINISHED) {
                 data = setFingerprintCount(data);
@@ -127,18 +98,6 @@
         super.onActivityResult(requestCode, resultCode, data);
     }
 
-    private Intent getMetricIntent(Intent data) {
-        if (data == null) {
-            data = new Intent();
-        }
-        LockPatternUtils lockPatternUtils = new LockPatternUtils(this);
-        data.putExtra(SetupChooseLockGeneric.
-                SetupChooseLockGenericFragment.EXTRA_PASSWORD_QUALITY,
-                lockPatternUtils.getKeyguardStoredPasswordQuality(UserHandle.myUserId()));
-
-        return data;
-    }
-
     private Intent setFingerprintCount(Intent data) {
         if (data == null) {
             data = new Intent();
@@ -161,8 +120,7 @@
             if (!BiometricUtils.tryStartingNextBiometricEnroll(
                     this, ENROLL_NEXT_BIOMETRIC_REQUEST, "cancel")) {
                 resultCode = RESULT_SKIP;
-                data = mAlreadyHadLockScreenSetup ? null : getMetricIntent(null);
-                setResult(resultCode, data);
+                setResult(resultCode);
                 finish();
                 return;
             }
@@ -176,18 +134,6 @@
         // User has explicitly canceled enroll. Don't restart it automatically.
     }
 
-    /**
-     * Propagate lock screen metrics if the user goes back from the fingerprint setup screen
-     * after having added lock screen to his device.
-     */
-    @Override
-    public void onBackPressed() {
-        if (!mAlreadyHadLockScreenSetup && isKeyguardSecure()) {
-            setResult(Activity.RESULT_CANCELED, getMetricIntent(null));
-        }
-        super.onBackPressed();
-    }
-
     private boolean isKeyguardSecure() {
         return getSystemService(KeyguardManager.class).isKeyguardSecure();
     }
diff --git a/src/com/android/settings/bluetooth/QrCodeScanModeActivity.java b/src/com/android/settings/bluetooth/QrCodeScanModeActivity.java
index 5c5b61f..690c07e 100644
--- a/src/com/android/settings/bluetooth/QrCodeScanModeActivity.java
+++ b/src/com/android/settings/bluetooth/QrCodeScanModeActivity.java
@@ -30,7 +30,15 @@
 import com.android.settingslib.bluetooth.BluetoothBroadcastUtils;
 import com.android.settingslib.bluetooth.BluetoothUtils;
 
-//TODO (b/232365943): Add test case for tthe QrCode UI.
+/**
+ * Finding a broadcast through QR code.
+ *
+ * To use intent action {@link BluetoothBroadcastUtils#ACTION_BLUETOOTH_LE_AUDIO_QR_CODE_SCANNER},
+ * specify the bluetooth device sink of the broadcast to be provisioned in
+ * {@link BluetoothBroadcastUtils#EXTRA_BLUETOOTH_DEVICE_SINK} and check the operation for all
+ * coordinated set members throughout one session or not by
+ * {@link BluetoothBroadcastUtils#EXTRA_BLUETOOTH_SINK_IS_GROUP}.
+ */
 public class QrCodeScanModeActivity extends QrCodeScanModeBaseActivity {
     private static final boolean DEBUG = BluetoothUtils.D;
     private static final String TAG = "QrCodeScanModeActivity";
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index 11ceeaf..dc746ce 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -99,9 +99,9 @@
 import com.android.settings.dream.DreamSettings;
 import com.android.settings.enterprise.EnterprisePrivacySettings;
 import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
-import com.android.settings.fuelgauge.PowerUsageSummary;
 import com.android.settings.fuelgauge.batterysaver.BatterySaverScheduleSettings;
 import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
+import com.android.settings.fuelgauge.batteryusage.PowerUsageSummary;
 import com.android.settings.gestures.AssistGestureSettings;
 import com.android.settings.gestures.ButtonNavigationSettingsFragment;
 import com.android.settings.gestures.DoubleTapPowerSettings;
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index fb0a09d..9d1ed7c 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -415,6 +415,30 @@
         updatePreferenceVisibility(mPreferenceControllers);
     }
 
+    /**
+     * Force update all the preferences in this fragment.
+     */
+    public void forceUpdatePreferences() {
+        final PreferenceScreen screen = getPreferenceScreen();
+        if (screen == null || mPreferenceControllers == null) {
+            return;
+        }
+        for (List<AbstractPreferenceController> controllerList : mPreferenceControllers.values()) {
+            for (AbstractPreferenceController controller : controllerList) {
+                final String key = controller.getPreferenceKey();
+                final Preference preference = findPreference(key);
+                if (preference == null) {
+                    continue;
+                }
+                final boolean available = controller.isAvailable();
+                if (available) {
+                    controller.updateState(preference);
+                }
+                preference.setVisible(available);
+            }
+        }
+    }
+
     @VisibleForTesting
     void updatePreferenceVisibility(
             Map<Class, List<AbstractPreferenceController>> preferenceControllers) {
diff --git a/src/com/android/settings/dashboard/DashboardFragmentRegistry.java b/src/com/android/settings/dashboard/DashboardFragmentRegistry.java
index eb04f3c..c2b5198 100644
--- a/src/com/android/settings/dashboard/DashboardFragmentRegistry.java
+++ b/src/com/android/settings/dashboard/DashboardFragmentRegistry.java
@@ -31,9 +31,9 @@
 import com.android.settings.display.NightDisplaySettings;
 import com.android.settings.emergency.EmergencyDashboardFragment;
 import com.android.settings.enterprise.EnterprisePrivacySettings;
-import com.android.settings.fuelgauge.PowerUsageSummary;
 import com.android.settings.fuelgauge.SmartBatterySettings;
 import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
+import com.android.settings.fuelgauge.batteryusage.PowerUsageSummary;
 import com.android.settings.gestures.GestureSettings;
 import com.android.settings.homepage.TopLevelSettings;
 import com.android.settings.language.LanguageAndInputSettings;
diff --git a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java
index 4426bde..98629b4 100644
--- a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java
+++ b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java
@@ -16,14 +16,22 @@
 
 package com.android.settings.datetime;
 
-import android.content.Context;
-import android.provider.Settings;
+import static android.app.time.Capabilities.CAPABILITY_NOT_ALLOWED;
+import static android.app.time.Capabilities.CAPABILITY_NOT_APPLICABLE;
+import static android.app.time.Capabilities.CAPABILITY_NOT_SUPPORTED;
+import static android.app.time.Capabilities.CAPABILITY_POSSESSED;
 
+import android.app.time.TimeManager;
+import android.app.time.TimeZoneCapabilities;
+import android.app.time.TimeZoneCapabilitiesAndConfig;
+import android.app.time.TimeZoneConfiguration;
+import android.content.Context;
+
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.SwitchPreference;
 
 import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.Utils;
 import com.android.settingslib.core.AbstractPreferenceController;
 
 public class AutoTimeZonePreferenceController extends AbstractPreferenceController
@@ -33,17 +41,37 @@
 
     private final boolean mIsFromSUW;
     private final UpdateTimeAndDateCallback mCallback;
+    private final TimeManager mTimeManager;
 
     public AutoTimeZonePreferenceController(Context context, UpdateTimeAndDateCallback callback,
             boolean isFromSUW) {
         super(context);
+        mTimeManager = context.getSystemService(TimeManager.class);
         mCallback = callback;
         mIsFromSUW = isFromSUW;
     }
 
     @Override
     public boolean isAvailable() {
-        return !(Utils.isWifiOnly(mContext) || mIsFromSUW);
+        if (mIsFromSUW) {
+            return false;
+        }
+
+        TimeZoneCapabilities timeZoneCapabilities =
+                getTimeZoneCapabilitiesAndConfig().getCapabilities();
+        int capability = timeZoneCapabilities.getConfigureAutoDetectionEnabledCapability();
+
+        // The preference only has two states: present and not present. The preference is never
+        // present but disabled.
+        if (capability == CAPABILITY_NOT_SUPPORTED
+                || capability == CAPABILITY_NOT_ALLOWED
+                || capability == CAPABILITY_NOT_APPLICABLE) {
+            return false;
+        } else if (capability == CAPABILITY_POSSESSED) {
+            return true;
+        } else {
+            throw new IllegalStateException("Unknown capability=" + capability);
+        }
     }
 
     @Override
@@ -62,14 +90,22 @@
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
         boolean autoZoneEnabled = (Boolean) newValue;
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE,
-                autoZoneEnabled ? 1 : 0);
+        TimeZoneConfiguration configuration = new TimeZoneConfiguration.Builder()
+                .setAutoDetectionEnabled(autoZoneEnabled)
+                .build();
+        boolean result = mTimeManager.updateTimeZoneConfiguration(configuration);
+
         mCallback.updateTimeAndDateDisplay(mContext);
-        return true;
+        return result;
     }
 
-    public boolean isEnabled() {
-        return isAvailable() && Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.AUTO_TIME_ZONE, 0) > 0;
+    @VisibleForTesting
+    boolean isEnabled() {
+        TimeZoneConfiguration config = getTimeZoneCapabilitiesAndConfig().getConfiguration();
+        return config.isAutoDetectionEnabled();
+    }
+
+    private TimeZoneCapabilitiesAndConfig getTimeZoneCapabilitiesAndConfig() {
+        return mTimeManager.getTimeZoneCapabilitiesAndConfig();
     }
 }
diff --git a/src/com/android/settings/datetime/DateTimeSettings.java b/src/com/android/settings/datetime/DateTimeSettings.java
index d74847f..169455a 100644
--- a/src/com/android/settings/datetime/DateTimeSettings.java
+++ b/src/com/android/settings/datetime/DateTimeSettings.java
@@ -85,8 +85,7 @@
 
         controllers.add(new TimeFormatPreferenceController(
                 activity, this /* UpdateTimeAndDateCallback */, isFromSUW));
-        controllers.add(new TimeZonePreferenceController(
-                activity, autoTimeZonePreferenceController));
+        controllers.add(new TimeZonePreferenceController(activity));
         controllers.add(new TimePreferenceController(
                 activity, this /* UpdateTimeAndDateCallback */, autoTimePreferenceController));
         controllers.add(new DatePreferenceController(
diff --git a/src/com/android/settings/datetime/TimeZonePreferenceController.java b/src/com/android/settings/datetime/TimeZonePreferenceController.java
index a19f055..a26c7bf 100644
--- a/src/com/android/settings/datetime/TimeZonePreferenceController.java
+++ b/src/com/android/settings/datetime/TimeZonePreferenceController.java
@@ -16,6 +16,10 @@
 
 package com.android.settings.datetime;
 
+import static android.app.time.Capabilities.CAPABILITY_POSSESSED;
+
+import android.app.time.TimeManager;
+import android.app.time.TimeZoneCapabilities;
 import android.content.Context;
 
 import androidx.annotation.VisibleForTesting;
@@ -33,12 +37,11 @@
 
     private static final String KEY_TIMEZONE = "timezone";
 
-    private final AutoTimeZonePreferenceController mAutoTimeZonePreferenceController;
+    private final TimeManager mTimeManager;
 
-    public TimeZonePreferenceController(Context context,
-            AutoTimeZonePreferenceController autoTimeZonePreferenceController) {
+    public TimeZonePreferenceController(Context context) {
         super(context);
-        mAutoTimeZonePreferenceController = autoTimeZonePreferenceController;
+        mTimeManager = context.getSystemService(TimeManager.class);
     }
 
     @Override
@@ -47,8 +50,9 @@
             return;
         }
         preference.setSummary(getTimeZoneOffsetAndName());
-        if( !((RestrictedPreference) preference).isDisabledByAdmin()) {
-            preference.setEnabled(!mAutoTimeZonePreferenceController.isEnabled());
+        if (!((RestrictedPreference) preference).isDisabledByAdmin()) {
+            boolean enableManualTimeZoneSelection = shouldEnableManualTimeZoneSelection();
+            preference.setEnabled(enableManualTimeZoneSelection);
         }
     }
 
@@ -68,4 +72,12 @@
         return ZoneGetter.getTimeZoneOffsetAndName(mContext,
                 now.getTimeZone(), now.getTime());
     }
+
+    private boolean shouldEnableManualTimeZoneSelection() {
+        TimeZoneCapabilities timeZoneCapabilities =
+                mTimeManager.getTimeZoneCapabilitiesAndConfig().getCapabilities();
+        int suggestManualTimeZoneCapability =
+                timeZoneCapabilities.getSuggestManualTimeZoneCapability();
+        return suggestManualTimeZoneCapability == CAPABILITY_POSSESSED;
+    }
 }
diff --git a/src/com/android/settings/development/NotificationChannelWarningsPreferenceController.java b/src/com/android/settings/development/NotificationChannelWarningsPreferenceController.java
index 775b708..22b3f83 100644
--- a/src/com/android/settings/development/NotificationChannelWarningsPreferenceController.java
+++ b/src/com/android/settings/development/NotificationChannelWarningsPreferenceController.java
@@ -38,10 +38,6 @@
     final static int SETTING_VALUE_ON = 1;
     @VisibleForTesting
     final static int SETTING_VALUE_OFF = 0;
-    @VisibleForTesting
-    final static int DEBUGGING_ENABLED = 1;
-    @VisibleForTesting
-    final static int DEBUGGING_DISABLED = 0;
 
     public NotificationChannelWarningsPreferenceController(Context context) {
         super(context);
@@ -64,9 +60,8 @@
 
     @Override
     public void updateState(Preference preference) {
-        final int defaultWarningEnabled = isDebuggable() ? DEBUGGING_ENABLED : DEBUGGING_DISABLED;
         final int mode = Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.SHOW_NOTIFICATION_CHANNEL_WARNINGS, defaultWarningEnabled);
+                Settings.Global.SHOW_NOTIFICATION_CHANNEL_WARNINGS, 0);
         ((SwitchPreference) mPreference).setChecked(mode != SETTING_VALUE_OFF);
     }
 
diff --git a/src/com/android/settings/development/StayAwakePreferenceController.java b/src/com/android/settings/development/StayAwakePreferenceController.java
index 25a92b2..9ed0ef8 100644
--- a/src/com/android/settings/development/StayAwakePreferenceController.java
+++ b/src/com/android/settings/development/StayAwakePreferenceController.java
@@ -50,7 +50,7 @@
     @VisibleForTesting
     static final int SETTING_VALUE_ON =
             BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB
-                    | BatteryManager.BATTERY_PLUGGED_WIRELESS;
+                    | BatteryManager.BATTERY_PLUGGED_WIRELESS | BatteryManager.BATTERY_PLUGGED_DOCK;
     @VisibleForTesting
     SettingsObserver mSettingsObserver;
 
diff --git a/src/com/android/settings/display/ScreenSaverPreferenceController.java b/src/com/android/settings/display/ScreenSaverPreferenceController.java
index c1b0b4e..676a567 100644
--- a/src/com/android/settings/display/ScreenSaverPreferenceController.java
+++ b/src/com/android/settings/display/ScreenSaverPreferenceController.java
@@ -14,6 +14,7 @@
 package com.android.settings.display;
 
 import android.content.Context;
+import android.os.UserManager;
 
 import androidx.preference.Preference;
 
@@ -32,8 +33,11 @@
 
     @Override
     public boolean isAvailable() {
-        return mContext.getResources().getBoolean(
+        final boolean dreamsSupported = mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_dreamsSupported);
+        final boolean dreamsOnlyEnabledForSystemUser = mContext.getResources().getBoolean(
+                com.android.internal.R.bool.config_dreamsOnlyEnabledForSystemUser);
+        return dreamsSupported && (!dreamsOnlyEnabledForSystemUser || isSystemUser());
     }
 
     @Override
@@ -45,4 +49,9 @@
     public void updateState(Preference preference) {
         preference.setSummary(DreamSettings.getSummaryTextWithDreamName(mContext));
     }
+
+    private boolean isSystemUser() {
+        final UserManager userManager = mContext.getSystemService(UserManager.class);
+        return userManager.isSystemUser();
+    }
 }
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index 48825c8..d096d49 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -45,6 +45,9 @@
 import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
 import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
 import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry;
+import com.android.settings.fuelgauge.batteryusage.BatteryEntry;
+import com.android.settings.fuelgauge.batteryusage.BatteryHistEntry;
 import com.android.settings.widget.EntityHeaderController;
 import com.android.settingslib.HelpUtils;
 import com.android.settingslib.applications.AppUtils;
diff --git a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
index f5e21dd..9860240 100644
--- a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
+++ b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
@@ -24,16 +24,13 @@
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.IPackageManager;
-import android.content.pm.PackageManager;
-import android.content.pm.ParceledListSlice;
-import android.content.pm.UserInfo;
 import android.os.Build;
 import android.os.IDeviceIdleController;
 import android.os.ParcelFileDescriptor;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.UserHandle;
-import android.os.UserManager;
+import android.util.ArraySet;
 import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
@@ -53,22 +50,13 @@
     private static final String DEVICE_IDLE_SERVICE = "deviceidle";
     private static final boolean DEBUG = Build.TYPE.equals("userdebug");
 
-    // Only the owner can see all apps.
-    private static final int RETRIEVE_FLAG_ADMIN =
-            PackageManager.MATCH_ANY_USER |
-            PackageManager.MATCH_DISABLED_COMPONENTS |
-            PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS;
-    private static final int RETRIEVE_FLAG =
-            PackageManager.MATCH_DISABLED_COMPONENTS |
-            PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS;
-
     static final String DELIMITER = ",";
     static final String DELIMITER_MODE = ":";
     static final String KEY_FULL_POWER_LIST = "full_power_list";
     static final String KEY_OPTIMIZATION_LIST = "optimization_mode_list";
 
     @VisibleForTesting
-    List<ApplicationInfo> mTestApplicationInfoList = null;
+    ArraySet<ApplicationInfo> mTestApplicationInfoList = null;
 
     @VisibleForTesting
     PowerAllowlistBackend mPowerAllowlistBackend;
@@ -146,7 +134,7 @@
     @VisibleForTesting
     void backupOptimizationMode(BackupDataOutput data, List<String> allowlistedApps) {
         final long timestamp = System.currentTimeMillis();
-        final List<ApplicationInfo> applications = getInstalledApplications();
+        final ArraySet<ApplicationInfo> applications = getInstalledApplications();
         if (applications == null || applications.isEmpty()) {
             Log.w(TAG, "no data found in the getInstalledApplications()");
             return;
@@ -269,36 +257,11 @@
                 || powerAllowlistBackend.isDefaultActiveApp(packageName);
     }
 
-    private List<ApplicationInfo> getInstalledApplications() {
+    private ArraySet<ApplicationInfo> getInstalledApplications() {
         if (mTestApplicationInfoList != null) {
             return mTestApplicationInfoList;
         }
-        final List<ApplicationInfo> applications = new ArrayList<>();
-        final UserManager um = mContext.getSystemService(UserManager.class);
-        for (UserInfo userInfo : um.getProfiles(UserHandle.myUserId())) {
-            try {
-                @SuppressWarnings("unchecked")
-                final ParceledListSlice<ApplicationInfo> infoList =
-                        getIPackageManager().getInstalledApplications(
-                                userInfo.isAdmin() ? RETRIEVE_FLAG_ADMIN : RETRIEVE_FLAG,
-                                userInfo.id);
-                if (infoList != null) {
-                    applications.addAll(infoList.getList());
-                }
-            } catch (Exception e) {
-                Log.e(TAG, "getInstalledApplications() is failed", e);
-                return null;
-            }
-        }
-        // Removes the application which is disabled by the system.
-        for (int index = applications.size() - 1; index >= 0; index--) {
-            final ApplicationInfo info = applications.get(index);
-            if (info.enabledSetting != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
-                    && !info.enabled) {
-                applications.remove(index);
-            }
-        }
-        return applications;
+        return BatteryOptimizeUtils.getInstalledApplications(mContext, getIPackageManager());
     }
 
     private void debugLog(String debugContent) {
diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
index 9306a34..dbfacc6 100644
--- a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
@@ -19,7 +19,15 @@
 import android.annotation.IntDef;
 import android.app.AppOpsManager;
 import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageManager;
+import android.content.pm.ParceledListSlice;
+import android.content.pm.UserInfo;
 import android.os.AsyncTask;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.ArraySet;
 import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
@@ -43,6 +51,15 @@
     private final String mPackageName;
     private final int mUid;
 
+    // If current user is admin, match apps from all users. Otherwise, only match the currect user.
+    private static final int RETRIEVE_FLAG_ADMIN =
+            PackageManager.MATCH_ANY_USER
+                | PackageManager.MATCH_DISABLED_COMPONENTS
+                | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS;
+    private static final int RETRIEVE_FLAG =
+            PackageManager.MATCH_DISABLED_COMPONENTS
+                | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS;
+
     // Optimization modes.
     static final int MODE_UNKNOWN = 0;
     static final int MODE_RESTRICTED = 1;
@@ -90,28 +107,20 @@
         return getAppOptimizationMode(mMode, mAllowListed);
     }
 
+    /** Resets optimization mode for all applications. */
+    public static void resetAppOptimizationMode(
+            Context context, IPackageManager ipm, AppOpsManager aom) {
+        resetAppOptimizationMode(context, ipm, aom,
+                PowerAllowlistBackend.getInstance(context), BatteryUtils.getInstance(context));
+    }
+
     /** Sets the {@link OptimizationMode} for associated app. */
     public void setAppUsageState(@OptimizationMode int mode) {
         if (getAppOptimizationMode(mMode, mAllowListed) == mode) {
             Log.w(TAG, "set the same optimization mode for: " + mPackageName);
             return;
         }
-
-        AsyncTask.execute(() -> {
-            switch (mode) {
-                case MODE_RESTRICTED:
-                    setAppOptimizationMode(AppOpsManager.MODE_IGNORED, /* allowListed */ false);
-                    break;
-                case MODE_UNRESTRICTED:
-                    setAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ true);
-                    break;
-                case MODE_OPTIMIZED:
-                    setAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ false);
-                    break;
-                default:
-                    Log.d(TAG, "set unknown app optimization mode.");
-            }
-        });
+        setAppUsageStateInternal(mode, mUid, mPackageName, mBatteryUtils, mPowerAllowListBackend);
     }
 
     /**
@@ -126,25 +135,111 @@
      */
     public boolean isSystemOrDefaultApp() {
         mPowerAllowListBackend.refreshList();
+        return isSystemOrDefaultApp(mPowerAllowListBackend, mPackageName);
+    }
 
-        return mPowerAllowListBackend.isSysAllowlisted(mPackageName)
-                || mPowerAllowListBackend.isDefaultActiveApp(mPackageName);
+    /**
+      * Gets the list of installed applications.
+      */
+    public static ArraySet<ApplicationInfo> getInstalledApplications(
+            Context context, IPackageManager ipm) {
+        final ArraySet<ApplicationInfo> applications = new ArraySet<>();
+        final UserManager um = context.getSystemService(UserManager.class);
+        for (UserInfo userInfo : um.getProfiles(UserHandle.myUserId())) {
+            try {
+                @SuppressWarnings("unchecked")
+                final ParceledListSlice<ApplicationInfo> infoList = ipm.getInstalledApplications(
+                        userInfo.isAdmin() ? RETRIEVE_FLAG_ADMIN : RETRIEVE_FLAG,
+                        userInfo.id);
+                if (infoList != null) {
+                    applications.addAll(infoList.getList());
+                }
+            } catch (Exception e) {
+                Log.e(TAG, "getInstalledApplications() is failed", e);
+                return null;
+            }
+        }
+        // Removes the application which is disabled by the system.
+        applications.removeIf(
+                info -> info.enabledSetting != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
+                    && !info.enabled);
+        return applications;
+    }
+
+    @VisibleForTesting
+    static void resetAppOptimizationMode(
+            Context context, IPackageManager ipm, AppOpsManager aom,
+            PowerAllowlistBackend allowlistBackend, BatteryUtils batteryUtils) {
+        final ArraySet<ApplicationInfo> applications = getInstalledApplications(context, ipm);
+        if (applications == null || applications.isEmpty()) {
+            Log.w(TAG, "no data found in the getInstalledApplications()");
+            return;
+        }
+
+        allowlistBackend.refreshList();
+        // Resets optimization mode for each application.
+        for (ApplicationInfo info : applications) {
+            final int mode = aom.checkOpNoThrow(
+                    AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, info.uid, info.packageName);
+            @OptimizationMode
+            final int optimizationMode = getAppOptimizationMode(
+                    mode, allowlistBackend.isAllowlisted(info.packageName));
+            // Ignores default optimized/unknown state or system/default apps.
+            if (optimizationMode == MODE_OPTIMIZED
+                    || optimizationMode == MODE_UNKNOWN
+                    || isSystemOrDefaultApp(allowlistBackend, info.packageName)) {
+                continue;
+            }
+
+            // Resets to the default mode: MODE_OPTIMIZED.
+            setAppUsageStateInternal(MODE_OPTIMIZED, info.uid, info.packageName, batteryUtils,
+                    allowlistBackend);
+        }
     }
 
     String getPackageName() {
         return mPackageName == null ? UNKNOWN_PACKAGE : mPackageName;
     }
 
-    private void setAppOptimizationMode(int appStandbyMode, boolean allowListed) {
+    private static boolean isSystemOrDefaultApp(
+            PowerAllowlistBackend powerAllowlistBackend, String packageName) {
+        return powerAllowlistBackend.isSysAllowlisted(packageName)
+                || powerAllowlistBackend.isDefaultActiveApp(packageName);
+    }
+
+    private static void setAppUsageStateInternal(
+            @OptimizationMode int mode, int uid, String packageName, BatteryUtils batteryUtils,
+            PowerAllowlistBackend powerAllowlistBackend) {
+        if (mode == MODE_UNKNOWN) {
+            Log.d(TAG, "set unknown app optimization mode.");
+            return;
+        }
+
+        // MODE_RESTRICTED = AppOpsManager.MODE_IGNORED + !allowListed
+        // MODE_UNRESTRICTED = AppOpsManager.MODE_ALLOWED + allowListed
+        // MODE_OPTIMIZED = AppOpsManager.MODE_ALLOWED + !allowListed
+        final int appOpsManagerMode =
+                mode == MODE_RESTRICTED ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED;
+        final boolean allowListed = mode == MODE_UNRESTRICTED;
+
+        AsyncTask.execute(() -> {
+            setAppOptimizationModeInternal(appOpsManagerMode, allowListed, uid, packageName,
+                    batteryUtils, powerAllowlistBackend);
+        });
+    }
+
+    private static void setAppOptimizationModeInternal(
+            int appStandbyMode, boolean allowListed, int uid, String packageName,
+            BatteryUtils batteryUtils, PowerAllowlistBackend powerAllowlistBackend) {
         try {
-            mBatteryUtils.setForceAppStandby(mUid, mPackageName, appStandbyMode);
+            batteryUtils.setForceAppStandby(uid, packageName, appStandbyMode);
             if (allowListed) {
-                mPowerAllowListBackend.addApp(mPackageName);
+                powerAllowlistBackend.addApp(packageName);
             } else {
-                mPowerAllowListBackend.removeApp(mPackageName);
+                powerAllowlistBackend.removeApp(packageName);
             }
         } catch (Exception e) {
-            Log.e(TAG, "set OPTIMIZED failed for " + mPackageName, e);
+            Log.e(TAG, "set OPTIMIZATION MODE failed for " + packageName, e);
         }
     }
 
@@ -154,8 +249,6 @@
         mMode = mAppOpsManager
                 .checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, mUid, mPackageName);
         Log.d(TAG, String.format("refresh %s state, allowlisted = %s, mode = %d",
-                mPackageName,
-                mAllowListed,
-                mMode));
+                mPackageName, mAllowListed, mMode));
     }
 }
diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java
index 29c2fc9..a6c48a4 100644
--- a/src/com/android/settings/fuelgauge/BatteryUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryUtils.java
@@ -69,6 +69,8 @@
     public static final int UID_REMOVED_APPS = -4;
     /** Special UID value for data usage by tethering. */
     public static final int UID_TETHERING = -5;
+    /** Special UID for aggregated other users. */
+    public static final long UID_OTHER_USERS = Long.MIN_VALUE;
 
     @Retention(RetentionPolicy.SOURCE)
     @IntDef({StatusType.SCREEN_USAGE,
@@ -190,7 +192,7 @@
      * Returns true if the specified battery consumer should be excluded from
      * battery consumption lists, either short or full.
      */
-    boolean shouldHideUidBatteryConsumerUnconditionally(UidBatteryConsumer consumer,
+    public boolean shouldHideUidBatteryConsumerUnconditionally(UidBatteryConsumer consumer,
             String[] packages) {
         final int uid = consumer.getUid();
         return uid == UID_TETHERING
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
index ef201e4..83d7a33 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,6 +21,7 @@
 import android.net.Uri;
 import android.util.SparseIntArray;
 
+import com.android.settings.fuelgauge.batteryusage.BatteryHistEntry;
 import com.android.settingslib.fuelgauge.Estimate;
 
 import java.util.Map;
@@ -73,6 +74,7 @@
 
     /**
      * Returns an improved projection curve for future battery level.
+     *
      * @param zeroTime timestamps (array keys) are shifted by this amount
      */
     SparseIntArray getEnhancedBatteryPredictionCurve(Context context, long zeroTime);
@@ -84,21 +86,20 @@
 
     /**
      * Checks whether debugging should be enabled for battery estimates.
-     * @return
      */
     boolean isEstimateDebugEnabled();
 
     /**
      * Converts the provided string containing the remaining time into a debug string for enhanced
      * estimates.
-     * @param timeRemaining
+     *
      * @return A string containing the estimate and a label indicating it is an enhanced estimate
      */
     String getEnhancedEstimateDebugString(String timeRemaining);
 
     /**
      * Converts the provided string containing the remaining time into a debug string.
-     * @param timeRemaining
+     *
      * @return A string containing the estimate and a label indicating it is a normal estimate
      */
     String getOldEstimateDebugString(String timeRemaining);
@@ -114,7 +115,7 @@
      * to their next charging time.
      *
      * @param id Optional string used to identify the caller for metrics. Usually the class name of
-     * the caller
+     *           the caller
      */
     boolean getEarlyWarningSignal(Context context, String id);
 
@@ -149,6 +150,11 @@
     Map<Long, Map<String, BatteryHistEntry>> getBatteryHistory(Context context);
 
     /**
+     * Returns battery history data since last full charge with corresponding timestamp key.
+     */
+    Map<Long, Map<String, BatteryHistEntry>> getBatteryHistorySinceLastFullCharge(Context context);
+
+    /**
      * Returns {@link Uri} to monitor battery history data is update.
      */
     Uri getBatteryHistoryUri();
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
index bc25381..1262641 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -26,11 +26,13 @@
 
 import com.android.internal.util.ArrayUtils;
 import com.android.settings.R;
+import com.android.settings.fuelgauge.batteryusage.BatteryHistEntry;
 import com.android.settingslib.fuelgauge.Estimate;
 
 import java.util.Map;
 import java.util.Set;
 
+/** Implementation of {@code PowerUsageFeatureProvider} */
 public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider {
 
     private static final String PACKAGE_CALENDAR_PROVIDER = "com.android.providers.calendar";
@@ -164,6 +166,12 @@
     }
 
     @Override
+    public Map<Long, Map<String, BatteryHistEntry>> getBatteryHistorySinceLastFullCharge(
+            Context context) {
+        return null;
+    }
+
+    @Override
     public Uri getBatteryHistoryUri() {
         return null;
     }
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/UnrestrictAppTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/UnrestrictAppTip.java
index a0e470f..3c560f8 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/UnrestrictAppTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/UnrestrictAppTip.java
@@ -21,12 +21,13 @@
 
 import androidx.annotation.VisibleForTesting;
 
+import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
 import com.android.settings.fuelgauge.batterytip.AppInfo;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
 /**
  * Tip to suggest user to remove app restriction. This is the empty tip and it is only used in
- * {@link com.android.settings.fuelgauge.AdvancedPowerUsageDetail} to create dialog.
+ * {@link AdvancedPowerUsageDetail} to create dialog.
  */
 public class UnrestrictAppTip extends BatteryTip {
     private AppInfo mAppInfo;
diff --git a/src/com/android/settings/fuelgauge/BatteryAppListPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryAppListPreferenceController.java
similarity index 97%
rename from src/com/android/settings/fuelgauge/BatteryAppListPreferenceController.java
rename to src/com/android/settings/fuelgauge/batteryusage/BatteryAppListPreferenceController.java
index 9731ab7..f752dad 100644
--- a/src/com/android/settings/fuelgauge/BatteryAppListPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryAppListPreferenceController.java
@@ -1,5 +1,6 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -11,11 +12,9 @@
  * 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.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import android.app.Activity;
 import android.content.Context;
@@ -35,8 +34,8 @@
 import android.text.TextUtils;
 import android.text.format.DateUtils;
 import android.util.ArrayMap;
-import android.util.SparseArray;
 import android.util.Log;
+import android.util.SparseArray;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
@@ -48,6 +47,8 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -72,6 +73,7 @@
     private static final int MAX_ITEMS_TO_LIST = USE_FAKE_DATA ? 30 : 20;
     private static final int MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP = 10;
     private static final String MEDIASERVER_PACKAGE_NAME = "mediaserver";
+    private static final String NOT_AVAILABLE = "not_available";
 
     @VisibleForTesting
     PreferenceGroup mAppListGroup;
@@ -230,7 +232,7 @@
         if (sConfig.shouldShowBatteryAttributionList(mContext)) {
             final int dischargePercentage = getDischargePercentage(batteryUsageStats);
             final List<BatteryEntry> usageList =
-                getCoalescedUsageList(showAllApps, /*loadDataInBackground=*/ true);
+                    getCoalescedUsageList(showAllApps, /*loadDataInBackground=*/ true);
             final double totalPower = batteryUsageStats.getConsumedPower();
             final int numSippers = usageList.size();
             for (int i = 0; i < numSippers; i++) {
@@ -292,7 +294,7 @@
         }
         final int dischargePercentage = getDischargePercentage(batteryUsageStats);
         final List<BatteryEntry> usageList =
-            getCoalescedUsageList(showAllApps, /*loadDataInBackground=*/ false);
+                getCoalescedUsageList(showAllApps, /*loadDataInBackground=*/ false);
         final double totalPower = batteryUsageStats.getConsumedPower();
         for (int i = 0; i < usageList.size(); i++) {
             final BatteryEntry entry = usageList.get(i);
@@ -458,8 +460,8 @@
 
     private void cacheRemoveAllPrefs(PreferenceGroup group) {
         mPreferenceCache = new ArrayMap<>();
-        final int N = group.getPreferenceCount();
-        for (int i = 0; i < N; i++) {
+        final int n = group.getPreferenceCount();
+        for (int i = 0; i < n; i++) {
             Preference p = group.getPreference(i);
             if (TextUtils.isEmpty(p.getKey())) {
                 continue;
@@ -563,7 +565,6 @@
     }
 
     private void addNotAvailableMessage() {
-        final String NOT_AVAILABLE = "not_available";
         Preference notAvailable = getCachedPreference(NOT_AVAILABLE);
         if (notAvailable == null) {
             notAvailable = new Preference(mPrefContext);
diff --git a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
similarity index 81%
rename from src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
rename to src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
index 02248c9..d363308 100644
--- a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
@@ -1,5 +1,6 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -11,10 +12,9 @@
  * 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.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import android.app.settings.SettingsEnums;
 import android.content.Context;
@@ -38,6 +38,8 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -60,8 +62,8 @@
 /** Controls the update for chart graph and the list items. */
 public class BatteryChartPreferenceController extends AbstractPreferenceController
         implements PreferenceControllerMixin, LifecycleObserver, OnCreate, OnDestroy,
-                OnSaveInstanceState, BatteryChartView.OnSelectListener, OnResume,
-                ExpandDividerPreference.OnExpandListener {
+        OnSaveInstanceState, BatteryChartView.OnSelectListener, OnResume,
+        ExpandDividerPreference.OnExpandListener {
     private static final String TAG = "BatteryChartPreferenceController";
     private static final String KEY_FOOTER_PREF = "battery_graph_footer";
     private static final String PACKAGE_NAME_NONE = "none";
@@ -82,16 +84,25 @@
     @VisibleForTesting
     Map<Integer, List<BatteryDiffEntry>> mBatteryIndexedMap;
 
-    @VisibleForTesting Context mPrefContext;
-    @VisibleForTesting BatteryUtils mBatteryUtils;
-    @VisibleForTesting PreferenceGroup mAppListPrefGroup;
-    @VisibleForTesting BatteryChartView mBatteryChartView;
-    @VisibleForTesting ExpandDividerPreference mExpandDividerPreference;
+    @VisibleForTesting
+    Context mPrefContext;
+    @VisibleForTesting
+    BatteryUtils mBatteryUtils;
+    @VisibleForTesting
+    PreferenceGroup mAppListPrefGroup;
+    @VisibleForTesting
+    BatteryChartView mBatteryChartView;
+    @VisibleForTesting
+    ExpandDividerPreference mExpandDividerPreference;
 
-    @VisibleForTesting boolean mIsExpanded = false;
-    @VisibleForTesting int[] mBatteryHistoryLevels;
-    @VisibleForTesting long[] mBatteryHistoryKeys;
-    @VisibleForTesting int mTrapezoidIndex = BatteryChartView.SELECTED_INDEX_INVALID;
+    @VisibleForTesting
+    boolean mIsExpanded = false;
+    @VisibleForTesting
+    int[] mBatteryHistoryLevels;
+    @VisibleForTesting
+    long[] mBatteryHistoryKeys;
+    @VisibleForTesting
+    int mTrapezoidIndex = BatteryChartView.SELECTED_INDEX_INVALID;
 
     private boolean mIs24HourFormat = false;
     private boolean mIsFooterPrefAdded = false;
@@ -122,15 +133,15 @@
         mPreferenceKey = preferenceKey;
         mIs24HourFormat = DateFormat.is24HourFormat(context);
         mMetricsFeatureProvider =
-            FeatureFactory.getFactory(mContext).getMetricsFeatureProvider();
+                FeatureFactory.getFactory(mContext).getMetricsFeatureProvider();
         mNotAllowShowEntryPackages =
-            FeatureFactory.getFactory(context)
-                .getPowerUsageFeatureProvider(context)
-                .getHideApplicationEntries(context);
+                FeatureFactory.getFactory(context)
+                        .getPowerUsageFeatureProvider(context)
+                        .getHideApplicationEntries(context);
         mNotAllowShowSummaryPackages =
-            FeatureFactory.getFactory(context)
-                .getPowerUsageFeatureProvider(context)
-                .getHideApplicationSummary(context);
+                FeatureFactory.getFactory(context)
+                        .getPowerUsageFeatureProvider(context)
+                        .getHideApplicationSummary(context);
         if (lifecycle != null) {
             lifecycle.addObserver(this);
         }
@@ -142,18 +153,18 @@
             return;
         }
         mTrapezoidIndex =
-            savedInstanceState.getInt(KEY_CURRENT_TIME_SLOT, mTrapezoidIndex);
+                savedInstanceState.getInt(KEY_CURRENT_TIME_SLOT, mTrapezoidIndex);
         mIsExpanded =
-            savedInstanceState.getBoolean(KEY_EXPAND_SYSTEM_INFO, mIsExpanded);
+                savedInstanceState.getBoolean(KEY_EXPAND_SYSTEM_INFO, mIsExpanded);
         Log.d(TAG, String.format("onCreate() slotIndex=%d isExpanded=%b",
-            mTrapezoidIndex, mIsExpanded));
+                mTrapezoidIndex, mIsExpanded));
     }
 
     @Override
     public void onResume() {
         final int currentUiMode =
-            mContext.getResources().getConfiguration().uiMode
-                & Configuration.UI_MODE_NIGHT_MASK;
+                mContext.getResources().getConfiguration().uiMode
+                        & Configuration.UI_MODE_NIGHT_MASK;
         if (sUiMode != currentUiMode) {
             sUiMode = currentUiMode;
             BatteryDiffEntry.clearCache();
@@ -171,7 +182,7 @@
         savedInstance.putInt(KEY_CURRENT_TIME_SLOT, mTrapezoidIndex);
         savedInstance.putBoolean(KEY_EXPAND_SYSTEM_INFO, mIsExpanded);
         Log.d(TAG, String.format("onSaveInstanceState() slotIndex=%d isExpanded=%b",
-            mTrapezoidIndex, mIsExpanded));
+                mTrapezoidIndex, mIsExpanded));
     }
 
     @Override
@@ -194,7 +205,7 @@
         mAppListPrefGroup = screen.findPreference(mPreferenceKey);
         mAppListPrefGroup.setOrderingAsAdded(false);
         mAppListPrefGroup.setTitle(
-            mPrefContext.getString(R.string.battery_app_usage_for_past_24));
+                mPrefContext.getString(R.string.battery_app_usage_for_past_24));
         mFooterPreference = screen.findPreference(KEY_FOOTER_PREF);
         // Removes footer first until usage data is loaded to avoid flashing.
         if (mFooterPreference != null) {
@@ -243,19 +254,19 @@
         Log.d(TAG, "onChartSelect:" + trapezoidIndex);
         refreshUi(trapezoidIndex, /*isForce=*/ false);
         mMetricsFeatureProvider.action(
-            mPrefContext,
-            trapezoidIndex == BatteryChartView.SELECTED_INDEX_ALL
-                ? SettingsEnums.ACTION_BATTERY_USAGE_SHOW_ALL
-                : SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT);
+                mPrefContext,
+                trapezoidIndex == BatteryChartView.SELECTED_INDEX_ALL
+                        ? SettingsEnums.ACTION_BATTERY_USAGE_SHOW_ALL
+                        : SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT);
     }
 
     @Override
     public void onExpand(boolean isExpanded) {
         mIsExpanded = isExpanded;
         mMetricsFeatureProvider.action(
-            mPrefContext,
-            SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM,
-            isExpanded);
+                mPrefContext,
+                SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM,
+                isExpanded);
         refreshExpandUi();
     }
 
@@ -276,7 +287,7 @@
             final Map<String, BatteryHistEntry> entryMap = batteryHistoryMap.get(timestamp);
             if (entryMap == null || entryMap.isEmpty()) {
                 Log.e(TAG, "abnormal entry list in the timestamp:"
-                    + ConvertUtils.utcToLocalTime(mPrefContext, timestamp));
+                        + ConvertUtils.utcToLocalTime(mPrefContext, timestamp));
                 continue;
             }
             // Averages the battery level in each time slot to avoid corner conditions.
@@ -285,15 +296,15 @@
                 batteryLevelCounter += entry.mBatteryLevel;
             }
             mBatteryHistoryLevels[index] =
-                Math.round(batteryLevelCounter / entryMap.size());
+                    Math.round(batteryLevelCounter / entryMap.size());
         }
         forceRefreshUi();
         Log.d(TAG, String.format(
-            "setBatteryHistoryMap() size=%d key=%s\nlevels=%s",
-            batteryHistoryMap.size(),
-            ConvertUtils.utcToLocalTime(mPrefContext,
-                mBatteryHistoryKeys[mBatteryHistoryKeys.length - 1]),
-            Arrays.toString(mBatteryHistoryLevels)));
+                "setBatteryHistoryMap() size=%d key=%s\nlevels=%s",
+                batteryHistoryMap.size(),
+                ConvertUtils.utcToLocalTime(mPrefContext,
+                        mBatteryHistoryKeys[mBatteryHistoryKeys.length - 1]),
+                Arrays.toString(mBatteryHistoryLevels)));
 
         // Loads item icon and label in the background.
         new LoadAllItemsInfoTask(batteryHistoryMap).execute();
@@ -313,9 +324,9 @@
 
     private void forceRefreshUi() {
         final int refreshIndex =
-            mTrapezoidIndex == BatteryChartView.SELECTED_INDEX_INVALID
-                ? BatteryChartView.SELECTED_INDEX_ALL
-                : mTrapezoidIndex;
+                mTrapezoidIndex == BatteryChartView.SELECTED_INDEX_INVALID
+                        ? BatteryChartView.SELECTED_INDEX_ALL
+                        : mTrapezoidIndex;
         if (mBatteryChartView != null) {
             mBatteryChartView.setLevels(mBatteryHistoryLevels);
             mBatteryChartView.setSelectedIndex(refreshIndex);
@@ -333,7 +344,7 @@
             return false;
         }
         Log.d(TAG, String.format("refreshUi: index=%d size=%d isForce:%b",
-            trapezoidIndex, mBatteryIndexedMap.size(), isForce));
+                trapezoidIndex, mBatteryIndexedMap.size(), isForce));
 
         mTrapezoidIndex = trapezoidIndex;
         mHandler.post(() -> {
@@ -349,7 +360,7 @@
 
     private void addAllPreferences() {
         final List<BatteryDiffEntry> entries =
-            mBatteryIndexedMap.get(Integer.valueOf(mTrapezoidIndex));
+                mBatteryIndexedMap.get(Integer.valueOf(mTrapezoidIndex));
         addFooterPreferenceIfNeeded(entries != null && !entries.isEmpty());
         if (entries == null) {
             Log.w(TAG, "cannot find BatteryDiffEntry for:" + mTrapezoidIndex);
@@ -377,7 +388,7 @@
         Collections.sort(appEntries, BatteryDiffEntry.COMPARATOR);
         Collections.sort(mSystemEntries, BatteryDiffEntry.COMPARATOR);
         Log.d(TAG, String.format("addAllPreferences() app=%d system=%d",
-            appEntries.size(), mSystemEntries.size()));
+                appEntries.size(), mSystemEntries.size()));
 
         // Adds app entries to the list if it is not empty.
         if (!appEntries.isEmpty()) {
@@ -391,7 +402,7 @@
                 mExpandDividerPreference.setIsExpanded(mIsExpanded);
             }
             mExpandDividerPreference.setOrder(
-                mAppListPrefGroup.getPreferenceCount());
+                    mAppListPrefGroup.getPreferenceCount());
             mAppListPrefGroup.addPreference(mExpandDividerPreference);
         }
         refreshExpandUi();
@@ -479,11 +490,11 @@
         Log.d(TAG, String.format("refreshCategoryTitle:%s", slotInformation));
         if (mAppListPrefGroup != null) {
             mAppListPrefGroup.setTitle(
-                getSlotInformation(/*isApp=*/ true, slotInformation));
+                    getSlotInformation(/*isApp=*/ true, slotInformation));
         }
         if (mExpandDividerPreference != null) {
             mExpandDividerPreference.setTitle(
-                getSlotInformation(/*isApp=*/ false, slotInformation));
+                    getSlotInformation(/*isApp=*/ false, slotInformation));
         }
     }
 
@@ -491,12 +502,12 @@
         // Null means we show all information without a specific time slot.
         if (slotInformation == null) {
             return isApp
-                ? mPrefContext.getString(R.string.battery_app_usage_for_past_24)
-                : mPrefContext.getString(R.string.battery_system_usage_for_past_24);
+                    ? mPrefContext.getString(R.string.battery_app_usage_for_past_24)
+                    : mPrefContext.getString(R.string.battery_system_usage_for_past_24);
         } else {
             return isApp
-                ? mPrefContext.getString(R.string.battery_app_usage_for, slotInformation)
-                : mPrefContext.getString(R.string.battery_system_usage_for ,slotInformation);
+                    ? mPrefContext.getString(R.string.battery_app_usage_for, slotInformation)
+                    : mPrefContext.getString(R.string.battery_system_usage_for, slotInformation);
         }
     }
 
@@ -505,12 +516,12 @@
             return null;
         }
         final String fromHour = ConvertUtils.utcToLocalTimeHour(mPrefContext,
-            mBatteryHistoryKeys[mTrapezoidIndex * 2], mIs24HourFormat);
+                mBatteryHistoryKeys[mTrapezoidIndex * 2], mIs24HourFormat);
         final String toHour = ConvertUtils.utcToLocalTimeHour(mPrefContext,
-            mBatteryHistoryKeys[(mTrapezoidIndex + 1) * 2], mIs24HourFormat);
+                mBatteryHistoryKeys[(mTrapezoidIndex + 1) * 2], mIs24HourFormat);
         return mIs24HourFormat
-            ? String.format("%s–%s", fromHour, toHour)
-            : String.format("%s – %s", fromHour, toHour);
+                ? String.format("%s–%s", fromHour, toHour)
+                : String.format("%s – %s", fromHour, toHour);
     }
 
     @VisibleForTesting
@@ -528,10 +539,10 @@
         // Not shows summary for some system components without usage time.
         if (totalUsageTimeInMs == 0) {
             preference.setSummary(null);
-        // Shows background summary only if we don't have foreground usage time.
+            // Shows background summary only if we don't have foreground usage time.
         } else if (foregroundUsageTimeInMs == 0 && backgroundUsageTimeInMs != 0) {
             usageTimeSummary = buildUsageTimeInfo(backgroundUsageTimeInMs, true);
-        // Shows total usage summary only if total usage time is small.
+            // Shows total usage summary only if total usage time is small.
         } else if (totalUsageTimeInMs < DateUtils.MINUTE_IN_MILLIS) {
             usageTimeSummary = buildUsageTimeInfo(totalUsageTimeInMs, false);
         } else {
@@ -539,7 +550,7 @@
             // Shows background usage time if it is larger than a minute.
             if (backgroundUsageTimeInMs > 0) {
                 usageTimeSummary +=
-                    "\n" + buildUsageTimeInfo(backgroundUsageTimeInMs, true);
+                        "\n" + buildUsageTimeInfo(backgroundUsageTimeInMs, true);
             }
         }
         preference.setSummary(usageTimeSummary);
@@ -548,17 +559,17 @@
     private String buildUsageTimeInfo(long usageTimeInMs, boolean isBackground) {
         if (usageTimeInMs < DateUtils.MINUTE_IN_MILLIS) {
             return mPrefContext.getString(
-                isBackground
-                    ? R.string.battery_usage_background_less_than_one_minute
-                    : R.string.battery_usage_total_less_than_one_minute);
+                    isBackground
+                            ? R.string.battery_usage_background_less_than_one_minute
+                            : R.string.battery_usage_total_less_than_one_minute);
         }
         final CharSequence timeSequence =
-            StringUtil.formatElapsedTime(mPrefContext, usageTimeInMs,
-                /*withSeconds=*/ false, /*collapseTimeUnit=*/ false);
+                StringUtil.formatElapsedTime(mPrefContext, usageTimeInMs,
+                        /*withSeconds=*/ false, /*collapseTimeUnit=*/ false);
         final int resourceId =
-            isBackground
-                ? R.string.battery_usage_for_background_time
-                : R.string.battery_usage_for_total_time;
+                isBackground
+                        ? R.string.battery_usage_for_background_time
+                        : R.string.battery_usage_for_total_time;
         return mPrefContext.getString(resourceId, timeSequence);
     }
 
@@ -578,7 +589,7 @@
             return;
         }
         final long latestTimestamp =
-            mBatteryHistoryKeys[mBatteryHistoryKeys.length - 1];
+                mBatteryHistoryKeys[mBatteryHistoryKeys.length - 1];
         mBatteryChartView.setLatestTimestamp(latestTimestamp);
     }
 
@@ -588,9 +599,9 @@
         }
         mIsFooterPrefAdded = true;
         mFooterPreference.setTitle(mPrefContext.getString(
-            containAppItems
-                ? R.string.battery_usage_screen_footer
-                : R.string.battery_usage_screen_footer_empty));
+                containAppItems
+                        ? R.string.battery_usage_screen_footer
+                        : R.string.battery_usage_screen_footer_empty));
         mHandler.post(() -> mPreferenceScreen.addPreference(mFooterPreference));
     }
 
@@ -623,21 +634,21 @@
     public static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) {
         final long start = System.currentTimeMillis();
         final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
-            FeatureFactory.getFactory(context)
-                .getPowerUsageFeatureProvider(context)
-                .getBatteryHistory(context);
+                FeatureFactory.getFactory(context)
+                        .getPowerUsageFeatureProvider(context)
+                        .getBatteryHistory(context);
         if (batteryHistoryMap == null || batteryHistoryMap.isEmpty()) {
             return null;
         }
         Log.d(TAG, String.format("getBatteryLast24HrData() size=%d time=&d/ms",
-            batteryHistoryMap.size(), (System.currentTimeMillis() - start)));
+                batteryHistoryMap.size(), (System.currentTimeMillis() - start)));
         final Map<Integer, List<BatteryDiffEntry>> batteryIndexedMap =
-            ConvertUtils.getIndexedUsageMap(
-                context,
-                /*timeSlotSize=*/ CHART_LEVEL_ARRAY_SIZE - 1,
-                getBatteryHistoryKeys(batteryHistoryMap),
-                batteryHistoryMap,
-                /*purgeLowPercentageAndFakeData=*/ true);
+                ConvertUtils.getIndexedUsageMap(
+                        context,
+                        /*timeSlotSize=*/ CHART_LEVEL_ARRAY_SIZE - 1,
+                        getBatteryHistoryKeys(batteryHistoryMap),
+                        batteryHistoryMap,
+                        /*purgeLowPercentageAndFakeData=*/ true);
         return batteryIndexedMap.get(BatteryChartView.SELECTED_INDEX_ALL);
     }
 
@@ -666,7 +677,7 @@
     private static long[] getBatteryHistoryKeys(
             final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
         final List<Long> batteryHistoryKeyList =
-            new ArrayList<>(batteryHistoryMap.keySet());
+                new ArrayList<>(batteryHistoryMap.keySet());
         Collections.sort(batteryHistoryKeyList);
         final long[] batteryHistoryKeys = new long[CHART_KEY_ARRAY_SIZE];
         for (int index = 0; index < CHART_KEY_ARRAY_SIZE; index++) {
@@ -695,16 +706,16 @@
             }
             final long startTime = System.currentTimeMillis();
             final Map<Integer, List<BatteryDiffEntry>> indexedUsageMap =
-                ConvertUtils.getIndexedUsageMap(
-                    mPrefContext, /*timeSlotSize=*/ CHART_LEVEL_ARRAY_SIZE - 1,
-                    mBatteryHistoryKeysCache, mBatteryHistoryMap,
-                    /*purgeLowPercentageAndFakeData=*/ true);
+                    ConvertUtils.getIndexedUsageMap(
+                            mPrefContext, /*timeSlotSize=*/ CHART_LEVEL_ARRAY_SIZE - 1,
+                            mBatteryHistoryKeysCache, mBatteryHistoryMap,
+                            /*purgeLowPercentageAndFakeData=*/ true);
             // Pre-loads each BatteryDiffEntry relative icon and label for all slots.
             for (List<BatteryDiffEntry> entries : indexedUsageMap.values()) {
                 entries.forEach(entry -> entry.loadLabelAndIcon());
             }
             Log.d(TAG, String.format("execute LoadAllItemsInfoTask in %d/ms",
-                (System.currentTimeMillis() - startTime)));
+                    (System.currentTimeMillis() - startTime)));
             return indexedUsageMap;
         }
 
diff --git a/src/com/android/settings/fuelgauge/BatteryChartView.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java
similarity index 82%
rename from src/com/android/settings/fuelgauge/BatteryChartView.java
rename to src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java
index ff61fce..427388b 100644
--- a/src/com/android/settings/fuelgauge/BatteryChartView.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java
@@ -1,22 +1,24 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
+ * 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.
+ * 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.settings.fuelgauge;
-
-import static java.lang.Math.round;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.android.settings.Utils.formatPercentage;
 
+import static java.lang.Math.round;
+
 import android.accessibilityservice.AccessibilityServiceInfo;
 import android.content.Context;
 import android.content.res.Resources;
@@ -37,8 +39,8 @@
 import android.view.accessibility.AccessibilityManager;
 import android.widget.TextView;
 
-import androidx.appcompat.widget.AppCompatImageView;
 import androidx.annotation.VisibleForTesting;
+import androidx.appcompat.widget.AppCompatImageView;
 
 import com.android.settings.R;
 import com.android.settings.overlay.FeatureFactory;
@@ -54,7 +56,7 @@
         AccessibilityManager.AccessibilityStateChangeListener {
     private static final String TAG = "BatteryChartView";
     private static final List<String> ACCESSIBILITY_SERVICE_NAMES =
-        Arrays.asList("SwitchAccessService", "TalkBackService", "JustSpeakService");
+            Arrays.asList("SwitchAccessService", "TalkBackService", "JustSpeakService");
 
     private static final int DEFAULT_TRAPEZOID_COUNT = 12;
     private static final int DEFAULT_TIMESTAMP_COUNT = 4;
@@ -68,6 +70,7 @@
 
     /** A callback listener for selected group index is updated. */
     public interface OnSelectListener {
+        /** The callback function for selected group index is updated. */
         void onSelect(int trapezoidIndex);
     }
 
@@ -79,9 +82,12 @@
     private boolean mIsSlotsClickabled;
     private String[] mPercentages = getPercentages();
 
-    @VisibleForTesting int mHoveredIndex = SELECTED_INDEX_INVALID;
-    @VisibleForTesting int mSelectedIndex = SELECTED_INDEX_INVALID;
-    @VisibleForTesting String[] mTimestamps;
+    @VisibleForTesting
+    int mHoveredIndex = SELECTED_INDEX_INVALID;
+    @VisibleForTesting
+    int mSelectedIndex = SELECTED_INDEX_INVALID;
+    @VisibleForTesting
+    String[] mTimestamps;
 
     // Colors for drawing the trapezoid shape and dividers.
     private int mTrapezoidColor;
@@ -91,10 +97,10 @@
     private int mTextPadding;
     private final Rect mIndent = new Rect();
     private final Rect[] mPercentageBounds =
-        new Rect[] {new Rect(), new Rect(), new Rect()};
+            new Rect[]{new Rect(), new Rect(), new Rect()};
     // For drawing the timestamp information.
     private final Rect[] mTimestampsBounds =
-        new Rect[] {new Rect(), new Rect(), new Rect(), new Rect()};
+            new Rect[]{new Rect(), new Rect(), new Rect(), new Rect()};
 
     @VisibleForTesting
     Handler mHandler = new Handler();
@@ -202,14 +208,15 @@
             mTimestamps = new String[DEFAULT_TIMESTAMP_COUNT];
         }
         final long timeSlotOffset =
-            DateUtils.HOUR_IN_MILLIS * (/*total 24 hours*/ 24 / TIMESTAMP_GAPS_COUNT);
+                DateUtils.HOUR_IN_MILLIS * (/*total 24 hours*/ 24 / TIMESTAMP_GAPS_COUNT);
         final boolean is24HourFormat = DateFormat.is24HourFormat(getContext());
         for (int index = 0; index < DEFAULT_TIMESTAMP_COUNT; index++) {
             mTimestamps[index] =
-                ConvertUtils.utcToLocalTimeHour(
-                    getContext(),
-                    latestTimestamp - (TIMESTAMP_GAPS_COUNT - index) * timeSlotOffset,
-                    is24HourFormat);
+                    ConvertUtils.utcToLocalTimeHour(
+                            getContext(),
+                            latestTimestamp - (TIMESTAMP_GAPS_COUNT - index)
+                                    * timeSlotOffset,
+                            is24HourFormat);
         }
         requestLayout();
     }
@@ -221,8 +228,8 @@
         if (mTextPaint != null) {
             for (int index = 0; index < mPercentages.length; index++) {
                 mTextPaint.getTextBounds(
-                    mPercentages[index], 0, mPercentages[index].length(),
-                    mPercentageBounds[index]);
+                        mPercentages[index], 0, mPercentages[index].length(),
+                        mPercentageBounds[index]);
             }
             // Updates the indent configurations.
             mIndent.top = mPercentageBounds[0].height();
@@ -232,8 +239,8 @@
                 int maxHeight = 0;
                 for (int index = 0; index < DEFAULT_TIMESTAMP_COUNT; index++) {
                     mTextPaint.getTextBounds(
-                        mTimestamps[index], 0, mTimestamps[index].length(),
-                        mTimestampsBounds[index]);
+                            mTimestamps[index], 0, mTimestamps[index].length(),
+                            mTimestampsBounds[index]);
                     maxHeight = Math.max(maxHeight, mTimestampsBounds[index].height());
                 }
                 mIndent.bottom = maxHeight + round(mTextPadding * 1.5f);
@@ -318,14 +325,14 @@
         super.onAttachedToWindow();
         updateClickableState();
         mContext.getSystemService(AccessibilityManager.class)
-            .addAccessibilityStateChangeListener(/*listener=*/ this);
+                .addAccessibilityStateChangeListener(/*listener=*/ this);
     }
 
     @Override
     public void onDetachedFromWindow() {
         super.onDetachedFromWindow();
         mContext.getSystemService(AccessibilityManager.class)
-            .removeAccessibilityStateChangeListener(/*listener=*/ this);
+                .removeAccessibilityStateChangeListener(/*listener=*/ this);
         mHandler.removeCallbacks(mUpdateClickableStateRun);
     }
 
@@ -336,16 +343,16 @@
         // We should delay it a while since accessibility manager will spend
         // some times to bind with new enabled accessibility services.
         mHandler.postDelayed(
-            mUpdateClickableStateRun, UPDATE_STATE_DELAYED_TIME);
+                mUpdateClickableStateRun, UPDATE_STATE_DELAYED_TIME);
     }
 
     private void updateClickableState() {
         final Context context = mContext;
         mIsSlotsClickabled =
-            FeatureFactory.getFactory(context)
-                    .getPowerUsageFeatureProvider(context)
-                    .isChartGraphSlotsEnabled(context)
-            && !isAccessibilityEnabled(context);
+                FeatureFactory.getFactory(context)
+                        .getPowerUsageFeatureProvider(context)
+                        .isChartGraphSlotsEnabled(context)
+                        && !isAccessibilityEnabled(context);
         Log.d(TAG, "isChartGraphSlotsEnabled:" + mIsSlotsClickabled);
         setClickable(isClickable());
         // Initializes the trapezoid curve paint for non-clickable case.
@@ -378,7 +385,7 @@
         mTrapezoidSolidColor = Utils.getColorAccentDefaultColor(context);
         mTrapezoidColor = Utils.getDisabled(context, mTrapezoidSolidColor);
         mTrapezoidHoverColor = Utils.getColorAttrDefaultColor(context,
-            com.android.internal.R.attr.colorAccentSecondaryVariant);
+                com.android.internal.R.attr.colorAccentSecondaryVariant);
         // Initializes the divider line paint.
         final Resources resources = getContext().getResources();
         mDividerWidth = resources.getDimensionPixelSize(R.dimen.chartview_divider_width);
@@ -398,8 +405,8 @@
         mTrapezoidPaint.setColor(mTrapezoidSolidColor);
         mTrapezoidPaint.setStyle(Paint.Style.FILL);
         mTrapezoidPaint.setPathEffect(
-            new CornerPathEffect(
-                resources.getDimensionPixelSize(R.dimen.chartview_trapezoid_radius)));
+                new CornerPathEffect(
+                        resources.getDimensionPixelSize(R.dimen.chartview_trapezoid_radius)));
         // Initializes for drawing text information.
         mTextPadding = resources.getDimensionPixelSize(R.dimen.chartview_text_padding);
     }
@@ -414,7 +421,7 @@
 
         // Draws the center divider line for 50% curve.
         final float availableSpace =
-            height - mDividerWidth * 2 - mTrapezoidVOffset - mDividerHeight;
+                height - mDividerWidth * 2 - mTrapezoidVOffset - mDividerHeight;
         offsetY = mIndent.top + mDividerWidth + availableSpace * .5f;
         canvas.drawLine(0, offsetY, width, offsetY, mDividerPaint);
         drawPercentage(canvas, /*index=*/ 1, offsetY);
@@ -428,10 +435,11 @@
     private void drawPercentage(Canvas canvas, int index, float offsetY) {
         if (mTextPaint != null) {
             canvas.drawText(
-                mPercentages[index],
-                getWidth() - mPercentageBounds[index].width() - mPercentageBounds[index].left,
-                offsetY + mPercentageBounds[index].height() *.5f,
-                mTextPaint);
+                    mPercentages[index],
+                    getWidth() - mPercentageBounds[index].width()
+                            - mPercentageBounds[index].left,
+                    offsetY + mPercentageBounds[index].height() * .5f,
+                    mTextPaint);
         }
     }
 
@@ -471,31 +479,32 @@
     private void drawTimestamp(Canvas canvas, float[] xOffsets) {
         // Draws the 1st timestamp info.
         canvas.drawText(
-            mTimestamps[0],
-            xOffsets[0] - mTimestampsBounds[0].left,
-            getTimestampY(0), mTextPaint);
+                mTimestamps[0],
+                xOffsets[0] - mTimestampsBounds[0].left,
+                getTimestampY(0), mTextPaint);
         final int latestIndex = DEFAULT_TIMESTAMP_COUNT - 1;
         // Draws the last timestamp info.
         canvas.drawText(
-            mTimestamps[latestIndex],
-            xOffsets[latestIndex] - mTimestampsBounds[latestIndex].width()
-                    - mTimestampsBounds[latestIndex].left,
-            getTimestampY(latestIndex), mTextPaint);
+                mTimestamps[latestIndex],
+                xOffsets[latestIndex] - mTimestampsBounds[latestIndex].width()
+                        - mTimestampsBounds[latestIndex].left,
+                getTimestampY(latestIndex), mTextPaint);
         // Draws the rest of timestamp info since it is located in the center.
         for (int index = 1; index <= DEFAULT_TIMESTAMP_COUNT - 2; index++) {
             canvas.drawText(
-                mTimestamps[index],
-                xOffsets[index] -
-                    (mTimestampsBounds[index].width() - mTimestampsBounds[index].left) * .5f,
-                getTimestampY(index), mTextPaint);
+                    mTimestamps[index],
+                    xOffsets[index]
+                            - (mTimestampsBounds[index].width() - mTimestampsBounds[index].left)
+                            * .5f,
+                    getTimestampY(index), mTextPaint);
 
         }
     }
 
     private int getTimestampY(int index) {
         return getHeight() - mTimestampsBounds[index].height()
-            + (mTimestampsBounds[index].height() + mTimestampsBounds[index].top)
-            + round(mTextPadding * 1.5f);
+                + (mTimestampsBounds[index].height() + mTimestampsBounds[index].top)
+                + round(mTextPadding * 1.5f);
     }
 
     private void drawTrapezoids(Canvas canvas) {
@@ -504,8 +513,8 @@
             return;
         }
         final float trapezoidBottom =
-            getHeight() - mIndent.bottom - mDividerHeight - mDividerWidth
-                - mTrapezoidVOffset;
+                getHeight() - mIndent.bottom - mDividerHeight - mDividerWidth
+                        - mTrapezoidVOffset;
         final float availableSpace = trapezoidBottom - mDividerWidth * .5f - mIndent.top;
         final float unitHeight = availableSpace / 100f;
         // Draws all trapezoid shapes into the canvas.
@@ -522,12 +531,12 @@
             }
             // Configures the trapezoid paint color.
             final int trapezoidColor =
-                !mIsSlotsClickabled
-                    ? mTrapezoidColor
-                    : mSelectedIndex == index || mSelectedIndex == SELECTED_INDEX_ALL
-                        ? mTrapezoidSolidColor : mTrapezoidColor;
+                    !mIsSlotsClickabled
+                            ? mTrapezoidColor
+                            : mSelectedIndex == index || mSelectedIndex == SELECTED_INDEX_ALL
+                                    ? mTrapezoidSolidColor : mTrapezoidColor;
             final boolean isHoverState =
-                mIsSlotsClickabled && mHoveredIndex == index && isValidToDraw(mHoveredIndex);
+                    mIsSlotsClickabled && mHoveredIndex == index && isValidToDraw(mHoveredIndex);
             mTrapezoidPaint.setColor(isHoverState ? mTrapezoidHoverColor : trapezoidColor);
 
             final float leftTop = round(trapezoidBottom - mLevels[index] * unitHeight);
@@ -546,7 +555,7 @@
             // Generates path for non-clickable trapezoid curve.
             if (mTrapezoidCurvePaint != null) {
                 if (trapezoidCurvePath == null) {
-                    trapezoidCurvePath= new Path();
+                    trapezoidCurvePath = new Path();
                     trapezoidCurvePath.moveTo(mTrapezoidSlots[index].mLeft, leftTop);
                 } else {
                     trapezoidCurvePath.lineTo(mTrapezoidSlots[index].mLeft, leftTop);
@@ -582,23 +591,23 @@
     }
 
     private static String[] getPercentages() {
-        return new String[] {
-            formatPercentage(/*percentage=*/ 100, /*round=*/ true),
-            formatPercentage(/*percentage=*/ 50, /*round=*/ true),
-            formatPercentage(/*percentage=*/ 0, /*round=*/ true)};
+        return new String[]{
+                formatPercentage(/*percentage=*/ 100, /*round=*/ true),
+                formatPercentage(/*percentage=*/ 50, /*round=*/ true),
+                formatPercentage(/*percentage=*/ 0, /*round=*/ true)};
     }
 
     @VisibleForTesting
     static boolean isAccessibilityEnabled(Context context) {
         final AccessibilityManager accessibilityManager =
-            context.getSystemService(AccessibilityManager.class);
+                context.getSystemService(AccessibilityManager.class);
         if (!accessibilityManager.isEnabled()) {
             return false;
         }
         final List<AccessibilityServiceInfo> serviceInfoList =
-            accessibilityManager.getEnabledAccessibilityServiceList(
-                AccessibilityServiceInfo.FEEDBACK_SPOKEN
-                    | AccessibilityServiceInfo.FEEDBACK_GENERIC);
+                accessibilityManager.getEnabledAccessibilityServiceList(
+                        AccessibilityServiceInfo.FEEDBACK_SPOKEN
+                                | AccessibilityServiceInfo.FEEDBACK_GENERIC);
         for (AccessibilityServiceInfo info : serviceInfoList) {
             for (String serviceName : ACCESSIBILITY_SERVICE_NAMES) {
                 final String serviceId = info.getId();
diff --git a/src/com/android/settings/fuelgauge/BatteryDiffEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
similarity index 71%
rename from src/com/android/settings/fuelgauge/BatteryDiffEntry.java
rename to src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
index 403f79c..d4d7a00 100644
--- a/src/com/android/settings/fuelgauge/BatteryDiffEntry.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
@@ -1,17 +1,19 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
+ * 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.
+ * 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.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
@@ -26,6 +28,7 @@
 import androidx.annotation.VisibleForTesting;
 
 import com.android.settings.R;
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settingslib.utils.StringUtil;
 
 import java.util.Comparator;
@@ -61,11 +64,16 @@
     private UserManager mUserManager;
     private String mDefaultPackageName = null;
 
-    @VisibleForTesting int mAppIconId;
-    @VisibleForTesting String mAppLabel = null;
-    @VisibleForTesting Drawable mAppIcon = null;
-    @VisibleForTesting boolean mIsLoaded = false;
-    @VisibleForTesting boolean mValidForRestriction = true;
+    @VisibleForTesting
+    int mAppIconId;
+    @VisibleForTesting
+    String mAppLabel = null;
+    @VisibleForTesting
+    Drawable mAppIcon = null;
+    @VisibleForTesting
+    boolean mIsLoaded = false;
+    @VisibleForTesting
+    boolean mValidForRestriction = true;
 
     public BatteryDiffEntry(
             Context context,
@@ -85,7 +93,7 @@
     public void setTotalConsumePower(double totalConsumePower) {
         mTotalConsumePower = totalConsumePower;
         mPercentOfTotal = totalConsumePower == 0
-            ? 0 : (mConsumePower / mTotalConsumePower) * 100.0;
+                ? 0 : (mConsumePower / mTotalConsumePower) * 100.0;
     }
 
     /** Gets the percentage of total consumed power. */
@@ -96,24 +104,30 @@
     /** Clones a new instance. */
     public BatteryDiffEntry clone() {
         return new BatteryDiffEntry(
-            this.mContext,
-            this.mForegroundUsageTimeInMs,
-            this.mBackgroundUsageTimeInMs,
-            this.mConsumePower,
-            this.mBatteryHistEntry /*same instance*/);
+                this.mContext,
+                this.mForegroundUsageTimeInMs,
+                this.mBackgroundUsageTimeInMs,
+                this.mConsumePower,
+                this.mBatteryHistEntry /*same instance*/);
     }
 
     /** Gets the app label name for this entry. */
     public String getAppLabel() {
+        if (isOtherUsers()) {
+            return mContext.getString(R.string.battery_usage_other_users);
+        }
         loadLabelAndIcon();
         // Returns default applicationn label if we cannot find it.
         return mAppLabel == null || mAppLabel.length() == 0
-            ? mBatteryHistEntry.mAppLabel
-            : mAppLabel;
+                ? mBatteryHistEntry.mAppLabel
+                : mAppLabel;
     }
 
     /** Gets the app icon {@link Drawable} for this entry. */
     public Drawable getAppIcon() {
+        if (isOtherUsers()) {
+            return mContext.getDrawable(R.drawable.ic_power_system);
+        }
         loadLabelAndIcon();
         return mAppIcon != null && mAppIcon.getConstantState() != null
                 ? mAppIcon.getConstantState().newDrawable()
@@ -129,15 +143,15 @@
     /** Gets the searching package name for UID battery type. */
     public String getPackageName() {
         final String packageName = mDefaultPackageName != null
-            ? mDefaultPackageName : mBatteryHistEntry.mPackageName;
+                ? mDefaultPackageName : mBatteryHistEntry.mPackageName;
         if (packageName == null) {
             return packageName;
         }
         // Removes potential appended process name in the PackageName.
         // From "com.opera.browser:privileged_process0" to "com.opera.browser"
-        final String[] splittedPackageNames = packageName.split(":");
-        return splittedPackageNames != null && splittedPackageNames.length > 0
-            ? splittedPackageNames[0] : packageName;
+        final String[] splitPackageNames = packageName.split(":");
+        return splitPackageNames != null && splitPackageNames.length > 0
+                ? splitPackageNames[0] : packageName;
     }
 
     /** Whether this item is valid for users to launch restriction page? */
@@ -148,6 +162,9 @@
 
     /** Whether the current BatteryDiffEntry is system component or not. */
     public boolean isSystemEntry() {
+        if (isOtherUsers()) {
+            return true;
+        }
         switch (mBatteryHistEntry.mConsumerType) {
             case ConvertUtils.CONSUMER_TYPE_USER_BATTERY:
             case ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY:
@@ -167,6 +184,11 @@
         return false;
     }
 
+    private boolean isOtherUsers() {
+        return mBatteryHistEntry.mConsumerType == ConvertUtils.CONSUMER_TYPE_UID_BATTERY
+                && mBatteryHistEntry.mUid == BatteryUtils.UID_OTHER_USERS;
+    }
+
     void loadLabelAndIcon() {
         if (mIsLoaded) {
             return;
@@ -196,20 +218,20 @@
         switch (mBatteryHistEntry.mConsumerType) {
             case ConvertUtils.CONSUMER_TYPE_USER_BATTERY:
                 final BatteryEntry.NameAndIcon nameAndIconForUser =
-                    BatteryEntry.getNameAndIconFromUserId(
-                        mContext, (int) mBatteryHistEntry.mUserId);
+                        BatteryEntry.getNameAndIconFromUserId(
+                                mContext, (int) mBatteryHistEntry.mUserId);
                 if (nameAndIconForUser != null) {
                     mAppIcon = nameAndIconForUser.mIcon;
                     mAppLabel = nameAndIconForUser.mName;
                     sResourceCache.put(
-                        getKey(),
-                        new BatteryEntry.NameAndIcon(mAppLabel, mAppIcon, /*iconId=*/ 0));
+                            getKey(),
+                            new BatteryEntry.NameAndIcon(mAppLabel, mAppIcon, /*iconId=*/ 0));
                 }
                 break;
             case ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY:
                 final BatteryEntry.NameAndIcon nameAndIconForSystem =
-                    BatteryEntry.getNameAndIconFromPowerComponent(
-                        mContext, mBatteryHistEntry.mDrainType);
+                        BatteryEntry.getNameAndIconFromPowerComponent(
+                                mContext, mBatteryHistEntry.mDrainType);
                 if (nameAndIconForSystem != null) {
                     mAppLabel = nameAndIconForSystem.mName;
                     if (nameAndIconForSystem.mIconId != 0) {
@@ -217,8 +239,8 @@
                         mAppIcon = mContext.getDrawable(nameAndIconForSystem.mIconId);
                     }
                     sResourceCache.put(
-                        getKey(),
-                        new BatteryEntry.NameAndIcon(mAppLabel, mAppIcon, mAppIconId));
+                            getKey(),
+                            new BatteryEntry.NameAndIcon(mAppLabel, mAppIcon, mAppIconId));
                 }
                 break;
             case ConvertUtils.CONSUMER_TYPE_UID_BATTERY:
@@ -231,8 +253,8 @@
                 mAppIcon = getBadgeIconForUser(mAppIcon);
                 if (mAppLabel != null || mAppIcon != null) {
                     sResourceCache.put(
-                        getKey(),
-                        new BatteryEntry.NameAndIcon(mAppLabel, mAppIcon, /*iconId=*/ 0));
+                            getKey(),
+                            new BatteryEntry.NameAndIcon(mAppLabel, mAppIcon, /*iconId=*/ 0));
                 }
                 break;
         }
@@ -251,23 +273,23 @@
         }
         final boolean isValidPackage =
                 BatteryUtils.getInstance(mContext).getPackageUid(getPackageName())
-            != BatteryUtils.UID_NULL;
+                        != BatteryUtils.UID_NULL;
         if (!isValidPackage) {
             mValidForRestriction = false;
             return;
         }
         try {
             mValidForRestriction =
-                mContext.getPackageManager().getPackageInfo(
-                    getPackageName(),
-                    PackageManager.MATCH_DISABLED_COMPONENTS
-                        | PackageManager.MATCH_ANY_USER
-                        | PackageManager.GET_SIGNATURES
-                        | PackageManager.GET_PERMISSIONS)
-                != null;
+                    mContext.getPackageManager().getPackageInfo(
+                            getPackageName(),
+                            PackageManager.MATCH_DISABLED_COMPONENTS
+                                    | PackageManager.MATCH_ANY_USER
+                                    | PackageManager.GET_SIGNATURES
+                                    | PackageManager.GET_PERMISSIONS)
+                            != null;
         } catch (Exception e) {
             Log.e(TAG, String.format("getPackageInfo() error %s for package=%s",
-                e.getCause(), getPackageName()));
+                    e.getCause(), getPackageName()));
             mValidForRestriction = false;
         }
     }
@@ -276,7 +298,7 @@
         final Locale locale = Locale.getDefault();
         if (sCurrentLocale != locale) {
             Log.d(TAG, String.format("clearCache() locale is changed from %s to %s",
-                sCurrentLocale, locale));
+                    sCurrentLocale, locale));
             sCurrentLocale = locale;
             clearCache();
         }
@@ -290,7 +312,7 @@
         if (packageName != null && packageName.length() != 0) {
             try {
                 final ApplicationInfo appInfo =
-                    packageManager.getApplicationInfo(packageName, /*no flags*/ 0);
+                        packageManager.getApplicationInfo(packageName, /*no flags*/ 0);
                 if (appInfo != null) {
                     mAppLabel = packageManager.getApplicationLabel(appInfo).toString();
                     mAppIcon = packageManager.getApplicationIcon(appInfo);
@@ -310,15 +332,15 @@
         // Loads special defined application label and icon if available.
         if (packages == null || packages.length == 0) {
             final BatteryEntry.NameAndIcon nameAndIcon =
-                BatteryEntry.getNameAndIconFromUid(mContext, mAppLabel, uid);
+                    BatteryEntry.getNameAndIconFromUid(mContext, mAppLabel, uid);
             mAppLabel = nameAndIcon.mName;
             mAppIcon = nameAndIcon.mIcon;
         }
 
         final BatteryEntry.NameAndIcon nameAndIcon =
-            BatteryEntry.loadNameAndIcon(
-                mContext, uid, /*handler=*/ null, /*batteryEntry=*/ null,
-                packageName, mAppLabel, mAppIcon);
+                BatteryEntry.loadNameAndIcon(
+                        mContext, uid, /*handler=*/ null, /*batteryEntry=*/ null,
+                        packageName, mAppLabel, mAppIcon);
         // Clears BatteryEntry internal cache since we will have another one.
         BatteryEntry.clearUidCache();
         if (nameAndIcon != null) {
@@ -328,7 +350,7 @@
             if (mDefaultPackageName != null
                     && !mDefaultPackageName.equals(nameAndIcon.mPackageName)) {
                 Log.w(TAG, String.format("found different package: %s | %s",
-                    mDefaultPackageName, nameAndIcon.mPackageName));
+                        mDefaultPackageName, nameAndIcon.mPackageName));
             }
         }
     }
@@ -336,19 +358,19 @@
     @Override
     public String toString() {
         final StringBuilder builder = new StringBuilder()
-            .append("BatteryDiffEntry{")
-            .append(String.format("\n\tname=%s restrictable=%b",
-                  mAppLabel, mValidForRestriction))
-            .append(String.format("\n\tconsume=%.2f%% %f/%f",
-                  mPercentOfTotal, mConsumePower, mTotalConsumePower))
-            .append(String.format("\n\tforeground:%s background:%s",
-                  StringUtil.formatElapsedTime(mContext, mForegroundUsageTimeInMs,
-                      /*withSeconds=*/ true, /*collapseTimeUnit=*/ false),
-                  StringUtil.formatElapsedTime(mContext, mBackgroundUsageTimeInMs,
-                      /*withSeconds=*/ true, /*collapseTimeUnit=*/ false)))
-            .append(String.format("\n\tpackage:%s|%s uid:%d userId:%d",
-                  mBatteryHistEntry.mPackageName, getPackageName(),
-                  mBatteryHistEntry.mUid, mBatteryHistEntry.mUserId));
+                .append("BatteryDiffEntry{")
+                .append(String.format("\n\tname=%s restrictable=%b",
+                        mAppLabel, mValidForRestriction))
+                .append(String.format("\n\tconsume=%.2f%% %f/%f",
+                        mPercentOfTotal, mConsumePower, mTotalConsumePower))
+                .append(String.format("\n\tforeground:%s background:%s",
+                        StringUtil.formatElapsedTime(mContext, mForegroundUsageTimeInMs,
+                                /*withSeconds=*/ true, /*collapseTimeUnit=*/ false),
+                        StringUtil.formatElapsedTime(mContext, mBackgroundUsageTimeInMs,
+                                /*withSeconds=*/ true, /*collapseTimeUnit=*/ false)))
+                .append(String.format("\n\tpackage:%s|%s uid:%d userId:%d",
+                        mBatteryHistEntry.mPackageName, getPackageName(),
+                        mBatteryHistEntry.mUid, mBatteryHistEntry.mUserId));
         return builder.toString();
     }
 
@@ -361,7 +383,7 @@
     private Drawable getBadgeIconForUser(Drawable icon) {
         final int userId = UserHandle.getUserId((int) mBatteryHistEntry.mUid);
         return userId == UserHandle.USER_OWNER ? icon :
-            mUserManager.getBadgedIconForUser(icon, new UserHandle(userId));
+                mUserManager.getBadgedIconForUser(icon, new UserHandle(userId));
     }
 
     private static boolean isSystemUid(int uid) {
diff --git a/src/com/android/settings/fuelgauge/BatteryEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
similarity index 92%
rename from src/com/android/settings/fuelgauge/BatteryEntry.java
rename to src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
index 9dcbd05..24d6dad 100644
--- a/src/com/android/settings/fuelgauge/BatteryEntry.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import android.app.AppGlobals;
 import android.content.Context;
@@ -36,9 +36,8 @@
 import android.util.DebugUtils;
 import android.util.Log;
 
-import androidx.annotation.NonNull;
-
 import com.android.settings.R;
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settingslib.Utils;
 
 import java.util.ArrayList;
@@ -52,6 +51,7 @@
  */
 public class BatteryEntry {
 
+    /** The app name and icon in app list. */
     public static final class NameAndIcon {
         public final String mName;
         public final String mPackageName;
@@ -84,10 +84,10 @@
 
     static Locale sCurrentLocale = null;
 
-    static private class NameAndIconLoader extends Thread {
+    private static class NameAndIconLoader extends Thread {
         private boolean mAbort = false;
 
-        public NameAndIconLoader() {
+        NameAndIconLoader() {
             super("BatteryUsage Icon Loader");
         }
 
@@ -109,9 +109,9 @@
                     be = sRequestQueue.remove(0);
                 }
                 final NameAndIcon nameAndIcon =
-                    BatteryEntry.loadNameAndIcon(
-                        be.mContext, be.getUid(), sHandler, be,
-                        be.mDefaultPackageName, be.mName, be.mIcon);
+                        BatteryEntry.loadNameAndIcon(
+                                be.mContext, be.getUid(), sHandler, be,
+                                be.mDefaultPackageName, be.mName, be.mIcon);
                 if (nameAndIcon != null) {
                     be.mIcon = nameAndIcon.mIcon;
                     be.mName = nameAndIcon.mName;
@@ -121,35 +121,38 @@
         }
     }
 
-    private static NameAndIconLoader mRequestThread;
+    private static NameAndIconLoader sRequestThread;
 
+    /** Starts the request queue. */
     public static void startRequestQueue() {
         if (sHandler != null) {
             synchronized (sRequestQueue) {
                 if (!sRequestQueue.isEmpty()) {
-                    if (mRequestThread != null) {
-                        mRequestThread.abort();
+                    if (sRequestThread != null) {
+                        sRequestThread.abort();
                     }
-                    mRequestThread = new NameAndIconLoader();
-                    mRequestThread.setPriority(Thread.MIN_PRIORITY);
-                    mRequestThread.start();
+                    sRequestThread = new NameAndIconLoader();
+                    sRequestThread.setPriority(Thread.MIN_PRIORITY);
+                    sRequestThread.start();
                     sRequestQueue.notify();
                 }
             }
         }
     }
 
+    /** Stops the request queue. */
     public static void stopRequestQueue() {
         synchronized (sRequestQueue) {
-            if (mRequestThread != null) {
-                mRequestThread.abort();
-                mRequestThread = null;
+            if (sRequestThread != null) {
+                sRequestThread.abort();
+                sRequestThread = null;
                 sRequestQueue.clear();
                 sHandler = null;
             }
         }
     }
 
+    /** Clears the UID cache. */
     public static void clearUidCache() {
         sUidCache.clear();
     }
@@ -252,14 +255,14 @@
         mIsHidden = false;
         mPowerComponentId = powerComponentId;
         mConsumedPower =
-            powerComponentId == BatteryConsumer.POWER_COMPONENT_SCREEN
-                ? devicePowerMah
-                : devicePowerMah - appsPowerMah;
+                powerComponentId == BatteryConsumer.POWER_COMPONENT_SCREEN
+                        ? devicePowerMah
+                        : devicePowerMah - appsPowerMah;
         mUsageDurationMs = usageDurationMs;
         mConsumerType = ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY;
 
         final NameAndIcon nameAndIcon =
-            getNameAndIconFromPowerComponent(context, powerComponentId);
+                getNameAndIconFromPowerComponent(context, powerComponentId);
         mIconId = nameAndIcon.mIconId;
         mName = nameAndIcon.mName;
         if (mIconId != 0) {
@@ -280,9 +283,9 @@
         mIcon = context.getDrawable(mIconId);
         mName = powerComponentName;
         mConsumedPower =
-            powerComponentId == BatteryConsumer.POWER_COMPONENT_SCREEN
-                ? devicePowerMah
-                : devicePowerMah - appsPowerMah;
+                powerComponentId == BatteryConsumer.POWER_COMPONENT_SCREEN
+                        ? devicePowerMah
+                        : devicePowerMah - appsPowerMah;
         mConsumerType = ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY;
     }
 
@@ -354,7 +357,7 @@
 
         final PackageManager pm = context.getPackageManager();
         final String[] packages = isSystemUid(uid)
-                ? new String[] {PACKAGE_SYSTEM} : pm.getPackagesForUid(uid);
+                ? new String[]{PACKAGE_SYSTEM} : pm.getPackagesForUid(uid);
         if (packages != null) {
             final String[] packageLabels = new String[packages.length];
             System.arraycopy(packages, 0, packageLabels, 0, packages.length);
@@ -552,8 +555,8 @@
             name = context.getResources().getString(R.string.process_network_tethering);
         } else if ("mediaserver".equals(name)) {
             name = context.getResources().getString(R.string.process_mediaserver_label);
-        } else if ("dex2oat".equals(name) || "dex2oat32".equals(name) ||
-                "dex2oat64".equals(name)) {
+        } else if ("dex2oat".equals(name) || "dex2oat32".equals(name)
+                || "dex2oat64".equals(name)) {
             name = context.getResources().getString(R.string.process_dex2oat_label);
         }
         return new NameAndIcon(name, icon, 0 /* iconId */);
@@ -612,7 +615,8 @@
         return new NameAndIcon(name, null /* icon */, iconId);
     }
 
-    static boolean isSystemUid(int uid) {
+    /** Whether the uid is system uid. */
+    public static boolean isSystemUid(int uid) {
         return uid == Process.SYSTEM_UID;
     }
 }
diff --git a/src/com/android/settings/fuelgauge/BatteryHistEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntry.java
similarity index 78%
rename from src/com/android/settings/fuelgauge/BatteryHistEntry.java
rename to src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntry.java
index 45f9e9f..b88b2f6 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistEntry.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntry.java
@@ -1,17 +1,19 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
+ * 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.
+ * 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.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import android.content.ContentValues;
 import android.database.Cursor;
@@ -117,14 +119,14 @@
     }
 
     private BatteryHistEntry(
-          BatteryHistEntry fromEntry,
-          long bootTimestamp,
-          long timestamp,
-          double totalPower,
-          double consumePower,
-          long foregroundUsageTimeInMs,
-          long backgroundUsageTimeInMs,
-          int batteryLevel) {
+            BatteryHistEntry fromEntry,
+            long bootTimestamp,
+            long timestamp,
+            double totalPower,
+            double consumePower,
+            long foregroundUsageTimeInMs,
+            long backgroundUsageTimeInMs,
+            int batteryLevel) {
         mUid = fromEntry.mUid;
         mUserId = fromEntry.mUserId;
         mAppLabel = fromEntry.mAppLabel;
@@ -186,28 +188,28 @@
     @Override
     public String toString() {
         final String recordAtDateTime =
-            ConvertUtils.utcToLocalTime(/*context=*/ null, mTimestamp);
+                ConvertUtils.utcToLocalTime(/*context=*/ null, mTimestamp);
         final StringBuilder builder = new StringBuilder()
-            .append("\nBatteryHistEntry{")
-            .append(String.format("\n\tpackage=%s|label=%s|uid=%d|userId=%d|isHidden=%b",
-                  mPackageName, mAppLabel, mUid, mUserId, mIsHidden))
-            .append(String.format("\n\ttimestamp=%s|zoneId=%s|bootTimestamp=%d",
-                  recordAtDateTime, mZoneId, Duration.ofMillis(mBootTimestamp).getSeconds()))
-            .append(String.format("\n\tusage=%f|total=%f|consume=%f|elapsedTime=%d|%d",
-                  mPercentOfTotal, mTotalPower, mConsumePower,
-                  Duration.ofMillis(mForegroundUsageTimeInMs).getSeconds(),
-                  Duration.ofMillis(mBackgroundUsageTimeInMs).getSeconds()))
-            .append(String.format("\n\tdrainType=%d|consumerType=%d",
-                  mDrainType, mConsumerType))
-            .append(String.format("\n\tbattery=%d|status=%d|health=%d\n}",
-                  mBatteryLevel, mBatteryStatus, mBatteryHealth));
+                .append("\nBatteryHistEntry{")
+                .append(String.format("\n\tpackage=%s|label=%s|uid=%d|userId=%d|isHidden=%b",
+                        mPackageName, mAppLabel, mUid, mUserId, mIsHidden))
+                .append(String.format("\n\ttimestamp=%s|zoneId=%s|bootTimestamp=%d",
+                        recordAtDateTime, mZoneId, Duration.ofMillis(mBootTimestamp).getSeconds()))
+                .append(String.format("\n\tusage=%f|total=%f|consume=%f|elapsedTime=%d|%d",
+                        mPercentOfTotal, mTotalPower, mConsumePower,
+                        Duration.ofMillis(mForegroundUsageTimeInMs).getSeconds(),
+                        Duration.ofMillis(mBackgroundUsageTimeInMs).getSeconds()))
+                .append(String.format("\n\tdrainType=%d|consumerType=%d",
+                        mDrainType, mConsumerType))
+                .append(String.format("\n\tbattery=%d|status=%d|health=%d\n}",
+                        mBatteryLevel, mBatteryStatus, mBatteryHealth));
         return builder.toString();
     }
 
     private int getInteger(ContentValues values, String key) {
         if (values != null && values.containsKey(key)) {
             return values.getAsInteger(key);
-        };
+        }
         mIsValidEntry = false;
         return 0;
     }
@@ -298,21 +300,21 @@
             BatteryHistEntry lowerHistEntry,
             BatteryHistEntry upperHistEntry) {
         final double totalPower = interpolate(
-            lowerHistEntry == null ? 0 : lowerHistEntry.mTotalPower,
-            upperHistEntry.mTotalPower,
-            ratio);
+                lowerHistEntry == null ? 0 : lowerHistEntry.mTotalPower,
+                upperHistEntry.mTotalPower,
+                ratio);
         final double consumePower = interpolate(
-            lowerHistEntry == null ? 0 : lowerHistEntry.mConsumePower,
-            upperHistEntry.mConsumePower,
-            ratio);
+                lowerHistEntry == null ? 0 : lowerHistEntry.mConsumePower,
+                upperHistEntry.mConsumePower,
+                ratio);
         final double foregroundUsageTimeInMs = interpolate(
-            lowerHistEntry == null ? 0 : lowerHistEntry.mForegroundUsageTimeInMs,
-            upperHistEntry.mForegroundUsageTimeInMs,
-            ratio);
+                lowerHistEntry == null ? 0 : lowerHistEntry.mForegroundUsageTimeInMs,
+                upperHistEntry.mForegroundUsageTimeInMs,
+                ratio);
         final double backgroundUsageTimeInMs = interpolate(
-            lowerHistEntry == null ? 0 : lowerHistEntry.mBackgroundUsageTimeInMs,
-            upperHistEntry.mBackgroundUsageTimeInMs,
-            ratio);
+                lowerHistEntry == null ? 0 : lowerHistEntry.mBackgroundUsageTimeInMs,
+                upperHistEntry.mBackgroundUsageTimeInMs,
+                ratio);
         // Checks whether there is any abnoaml cases!
         if (upperHistEntry.mConsumePower < consumePower
                 || upperHistEntry.mForegroundUsageTimeInMs < foregroundUsageTimeInMs
@@ -324,22 +326,22 @@
             }
         }
         final double batteryLevel =
-            lowerHistEntry == null
-                ? upperHistEntry.mBatteryLevel
-                : interpolate(
-                    lowerHistEntry.mBatteryLevel,
-                    upperHistEntry.mBatteryLevel,
-                    ratio);
+                lowerHistEntry == null
+                        ? upperHistEntry.mBatteryLevel
+                        : interpolate(
+                                lowerHistEntry.mBatteryLevel,
+                                upperHistEntry.mBatteryLevel,
+                                ratio);
         return new BatteryHistEntry(
-            upperHistEntry,
-            /*bootTimestamp=*/ upperHistEntry.mBootTimestamp
+                upperHistEntry,
+                /*bootTimestamp=*/ upperHistEntry.mBootTimestamp
                 - (upperTimestamp - slotTimestamp),
-            /*timestamp=*/ slotTimestamp,
-            totalPower,
-            consumePower,
-            Math.round(foregroundUsageTimeInMs),
-            Math.round(backgroundUsageTimeInMs),
-            (int) Math.round(batteryLevel));
+                /*timestamp=*/ slotTimestamp,
+                totalPower,
+                consumePower,
+                Math.round(foregroundUsageTimeInMs),
+                Math.round(backgroundUsageTimeInMs),
+                (int) Math.round(batteryLevel));
     }
 
     private static double interpolate(double v1, double v2, double ratio) {
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryLoader.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryLoader.java
similarity index 84%
rename from src/com/android/settings/fuelgauge/BatteryHistoryLoader.java
rename to src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryLoader.java
index ddf3bf4..34606a5 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistoryLoader.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryLoader.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,10 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import android.content.Context;
 
+import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.utils.AsyncLoaderCompat;
 
@@ -41,7 +42,7 @@
     @Override
     public Map<Long, Map<String, BatteryHistEntry>> loadInBackground() {
         final PowerUsageFeatureProvider powerUsageFeatureProvider =
-            FeatureFactory.getFactory(mContext).getPowerUsageFeatureProvider(mContext);
+                FeatureFactory.getFactory(mContext).getPowerUsageFeatureProvider(mContext);
         return powerUsageFeatureProvider.getBatteryHistory(mContext);
     }
 }
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreference.java
similarity index 84%
rename from src/com/android/settings/fuelgauge/BatteryHistoryPreference.java
rename to src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreference.java
index b2818bf..e125d17 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreference.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import android.content.Context;
 import android.os.BatteryUsageStats;
@@ -29,6 +29,8 @@
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settings.R;
+import com.android.settings.fuelgauge.BatteryInfo;
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.widget.UsageView;
 
@@ -38,8 +40,10 @@
 public class BatteryHistoryPreference extends Preference {
     private static final String TAG = "BatteryHistoryPreference";
 
-    @VisibleForTesting boolean mHideSummary;
-    @VisibleForTesting BatteryInfo mBatteryInfo;
+    @VisibleForTesting
+    boolean mHideSummary;
+    @VisibleForTesting
+    BatteryInfo mBatteryInfo;
 
     private boolean mIsChartGraphEnabled;
 
@@ -51,16 +55,17 @@
     public BatteryHistoryPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
         mIsChartGraphEnabled =
-            FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context)
-                   .isChartGraphEnabled(context);
+                FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context)
+                        .isChartGraphEnabled(context);
         Log.i(TAG, "isChartGraphEnabled: " + mIsChartGraphEnabled);
         setLayoutResource(
-            mIsChartGraphEnabled
-                ? R.layout.battery_chart_graph
-                : R.layout.battery_usage_graph);
+                mIsChartGraphEnabled
+                        ? R.layout.battery_chart_graph
+                        : R.layout.battery_usage_graph);
         setSelectable(false);
     }
 
+    /** Sets the text of bottom summary. */
     public void setBottomSummary(CharSequence text) {
         mSummaryContent = text;
         if (mSummaryView != null) {
@@ -70,6 +75,7 @@
         mHideSummary = false;
     }
 
+    /** Hides the bottom summary. */
     public void hideBottomSummary() {
         if (mSummaryView != null) {
             mSummaryView.setVisibility(View.GONE);
@@ -101,7 +107,7 @@
         if (mIsChartGraphEnabled) {
             mBatteryChartView = (BatteryChartView) view.findViewById(R.id.battery_chart);
             mBatteryChartView.setCompanionTextView(
-                (TextView) view.findViewById(R.id.companion_text));
+                    (TextView) view.findViewById(R.id.companion_text));
             if (mChartPreferenceController != null) {
                 mChartPreferenceController.setBatteryChartView(mBatteryChartView);
             }
diff --git a/src/com/android/settings/fuelgauge/BatteryUsageStatsLoader.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoader.java
similarity index 94%
rename from src/com/android/settings/fuelgauge/BatteryUsageStatsLoader.java
rename to src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoader.java
index 65f2ddb..d61b276 100644
--- a/src/com/android/settings/fuelgauge/BatteryUsageStatsLoader.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoader.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2020 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import android.content.Context;
 import android.os.BatteryStatsManager;
diff --git a/src/com/android/settings/fuelgauge/ConvertUtils.java b/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java
similarity index 66%
rename from src/com/android/settings/fuelgauge/ConvertUtils.java
rename to src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java
index 696147b..168fe0f 100644
--- a/src/com/android/settings/fuelgauge/ConvertUtils.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java
@@ -1,17 +1,19 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
+ * 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.
+ * 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.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import android.annotation.IntDef;
 import android.content.ContentValues;
@@ -19,6 +21,7 @@
 import android.os.BatteryUsageStats;
 import android.os.LocaleList;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.text.format.DateFormat;
 import android.text.format.DateUtils;
 import android.util.ArraySet;
@@ -26,6 +29,8 @@
 
 import androidx.annotation.VisibleForTesting;
 
+import com.android.settings.Utils;
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settings.overlay.FeatureFactory;
 
 import java.lang.annotation.Retention;
@@ -46,7 +51,7 @@
     private static final String TAG = "ConvertUtils";
     private static final Map<String, BatteryHistEntry> EMPTY_BATTERY_MAP = new HashMap<>();
     private static final BatteryHistEntry EMPTY_BATTERY_HIST_ENTRY =
-        new BatteryHistEntry(new ContentValues());
+            new BatteryHistEntry(new ContentValues());
     // Maximum total time value for each slot cumulative data at most 2 hours.
     private static final float TOTAL_TIME_THRESHOLD = DateUtils.HOUR_IN_MILLIS * 2;
 
@@ -64,21 +69,24 @@
     public static final String FAKE_PACKAGE_NAME = "fake_package";
 
     @IntDef(prefix = {"CONSUMER_TYPE"}, value = {
-        CONSUMER_TYPE_UNKNOWN,
-        CONSUMER_TYPE_UID_BATTERY,
-        CONSUMER_TYPE_USER_BATTERY,
-        CONSUMER_TYPE_SYSTEM_BATTERY,
+            CONSUMER_TYPE_UNKNOWN,
+            CONSUMER_TYPE_UID_BATTERY,
+            CONSUMER_TYPE_USER_BATTERY,
+            CONSUMER_TYPE_SYSTEM_BATTERY,
     })
     @Retention(RetentionPolicy.SOURCE)
-    public static @interface ConsumerType {}
+    public static @interface ConsumerType {
+    }
 
     public static final int CONSUMER_TYPE_UNKNOWN = 0;
     public static final int CONSUMER_TYPE_UID_BATTERY = 1;
     public static final int CONSUMER_TYPE_USER_BATTERY = 2;
     public static final int CONSUMER_TYPE_SYSTEM_BATTERY = 3;
 
-    private ConvertUtils() {}
+    private ConvertUtils() {
+    }
 
+    /** Converts to content values */
     public static ContentValues convert(
             BatteryEntry entry,
             BatteryUsageStats batteryUsageStats,
@@ -91,25 +99,25 @@
         if (entry != null && batteryUsageStats != null) {
             values.put(BatteryHistEntry.KEY_UID, Long.valueOf(entry.getUid()));
             values.put(BatteryHistEntry.KEY_USER_ID,
-                Long.valueOf(UserHandle.getUserId(entry.getUid())));
+                    Long.valueOf(UserHandle.getUserId(entry.getUid())));
             values.put(BatteryHistEntry.KEY_APP_LABEL, entry.getLabel());
             values.put(BatteryHistEntry.KEY_PACKAGE_NAME,
-                entry.getDefaultPackageName());
+                    entry.getDefaultPackageName());
             values.put(BatteryHistEntry.KEY_IS_HIDDEN, Boolean.valueOf(entry.isHidden()));
             values.put(BatteryHistEntry.KEY_TOTAL_POWER,
-                Double.valueOf(batteryUsageStats.getConsumedPower()));
+                    Double.valueOf(batteryUsageStats.getConsumedPower()));
             values.put(BatteryHistEntry.KEY_CONSUME_POWER,
-                Double.valueOf(entry.getConsumedPower()));
+                    Double.valueOf(entry.getConsumedPower()));
             values.put(BatteryHistEntry.KEY_PERCENT_OF_TOTAL,
-                Double.valueOf(entry.mPercent));
+                    Double.valueOf(entry.mPercent));
             values.put(BatteryHistEntry.KEY_FOREGROUND_USAGE_TIME,
-                Long.valueOf(entry.getTimeInForegroundMs()));
+                    Long.valueOf(entry.getTimeInForegroundMs()));
             values.put(BatteryHistEntry.KEY_BACKGROUND_USAGE_TIME,
-                Long.valueOf(entry.getTimeInBackgroundMs()));
+                    Long.valueOf(entry.getTimeInBackgroundMs()));
             values.put(BatteryHistEntry.KEY_DRAIN_TYPE,
-                Integer.valueOf(entry.getPowerComponentId()));
+                    Integer.valueOf(entry.getPowerComponentId()));
             values.put(BatteryHistEntry.KEY_CONSUMER_TYPE,
-                Integer.valueOf(entry.getConsumerType()));
+                    Integer.valueOf(entry.getConsumerType()));
         } else {
             values.put(BatteryHistEntry.KEY_PACKAGE_NAME, FAKE_PACKAGE_NAME);
         }
@@ -126,7 +134,7 @@
     public static String utcToLocalTime(Context context, long timestamp) {
         final Locale locale = getLocale(context);
         final String pattern =
-            DateFormat.getBestDateTimePattern(locale, "MMM dd,yyyy HH:mm:ss");
+                DateFormat.getBestDateTimePattern(locale, "MMM dd,yyyy HH:mm:ss");
         return DateFormat.format(pattern, timestamp).toString();
     }
 
@@ -159,18 +167,18 @@
         final int timestampStride = 2;
         for (int index = 0; index < timeSlotSize; index++) {
             final Long currentTimestamp =
-                Long.valueOf(batteryHistoryKeys[index * timestampStride]);
+                    Long.valueOf(batteryHistoryKeys[index * timestampStride]);
             final Long nextTimestamp =
-                Long.valueOf(batteryHistoryKeys[index * timestampStride + 1]);
+                    Long.valueOf(batteryHistoryKeys[index * timestampStride + 1]);
             final Long nextTwoTimestamp =
-                Long.valueOf(batteryHistoryKeys[index * timestampStride + 2]);
+                    Long.valueOf(batteryHistoryKeys[index * timestampStride + 2]);
             // Fetches BatteryHistEntry data from corresponding time slot.
             final Map<String, BatteryHistEntry> currentBatteryHistMap =
-                batteryHistoryMap.getOrDefault(currentTimestamp, EMPTY_BATTERY_MAP);
+                    batteryHistoryMap.getOrDefault(currentTimestamp, EMPTY_BATTERY_MAP);
             final Map<String, BatteryHistEntry> nextBatteryHistMap =
-                batteryHistoryMap.getOrDefault(nextTimestamp, EMPTY_BATTERY_MAP);
+                    batteryHistoryMap.getOrDefault(nextTimestamp, EMPTY_BATTERY_MAP);
             final Map<String, BatteryHistEntry> nextTwoBatteryHistMap =
-                batteryHistoryMap.getOrDefault(nextTwoTimestamp, EMPTY_BATTERY_MAP);
+                    batteryHistoryMap.getOrDefault(nextTwoTimestamp, EMPTY_BATTERY_MAP);
             // We should not get the empty list since we have at least one fake data to record
             // the battery level and status in each time slot, the empty list is used to
             // represent there is no enough data to apply interpolation arithmetic.
@@ -195,27 +203,27 @@
             // Calculates all packages diff usage data in a specific time slot.
             for (String key : allBatteryHistEntryKeys) {
                 final BatteryHistEntry currentEntry =
-                    currentBatteryHistMap.getOrDefault(key, EMPTY_BATTERY_HIST_ENTRY);
+                        currentBatteryHistMap.getOrDefault(key, EMPTY_BATTERY_HIST_ENTRY);
                 final BatteryHistEntry nextEntry =
-                    nextBatteryHistMap.getOrDefault(key, EMPTY_BATTERY_HIST_ENTRY);
+                        nextBatteryHistMap.getOrDefault(key, EMPTY_BATTERY_HIST_ENTRY);
                 final BatteryHistEntry nextTwoEntry =
-                    nextTwoBatteryHistMap.getOrDefault(key, EMPTY_BATTERY_HIST_ENTRY);
+                        nextTwoBatteryHistMap.getOrDefault(key, EMPTY_BATTERY_HIST_ENTRY);
                 // Cumulative values is a specific time slot for a specific app.
                 long foregroundUsageTimeInMs =
-                    getDiffValue(
-                        currentEntry.mForegroundUsageTimeInMs,
-                        nextEntry.mForegroundUsageTimeInMs,
-                        nextTwoEntry.mForegroundUsageTimeInMs);
+                        getDiffValue(
+                                currentEntry.mForegroundUsageTimeInMs,
+                                nextEntry.mForegroundUsageTimeInMs,
+                                nextTwoEntry.mForegroundUsageTimeInMs);
                 long backgroundUsageTimeInMs =
-                    getDiffValue(
-                        currentEntry.mBackgroundUsageTimeInMs,
-                        nextEntry.mBackgroundUsageTimeInMs,
-                        nextTwoEntry.mBackgroundUsageTimeInMs);
+                        getDiffValue(
+                                currentEntry.mBackgroundUsageTimeInMs,
+                                nextEntry.mBackgroundUsageTimeInMs,
+                                nextTwoEntry.mBackgroundUsageTimeInMs);
                 double consumePower =
-                    getDiffValue(
-                        currentEntry.mConsumePower,
-                        nextEntry.mConsumePower,
-                        nextTwoEntry.mConsumePower);
+                        getDiffValue(
+                                currentEntry.mConsumePower,
+                                nextEntry.mConsumePower,
+                                nextTwoEntry.mConsumePower);
                 // Excludes entry since we don't have enough data to calculate.
                 if (foregroundUsageTimeInMs == 0
                         && backgroundUsageTimeInMs == 0
@@ -223,14 +231,14 @@
                     continue;
                 }
                 final BatteryHistEntry selectedBatteryEntry =
-                    selectBatteryHistEntry(currentEntry, nextEntry, nextTwoEntry);
+                        selectBatteryHistEntry(currentEntry, nextEntry, nextTwoEntry);
                 if (selectedBatteryEntry == null) {
                     continue;
                 }
                 // Forces refine the cumulative value since it may introduce deviation
                 // error since we will apply the interpolation arithmetic.
                 final float totalUsageTimeInMs =
-                    foregroundUsageTimeInMs + backgroundUsageTimeInMs;
+                        foregroundUsageTimeInMs + backgroundUsageTimeInMs;
                 if (totalUsageTimeInMs > TOTAL_TIME_THRESHOLD) {
                     final float ratio = TOTAL_TIME_THRESHOLD / totalUsageTimeInMs;
                     if (DEBUG) {
@@ -240,19 +248,19 @@
                                 currentEntry));
                     }
                     foregroundUsageTimeInMs =
-                        Math.round(foregroundUsageTimeInMs * ratio);
+                            Math.round(foregroundUsageTimeInMs * ratio);
                     backgroundUsageTimeInMs =
-                        Math.round(backgroundUsageTimeInMs * ratio);
+                            Math.round(backgroundUsageTimeInMs * ratio);
                     consumePower = consumePower * ratio;
                 }
                 totalConsumePower += consumePower;
                 batteryDiffEntryList.add(
-                    new BatteryDiffEntry(
-                        context,
-                        foregroundUsageTimeInMs,
-                        backgroundUsageTimeInMs,
-                        consumePower,
-                        selectedBatteryEntry));
+                        new BatteryDiffEntry(
+                                context,
+                                foregroundUsageTimeInMs,
+                                backgroundUsageTimeInMs,
+                                consumePower,
+                                selectedBatteryEntry));
             }
             // Sets total consume power data into all BatteryDiffEntry in the same slot.
             for (BatteryDiffEntry diffEntry : batteryDiffEntryList) {
@@ -260,17 +268,55 @@
             }
         }
         insert24HoursData(BatteryChartView.SELECTED_INDEX_ALL, resultMap);
+        resolveMultiUsersData(context, resultMap);
         if (purgeLowPercentageAndFakeData) {
             purgeLowPercentageAndFakeData(context, resultMap);
         }
         return resultMap;
     }
 
+    @VisibleForTesting
+    static void resolveMultiUsersData(
+            final Context context,
+            final Map<Integer, List<BatteryDiffEntry>> indexedUsageMap) {
+        final int currentUserId = context.getUserId();
+        final UserHandle userHandle =
+                Utils.getManagedProfile(context.getSystemService(UserManager.class));
+        final int workProfileUserId =
+                userHandle != null ? userHandle.getIdentifier() : Integer.MIN_VALUE;
+        // Loops for all BatteryDiffEntry in the different slots.
+        for (List<BatteryDiffEntry> entryList : indexedUsageMap.values()) {
+            double consumePowerFromOtherUsers = 0f;
+            double consumePercentageFromOtherUsers = 0f;
+            final Iterator<BatteryDiffEntry> iterator = entryList.iterator();
+            while (iterator.hasNext()) {
+                final BatteryDiffEntry entry = iterator.next();
+                final BatteryHistEntry batteryHistEntry = entry.mBatteryHistEntry;
+                if (batteryHistEntry.mConsumerType != CONSUMER_TYPE_UID_BATTERY) {
+                    continue;
+                }
+                // Whether the BatteryHistEntry represents the current user data?
+                if (batteryHistEntry.mUserId == currentUserId
+                        || batteryHistEntry.mUserId == workProfileUserId) {
+                    continue;
+                }
+                // Removes and aggregates non-current users data from the list.
+                iterator.remove();
+                consumePowerFromOtherUsers += entry.mConsumePower;
+                consumePercentageFromOtherUsers += entry.getPercentOfTotal();
+            }
+            if (consumePercentageFromOtherUsers != 0) {
+                entryList.add(createOtherUsersEntry(context, consumePowerFromOtherUsers,
+                        consumePercentageFromOtherUsers));
+            }
+        }
+    }
+
     private static void insert24HoursData(
             final int desiredIndex,
             final Map<Integer, List<BatteryDiffEntry>> indexedUsageMap) {
         final Map<String, BatteryDiffEntry> resultMap = new HashMap<>();
-        double totalConsumePower = 0.0;
+        double totalConsumePower = 0f;
         // Loops for all BatteryDiffEntry and aggregate them together.
         for (List<BatteryDiffEntry> entryList : indexedUsageMap.values()) {
             for (BatteryDiffEntry entry : entryList) {
@@ -282,9 +328,9 @@
                 } else {
                     // Sums up some fields data into the existing one.
                     oldBatteryDiffEntry.mForegroundUsageTimeInMs +=
-                        entry.mForegroundUsageTimeInMs;
+                            entry.mForegroundUsageTimeInMs;
                     oldBatteryDiffEntry.mBackgroundUsageTimeInMs +=
-                        entry.mBackgroundUsageTimeInMs;
+                            entry.mBackgroundUsageTimeInMs;
                     oldBatteryDiffEntry.mConsumePower += entry.mConsumePower;
                 }
                 totalConsumePower += entry.mConsumePower;
@@ -318,7 +364,7 @@
                 if (packageName != null
                         && !backgroundUsageTimeHideList.isEmpty()
                         && backgroundUsageTimeHideList.contains(packageName)) {
-                  entry.mBackgroundUsageTimeInMs = 0;
+                    entry.mBackgroundUsageTimeInMs = 0;
                 }
             }
         }
@@ -342,7 +388,7 @@
             return entry2;
         } else {
             return entry3 != null && entry3 != EMPTY_BATTERY_HIST_ENTRY
-                ? entry3 : null;
+                    ? entry3 : null;
         }
     }
 
@@ -352,8 +398,26 @@
             return Locale.getDefault();
         }
         final LocaleList locales =
-            context.getResources().getConfiguration().getLocales();
+                context.getResources().getConfiguration().getLocales();
         return locales != null && !locales.isEmpty() ? locales.get(0)
-            : Locale.getDefault();
+                : Locale.getDefault();
+    }
+
+    private static BatteryDiffEntry createOtherUsersEntry(
+            Context context, double consumePower, double consumePercentage) {
+        final ContentValues values = new ContentValues();
+        values.put(BatteryHistEntry.KEY_UID, BatteryUtils.UID_OTHER_USERS);
+        values.put(BatteryHistEntry.KEY_USER_ID, BatteryUtils.UID_OTHER_USERS);
+        values.put(BatteryHistEntry.KEY_CONSUMER_TYPE, CONSUMER_TYPE_UID_BATTERY);
+        // We will show the percentage for the "other users" item only, the aggregated
+        // running time information is useless for users to identify individual apps.
+        final BatteryDiffEntry batteryDiffEntry = new BatteryDiffEntry(
+                context,
+                /*foregroundUsageTimeInMs=*/ 0,
+                /*backgroundUsageTimeInMs=*/ 0,
+                consumePower,
+                new BatteryHistEntry(values));
+        batteryDiffEntry.setTotalConsumePower(100 * consumePower / consumePercentage);
+        return batteryDiffEntry;
     }
 }
diff --git a/src/com/android/settings/fuelgauge/ExpandDividerPreference.java b/src/com/android/settings/fuelgauge/batteryusage/ExpandDividerPreference.java
similarity index 91%
rename from src/com/android/settings/fuelgauge/ExpandDividerPreference.java
rename to src/com/android/settings/fuelgauge/batteryusage/ExpandDividerPreference.java
index 4517177..8af842b 100644
--- a/src/com/android/settings/fuelgauge/ExpandDividerPreference.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/ExpandDividerPreference.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,11 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import android.content.Context;
 import android.util.AttributeSet;
-import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
@@ -33,8 +32,10 @@
     @VisibleForTesting
     static final String PREFERENCE_KEY = "expandable_divider";
 
-    @VisibleForTesting TextView mTextView;
-    @VisibleForTesting ImageView mImageView;
+    @VisibleForTesting
+    TextView mTextView;
+    @VisibleForTesting
+    ImageView mImageView;
     private OnExpandListener mOnExpandListener;
 
     private boolean mIsExpanded = false;
@@ -42,6 +43,7 @@
 
     /** A callback listener for expand state is changed by users. */
     public interface OnExpandListener {
+        /** Callback function for expand state is changed by users. */
         void onExpand(boolean isExpanded);
     }
 
diff --git a/src/com/android/settings/fuelgauge/PowerGaugePreference.java b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java
similarity index 91%
rename from src/com/android/settings/fuelgauge/PowerGaugePreference.java
rename to src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java
index ea79d11..5a4f672 100644
--- a/src/com/android/settings/fuelgauge/PowerGaugePreference.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
@@ -67,34 +67,41 @@
         mShowAnomalyIcon = false;
     }
 
+    /** Sets the content description. */
     public void setContentDescription(String name) {
         mContentDescription = name;
         notifyChanged();
     }
 
+    /** Sets the percent of total. */
     public void setPercent(double percentOfTotal) {
         mProgress = Utils.formatPercentage(percentOfTotal, true);
         notifyChanged();
     }
 
+    /** Gets the percent of total. */
     public String getPercent() {
         return mProgress.toString();
     }
 
+    /** Sets the subtitle. */
     public void setSubtitle(CharSequence subtitle) {
         mProgress = subtitle;
         notifyChanged();
     }
 
+    /** Gets the subtitle. */
     public CharSequence getSubtitle() {
         return mProgress;
     }
 
+    /** Sets whether to show anomaly icon */
     public void shouldShowAnomalyIcon(boolean showAnomalyIcon) {
         mShowAnomalyIcon = showAnomalyIcon;
         notifyChanged();
     }
 
+    /** Gets whether to show anomaly icon */
     public boolean showAnomalyIcon() {
         return mShowAnomalyIcon;
     }
diff --git a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
similarity index 88%
rename from src/com/android/settings/fuelgauge/PowerUsageAdvanced.java
rename to src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
index afbb71f..b88d85d 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java
@@ -1,17 +1,19 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
+ * 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.
+ * 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.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType;
 
@@ -35,6 +37,7 @@
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.fuelgauge.BatteryBroadcastReceiver;
+import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settingslib.core.AbstractPreferenceController;
@@ -45,6 +48,7 @@
 import java.util.List;
 import java.util.Map;
 
+/** Advanced power usage. */
 @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
 public class PowerUsageAdvanced extends PowerUsageBase {
     private static final String TAG = "AdvancedBatteryUsage";
@@ -69,14 +73,14 @@
 
     private final ContentObserver mBatteryObserver =
             new ContentObserver(new Handler()) {
-            @Override
-            public void onChange(boolean selfChange) {
-                Log.d(TAG, "onBatteryContentChange: " + selfChange);
-                mIsChartDataLoaded = false;
-                restartBatteryStatsLoader(
-                        BatteryBroadcastReceiver.BatteryUpdateType.MANUAL);
-            }
-    };
+                @Override
+                public void onChange(boolean selfChange) {
+                    Log.d(TAG, "onBatteryContentChange: " + selfChange);
+                    mIsChartDataLoaded = false;
+                    restartBatteryStatsLoader(
+                            BatteryBroadcastReceiver.BatteryUpdateType.MANUAL);
+                }
+            };
 
     @Override
     public void onCreate(Bundle icicle) {
@@ -87,7 +91,7 @@
         if (mIsChartGraphEnabled) {
             setBatteryChartPreferenceController();
         } else {
-           updateHistPrefSummary(context);
+            updateHistPrefSummary(context);
         }
     }
 
@@ -143,13 +147,13 @@
         if (mIsChartGraphEnabled) {
             mBatteryChartPreferenceController =
                     new BatteryChartPreferenceController(context, KEY_APP_LIST,
-                        getSettingsLifecycle(), (SettingsActivity) getActivity(), this);
+                            getSettingsLifecycle(), (SettingsActivity) getActivity(), this);
             controllers.add(mBatteryChartPreferenceController);
             setBatteryChartPreferenceController();
         } else {
             mBatteryAppListPreferenceController =
                     new BatteryAppListPreferenceController(context, KEY_APP_LIST,
-                        getSettingsLifecycle(), (SettingsActivity) getActivity(), this);
+                            getSettingsLifecycle(), (SettingsActivity) getActivity(), this);
             controllers.add(mBatteryAppListPreferenceController);
         }
         return controllers;
@@ -185,7 +189,7 @@
         if (mIsChartGraphEnabled && !mIsChartDataLoaded) {
             mIsChartDataLoaded = true;
             getLoaderManager().restartLoader(LOADER_BATTERY_USAGE_STATS, bundle,
-                mBatteryHistoryLoaderCallbacks);
+                    mBatteryHistoryLoaderCallbacks);
         } else if (!mIsChartGraphEnabled) {
             super.restartBatteryStatsLoader(refreshType);
         }
diff --git a/src/com/android/settings/fuelgauge/PowerUsageBase.java b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBase.java
similarity index 95%
rename from src/com/android/settings/fuelgauge/PowerUsageBase.java
rename to src/com/android/settings/fuelgauge/batteryusage/PowerUsageBase.java
index 6563155..ccefdf2 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageBase.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBase.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType;
 
@@ -23,7 +23,6 @@
 import android.os.Bundle;
 import android.os.UserManager;
 import android.util.Log;
-import android.view.Menu;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
@@ -31,6 +30,8 @@
 import androidx.loader.content.Loader;
 
 import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.fuelgauge.BatteryBroadcastReceiver;
+import com.android.settings.fuelgauge.BatteryUtils;
 
 /**
  * Common base class for things that need to show the battery usage graph.
@@ -99,6 +100,7 @@
     }
 
     protected abstract void refreshUi(@BatteryUpdateType int refreshType);
+
     protected abstract boolean isBatteryHistoryNeeded();
 
     protected void updatePreference(BatteryHistoryPreference historyPref) {
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummary.java
similarity index 94%
rename from src/com/android/settings/fuelgauge/PowerUsageSummary.java
rename to src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummary.java
index 19a8011..405d855 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummary.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType;
 
@@ -34,6 +34,11 @@
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.Utils;
+import com.android.settings.fuelgauge.BatteryHeaderPreferenceController;
+import com.android.settings.fuelgauge.BatteryInfo;
+import com.android.settings.fuelgauge.BatteryInfoLoader;
+import com.android.settings.fuelgauge.BatteryUtils;
+import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
 import com.android.settings.fuelgauge.batterytip.BatteryTipLoader;
 import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
 import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
@@ -255,9 +260,9 @@
     void initPreference() {
         mBatteryUsagePreference = findPreference(KEY_BATTERY_USAGE);
         mBatteryUsagePreference.setSummary(
-                mPowerFeatureProvider.isChartGraphEnabled(getContext()) ?
-                        getString(R.string.advanced_battery_preference_summary_with_hours) :
-                        getString(R.string.advanced_battery_preference_summary));
+                mPowerFeatureProvider.isChartGraphEnabled(getContext())
+                        ? getString(R.string.advanced_battery_preference_summary_with_hours)
+                        : getString(R.string.advanced_battery_preference_summary));
 
         mHelpPreference = findPreference(KEY_BATTERY_ERROR);
         mHelpPreference.setVisible(false);
diff --git a/src/com/android/settings/gestures/LongPressPowerButtonPreferenceController.java b/src/com/android/settings/gestures/LongPressPowerButtonPreferenceController.java
deleted file mode 100644
index 82766db..0000000
--- a/src/com/android/settings/gestures/LongPressPowerButtonPreferenceController.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (C) 2021 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.settings.gestures;
-
-import static com.android.settings.gestures.PowerMenuSettingsUtils.LONG_PRESS_POWER_ASSISTANT_VALUE;
-import static com.android.settings.gestures.PowerMenuSettingsUtils.LONG_PRESS_POWER_GLOBAL_ACTIONS;
-import static com.android.settings.gestures.PowerMenuSettingsUtils.POWER_BUTTON_LONG_PRESS_DEFAULT_VALUE_RESOURCE;
-import static com.android.settings.gestures.PowerMenuSettingsUtils.POWER_BUTTON_LONG_PRESS_SETTING;
-
-import android.content.Context;
-import android.provider.Settings;
-
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.settings.R;
-import com.android.settings.core.TogglePreferenceController;
-
-import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
-
-/**
- * Configures the behaviour of long press power button action.
- */
-public class LongPressPowerButtonPreferenceController extends TogglePreferenceController {
-
-    private static final String KEY_CHORD_POWER_VOLUME_UP_SETTING =
-            Settings.Global.KEY_CHORD_POWER_VOLUME_UP;
-
-    private static final String FOOTER_HINT_KEY = "power_menu_power_volume_up_hint";
-    private static final String ASSIST_SWITCH_KEY = "gesture_power_menu_long_press_for_assist";
-
-    /**
-     * Values used for volume key chord behaviour when Assist setting is enabled.
-     *
-     * Values based on config_keyChordPowerVolumeUp in
-     * frameworks/base/core/res/res/values/config.xml
-     */
-    @VisibleForTesting
-    static final int KEY_CHORD_POWER_VOLUME_UP_NO_ACTION = 0;
-    @VisibleForTesting
-    static final int KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE = 1;
-    @VisibleForTesting
-    static final int KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS = 2;
-
-    private static final int KEY_CHORD_POWER_VOLUME_UP_DEFAULT_VALUE_RESOURCE =
-            com.android.internal.R.integer.config_keyChordPowerVolumeUp;
-
-    @MonotonicNonNull
-    @VisibleForTesting
-    Preference mFooterHint;
-
-    @MonotonicNonNull
-    @VisibleForTesting
-    Preference mAssistSwitch;
-
-    public LongPressPowerButtonPreferenceController(Context context, String key) {
-        super(context, key);
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        mFooterHint = screen.findPreference(FOOTER_HINT_KEY);
-        mAssistSwitch = screen.findPreference(ASSIST_SWITCH_KEY);
-        refreshStateDisplay();
-    }
-
-    @Override
-    public CharSequence getSummary() {
-        final int powerButtonValue = PowerMenuSettingsUtils.getPowerButtonSettingValue(mContext);
-        if (powerButtonValue == LONG_PRESS_POWER_ASSISTANT_VALUE) {
-            return mContext.getString(R.string.power_menu_summary_long_press_for_assist_enabled);
-        } else if (powerButtonValue == LONG_PRESS_POWER_GLOBAL_ACTIONS) {
-            return mContext.getString(
-                    R.string.power_menu_summary_long_press_for_assist_disabled_with_power_menu);
-        } else {
-            return mContext.getString(
-                    R.string.power_menu_summary_long_press_for_assist_disabled_no_action);
-        }
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        final boolean enabled = mContext.getResources().getBoolean(
-                com.android.internal.R.bool.config_longPressOnPowerForAssistantSettingAvailable);
-        return enabled ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
-    }
-
-    @Override
-    public boolean isChecked() {
-        return PowerMenuSettingsUtils.isLongPressPowerForAssistEnabled(mContext);
-    }
-
-    @Override
-    public boolean setChecked(boolean isChecked) {
-        if (setPowerLongPressValue(isChecked)) {
-            // The key chord value is dependant on the long press setting and it always
-            // toggled in tandem. POWER_BUTTON_LONG_PRESS_SETTING is always the source
-            // of truth for both.
-            setPowerVolumeChordValue(isChecked);
-            refreshStateDisplay();
-            return true;
-        }
-
-        return false;
-    }
-
-    @Override
-    public int getSliceHighlightMenuRes() {
-        return R.string.menu_key_system;
-    }
-
-    private void refreshStateDisplay() {
-        if (mAssistSwitch != null) {
-            mAssistSwitch.setSummary(getSummary());
-        }
-
-        if (mFooterHint != null) {
-            String footerHintText = mContext.getString(R.string.power_menu_power_volume_up_hint);
-            // If the device supports hush gesture, we need to notify the user where to find
-            // the setting.
-            if (mContext.getResources().getBoolean(
-                    com.android.internal.R.bool.config_volumeHushGestureEnabled)) {
-                footerHintText = footerHintText + "\n\n" + mContext.getString(
-                        R.string.power_menu_power_prevent_ringing_hint);
-            }
-
-            mFooterHint.setSummary(footerHintText);
-            mFooterHint.setVisible(isPowerMenuKeyChordEnabled(mContext));
-        }
-    }
-
-    private static boolean isPowerMenuKeyChordEnabled(Context context) {
-        return Settings.Global.getInt(context.getContentResolver(),
-                KEY_CHORD_POWER_VOLUME_UP_SETTING,
-                context.getResources().getInteger(
-                        com.android.internal.R.integer.config_keyChordPowerVolumeUp))
-                == KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS;
-    }
-
-    private boolean setPowerLongPressValue(boolean isChecked) {
-        if (isChecked) {
-            return Settings.Global.putInt(mContext.getContentResolver(),
-                    POWER_BUTTON_LONG_PRESS_SETTING, LONG_PRESS_POWER_ASSISTANT_VALUE);
-        }
-
-        // We need to determine the right disabled value based on the device default
-        // for long-press power.
-
-        // If the default is to start the assistant, then the fallback is GlobalActions.
-        final int defaultPowerButtonValue = mContext.getResources().getInteger(
-                POWER_BUTTON_LONG_PRESS_DEFAULT_VALUE_RESOURCE);
-        if (defaultPowerButtonValue == LONG_PRESS_POWER_ASSISTANT_VALUE) {
-            return Settings.Global.putInt(mContext.getContentResolver(),
-                    POWER_BUTTON_LONG_PRESS_SETTING, LONG_PRESS_POWER_GLOBAL_ACTIONS);
-        }
-
-        // If the default is something different than Assist, we use that default.
-        return Settings.Global.putInt(mContext.getContentResolver(),
-                POWER_BUTTON_LONG_PRESS_SETTING, defaultPowerButtonValue);
-    }
-
-    /**
-     * Updates {@link Settings.Global.KEY_CHORD_POWER_VOLUME_UP} based on the changed value of
-     * {@link #POWER_BUTTON_LONG_PRESS_SETTING}. If power button is used for Assist, key chord
-     * should show the power menu.
-     */
-    private boolean setPowerVolumeChordValue(boolean isPowerButtonLongPressChecked) {
-        if (isPowerButtonLongPressChecked) {
-            return Settings.Global.putInt(mContext.getContentResolver(),
-                    KEY_CHORD_POWER_VOLUME_UP_SETTING, KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS);
-        }
-
-        // We restore key chord to the default value.
-        int keyChordDefaultValue = mContext.getResources().getInteger(
-                KEY_CHORD_POWER_VOLUME_UP_DEFAULT_VALUE_RESOURCE);
-        return Settings.Global.putInt(mContext.getContentResolver(),
-                KEY_CHORD_POWER_VOLUME_UP_SETTING, keyChordDefaultValue);
-    }
-
-}
diff --git a/src/com/android/settings/gestures/LongPressPowerFooterPreferenceController.java b/src/com/android/settings/gestures/LongPressPowerFooterPreferenceController.java
new file mode 100644
index 0000000..b4f6def
--- /dev/null
+++ b/src/com/android/settings/gestures/LongPressPowerFooterPreferenceController.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.gestures;
+
+import android.content.Context;
+import android.net.Uri;
+import android.text.TextUtils;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+/** Configures the behaviour of long press power footer. */
+public class LongPressPowerFooterPreferenceController extends BasePreferenceController
+        implements PowerMenuSettingsUtils.SettingsStateCallback, LifecycleObserver {
+
+    private Preference mPreference;
+    private final PowerMenuSettingsUtils mUtils;
+
+    public LongPressPowerFooterPreferenceController(Context context, String key) {
+        super(context, key);
+        mUtils = new PowerMenuSettingsUtils(context);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mPreference = screen.findPreference(getPreferenceKey());
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+
+        CharSequence footerHintText = mContext.getString(R.string.power_menu_power_volume_up_hint);
+        // If the device supports hush gesture, we need to tell the user where to find the setting.
+        if (mContext.getResources()
+                .getBoolean(com.android.internal.R.bool.config_volumeHushGestureEnabled)) {
+            footerHintText =
+                    TextUtils.concat(
+                            footerHintText,
+                            "\n\n",
+                            mContext.getString(R.string.power_menu_power_prevent_ringing_hint));
+        }
+
+        preference.setSummary(footerHintText);
+        preference.setVisible(PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext));
+    }
+
+    @Override
+    public void onChange(Uri uri) {
+        if (mPreference != null) {
+            updateState(mPreference);
+        }
+    }
+
+    /** @OnLifecycleEvent(Lifecycle.Event.ON_START) */
+    @OnLifecycleEvent(Lifecycle.Event.ON_START)
+    public void onStart() {
+        mUtils.registerObserver(this);
+    }
+
+    /** @OnLifecycleEvent(Lifecycle.Event.ON_STOP) */
+    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
+    public void onStop() {
+        mUtils.unregisterObserver();
+    }
+}
diff --git a/src/com/android/settings/gestures/LongPressPowerForAssistantPreferenceController.java b/src/com/android/settings/gestures/LongPressPowerForAssistantPreferenceController.java
new file mode 100644
index 0000000..4a0ad74
--- /dev/null
+++ b/src/com/android/settings/gestures/LongPressPowerForAssistantPreferenceController.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.gestures;
+
+import android.content.Context;
+import android.net.Uri;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
+
+/**
+ * Configures the behaviour of the radio selector to configure long press power button to Assistant.
+ */
+public class LongPressPowerForAssistantPreferenceController extends BasePreferenceController
+        implements PowerMenuSettingsUtils.SettingsStateCallback,
+                SelectorWithWidgetPreference.OnClickListener,
+                LifecycleObserver {
+
+    private SelectorWithWidgetPreference mPreference;
+    private final PowerMenuSettingsUtils mUtils;
+
+    public LongPressPowerForAssistantPreferenceController(Context context, String key) {
+        super(context, key);
+        mUtils = new PowerMenuSettingsUtils(context);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return PowerMenuSettingsUtils.isLongPressPowerSettingAvailable(mContext)
+                ? AVAILABLE
+                : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mPreference = screen.findPreference(getPreferenceKey());
+        if (mPreference != null) {
+            mPreference.setOnClickListener(this);
+        }
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        if (preference instanceof SelectorWithWidgetPreference) {
+            ((SelectorWithWidgetPreference) preference)
+                    .setChecked(
+                            PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext));
+        }
+    }
+
+    @Override
+    public void onRadioButtonClicked(SelectorWithWidgetPreference preference) {
+        PowerMenuSettingsUtils.setLongPressPowerForAssistant(mContext);
+        if (mPreference != null) {
+            updateState(mPreference);
+        }
+    }
+
+    @Override
+    public void onChange(Uri uri) {
+        if (mPreference != null) {
+            updateState(mPreference);
+        }
+    }
+
+    /** @OnLifecycleEvent(Lifecycle.Event.ON_START) */
+    @OnLifecycleEvent(Lifecycle.Event.ON_START)
+    public void onStart() {
+        mUtils.registerObserver(this);
+    }
+
+    /** @OnLifecycleEvent(Lifecycle.Event.ON_STOP) */
+    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
+    public void onStop() {
+        mUtils.unregisterObserver();
+    }
+}
diff --git a/src/com/android/settings/gestures/LongPressPowerForPowerMenuPreferenceController.java b/src/com/android/settings/gestures/LongPressPowerForPowerMenuPreferenceController.java
new file mode 100644
index 0000000..c11f0e4
--- /dev/null
+++ b/src/com/android/settings/gestures/LongPressPowerForPowerMenuPreferenceController.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.gestures;
+
+import android.content.Context;
+import android.net.Uri;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
+
+/**
+ * Configures the behaviour of the radio selector to configure long press power button to Power
+ * Menu.
+ */
+public class LongPressPowerForPowerMenuPreferenceController extends BasePreferenceController
+        implements PowerMenuSettingsUtils.SettingsStateCallback,
+                SelectorWithWidgetPreference.OnClickListener,
+                LifecycleObserver {
+
+    private SelectorWithWidgetPreference mPreference;
+    private final PowerMenuSettingsUtils mUtils;
+
+    public LongPressPowerForPowerMenuPreferenceController(Context context, String key) {
+        super(context, key);
+        mUtils = new PowerMenuSettingsUtils(context);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return PowerMenuSettingsUtils.isLongPressPowerSettingAvailable(mContext)
+                ? AVAILABLE
+                : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mPreference = screen.findPreference(getPreferenceKey());
+        if (mPreference != null) {
+            mPreference.setOnClickListener(this);
+        }
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        if (preference instanceof SelectorWithWidgetPreference) {
+            ((SelectorWithWidgetPreference) preference)
+                    .setChecked(
+                            !PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext));
+        }
+    }
+
+    @Override
+    public void onRadioButtonClicked(SelectorWithWidgetPreference preference) {
+        PowerMenuSettingsUtils.setLongPressPowerForPowerMenu(mContext);
+        if (mPreference != null) {
+            updateState(mPreference);
+        }
+    }
+
+    @Override
+    public void onChange(Uri uri) {
+        if (mPreference != null) {
+            updateState(mPreference);
+        }
+    }
+
+    /** @OnLifecycleEvent(Lifecycle.Event.ON_START) */
+    @OnLifecycleEvent(Lifecycle.Event.ON_START)
+    public void onStart() {
+        mUtils.registerObserver(this);
+    }
+
+    /** @OnLifecycleEvent(Lifecycle.Event.ON_STOP) */
+    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
+    public void onStop() {
+        mUtils.unregisterObserver();
+    }
+}
diff --git a/src/com/android/settings/gestures/LongPressPowerIllustrationPreferenceController.java b/src/com/android/settings/gestures/LongPressPowerIllustrationPreferenceController.java
new file mode 100644
index 0000000..b3db9e7
--- /dev/null
+++ b/src/com/android/settings/gestures/LongPressPowerIllustrationPreferenceController.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.gestures;
+
+import android.content.Context;
+import android.net.Uri;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.widget.IllustrationPreference;
+
+/** Configures the behaviour of long press power illustration. */
+public class LongPressPowerIllustrationPreferenceController extends BasePreferenceController
+        implements PowerMenuSettingsUtils.SettingsStateCallback, LifecycleObserver {
+
+    private IllustrationPreference mIllustrationPreference;
+    private final PowerMenuSettingsUtils mUtils;
+
+    public LongPressPowerIllustrationPreferenceController(Context context, String key) {
+        super(context, key);
+        mUtils = new PowerMenuSettingsUtils(context);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mIllustrationPreference = screen.findPreference(getPreferenceKey());
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+
+        ((IllustrationPreference) preference)
+                .setLottieAnimationResId(
+                        PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext)
+                                ? R.raw.lottie_long_press_power_for_assistant
+                                : R.raw.lottie_long_press_power_for_power_menu);
+    }
+
+    @Override
+    public void onChange(Uri uri) {
+        if (mIllustrationPreference != null) {
+            updateState(mIllustrationPreference);
+        }
+    }
+
+    /** @OnLifecycleEvent(Lifecycle.Event.ON_START) */
+    @OnLifecycleEvent(Lifecycle.Event.ON_START)
+    public void onStart() {
+        mUtils.registerObserver(this);
+    }
+
+    /** @OnLifecycleEvent(Lifecycle.Event.ON_STOP) */
+    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
+    public void onStop() {
+        mUtils.unregisterObserver();
+    }
+}
diff --git a/src/com/android/settings/gestures/LongPressPowerSensitivityPreferenceController.java b/src/com/android/settings/gestures/LongPressPowerSensitivityPreferenceController.java
index a1d681c..6df4d72 100644
--- a/src/com/android/settings/gestures/LongPressPowerSensitivityPreferenceController.java
+++ b/src/com/android/settings/gestures/LongPressPowerSensitivityPreferenceController.java
@@ -17,37 +17,28 @@
 package com.android.settings.gestures;
 
 import android.content.Context;
-import android.database.ContentObserver;
-import android.os.Handler;
+import android.net.Uri;
 import android.provider.Settings;
 
 import androidx.annotation.Nullable;
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.core.SliderPreferenceController;
 import com.android.settings.widget.LabeledSeekBarPreference;
-import com.android.settingslib.core.lifecycle.LifecycleObserver;
-import com.android.settingslib.core.lifecycle.events.OnStart;
-import com.android.settingslib.core.lifecycle.events.OnStop;
 
 /** Handles changes to the long press power button sensitivity slider. */
-public class LongPressPowerSensitivityPreferenceController extends
-        SliderPreferenceController implements
-        LifecycleObserver, OnStart, OnStop {
-
-    private final ContentObserver mPowerButtonObserver = new ContentObserver(Handler.getMain()) {
-        @Override
-        public void onChange(boolean selfChange) {
-            if (mPreference != null) {
-                updateState(mPreference);
-            }
-        }
-    };
+public class LongPressPowerSensitivityPreferenceController extends SliderPreferenceController
+        implements PowerMenuSettingsUtils.SettingsStateCallback, LifecycleObserver {
 
     @Nullable
     private final int[] mSensitivityValues;
 
+    private final PowerMenuSettingsUtils mUtils;
+
     @Nullable
     private LabeledSeekBarPreference mPreference;
 
@@ -55,18 +46,19 @@
         super(context, preferenceKey);
         mSensitivityValues = context.getResources().getIntArray(
                 com.android.internal.R.array.config_longPressOnPowerDurationSettings);
+        mUtils = new PowerMenuSettingsUtils(context);
     }
 
-    @Override
+    /** @OnLifecycleEvent(Lifecycle.Event.ON_START) */
+    @OnLifecycleEvent(Lifecycle.Event.ON_START)
     public void onStart() {
-        mContext.getContentResolver().registerContentObserver(
-                Settings.Global.getUriFor(PowerMenuSettingsUtils.POWER_BUTTON_LONG_PRESS_SETTING),
-                false, mPowerButtonObserver);
+        mUtils.registerObserver(this);
     }
 
-    @Override
+    /** @OnLifecycleEvent(Lifecycle.Event.ON_STOP) */
+    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
     public void onStop() {
-        mContext.getContentResolver().unregisterContentObserver(mPowerButtonObserver);
+        mUtils.unregisterObserver();
     }
 
     @Override
@@ -86,21 +78,19 @@
     public void updateState(Preference preference) {
         super.updateState(preference);
         final LabeledSeekBarPreference pref = (LabeledSeekBarPreference) preference;
-        pref.setEnabled(
-                isAvailable() && PowerMenuSettingsUtils.isLongPressPowerForAssistEnabled(mContext));
+        pref.setVisible(
+                PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext)
+                        && getAvailabilityStatus() == AVAILABLE);
         pref.setProgress(getSliderPosition());
     }
 
     @Override
     public int getAvailabilityStatus() {
-        if (mSensitivityValues == null || mSensitivityValues.length < 2) {
+        if (mSensitivityValues == null
+                || mSensitivityValues.length < 2
+                || !PowerMenuSettingsUtils.isLongPressPowerSettingAvailable(mContext)) {
             return UNSUPPORTED_ON_DEVICE;
         }
-
-        if (!PowerMenuSettingsUtils.isLongPressPowerForAssistEnabled(mContext)) {
-            return DISABLED_DEPENDENT_SETTING;
-        }
-
         return AVAILABLE;
     }
 
@@ -121,6 +111,13 @@
     }
 
     @Override
+    public void onChange(Uri uri) {
+        if (mPreference != null) {
+            updateState(mPreference);
+        }
+    }
+
+    @Override
     public int getMax() {
         if (mSensitivityValues == null || mSensitivityValues.length == 0) {
             return 0;
diff --git a/src/com/android/settings/gestures/PowerMenuPreferenceController.java b/src/com/android/settings/gestures/PowerMenuPreferenceController.java
index b4f97aa..599dd18 100644
--- a/src/com/android/settings/gestures/PowerMenuPreferenceController.java
+++ b/src/com/android/settings/gestures/PowerMenuPreferenceController.java
@@ -16,9 +16,6 @@
 
 package com.android.settings.gestures;
 
-import static com.android.settings.gestures.PowerMenuSettingsUtils.LONG_PRESS_POWER_ASSISTANT_VALUE;
-import static com.android.settings.gestures.PowerMenuSettingsUtils.LONG_PRESS_POWER_GLOBAL_ACTIONS;
-
 import android.content.Context;
 
 import com.android.settings.R;
@@ -32,25 +29,17 @@
 
     @Override
     public CharSequence getSummary() {
-        final int powerButtonValue = PowerMenuSettingsUtils.getPowerButtonSettingValue(mContext);
-        if (powerButtonValue == LONG_PRESS_POWER_ASSISTANT_VALUE) {
-            return mContext.getText(R.string.power_menu_summary_long_press_for_assist_enabled);
-        } else if (powerButtonValue == LONG_PRESS_POWER_GLOBAL_ACTIONS) {
-            return mContext.getText(
-                    R.string.power_menu_summary_long_press_for_assist_disabled_with_power_menu);
+        if (PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext)) {
+            return mContext.getText(R.string.power_menu_summary_long_press_for_assistant);
         } else {
-            return mContext.getText(
-                    R.string.power_menu_summary_long_press_for_assist_disabled_no_action);
+            return mContext.getText(R.string.power_menu_summary_long_press_for_power_menu);
         }
     }
 
     @Override
     public int getAvailabilityStatus() {
-        return isAssistInvocationAvailable() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
-    }
-
-    private boolean isAssistInvocationAvailable() {
-        return mContext.getResources().getBoolean(
-                com.android.internal.R.bool.config_longPressOnPowerForAssistantSettingAvailable);
+        return PowerMenuSettingsUtils.isLongPressPowerSettingAvailable(mContext)
+                ? AVAILABLE
+                : UNSUPPORTED_ON_DEVICE;
     }
 }
diff --git a/src/com/android/settings/gestures/PowerMenuSettingsUtils.java b/src/com/android/settings/gestures/PowerMenuSettingsUtils.java
index 444b7c1..b110381 100644
--- a/src/com/android/settings/gestures/PowerMenuSettingsUtils.java
+++ b/src/com/android/settings/gestures/PowerMenuSettingsUtils.java
@@ -16,53 +16,163 @@
 
 package com.android.settings.gestures;
 
+import android.content.ContentResolver;
 import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
 import android.provider.Settings;
 
 /** Common code for long press power settings shared between controllers. */
 final class PowerMenuSettingsUtils {
 
-    /**
-     * Setting storing the current behaviour of long press power.
-     */
-    public static final String POWER_BUTTON_LONG_PRESS_SETTING =
+    /** Setting storing the current behaviour of long press power. */
+    private static final String POWER_BUTTON_LONG_PRESS_SETTING =
             Settings.Global.POWER_BUTTON_LONG_PRESS;
 
+    /** Setting storing the current behaviour of key chord power + volume up. */
+    private static final String KEY_CHORD_POWER_VOLUME_UP_SETTING =
+            Settings.Global.KEY_CHORD_POWER_VOLUME_UP;
+
     /**
-     * Value used for long press power button behaviour when the Assist setting is disabled.
+     * Value used for long press power button behaviour when long press power for Assistant is
+     * disabled.
      *
-     * If this value matches Assist setting, then it falls back to Global Actions panel or
-     * power menu, depending on their respective settings.
+     * <p>If this value matches long press power for Assistant, then it falls back to Global Actions
+     * panel (i.e., the Power Menu), depending on their respective settings.
      */
-    public static final int POWER_BUTTON_LONG_PRESS_DEFAULT_VALUE_RESOURCE =
+    private static final int POWER_BUTTON_LONG_PRESS_DEFAULT_VALUE_RESOURCE =
             com.android.internal.R.integer.config_longPressOnPowerBehavior;
 
     /**
-     * Values used for long press power button behaviour when Assist setting is enabled.
-     *
-     * {@link com.android.server.policy.PhoneWindowManager#LONG_PRESS_POWER_GLOBAL_ACTIONS} for
-     * source of the value.
+     * Value used for key chord power + volume up behaviour when long press power for Assistant is
+     * disabled.
      */
-    static final int LONG_PRESS_POWER_NO_ACTION = 0;
-    static final int LONG_PRESS_POWER_GLOBAL_ACTIONS = 1;
-    static final int LONG_PRESS_POWER_ASSISTANT_VALUE = 5; // Settings.Secure.ASSISTANT
+    private static final int KEY_CHORD_POWER_VOLUME_UP_DEFAULT_VALUE_RESOURCE =
+            com.android.internal.R.integer.config_keyChordPowerVolumeUp;
+
+    private static final int LONG_PRESS_POWER_GLOBAL_ACTIONS = 1; // a.k.a., Power Menu
+    private static final int LONG_PRESS_POWER_ASSISTANT_VALUE = 5; // Settings.Secure.ASSISTANT
+
+    private static final int KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS = 2;
+
+    private static final Uri POWER_BUTTON_LONG_PRESS_URI =
+            Settings.Global.getUriFor(POWER_BUTTON_LONG_PRESS_SETTING);
 
     /**
-     * @return current value of power button behaviour.
+     * @return true if long press power for assistant is currently enabled.
      */
-    public static int getPowerButtonSettingValue(Context context) {
-        return Settings.Global.getInt(context.getContentResolver(),
+    public static boolean isLongPressPowerForAssistantEnabled(Context context) {
+        int longPressPowerSettingValue = Settings.Global.getInt(
+                context.getContentResolver(),
                 POWER_BUTTON_LONG_PRESS_SETTING,
                 context.getResources().getInteger(POWER_BUTTON_LONG_PRESS_DEFAULT_VALUE_RESOURCE));
+        return longPressPowerSettingValue == LONG_PRESS_POWER_ASSISTANT_VALUE;
     }
 
     /**
-     * @return true if long press power for assist is currently enabled.
+     * @return true if long press power for assistant setting is available on the device.
      */
-    public static boolean isLongPressPowerForAssistEnabled(Context context) {
-        return getPowerButtonSettingValue(context) == LONG_PRESS_POWER_ASSISTANT_VALUE;
+    public static boolean isLongPressPowerSettingAvailable(Context context) {
+        if (!context.getResources().getBoolean(
+                com.android.internal.R.bool.config_longPressOnPowerForAssistantSettingAvailable)) {
+            return false;
+        }
+
+        int defaultLongPressPowerSettingValue =
+                context.getResources().getInteger(POWER_BUTTON_LONG_PRESS_DEFAULT_VALUE_RESOURCE);
+        switch (defaultLongPressPowerSettingValue) {
+            case LONG_PRESS_POWER_GLOBAL_ACTIONS:
+            case LONG_PRESS_POWER_ASSISTANT_VALUE:
+                // We support switching between Power Menu and Digital Assistant.
+                return true;
+            default:
+                // All other combinations are not supported.
+                return false;
+        }
     }
 
-    private PowerMenuSettingsUtils() {
+    public static boolean setLongPressPowerForAssistant(Context context) {
+        if (Settings.Global.putInt(
+                context.getContentResolver(),
+                POWER_BUTTON_LONG_PRESS_SETTING,
+                LONG_PRESS_POWER_ASSISTANT_VALUE)) {
+            // Make power + volume up buttons to open the power menu
+            Settings.Global.putInt(
+                    context.getContentResolver(),
+                    KEY_CHORD_POWER_VOLUME_UP_SETTING,
+                    KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS);
+            return true;
+        }
+        return false;
+    }
+
+    public static boolean setLongPressPowerForPowerMenu(Context context) {
+        if (Settings.Global.putInt(
+                context.getContentResolver(),
+                POWER_BUTTON_LONG_PRESS_SETTING,
+                LONG_PRESS_POWER_GLOBAL_ACTIONS)) {
+            // We restore power + volume up buttons to the default action.
+            int keyChordDefaultValue =
+                    context.getResources()
+                            .getInteger(KEY_CHORD_POWER_VOLUME_UP_DEFAULT_VALUE_RESOURCE);
+            Settings.Global.putInt(
+                    context.getContentResolver(),
+                    KEY_CHORD_POWER_VOLUME_UP_SETTING,
+                    keyChordDefaultValue);
+            return true;
+        }
+        return false;
+    }
+
+    private final Context mContext;
+    private final SettingsObserver mSettingsObserver;
+
+    PowerMenuSettingsUtils(Context context) {
+        mContext = context;
+        mSettingsObserver = new SettingsObserver(new Handler(Looper.getMainLooper()));
+    }
+
+    /**
+     * Registers callback for observing SettingsProvider state.
+     *
+     * @param callback for state changes
+     */
+    public void registerObserver(SettingsStateCallback callback) {
+        mSettingsObserver.setCallback(callback);
+        final ContentResolver resolver = mContext.getContentResolver();
+        resolver.registerContentObserver(POWER_BUTTON_LONG_PRESS_URI, true, mSettingsObserver);
+    }
+
+    /** Unregisters callback for observing SettingsProvider state. */
+    public void unregisterObserver() {
+        final ContentResolver resolver = mContext.getContentResolver();
+        resolver.unregisterContentObserver(mSettingsObserver);
+    }
+
+    /** An interface for when SettingsProvider key state changes. */
+    public interface SettingsStateCallback {
+        /** Callback method for SettingsProvider key state changes. */
+        void onChange(Uri uri);
+    }
+
+    private static final class SettingsObserver extends ContentObserver {
+        private SettingsStateCallback mCallback;
+
+        SettingsObserver(Handler handler) {
+            super(handler);
+        }
+
+        private void setCallback(SettingsStateCallback callback) {
+            mCallback = callback;
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            if (mCallback != null) {
+                mCallback.onChange(uri);
+            }
+        }
     }
 }
diff --git a/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java b/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
index f10a2d7..33dcd4e 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
@@ -44,11 +44,11 @@
 import com.android.settings.R;
 import com.android.settings.SubSettings;
 import com.android.settings.Utils;
-import com.android.settings.fuelgauge.BatteryUsageStatsLoader;
-import com.android.settings.fuelgauge.PowerUsageSummary;
 import com.android.settings.fuelgauge.batterytip.BatteryTipLoader;
 import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
 import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
+import com.android.settings.fuelgauge.batteryusage.BatteryUsageStatsLoader;
+import com.android.settings.fuelgauge.batteryusage.PowerUsageSummary;
 import com.android.settings.slices.CustomSliceable;
 import com.android.settings.slices.SliceBackgroundWorker;
 import com.android.settings.slices.SliceBuilderUtils;
diff --git a/src/com/android/settings/language/LanguageAndInputSettings.java b/src/com/android/settings/language/LanguageAndInputSettings.java
index 71b48f9..2d80da5 100644
--- a/src/com/android/settings/language/LanguageAndInputSettings.java
+++ b/src/com/android/settings/language/LanguageAndInputSettings.java
@@ -50,6 +50,7 @@
 
     private static final String KEY_KEYBOARDS_CATEGORY = "keyboards_category";
     private static final String KEY_SPEECH_CATEGORY = "speech_category";
+    private static final String KEY_ON_DEVICE_RECOGNITION = "odsr_settings";
     private static final String KEY_TEXT_TO_SPEECH = "tts_settings_summary";
     private static final String KEY_POINTER_CATEGORY = "pointer_category";
 
@@ -123,11 +124,21 @@
                 new DefaultVoiceInputPreferenceController(context, lifecycle);
         final TtsPreferenceController ttsPreferenceController =
                 new TtsPreferenceController(context, KEY_TEXT_TO_SPEECH);
+        final OnDeviceRecognitionPreferenceController onDeviceRecognitionPreferenceController =
+                new OnDeviceRecognitionPreferenceController(context, KEY_ON_DEVICE_RECOGNITION);
+
         controllers.add(defaultVoiceInputPreferenceController);
         controllers.add(ttsPreferenceController);
-        controllers.add(new PreferenceCategoryController(context,
-                KEY_SPEECH_CATEGORY).setChildren(
-                Arrays.asList(defaultVoiceInputPreferenceController, ttsPreferenceController)));
+        List<AbstractPreferenceController> speechCategoryChildren = new ArrayList<>(
+                List.of(defaultVoiceInputPreferenceController, ttsPreferenceController));
+
+        if (onDeviceRecognitionPreferenceController.isAvailable()) {
+            controllers.add(onDeviceRecognitionPreferenceController);
+            speechCategoryChildren.add(onDeviceRecognitionPreferenceController);
+        }
+
+        controllers.add(new PreferenceCategoryController(context, KEY_SPEECH_CATEGORY)
+                .setChildren(speechCategoryChildren));
 
         // Pointer
         final PointerSpeedController pointerController = new PointerSpeedController(context);
diff --git a/src/com/android/settings/language/OnDeviceRecognitionPreferenceController.java b/src/com/android/settings/language/OnDeviceRecognitionPreferenceController.java
new file mode 100644
index 0000000..3186639
--- /dev/null
+++ b/src/com/android/settings/language/OnDeviceRecognitionPreferenceController.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.language;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.internal.R;
+import com.android.settings.core.BasePreferenceController;
+
+import java.util.ArrayList;
+import java.util.Optional;
+
+/** Controller of the On-device recognition preference. */
+public class OnDeviceRecognitionPreferenceController extends BasePreferenceController {
+
+    private static final String TAG = "OnDeviceRecognitionPreferenceController";
+
+    private Optional<Intent> mIntent;
+
+    public OnDeviceRecognitionPreferenceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        if (mIntent == null) {
+            mIntent = Optional.ofNullable(onDeviceRecognitionIntent());
+        }
+        return mIntent.isPresent()
+                ? AVAILABLE
+                : CONDITIONALLY_UNAVAILABLE;
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        if (mIntent != null && mIntent.isPresent()) {
+            preference.setIntent(mIntent.get());
+        }
+    }
+
+    /**
+     * Create an {@link Intent} for the activity in the default on-device recognizer service if
+     * there is a properly defined speech recognition xml meta-data for that service.
+     *
+     * @return {@link Intent} if the proper activity is fount, {@code null} otherwise.
+     */
+    @Nullable
+    private Intent onDeviceRecognitionIntent() {
+        final String resString = mContext.getString(
+                R.string.config_defaultOnDeviceSpeechRecognitionService);
+
+        if (resString == null) {
+            Log.v(TAG, "No on-device recognizer, intent not created.");
+            return null;
+        }
+
+        final ComponentName defaultOnDeviceRecognizerComponentName =
+                ComponentName.unflattenFromString(resString);
+
+        if (defaultOnDeviceRecognizerComponentName == null) {
+            Log.v(TAG, "Invalid on-device recognizer string format, intent not created.");
+            return null;
+        }
+
+        final ArrayList<VoiceInputHelper.RecognizerInfo> validRecognitionServices =
+                VoiceInputHelper.validRecognitionServices(mContext);
+
+        if (validRecognitionServices.isEmpty()) {
+            Log.v(TAG, "No speech recognition services"
+                    + "with proper `recognition-service` meta-data found.");
+            return null;
+        }
+
+        // Filter the recognizer services which are in the same package as the default on-device
+        // speech recognizer and have a settings activity defined in the meta-data.
+        final ArrayList<VoiceInputHelper.RecognizerInfo> validOnDeviceRecognitionServices =
+                new ArrayList<>();
+        for (VoiceInputHelper.RecognizerInfo recognizerInfo: validRecognitionServices) {
+            if (!defaultOnDeviceRecognizerComponentName.getPackageName().equals(
+                    recognizerInfo.mService.packageName)) {
+                Log.v(TAG, String.format("Recognition service not in the same package as the "
+                        + "default on-device recognizer: %s.",
+                        recognizerInfo.mComponentName.flattenToString()));
+            } else if (recognizerInfo.mSettings == null) {
+                Log.v(TAG, String.format("Recognition service with no settings activity: %s.",
+                        recognizerInfo.mComponentName.flattenToString()));
+            } else {
+                validOnDeviceRecognitionServices.add(recognizerInfo);
+                Log.v(TAG, String.format("Recognition service in the same package as the default "
+                                + "on-device recognizer with settings activity: %s.",
+                        recognizerInfo.mSettings.flattenToString()));
+            }
+        }
+
+        if (validOnDeviceRecognitionServices.isEmpty()) {
+            Log.v(TAG, "No speech recognition services with proper `recognition-service` "
+                    + "meta-data found in the same package as the default on-device recognizer.");
+            return null;
+        }
+
+        // Not more than one proper recognition services should be found in the same
+        // package as the default on-device recognizer. If that happens,
+        // the first one which passed the filter will be selected.
+        if (validOnDeviceRecognitionServices.size() > 1) {
+            Log.w(TAG, "More than one recognition services with proper `recognition-service` "
+                    + "meta-data found in the same package as the default on-device recognizer.");
+        }
+        VoiceInputHelper.RecognizerInfo chosenRecognizer = validOnDeviceRecognitionServices.get(0);
+
+        return new Intent(Intent.ACTION_MAIN).setComponent(chosenRecognizer.mSettings);
+    }
+}
diff --git a/src/com/android/settings/language/VoiceInputHelper.java b/src/com/android/settings/language/VoiceInputHelper.java
index 7915ba4..289a2f9 100644
--- a/src/com/android/settings/language/VoiceInputHelper.java
+++ b/src/com/android/settings/language/VoiceInputHelper.java
@@ -29,6 +29,7 @@
 import android.speech.RecognitionService;
 import android.util.AttributeSet;
 import android.util.Log;
+import android.util.Pair;
 import android.util.Xml;
 
 import org.xmlpull.v1.XmlPullParser;
@@ -44,12 +45,11 @@
     static final String TAG = "VoiceInputHelper";
     final Context mContext;
 
-    final List<ResolveInfo> mAvailableRecognition;
-
     /**
      * Base info of the Voice Input provider.
      *
      * TODO: Remove this superclass as we only have 1 class now (RecognizerInfo).
+     * TODO: Group recognition service xml meta-data attributes in a single class.
      */
     public static class BaseInfo implements Comparable<BaseInfo> {
         public final ServiceInfo mService;
@@ -90,16 +90,12 @@
         }
     }
 
-    final ArrayList<RecognizerInfo> mAvailableRecognizerInfos = new ArrayList<>();
+    ArrayList<RecognizerInfo> mAvailableRecognizerInfos = new ArrayList<>();
 
     ComponentName mCurrentRecognizer;
 
     public VoiceInputHelper(Context context) {
         mContext = context;
-
-        mAvailableRecognition = mContext.getPackageManager().queryIntentServices(
-                new Intent(RecognitionService.SERVICE_INTERFACE),
-                PackageManager.GET_META_DATA);
     }
 
     /** Draws the UI of the Voice Input picker page. */
@@ -113,63 +109,120 @@
             mCurrentRecognizer = null;
         }
 
-        // Iterate through all the available recognizers and load up their info to show
-        // in the preference.
-        int size = mAvailableRecognition.size();
-        for (int i = 0; i < size; i++) {
-            ResolveInfo resolveInfo = mAvailableRecognition.get(i);
-            ComponentName comp = new ComponentName(resolveInfo.serviceInfo.packageName,
-                    resolveInfo.serviceInfo.name);
-            ServiceInfo si = resolveInfo.serviceInfo;
-            String settingsActivity = null;
-            // Always show in voice input settings unless specifically set to False.
-            boolean selectableAsDefault = true;
-            try (XmlResourceParser parser = si.loadXmlMetaData(mContext.getPackageManager(),
-                    RecognitionService.SERVICE_META_DATA)) {
-                if (parser == null) {
-                    throw new XmlPullParserException("No " + RecognitionService.SERVICE_META_DATA
-                            + " meta-data for " + si.packageName);
-                }
+        final ArrayList<RecognizerInfo> validRecognitionServices =
+                validRecognitionServices(mContext);
 
-                Resources res = mContext.getPackageManager().getResourcesForApplication(
-                        si.applicationInfo);
-
-                AttributeSet attrs = Xml.asAttributeSet(parser);
-
-                int type;
-                while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
-                        && type != XmlPullParser.START_TAG) {
-                    // Intentionally do nothing.
-                }
-
-                String nodeName = parser.getName();
-                if (!"recognition-service".equals(nodeName)) {
-                    throw new XmlPullParserException(
-                            "Meta-data does not start with recognition-service tag");
-                }
-
-                TypedArray array = res.obtainAttributes(attrs,
-                        com.android.internal.R.styleable.RecognitionService);
-                settingsActivity = array.getString(
-                        com.android.internal.R.styleable.RecognitionService_settingsActivity);
-                selectableAsDefault = array.getBoolean(
-                        com.android.internal.R.styleable.RecognitionService_selectableAsDefault,
-                        true);
-                array.recycle();
-            } catch (XmlPullParserException e) {
-                Log.e(TAG, "error parsing recognition service meta-data", e);
-            } catch (IOException e) {
-                Log.e(TAG, "error parsing recognition service meta-data", e);
-            } catch (PackageManager.NameNotFoundException e) {
-                Log.e(TAG, "error parsing recognition service meta-data", e);
-            }
-            // The current recognizer must always be shown in the settings, whatever its
-            // selectableAsDefault value is.
-            if (selectableAsDefault || comp.equals(mCurrentRecognizer)) {
-                mAvailableRecognizerInfos.add(new RecognizerInfo(mContext.getPackageManager(),
-                        resolveInfo.serviceInfo, settingsActivity, selectableAsDefault));
+        // Filter all recognizers which can be selected as default or are the current recognizer.
+        mAvailableRecognizerInfos = new ArrayList<>();
+        for (RecognizerInfo recognizerInfo: validRecognitionServices) {
+            if (recognizerInfo.mSelectableAsDefault || new ComponentName(
+                    recognizerInfo.mService.packageName, recognizerInfo.mService.name)
+                    .equals(mCurrentRecognizer)) {
+                mAvailableRecognizerInfos.add(recognizerInfo);
             }
         }
+
         Collections.sort(mAvailableRecognizerInfos);
     }
+
+    /**
+     * Query all services with {@link RecognitionService#SERVICE_INTERFACE} intent. Filter only
+     * those which have proper xml meta-data which start with a `recognition-service` tag.
+     * Filtered services are sorted by their labels in the ascending order.
+     *
+     * @param context {@link Context} inside which the settings app is run.
+     *
+     * @return {@link ArrayList}&lt;{@link RecognizerInfo}&gt;
+     * containing info about the filtered speech recognition services.
+     */
+    static ArrayList<RecognizerInfo> validRecognitionServices(Context context) {
+        final List<ResolveInfo> resolvedRecognitionServices =
+                context.getPackageManager().queryIntentServices(
+                        new Intent(RecognitionService.SERVICE_INTERFACE),
+                        PackageManager.GET_META_DATA);
+
+        final ArrayList<RecognizerInfo> validRecognitionServices = new ArrayList<>();
+
+        for (ResolveInfo resolveInfo: resolvedRecognitionServices) {
+            final ServiceInfo serviceInfo = resolveInfo.serviceInfo;
+
+            final Pair<String, Boolean> recognitionServiceAttributes =
+                    parseRecognitionServiceXmlMetadata(context, serviceInfo);
+
+            if (recognitionServiceAttributes != null) {
+                validRecognitionServices.add(new RecognizerInfo(
+                        context.getPackageManager(),
+                        serviceInfo,
+                        recognitionServiceAttributes.first      /* settingsActivity */,
+                        recognitionServiceAttributes.second     /* selectableAsDefault */));
+            }
+        }
+
+        return validRecognitionServices;
+    }
+
+    /**
+     * Load recognition service's xml meta-data and parse it. Return the meta-data attributes,
+     * namely, `settingsActivity` {@link String} and `selectableAsDefault` {@link Boolean}.
+     *
+     * <p>Parsing fails if the meta-data for the given service is not found
+     * or the found meta-data does not start with a `recognition-service`.</p>
+     *
+     * @param context {@link Context} inside which the settings app is run.
+     * @param serviceInfo {@link ServiceInfo} containing info
+     * about the speech recognition service in question.
+     *
+     * @return {@link Pair}&lt;{@link String}, {@link Boolean}&gt;  containing `settingsActivity`
+     * and `selectableAsDefault` attributes if the parsing was successful, {@code null} otherwise.
+     */
+    private static Pair<String, Boolean> parseRecognitionServiceXmlMetadata(
+            Context context, ServiceInfo serviceInfo) {
+        // Default recognition service attribute values.
+        // Every recognizer can be selected unless specified otherwise.
+        String settingsActivity;
+        boolean selectableAsDefault = true;
+
+        // Parse xml meta-data.
+        try (XmlResourceParser parser = serviceInfo.loadXmlMetaData(
+                context.getPackageManager(), RecognitionService.SERVICE_META_DATA)) {
+            if (parser == null) {
+                throw new XmlPullParserException(String.format("No %s meta-data for %s package",
+                        RecognitionService.SERVICE_META_DATA, serviceInfo.packageName));
+            }
+
+            final Resources res = context.getPackageManager().getResourcesForApplication(
+                    serviceInfo.applicationInfo);
+            final AttributeSet attrs = Xml.asAttributeSet(parser);
+
+            // Xml meta-data must start with a `recognition-service tag`.
+            int type;
+            while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                    && type != XmlPullParser.START_TAG) {
+                // Intentionally do nothing.
+            }
+
+            final String nodeName = parser.getName();
+            if (!"recognition-service".equals(nodeName)) {
+                throw new XmlPullParserException(String.format(
+                        "%s package meta-data does not start with a `recognition-service` tag",
+                        serviceInfo.packageName));
+            }
+
+            final TypedArray array = res.obtainAttributes(attrs,
+                    com.android.internal.R.styleable.RecognitionService);
+            settingsActivity = array.getString(
+                    com.android.internal.R.styleable.RecognitionService_settingsActivity);
+            selectableAsDefault = array.getBoolean(
+                    com.android.internal.R.styleable.RecognitionService_selectableAsDefault,
+                    selectableAsDefault);
+            array.recycle();
+        } catch (XmlPullParserException | IOException
+                | PackageManager.NameNotFoundException e) {
+            Log.e(TAG, String.format("Error parsing %s package recognition service meta-data",
+                    serviceInfo.packageName), e);
+            return null;
+        }
+
+        return Pair.create(settingsActivity, selectableAsDefault);
+    }
 }
diff --git a/src/com/android/settings/network/ProviderModelSlice.java b/src/com/android/settings/network/ProviderModelSlice.java
index 0aae349..86ba563 100644
--- a/src/com/android/settings/network/ProviderModelSlice.java
+++ b/src/com/android/settings/network/ProviderModelSlice.java
@@ -34,6 +34,7 @@
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.telephony.SubscriptionManager;
+import android.util.EventLog;
 import android.util.Log;
 import android.view.WindowManager.LayoutParams;
 
@@ -103,6 +104,12 @@
         //  Fifth section: Add the Wi-Fi items which are not connected.
         //  Sixth section: Add the See All item.
         final ListBuilder listBuilder = mHelper.createListBuilder(getUri());
+        if (isGuestUser(mContext)) {
+            Log.e(TAG, "Guest user is not allowed to configure Internet!");
+            EventLog.writeEvent(0x534e4554, "227470877", -1 /* UID */, "User is a guest");
+            return listBuilder.build();
+        }
+
         int maxListSize = 0;
         final NetworkProviderWorker worker = getWorker();
         if (worker != null) {
@@ -297,6 +304,8 @@
 
     @Override
     public Class getBackgroundWorkerClass() {
+        if (isGuestUser(mContext)) return null;
+
         return NetworkProviderWorker.class;
     }
 
diff --git a/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroup.java b/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroup.java
index 14bdd41..688084f 100644
--- a/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroup.java
+++ b/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroup.java
@@ -74,6 +74,7 @@
     private Map<Integer, PhoneAccountHandle> mSimCallManagerList = new HashMap<>();
     private Map<Integer, Preference> mWifiCallingForSubPreferences;
     private List<SubscriptionInfo> mSubInfoListForWfc;
+    private SubscriptionsChangeListener mChangeListener;
 
     public NetworkProviderWifiCallingGroup(Context context, Lifecycle lifecycle,
             String preferenceGroupKey) {
@@ -87,26 +88,25 @@
             mTelephonyCallback = new PhoneCallStateTelephonyCallback();
         }
         lifecycle.addObserver(this);
+        mChangeListener = new SubscriptionsChangeListener(context, this);
     }
 
     private void setSubscriptionInfoList(Context context) {
         mSubInfoListForWfc = new ArrayList<>(
                 SubscriptionUtil.getActiveSubscriptions(mSubscriptionManager));
-        if (mSubInfoListForWfc != null) {
-            mSubInfoListForWfc.removeIf(info -> {
-                final int subId = info.getSubscriptionId();
-                setTelephonyManagerForSubscriptionId(context, subId);
-                setPhoneAccountHandleForSubscriptionId(context, subId);
-                boolean isExisted = mSubInfoListForWfc.contains(info);
-                boolean shouldShowWfcForSub = shouldShowWifiCallingForSub(subId);
-                if (!shouldShowWfcForSub && isExisted) {
-                    return true;
-                }
-                return false;
-            });
-        } else {
-            Log.d(TAG, "No active subscriptions");
-        }
+        mSubInfoListForWfc.removeIf(info -> {
+            final int subId = info.getSubscriptionId();
+            setTelephonyManagerForSubscriptionId(context, subId);
+            setPhoneAccountHandleForSubscriptionId(context, subId);
+            boolean isExisted = mSubInfoListForWfc.contains(info);
+            boolean shouldShowWfcForSub = shouldShowWifiCallingForSub(subId);
+            if (!shouldShowWfcForSub && isExisted) {
+                return true;
+            }
+            return false;
+        });
+        Log.d(TAG, "setSubscriptionInfoList: mSubInfoListForWfc size:"
+                + mSubInfoListForWfc.size());
     }
 
     private void setTelephonyManagerForSubscriptionId(Context context, int subId) {
@@ -137,12 +137,18 @@
 
     @OnLifecycleEvent(Event.ON_RESUME)
     public void onResume() {
+        if (mChangeListener != null) {
+            mChangeListener.start();
+        }
         updateListener();
         update();
     }
 
     @OnLifecycleEvent(Event.ON_PAUSE)
     public void onPause() {
+        if (mChangeListener != null) {
+            mChangeListener.stop();
+        }
         if ((mTelephonyCallback != null)) {
             mTelephonyCallback.unregister();
         }
@@ -176,6 +182,7 @@
 
     private void update() {
         if (mPreferenceGroup == null) {
+            Log.d(TAG, "mPreferenceGroup == null");
             return;
         }
 
@@ -255,7 +262,11 @@
 
     @Override
     public void onSubscriptionsChanged() {
+        Log.d(TAG, "onSubscriptionsChanged:");
         setSubscriptionInfoList(mContext);
+        if (mPreferenceGroup != null) {
+            mPreferenceGroup.setVisible(isAvailable());
+        }
         updateListener();
         update();
     }
@@ -322,6 +333,7 @@
                         CarrierConfigManager.KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL);
             }
         }
+        Log.d(TAG, "isWifiCallingAvailableForCarrier:" + isWifiCallingAvailableForCarrier);
         return isWifiCallingAvailableForCarrier;
     }
 
diff --git a/src/com/android/settings/notification/zen/ZenModeAutomationSettings.java b/src/com/android/settings/notification/zen/ZenModeAutomationSettings.java
index 31a4ba7..4f18e5d 100644
--- a/src/com/android/settings/notification/zen/ZenModeAutomationSettings.java
+++ b/src/com/android/settings/notification/zen/ZenModeAutomationSettings.java
@@ -51,16 +51,6 @@
     private boolean[] mDeleteDialogChecked;
 
     @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        Bundle bundle = getArguments();
-        if (bundle != null && bundle.containsKey(DELETE)) {
-            mBackend.removeZenRule(bundle.getString(DELETE));
-            bundle.remove(DELETE);
-        }
-    }
-
-    @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         ZenServiceListing serviceListing = new ZenServiceListing(getContext(), CONFIG);
         serviceListing.reloadApprovedServices();
diff --git a/src/com/android/settings/notification/zen/ZenRuleButtonsPreferenceController.java b/src/com/android/settings/notification/zen/ZenRuleButtonsPreferenceController.java
index 3b7cde0..023a770 100644
--- a/src/com/android/settings/notification/zen/ZenRuleButtonsPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenRuleButtonsPreferenceController.java
@@ -103,8 +103,7 @@
                     new ZenDeleteRuleDialog.PositiveClickListener() {
                         @Override
                         public void onOk(String id) {
-                            Bundle bundle = new Bundle();
-                            bundle.putString(ZenModeAutomationSettings.DELETE, id);
+                            mBackend.removeZenRule(id);
                             mMetricsFeatureProvider.action(mContext,
                                     SettingsEnums.ACTION_ZEN_DELETE_RULE_OK);
                             new SubSettingLauncher(mContext)
@@ -112,7 +111,6 @@
                                     .setDestination(ZenModeAutomationSettings.class.getName())
                                     .setSourceMetricsCategory(MetricsProto.MetricsEvent
                                             .NOTIFICATION_ZEN_MODE_AUTOMATION)
-                                    .setArguments(bundle)
                                     .launch();
                         }
             });
diff --git a/src/com/android/settings/overlay/FeatureFactory.java b/src/com/android/settings/overlay/FeatureFactory.java
index aff7197..c59b385 100644
--- a/src/com/android/settings/overlay/FeatureFactory.java
+++ b/src/com/android/settings/overlay/FeatureFactory.java
@@ -45,6 +45,7 @@
 import com.android.settings.security.SecuritySettingsFeatureProvider;
 import com.android.settings.slices.SlicesFeatureProvider;
 import com.android.settings.users.UserFeatureProvider;
+import com.android.settings.vpn2.AdvancedVpnFeatureProvider;
 import com.android.settings.wifi.WifiTrackerLibProvider;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
@@ -177,6 +178,11 @@
      */
     public abstract AccessibilityMetricsFeatureProvider getAccessibilityMetricsFeatureProvider();
 
+    /**
+     * Retrieves implementation for advanced vpn feature.
+     */
+    public abstract AdvancedVpnFeatureProvider getAdvancedVpnFeatureProvider();
+
     public static final class FactoryNotFoundException extends RuntimeException {
         public FactoryNotFoundException(Throwable throwable) {
             super("Unable to create factory. Did you misconfigure Proguard?", throwable);
diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java
index 89f74de..593b866 100644
--- a/src/com/android/settings/overlay/FeatureFactoryImpl.java
+++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java
@@ -71,6 +71,8 @@
 import com.android.settings.slices.SlicesFeatureProviderImpl;
 import com.android.settings.users.UserFeatureProvider;
 import com.android.settings.users.UserFeatureProviderImpl;
+import com.android.settings.vpn2.AdvancedVpnFeatureProvider;
+import com.android.settings.vpn2.AdvancedVpnFeatureProviderImpl;
 import com.android.settings.wifi.WifiTrackerLibProvider;
 import com.android.settings.wifi.WifiTrackerLibProviderImpl;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -106,6 +108,7 @@
     private SecuritySettingsFeatureProvider mSecuritySettingsFeatureProvider;
     private AccessibilitySearchFeatureProvider mAccessibilitySearchFeatureProvider;
     private AccessibilityMetricsFeatureProvider mAccessibilityMetricsFeatureProvider;
+    private AdvancedVpnFeatureProvider mAdvancedVpnFeatureProvider;
 
     @Override
     public SupportFeatureProvider getSupportFeatureProvider(Context context) {
@@ -334,4 +337,12 @@
         }
         return mAccessibilityMetricsFeatureProvider;
     }
+
+    @Override
+    public AdvancedVpnFeatureProvider getAdvancedVpnFeatureProvider() {
+        if (mAdvancedVpnFeatureProvider == null) {
+            mAdvancedVpnFeatureProvider = new AdvancedVpnFeatureProviderImpl();
+        }
+        return mAdvancedVpnFeatureProvider;
+    }
 }
diff --git a/src/com/android/settings/password/SetupChooseLockPattern.java b/src/com/android/settings/password/SetupChooseLockPattern.java
index 7151c6d..fd925ec 100644
--- a/src/com/android/settings/password/SetupChooseLockPattern.java
+++ b/src/com/android/settings/password/SetupChooseLockPattern.java
@@ -143,7 +143,8 @@
             }
 
             final GlifLayout layout = getActivity().findViewById(R.id.setup_wizard_layout);
-            layout.setDescriptionText("");
+            layout.setDescriptionText(
+                    getString(R.string.lockpassword_choose_your_pattern_description));
         }
 
         @Override
diff --git a/src/com/android/settings/privacy/PrivacyControlsFragment.java b/src/com/android/settings/privacy/PrivacyControlsFragment.java
index 7b33364..1d9a4712 100644
--- a/src/com/android/settings/privacy/PrivacyControlsFragment.java
+++ b/src/com/android/settings/privacy/PrivacyControlsFragment.java
@@ -33,15 +33,12 @@
     private static final String TAG = "PrivacyDashboardFrag";
     private static final String CAMERA_KEY = "privacy_camera_toggle";
     private static final String MIC_KEY = "privacy_mic_toggle";
-    private static final String LOCATION_KEY = "privacy_location_toggle";
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
         controllers.add(new CameraToggleController(context, CAMERA_KEY));
         controllers.add(new MicToggleController(context, MIC_KEY));
-        controllers.add(new LocationToggleController(context, LOCATION_KEY,
-                getSettingsLifecycle()));
         controllers.add(new ShowClipAccessNotificationPreferenceController(context));
         return controllers;
     }
diff --git a/src/com/android/settings/safetycenter/BiometricsSafetySource.java b/src/com/android/settings/safetycenter/BiometricsSafetySource.java
index 738268c..d3e3189 100644
--- a/src/com/android/settings/safetycenter/BiometricsSafetySource.java
+++ b/src/com/android/settings/safetycenter/BiometricsSafetySource.java
@@ -39,6 +39,9 @@
 public final class BiometricsSafetySource {
 
     public static final String SAFETY_SOURCE_ID = "AndroidBiometrics";
+    private static final int REQUEST_CODE_COMBINED_BIOMETRIC_SETTING = 10;
+    private static final int REQUEST_CODE_FACE_SETTING = 20;
+    private static final int REQUEST_CODE_FINGERPRINT_SETTING = 30;
 
     private BiometricsSafetySource() {
     }
@@ -62,9 +65,11 @@
             setBiometricSafetySourceData(context,
                     context.getString(R.string.security_settings_biometric_preference_title),
                     combinedBiometricStatusUtils.getSummary(),
-                    biometricNavigationUtils.getBiometricSettingsIntent(context,
-                            combinedBiometricStatusUtils.getSettingsClassName(), disablingAdmin,
-                            Bundle.EMPTY),
+                    createPendingIntent(context,
+                            biometricNavigationUtils.getBiometricSettingsIntent(context,
+                                    combinedBiometricStatusUtils.getSettingsClassName(),
+                                    disablingAdmin, Bundle.EMPTY),
+                            REQUEST_CODE_COMBINED_BIOMETRIC_SETTING),
                     disablingAdmin == null /* enabled */,
                     combinedBiometricStatusUtils.hasEnrolled(),
                     safetyEvent);
@@ -80,9 +85,11 @@
             setBiometricSafetySourceData(context,
                     context.getString(R.string.security_settings_face_preference_title),
                     faceStatusUtils.getSummary(),
-                    biometricNavigationUtils.getBiometricSettingsIntent(context,
-                            faceStatusUtils.getSettingsClassName(), disablingAdmin,
-                            Bundle.EMPTY),
+                    createPendingIntent(context,
+                            biometricNavigationUtils.getBiometricSettingsIntent(context,
+                                    faceStatusUtils.getSettingsClassName(), disablingAdmin,
+                                    Bundle.EMPTY),
+                            REQUEST_CODE_FACE_SETTING),
                     disablingAdmin == null /* enabled */,
                     faceStatusUtils.hasEnrolled(),
                     safetyEvent);
@@ -100,9 +107,11 @@
             setBiometricSafetySourceData(context,
                     context.getString(R.string.security_settings_fingerprint_preference_title),
                     fingerprintStatusUtils.getSummary(),
-                    biometricNavigationUtils.getBiometricSettingsIntent(context,
-                            fingerprintStatusUtils.getSettingsClassName(), disablingAdmin,
-                            Bundle.EMPTY),
+                    createPendingIntent(context,
+                            biometricNavigationUtils.getBiometricSettingsIntent(context,
+                                    fingerprintStatusUtils.getSettingsClassName(), disablingAdmin,
+                                    Bundle.EMPTY),
+                            REQUEST_CODE_FINGERPRINT_SETTING),
                     disablingAdmin == null /* enabled */,
                     fingerprintStatusUtils.hasEnrolled(),
                     safetyEvent);
@@ -118,8 +127,8 @@
     }
 
     private static void setBiometricSafetySourceData(Context context, String title, String summary,
-            Intent clickIntent, boolean enabled, boolean hasEnrolled, SafetyEvent safetyEvent) {
-        final PendingIntent pendingIntent = createPendingIntent(context, clickIntent);
+            PendingIntent pendingIntent, boolean enabled, boolean hasEnrolled,
+            SafetyEvent safetyEvent) {
         final int severityLevel =
                 enabled && hasEnrolled ? SafetySourceData.SEVERITY_LEVEL_INFORMATION
                         : SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED;
@@ -133,11 +142,12 @@
                 context, SAFETY_SOURCE_ID, safetySourceData, safetyEvent);
     }
 
-    private static PendingIntent createPendingIntent(Context context, Intent intent) {
+    private static PendingIntent createPendingIntent(Context context, Intent intent,
+            int requestCode) {
         return PendingIntent
                 .getActivity(
                         context,
-                        0 /* requestCode */,
+                        requestCode,
                         intent,
                         PendingIntent.FLAG_IMMUTABLE);
     }
diff --git a/src/com/android/settings/safetycenter/LockScreenSafetySource.java b/src/com/android/settings/safetycenter/LockScreenSafetySource.java
index 6295268..bdc0a09 100644
--- a/src/com/android/settings/safetycenter/LockScreenSafetySource.java
+++ b/src/com/android/settings/safetycenter/LockScreenSafetySource.java
@@ -42,6 +42,9 @@
     public static final String NO_SCREEN_LOCK_ISSUE_TYPE_ID = "NoScreenLockIssueType";
     public static final String SET_SCREEN_LOCK_ACTION_ID = "SetScreenLockAction";
 
+    private static final int REQUEST_CODE_SCREEN_LOCK = 1;
+    private static final int REQUEST_CODE_SCREEN_LOCK_SETTINGS = 2;
+
     private LockScreenSafetySource() {
     }
 
@@ -62,7 +65,7 @@
                 .checkIfPasswordQualityIsSet(context, userId);
         final PendingIntent pendingIntent = createPendingIntent(context,
                 screenLockPreferenceDetailsUtils.getLaunchChooseLockGenericFragmentIntent(
-                        SettingsEnums.SAFETY_CENTER));
+                        SettingsEnums.SAFETY_CENTER), REQUEST_CODE_SCREEN_LOCK);
         final IconAction gearMenuIconAction = createGearMenuIconAction(context,
                 screenLockPreferenceDetailsUtils);
         final boolean enabled =
@@ -114,15 +117,17 @@
                 IconAction.ICON_TYPE_GEAR,
                 createPendingIntent(context,
                         screenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent(
-                                SettingsEnums.SAFETY_CENTER)))
+                                SettingsEnums.SAFETY_CENTER),
+                        REQUEST_CODE_SCREEN_LOCK_SETTINGS))
                 : null;
     }
 
-    private static PendingIntent createPendingIntent(Context context, Intent intent) {
+    private static PendingIntent createPendingIntent(Context context, Intent intent,
+            int requestCode) {
         return PendingIntent
                 .getActivity(
                         context,
-                        0 /* requestCode */,
+                        requestCode,
                         intent,
                         PendingIntent.FLAG_IMMUTABLE);
     }
diff --git a/src/com/android/settings/search/CustomSiteMapRegistry.java b/src/com/android/settings/search/CustomSiteMapRegistry.java
index ab33fa2..1777cb8 100644
--- a/src/com/android/settings/search/CustomSiteMapRegistry.java
+++ b/src/com/android/settings/search/CustomSiteMapRegistry.java
@@ -21,8 +21,8 @@
 import com.android.settings.backup.UserBackupSettingsActivity;
 import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
 import com.android.settings.connecteddevice.usb.UsbDetailsFragment;
-import com.android.settings.fuelgauge.PowerUsageAdvanced;
-import com.android.settings.fuelgauge.PowerUsageSummary;
+import com.android.settings.fuelgauge.batteryusage.PowerUsageAdvanced;
+import com.android.settings.fuelgauge.batteryusage.PowerUsageSummary;
 import com.android.settings.gestures.GestureNavigationSettingsFragment;
 import com.android.settings.gestures.SystemNavigationGestureSettings;
 import com.android.settings.location.LocationSettings;
diff --git a/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java b/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
index c871e9f..89ee19b 100644
--- a/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
+++ b/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
@@ -46,6 +46,7 @@
 import com.android.settings.R;
 import com.android.settings.Settings;
 import com.android.settings.Settings.TetherSettingsActivity;
+import com.android.settings.activityembedding.ActivityEmbeddingUtils;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.gestures.OneHandedSettingsUtils;
 import com.android.settings.overlay.FeatureFactory;
@@ -127,7 +128,7 @@
                     return false;
                 }
                 final Intent shortcutIntent = createResultIntent(
-                        buildShortcutIntent(info),
+                        buildShortcutIntent(uiContext, info),
                         info, clickTarget.getTitle());
                 mHost.setResult(Activity.RESULT_OK, shortcutIntent);
                 logCreateShortcut(info);
@@ -210,10 +211,14 @@
                 info.activityInfo.name);
     }
 
-    private static Intent buildShortcutIntent(ResolveInfo info) {
-        return new Intent(SHORTCUT_PROBE)
+    private static Intent buildShortcutIntent(Context context, ResolveInfo info) {
+        Intent intent = new Intent(SHORTCUT_PROBE)
                 .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP)
                 .setClassName(info.activityInfo.packageName, info.activityInfo.name);
+        if (ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) {
+            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
+        }
+        return intent;
     }
 
     private static ShortcutInfo createShortcutInfo(Context context, Intent shortcutIntent,
@@ -277,8 +282,8 @@
                 ResolveInfo ri = context.getPackageManager().resolveActivity(si.getIntent(), 0);
 
                 if (ri != null) {
-                    updatedShortcuts.add(createShortcutInfo(context, buildShortcutIntent(ri), ri,
-                            si.getShortLabel()));
+                    updatedShortcuts.add(createShortcutInfo(context,
+                            buildShortcutIntent(context, ri), ri, si.getShortLabel()));
                 }
             }
         }
diff --git a/src/com/android/settings/users/AutoSyncWorkDataPreferenceController.java b/src/com/android/settings/users/AutoSyncWorkDataPreferenceController.java
index fb57173..9ac1b87 100644
--- a/src/com/android/settings/users/AutoSyncWorkDataPreferenceController.java
+++ b/src/com/android/settings/users/AutoSyncWorkDataPreferenceController.java
@@ -22,7 +22,8 @@
 
 import com.android.settings.Utils;
 
-public class AutoSyncWorkDataPreferenceController extends AutoSyncPersonalDataPreferenceController {
+/** An account sync data preference controller for work */
+public class AutoSyncWorkDataPreferenceController extends AutoSyncDataPreferenceController {
 
     private static final String KEY_AUTO_SYNC_WORK_ACCOUNT = "auto_sync_work_account_data";
 
@@ -38,6 +39,7 @@
 
     @Override
     public boolean isAvailable() {
+        mUserHandle = Utils.getManagedProfileWithDisabled(mUserManager);
         return mUserHandle != null && !mUserManager.isManagedProfile() && !mUserManager.isLinkedUser()
                 && mUserManager.getProfiles(UserHandle.myUserId()).size() > 1;
     }
diff --git a/src/com/android/settings/users/RemoveGuestOnExitPreferenceController.java b/src/com/android/settings/users/RemoveGuestOnExitPreferenceController.java
new file mode 100644
index 0000000..182494c
--- /dev/null
+++ b/src/com/android/settings/users/RemoveGuestOnExitPreferenceController.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.users;
+
+import android.app.Dialog;
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.util.FeatureFlagUtils;
+import android.util.Log;
+
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settingslib.RestrictedSwitchPreference;
+
+/**
+ * Controller to control the preference toggle for "remove guest on exit"
+ *
+ * Note, class is not 'final' since we need to mock it for unit tests
+ */
+public class RemoveGuestOnExitPreferenceController extends BasePreferenceController
+                implements  Preference.OnPreferenceChangeListener {
+
+    private static final String TAG = RemoveGuestOnExitPreferenceController.class.getSimpleName();
+    private static final String TAG_CONFIRM_GUEST_REMOVE = "confirmGuestRemove";
+    private static final int REMOVE_GUEST_ON_EXIT_DEFAULT = 1;
+
+    private final UserCapabilities mUserCaps;
+    private final UserManager mUserManager;
+    private final Fragment mParentFragment;
+    private final Handler mHandler;
+
+    public RemoveGuestOnExitPreferenceController(Context context, String key,
+            Fragment parent, Handler handler) {
+        super(context, key);
+        mUserCaps = UserCapabilities.create(context);
+        mUserManager = context.getSystemService(UserManager.class);
+        mParentFragment = parent;
+        mHandler = handler;
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        mUserCaps.updateAddUserCapabilities(mContext);
+        final RestrictedSwitchPreference restrictedSwitchPreference =
+                (RestrictedSwitchPreference) preference;
+        restrictedSwitchPreference.setChecked(isChecked());
+        if (!isAvailable()) {
+            restrictedSwitchPreference.setVisible(false);
+        } else {
+            restrictedSwitchPreference.setDisabledByAdmin(
+                    mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
+            restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
+        }
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        // if guest is forced to be ephemeral via config_guestUserEphemeral
+        // then disable this controller
+        // also disable this controller for non-admin users
+        // also disable when config_guestUserAllowEphemeralStateChange is false
+        if (mUserManager.isGuestUserAlwaysEphemeral()
+                || !UserManager.isGuestUserAllowEphemeralStateChange()
+                || !mUserCaps.isAdmin()
+                || mUserCaps.disallowAddUser()
+                || mUserCaps.disallowAddUserSetByAdmin()
+                || !FeatureFlagUtils.isEnabled(mContext,
+                        FeatureFlagUtils.SETTINGS_GUEST_MODE_UX_CHANGES)) {
+            return DISABLED_FOR_USER;
+        } else {
+            return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+        }
+    }
+
+    private boolean isChecked() {
+        return Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.REMOVE_GUEST_ON_EXIT, REMOVE_GUEST_ON_EXIT_DEFAULT) != 0;
+    }
+
+    private static boolean setChecked(Context context, boolean isChecked) {
+        Settings.Global.putInt(context.getContentResolver(),
+                Settings.Global.REMOVE_GUEST_ON_EXIT, isChecked ? 1 : 0);
+        return true;
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        boolean enable = (boolean) newValue;
+        UserInfo guestInfo = mUserManager.findCurrentGuestUser();
+
+        // no guest do the setting and return
+        // guest ephemeral state will take effect on guest create
+        if (guestInfo == null) {
+            return setChecked(mContext, enable);
+        }
+        // if guest has never been initialized or started
+        // we can change guest ephemeral state
+        if (!guestInfo.isInitialized()) {
+            boolean isSuccess = mUserManager.setUserEphemeral(guestInfo.id, enable);
+            if (isSuccess) {
+                return setChecked(mContext, enable);
+            } else {
+                Log.w(TAG, "Unused guest, id=" + guestInfo.id
+                        + ". Mark ephemeral as " + enable + " failed !!!");
+                return false;
+            }
+        }
+        // if guest has been used before and is not ephemeral
+        // but now we are making reset guest on exit preference as enabled
+        // then show confirmation dialog box and remove this guest if confirmed by user
+        if (guestInfo.isInitialized() && !guestInfo.isEphemeral() && enable) {
+            ConfirmGuestRemoveFragment.show(mParentFragment,
+                    mHandler,
+                    enable,
+                    guestInfo.id,
+                    (RestrictedSwitchPreference) preference);
+            return false;
+        }
+        // all other cases, there should be none, don't change state
+        return false;
+    }
+
+
+    /**
+     * Dialog to confirm guest removal on toggle clicked set to true
+     *
+     * Fragment must be a public static class to be  properly recreated from instance state
+     * else we will get "AndroidRuntime: java.lang.IllegalStateException"
+     */
+    public static final class ConfirmGuestRemoveFragment extends InstrumentedDialogFragment
+            implements DialogInterface.OnClickListener {
+
+        private static final String TAG = ConfirmGuestRemoveFragment.class.getSimpleName();
+        private static final String SAVE_ENABLING = "enabling";
+        private static final String SAVE_GUEST_USER_ID = "guestUserId";
+
+        private boolean mEnabling;
+        private int mGuestUserId;
+        private RestrictedSwitchPreference mPreference;
+        private Handler mHandler;
+
+        private static void show(Fragment parent,
+                Handler handler,
+                boolean enabling, int guestUserId,
+                RestrictedSwitchPreference preference) {
+            if (!parent.isAdded()) return;
+
+            final ConfirmGuestRemoveFragment dialog = new ConfirmGuestRemoveFragment();
+            dialog.mHandler = handler;
+            dialog.mEnabling = enabling;
+            dialog.mGuestUserId = guestUserId;
+            dialog.setTargetFragment(parent, 0);
+            dialog.mPreference = preference;
+            dialog.show(parent.getFragmentManager(), TAG_CONFIRM_GUEST_REMOVE);
+        }
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            final Context context = getActivity();
+            if (savedInstanceState != null) {
+                mEnabling = savedInstanceState.getBoolean(SAVE_ENABLING);
+                mGuestUserId = savedInstanceState.getInt(SAVE_GUEST_USER_ID);
+            }
+
+            final AlertDialog.Builder builder = new AlertDialog.Builder(context);
+            builder.setTitle(R.string.remove_guest_on_exit_dialog_title);
+            builder.setMessage(R.string.remove_guest_on_exit_dialog_message);
+            builder.setPositiveButton(
+                        com.android.settingslib.R.string.guest_exit_clear_data_button, this);
+            builder.setNegativeButton(android.R.string.cancel, null);
+
+            return builder.create();
+        }
+
+        @Override
+        public void onSaveInstanceState(Bundle outState) {
+            super.onSaveInstanceState(outState);
+            outState.putBoolean(SAVE_ENABLING, mEnabling);
+            outState.putInt(SAVE_GUEST_USER_ID, mGuestUserId);
+        }
+
+        @Override
+        public int getMetricsCategory() {
+            return SettingsEnums.DIALOG_USER_REMOVE;
+        }
+
+        @Override
+        public void onClick(DialogInterface dialog, int which) {
+            if (which != DialogInterface.BUTTON_POSITIVE) {
+                return;
+            }
+            UserManager userManager = getContext().getSystemService(UserManager.class);
+            if (userManager == null) {
+                Log.e(TAG, "Unable to get user manager service");
+                return;
+            }
+            UserInfo guestUserInfo = userManager.getUserInfo(mGuestUserId);
+            // only do action for guests and when enabling the preference
+            if (guestUserInfo == null || !guestUserInfo.isGuest() || !mEnabling) {
+                Log.w(TAG, "Removing guest user ... failed, id=" + mGuestUserId);
+                return;
+            }
+            if (mPreference != null) {
+                // Using markGuestForDeletion allows us to create a new guest before this one is
+                // fully removed.
+                boolean isSuccess = userManager.markGuestForDeletion(guestUserInfo.id);
+                if (!isSuccess) {
+                    Log.w(TAG, "Couldn't mark the guest for deletion for user "
+                            + guestUserInfo.id);
+                    return;
+                }
+                userManager.removeUser(guestUserInfo.id);
+                if (setChecked(getContext(), mEnabling)) {
+                    mPreference.setChecked(mEnabling);
+                    mHandler.sendEmptyMessage(
+                                UserSettings
+                                    .MESSAGE_REMOVE_GUEST_ON_EXIT_CONTROLLER_GUEST_REMOVED);
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/users/UserCapabilities.java b/src/com/android/settings/users/UserCapabilities.java
index 620738f..cf0e10b 100644
--- a/src/com/android/settings/users/UserCapabilities.java
+++ b/src/com/android/settings/users/UserCapabilities.java
@@ -34,6 +34,7 @@
     boolean mCanAddRestrictedProfile;
     boolean mIsAdmin;
     boolean mIsGuest;
+    boolean mIsEphemeral;
     boolean mUserSwitcherEnabled;
     boolean mCanAddGuest;
     boolean mDisallowAddUser;
@@ -56,6 +57,7 @@
         final UserInfo myUserInfo = userManager.getUserInfo(UserHandle.myUserId());
         caps.mIsGuest = myUserInfo.isGuest();
         caps.mIsAdmin = myUserInfo.isAdmin();
+        caps.mIsEphemeral = myUserInfo.isEphemeral();
         DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
                 Context.DEVICE_POLICY_SERVICE);
 
diff --git a/src/com/android/settings/users/UserDetailsSettings.java b/src/com/android/settings/users/UserDetailsSettings.java
index 9976040..3f51b83 100644
--- a/src/com/android/settings/users/UserDetailsSettings.java
+++ b/src/com/android/settings/users/UserDetailsSettings.java
@@ -73,6 +73,7 @@
     private static final int DIALOG_CONFIRM_ENABLE_CALLING_AND_SMS = 3;
     private static final int DIALOG_SETUP_USER = 4;
     private static final int DIALOG_CONFIRM_RESET_GUEST = 5;
+    private static final int DIALOG_CONFIRM_RESET_GUEST_AND_SWITCH_USER = 6;
 
     /** Whether to enable the app_copying fragment. */
     private static final boolean SHOW_APP_COPYING_PREF = false;
@@ -142,6 +143,11 @@
             if (canSwitchUserNow()) {
                 if (shouldShowSetupPromptDialog()) {
                     showDialog(DIALOG_SETUP_USER);
+                } else if (mUserCaps.mIsGuest && mUserCaps.mIsEphemeral) {
+                    // if we are switching away from a ephemeral guest then,
+                    // show a dialog that guest user will be reset and then switch
+                    // the user
+                    showDialog(DIALOG_CONFIRM_RESET_GUEST_AND_SWITCH_USER);
                 } else {
                     switchUser();
                 }
@@ -173,6 +179,7 @@
         switch (dialogId) {
             case DIALOG_CONFIRM_REMOVE:
             case DIALOG_CONFIRM_RESET_GUEST:
+            case DIALOG_CONFIRM_RESET_GUEST_AND_SWITCH_USER:
                 return SettingsEnums.DIALOG_USER_REMOVE;
             case DIALOG_CONFIRM_ENABLE_CALLING:
                 return SettingsEnums.DIALOG_USER_ENABLE_CALLING;
@@ -216,6 +223,14 @@
                     return UserDialogs.createRemoveGuestDialog(getActivity(),
                         (dialog, which) -> resetGuest());
                 }
+            case DIALOG_CONFIRM_RESET_GUEST_AND_SWITCH_USER:
+                if (mGuestUserAutoCreated) {
+                    return UserDialogs.createResetGuestDialog(getActivity(),
+                        (dialog, which) -> switchUser());
+                } else {
+                    return UserDialogs.createRemoveGuestDialog(getActivity(),
+                        (dialog, which) -> switchUser());
+                }
         }
         throw new IllegalArgumentException("Unsupported dialogId " + dialogId);
     }
@@ -361,6 +376,16 @@
             if (mUserInfo.isGuest()) {
                 mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_SWITCH_TO_GUEST);
             }
+            if (mUserCaps.mIsGuest && mUserCaps.mIsEphemeral) {
+                int guestUserId = UserHandle.myUserId();
+                // Using markGuestForDeletion allows us to create a new guest before this one is
+                // fully removed.
+                boolean marked = mUserManager.markGuestForDeletion(guestUserId);
+                if (!marked) {
+                    Log.w(TAG, "Couldn't mark the guest for deletion for user " + guestUserId);
+                    return;
+                }
+            }
             ActivityManager.getService().switchUser(mUserInfo.id);
         } catch (RemoteException re) {
             Log.e(TAG, "Error while switching to other user.");
diff --git a/src/com/android/settings/users/UserDialogs.java b/src/com/android/settings/users/UserDialogs.java
index 8549ffe..faaff4c 100644
--- a/src/com/android/settings/users/UserDialogs.java
+++ b/src/com/android/settings/users/UserDialogs.java
@@ -189,7 +189,7 @@
             DialogInterface.OnClickListener onConfirmListener) {
         return new AlertDialog.Builder(context)
                 .setTitle(com.android.settingslib.R.string.guest_reset_guest_dialog_title)
-                .setMessage(R.string.user_exit_guest_confirm_message)
+                .setMessage(com.android.settingslib.R.string.guest_exit_dialog_message)
                 .setPositiveButton(
                         com.android.settingslib.R.string.guest_reset_guest_confirm_button,
                         onConfirmListener)
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 358b87b..ca03e3f 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -47,13 +47,16 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.ContactsContract;
+import android.provider.Settings;
 import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.util.SparseArray;
 import android.view.Gravity;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
+import android.view.WindowManagerGlobal;
 import android.widget.SimpleAdapter;
 import android.widget.Toast;
 
@@ -95,6 +98,7 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
 
 /**
  * Screen that manages the list of users on the device.
@@ -123,6 +127,13 @@
     private static final String KEY_ADD_USER_WHEN_LOCKED = "user_settings_add_users_when_locked";
     private static final String KEY_MULTIUSER_TOP_INTRO = "multiuser_top_intro";
     private static final String KEY_TIMEOUT_TO_USER_ZERO = "timeout_to_user_zero_preference";
+    private static final String KEY_GUEST_CATEGORY = "guest_category";
+    private static final String KEY_GUEST_RESET = "guest_reset";
+    private static final String KEY_GUEST_EXIT = "guest_exit";
+    private static final String KEY_REMOVE_GUEST_ON_EXIT = "remove_guest_on_exit";
+    private static final String KEY_GUEST_USER_CATEGORY = "guest_user_category";
+
+    private static final String SETTING_GUEST_HAS_LOGGED_IN = "systemui.guest_has_logged_in";
 
     private static final int MENU_REMOVE_USER = Menu.FIRST;
 
@@ -134,14 +145,18 @@
     private static final int DIALOG_USER_CANNOT_MANAGE = 5;
     private static final int DIALOG_CHOOSE_USER_TYPE = 6;
     private static final int DIALOG_NEED_LOCKSCREEN = 7;
-    private static final int DIALOG_CONFIRM_EXIT_GUEST = 8;
+    private static final int DIALOG_CONFIRM_REMOVE_GUEST = 8;
     private static final int DIALOG_USER_PROFILE_EDITOR = 9;
     private static final int DIALOG_USER_PROFILE_EDITOR_ADD_USER = 10;
     private static final int DIALOG_USER_PROFILE_EDITOR_ADD_RESTRICTED_PROFILE = 11;
-    private static final int DIALOG_CONFIRM_RESET_GUEST = 12;
+    private static final int DIALOG_CONFIRM_REMOVE_GUEST_WITH_AUTO_CREATE = 12;
+    private static final int DIALOG_CONFIRM_RESET_AND_RESTART_GUEST = 13;
+    private static final int DIALOG_CONFIRM_EXIT_GUEST_EPHEMERAL = 14;
+    private static final int DIALOG_CONFIRM_EXIT_GUEST_NON_EPHEMERAL = 15;
 
     private static final int MESSAGE_UPDATE_LIST = 1;
     private static final int MESSAGE_USER_CREATED = 2;
+    static final int MESSAGE_REMOVE_GUEST_ON_EXIT_CONTROLLER_GUEST_REMOVED = 3;
 
     private static final int USER_TYPE_USER = 1;
     private static final int USER_TYPE_RESTRICTED_PROFILE = 2;
@@ -165,6 +180,14 @@
     @VisibleForTesting
     PreferenceGroup mUserListCategory;
     @VisibleForTesting
+    PreferenceGroup mGuestUserCategory;
+    @VisibleForTesting
+    PreferenceGroup mGuestCategory;
+    @VisibleForTesting
+    Preference mGuestResetPreference;
+    @VisibleForTesting
+    Preference mGuestExitPreference;
+    @VisibleForTesting
     UserPreference mMePreference;
     @VisibleForTesting
     RestrictedPreference mAddGuest;
@@ -189,6 +212,7 @@
     private EditUserInfoController mEditUserInfoController =
             new EditUserInfoController(Utils.FILE_PROVIDER_AUTHORITY);
     private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController;
+    private RemoveGuestOnExitPreferenceController mRemoveGuestOnExitPreferenceController;
     private MultiUserTopIntroPreferenceController mMultiUserTopIntroPreferenceController;
     private TimeoutToUserZeroPreferenceController mTimeoutToUserZeroPreferenceController;
     private UserCreatingDialog mUserCreatingDialog;
@@ -213,6 +237,12 @@
                 case MESSAGE_USER_CREATED:
                     onUserCreated(msg.arg1);
                     break;
+                case MESSAGE_REMOVE_GUEST_ON_EXIT_CONTROLLER_GUEST_REMOVED:
+                    updateUserList();
+                    if (mGuestUserAutoCreated) {
+                        scheduleGuestCreation();
+                    }
+                    break;
             }
         }
     };
@@ -245,7 +275,11 @@
         final SettingsActivity activity = (SettingsActivity) getActivity();
         final SettingsMainSwitchBar switchBar = activity.getSwitchBar();
         switchBar.setTitle(getContext().getString(R.string.multiple_users_main_switch_title));
-        switchBar.show();
+        if (mUserCaps.mIsAdmin) {
+            switchBar.show();
+        } else {
+            switchBar.hide();
+        }
         mSwitchBarController = new MultiUserSwitchBarController(activity,
                 new MainSwitchBarController(switchBar), this /* listener */);
         getSettingsLifecycle().addObserver(mSwitchBarController);
@@ -267,6 +301,9 @@
         mAddUserWhenLockedPreferenceController = new AddUserWhenLockedPreferenceController(
                 activity, KEY_ADD_USER_WHEN_LOCKED);
 
+        mRemoveGuestOnExitPreferenceController = new RemoveGuestOnExitPreferenceController(
+                activity, KEY_REMOVE_GUEST_ON_EXIT, this, mHandler);
+
         mMultiUserTopIntroPreferenceController = new MultiUserTopIntroPreferenceController(activity,
                 KEY_MULTIUSER_TOP_INTRO);
 
@@ -275,12 +312,16 @@
 
         final PreferenceScreen screen = getPreferenceScreen();
         mAddUserWhenLockedPreferenceController.displayPreference(screen);
+        mRemoveGuestOnExitPreferenceController.displayPreference(screen);
         mMultiUserTopIntroPreferenceController.displayPreference(screen);
         mTimeoutToUserZeroPreferenceController.displayPreference(screen);
 
         screen.findPreference(mAddUserWhenLockedPreferenceController.getPreferenceKey())
                 .setOnPreferenceChangeListener(mAddUserWhenLockedPreferenceController);
 
+        screen.findPreference(mRemoveGuestOnExitPreferenceController.getPreferenceKey())
+                .setOnPreferenceChangeListener(mRemoveGuestOnExitPreferenceController);
+
         if (icicle != null) {
             if (icicle.containsKey(SAVE_REMOVING_USER)) {
                 mRemovingUserId = icicle.getInt(SAVE_REMOVING_USER);
@@ -304,6 +345,16 @@
             mMePreference.setSummary(R.string.user_admin);
         }
 
+        mGuestCategory = findPreference(KEY_GUEST_CATEGORY);
+
+        mGuestResetPreference = findPreference(KEY_GUEST_RESET);
+        mGuestResetPreference.setOnPreferenceClickListener(this);
+
+        mGuestExitPreference = findPreference(KEY_GUEST_EXIT);
+        mGuestExitPreference.setOnPreferenceClickListener(this);
+
+        mGuestUserCategory = findPreference(KEY_GUEST_USER_CATEGORY);
+
         mAddGuest = findPreference(KEY_ADD_GUEST);
         mAddGuest.setOnPreferenceClickListener(this);
 
@@ -339,7 +390,8 @@
                 mAddUserWhenLockedPreferenceController.getPreferenceKey()));
         mTimeoutToUserZeroPreferenceController.updateState(screen.findPreference(
                 mTimeoutToUserZeroPreferenceController.getPreferenceKey()));
-
+        mRemoveGuestOnExitPreferenceController.updateState(screen.findPreference(
+                mRemoveGuestOnExitPreferenceController.getPreferenceKey()));
         if (mShouldUpdateUserList) {
             updateUI();
         }
@@ -418,6 +470,11 @@
         updateUserList();
     }
 
+    private boolean isEnableGuestModeUxChanges() {
+        return FeatureFlagUtils.isEnabled(getContext(),
+                FeatureFlagUtils.SETTINGS_GUEST_MODE_UX_CHANGES);
+    }
+
     /**
      * Loads profile information for the current user.
      */
@@ -460,7 +517,7 @@
         int myUserId = UserHandle.myUserId();
         Bitmap b = mUserManager.getUserIcon(myUserId);
         if (b != null) {
-            mMePreference.setIcon(encircle(b));
+            mMePreference.setIcon(encircleUserIcon(b));
             mUserIcons.put(myUserId, b);
         }
     }
@@ -702,7 +759,7 @@
                         .create();
                 return dlg;
             }
-            case DIALOG_CONFIRM_EXIT_GUEST: {
+            case DIALOG_CONFIRM_REMOVE_GUEST: {
                 Dialog dlg = new AlertDialog.Builder(context)
                         .setTitle(com.android.settingslib.R.string.guest_remove_guest_dialog_title)
                         .setMessage(R.string.user_exit_guest_confirm_message)
@@ -710,13 +767,56 @@
                                 new DialogInterface.OnClickListener() {
                                     @Override
                                     public void onClick(DialogInterface dialog, int which) {
-                                        exitGuest();
+                                        clearAndExitGuest();
                                     }
                                 })
                         .setNegativeButton(android.R.string.cancel, null)
                         .create();
                 return dlg;
             }
+            case DIALOG_CONFIRM_EXIT_GUEST_EPHEMERAL: {
+                Dialog dlg = new AlertDialog.Builder(context)
+                        .setTitle(com.android.settingslib.R.string.guest_exit_dialog_title)
+                        .setMessage(com.android.settingslib.R.string.guest_exit_dialog_message)
+                        .setPositiveButton(
+                                com.android.settingslib.R.string.guest_exit_dialog_button,
+                                new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        clearAndExitGuest();
+                                    }
+                                })
+                        .setNeutralButton(android.R.string.cancel, null)
+                        .create();
+                return dlg;
+            }
+            case DIALOG_CONFIRM_EXIT_GUEST_NON_EPHEMERAL: {
+                Dialog dlg = new AlertDialog.Builder(context)
+                        .setTitle(
+                            com.android.settingslib.R.string.guest_exit_dialog_title_non_ephemeral)
+                        .setMessage(
+                            com.android.settingslib
+                                .R.string.guest_exit_dialog_message_non_ephemeral)
+                        .setPositiveButton(
+                            com.android.settingslib.R.string.guest_exit_save_data_button,
+                                new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        exitGuest();
+                                    }
+                                })
+                        .setNegativeButton(
+                            com.android.settingslib.R.string.guest_exit_clear_data_button,
+                                new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        clearAndExitGuest();
+                                    }
+                                })
+                        .setNeutralButton(android.R.string.cancel, null)
+                        .create();
+                return dlg;
+            }
             case DIALOG_USER_PROFILE_EDITOR: {
                 return buildEditCurrentUserDialog();
             }
@@ -736,14 +836,27 @@
                 }
                 return buildAddUserDialog(USER_TYPE_RESTRICTED_PROFILE);
             }
-            case DIALOG_CONFIRM_RESET_GUEST: {
-                if (mGuestUserAutoCreated) {
-                    return UserDialogs.createResetGuestDialog(getActivity(),
-                        (dialog, which) -> resetGuest());
-                } else {
-                    return UserDialogs.createRemoveGuestDialog(getActivity(),
-                        (dialog, which) -> resetGuest());
-                }
+            case DIALOG_CONFIRM_REMOVE_GUEST_WITH_AUTO_CREATE: {
+                return UserDialogs.createResetGuestDialog(getActivity(),
+                        (dialog, which) -> clearAndExitGuest());
+            }
+            case DIALOG_CONFIRM_RESET_AND_RESTART_GUEST: {
+                Dialog dlg = new AlertDialog.Builder(context)
+                        .setTitle(
+                            com.android.settingslib.R.string.guest_reset_and_restart_dialog_title)
+                        .setMessage(
+                            com.android.settingslib.R.string.guest_reset_and_restart_dialog_message)
+                        .setPositiveButton(
+                            com.android.settingslib.R.string.guest_reset_guest_confirm_button,
+                                new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        resetAndRestartGuest();
+                                    }
+                                })
+                        .setNeutralButton(android.R.string.cancel, null)
+                        .create();
+                return dlg;
             }
             default:
                 return null;
@@ -821,8 +934,11 @@
                 return SettingsEnums.DIALOG_USER_CHOOSE_TYPE;
             case DIALOG_NEED_LOCKSCREEN:
                 return SettingsEnums.DIALOG_USER_NEED_LOCKSCREEN;
-            case DIALOG_CONFIRM_EXIT_GUEST:
-            case DIALOG_CONFIRM_RESET_GUEST:
+            case DIALOG_CONFIRM_REMOVE_GUEST:
+            case DIALOG_CONFIRM_REMOVE_GUEST_WITH_AUTO_CREATE:
+            case DIALOG_CONFIRM_EXIT_GUEST_EPHEMERAL:
+            case DIALOG_CONFIRM_EXIT_GUEST_NON_EPHEMERAL:
+            case DIALOG_CONFIRM_RESET_AND_RESTART_GUEST:
                 return SettingsEnums.DIALOG_USER_CONFIRM_EXIT_GUEST;
             case DIALOG_USER_PROFILE_EDITOR:
             case DIALOG_USER_PROFILE_EDITOR_ADD_USER:
@@ -864,6 +980,18 @@
         }
     }
 
+    private void switchToUserId(int userId) {
+        if (!canSwitchUserNow()) {
+            Log.w(TAG, "Cannot switch current user when switching is disabled");
+            return;
+        }
+        try {
+            ActivityManager.getService().switchUser(userId);
+        } catch (RemoteException re) {
+            Log.e(TAG, "Unable to switch user");
+        }
+    }
+
     private void addUserNow(final int userType) {
         Trace.beginAsyncSection("UserSettings.addUserNow", 0);
         synchronized (mUserLock) {
@@ -945,36 +1073,91 @@
      * Erase the current user (guest) and switch to another user.
      */
     @VisibleForTesting
-    void exitGuest() {
+    void clearAndExitGuest() {
         // Just to be safe
         if (!isCurrentUserGuest()) {
             return;
         }
         mMetricsFeatureProvider.action(getActivity(),
                 SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED);
-        removeThisUser();
-    }
 
-    /**
-     * Erase the current user (assuming it is a guest user), and create a new one in the background
-     */
-    @VisibleForTesting
-    void resetGuest() {
-        // Just to be safe
-        if (!isCurrentUserGuest()) {
-            return;
-        }
         int guestUserId = UserHandle.myUserId();
         // Using markGuestForDeletion allows us to create a new guest before this one is
-        // fully removed. This could happen if someone calls scheduleGuestCreation()
-        // immediately after calling this method.
+        // fully removed.
         boolean marked = mUserManager.markGuestForDeletion(guestUserId);
         if (!marked) {
             Log.w(TAG, "Couldn't mark the guest for deletion for user " + guestUserId);
             return;
         }
-        exitGuest();
-        scheduleGuestCreation();
+
+        removeThisUser();
+        if (mGuestUserAutoCreated) {
+            scheduleGuestCreation();
+        }
+    }
+
+    /**
+     * Switch to another user.
+     */
+    private void exitGuest() {
+        // Just to be safe
+        if (!isCurrentUserGuest()) {
+            return;
+        }
+        mMetricsFeatureProvider.action(getActivity(),
+                SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED);
+        switchToUserId(UserHandle.USER_SYSTEM);
+    }
+
+    private int createGuest() {
+        UserInfo guest;
+        Context context = getPrefContext();
+        try {
+            guest = mUserManager.createGuest(context);
+        } catch (UserManager.UserOperationException e) {
+            Log.e(TAG, "Couldn't create guest user", e);
+            return UserHandle.USER_NULL;
+        }
+        if (guest == null) {
+            Log.e(TAG, "Couldn't create guest, most likely because there already exists one");
+            return UserHandle.USER_NULL;
+        }
+        return guest.id;
+    }
+
+    /**
+     * Remove current guest and start a new guest session
+     */
+    private void resetAndRestartGuest() {
+        // Just to be safe
+        if (!isCurrentUserGuest()) {
+            return;
+        }
+        int oldGuestUserId = UserHandle.myUserId();
+        // Using markGuestForDeletion allows us to create a new guest before this one is
+        // fully removed.
+        boolean marked = mUserManager.markGuestForDeletion(oldGuestUserId);
+        if (!marked) {
+            Log.w(TAG, "Couldn't mark the guest for deletion for user " + oldGuestUserId);
+            return;
+        }
+
+        try {
+            // Create a new guest in the foreground, and then immediately switch to it
+            int newGuestUserId = createGuest();
+            if (newGuestUserId == UserHandle.USER_NULL) {
+                Log.e(TAG, "Could not create new guest, switching back to system user");
+                switchToUserId(UserHandle.USER_SYSTEM);
+                mUserManager.removeUser(oldGuestUserId);
+                WindowManagerGlobal.getWindowManagerService().lockNow(/* options= */ null);
+                return;
+            }
+            switchToUserId(newGuestUserId);
+            mUserManager.removeUser(oldGuestUserId);
+        } catch (RemoteException e) {
+            Log.e(TAG, "Couldn't remove guest because ActivityManager or WindowManager is dead");
+            return;
+        }
     }
 
     /**
@@ -1009,18 +1192,28 @@
         if (context == null) {
             return;
         }
-        final List<UserInfo> users = mUserManager.getAliveUsers();
-
+        final List<UserInfo> users = mUserManager.getAliveUsers()
+                // Only users that can be switched to should show up here.
+                // e.g. Managed profiles appear under Accounts Settings instead
+                .stream().filter(UserInfo::supportsSwitchToByUser)
+                .collect(Collectors.toList());
         final ArrayList<Integer> missingIcons = new ArrayList<>();
         final ArrayList<UserPreference> userPreferences = new ArrayList<>();
-        userPreferences.add(mMePreference);
+
+        // mMePreference shows a icon for current user. However when current user is a guest, we
+        // don't show the guest user icon, instead we show two preferences for guest user to
+        // exit and reset itself. Hence we don't add mMePreference, i.e. guest user to the
+        // list of users visible in the UI.
+        if (!mUserCaps.mIsGuest) {
+            userPreferences.add(mMePreference);
+        }
 
         boolean canOpenUserDetails =
                 mUserCaps.mIsAdmin || (canSwitchUserNow() && !mUserCaps.mDisallowSwitchUser);
         for (UserInfo user : users) {
-            if (!user.supportsSwitchToByUser()) {
-                // Only users that can be switched to should show up here.
-                // e.g. Managed profiles appear under Accounts Settings instead
+            if (user.isGuest()) {
+                // Guest user is added to guest category via updateGuestCategory
+                // and not to user list so skip guest here
                 continue;
             }
             UserPreference pref;
@@ -1033,21 +1226,9 @@
                 pref.setOnPreferenceClickListener(this);
                 pref.setEnabled(canOpenUserDetails);
                 pref.setSelectable(true);
-
-                if (user.isGuest()) {
-                    pref.setIcon(getEncircledDefaultIcon());
-                    pref.setKey(KEY_USER_GUEST);
-                    if (mUserCaps.mDisallowSwitchUser) {
-                        pref.setDisabledByAdmin(
-                                RestrictedLockUtilsInternal.getDeviceOwner(context));
-                    } else {
-                        pref.setDisabledByAdmin(null);
-                    }
-                } else {
-                    pref.setKey("id=" + user.id);
-                    if (user.isAdmin()) {
-                        pref.setSummary(R.string.user_admin);
-                    }
+                pref.setKey("id=" + user.id);
+                if (user.isAdmin()) {
+                    pref.setSummary(R.string.user_admin);
                 }
             }
             if (pref == null) {
@@ -1102,12 +1283,13 @@
             loadIconsAsync(missingIcons);
         }
 
-        // If profiles are supported, mUserListCategory will have a special title
+        // If restricted profiles are supported, mUserListCategory will have a special title
         if (mUserCaps.mCanAddRestrictedProfile) {
             mUserListCategory.setTitle(R.string.user_list_title);
+        } else if (isCurrentUserGuest()) {
+            mUserListCategory.setTitle(R.string.other_user_category_title);
         } else {
-            mUserListCategory.setTitle(null);
-            mUserListCategory.setLayoutResource(R.layout.empty_view);
+            mUserListCategory.setTitle(R.string.user_category_title);
         }
 
         // Remove everything from mUserListCategory and add new users.
@@ -1122,8 +1304,8 @@
                 mMultiUserTopIntroPreferenceController.getPreferenceKey());
         mMultiUserTopIntroPreferenceController.updateState(multiUserTopIntroPrefence);
         mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled);
-
-        updateAddGuest(context, users.stream().anyMatch(UserInfo::isGuest));
+        updateGuestPreferences();
+        updateGuestCategory(context, users);
         updateAddUser(context);
         updateAddSupervisedUser(context);
 
@@ -1152,14 +1334,130 @@
         return mUserManager.getUserSwitchability() == UserManager.SWITCHABILITY_STATUS_OK;
     }
 
-    private void updateAddGuest(Context context, boolean isGuestAlreadyCreated) {
+    private void updateGuestPreferences() {
+        // reset guest and exit guest preferences are shown only in guest mode.
+        // For all other users these are not visible.
+        mGuestCategory.setVisible(false);
+        mGuestResetPreference.setVisible(false);
+        mGuestExitPreference.setVisible(false);
+        if (!isCurrentUserGuest()) {
+            return;
+        }
+        mGuestCategory.setVisible(true);
+        mGuestExitPreference.setVisible(true);
+        if (isEnableGuestModeUxChanges()) {
+            mGuestResetPreference.setVisible(true);
+
+            boolean isGuestFirstLogin = Settings.Secure.getIntForUser(
+                                            getContext().getContentResolver(),
+                                            SETTING_GUEST_HAS_LOGGED_IN,
+                                            0,
+                                            UserHandle.myUserId()) <= 1;
+            String guestExitSummary;
+            if (mUserCaps.mIsEphemeral) {
+                guestExitSummary = getContext().getString(
+                                    R.string.guest_notification_ephemeral);
+            } else if (isGuestFirstLogin) {
+                guestExitSummary = getContext().getString(
+                                    R.string.guest_notification_non_ephemeral);
+            } else {
+                guestExitSummary = getContext().getString(
+                                    R.string.guest_notification_non_ephemeral_non_first_login);
+            }
+            mGuestExitPreference.setSummary(guestExitSummary);
+        } else {
+            mGuestExitPreference.setIcon(getEncircledDefaultIcon());
+            mGuestExitPreference.setTitle(
+                                    mGuestUserAutoCreated
+                                        ? com.android.settingslib.R.string.guest_reset_guest
+                                        : com.android.settingslib.R.string.guest_exit_guest);
+        }
+    }
+
+    private void updateGuestCategory(Context context, List<UserInfo> users) {
+        // show guest category title and related guest preferences
+        // - if guest is created, then show guest user preference
+        // - if guest is not created and its allowed to create guest,
+        //   then show "add guest" preference
+        // - if allowed, show "reset guest on exit" preference
+        // - if there is nothing to show, then make the guest category as not visible
+        // - guest category is not visible for guest user.
+        UserPreference pref = null;
+        boolean isGuestAlreadyCreated = false;
+        boolean canOpenUserDetails =
+                mUserCaps.mIsAdmin || (canSwitchUserNow() && !mUserCaps.mDisallowSwitchUser);
+
+        mGuestUserCategory.removeAll();
+        mGuestUserCategory.setVisible(false);
+        for (UserInfo user : users) {
+            if (!user.isGuest() || !user.isEnabled()) {
+                // Only look at enabled, guest users
+                continue;
+            }
+            final Context prefContext = getPrefContext();
+            pref = new UserPreference(prefContext, null, user.id);
+            pref.setTitle(user.name);
+            pref.setOnPreferenceClickListener(this);
+            pref.setEnabled(canOpenUserDetails);
+            pref.setSelectable(true);
+            if (isEnableGuestModeUxChanges()) {
+                Drawable icon = getContext().getDrawable(R.drawable.ic_account_circle_outline);
+                icon.setTint(
+                        getColorAttrDefaultColor(getContext(), android.R.attr.colorControlNormal));
+                pref.setIcon(encircleUserIcon(
+                        UserIcons.convertToBitmapAtUserIconSize(
+                                getContext().getResources(), icon)));
+            } else {
+                pref.setIcon(getEncircledDefaultIcon());
+            }
+            pref.setKey(KEY_USER_GUEST);
+            pref.setOrder(Preference.DEFAULT_ORDER);
+            if (mUserCaps.mDisallowSwitchUser) {
+                pref.setDisabledByAdmin(
+                        RestrictedLockUtilsInternal.getDeviceOwner(context));
+            } else {
+                pref.setDisabledByAdmin(null);
+            }
+            if (mUserCaps.mUserSwitcherEnabled) {
+                mGuestUserCategory.addPreference(pref);
+                // guest user preference is shown hence also make guest category visible
+                mGuestUserCategory.setVisible(true);
+            }
+            isGuestAlreadyCreated = true;
+        }
+        boolean isVisible = updateAddGuestPreference(context, isGuestAlreadyCreated);
+        if (isVisible) {
+            // "add guest" preference is shown hence also make guest category visible
+            mGuestUserCategory.setVisible(true);
+        }
+        final Preference removeGuestOnExit = getPreferenceScreen().findPreference(
+                mRemoveGuestOnExitPreferenceController.getPreferenceKey());
+        mRemoveGuestOnExitPreferenceController.updateState(removeGuestOnExit);
+        if (mRemoveGuestOnExitPreferenceController.isAvailable()) {
+            // "reset guest on exit" preference is shown hence also make guest category visible
+            mGuestUserCategory.setVisible(true);
+        }
+        if (mUserCaps.mIsGuest) {
+            // guest category is not visible for guest user.
+            mGuestUserCategory.setVisible(false);
+        }
+    }
+
+    private boolean updateAddGuestPreference(Context context, boolean isGuestAlreadyCreated) {
+        boolean isVisible = false;
         if (!isGuestAlreadyCreated && mUserCaps.mCanAddGuest
                 && mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_GUEST)
                 && WizardManagerHelper.isDeviceProvisioned(context)
                 && mUserCaps.mUserSwitcherEnabled) {
+            isVisible = true;
             mAddGuest.setVisible(true);
-            Drawable icon = context.getDrawable(R.drawable.ic_account_circle);
-            mAddGuest.setIcon(centerAndTint(icon));
+            // when isEnableGuestModeUxChanges() is true, the icon is set via the layout xml
+            // In com.android.settings.users.UserSettingsTest
+            // we disable the check for setIcon being called
+            if (!isEnableGuestModeUxChanges()) {
+                Drawable icon = context.getDrawable(R.drawable.ic_account_circle);
+                mAddGuest.setIcon(centerAndTint(icon));
+            }
             mAddGuest.setSelectable(true);
             if (mGuestUserAutoCreated && mGuestCreationScheduled.get()) {
                 mAddGuest.setTitle(com.android.internal.R.string.guest_name);
@@ -1172,19 +1470,26 @@
         } else {
             mAddGuest.setVisible(false);
         }
+        return isVisible;
     }
 
     private void updateAddUser(Context context) {
         updateAddUserCommon(context, mAddUser, mUserCaps.mCanAddRestrictedProfile);
-        Drawable icon = context.getDrawable(R.drawable.ic_account_circle_filled);
-        mAddUser.setIcon(centerAndTint(icon));
+        // when isEnableGuestModeUxChanges() is true, the icon is set via the layout xml
+        if (!isEnableGuestModeUxChanges()) {
+            Drawable icon = context.getDrawable(R.drawable.ic_account_circle_filled);
+            mAddUser.setIcon(centerAndTint(icon));
+        }
     }
 
     private void updateAddSupervisedUser(Context context) {
         if (!TextUtils.isEmpty(mConfigSupervisedUserCreationPackage)) {
             updateAddUserCommon(context, mAddSupervisedUser, false);
-            Drawable icon = context.getDrawable(R.drawable.ic_add_supervised_user);
-            mAddSupervisedUser.setIcon(centerAndTint(icon));
+            // when isEnableGuestModeUxChanges() is true, the icon is set via the layout xml
+            if (!isEnableGuestModeUxChanges()) {
+                Drawable icon = context.getDrawable(R.drawable.ic_add_supervised_user);
+                mAddSupervisedUser.setIcon(centerAndTint(icon));
+            }
         } else {
             mAddSupervisedUser.setVisible(false);
         }
@@ -1265,7 +1570,7 @@
 
     private Drawable getEncircledDefaultIcon() {
         if (mDefaultIconDrawable == null) {
-            mDefaultIconDrawable = encircle(
+            mDefaultIconDrawable = encircleUserIcon(
                     getDefaultUserIconAsBitmap(getContext().getResources(), UserHandle.USER_NULL));
         }
         return mDefaultIconDrawable;
@@ -1274,23 +1579,42 @@
     private void setPhotoId(Preference pref, UserInfo user) {
         Bitmap bitmap = mUserIcons.get(user.id);
         if (bitmap != null) {
-            pref.setIcon(encircle(bitmap));
+            pref.setIcon(encircleUserIcon(bitmap));
         }
     }
 
     @Override
     public boolean onPreferenceClick(Preference pref) {
-        if (pref == mMePreference) {
-            if (isCurrentUserGuest()) {
-                if (mGuestUserAutoCreated) {
-                    showDialog(DIALOG_CONFIRM_RESET_GUEST);
-                } else {
-                    showDialog(DIALOG_CONFIRM_EXIT_GUEST);
+        if (isCurrentUserGuest()) {
+            if (isEnableGuestModeUxChanges()) {
+                if (mGuestResetPreference != null && pref == mGuestResetPreference) {
+                    showDialog(DIALOG_CONFIRM_RESET_AND_RESTART_GUEST);
+                    return true;
+                }
+                if (mGuestExitPreference != null && pref == mGuestExitPreference) {
+                    if (mUserCaps.mIsEphemeral) {
+                        showDialog(DIALOG_CONFIRM_EXIT_GUEST_EPHEMERAL);
+                    } else {
+                        showDialog(DIALOG_CONFIRM_EXIT_GUEST_NON_EPHEMERAL);
+                    }
+                    return true;
                 }
             } else {
-                showDialog(DIALOG_USER_PROFILE_EDITOR);
+                if (mGuestExitPreference != null && pref == mGuestExitPreference) {
+                    if (mGuestUserAutoCreated) {
+                        showDialog(DIALOG_CONFIRM_REMOVE_GUEST_WITH_AUTO_CREATE);
+                    } else {
+                        showDialog(DIALOG_CONFIRM_REMOVE_GUEST);
+                    }
+                    return true;
+                }
             }
-            return true;
+        }
+        if (pref == mMePreference) {
+            if (!isCurrentUserGuest()) {
+                showDialog(DIALOG_USER_PROFILE_EDITOR);
+                return true;
+            }
         } else if (pref instanceof UserPreference) {
             UserInfo userInfo = mUserManager.getUserInfo(((UserPreference) pref).getUserId());
             openUserDetails(userInfo, false);
@@ -1318,9 +1642,11 @@
         return false;
     }
 
-    private Drawable encircle(Bitmap icon) {
-        Drawable circled = CircleFramedDrawable.getInstance(getActivity(), icon);
-        return circled;
+    private Drawable encircleUserIcon(Bitmap icon) {
+        return new CircleFramedDrawable(
+                icon,
+                getActivity().getResources().getDimensionPixelSize(
+                        R.dimen.multiple_users_user_icon_size));
     }
 
     @Override
diff --git a/src/com/android/settings/vpn2/AdvancedVpnFeatureProvider.java b/src/com/android/settings/vpn2/AdvancedVpnFeatureProvider.java
new file mode 100644
index 0000000..cb56c35
--- /dev/null
+++ b/src/com/android/settings/vpn2/AdvancedVpnFeatureProvider.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.vpn2;
+
+import android.content.Context;
+
+/**
+ * Feature Provider used in vpn usage
+ */
+public interface AdvancedVpnFeatureProvider {
+
+    /**
+     * Returns package name of advanced vpn.
+     */
+    String getAdvancedVpnPackageName();
+
+    /**
+     * Returns {@code true} advanced vpn is supported.
+     */
+    boolean isAdvancedVpnSupported(Context context);
+
+    /**
+     * Returns the title of advanced vpn preference group.
+     */
+    String getAdvancedVpnPreferenceGroupTitle(Context context);
+
+    /**
+     * Returns the title of vpn preference group.
+     */
+    String getVpnPreferenceGroupTitle(Context context);
+
+    /**
+     * Returns {@code true} advanced vpn is removable.
+     */
+    boolean isAdvancedVpnRemovable();
+}
diff --git a/src/com/android/settings/vpn2/AdvancedVpnFeatureProviderImpl.java b/src/com/android/settings/vpn2/AdvancedVpnFeatureProviderImpl.java
new file mode 100644
index 0000000..c5bc69c
--- /dev/null
+++ b/src/com/android/settings/vpn2/AdvancedVpnFeatureProviderImpl.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.vpn2;
+
+import android.content.Context;
+
+/**
+ * Feature provider implementation for advanced vpn.
+ */
+public class AdvancedVpnFeatureProviderImpl implements AdvancedVpnFeatureProvider {
+    @Override
+    public String getAdvancedVpnPackageName() {
+        return null;
+    }
+
+    @Override
+    public boolean isAdvancedVpnSupported(Context context) {
+        return false;
+    }
+
+    @Override
+    public String getAdvancedVpnPreferenceGroupTitle(Context context) {
+        return null;
+    }
+
+    @Override
+    public String getVpnPreferenceGroupTitle(Context context) {
+        return null;
+    }
+
+    @Override
+    public boolean isAdvancedVpnRemovable() {
+        return true;
+    }
+}
diff --git a/src/com/android/settings/vpn2/AppManagementFragment.java b/src/com/android/settings/vpn2/AppManagementFragment.java
index d4ee5b9..d2fa5fc 100644
--- a/src/com/android/settings/vpn2/AppManagementFragment.java
+++ b/src/com/android/settings/vpn2/AppManagementFragment.java
@@ -48,6 +48,7 @@
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 import com.android.settingslib.RestrictedPreference;
@@ -71,6 +72,7 @@
     private PackageManager mPackageManager;
     private DevicePolicyManager mDevicePolicyManager;
     private VpnManager mVpnManager;
+    private AdvancedVpnFeatureProvider mFeatureProvider;
 
     // VPN app info
     private final int mUserId = UserHandle.myUserId();
@@ -122,6 +124,7 @@
         mPackageManager = getContext().getPackageManager();
         mDevicePolicyManager = getContext().getSystemService(DevicePolicyManager.class);
         mVpnManager = getContext().getSystemService(VpnManager.class);
+        mFeatureProvider = FeatureFactory.getFactory(getContext()).getAdvancedVpnFeatureProvider();
 
         mPreferenceAlwaysOn = (RestrictedSwitchPreference) findPreference(KEY_ALWAYS_ON_VPN);
         mPreferenceLockdown = (RestrictedSwitchPreference) findPreference(KEY_LOCKDOWN_VPN);
@@ -283,7 +286,16 @@
         }
     }
 
-    private void updateRestrictedViews() {
+    @VisibleForTesting
+    void updateRestrictedViews() {
+        if (mFeatureProvider.isAdvancedVpnSupported(getContext())
+                && !mFeatureProvider.isAdvancedVpnRemovable()
+                && TextUtils.equals(mPackageName, mFeatureProvider.getAdvancedVpnPackageName())) {
+            mPreferenceForget.setVisible(false);
+        } else {
+            mPreferenceForget.setVisible(true);
+        }
+
         if (isAdded()) {
             mPreferenceAlwaysOn.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_VPN,
                     mUserId);
@@ -314,6 +326,14 @@
         }
     }
 
+    @VisibleForTesting
+    void init(String packageName, AdvancedVpnFeatureProvider featureProvider,
+            RestrictedPreference preference) {
+        mPackageName = packageName;
+        mFeatureProvider = featureProvider;
+        mPreferenceForget = preference;
+    }
+
     private String getAlwaysOnVpnPackage() {
         return mVpnManager.getAlwaysOnVpnPackageForUser(mUserId);
     }
diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java
index e89785f..4380595 100644
--- a/src/com/android/settings/vpn2/VpnSettings.java
+++ b/src/com/android/settings/vpn2/VpnSettings.java
@@ -42,6 +42,7 @@
 import android.os.UserManager;
 import android.security.Credentials;
 import android.security.LegacyVpnProfileStore;
+import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.Log;
@@ -52,6 +53,7 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceScreen;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.net.LegacyVpnInfo;
@@ -59,6 +61,7 @@
 import com.android.internal.net.VpnProfile;
 import com.android.settings.R;
 import com.android.settings.RestrictedSettingsFragment;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.widget.GearPreference;
 import com.android.settings.widget.GearPreference.OnGearClickListener;
 import com.android.settingslib.RestrictedLockUtilsInternal;
@@ -79,9 +82,12 @@
 public class VpnSettings extends RestrictedSettingsFragment implements
         Handler.Callback, Preference.OnPreferenceClickListener {
     private static final String LOG_TAG = "VpnSettings";
+    private static final boolean DEBUG = Log.isLoggable(LOG_TAG, Log.DEBUG);
 
     private static final int RESCAN_MESSAGE = 0;
     private static final int RESCAN_INTERVAL_MS = 1000;
+    private static final String ADVANCED_VPN_GROUP_KEY = "advanced_vpn_group";
+    private static final String VPN_GROUP_KEY = "vpn_group";
 
     private static final NetworkRequest VPN_REQUEST = new NetworkRequest.Builder()
             .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
@@ -102,6 +108,9 @@
     private LegacyVpnInfo mConnectedLegacyVpn;
 
     private boolean mUnavailable;
+    private AdvancedVpnFeatureProvider mFeatureProvider;
+    private PreferenceScreen mPreferenceScreen;
+    private boolean mIsAdvancedVpnSupported;
 
     public VpnSettings() {
         super(UserManager.DISALLOW_CONFIG_VPN);
@@ -119,11 +128,14 @@
         mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
         mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
         mVpnManager = (VpnManager) getSystemService(Context.VPN_MANAGEMENT_SERVICE);
+        mFeatureProvider = FeatureFactory.getFactory(getContext()).getAdvancedVpnFeatureProvider();
+        mIsAdvancedVpnSupported = mFeatureProvider.isAdvancedVpnSupported(getContext());
 
         mUnavailable = isUiRestricted();
         setHasOptionsMenu(!mUnavailable);
 
         addPreferencesFromResource(R.xml.vpn_settings2);
+        mPreferenceScreen = getPreferenceScreen();
     }
 
     @Override
@@ -229,7 +241,8 @@
 
         // Run heavy RPCs before switching to UI thread
         final List<VpnProfile> vpnProfiles = loadVpnProfiles();
-        final List<AppVpnInfo> vpnApps = getVpnApps(context, /* includeProfiles */ true);
+        final List<AppVpnInfo> vpnApps = getVpnApps(context, /* includeProfiles */ true,
+                mFeatureProvider);
 
         final Map<String, LegacyVpnInfo> connectedLegacyVpns = getConnectedLegacyVpns();
         final Set<AppVpnInfo> connectedAppVpns = getConnectedAppVpns();
@@ -265,7 +278,7 @@
 
         private final VpnSettings mSettings;
 
-        public UpdatePreferences(VpnSettings settings) {
+        UpdatePreferences(VpnSettings settings) {
             mSettings = settings;
         }
 
@@ -332,7 +345,14 @@
             }
 
             // Trim out deleted VPN preferences
-            mSettings.setShownPreferences(updates);
+            if (DEBUG) {
+                Log.d(LOG_TAG, "isAdvancedVpnSupported() : " + mSettings.mIsAdvancedVpnSupported);
+            }
+            if (mSettings.mIsAdvancedVpnSupported) {
+                mSettings.setShownAdvancedPreferences(updates);
+            } else {
+                mSettings.setShownPreferences(updates);
+            }
         }
     }
 
@@ -343,12 +363,61 @@
 
     @VisibleForTesting @UiThread
     public void setShownPreferences(final Collection<Preference> updates) {
+        retainAllPreference(updates);
+
+        final PreferenceGroup vpnGroup = getPreferenceScreen();
+        updatePreferenceGroup(vpnGroup, updates);
+
+        // Show all new preferences on the screen
+        for (Preference pref : updates) {
+            vpnGroup.addPreference(pref);
+        }
+    }
+
+    @VisibleForTesting @UiThread
+    void setShownAdvancedPreferences(final Collection<Preference> updates) {
+        retainAllPreference(updates);
+
+        PreferenceGroup advancedVpnGroup = mPreferenceScreen.findPreference(ADVANCED_VPN_GROUP_KEY);
+        PreferenceGroup vpnGroup = mPreferenceScreen.findPreference(VPN_GROUP_KEY);
+        advancedVpnGroup.setTitle(
+                mFeatureProvider.getAdvancedVpnPreferenceGroupTitle(getContext()));
+        vpnGroup.setTitle(mFeatureProvider.getVpnPreferenceGroupTitle(getContext()));
+        updatePreferenceGroup(advancedVpnGroup, updates);
+        updatePreferenceGroup(vpnGroup, updates);
+
+        // Show all new preferences on the screen
+        for (Preference pref : updates) {
+            String packageName = "";
+            if (pref instanceof LegacyVpnPreference) {
+                LegacyVpnPreference legacyPref = (LegacyVpnPreference) pref;
+                packageName = legacyPref.getPackageName();
+            } else if (pref instanceof AppPreference) {
+                AppPreference appPref = (AppPreference) pref;
+                packageName = appPref.getPackageName();
+            }
+            if (DEBUG) {
+                Log.d(LOG_TAG, "setShownAdvancedPreferences() package name : " + packageName);
+            }
+            if (TextUtils.equals(packageName, mFeatureProvider.getAdvancedVpnPackageName())) {
+                advancedVpnGroup.addPreference(pref);
+            } else {
+                vpnGroup.addPreference(pref);
+            }
+        }
+
+        advancedVpnGroup.setVisible(advancedVpnGroup.getPreferenceCount() > 0);
+        vpnGroup.setVisible(vpnGroup.getPreferenceCount() > 0);
+    }
+
+    private void retainAllPreference(Collection<Preference> updates) {
         mLegacyVpnPreferences.values().retainAll(updates);
         mAppPreferences.values().retainAll(updates);
+    }
 
+    private void updatePreferenceGroup(PreferenceGroup vpnGroup, Collection<Preference> updates) {
         // Change {@param updates} in-place to only contain new preferences that were not already
         // added to the preference screen.
-        final PreferenceGroup vpnGroup = getPreferenceScreen();
         for (int i = vpnGroup.getPreferenceCount() - 1; i >= 0; i--) {
             Preference p = vpnGroup.getPreference(i);
             if (updates.contains(p)) {
@@ -357,11 +426,6 @@
                 vpnGroup.removePreference(p);
             }
         }
-
-        // Show any new preferences on the screen
-        for (Preference pref : updates) {
-            vpnGroup.addPreference(pref);
-        }
     }
 
     @Override
@@ -508,7 +572,15 @@
         return result;
     }
 
-    static List<AppVpnInfo> getVpnApps(Context context, boolean includeProfiles) {
+    static List<AppVpnInfo> getVpnApps(Context context, boolean includeProfiles,
+            AdvancedVpnFeatureProvider featureProvider) {
+        return getVpnApps(context, includeProfiles, featureProvider,
+                context.getSystemService(AppOpsManager.class));
+    }
+
+    @VisibleForTesting
+    static List<AppVpnInfo> getVpnApps(Context context, boolean includeProfiles,
+            AdvancedVpnFeatureProvider featureProvider, AppOpsManager aom) {
         List<AppVpnInfo> result = Lists.newArrayList();
 
         final Set<Integer> profileIds;
@@ -521,8 +593,6 @@
             profileIds = Collections.singleton(UserHandle.myUserId());
         }
 
-        // Fetch VPN-enabled apps from AppOps.
-        AppOpsManager aom = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
         List<AppOpsManager.PackageOps> apps =
                 aom.getPackagesForOps(new int[] {OP_ACTIVATE_VPN, OP_ACTIVATE_PLATFORM_VPN});
         if (apps != null) {
@@ -540,7 +610,7 @@
                         allowed = true;
                     }
                 }
-                if (allowed) {
+                if (allowed || isAdvancedVpn(featureProvider, pkg.getPackageName(), context)) {
                     result.add(new AppVpnInfo(userId, pkg.getPackageName()));
                 }
             }
@@ -550,6 +620,12 @@
         return result;
     }
 
+    private static boolean isAdvancedVpn(AdvancedVpnFeatureProvider featureProvider,
+            String packageName, Context context) {
+        return featureProvider.isAdvancedVpnSupported(context)
+                && TextUtils.equals(packageName, featureProvider.getAdvancedVpnPackageName());
+    }
+
     private static List<VpnProfile> loadVpnProfiles() {
         final ArrayList<VpnProfile> result = Lists.newArrayList();
 
@@ -562,4 +638,10 @@
         }
         return result;
     }
+
+    @VisibleForTesting
+    void init(PreferenceScreen preferenceScreen, AdvancedVpnFeatureProvider featureProvider) {
+        mPreferenceScreen = preferenceScreen;
+        mFeatureProvider = featureProvider;
+    }
 }
diff --git a/src/com/android/settings/widget/SettingsMainSwitchPreference.java b/src/com/android/settings/widget/SettingsMainSwitchPreference.java
index ce91c9e..9fd8d06 100644
--- a/src/com/android/settings/widget/SettingsMainSwitchPreference.java
+++ b/src/com/android/settings/widget/SettingsMainSwitchPreference.java
@@ -22,7 +22,6 @@
 import android.content.res.TypedArray;
 import android.text.TextUtils;
 import android.util.AttributeSet;
-import android.view.ViewGroup;
 import android.widget.Switch;
 
 import androidx.core.content.res.TypedArrayUtils;
@@ -35,8 +34,6 @@
 import com.android.settingslib.core.instrumentation.SettingsJankMonitor;
 import com.android.settingslib.widget.OnMainSwitchChangeListener;
 
-import com.google.android.setupdesign.util.LayoutStyler;
-
 import java.util.ArrayList;
 import java.util.List;
 
@@ -52,7 +49,6 @@
             new ArrayList<>();
     private final List<OnMainSwitchChangeListener> mSwitchChangeListeners = new ArrayList<>();
 
-    private boolean mApplyPartnerCustomizationPaddingStyle;
     private SettingsMainSwitchBar mMainSwitchBar;
     private CharSequence mTitle;
     private EnforcedAdmin mEnforcedAdmin;
@@ -100,12 +96,6 @@
         } else {
             mMainSwitchBar.hide();
         }
-
-        if (mApplyPartnerCustomizationPaddingStyle) {
-            // TODO(b/232494666): Replace all margins of the root view with the padding
-            final ViewGroup parentView = (ViewGroup) mMainSwitchBar.getParent();
-            LayoutStyler.applyPartnerCustomizationLayoutPaddingStyle(parentView);
-        }
     }
 
     private void init(Context context, AttributeSet attrs) {
@@ -253,14 +243,6 @@
         }
     }
 
-    /**
-     * Apples the padding style of the partner's customization. It's used in the SetupWizard.
-     */
-    public void applyPartnerCustomizationPaddingStyle() {
-        mApplyPartnerCustomizationPaddingStyle = true;
-        notifyChanged();
-    }
-
     private void initMainSwitchBar() {
         if (mMainSwitchBar != null) {
             mMainSwitchBar.setTitle(mTitle);
diff --git a/src/com/android/settings/wifi/ConfigureWifiSettings.java b/src/com/android/settings/wifi/ConfigureWifiSettings.java
index 6bb4389..33f2827 100644
--- a/src/com/android/settings/wifi/ConfigureWifiSettings.java
+++ b/src/com/android/settings/wifi/ConfigureWifiSettings.java
@@ -15,19 +15,21 @@
  */
 package com.android.settings.wifi;
 
-import static android.content.Context.WIFI_SERVICE;
-
+import android.annotation.Nullable;
 import android.app.settings.SettingsEnums;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
-import android.util.FeatureFlagUtils;
+import android.os.UserManager;
+import android.util.EventLog;
 import android.util.Log;
+import android.view.View;
+import android.widget.TextView;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
 import com.android.settings.dashboard.DashboardFragment;
@@ -43,7 +45,8 @@
 public class ConfigureWifiSettings extends DashboardFragment {
 
     private static final String TAG = "ConfigureWifiSettings";
-    private static final String KEY_INSTALL_CREDENTIALS = "install_credentials";
+    @VisibleForTesting
+    static final String KEY_INSTALL_CREDENTIALS = "install_credentials";
     private static final String ACTION_INSTALL_CERTS = "android.credentials.INSTALL";
     private static final String PACKAGE_INSTALL_CERTS = "com.android.certinstaller";
     private static final String CLASS_INSTALL_CERTS = "com.android.certinstaller.CertInstallerMain";
@@ -53,16 +56,26 @@
     public static final int WIFI_WAKEUP_REQUEST_CODE = 600;
 
     private WifiWakeupPreferenceController mWifiWakeupPreferenceController;
-    private Preference mCertinstallerPreference;
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        if (isGuestUser(context)) return;
+
+        mWifiWakeupPreferenceController = use(WifiWakeupPreferenceController.class);
+        mWifiWakeupPreferenceController.setFragment(this);
+    }
 
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         getActivity().setTitle(R.string.network_and_internet_preferences_title);
 
-        mCertinstallerPreference = findPreference(KEY_INSTALL_CREDENTIALS);
-        if (mCertinstallerPreference != null) {
-            mCertinstallerPreference.setOnPreferenceClickListener(preference -> {
+        if (isGuestUser(getContext())) return;
+
+        final Preference installCredentialsPref = findPreference(KEY_INSTALL_CREDENTIALS);
+        if (installCredentialsPref != null) {
+            installCredentialsPref.setOnPreferenceClickListener(preference -> {
                 Intent intent = new Intent(ACTION_INSTALL_CERTS);
                 intent.setFlags(
                         Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -78,6 +91,23 @@
     }
 
     @Override
+    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        if (!isGuestUser(getContext())) return;
+
+        Log.w(TAG, "Displays the restricted UI because the user is a guest.");
+        EventLog.writeEvent(0x534e4554, "231987122", -1 /* UID */, "User is a guest");
+
+        // Restricted UI
+        final TextView emptyView = getActivity().findViewById(android.R.id.empty);
+        if (emptyView != null) {
+            emptyView.setVisibility(View.VISIBLE);
+            emptyView.setText(R.string.wifi_empty_list_user_restricted);
+        }
+        getPreferenceScreen().removeAll();
+    }
+
+    @Override
     public int getMetricsCategory() {
         return SettingsEnums.CONFIGURE_WIFI;
     }
@@ -94,7 +124,9 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        final WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
+        if (isGuestUser(context)) return null;
+
+        final WifiManager wifiManager = getSystemService(WifiManager.class);
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
         controllers.add(new WifiP2pPreferenceController(context, getSettingsLifecycle(),
                 wifiManager));
@@ -102,17 +134,8 @@
     }
 
     @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-
-
-        mWifiWakeupPreferenceController = use(WifiWakeupPreferenceController.class);
-        mWifiWakeupPreferenceController.setFragment(this);
-    }
-
-    @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (requestCode == WIFI_WAKEUP_REQUEST_CODE) {
+        if (mWifiWakeupPreferenceController != null && requestCode == WIFI_WAKEUP_REQUEST_CODE) {
             mWifiWakeupPreferenceController.onActivityResult(requestCode, resultCode);
             return;
         }
@@ -122,8 +145,16 @@
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider(R.xml.wifi_configure_settings) {
                 protected boolean isPageSearchEnabled(Context context) {
+                    if (isGuestUser(context)) return false;
                     return context.getResources()
                             .getBoolean(R.bool.config_show_wifi_settings);
                 }
             };
+
+    private static boolean isGuestUser(Context context) {
+        if (context == null) return false;
+        final UserManager userManager = context.getSystemService(UserManager.class);
+        if (userManager == null) return false;
+        return userManager.isGuestUser();
+    }
 }
diff --git a/src/com/android/settings/wifi/WifiDialogActivity.java b/src/com/android/settings/wifi/WifiDialogActivity.java
index 67f291d..e3e77e8 100644
--- a/src/com/android/settings/wifi/WifiDialogActivity.java
+++ b/src/com/android/settings/wifi/WifiDialogActivity.java
@@ -17,7 +17,9 @@
 package com.android.settings.wifi;
 
 import static android.Manifest.permission.ACCESS_FINE_LOCATION;
+import static android.os.UserManager.DISALLOW_CONFIG_WIFI;
 
+import android.app.KeyguardManager;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.PackageManager;
@@ -31,6 +33,7 @@
 import android.os.Process;
 import android.os.SimpleClock;
 import android.os.SystemClock;
+import android.os.UserManager;
 import android.text.TextUtils;
 import android.util.EventLog;
 import android.util.Log;
@@ -49,6 +52,7 @@
 import com.google.android.setupcompat.util.WizardManagerHelper;
 import com.google.android.setupdesign.util.ThemeHelper;
 
+import java.lang.ref.WeakReference;
 import java.time.Clock;
 import java.time.ZoneOffset;
 
@@ -94,10 +98,12 @@
     // Interval between initiating NetworkDetailsTracker scans.
     private static final long SCAN_INTERVAL_MILLIS = 10_000;
 
-    private WifiDialog mDialog;
+    @VisibleForTesting
+    WifiDialog mDialog;
     private AccessPoint mAccessPoint;
 
-    private WifiDialog2 mDialog2;
+    @VisibleForTesting
+    WifiDialog2 mDialog2;
 
     // The received intent supports a key of WifiTrackerLib or SettingsLib.
     private boolean mIsWifiTrackerLib;
@@ -106,6 +112,7 @@
     private NetworkDetailsTracker mNetworkDetailsTracker;
     private HandlerThread mWorkerThread;
     private WifiManager mWifiManager;
+    private LockScreenMonitor mLockScreenMonitor;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -115,6 +122,10 @@
         }
 
         super.onCreate(savedInstanceState);
+        if (!isConfigWifiAllowed()) {
+            finish();
+            return;
+        }
 
         mIsWifiTrackerLib = !TextUtils.isEmpty(mIntent.getStringExtra(KEY_CHOSEN_WIFIENTRY_KEY));
 
@@ -178,6 +189,10 @@
                 mDialog.setOnDismissListener(this);
             }
         }
+
+        if (mDialog2 != null || mDialog != null) {
+            mLockScreenMonitor = new LockScreenMonitor(this);
+        }
     }
 
     @VisibleForTesting
@@ -215,6 +230,10 @@
             }
         }
 
+        if (mLockScreenMonitor != null) {
+            mLockScreenMonitor.release();
+            mLockScreenMonitor = null;
+        }
         super.onDestroy();
     }
 
@@ -361,6 +380,19 @@
         }
     }
 
+    @VisibleForTesting
+    boolean isConfigWifiAllowed() {
+        UserManager userManager = getSystemService(UserManager.class);
+        if (userManager == null) return true;
+        final boolean isConfigWifiAllowed = !userManager.hasUserRestriction(DISALLOW_CONFIG_WIFI);
+        if (!isConfigWifiAllowed) {
+            Log.e(TAG, "The user is not allowed to configure Wi-Fi.");
+            EventLog.writeEvent(0x534e4554, "226133034", getApplicationContext().getUserId(),
+                    "The user is not allowed to configure Wi-Fi.");
+        }
+        return isConfigWifiAllowed;
+    }
+
     private boolean hasWifiManager() {
         if (mWifiManager != null) return true;
         mWifiManager = getSystemService(WifiManager.class);
@@ -392,4 +424,45 @@
         }
         return false;
     }
+
+    void dismissDialog() {
+        if (mDialog != null) {
+            mDialog.dismiss();
+            mDialog = null;
+        }
+        if (mDialog2 != null) {
+            mDialog2.dismiss();
+            mDialog2 = null;
+        }
+    }
+
+    @VisibleForTesting
+    static final class LockScreenMonitor implements KeyguardManager.KeyguardLockedStateListener {
+        private final WeakReference<WifiDialogActivity> mWifiDialogActivity;
+        private KeyguardManager mKeyguardManager;
+
+        LockScreenMonitor(WifiDialogActivity activity) {
+            mWifiDialogActivity = new WeakReference<>(activity);
+            mKeyguardManager = activity.getSystemService(KeyguardManager.class);
+            mKeyguardManager.addKeyguardLockedStateListener(activity.getMainExecutor(), this);
+        }
+
+        void release() {
+            if (mKeyguardManager == null) return;
+            mKeyguardManager.removeKeyguardLockedStateListener(this);
+            mKeyguardManager = null;
+        }
+
+        @Override
+        public void onKeyguardLockedStateChanged(boolean isKeyguardLocked) {
+            if (!isKeyguardLocked) return;
+            WifiDialogActivity activity = mWifiDialogActivity.get();
+            if (activity == null) return;
+            activity.dismissDialog();
+
+            Log.e(TAG, "Dismiss Wi-Fi dialog to prevent leaking user data on lock screen!");
+            EventLog.writeEvent(0x534e4554, "231583603", -1 /* UID */,
+                    "Leak Wi-Fi dialog on lock screen");
+        }
+    }
 }
diff --git a/src/com/android/settings/wifi/WifiScanModeActivity.java b/src/com/android/settings/wifi/WifiScanModeActivity.java
index d372135..c10ee27 100644
--- a/src/com/android/settings/wifi/WifiScanModeActivity.java
+++ b/src/com/android/settings/wifi/WifiScanModeActivity.java
@@ -18,11 +18,15 @@
 
 import android.app.Dialog;
 import android.app.settings.SettingsEnums;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
+import android.os.UserManager;
 import android.text.TextUtils;
+import android.util.EventLog;
+import android.util.Log;
 import android.view.WindowManager;
 
 import androidx.annotation.VisibleForTesting;
@@ -39,6 +43,7 @@
  * This activity requests users permission to allow scanning even when Wi-Fi is turned off
  */
 public class WifiScanModeActivity extends FragmentActivity {
+    private static final String TAG = "WifiScanModeActivity";
     private DialogFragment mDialog;
     @VisibleForTesting
     String mApp;
@@ -78,7 +83,15 @@
         mApp = Utils.getApplicationLabel(getApplicationContext(), packageName).toString();
     }
 
-    private void createDialog() {
+    @VisibleForTesting
+    void createDialog() {
+        if (isGuestUser(getApplicationContext())) {
+            Log.e(TAG, "Guest user is not allowed to configure Wi-Fi Scan Mode!");
+            EventLog.writeEvent(0x534e4554, "235601169", -1 /* UID */, "User is a guest");
+            finish();
+            return;
+        }
+
         if (mDialog == null) {
             mDialog = AlertDialogFragment.newInstance(mApp);
             mDialog.show(getSupportFragmentManager(), "dialog");
@@ -169,4 +182,11 @@
             ((WifiScanModeActivity) getActivity()).doNegativeClick();
         }
     }
+
+    private static boolean isGuestUser(Context context) {
+        if (context == null) return false;
+        final UserManager userManager = context.getSystemService(UserManager.class);
+        if (userManager == null) return false;
+        return userManager.isGuestUser();
+    }
 }
diff --git a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java
index 169bcb3..c52f75e 100644
--- a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java
+++ b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivity.java
@@ -18,11 +18,14 @@
 
 import android.app.ActivityManager;
 import android.app.IActivityManager;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.RemoteException;
+import android.os.UserManager;
 import android.provider.Settings;
 import android.text.TextUtils;
+import android.util.EventLog;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.Window;
@@ -85,7 +88,13 @@
     }
 
     @VisibleForTesting
-    protected boolean showAddNetworksFragment() {
+    boolean showAddNetworksFragment() {
+        if (isGuestUser(getApplicationContext())) {
+            Log.e(TAG, "Guest user is not allowed to configure Wi-Fi!");
+            EventLog.writeEvent(0x534e4554, "224772678", -1 /* UID */, "User is a guest");
+            return false;
+        }
+
         if (!isAddWifiConfigAllow()) {
             Log.d(TAG, "Not allowed by Enterprise Restriction");
             return false;
@@ -130,4 +139,11 @@
     boolean isAddWifiConfigAllow() {
         return WifiEnterpriseRestrictionUtils.isAddWifiConfigAllowed(this);
     }
+
+    private static boolean isGuestUser(Context context) {
+        if (context == null) return false;
+        final UserManager userManager = context.getSystemService(UserManager.class);
+        if (userManager == null) return false;
+        return userManager.isGuestUser();
+    }
 }
diff --git a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
index 3f5ef48..62b477f 100644
--- a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
+++ b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
@@ -39,6 +39,7 @@
 import android.os.SystemClock;
 import android.provider.Settings;
 import android.text.TextUtils;
+import android.util.EventLog;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -518,7 +519,13 @@
 
         UiConfigurationItem(String displayedSsid, WifiNetworkSuggestion wifiNetworkSuggestion,
                 int index, int level) {
-            mDisplayedSsid = displayedSsid;
+            if (displayedSsid.contains("\n") || displayedSsid.contains("\r")) {
+                mDisplayedSsid = displayedSsid.replaceAll("\\r|\\n", "");
+                Log.e(TAG, "Ignore CRLF strings in display SSIDs to avoid display errors!");
+                EventLog.writeEvent(0x534e4554, "224545390", -1 /* UID */, "CRLF injection");
+            } else {
+                mDisplayedSsid = displayedSsid;
+            }
             mWifiNetworkSuggestion = wifiNetworkSuggestion;
             mIndex = index;
             mLevel = level;
diff --git a/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java b/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java
index ecaf9ee..e6f0b31 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java
@@ -17,13 +17,16 @@
 package com.android.settings.wifi.dpp;
 
 import android.app.settings.SettingsEnums;
+import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
+import android.os.UserManager;
 import android.provider.Settings;
+import android.util.EventLog;
 import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
@@ -116,6 +119,13 @@
 
     @Override
     protected void handleIntent(Intent intent) {
+        if (isGuestUser(getApplicationContext())) {
+            Log.e(TAG, "Guest user is not allowed to configure Wi-Fi!");
+            EventLog.writeEvent(0x534e4554, "224772890", -1 /* UID */, "User is a guest");
+            finish();
+            return;
+        }
+
         String action = intent != null ? intent.getAction() : null;
         if (action == null) {
             finish();
@@ -185,7 +195,8 @@
         }
     }
 
-    private void showQrCodeScannerFragment() {
+    @VisibleForTesting
+    void showQrCodeScannerFragment() {
         WifiDppQrCodeScannerFragment fragment =
                 (WifiDppQrCodeScannerFragment) mFragmentManager.findFragmentByTag(
                         WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
@@ -384,4 +395,11 @@
 
         return null;
     }
+
+    private static boolean isGuestUser(Context context) {
+        if (context == null) return false;
+        final UserManager userManager = context.getSystemService(UserManager.class);
+        if (userManager == null) return false;
+        return userManager.isGuestUser();
+    }
 }
diff --git a/src/com/android/settings/wifi/slice/WifiSlice.java b/src/com/android/settings/wifi/slice/WifiSlice.java
index 76dfab8..2e5524e 100644
--- a/src/com/android/settings/wifi/slice/WifiSlice.java
+++ b/src/com/android/settings/wifi/slice/WifiSlice.java
@@ -34,7 +34,9 @@
 import android.net.wifi.WifiManager;
 import android.os.Binder;
 import android.os.Bundle;
+import android.os.UserManager;
 import android.text.TextUtils;
+import android.util.EventLog;
 import android.util.Log;
 
 import androidx.annotation.Nullable;
@@ -96,10 +98,18 @@
 
     @Override
     public Slice getSlice() {
+        final boolean isWifiEnabled = isWifiEnabled();
+        // If user is a guest just return a slice without a toggle.
+        if (isGuestUser(mContext)) {
+            Log.e(TAG, "Guest user is not allowed to configure Wi-Fi!");
+            EventLog.writeEvent(0x534e4554, "232798363", -1 /* UID */, "User is a guest");
+            return getListBuilder(isWifiEnabled, null /* wifiSliceItem */,
+                    false /* isWiFiPermissionGranted */).build();
+        }
+
         // If external calling package doesn't have Wi-Fi permission.
         final boolean isPermissionGranted =
                 Utils.isSettingsIntelligence(mContext) || isPermissionGranted(mContext);
-        final boolean isWifiEnabled = isWifiEnabled();
         ListBuilder listBuilder = getListBuilder(isWifiEnabled, null /* wifiSliceItem */,
                 isPermissionGranted);
         // If the caller doesn't have the permission granted, just return a slice without a toggle.
@@ -139,6 +149,13 @@
         return listBuilder.build();
     }
 
+    protected static boolean isGuestUser(Context context) {
+        if (context == null) return false;
+        final UserManager userManager = context.getSystemService(UserManager.class);
+        if (userManager == null) return false;
+        return userManager.isGuestUser();
+    }
+
     private static boolean isPermissionGranted(Context settingsContext) {
         final int callingUid = Binder.getCallingUid();
         final String callingPackage = settingsContext.getPackageManager()
diff --git a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java
index b22b156..89e00e1 100644
--- a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java
@@ -45,7 +45,7 @@
 
 import com.android.settings.AccessiblePreferenceCategory;
 import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
 import com.android.settings.testutils.shadow.ShadowAccountManager;
 import com.android.settings.testutils.shadow.ShadowContentResolver;
@@ -77,7 +77,7 @@
     @Mock(answer = RETURNS_DEEP_STUBS)
     private UserManager mUserManager;
     @Mock(answer = RETURNS_DEEP_STUBS)
-    private SettingsPreferenceFragment mFragment;
+    private DashboardFragment mFragment;
     @Mock(answer = RETURNS_DEEP_STUBS)
     private AccountManager mAccountManager;
     @Mock(answer = RETURNS_DEEP_STUBS)
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java
index 03b3a47..a75663b 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java
@@ -40,8 +40,8 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.SettingsActivity;
-import com.android.settings.fuelgauge.BatteryDiffEntry;
 import com.android.settings.fuelgauge.BatteryUtils;
+import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry;
 import com.android.settingslib.applications.ApplicationsState;
 
 import org.junit.Before;
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java
index d8852db..1096f40 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java
@@ -173,4 +173,24 @@
 
         assertThat(result).isEqualTo(R.string.fingerprint_intro_error_max);
     }
+
+    @Test
+    public void intro_CheckCanEnrollDuringPortal() {
+        setupFingerprintEnrollIntroWith(
+                new Intent().putExtra(WizardManagerHelper.EXTRA_IS_PORTAL_SETUP, true));
+        setFingerprintManagerToHave(2 /* numEnrollments */);
+        int result = mFingerprintEnrollIntroduction.checkMaxEnrolled();
+
+        assertThat(result).isEqualTo(0);
+    }
+
+    @Test
+    public void intro_CheckMaxEnrolledDuringPortal() {
+        setupFingerprintEnrollIntroWith(
+                new Intent().putExtra(WizardManagerHelper.EXTRA_IS_PORTAL_SETUP, true));
+        setFingerprintManagerToHave(6 /* numEnrollments */);
+        int result = mFingerprintEnrollIntroduction.checkMaxEnrolled();
+
+        assertThat(result).isEqualTo(R.string.fingerprint_intro_error_max);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
index e3b23ac..2aeda71 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
@@ -34,7 +34,6 @@
 import com.android.settings.R;
 import com.android.settings.biometrics.BiometricEnrollBase;
 import com.android.settings.biometrics.BiometricEnrollIntroduction;
-import com.android.settings.password.SetupChooseLockGeneric.SetupChooseLockGenericFragment;
 import com.android.settings.password.SetupSkipDialog;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowFingerprintManager;
@@ -160,8 +159,6 @@
 
         ShadowActivity shadowActivity = Shadows.shadowOf(activity);
         assertThat(shadowActivity.getResultIntent()).isNotNull();
-        assertThat(shadowActivity.getResultIntent().hasExtra(
-            SetupChooseLockGenericFragment.EXTRA_PASSWORD_QUALITY)).isTrue();
     }
 
     @Test
@@ -191,8 +188,6 @@
 
         ShadowActivity shadowActivity = Shadows.shadowOf(activity);
         assertThat(shadowActivity.getResultIntent()).isNotNull();
-        assertThat(shadowActivity.getResultIntent().hasExtra(
-            SetupChooseLockGenericFragment.EXTRA_PASSWORD_QUALITY)).isTrue();
     }
 
     @Test
@@ -218,8 +213,6 @@
             BiometricEnrollBase.RESULT_FINISHED, null);
         ShadowActivity shadowActivity = Shadows.shadowOf(activity);
         assertThat(shadowActivity.getResultIntent()).isNotNull();
-        assertThat(shadowActivity.getResultIntent().hasExtra(
-                SetupChooseLockGenericFragment.EXTRA_PASSWORD_QUALITY)).isFalse();
     }
 
     @Test
@@ -260,8 +253,6 @@
         ShadowActivity shadowActivity = Shadows.shadowOf(activity);
         IntentForResult startedActivity = shadowActivity.getNextStartedActivityForResult();
         assertThat(startedActivity).isNotNull();
-        assertThat(startedActivity.intent.hasExtra(
-            SetupChooseLockGenericFragment.EXTRA_PASSWORD_QUALITY)).isFalse();
     }
 
     private ShadowKeyguardManager getShadowKeyguardManager() {
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsCompanionAppsControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsCompanionAppsControllerTest.java
index 3fa306f..86829b4 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsCompanionAppsControllerTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsCompanionAppsControllerTest.java
@@ -109,6 +109,7 @@
                 /* deviceProfile */ "",
                 /* selfManaged */ false,
                 /* notifyOnDeviceNearby */ true,
+                /* revoked */ false,
                 /* timeApprovedMs */ System.currentTimeMillis(),
                 /* lastTimeConnected */ Long.MAX_VALUE);
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
index 894a6c5..fd6689a 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
@@ -298,6 +298,14 @@
     }
 
     @Test
+    public void forceUpdatePreferences_prefKeyNull_shouldNotCrash() {
+        mTestFragment.addPreferenceController(new TestPreferenceController(mContext));
+
+        // Should not crash
+        mTestFragment.forceUpdatePreferences();
+    }
+
+    @Test
     public void checkUiBlocker_noUiBlocker_controllerIsNull() {
         mTestFragment.mBlockerController = null;
         mControllers.add(new TestPreferenceController(mContext));
diff --git a/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java
index eb29b7c..f2ba580 100644
--- a/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java
@@ -22,9 +22,13 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.app.time.Capabilities;
+import android.app.time.TimeManager;
+import android.app.time.TimeZoneCapabilities;
+import android.app.time.TimeZoneCapabilitiesAndConfig;
+import android.app.time.TimeZoneConfiguration;
 import android.content.Context;
-import android.provider.Settings;
-import android.telephony.TelephonyManager;
+import android.os.UserHandle;
 
 import androidx.preference.Preference;
 
@@ -32,6 +36,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
@@ -46,7 +51,7 @@
     private AutoTimeZonePreferenceController mController;
     private Preference mPreference;
     @Mock
-    private TelephonyManager mTelephonyManager;
+    private TimeManager mTimeManager;
 
     @Before
     public void setUp() {
@@ -55,12 +60,15 @@
 
         mPreference = new Preference(mContext);
 
-        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
-        when(mTelephonyManager.isDataCapable()).thenReturn(true);
+        when(mContext.getSystemService(TimeManager.class)).thenReturn(mTimeManager);
     }
 
     @Test
     public void isFromSUW_notAvailable() {
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+                /* autoSupported= */true, /* autoEnabled= */false);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+
         mController = new AutoTimeZonePreferenceController(
                 mContext, null /* callback */, true /* isFromSUW */);
 
@@ -69,6 +77,10 @@
 
     @Test
     public void notFromSUW_isAvailable() {
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+                /* autoSupported= */true, /* autoEnabled= */false);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+
         mController = new AutoTimeZonePreferenceController(
                 mContext, null /* callback */, false /* isFromSUW */);
 
@@ -76,8 +88,11 @@
     }
 
     @Test
-    public void isWifiOnly_notAvailable() {
-        when(mTelephonyManager.isDataCapable()).thenReturn(false);
+    public void autoTimeZoneNotSupported_notAvailable() {
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+                /* autoSupported= */false, /* autoEnabled= */false);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+
         mController = new AutoTimeZonePreferenceController(
                 mContext, null /* callback */, false /* fromSUW */);
 
@@ -86,54 +101,134 @@
 
     @Test
     public void isFromSUW_notEnable() {
-        mController =
-            new AutoTimeZonePreferenceController(mContext, null /* callback */, true /* fromSUW */);
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+                /* autoSupported= */false, /* autoEnabled= */false);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+
+        mController = new AutoTimeZonePreferenceController(
+                mContext, null /* callback */, true /* fromSUW */);
 
         assertThat(mController.isEnabled()).isFalse();
     }
 
     @Test
-    public void isWifiOnly_notEnable() {
-        when(mTelephonyManager.isDataCapable()).thenReturn(false);
+    public void isFromSUW_isEnable() {
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+                /* autoSupported= */false, /* autoEnabled= */true);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+
         mController = new AutoTimeZonePreferenceController(
-                mContext, null /* callback */, false /* fromSUW */);
+                mContext, null /* callback */, true /* fromSUW */);
 
-        assertThat(mController.isEnabled()).isFalse();
-    }
-
-    @Test
-    public void testIsEnabled_shouldReadFromSettingsProvider() {
-        mController = new AutoTimeZonePreferenceController(
-                mContext, null /* callback */, false /* fromSUW */);
-
-        // Disabled
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
-        assertThat(mController.isEnabled()).isFalse();
-
-        // Enabled
-        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);
         assertThat(mController.isEnabled()).isTrue();
     }
 
     @Test
+    public void autoTimeZoneNotSupported_notEnable() {
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+                /* autoSupported= */false, /* autoEnabled= */false);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+
+        mController = new AutoTimeZonePreferenceController(
+                mContext, null /* callback */, false /* fromSUW */);
+
+        assertThat(mController.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testIsEnabled_shouldReadFromTimeManagerConfig() {
+        mController = new AutoTimeZonePreferenceController(
+                mContext, null /* callback */, false /* fromSUW */);
+
+        {
+            // Disabled
+            TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+                    /* autoSupported= */true, /* autoEnabled= */false);
+            when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+
+            assertThat(mController.isEnabled()).isFalse();
+        }
+
+        {
+            // Enabled
+            TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+                    /* autoSupported= */true, /* autoEnabled= */true);
+            when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+
+            assertThat(mController.isEnabled()).isTrue();
+        }
+    }
+
+    @Test
     public void updatePreferenceChange_prefIsChecked_shouldUpdatePreferenceAndNotifyCallback() {
-        mController =
-            new AutoTimeZonePreferenceController(mContext, mCallback, false /* fromSUW */);
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+                /* autoSupported= */true, /* autoEnabled= */false);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+        when(mTimeManager.updateTimeZoneConfiguration(Mockito.any())).thenReturn(true);
 
-        mController.onPreferenceChange(mPreference, true);
+        mController = new AutoTimeZonePreferenceController(
+                mContext, mCallback, false /* fromSUW */);
+
+        assertThat(mController.onPreferenceChange(mPreference, true)).isTrue();
+        verify(mCallback).updateTimeAndDateDisplay(mContext);
+
+        // Check the service was asked to change the configuration correctly.
+        TimeZoneConfiguration timeZoneConfiguration = new TimeZoneConfiguration.Builder()
+                .setAutoDetectionEnabled(true)
+                .build();
+        verify(mTimeManager).updateTimeZoneConfiguration(timeZoneConfiguration);
+
+        // Update the mTimeManager mock so that it now returns the expected updated config.
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfigAfterUpdate =
+                createCapabilitiesAndConfig(/* autoSupported= */true, /* autoEnabled= */true);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig())
+                .thenReturn(capabilitiesAndConfigAfterUpdate);
 
         assertThat(mController.isEnabled()).isTrue();
-        verify(mCallback).updateTimeAndDateDisplay(mContext);
     }
 
     @Test
     public void updatePreferenceChange_prefIsUnchecked_shouldUpdatePreferenceAndNotifyCallback() {
-        mController =
-            new AutoTimeZonePreferenceController(mContext, mCallback, false /* fromSUW */);
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+                /* autoSupported= */true, /* autoEnabled= */true);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+        when(mTimeManager.updateTimeZoneConfiguration(Mockito.any())).thenReturn(true);
 
-        mController.onPreferenceChange(mPreference, false);
+        mController = new AutoTimeZonePreferenceController(
+                mContext, mCallback, false /* fromSUW */);
+
+        assertThat(mController.onPreferenceChange(mPreference, false)).isTrue();
+        verify(mCallback).updateTimeAndDateDisplay(mContext);
+
+        // Check the service was asked to change the configuration correctly.
+        TimeZoneConfiguration timeZoneConfiguration = new TimeZoneConfiguration.Builder()
+                .setAutoDetectionEnabled(false)
+                .build();
+        verify(mTimeManager).updateTimeZoneConfiguration(timeZoneConfiguration);
+
+        // Update the mTimeManager mock so that it now returns the expected updated config.
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfigAfterUpdate =
+                createCapabilitiesAndConfig(/* autoSupported= */true, /* autoEnabled= */false);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig())
+                .thenReturn(capabilitiesAndConfigAfterUpdate);
 
         assertThat(mController.isEnabled()).isFalse();
-        verify(mCallback).updateTimeAndDateDisplay(mContext);
+    }
+
+    private static TimeZoneCapabilitiesAndConfig createCapabilitiesAndConfig(
+            boolean autoSupported, boolean autoEnabled) {
+        int configureAutoDetectionEnabledCapability =
+                autoSupported ? Capabilities.CAPABILITY_POSSESSED
+                        : Capabilities.CAPABILITY_NOT_SUPPORTED;
+        TimeZoneCapabilities capabilities = new TimeZoneCapabilities.Builder(UserHandle.SYSTEM)
+                .setConfigureAutoDetectionEnabledCapability(configureAutoDetectionEnabledCapability)
+                .setConfigureGeoDetectionEnabledCapability(Capabilities.CAPABILITY_NOT_SUPPORTED)
+                .setSuggestManualTimeZoneCapability(Capabilities.CAPABILITY_POSSESSED)
+                .build();
+        TimeZoneConfiguration config = new TimeZoneConfiguration.Builder()
+                .setAutoDetectionEnabled(autoEnabled)
+                .setGeoDetectionEnabled(false)
+                .build();
+        return new TimeZoneCapabilitiesAndConfig(capabilities, config);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/datetime/TimeZonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/TimeZonePreferenceControllerTest.java
index f94e8d1..6767b4e 100644
--- a/tests/robotests/src/com/android/settings/datetime/TimeZonePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/TimeZonePreferenceControllerTest.java
@@ -22,7 +22,13 @@
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
+import android.app.time.Capabilities;
+import android.app.time.TimeManager;
+import android.app.time.TimeZoneCapabilities;
+import android.app.time.TimeZoneCapabilitiesAndConfig;
+import android.app.time.TimeZoneConfiguration;
 import android.content.Context;
+import android.os.UserHandle;
 
 import com.android.settingslib.RestrictedPreference;
 
@@ -38,8 +44,7 @@
 public class TimeZonePreferenceControllerTest {
 
     @Mock
-    private AutoTimeZonePreferenceController mAutoTimeZonePreferenceController;
-
+    private TimeManager mTimeManager;
     private Context mContext;
     private TimeZonePreferenceController mController;
     private RestrictedPreference mPreference;
@@ -47,10 +52,14 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
+
+        mContext = spy(RuntimeEnvironment.application);
+        doReturn(mTimeManager).when(mContext).getSystemService(TimeManager.class);
+
         mPreference = new RestrictedPreference(mContext);
-        mController = spy(new TimeZonePreferenceController(mContext,
-                mAutoTimeZonePreferenceController));
+
+        mController = spy(new TimeZonePreferenceController(mContext));
+        doReturn("test timezone").when(mController).getTimeZoneOffsetAndName();
     }
 
     @Test
@@ -59,26 +68,46 @@
     }
 
     @Test
-    public void updateState_autoTimeZoneEnabled_shouldDisablePref() {
+    public void updateState_suggestManualNotAllowed_shouldDisablePref() {
         // Make sure not disabled by admin.
         mPreference.setDisabledByAdmin(null);
 
-        doReturn("test timezone").when(mController).getTimeZoneOffsetAndName();
-        when(mAutoTimeZonePreferenceController.isEnabled()).thenReturn(true);
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+            /* suggestManualAllowed= */false);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+
         mController.updateState(mPreference);
 
         assertThat(mPreference.isEnabled()).isFalse();
     }
 
     @Test
-    public void updateState_autoTimeZoneDisabled_shouldEnablePref() {
+    public void updateState_suggestManualAllowed_shouldEnablePref() {
         // Make sure not disabled by admin.
         mPreference.setDisabledByAdmin(null);
 
-        doReturn("test timezone").when(mController).getTimeZoneOffsetAndName();
-        when(mAutoTimeZonePreferenceController.isEnabled()).thenReturn(false);
+        TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(
+            /* suggestManualAllowed= */true);
+        when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
+
         mController.updateState(mPreference);
 
         assertThat(mPreference.isEnabled()).isTrue();
     }
+
+    private static TimeZoneCapabilitiesAndConfig createCapabilitiesAndConfig(
+            boolean suggestManualAllowed) {
+        int suggestManualCapability = suggestManualAllowed ? Capabilities.CAPABILITY_POSSESSED
+                : Capabilities.CAPABILITY_NOT_SUPPORTED;
+        TimeZoneCapabilities capabilities = new TimeZoneCapabilities.Builder(UserHandle.SYSTEM)
+                .setConfigureAutoDetectionEnabledCapability(Capabilities.CAPABILITY_POSSESSED)
+                .setConfigureGeoDetectionEnabledCapability(Capabilities.CAPABILITY_NOT_SUPPORTED)
+                .setSuggestManualTimeZoneCapability(suggestManualCapability)
+                .build();
+        TimeZoneConfiguration config = new TimeZoneConfiguration.Builder()
+                .setAutoDetectionEnabled(!suggestManualAllowed)
+                .setGeoDetectionEnabled(false)
+                .build();
+        return new TimeZoneCapabilitiesAndConfig(capabilities, config);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/development/NotificationChannelWarningsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/NotificationChannelWarningsPreferenceControllerTest.java
index 7d08c66..1887247 100644
--- a/tests/robotests/src/com/android/settings/development/NotificationChannelWarningsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/NotificationChannelWarningsPreferenceControllerTest.java
@@ -102,7 +102,7 @@
     }
 
     @Test
-    public void updateState_settingUndefinedDebuggingEnabled_preferenceShouldBeChecked() {
+    public void updateState_settingUndefinedDebuggingEnabled_preferenceShouldNotBeChecked() {
         mController = spy(mController);
         doReturn(true).when(mController).isDebuggable();
         Settings.Global.putString(mContext.getContentResolver(),
@@ -110,18 +110,6 @@
 
         mController.updateState(mPreference);
 
-        verify(mPreference).setChecked(true);
-    }
-
-    @Test
-    public void updateState_settingUndefinedDebuggingDisabled_preferenceShouldNotBeChecked() {
-        mController = spy(mController);
-        doReturn(false).when(mController).isDebuggable();
-        Settings.Global.putString(mContext.getContentResolver(),
-                Settings.Global.SHOW_NOTIFICATION_CHANNEL_WARNINGS, "NotAnInteger");
-
-        mController.updateState(mPreference);
-
         verify(mPreference).setChecked(false);
     }
 
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
index 39f2ce5..cba2019 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
@@ -53,6 +53,7 @@
 
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
+import com.android.settings.fuelgauge.batteryusage.BatteryEntry;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowActivityManager;
 import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
index 256b621..55ff93b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBackupHelperTest.java
@@ -25,6 +25,7 @@
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
@@ -48,6 +49,7 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.util.ArraySet;
 
 import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
 
@@ -68,6 +70,7 @@
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 @RunWith(RobolectricTestRunner.class)
@@ -193,7 +196,7 @@
         doReturn(Arrays.asList(userInfo)).when(mUserManager).getProfiles(anyInt());
         doThrow(new RuntimeException())
                 .when(mIPackageManager)
-                .getInstalledApplications(anyInt(), anyInt());
+                .getInstalledApplications(anyLong(), anyInt());
 
         mBatteryBackupHelper.backupOptimizationMode(mBackupDataOutput, null);
 
@@ -341,9 +344,17 @@
 
     private void verifyBackupData(String expectedResult) throws Exception {
         final byte[] expectedBytes = expectedResult.getBytes();
+        final ArgumentCaptor<byte[]> captor = ArgumentCaptor.forClass(byte[].class);
+        final Set<String> expectedResultSet =
+                Set.of(expectedResult.split(BatteryBackupHelper.DELIMITER));
+
         verify(mBackupDataOutput).writeEntityHeader(
                 BatteryBackupHelper.KEY_OPTIMIZATION_LIST, expectedBytes.length);
-        verify(mBackupDataOutput).writeEntityData(expectedBytes, expectedBytes.length);
+        verify(mBackupDataOutput).writeEntityData(captor.capture(), eq(expectedBytes.length));
+        final String actualResult = new String(captor.getValue());
+        final Set<String> actualResultSet =
+                Set.of(actualResult.split(BatteryBackupHelper.DELIMITER));
+        assertThat(actualResultSet).isEqualTo(expectedResultSet);
     }
 
     private void createTestingData(
@@ -369,7 +380,7 @@
         doReturn(new ParceledListSlice<ApplicationInfo>(
                 Arrays.asList(applicationInfo1, applicationInfo2, applicationInfo3)))
             .when(mIPackageManager)
-            .getInstalledApplications(anyInt(), anyInt());
+            .getInstalledApplications(anyLong(), anyInt());
         // Sets the AppOpsManager for checkOpNoThrow() method.
         doReturn(AppOpsManager.MODE_ALLOWED)
                 .when(mAppOpsManager)
@@ -384,7 +395,7 @@
                         applicationInfo2.uid,
                         applicationInfo2.packageName);
         mBatteryBackupHelper.mTestApplicationInfoList =
-                Arrays.asList(applicationInfo1, applicationInfo2, applicationInfo3);
+                new ArraySet<>(Arrays.asList(applicationInfo1, applicationInfo2, applicationInfo3));
     }
 
     @Implements(UserHandle.class)
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
index db58b63..a2dcb74 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
@@ -22,26 +22,43 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.anyInt;
+import static org.mockito.Mockito.anyLong;
 import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.inOrder;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.when;
 
 import android.app.AppOpsManager;
 import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageManager;
+import android.content.pm.ParceledListSlice;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.util.ArraySet;
 
 import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.InOrder;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
+import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 
 @RunWith(RobolectricTestRunner.class)
@@ -50,9 +67,11 @@
     private static final int UID = 12345;
     private static final String PACKAGE_NAME = "com.android.app";
 
-    @Mock BatteryUtils mMockBatteryUtils;
-    @Mock AppOpsManager mMockAppOpsManager;
-    @Mock PowerAllowlistBackend mMockBackend;
+    @Mock private BatteryUtils mMockBatteryUtils;
+    @Mock private AppOpsManager mMockAppOpsManager;
+    @Mock private PowerAllowlistBackend mMockBackend;
+    @Mock private IPackageManager mMockIPackageManager;
+    @Mock private UserManager mMockUserManager;
 
     private Context mContext;
     private BatteryOptimizeUtils mBatteryOptimizeUtils;
@@ -68,6 +87,7 @@
         // Sets the default mode as MODE_RESTRICTED.
         mBatteryOptimizeUtils.mMode = AppOpsManager.MODE_IGNORED;
         mBatteryOptimizeUtils.mAllowListed = false;
+        doReturn(mMockUserManager).when(mContext).getSystemService(UserManager.class);
     }
 
     @Test
@@ -135,9 +155,7 @@
         mBatteryOptimizeUtils.setAppUsageState(MODE_RESTRICTED);
         TimeUnit.SECONDS.sleep(1);
 
-        verify(mMockBatteryUtils).setForceAppStandby(UID,
-                PACKAGE_NAME, AppOpsManager.MODE_IGNORED);
-        verify(mMockBackend).removeApp(PACKAGE_NAME);
+        verifySetAppOptimizationMode(AppOpsManager.MODE_IGNORED, /* allowListed */ false);
     }
 
     @Test
@@ -145,9 +163,7 @@
         mBatteryOptimizeUtils.setAppUsageState(MODE_UNRESTRICTED);
         TimeUnit.SECONDS.sleep(1);
 
-        verify(mMockBatteryUtils).setForceAppStandby(UID,
-                PACKAGE_NAME, AppOpsManager.MODE_ALLOWED);
-        verify(mMockBackend).addApp(PACKAGE_NAME);
+        verifySetAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ true);
     }
 
     @Test
@@ -155,9 +171,7 @@
         mBatteryOptimizeUtils.setAppUsageState(MODE_OPTIMIZED);
         TimeUnit.SECONDS.sleep(1);
 
-        verify(mMockBatteryUtils).setForceAppStandby(UID,
-                PACKAGE_NAME, AppOpsManager.MODE_ALLOWED);
-        verify(mMockBackend).removeApp(PACKAGE_NAME);
+        verifySetAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ false);
     }
 
     @Test
@@ -172,4 +186,148 @@
         verifyNoInteractions(mMockBackend);
         verifyNoInteractions(mMockBatteryUtils);
     }
+
+    @Test
+    public void testGetInstalledApplications_returnEmptyArray() {
+        assertTrue(BatteryOptimizeUtils.getInstalledApplications(mContext, mMockIPackageManager)
+                .isEmpty());
+    }
+
+    @Test
+    public void testGetInstalledApplications_returnNull() throws Exception {
+        final UserInfo userInfo =
+                new UserInfo(/*userId=*/ 0, /*userName=*/ "google", /*flag=*/ 0);
+        doReturn(Arrays.asList(userInfo)).when(mMockUserManager).getProfiles(anyInt());
+        doThrow(new RuntimeException())
+            .when(mMockIPackageManager)
+            .getInstalledApplications(anyLong(), anyInt());
+
+        assertNull(BatteryOptimizeUtils.getInstalledApplications(mContext, mMockIPackageManager));
+    }
+
+    @Test
+    public void testGetInstalledApplications_returnInstalledApps() throws Exception {
+        final UserInfo userInfo =
+                new UserInfo(/*userId=*/ 0, /*userName=*/ "google", /*flag=*/ 0);
+        doReturn(Arrays.asList(userInfo)).when(mMockUserManager).getProfiles(anyInt());
+
+        final ApplicationInfo applicationInfo1 = new ApplicationInfo();
+        applicationInfo1.enabled = true;
+        applicationInfo1.uid = 1;
+        final ApplicationInfo applicationInfo2 = new ApplicationInfo();
+        applicationInfo2.enabled = false;
+        applicationInfo2.uid = 2;
+        applicationInfo2.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
+        final ApplicationInfo applicationInfo3 = new ApplicationInfo();
+        applicationInfo3.enabled = false;
+        applicationInfo3.uid = 3;
+        applicationInfo3.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
+        final ApplicationInfo applicationInfo4 = new ApplicationInfo();
+        applicationInfo4.enabled = true;
+        applicationInfo4.uid = 4;
+        applicationInfo4.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
+        doReturn(new ParceledListSlice<ApplicationInfo>(
+            Arrays.asList(applicationInfo1, applicationInfo2, applicationInfo3, applicationInfo4)))
+            .when(mMockIPackageManager)
+            .getInstalledApplications(anyLong(), anyInt());
+
+        final ArraySet<ApplicationInfo> applications =
+                BatteryOptimizeUtils.getInstalledApplications(mContext, mMockIPackageManager);
+        assertThat(applications.size()).isEqualTo(3);
+        // applicationInfo3 should be filtered.
+        assertTrue(applications.contains(applicationInfo1));
+        assertTrue(applications.contains(applicationInfo2));
+        assertFalse(applications.contains(applicationInfo3));
+        assertTrue(applications.contains(applicationInfo4));
+    }
+
+    @Test
+    public void testResetAppOptimizationMode_Optimized_verifyAction() throws Exception {
+        runTestForResetWithMode(
+                AppOpsManager.MODE_ALLOWED, /* allowListed */ false,
+                /* isSystemOrDefaultApp */ false);
+
+        verifyNoInteractions(mMockBatteryUtils);
+
+        final InOrder inOrder = inOrder(mMockBackend);
+        inOrder.verify(mMockBackend).refreshList();
+        inOrder.verify(mMockBackend).isAllowlisted(PACKAGE_NAME);
+        verifyNoMoreInteractions(mMockBackend);
+    }
+
+    @Test
+    public void testResetAppOptimizationMode_SystemOrDefault_verifyAction() throws Exception {
+        runTestForResetWithMode(
+                AppOpsManager.MODE_ALLOWED, /* allowListed */ true,
+                /* isSystemOrDefaultApp */ true);
+
+        verifyNoInteractions(mMockBatteryUtils);
+
+        final InOrder inOrder = inOrder(mMockBackend);
+        inOrder.verify(mMockBackend).refreshList();
+        inOrder.verify(mMockBackend).isAllowlisted(PACKAGE_NAME);
+        inOrder.verify(mMockBackend).isSysAllowlisted(PACKAGE_NAME);
+        verifyNoMoreInteractions(mMockBackend);
+    }
+
+    @Test
+    public void testResetAppOptimizationMode_Restricted_verifyAction() throws Exception {
+        runTestForResetWithMode(
+                AppOpsManager.MODE_IGNORED, /* allowListed */ false,
+                /* isSystemOrDefaultApp */ false);
+
+        verifySetAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ false);
+    }
+
+    @Test
+    public void testResetAppOptimizationMode_Unrestricted_verifyAction() throws Exception {
+        runTestForResetWithMode(
+                AppOpsManager.MODE_ALLOWED, /* allowListed */ true,
+                /* isSystemOrDefaultApp */ false);
+
+        verifySetAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ false);
+    }
+
+    private void runTestForResetWithMode(
+            int appStandbyMode, boolean allowListed, boolean isSystemOrDefaultApp)
+            throws Exception {
+        final UserInfo userInfo =
+                new UserInfo(/*userId=*/ 0, /*userName=*/ "google", /*flag=*/ 0);
+        doReturn(Arrays.asList(userInfo)).when(mMockUserManager).getProfiles(anyInt());
+        final ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.uid = UID;
+        applicationInfo.packageName = PACKAGE_NAME;
+        applicationInfo.enabled = true;
+        doReturn(new ParceledListSlice<ApplicationInfo>(
+                Arrays.asList(applicationInfo)))
+                .when(mMockIPackageManager)
+                .getInstalledApplications(anyLong(), anyInt());
+
+        doReturn(appStandbyMode)
+                .when(mMockAppOpsManager)
+                .checkOpNoThrow(anyInt(), anyInt(), anyString());
+        doReturn(allowListed)
+                .when(mMockBackend)
+                .isAllowlisted(anyString());
+        doReturn(isSystemOrDefaultApp)
+                .when(mMockBackend)
+                .isSysAllowlisted(anyString());
+        doReturn(isSystemOrDefaultApp)
+                .when(mMockBackend)
+                .isDefaultActiveApp(anyString());
+
+        BatteryOptimizeUtils.resetAppOptimizationMode(
+                mContext, mMockIPackageManager, mMockAppOpsManager, mMockBackend,
+                mMockBatteryUtils);
+        TimeUnit.SECONDS.sleep(1);
+    }
+
+    private void verifySetAppOptimizationMode(int appStandbyMode, boolean allowListed) {
+        verify(mMockBatteryUtils).setForceAppStandby(UID, PACKAGE_NAME, appStandbyMode);
+        if (allowListed) {
+            verify(mMockBackend).addApp(PACKAGE_NAME);
+        } else {
+            verify(mMockBackend).removeApp(PACKAGE_NAME);
+        }
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
index d4c4406..66a5e7f 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryAppListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryAppListPreferenceControllerTest.java
similarity index 95%
rename from tests/robotests/src/com/android/settings/fuelgauge/BatteryAppListPreferenceControllerTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryAppListPreferenceControllerTest.java
index 406fe8a..5815bae 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryAppListPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryAppListPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -35,6 +35,7 @@
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.InstrumentedPreferenceFragment;
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.Before;
@@ -81,9 +82,9 @@
         when(mContext.getPackageManager()).thenReturn(mPackageManager);
         when(mContext.getApplicationContext()).thenReturn(mContext);
         when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
-        when(mUserManager.getProfileIdsWithDisabled(anyInt())).thenReturn(new int[] {});
+        when(mUserManager.getProfileIdsWithDisabled(anyInt())).thenReturn(new int[]{});
         when(mFeatureFactory.powerUsageFeatureProvider.getHideApplicationSummary(mContext))
-                .thenReturn(new String[] {"com.android.googlequicksearchbox"});
+                .thenReturn(new String[]{"com.android.googlequicksearchbox"});
 
         mPreference = new PowerGaugePreference(mContext);
 
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java
similarity index 75%
rename from tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java
index 3f54270..ec98226 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.any;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.anyLong;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.never;
@@ -42,6 +42,7 @@
 
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.InstrumentedPreferenceFragment;
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
@@ -65,20 +66,24 @@
     private static final String PREF_KEY = "pref_key";
     private static final String PREF_SUMMARY = "fake preference summary";
     private static final int DESIRED_HISTORY_SIZE =
-        BatteryChartPreferenceController.DESIRED_HISTORY_SIZE;
+            BatteryChartPreferenceController.DESIRED_HISTORY_SIZE;
 
-    @Mock private InstrumentedPreferenceFragment mFragment;
-    @Mock private SettingsActivity mSettingsActivity;
-    @Mock private PreferenceGroup mAppListGroup;
-    @Mock private PackageManager mPackageManager;
-    @Mock private Drawable mDrawable;
-    @Mock private BatteryHistEntry mBatteryHistEntry;
-    @Mock private BatteryChartView mBatteryChartView;
-    @Mock private PowerGaugePreference mPowerGaugePreference;
-    @Mock private ExpandDividerPreference mExpandDividerPreference;
-    @Mock private BatteryUtils mBatteryUtils;
-    @Mock private Configuration mConfiguration;
-    @Mock private Resources mResources;
+    @Mock
+    private InstrumentedPreferenceFragment mFragment;
+    @Mock
+    private SettingsActivity mSettingsActivity;
+    @Mock
+    private PreferenceGroup mAppListGroup;
+    @Mock
+    private Drawable mDrawable;
+    @Mock
+    private BatteryHistEntry mBatteryHistEntry;
+    @Mock
+    private BatteryChartView mBatteryChartView;
+    @Mock
+    private PowerGaugePreference mPowerGaugePreference;
+    @Mock
+    private BatteryUtils mBatteryUtils;
 
     private Context mContext;
     private FakeFeatureFactory mFeatureFactory;
@@ -97,29 +102,29 @@
         final Resources resources = spy(mContext.getResources());
         resources.getConfiguration().setLocales(new LocaleList(new Locale("en_US")));
         doReturn(resources).when(mContext).getResources();
-        doReturn(new String[] {"com.android.googlequicksearchbox"})
-            .when(mFeatureFactory.powerUsageFeatureProvider)
-            .getHideApplicationSummary(mContext);
-        doReturn(new String[] {"com.android.gms.persistent"})
-            .when(mFeatureFactory.powerUsageFeatureProvider)
-            .getHideApplicationEntries(mContext);
+        doReturn(new String[]{"com.android.googlequicksearchbox"})
+                .when(mFeatureFactory.powerUsageFeatureProvider)
+                .getHideApplicationSummary(mContext);
+        doReturn(new String[]{"com.android.gms.persistent"})
+                .when(mFeatureFactory.powerUsageFeatureProvider)
+                .getHideApplicationEntries(mContext);
         mBatteryChartPreferenceController = createController();
         mBatteryChartPreferenceController.mPrefContext = mContext;
         mBatteryChartPreferenceController.mAppListPrefGroup = mAppListGroup;
         mBatteryChartPreferenceController.mBatteryChartView = mBatteryChartView;
         mBatteryDiffEntry = new BatteryDiffEntry(
-            mContext,
-            /*foregroundUsageTimeInMs=*/ 1,
-            /*backgroundUsageTimeInMs=*/ 2,
-            /*consumePower=*/ 3,
-            mBatteryHistEntry);
+                mContext,
+                /*foregroundUsageTimeInMs=*/ 1,
+                /*backgroundUsageTimeInMs=*/ 2,
+                /*consumePower=*/ 3,
+                mBatteryHistEntry);
         mBatteryDiffEntry = spy(mBatteryDiffEntry);
         // Adds fake testing data.
         BatteryDiffEntry.sResourceCache.put(
-            "fakeBatteryDiffEntryKey",
-            new BatteryEntry.NameAndIcon("fakeName", /*icon=*/ null, /*iconId=*/ 1));
+                "fakeBatteryDiffEntryKey",
+                new BatteryEntry.NameAndIcon("fakeName", /*icon=*/ null, /*iconId=*/ 1));
         mBatteryChartPreferenceController.setBatteryHistoryMap(
-            createBatteryHistoryMap());
+                createBatteryHistoryMap());
     }
 
     @Test
@@ -146,7 +151,7 @@
     public void testOnDestroy_clearPreferenceCache() {
         // Ensures the testing environment is correct.
         mBatteryChartPreferenceController.mPreferenceCache.put(
-            PREF_KEY, mPowerGaugePreference);
+                PREF_KEY, mPowerGaugePreference);
         assertThat(mBatteryChartPreferenceController.mPreferenceCache).hasSize(1);
 
         mBatteryChartPreferenceController.onDestroy();
@@ -163,19 +168,19 @@
     @Test
     public void testSetBatteryHistoryMap_createExpectedKeysAndLevels() {
         mBatteryChartPreferenceController.setBatteryHistoryMap(
-            createBatteryHistoryMap());
+                createBatteryHistoryMap());
 
         // Verifies the created battery keys array.
         for (int index = 0; index < DESIRED_HISTORY_SIZE; index++) {
             assertThat(mBatteryChartPreferenceController.mBatteryHistoryKeys[index])
-                // These values is are calculated by hand from createBatteryHistoryMap().
-                .isEqualTo(index + 1);
+                    // These values is are calculated by hand from createBatteryHistoryMap().
+                    .isEqualTo(index + 1);
         }
         // Verifies the created battery levels array.
         for (int index = 0; index < 13; index++) {
             assertThat(mBatteryChartPreferenceController.mBatteryHistoryLevels[index])
-                // These values is are calculated by hand from createBatteryHistoryMap().
-                .isEqualTo(100 - index * 2);
+                    // These values is are calculated by hand from createBatteryHistoryMap().
+                    .isEqualTo(100 - index * 2);
         }
         assertThat(mBatteryChartPreferenceController.mBatteryIndexedMap).hasSize(13);
     }
@@ -183,19 +188,19 @@
     @Test
     public void testSetBatteryHistoryMap_largeSize_createExpectedKeysAndLevels() {
         mBatteryChartPreferenceController.setBatteryHistoryMap(
-            createBatteryHistoryMap());
+                createBatteryHistoryMap());
 
         // Verifies the created battery keys array.
         for (int index = 0; index < DESIRED_HISTORY_SIZE; index++) {
-          assertThat(mBatteryChartPreferenceController.mBatteryHistoryKeys[index])
-              // These values is are calculated by hand from createBatteryHistoryMap().
-              .isEqualTo(index + 1);
+            assertThat(mBatteryChartPreferenceController.mBatteryHistoryKeys[index])
+                    // These values is are calculated by hand from createBatteryHistoryMap().
+                    .isEqualTo(index + 1);
         }
         // Verifies the created battery levels array.
         for (int index = 0; index < 13; index++) {
-          assertThat(mBatteryChartPreferenceController.mBatteryHistoryLevels[index])
-              // These values is are calculated by hand from createBatteryHistoryMap().
-              .isEqualTo(100 - index * 2);
+            assertThat(mBatteryChartPreferenceController.mBatteryHistoryLevels[index])
+                    // These values is are calculated by hand from createBatteryHistoryMap().
+                    .isEqualTo(100 - index * 2);
         }
         assertThat(mBatteryChartPreferenceController.mBatteryIndexedMap).hasSize(13);
     }
@@ -204,14 +209,14 @@
     public void testRefreshUi_batteryIndexedMapIsNull_ignoreRefresh() {
         mBatteryChartPreferenceController.setBatteryHistoryMap(null);
         assertThat(mBatteryChartPreferenceController.refreshUi(
-            /*trapezoidIndex=*/ 1, /*isForce=*/ false)).isFalse();
+                /*trapezoidIndex=*/ 1, /*isForce=*/ false)).isFalse();
     }
 
     @Test
     public void testRefreshUi_batteryChartViewIsNull_ignoreRefresh() {
         mBatteryChartPreferenceController.mBatteryChartView = null;
         assertThat(mBatteryChartPreferenceController.refreshUi(
-            /*trapezoidIndex=*/ 1, /*isForce=*/ false)).isFalse();
+                /*trapezoidIndex=*/ 1, /*isForce=*/ false)).isFalse();
     }
 
     @Test
@@ -219,7 +224,7 @@
         final int trapezoidIndex = 1;
         mBatteryChartPreferenceController.mTrapezoidIndex = trapezoidIndex;
         assertThat(mBatteryChartPreferenceController.refreshUi(
-            trapezoidIndex, /*isForce=*/ false)).isFalse();
+                trapezoidIndex, /*isForce=*/ false)).isFalse();
     }
 
     @Test
@@ -227,18 +232,18 @@
         final int trapezoidIndex = 1;
         mBatteryChartPreferenceController.mTrapezoidIndex = trapezoidIndex;
         assertThat(mBatteryChartPreferenceController.refreshUi(
-            trapezoidIndex, /*isForce=*/ true)).isTrue();
+                trapezoidIndex, /*isForce=*/ true)).isTrue();
     }
 
     @Test
     public void testForceRefreshUi_updateTrapezoidIndexIntoSelectAll() {
         mBatteryChartPreferenceController.mTrapezoidIndex =
-            BatteryChartView.SELECTED_INDEX_INVALID;
+                BatteryChartView.SELECTED_INDEX_INVALID;
         mBatteryChartPreferenceController.setBatteryHistoryMap(
-            createBatteryHistoryMap());
+                createBatteryHistoryMap());
 
         assertThat(mBatteryChartPreferenceController.mTrapezoidIndex)
-            .isEqualTo(BatteryChartView.SELECTED_INDEX_ALL);
+                .isEqualTo(BatteryChartView.SELECTED_INDEX_ALL);
     }
 
     @Test
@@ -247,7 +252,7 @@
         doReturn(0).when(mAppListGroup).getPreferenceCount();
 
         mBatteryChartPreferenceController.refreshUi(
-            trapezoidIndex, /*isForce=*/ true);
+                trapezoidIndex, /*isForce=*/ true);
         verify(mAppListGroup, never()).removeAll();
     }
 
@@ -261,17 +266,17 @@
         assertThat(mBatteryChartPreferenceController.mPreferenceCache).isEmpty();
 
         mBatteryChartPreferenceController.refreshUi(
-            trapezoidIndex, /*isForce=*/ true);
+                trapezoidIndex, /*isForce=*/ true);
 
         assertThat(mBatteryChartPreferenceController.mPreferenceCache.get(PREF_KEY))
-            .isEqualTo(mPowerGaugePreference);
+                .isEqualTo(mPowerGaugePreference);
         verify(mAppListGroup).removeAll();
     }
 
     @Test
     public void testAddPreferenceToScreen_emptyContent_ignoreAddPreference() {
         mBatteryChartPreferenceController.addPreferenceToScreen(
-            new ArrayList<BatteryDiffEntry>());
+                new ArrayList<BatteryDiffEntry>());
         verify(mAppListGroup, never()).addPreference(any());
     }
 
@@ -286,12 +291,12 @@
         doReturn(false).when(mBatteryDiffEntry).validForRestriction();
 
         mBatteryChartPreferenceController.addPreferenceToScreen(
-            Arrays.asList(mBatteryDiffEntry));
+                Arrays.asList(mBatteryDiffEntry));
 
         // Verifies the preference cache.
         final PowerGaugePreference pref =
-            (PowerGaugePreference) mBatteryChartPreferenceController.mPreferenceCache
-                .get(PREF_KEY);
+                (PowerGaugePreference) mBatteryChartPreferenceController.mPreferenceCache
+                        .get(PREF_KEY);
         assertThat(pref).isNotNull();
         // Verifies the added preference configuration.
         verify(mAppListGroup).addPreference(pref);
@@ -314,7 +319,7 @@
         doReturn(mPowerGaugePreference).when(mAppListGroup).findPreference(PREF_KEY);
 
         mBatteryChartPreferenceController.addPreferenceToScreen(
-            Arrays.asList(mBatteryDiffEntry));
+                Arrays.asList(mBatteryDiffEntry));
 
         verify(mAppListGroup, never()).addPreference(any());
     }
@@ -322,12 +327,12 @@
     @Test
     public void testHandlePreferenceTreeiClick_notPowerGaugePreference_returnFalse() {
         assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick(mAppListGroup))
-            .isFalse();
+                .isFalse();
 
         verify(mMetricsFeatureProvider, never())
-            .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM);
+                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM);
         verify(mMetricsFeatureProvider, never())
-            .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM);
+                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM);
     }
 
     @Test
@@ -336,7 +341,7 @@
         doReturn(mBatteryDiffEntry).when(mPowerGaugePreference).getBatteryDiffEntry();
 
         assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick(
-            mPowerGaugePreference)).isTrue();
+                mPowerGaugePreference)).isTrue();
         verify(mMetricsFeatureProvider)
                 .action(
                         SettingsEnums.OPEN_BATTERY_USAGE,
@@ -353,7 +358,7 @@
         doReturn(mBatteryDiffEntry).when(mPowerGaugePreference).getBatteryDiffEntry();
 
         assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick(
-            mPowerGaugePreference)).isTrue();
+                mPowerGaugePreference)).isTrue();
         verify(mMetricsFeatureProvider)
                 .action(
                         SettingsEnums.OPEN_BATTERY_USAGE,
@@ -369,9 +374,9 @@
         pref.setSummary(PREF_SUMMARY);
 
         mBatteryChartPreferenceController.setPreferenceSummary(
-            pref, createBatteryDiffEntry(
-                /*foregroundUsageTimeInMs=*/ 0,
-                /*backgroundUsageTimeInMs=*/ 0));
+                pref, createBatteryDiffEntry(
+                        /*foregroundUsageTimeInMs=*/ 0,
+                        /*backgroundUsageTimeInMs=*/ 0));
         assertThat(pref.getSummary()).isNull();
     }
 
@@ -381,9 +386,9 @@
         pref.setSummary(PREF_SUMMARY);
 
         mBatteryChartPreferenceController.setPreferenceSummary(
-            pref, createBatteryDiffEntry(
-                /*foregroundUsageTimeInMs=*/ 0,
-                /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS));
+                pref, createBatteryDiffEntry(
+                        /*foregroundUsageTimeInMs=*/ 0,
+                        /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS));
         assertThat(pref.getSummary()).isEqualTo("Background: 1 min");
     }
 
@@ -393,9 +398,9 @@
         pref.setSummary(PREF_SUMMARY);
 
         mBatteryChartPreferenceController.setPreferenceSummary(
-            pref, createBatteryDiffEntry(
-                /*foregroundUsageTimeInMs=*/ 100,
-                /*backgroundUsageTimeInMs=*/ 200));
+                pref, createBatteryDiffEntry(
+                        /*foregroundUsageTimeInMs=*/ 100,
+                        /*backgroundUsageTimeInMs=*/ 200));
         assertThat(pref.getSummary()).isEqualTo("Total: less than a min");
     }
 
@@ -405,11 +410,11 @@
         pref.setSummary(PREF_SUMMARY);
 
         mBatteryChartPreferenceController.setPreferenceSummary(
-            pref, createBatteryDiffEntry(
-                /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
-                /*backgroundUsageTimeInMs=*/ 200));
+                pref, createBatteryDiffEntry(
+                        /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
+                        /*backgroundUsageTimeInMs=*/ 200));
         assertThat(pref.getSummary())
-            .isEqualTo("Total: 1 min\nBackground: less than a min");
+                .isEqualTo("Total: 1 min\nBackground: less than a min");
     }
 
     @Test
@@ -418,9 +423,9 @@
         pref.setSummary(PREF_SUMMARY);
 
         mBatteryChartPreferenceController.setPreferenceSummary(
-            pref, createBatteryDiffEntry(
-                /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
-                /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS));
+                pref, createBatteryDiffEntry(
+                        /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
+                        /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS));
         assertThat(pref.getSummary()).isEqualTo("Total: 2 min\nBackground: 1 min");
     }
 
@@ -429,11 +434,11 @@
         final PowerGaugePreference pref = new PowerGaugePreference(mContext);
         pref.setSummary(PREF_SUMMARY);
         final BatteryDiffEntry batteryDiffEntry =
-            spy(createBatteryDiffEntry(
-                /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
-                /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS));
+                spy(createBatteryDiffEntry(
+                        /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
+                        /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS));
         doReturn("com.android.googlequicksearchbox").when(batteryDiffEntry)
-            .getPackageName();
+                .getPackageName();
 
         mBatteryChartPreferenceController.setPreferenceSummary(pref, batteryDiffEntry);
         assertThat(pref.getSummary()).isNull();
@@ -442,28 +447,28 @@
     @Test
     public void testValidateUsageTime_returnTrueIfBatteryDiffEntryIsValid() {
         assertThat(BatteryChartPreferenceController.validateUsageTime(
-            createBatteryDiffEntry(
-                /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
-                /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS)))
-            .isTrue();
+                createBatteryDiffEntry(
+                        /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
+                        /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS)))
+                .isTrue();
     }
 
     @Test
     public void testValidateUsageTime_foregroundTimeExceedThreshold_returnFalse() {
         assertThat(BatteryChartPreferenceController.validateUsageTime(
-            createBatteryDiffEntry(
-                /*foregroundUsageTimeInMs=*/ DateUtils.HOUR_IN_MILLIS * 3,
-                /*backgroundUsageTimeInMs=*/ 0)))
-            .isFalse();
+                createBatteryDiffEntry(
+                        /*foregroundUsageTimeInMs=*/ DateUtils.HOUR_IN_MILLIS * 3,
+                        /*backgroundUsageTimeInMs=*/ 0)))
+                .isFalse();
     }
 
     @Test
     public void testValidateUsageTime_backgroundTimeExceedThreshold_returnFalse() {
         assertThat(BatteryChartPreferenceController.validateUsageTime(
-            createBatteryDiffEntry(
-                /*foregroundUsageTimeInMs=*/ 0,
-                /*backgroundUsageTimeInMs=*/ DateUtils.HOUR_IN_MILLIS * 3)))
-            .isFalse();
+                createBatteryDiffEntry(
+                        /*foregroundUsageTimeInMs=*/ 0,
+                        /*backgroundUsageTimeInMs=*/ DateUtils.HOUR_IN_MILLIS * 3)))
+                .isFalse();
     }
 
     @Test
@@ -481,10 +486,10 @@
         // Verifies the added preference.
         assertThat(captor.getValue().getKey()).isEqualTo(PREF_KEY);
         verify(mMetricsFeatureProvider)
-            .action(
-                mContext,
-                SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM,
-                true /*isExpanded*/);
+                .action(
+                        mContext,
+                        SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM,
+                        true /*isExpanded*/);
     }
 
     @Test
@@ -501,10 +506,10 @@
         verify(mAppListGroup).removePreference(mPowerGaugePreference);
         assertThat(mBatteryChartPreferenceController.mPreferenceCache).hasSize(1);
         verify(mMetricsFeatureProvider)
-            .action(
-                mContext,
-                SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM,
-                false /*isExpanded*/);
+                .action(
+                        mContext,
+                        SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM,
+                        false /*isExpanded*/);
     }
 
     @Test
@@ -512,16 +517,16 @@
         mBatteryChartPreferenceController.onSelect(1 /*slot index*/);
 
         verify(mMetricsFeatureProvider)
-            .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT);
+                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT);
     }
 
     @Test
     public void testOnSelect_selectAll_logMetric() {
         mBatteryChartPreferenceController.onSelect(
-            BatteryChartView.SELECTED_INDEX_ALL /*slot index*/);
+                BatteryChartView.SELECTED_INDEX_ALL /*slot index*/);
 
         verify(mMetricsFeatureProvider)
-            .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOW_ALL);
+                .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOW_ALL);
     }
 
     @Test
@@ -529,9 +534,9 @@
         mBatteryChartPreferenceController = createController();
         setUpBatteryHistoryKeys();
         mBatteryChartPreferenceController.mAppListPrefGroup =
-            spy(new PreferenceCategory(mContext));
+                spy(new PreferenceCategory(mContext));
         mBatteryChartPreferenceController.mExpandDividerPreference =
-            spy(new ExpandDividerPreference(mContext));
+                spy(new ExpandDividerPreference(mContext));
         // Simulates select the first slot.
         mBatteryChartPreferenceController.mTrapezoidIndex = 0;
 
@@ -540,12 +545,12 @@
         ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
         // Verifies the title in the preference group.
         verify(mBatteryChartPreferenceController.mAppListPrefGroup)
-            .setTitle(captor.capture());
+                .setTitle(captor.capture());
         assertThat(captor.getValue()).isNotEqualTo("App usage for past 24 hr");
         // Verifies the title in the expandable divider.
         captor = ArgumentCaptor.forClass(String.class);
         verify(mBatteryChartPreferenceController.mExpandDividerPreference)
-            .setTitle(captor.capture());
+                .setTitle(captor.capture());
         assertThat(captor.getValue()).isNotEqualTo("System usage for past 24 hr");
     }
 
@@ -553,27 +558,27 @@
     public void testRefreshCategoryTitle_setLast24HrIntoBothTitleTextView() {
         mBatteryChartPreferenceController = createController();
         mBatteryChartPreferenceController.mAppListPrefGroup =
-            spy(new PreferenceCategory(mContext));
+                spy(new PreferenceCategory(mContext));
         mBatteryChartPreferenceController.mExpandDividerPreference =
-            spy(new ExpandDividerPreference(mContext));
+                spy(new ExpandDividerPreference(mContext));
         // Simulates select all condition.
         mBatteryChartPreferenceController.mTrapezoidIndex =
-            BatteryChartView.SELECTED_INDEX_ALL;
+                BatteryChartView.SELECTED_INDEX_ALL;
 
         mBatteryChartPreferenceController.refreshCategoryTitle();
 
         ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
         // Verifies the title in the preference group.
         verify(mBatteryChartPreferenceController.mAppListPrefGroup)
-            .setTitle(captor.capture());
+                .setTitle(captor.capture());
         assertThat(captor.getValue())
-            .isEqualTo("App usage for past 24 hr");
+                .isEqualTo("App usage for past 24 hr");
         // Verifies the title in the expandable divider.
         captor = ArgumentCaptor.forClass(String.class);
         verify(mBatteryChartPreferenceController.mExpandDividerPreference)
-            .setTitle(captor.capture());
+                .setTitle(captor.capture());
         assertThat(captor.getValue())
-            .isEqualTo("System usage for past 24 hr");
+                .isEqualTo("System usage for past 24 hr");
     }
 
     @Test
@@ -581,37 +586,37 @@
         mBatteryChartPreferenceController = createController();
         mBatteryChartPreferenceController.mBatteryHistoryKeys = null;
         mBatteryChartPreferenceController.mBatteryChartView =
-            spy(new BatteryChartView(mContext));
+                spy(new BatteryChartView(mContext));
         mBatteryChartPreferenceController.setTimestampLabel();
 
         verify(mBatteryChartPreferenceController.mBatteryChartView, never())
-            .setLatestTimestamp(anyLong());
+                .setLatestTimestamp(anyLong());
     }
 
     @Test
     public void testSetTimestampLabel_setExpectedTimestampData() {
         mBatteryChartPreferenceController = createController();
         mBatteryChartPreferenceController.mBatteryChartView =
-            spy(new BatteryChartView(mContext));
+                spy(new BatteryChartView(mContext));
         setUpBatteryHistoryKeys();
 
         mBatteryChartPreferenceController.setTimestampLabel();
 
         verify(mBatteryChartPreferenceController.mBatteryChartView)
-            .setLatestTimestamp(1619247636826L);
+                .setLatestTimestamp(1619247636826L);
     }
 
     @Test
     public void testSetTimestampLabel_withoutValidTimestamp_setExpectedTimestampData() {
         mBatteryChartPreferenceController = createController();
         mBatteryChartPreferenceController.mBatteryChartView =
-            spy(new BatteryChartView(mContext));
-        mBatteryChartPreferenceController.mBatteryHistoryKeys = new long[] {0L};
+                spy(new BatteryChartView(mContext));
+        mBatteryChartPreferenceController.mBatteryHistoryKeys = new long[]{0L};
 
         mBatteryChartPreferenceController.setTimestampLabel();
 
         verify(mBatteryChartPreferenceController.mBatteryChartView)
-            .setLatestTimestamp(anyLong());
+                .setLatestTimestamp(anyLong());
     }
 
     @Test
@@ -628,10 +633,10 @@
 
         mBatteryChartPreferenceController.onCreate(bundle);
         mBatteryChartPreferenceController.setBatteryHistoryMap(
-             createBatteryHistoryMap());
+                createBatteryHistoryMap());
 
         assertThat(mBatteryChartPreferenceController.mTrapezoidIndex)
-            .isEqualTo(expectedIndex);
+                .isEqualTo(expectedIndex);
         assertThat(mBatteryChartPreferenceController.mIsExpanded).isTrue();
     }
 
@@ -639,24 +644,24 @@
     public void testIsValidToShowSummary_returnExpectedResult() {
         assertThat(mBatteryChartPreferenceController
                 .isValidToShowSummary("com.google.android.apps.scone"))
-            .isTrue();
+                .isTrue();
 
         // Verifies the item which is defined in the array list.
         assertThat(mBatteryChartPreferenceController
                 .isValidToShowSummary("com.android.googlequicksearchbox"))
-            .isFalse();
+                .isFalse();
     }
 
     @Test
     public void testIsValidToShowEntry_returnExpectedResult() {
         assertThat(mBatteryChartPreferenceController
                 .isValidToShowEntry("com.google.android.apps.scone"))
-            .isTrue();
+                .isTrue();
 
         // Verifies the items which are defined in the array list.
         assertThat(mBatteryChartPreferenceController
                 .isValidToShowEntry("com.android.gms.persistent"))
-            .isFalse();
+                .isFalse();
     }
 
     private static Map<Long, Map<String, BatteryHistEntry>> createBatteryHistoryMap() {
@@ -675,22 +680,22 @@
     private BatteryDiffEntry createBatteryDiffEntry(
             long foregroundUsageTimeInMs, long backgroundUsageTimeInMs) {
         return new BatteryDiffEntry(
-            mContext, foregroundUsageTimeInMs, backgroundUsageTimeInMs,
-            /*consumePower=*/ 0, mBatteryHistEntry);
+                mContext, foregroundUsageTimeInMs, backgroundUsageTimeInMs,
+                /*consumePower=*/ 0, mBatteryHistEntry);
     }
 
     private void setUpBatteryHistoryKeys() {
         mBatteryChartPreferenceController.mBatteryHistoryKeys =
-            new long[] {1619196786769L, 0L, 1619247636826L};
+                new long[]{1619196786769L, 0L, 1619247636826L};
         ConvertUtils.utcToLocalTimeHour(
-            mContext, /*timestamp=*/ 0, /*is24HourFormat=*/ false);
+                mContext, /*timestamp=*/ 0, /*is24HourFormat=*/ false);
     }
 
     private BatteryChartPreferenceController createController() {
         final BatteryChartPreferenceController controller =
-            new BatteryChartPreferenceController(
-                mContext, "app_list", /*lifecycle=*/ null,
-                mSettingsActivity, mFragment);
+                new BatteryChartPreferenceController(
+                        mContext, "app_list", /*lifecycle=*/ null,
+                        mSettingsActivity, mFragment);
         controller.mPrefContext = mContext;
         return controller;
     }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartViewTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewTest.java
similarity index 72%
rename from tests/robotests/src/com/android/settings/fuelgauge/BatteryChartViewTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewTest.java
index 0b75e79..a2d8ca9 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartViewTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewTest.java
@@ -1,5 +1,6 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -11,14 +12,11 @@
  * 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.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
@@ -30,6 +28,7 @@
 import android.os.LocaleList;
 import android.view.accessibility.AccessibilityManager;
 
+import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
 import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.Before;
@@ -40,8 +39,8 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
-import java.util.Arrays;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Locale;
 
 @RunWith(RobolectricTestRunner.class)
@@ -52,8 +51,10 @@
     private FakeFeatureFactory mFeatureFactory;
     private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
 
-    @Mock private AccessibilityServiceInfo mockAccessibilityServiceInfo;
-    @Mock private AccessibilityManager mockAccessibilityManager;
+    @Mock
+    private AccessibilityServiceInfo mMockAccessibilityServiceInfo;
+    @Mock
+    private AccessibilityManager mMockAccessibilityManager;
 
     @Before
     public void setUp() {
@@ -62,64 +63,64 @@
         mPowerUsageFeatureProvider = mFeatureFactory.powerUsageFeatureProvider;
         mContext = spy(RuntimeEnvironment.application);
         mContext.getResources().getConfiguration().setLocales(
-            new LocaleList(new Locale("en_US")));
+                new LocaleList(new Locale("en_US")));
         mBatteryChartView = new BatteryChartView(mContext);
-        doReturn(mockAccessibilityManager).when(mContext)
-            .getSystemService(AccessibilityManager.class);
-        doReturn("TalkBackService").when(mockAccessibilityServiceInfo).getId();
-        doReturn(Arrays.asList(mockAccessibilityServiceInfo))
-            .when(mockAccessibilityManager)
-            .getEnabledAccessibilityServiceList(anyInt());
+        doReturn(mMockAccessibilityManager).when(mContext)
+                .getSystemService(AccessibilityManager.class);
+        doReturn("TalkBackService").when(mMockAccessibilityServiceInfo).getId();
+        doReturn(Arrays.asList(mMockAccessibilityServiceInfo))
+                .when(mMockAccessibilityManager)
+                .getEnabledAccessibilityServiceList(anyInt());
     }
 
     @Test
     public void testIsAccessibilityEnabled_disable_returnFalse() {
-        doReturn(false).when(mockAccessibilityManager).isEnabled();
+        doReturn(false).when(mMockAccessibilityManager).isEnabled();
         assertThat(BatteryChartView.isAccessibilityEnabled(mContext)).isFalse();
     }
 
     @Test
     public void testIsAccessibilityEnabled_emptyInfo_returnFalse() {
-        doReturn(true).when(mockAccessibilityManager).isEnabled();
+        doReturn(true).when(mMockAccessibilityManager).isEnabled();
         doReturn(new ArrayList<AccessibilityServiceInfo>())
-            .when(mockAccessibilityManager)
-            .getEnabledAccessibilityServiceList(anyInt());
+                .when(mMockAccessibilityManager)
+                .getEnabledAccessibilityServiceList(anyInt());
 
         assertThat(BatteryChartView.isAccessibilityEnabled(mContext)).isFalse();
     }
 
     @Test
     public void testIsAccessibilityEnabled_validServiceId_returnTrue() {
-        doReturn(true).when(mockAccessibilityManager).isEnabled();
+        doReturn(true).when(mMockAccessibilityManager).isEnabled();
         assertThat(BatteryChartView.isAccessibilityEnabled(mContext)).isTrue();
     }
 
     @Test
     public void testSetSelectedIndex_invokesCallback() {
-        final int selectedIndex[] = new int[1];
+        final int[] selectedIndex = new int[1];
         final int expectedIndex = 2;
         mBatteryChartView.mSelectedIndex = 1;
         mBatteryChartView.setOnSelectListener(
-            trapezoidIndex -> {
-                selectedIndex[0] = trapezoidIndex;
-            });
+                trapezoidIndex -> {
+                    selectedIndex[0] = trapezoidIndex;
+                });
 
         mBatteryChartView.setSelectedIndex(expectedIndex);
 
         assertThat(mBatteryChartView.mSelectedIndex)
-            .isEqualTo(expectedIndex);
+                .isEqualTo(expectedIndex);
         assertThat(selectedIndex[0]).isEqualTo(expectedIndex);
     }
 
     @Test
     public void testSetSelectedIndex_sameIndex_notInvokesCallback() {
-        final int selectedIndex[] = new int[1];
+        final int[] selectedIndex = new int[1];
         final int expectedIndex = 1;
         mBatteryChartView.mSelectedIndex = expectedIndex;
         mBatteryChartView.setOnSelectListener(
-            trapezoidIndex -> {
-                selectedIndex[0] = trapezoidIndex;
-            });
+                trapezoidIndex -> {
+                    selectedIndex[0] = trapezoidIndex;
+                });
 
         mBatteryChartView.setSelectedIndex(expectedIndex);
 
@@ -130,7 +131,7 @@
     public void testClickable_isChartGraphSlotsEnabledIsFalse_notClickable() {
         mBatteryChartView.setClickableForce(true);
         when(mPowerUsageFeatureProvider.isChartGraphSlotsEnabled(mContext))
-            .thenReturn(false);
+                .thenReturn(false);
 
         mBatteryChartView.onAttachedToWindow();
         assertThat(mBatteryChartView.isClickable()).isFalse();
@@ -141,8 +142,8 @@
     public void testClickable_accessibilityIsDisabled_clickable() {
         mBatteryChartView.setClickableForce(true);
         when(mPowerUsageFeatureProvider.isChartGraphSlotsEnabled(mContext))
-            .thenReturn(true);
-        doReturn(false).when(mockAccessibilityManager).isEnabled();
+                .thenReturn(true);
+        doReturn(false).when(mMockAccessibilityManager).isEnabled();
 
         mBatteryChartView.onAttachedToWindow();
         assertThat(mBatteryChartView.isClickable()).isTrue();
@@ -153,11 +154,11 @@
     public void testClickable_accessibilityIsEnabledWithoutValidId_clickable() {
         mBatteryChartView.setClickableForce(true);
         when(mPowerUsageFeatureProvider.isChartGraphSlotsEnabled(mContext))
-            .thenReturn(true);
-        doReturn(true).when(mockAccessibilityManager).isEnabled();
+                .thenReturn(true);
+        doReturn(true).when(mMockAccessibilityManager).isEnabled();
         doReturn(new ArrayList<AccessibilityServiceInfo>())
-            .when(mockAccessibilityManager)
-            .getEnabledAccessibilityServiceList(anyInt());
+                .when(mMockAccessibilityManager)
+                .getEnabledAccessibilityServiceList(anyInt());
 
         mBatteryChartView.onAttachedToWindow();
         assertThat(mBatteryChartView.isClickable()).isTrue();
@@ -168,8 +169,8 @@
     public void testClickable_accessibilityIsEnabledWithValidId_notClickable() {
         mBatteryChartView.setClickableForce(true);
         when(mPowerUsageFeatureProvider.isChartGraphSlotsEnabled(mContext))
-            .thenReturn(true);
-        doReturn(true).when(mockAccessibilityManager).isEnabled();
+                .thenReturn(true);
+        doReturn(true).when(mMockAccessibilityManager).isEnabled();
 
         mBatteryChartView.onAttachedToWindow();
         assertThat(mBatteryChartView.isClickable()).isFalse();
@@ -186,13 +187,13 @@
         mBatteryChartView.setLevels(levels);
         mBatteryChartView.setClickableForce(true);
         when(mPowerUsageFeatureProvider.isChartGraphSlotsEnabled(mContext))
-            .thenReturn(true);
-        doReturn(true).when(mockAccessibilityManager).isEnabled();
+                .thenReturn(true);
+        doReturn(true).when(mMockAccessibilityManager).isEnabled();
         mBatteryChartView.onAttachedToWindow();
         // Ensures the testing environment is correct.
         assertThat(mBatteryChartView.isClickable()).isFalse();
         // Turns off accessibility service.
-        doReturn(false).when(mockAccessibilityManager).isEnabled();
+        doReturn(false).when(mMockAccessibilityManager).isEnabled();
 
         mBatteryChartView.onAttachedToWindow();
 
@@ -202,23 +203,23 @@
     @Test
     public void testOnAttachedToWindow_addAccessibilityStateChangeListener() {
         mBatteryChartView.onAttachedToWindow();
-        verify(mockAccessibilityManager)
-            .addAccessibilityStateChangeListener(mBatteryChartView);
+        verify(mMockAccessibilityManager)
+                .addAccessibilityStateChangeListener(mBatteryChartView);
     }
 
     @Test
     public void testOnDetachedFromWindow_removeAccessibilityStateChangeListener() {
         mBatteryChartView.onAttachedToWindow();
         mBatteryChartView.mHandler.postDelayed(
-            mBatteryChartView.mUpdateClickableStateRun, 1000);
+                mBatteryChartView.mUpdateClickableStateRun, 1000);
 
         mBatteryChartView.onDetachedFromWindow();
 
-        verify(mockAccessibilityManager)
-            .removeAccessibilityStateChangeListener(mBatteryChartView);
+        verify(mMockAccessibilityManager)
+                .removeAccessibilityStateChangeListener(mBatteryChartView);
         assertThat(mBatteryChartView.mHandler.hasCallbacks(
                 mBatteryChartView.mUpdateClickableStateRun))
-            .isFalse();
+                .isFalse();
     }
 
     @Test
@@ -227,8 +228,8 @@
         mBatteryChartView.onAccessibilityStateChanged(/*enabled=*/ true);
 
         verify(mBatteryChartView.mHandler)
-            .removeCallbacks(mBatteryChartView.mUpdateClickableStateRun);
+                .removeCallbacks(mBatteryChartView.mUpdateClickableStateRun);
         verify(mBatteryChartView.mHandler)
-            .postDelayed(mBatteryChartView.mUpdateClickableStateRun, 500L);
+                .postDelayed(mBatteryChartView.mUpdateClickableStateRun, 500L);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryDiffEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java
similarity index 63%
rename from tests/robotests/src/com/android/settings/fuelgauge/BatteryDiffEntryTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java
index c9201c8..a6db9ff 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryDiffEntryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,14 +13,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.any;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.anyInt;
 import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.spy;
 
 import android.content.ContentValues;
@@ -35,6 +35,7 @@
 import android.os.UserManager;
 
 import com.android.settings.R;
+import com.android.settings.fuelgauge.BatteryUtils;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -59,15 +60,24 @@
 
     private Context mContext;
 
-    @Mock private ApplicationInfo mockAppInfo;
-    @Mock private PackageManager mockPackageManager;
-    @Mock private UserManager mockUserManager;
-    @Mock private Drawable mockDrawable;
-    @Mock private Drawable mockDrawable2;
-    @Mock private Drawable mockBadgedDrawable;
-    @Mock private BatteryHistEntry mBatteryHistEntry;
-    @Mock private PackageInfo mockPackageInfo;
-    @Mock private ConstantState mockConstantState;
+    @Mock
+    private ApplicationInfo mMockAppInfo;
+    @Mock
+    private PackageManager mMockPackageManager;
+    @Mock
+    private UserManager mMockUserManager;
+    @Mock
+    private Drawable mMockDrawable;
+    @Mock
+    private Drawable mMockDrawable2;
+    @Mock
+    private Drawable mMockBadgedDrawable;
+    @Mock
+    private BatteryHistEntry mBatteryHistEntry;
+    @Mock
+    private PackageInfo mMockPackageInfo;
+    @Mock
+    private ConstantState mMockConstantState;
 
     @Before
     public void setUp() {
@@ -75,20 +85,20 @@
         ShadowUserHandle.reset();
         mContext = spy(RuntimeEnvironment.application);
         doReturn(mContext).when(mContext).getApplicationContext();
-        doReturn(mockUserManager).when(mContext).getSystemService(UserManager.class);
-        doReturn(mockPackageManager).when(mContext).getPackageManager();
+        doReturn(mMockUserManager).when(mContext).getSystemService(UserManager.class);
+        doReturn(mMockPackageManager).when(mContext).getPackageManager();
         BatteryDiffEntry.clearCache();
     }
 
     @Test
     public void testSetTotalConsumePower_returnExpectedResult() {
         final BatteryDiffEntry entry =
-            new BatteryDiffEntry(
-                mContext,
-                /*foregroundUsageTimeInMs=*/ 10001L,
-                /*backgroundUsageTimeInMs=*/ 20002L,
-                /*consumePower=*/ 22.0,
-                /*batteryHistEntry=*/ null);
+                new BatteryDiffEntry(
+                        mContext,
+                        /*foregroundUsageTimeInMs=*/ 10001L,
+                        /*backgroundUsageTimeInMs=*/ 20002L,
+                        /*consumePower=*/ 22.0,
+                        /*batteryHistEntry=*/ null);
         entry.setTotalConsumePower(100.0);
 
         assertThat(entry.getPercentOfTotal()).isEqualTo(22.0);
@@ -97,12 +107,12 @@
     @Test
     public void testSetTotalConsumePower_setZeroValue_returnsZeroValue() {
         final BatteryDiffEntry entry =
-            new BatteryDiffEntry(
-                mContext,
-                /*foregroundUsageTimeInMs=*/ 10001L,
-                /*backgroundUsageTimeInMs=*/ 20002L,
-                /*consumePower=*/ 22.0,
-                /*batteryHistEntry=*/ null);
+                new BatteryDiffEntry(
+                        mContext,
+                        /*foregroundUsageTimeInMs=*/ 10001L,
+                        /*backgroundUsageTimeInMs=*/ 20002L,
+                        /*consumePower=*/ 22.0,
+                        /*batteryHistEntry=*/ null);
         entry.setTotalConsumePower(0);
 
         assertThat(entry.getPercentOfTotal()).isEqualTo(0);
@@ -127,9 +137,9 @@
         final String expectedName = "Ambient display";
         // Generates fake testing data.
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
-        values.put("drainType",
-            Integer.valueOf(BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY));
+                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
+        values.put(BatteryHistEntry.KEY_DRAIN_TYPE,
+                Integer.valueOf(BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY));
         final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
 
         final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry);
@@ -139,7 +149,7 @@
         assertThat(BatteryDiffEntry.sResourceCache).hasSize(1);
         // Verifies the app label in the cache.
         final BatteryEntry.NameAndIcon nameAndIcon =
-            BatteryDiffEntry.sResourceCache.get(entry.getKey());
+                BatteryDiffEntry.sResourceCache.get(entry.getKey());
         assertThat(nameAndIcon.mName).isEqualTo(expectedName);
         assertThat(nameAndIcon.mIconId).isEqualTo(R.drawable.ic_settings_aod);
         // Verifies the restrictable flag in the cache.
@@ -150,11 +160,11 @@
     @Test
     public void testLoadLabelAndIcon_forUserBattery_returnExpectedResult() {
         final String expectedName = "Removed user";
-        doReturn(null).when(mockUserManager).getUserInfo(1001);
+        doReturn(null).when(mMockUserManager).getUserInfo(1001);
         // Generates fake testing data.
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_USER_BATTERY);
-        values.put("userId", Integer.valueOf(1001));
+                ConvertUtils.CONSUMER_TYPE_USER_BATTERY);
+        values.put(BatteryHistEntry.KEY_USER_ID, Integer.valueOf(1001));
         final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
 
         final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry);
@@ -165,7 +175,7 @@
         assertThat(BatteryDiffEntry.sResourceCache).hasSize(1);
         // Verifies the app label in the cache.
         final BatteryEntry.NameAndIcon nameAndIcon =
-            BatteryDiffEntry.sResourceCache.get(entry.getKey());
+                BatteryDiffEntry.sResourceCache.get(entry.getKey());
         assertThat(nameAndIcon.mName).isEqualTo(expectedName);
         assertThat(nameAndIcon.mIconId).isEqualTo(0);
         // Verifies the restrictable flag in the cache.
@@ -178,13 +188,13 @@
         final String expectedAppLabel = "fake app label";
         final String fakePackageName = "com.fake.google.com";
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
-        values.put("uid", /*invalid uid*/ 10001);
-        values.put("packageName", fakePackageName);
-        doReturn(mockAppInfo).when(mockPackageManager)
-            .getApplicationInfo(fakePackageName, 0);
-        doReturn(expectedAppLabel).when(mockPackageManager)
-            .getApplicationLabel(mockAppInfo);
+                ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+        values.put(BatteryHistEntry.KEY_UID, /*invalid uid*/ 10001);
+        values.put(BatteryHistEntry.KEY_PACKAGE_NAME, fakePackageName);
+        doReturn(mMockAppInfo).when(mMockPackageManager)
+                .getApplicationInfo(fakePackageName, 0);
+        doReturn(expectedAppLabel).when(mMockPackageManager)
+                .getApplicationLabel(mMockAppInfo);
         final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
 
         final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry);
@@ -194,7 +204,7 @@
         assertThat(BatteryDiffEntry.sResourceCache).hasSize(1);
         // Verifies the app label in the cache.
         final BatteryEntry.NameAndIcon nameAndIcon =
-            BatteryDiffEntry.sResourceCache.get(entry.getKey());
+                BatteryDiffEntry.sResourceCache.get(entry.getKey());
         assertThat(nameAndIcon.mName).isEqualTo(expectedAppLabel);
         // Verifies the restrictable flag in the cache.
         assertThat(entry.mValidForRestriction).isFalse();
@@ -205,7 +215,7 @@
     public void testGetAppLabel_loadDataFromPreDefinedNameAndUid() {
         final String expectedAppLabel = "Android OS";
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+                ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
         final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
 
         final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry);
@@ -214,7 +224,7 @@
         assertThat(BatteryDiffEntry.sResourceCache).hasSize(1);
         // Verifies the app label in the cache.
         final BatteryEntry.NameAndIcon nameAndIcon =
-            BatteryDiffEntry.sResourceCache.get(entry.getKey());
+                BatteryDiffEntry.sResourceCache.get(entry.getKey());
         assertThat(nameAndIcon.mName).isEqualTo(expectedAppLabel);
     }
 
@@ -222,8 +232,8 @@
     public void testGetAppLabel_nullAppLabel_returnAppLabelInBatteryHistEntry() {
         final String expectedAppLabel = "fake app label";
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
-        values.put("appLabel", expectedAppLabel);
+                ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+        values.put(BatteryHistEntry.KEY_APP_LABEL, expectedAppLabel);
         final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
 
         final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry);
@@ -236,15 +246,15 @@
     @Test
     public void testGetAppIcon_nonUidConsumer_returnAppIconInBatteryDiffEntry() {
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
+                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
         final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
-        mockConstantState(mockDrawable);
+        mockConstantState(mMockDrawable);
 
         final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry);
 
         entry.mIsLoaded = true;
-        entry.mAppIcon = mockDrawable;
-        assertThat(entry.getAppIcon()).isEqualTo(mockDrawable);
+        entry.mAppIcon = mMockDrawable;
+        assertThat(entry.getAppIcon()).isEqualTo(mMockDrawable);
         assertThat(BatteryDiffEntry.sResourceCache).isEmpty();
     }
 
@@ -252,38 +262,38 @@
     public void testGetAppIcon_uidConsumerForNonOwner_returnDefaultActivityIconWithBadge()
             throws Exception {
         ShadowUserHandle.setUid(10);
-        final BatteryDiffEntry entry = createBatteryDiffEntry(mockDrawable);
-        mockConstantState(mockDrawable);
-        mockConstantState(mockBadgedDrawable);
-        doReturn(mockBadgedDrawable).when(mockUserManager)
-            .getBadgedIconForUser(eq(mockDrawable), any());
+        final BatteryDiffEntry entry = createBatteryDiffEntry(mMockDrawable);
+        mockConstantState(mMockDrawable);
+        mockConstantState(mMockBadgedDrawable);
+        doReturn(mMockBadgedDrawable).when(mMockUserManager)
+                .getBadgedIconForUser(eq(mMockDrawable), any());
 
         entry.mAppIcon = null;
-        assertThat(entry.getAppIcon()).isEqualTo(mockBadgedDrawable);
+        assertThat(entry.getAppIcon()).isEqualTo(mMockBadgedDrawable);
     }
 
     @Test
     public void testGetAppIcon_uidConsumerWithNullIcon_returnDefaultActivityIcon()
             throws Exception {
-        final BatteryDiffEntry entry = createBatteryDiffEntry(mockDrawable);
-        mockConstantState(mockDrawable);
+        final BatteryDiffEntry entry = createBatteryDiffEntry(mMockDrawable);
+        mockConstantState(mMockDrawable);
 
         entry.mAppIcon = null;
-        assertThat(entry.getAppIcon()).isEqualTo(mockDrawable);
+        assertThat(entry.getAppIcon()).isEqualTo(mMockDrawable);
         assertThat(BatteryDiffEntry.sResourceCache).hasSize(1);
         // Verifies the app label in the cache.
         final BatteryEntry.NameAndIcon nameAndIcon =
-            BatteryDiffEntry.sResourceCache.get(entry.getKey());
-        assertThat(nameAndIcon.mIcon).isEqualTo(mockDrawable);
+                BatteryDiffEntry.sResourceCache.get(entry.getKey());
+        assertThat(nameAndIcon.mIcon).isEqualTo(mMockDrawable);
     }
 
     @Test
     public void testClearCache_clearDataForResourcesAndFlags() {
         BatteryDiffEntry.sResourceCache.put(
-            "fake application key",
-            new BatteryEntry.NameAndIcon("app label", null, /*iconId=*/ 0));
+                "fake application key",
+                new BatteryEntry.NameAndIcon("app label", null, /*iconId=*/ 0));
         BatteryDiffEntry.sValidForRestriction.put(
-            "fake application key", Boolean.valueOf(false));
+                "fake application key", Boolean.valueOf(false));
 
         BatteryDiffEntry.clearCache();
 
@@ -295,83 +305,83 @@
     public void testClearCache_switchLocale_clearCacheIconAndLabel() throws Exception {
         final int userId = UserHandle.getUserId(1001);
         Locale.setDefault(new Locale("en_US"));
-        final BatteryDiffEntry entry1 = createBatteryDiffEntry(mockDrawable);
-        mockConstantState(mockDrawable);
-        assertThat(entry1.getAppIcon()).isEqualTo(mockDrawable);
+        final BatteryDiffEntry entry1 = createBatteryDiffEntry(mMockDrawable);
+        mockConstantState(mMockDrawable);
+        assertThat(entry1.getAppIcon()).isEqualTo(mMockDrawable);
         // Switch the locale into another one.
         Locale.setDefault(new Locale("zh_TW"));
 
-        final BatteryDiffEntry entry2 = createBatteryDiffEntry(mockDrawable2);
+        final BatteryDiffEntry entry2 = createBatteryDiffEntry(mMockDrawable2);
 
         // We should get new drawable without caching.
-        mockConstantState(mockDrawable2);
-        assertThat(entry2.getAppIcon()).isEqualTo(mockDrawable2);
+        mockConstantState(mMockDrawable2);
+        assertThat(entry2.getAppIcon()).isEqualTo(mMockDrawable2);
         // Verifies the cache is updated into the new drawable.
         final BatteryEntry.NameAndIcon nameAndIcon =
-            BatteryDiffEntry.sResourceCache.get(entry2.getKey());
-        assertThat(nameAndIcon.mIcon).isEqualTo(mockDrawable2);
+                BatteryDiffEntry.sResourceCache.get(entry2.getKey());
+        assertThat(nameAndIcon.mIcon).isEqualTo(mMockDrawable2);
     }
 
     @Test
     public void testIsSystemEntry_userBattery_returnTrue() {
         final BatteryDiffEntry entry =
-            createBatteryDiffEntry(
-                ConvertUtils.CONSUMER_TYPE_USER_BATTERY,
-                /*uid=*/ 0, /*isHidden=*/ false);
+                createBatteryDiffEntry(
+                        ConvertUtils.CONSUMER_TYPE_USER_BATTERY,
+                        /*uid=*/ 0, /*isHidden=*/ false);
         assertThat(entry.isSystemEntry()).isTrue();
     }
 
     @Test
     public void testIsSystemEntry_systemBattery_returnTrue() {
         final BatteryDiffEntry entry =
-            createBatteryDiffEntry(
-                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY,
-                /*uid=*/ 0, /*isHidden=*/ false);
+                createBatteryDiffEntry(
+                        ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY,
+                        /*uid=*/ 0, /*isHidden=*/ false);
         assertThat(entry.isSystemEntry()).isTrue();
     }
 
     @Test
     public void testIsSystemEntry_uidBattery_returnFalse() {
         final BatteryDiffEntry entry =
-            createBatteryDiffEntry(
-                ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
-                /*uid=*/ 123, /*isHidden=*/ false);
+                createBatteryDiffEntry(
+                        ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+                        /*uid=*/ 123, /*isHidden=*/ false);
         assertThat(entry.isSystemEntry()).isFalse();
     }
 
     @Test
     public void testIsSystemEntry_uidBatteryWithHiddenState_returnTrue() {
         final BatteryDiffEntry entry =
-            createBatteryDiffEntry(
-                ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
-                /*uid=*/ 123, /*isHidden=*/ true);
+                createBatteryDiffEntry(
+                        ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+                        /*uid=*/ 123, /*isHidden=*/ true);
         assertThat(entry.isSystemEntry()).isTrue();
     }
 
     @Test
     public void testIsSystemEntry_uidBatteryWithSystemProcess_returnFalse() {
         final BatteryDiffEntry entry =
-            createBatteryDiffEntry(
-                ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
-                /*uid=*/ 1230, /*isHidden=*/ false);
+                createBatteryDiffEntry(
+                        ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+                        /*uid=*/ 1230, /*isHidden=*/ false);
         assertThat(entry.isSystemEntry()).isFalse();
     }
 
     @Test
     public void testIsSystemEntry_uidBatteryWithTetheringProcess_returnTrue() {
         final BatteryDiffEntry entry =
-            createBatteryDiffEntry(
-                ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
-                /*uid=*/ BatteryUtils.UID_TETHERING, /*isHidden=*/ false);
+                createBatteryDiffEntry(
+                        ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+                        /*uid=*/ BatteryUtils.UID_TETHERING, /*isHidden=*/ false);
         assertThat(entry.isSystemEntry()).isTrue();
     }
 
     @Test
     public void testIsSystemEntry_uidBatteryWithRemovedAppsProcess_returnTrue() {
         final BatteryDiffEntry entry =
-            createBatteryDiffEntry(
-                ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
-                /*uid=*/ BatteryUtils.UID_REMOVED_APPS, /*isHidden=*/ false);
+                createBatteryDiffEntry(
+                        ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+                        /*uid=*/ BatteryUtils.UID_REMOVED_APPS, /*isHidden=*/ false);
         assertThat(entry.isSystemEntry()).isTrue();
     }
 
@@ -380,30 +390,30 @@
         final String expectedAppLabel = "fake app label";
         final String fakePackageName = "com.fake.google.com";
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
-        values.put("uid", /*invalid uid*/ 10001);
-        values.put("packageName", fakePackageName);
+                ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+        values.put(BatteryHistEntry.KEY_UID, /*invalid uid*/ 10001);
+        values.put(BatteryHistEntry.KEY_PACKAGE_NAME, fakePackageName);
         final BatteryDiffEntry entry =
-            createBatteryDiffEntry(10, new BatteryHistEntry(values));
+                createBatteryDiffEntry(10, new BatteryHistEntry(values));
 
         entry.updateRestrictionFlagState();
         // Sets false if the app entry cannot be found.
         assertThat(entry.mValidForRestriction).isFalse();
 
-        doReturn(BatteryUtils.UID_NULL).when(mockPackageManager).getPackageUid(
-            entry.getPackageName(), PackageManager.GET_META_DATA);
+        doReturn(BatteryUtils.UID_NULL).when(mMockPackageManager).getPackageUid(
+                entry.getPackageName(), PackageManager.GET_META_DATA);
         entry.updateRestrictionFlagState();
         // Sets false if the app is invalid package name.
         assertThat(entry.mValidForRestriction).isFalse();
 
-        doReturn(1000).when(mockPackageManager).getPackageUid(
-            entry.getPackageName(), PackageManager.GET_META_DATA);
+        doReturn(1000).when(mMockPackageManager).getPackageUid(
+                entry.getPackageName(), PackageManager.GET_META_DATA);
         entry.updateRestrictionFlagState();
         // Sets false if the app PackageInfo cannot be found.
         assertThat(entry.mValidForRestriction).isFalse();
 
-        doReturn(mockPackageInfo).when(mockPackageManager).getPackageInfo(
-            eq(entry.getPackageName()), anyInt());
+        doReturn(mMockPackageInfo).when(mMockPackageManager).getPackageInfo(
+                eq(entry.getPackageName()), anyInt());
         entry.updateRestrictionFlagState();
         // Sets true if package is valid and PackageInfo can be found.
         assertThat(entry.mValidForRestriction).isTrue();
@@ -413,10 +423,10 @@
     public void testGetPackageName_returnExpectedResult() {
         final String expectedPackageName = "com.fake.google.com";
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
-        values.put("packageName", expectedPackageName);
+                ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+        values.put(BatteryHistEntry.KEY_PACKAGE_NAME, expectedPackageName);
         final BatteryDiffEntry entry =
-            createBatteryDiffEntry(10, new BatteryHistEntry(values));
+                createBatteryDiffEntry(10, new BatteryHistEntry(values));
 
         assertThat(entry.getPackageName()).isEqualTo(expectedPackageName);
     }
@@ -425,63 +435,76 @@
     public void testGetPackageName_withProcessName_returnExpectedResult() {
         final String expectedPackageName = "com.fake.google.com";
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+                ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
         values.put(
-            "packageName",
-            expectedPackageName + ":privileged_process0");
+                BatteryHistEntry.KEY_PACKAGE_NAME,
+                expectedPackageName + ":privileged_process0");
         final BatteryDiffEntry entry =
-            createBatteryDiffEntry(10, new BatteryHistEntry(values));
+                createBatteryDiffEntry(10, new BatteryHistEntry(values));
 
         assertThat(entry.getPackageName()).isEqualTo(expectedPackageName);
     }
 
+    @Test
+    public void getAppLabel_withOtherUsersUid_returnExpectedLabel() {
+        final ContentValues values = getContentValuesWithType(
+                ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+        values.put(BatteryHistEntry.KEY_UID, BatteryUtils.UID_OTHER_USERS);
+
+        final BatteryDiffEntry batteryDiffEntry = createBatteryDiffEntry(
+                /*consumePower=*/ 0, new BatteryHistEntry(values));
+
+        assertThat(batteryDiffEntry.getAppLabel())
+                .isEqualTo(mContext.getString(R.string.battery_usage_other_users));
+    }
+
     private BatteryDiffEntry createBatteryDiffEntry(
             int consumerType, long uid, boolean isHidden) {
         final ContentValues values = getContentValuesWithType(consumerType);
-        values.put("isHidden", isHidden);
-        values.put("uid", uid);
+        values.put(BatteryHistEntry.KEY_IS_HIDDEN, isHidden);
+        values.put(BatteryHistEntry.KEY_UID, uid);
         return new BatteryDiffEntry(
-            mContext,
-            /*foregroundUsageTimeInMs=*/ 0,
-            /*backgroundUsageTimeInMs=*/ 0,
-            /*consumePower=*/ 0,
-            new BatteryHistEntry(values));
+                mContext,
+                /*foregroundUsageTimeInMs=*/ 0,
+                /*backgroundUsageTimeInMs=*/ 0,
+                /*consumePower=*/ 0,
+                new BatteryHistEntry(values));
     }
 
     private BatteryDiffEntry createBatteryDiffEntry(
-        double consumePower, BatteryHistEntry batteryHistEntry) {
+            double consumePower, BatteryHistEntry batteryHistEntry) {
         final BatteryDiffEntry entry = new BatteryDiffEntry(
-            mContext,
-            /*foregroundUsageTimeInMs=*/ 0,
-            /*backgroundUsageTimeInMs=*/ 0,
-            consumePower,
-            batteryHistEntry);
+                mContext,
+                /*foregroundUsageTimeInMs=*/ 0,
+                /*backgroundUsageTimeInMs=*/ 0,
+                consumePower,
+                batteryHistEntry);
         entry.setTotalConsumePower(100.0);
         return entry;
     }
 
     private static ContentValues getContentValuesWithType(int consumerType) {
         final ContentValues values = new ContentValues();
-        values.put("consumerType", Integer.valueOf(consumerType));
+        values.put(BatteryHistEntry.KEY_CONSUMER_TYPE, Integer.valueOf(consumerType));
         return values;
     }
 
     private BatteryDiffEntry createBatteryDiffEntry(Drawable drawable) throws Exception {
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
-        values.put("uid", 1001);
-        values.put("packageName", "com.a.b.c");
+                ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+        values.put(BatteryHistEntry.KEY_UID, 1001);
+        values.put(BatteryHistEntry.KEY_PACKAGE_NAME, "com.a.b.c");
         final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
-        doReturn(drawable).when(mockPackageManager).getDefaultActivityIcon();
-        doReturn(null).when(mockPackageManager).getApplicationInfo("com.a.b.c", 0);
-        doReturn(new String[] {"com.a.b.c"}).when(mockPackageManager)
-            .getPackagesForUid(1001);
+        doReturn(drawable).when(mMockPackageManager).getDefaultActivityIcon();
+        doReturn(null).when(mMockPackageManager).getApplicationInfo("com.a.b.c", 0);
+        doReturn(new String[]{"com.a.b.c"}).when(mMockPackageManager)
+                .getPackagesForUid(1001);
         return createBatteryDiffEntry(10, batteryHistEntry);
     }
 
     private void mockConstantState(Drawable drawable) {
-        doReturn(mockConstantState).when(drawable).getConstantState();
-        doReturn(drawable).when(mockConstantState).newDrawable();
+        doReturn(mMockConstantState).when(drawable).getConstantState();
+        doReturn(drawable).when(mMockConstantState).newDrawable();
     }
 
     @Implements(UserHandle.class)
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryEntryTest.java
similarity index 88%
rename from tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryEntryTest.java
index 707a658..5ca3aca 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryEntryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryEntryTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -37,7 +37,8 @@
 import android.os.UserManager;
 
 import com.android.settings.R;
-import com.android.settings.fuelgauge.BatteryEntry.NameAndIcon;
+import com.android.settings.fuelgauge.BatteryUtils;
+import com.android.settings.fuelgauge.batteryusage.BatteryEntry.NameAndIcon;
 
 import org.junit.Before;
 import org.junit.Rule;
@@ -62,31 +63,36 @@
     private static final String HIGH_DRAIN_PACKAGE = "com.android.test.screen";
     private static final String ANDROID_PACKAGE = "android";
 
-    @Rule public MockitoRule mocks = MockitoJUnit.rule();
+    @Rule
+    public MockitoRule mocks = MockitoJUnit.rule();
 
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private Context mMockContext;
     private Context mContext;
-    @Mock private Handler mockHandler;
-    @Mock private PackageManager mockPackageManager;
-    @Mock private UserManager mockUserManager;
-    @Mock private UidBatteryConsumer mUidBatteryConsumer;
+    @Mock
+    private Handler mMockHandler;
+    @Mock
+    private PackageManager mMockPackageManager;
+    @Mock
+    private UserManager mMockUserManager;
+    @Mock
+    private UidBatteryConsumer mUidBatteryConsumer;
 
     @Before
     public void stubContextToReturnMockPackageManager() {
         mContext = spy(RuntimeEnvironment.application);
-        when(mMockContext.getPackageManager()).thenReturn(mockPackageManager);
+        when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager);
     }
 
     @Before
     public void stubPackageManagerToReturnAppPackageAndName() throws NameNotFoundException {
-        when(mockPackageManager.getApplicationInfo(anyString(), eq(0) /* no flags */))
+        when(mMockPackageManager.getApplicationInfo(anyString(), eq(0) /* no flags */))
                 .thenAnswer(invocation -> {
                     ApplicationInfo info = new ApplicationInfo();
                     info.packageName = invocation.getArgument(0);
                     return info;
                 });
-        when(mockPackageManager.getApplicationLabel(any(ApplicationInfo.class)))
+        when(mMockPackageManager.getApplicationLabel(any(ApplicationInfo.class)))
                 .thenAnswer(invocation -> LABEL_PREFIX
                         + ((ApplicationInfo) invocation.getArgument(0)).packageName);
     }
@@ -96,7 +102,7 @@
         UidBatteryConsumer consumer = mock(UidBatteryConsumer.class);
         when(consumer.getUid()).thenReturn(APP_UID);
         when(consumer.getPackageWithHighestDrain()).thenReturn(highDrainPackage);
-        return new BatteryEntry(mMockContext, mockHandler, mockUserManager,
+        return new BatteryEntry(mMockContext, mMockHandler, mMockUserManager,
                 consumer, false, APP_UID, packages, packageName);
     }
 
@@ -111,7 +117,7 @@
     private BatteryEntry createUserBatteryConsumer(int userId) {
         UserBatteryConsumer consumer = mock(UserBatteryConsumer.class);
         when(consumer.getUserId()).thenReturn(userId);
-        return new BatteryEntry(mMockContext, mockHandler, mockUserManager,
+        return new BatteryEntry(mMockContext, mMockHandler, mMockUserManager,
                 consumer, false, 0, null, null);
     }
 
@@ -127,7 +133,7 @@
     @Test
     public void batteryEntryForApp_shouldSetLabelAsPackageName_whenPackageCannotBeFound()
             throws Exception {
-        when(mockPackageManager.getApplicationInfo(APP_DEFAULT_PACKAGE_NAME, 0 /* no flags */))
+        when(mMockPackageManager.getApplicationInfo(APP_DEFAULT_PACKAGE_NAME, 0 /* no flags */))
                 .thenThrow(new NameNotFoundException());
 
         BatteryEntry entry = createBatteryEntryForApp(null, APP_DEFAULT_PACKAGE_NAME, null);
@@ -137,7 +143,7 @@
 
     @Test
     public void batteryEntryForApp_shouldSetHighestDrainPackage_whenPackagesCannotBeFoundForUid() {
-        when(mockPackageManager.getPackagesForUid(APP_UID)).thenReturn(null);
+        when(mMockPackageManager.getPackagesForUid(APP_UID)).thenReturn(null);
 
         BatteryEntry entry = createBatteryEntryForApp(null, null, HIGH_DRAIN_PACKAGE);
 
@@ -147,7 +153,7 @@
     @Test
     public void batteryEntryForApp_shouldSetHighestDrainPackage_whenMultiplePackagesFoundForUid() {
         BatteryEntry entry = createBatteryEntryForApp(
-                new String[] {APP_DEFAULT_PACKAGE_NAME, "package2", "package3"}, null,
+                new String[]{APP_DEFAULT_PACKAGE_NAME, "package2", "package3"}, null,
                 HIGH_DRAIN_PACKAGE);
 
         assertThat(entry.getLabel()).isEqualTo(LABEL_PREFIX + HIGH_DRAIN_PACKAGE);
@@ -176,8 +182,8 @@
         when(mUidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND))
                 .thenReturn(100L);
 
-        final BatteryEntry entry = new BatteryEntry(RuntimeEnvironment.application, mockHandler,
-                mockUserManager, mUidBatteryConsumer, false, 0, null, null);
+        final BatteryEntry entry = new BatteryEntry(RuntimeEnvironment.application, mMockHandler,
+                mMockUserManager, mUidBatteryConsumer, false, 0, null, null);
 
         assertThat(entry.getTimeInForegroundMs()).isEqualTo(100L);
     }
@@ -195,8 +201,8 @@
         when(mUidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND))
                 .thenReturn(100L);
 
-        final BatteryEntry entry = new BatteryEntry(RuntimeEnvironment.application, mockHandler,
-                mockUserManager, mUidBatteryConsumer, false, 0, null, null);
+        final BatteryEntry entry = new BatteryEntry(RuntimeEnvironment.application, mMockHandler,
+                mMockUserManager, mUidBatteryConsumer, false, 0, null, null);
 
         assertThat(entry.getTimeInBackgroundMs()).isEqualTo(100L);
     }
@@ -247,7 +253,7 @@
 
     @Test
     public void getKey_UserBatteryConsumer_returnUserId() {
-        doReturn(mockUserManager).when(mMockContext).getSystemService(UserManager.class);
+        doReturn(mMockUserManager).when(mMockContext).getSystemService(UserManager.class);
         final BatteryEntry entry = createUserBatteryConsumer(2);
         final String key = entry.getKey();
         assertThat(key).isEqualTo("U|2");
@@ -256,8 +262,8 @@
     @Test
     public void getNameAndIconFromUserId_nullUserInfo_returnDefaultNameAndIcon() {
         final int userId = 1001;
-        doReturn(mockUserManager).when(mContext).getSystemService(UserManager.class);
-        doReturn(null).when(mockUserManager).getUserInfo(userId);
+        doReturn(mMockUserManager).when(mContext).getSystemService(UserManager.class);
+        doReturn(null).when(mMockUserManager).getUserInfo(userId);
 
         final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromUserId(
                 mContext, userId);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntryTest.java
similarity index 65%
rename from tests/robotests/src/com/android/settings/fuelgauge/BatteryHistEntryTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntryTest.java
index 3acb8f3..553c089 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistEntryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistEntryTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -38,7 +38,7 @@
 public final class BatteryHistEntryTest {
 
     @Mock
-    private BatteryEntry mockBatteryEntry;
+    private BatteryEntry mMockBatteryEntry;
     @Mock
     private BatteryUsageStats mBatteryUsageStats;
 
@@ -50,33 +50,33 @@
     @Test
     public void testConstructor_contentValues_returnsExpectedResult() {
         final int expectedType = 3;
-        when(mockBatteryEntry.getUid()).thenReturn(1001);
-        when(mockBatteryEntry.getLabel()).thenReturn("Settings");
-        when(mockBatteryEntry.getDefaultPackageName())
-            .thenReturn("com.google.android.settings.battery");
-        when(mockBatteryEntry.isHidden()).thenReturn(true);
+        when(mMockBatteryEntry.getUid()).thenReturn(1001);
+        when(mMockBatteryEntry.getLabel()).thenReturn("Settings");
+        when(mMockBatteryEntry.getDefaultPackageName())
+                .thenReturn("com.google.android.settings.battery");
+        when(mMockBatteryEntry.isHidden()).thenReturn(true);
         when(mBatteryUsageStats.getConsumedPower()).thenReturn(5.1);
-        when(mockBatteryEntry.getConsumedPower()).thenReturn(1.1);
-        mockBatteryEntry.mPercent = 0.3;
-        when(mockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
-        when(mockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
-        when(mockBatteryEntry.getPowerComponentId()).thenReturn(expectedType);
-        when(mockBatteryEntry.getConsumerType())
-            .thenReturn(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
+        when(mMockBatteryEntry.getConsumedPower()).thenReturn(1.1);
+        mMockBatteryEntry.mPercent = 0.3;
+        when(mMockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
+        when(mMockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
+        when(mMockBatteryEntry.getPowerComponentId()).thenReturn(expectedType);
+        when(mMockBatteryEntry.getConsumerType())
+                .thenReturn(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
         final ContentValues values =
-            ConvertUtils.convert(
-                mockBatteryEntry,
-                mBatteryUsageStats,
-                /*batteryLevel=*/ 12,
-                /*batteryStatus=*/ BatteryManager.BATTERY_STATUS_FULL,
-                /*batteryHealth=*/ BatteryManager.BATTERY_HEALTH_COLD,
-                /*bootTimestamp=*/ 101L,
-                /*timestamp=*/ 10001L);
+                ConvertUtils.convert(
+                        mMockBatteryEntry,
+                        mBatteryUsageStats,
+                        /*batteryLevel=*/ 12,
+                        /*batteryStatus=*/ BatteryManager.BATTERY_STATUS_FULL,
+                        /*batteryHealth=*/ BatteryManager.BATTERY_HEALTH_COLD,
+                        /*bootTimestamp=*/ 101L,
+                        /*timestamp=*/ 10001L);
 
         assertBatteryHistEntry(
-            new BatteryHistEntry(values),
-            /*drainType=*/ expectedType,
-            /*percentOfTotal=*/ mockBatteryEntry.mPercent);
+                new BatteryHistEntry(values),
+                /*drainType=*/ expectedType,
+                /*percentOfTotal=*/ mMockBatteryEntry.mPercent);
     }
 
     @Test
@@ -88,22 +88,22 @@
     @Test
     public void testConstructor_cursor_returnsExpectedResult() {
         assertBatteryHistEntry(
-            createBatteryHistEntry(
-                /*bootTimestamp=*/ 101L,
-                /*timestamp=*/ 10001L,
-                /*totalPower=*/ 5.1,
-                /*consumePower=*/ 1.1,
-                /*foregroundUsageTimeInMs=*/ 1234L,
-                /*backgroundUsageTimeInMs=*/ 5689L,
-                /*batteryLevel=*/ 12),
-            /*drainType=*/ 3,
-            /*percentOfTotal=*/ 0.3);
+                createBatteryHistEntry(
+                        /*bootTimestamp=*/ 101L,
+                        /*timestamp=*/ 10001L,
+                        /*totalPower=*/ 5.1,
+                        /*consumePower=*/ 1.1,
+                        /*foregroundUsageTimeInMs=*/ 1234L,
+                        /*backgroundUsageTimeInMs=*/ 5689L,
+                        /*batteryLevel=*/ 12),
+                /*drainType=*/ 3,
+                /*percentOfTotal=*/ 0.3);
     }
 
     @Test
     public void testGetKey_consumerUidType_returnExpectedString() {
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
+                ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
         values.put(BatteryHistEntry.KEY_UID, 3);
         final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
 
@@ -113,7 +113,7 @@
     @Test
     public void testGetKey_consumerUserType_returnExpectedString() {
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_USER_BATTERY);
+                ConvertUtils.CONSUMER_TYPE_USER_BATTERY);
         values.put(BatteryHistEntry.KEY_USER_ID, 2);
         final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
 
@@ -123,7 +123,7 @@
     @Test
     public void testGetKey_consumerSystemType_returnExpectedString() {
         final ContentValues values = getContentValuesWithType(
-            ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
+                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
         values.put(BatteryHistEntry.KEY_DRAIN_TYPE, 1);
         final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
 
@@ -133,31 +133,31 @@
     @Test
     public void testIsAppEntry_returnExpectedResult() {
         assertThat(createEntry(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY).isAppEntry())
-            .isFalse();
+                .isFalse();
         assertThat(createEntry(ConvertUtils.CONSUMER_TYPE_USER_BATTERY).isAppEntry())
-            .isFalse();
+                .isFalse();
         assertThat(createEntry(ConvertUtils.CONSUMER_TYPE_UID_BATTERY).isAppEntry())
-            .isTrue();
+                .isTrue();
     }
 
     @Test
     public void testIsUserEntry_returnExpectedResult() {
         assertThat(createEntry(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY).isUserEntry())
-            .isFalse();
+                .isFalse();
         assertThat(createEntry(ConvertUtils.CONSUMER_TYPE_USER_BATTERY).isUserEntry())
-            .isTrue();
+                .isTrue();
         assertThat(createEntry(ConvertUtils.CONSUMER_TYPE_UID_BATTERY).isUserEntry())
-            .isFalse();
+                .isFalse();
     }
 
     @Test
     public void testIsSystemEntry_returnExpectedResult() {
         assertThat(createEntry(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY).isSystemEntry())
-            .isTrue();
+                .isTrue();
         assertThat(createEntry(ConvertUtils.CONSUMER_TYPE_USER_BATTERY).isSystemEntry())
-            .isFalse();
+                .isFalse();
         assertThat(createEntry(ConvertUtils.CONSUMER_TYPE_UID_BATTERY).isSystemEntry())
-            .isFalse();
+                .isFalse();
     }
 
     @Test
@@ -167,39 +167,39 @@
         final long lowerTimestamp = 100L;
         final double ratio = 0.5;
         final BatteryHistEntry lowerHistEntry = createBatteryHistEntry(
-            /*bootTimestamp=*/ 1000L,
-            lowerTimestamp,
-            /*totalPower=*/ 50,
-            /*consumePower=*/ 10,
-            /*foregroundUsageTimeInMs=*/ 100,
-            /*backgroundUsageTimeInMs=*/ 200,
-            /*batteryLevel=*/ 90);
+                /*bootTimestamp=*/ 1000L,
+                lowerTimestamp,
+                /*totalPower=*/ 50,
+                /*consumePower=*/ 10,
+                /*foregroundUsageTimeInMs=*/ 100,
+                /*backgroundUsageTimeInMs=*/ 200,
+                /*batteryLevel=*/ 90);
         final BatteryHistEntry upperHistEntry = createBatteryHistEntry(
-            /*bootTimestamp=*/ 1200L,
-            upperTimestamp,
-            /*totalPower=*/ 80,
-            /*consumePower=*/ 20,
-            /*foregroundUsageTimeInMs=*/ 200,
-            /*backgroundUsageTimeInMs=*/ 300,
-            /*batteryLevel=*/ 80);
+                /*bootTimestamp=*/ 1200L,
+                upperTimestamp,
+                /*totalPower=*/ 80,
+                /*consumePower=*/ 20,
+                /*foregroundUsageTimeInMs=*/ 200,
+                /*backgroundUsageTimeInMs=*/ 300,
+                /*batteryLevel=*/ 80);
 
         final BatteryHistEntry newEntry =
-            BatteryHistEntry.interpolate(
-                slotTimestamp,
-                upperTimestamp,
-                ratio,
-                lowerHistEntry,
-                upperHistEntry);
+                BatteryHistEntry.interpolate(
+                        slotTimestamp,
+                        upperTimestamp,
+                        ratio,
+                        lowerHistEntry,
+                        upperHistEntry);
 
         assertBatteryHistEntry(
-            newEntry, 3, upperHistEntry.mPercentOfTotal,
-            /*bootTimestamp=*/ 1200 - 100,
-            /*timestamp=*/ slotTimestamp,
-            /*totalPower=*/ 50 + 0.5 * (80 - 50),
-            /*consumePower=*/ 10 + 0.5 * (20 - 10),
-            /*foregroundUsageTimeInMs=*/ Math.round(100 + 0.5 * (200 - 100)),
-            /*backgroundUsageTimeInMs=*/ Math.round(200 + 0.5 * (300 - 200)),
-            /*batteryLevel=*/ (int) Math.round(90 + 0.5 * (80 - 90)));
+                newEntry, 3, upperHistEntry.mPercentOfTotal,
+                /*bootTimestamp=*/ 1200 - 100,
+                /*timestamp=*/ slotTimestamp,
+                /*totalPower=*/ 50 + 0.5 * (80 - 50),
+                /*consumePower=*/ 10 + 0.5 * (20 - 10),
+                /*foregroundUsageTimeInMs=*/ Math.round(100 + 0.5 * (200 - 100)),
+                /*backgroundUsageTimeInMs=*/ Math.round(200 + 0.5 * (300 - 200)),
+                /*batteryLevel=*/ (int) Math.round(90 + 0.5 * (80 - 90)));
     }
 
     @Test
@@ -209,31 +209,31 @@
         final long lowerTimestamp = 100L;
         final double ratio = 0.5;
         final BatteryHistEntry upperHistEntry = createBatteryHistEntry(
-            /*bootTimestamp=*/ 1200L,
-            upperTimestamp,
-            /*totalPower=*/ 80,
-            /*consumePower=*/ 20,
-            /*foregroundUsageTimeInMs=*/ 200,
-            /*backgroundUsageTimeInMs=*/ 300,
-            /*batteryLevel=*/ 80);
+                /*bootTimestamp=*/ 1200L,
+                upperTimestamp,
+                /*totalPower=*/ 80,
+                /*consumePower=*/ 20,
+                /*foregroundUsageTimeInMs=*/ 200,
+                /*backgroundUsageTimeInMs=*/ 300,
+                /*batteryLevel=*/ 80);
 
         final BatteryHistEntry newEntry =
-            BatteryHistEntry.interpolate(
-                slotTimestamp,
-                upperTimestamp,
-                ratio,
-                /*lowerHistEntry=*/ null,
-                upperHistEntry);
+                BatteryHistEntry.interpolate(
+                        slotTimestamp,
+                        upperTimestamp,
+                        ratio,
+                        /*lowerHistEntry=*/ null,
+                        upperHistEntry);
 
         assertBatteryHistEntry(
-            newEntry, 3, upperHistEntry.mPercentOfTotal,
-            /*bootTimestamp=*/ 1200 - 100,
-            /*timestamp=*/ slotTimestamp,
-            /*totalPower=*/ 0.5 * 80,
-            /*consumePower=*/ 0.5 * 20,
-            /*foregroundUsageTimeInMs=*/ Math.round(0.5 * 200),
-            /*backgroundUsageTimeInMs=*/ Math.round(0.5 * 300),
-            /*batteryLevel=*/ upperHistEntry.mBatteryLevel);
+                newEntry, 3, upperHistEntry.mPercentOfTotal,
+                /*bootTimestamp=*/ 1200 - 100,
+                /*timestamp=*/ slotTimestamp,
+                /*totalPower=*/ 0.5 * 80,
+                /*consumePower=*/ 0.5 * 20,
+                /*foregroundUsageTimeInMs=*/ Math.round(0.5 * 200),
+                /*backgroundUsageTimeInMs=*/ Math.round(0.5 * 300),
+                /*batteryLevel=*/ upperHistEntry.mBatteryLevel);
     }
 
     private static BatteryHistEntry createEntry(int consumerType) {
@@ -243,21 +243,21 @@
     private static ContentValues getContentValuesWithType(int consumerType) {
         final ContentValues values = new ContentValues();
         values.put(BatteryHistEntry.KEY_CONSUMER_TYPE,
-            Integer.valueOf(consumerType));
+                Integer.valueOf(consumerType));
         return values;
     }
 
     private void assertBatteryHistEntry(
             BatteryHistEntry entry, int drainType, double percentOfTotal) {
         assertBatteryHistEntry(
-            entry, drainType, percentOfTotal,
-            /*bootTimestamp=*/ 101L,
-            /*timestamp=*/ 10001L,
-            /*totalPower=*/ 5.1,
-            /*consumePower=*/ 1.1,
-            /*foregroundUsageTimeInMs=*/ 1234L,
-            /*backgroundUsageTimeInMs=*/ 5689L,
-            /*batteryLevel=*/ 12);
+                entry, drainType, percentOfTotal,
+                /*bootTimestamp=*/ 101L,
+                /*timestamp=*/ 10001L,
+                /*totalPower=*/ 5.1,
+                /*consumePower=*/ 1.1,
+                /*foregroundUsageTimeInMs=*/ 1234L,
+                /*backgroundUsageTimeInMs=*/ 5689L,
+                /*batteryLevel=*/ 12);
     }
 
     private void assertBatteryHistEntry(
@@ -276,7 +276,7 @@
         assertThat(entry.mUserId).isEqualTo(UserHandle.getUserId(1001));
         assertThat(entry.mAppLabel).isEqualTo("Settings");
         assertThat(entry.mPackageName)
-            .isEqualTo("com.google.android.settings.battery");
+                .isEqualTo("com.google.android.settings.battery");
         assertThat(entry.mIsHidden).isTrue();
         assertThat(entry.mBootTimestamp).isEqualTo(bootTimestamp);
         assertThat(entry.mTimestamp).isEqualTo(timestamp);
@@ -288,12 +288,12 @@
         assertThat(entry.mBackgroundUsageTimeInMs).isEqualTo(backgroundUsageTimeInMs);
         assertThat(entry.mDrainType).isEqualTo(drainType);
         assertThat(entry.mConsumerType)
-            .isEqualTo(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
+                .isEqualTo(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
         assertThat(entry.mBatteryLevel).isEqualTo(batteryLevel);
         assertThat(entry.mBatteryStatus)
-            .isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
+                .isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
         assertThat(entry.mBatteryHealth)
-            .isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
+                .isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
     }
 
     private BatteryHistEntry createBatteryHistEntry(
@@ -305,7 +305,7 @@
             long backgroundUsageTimeInMs,
             int batteryLevel) {
         final MatrixCursor cursor = new MatrixCursor(
-            new String[] {
+            new String[]{
                 BatteryHistEntry.KEY_UID,
                 BatteryHistEntry.KEY_USER_ID,
                 BatteryHistEntry.KEY_APP_LABEL,
@@ -325,7 +325,7 @@
                 BatteryHistEntry.KEY_BATTERY_STATUS,
                 BatteryHistEntry.KEY_BATTERY_HEALTH});
         cursor.addRow(
-            new Object[] {
+            new Object[]{
                 Long.valueOf(1001),
                 Long.valueOf(UserHandle.getUserId(1001)),
                 "Settings",
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistoryLoaderTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryLoaderTest.java
similarity index 94%
rename from tests/robotests/src/com/android/settings/fuelgauge/BatteryHistoryLoaderTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryLoaderTest.java
index a0fd5fd..98a44de 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistoryLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryLoaderTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,18 +13,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
+
 import static org.mockito.Mockito.doReturn;
 
 import android.content.Context;
 
 import com.android.settings.testutils.FakeFeatureFactory;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -32,6 +30,9 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
+import java.util.HashMap;
+import java.util.Map;
+
 @RunWith(RobolectricTestRunner.class)
 public final class BatteryHistoryLoaderTest {
 
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistoryPreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreferenceTest.java
similarity index 95%
rename from tests/robotests/src/com/android/settings/fuelgauge/BatteryHistoryPreferenceTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreferenceTest.java
index 83fcbae..7017c43 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistoryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryHistoryPreferenceTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -31,6 +31,7 @@
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settings.R;
+import com.android.settings.fuelgauge.BatteryInfo;
 import com.android.settings.widget.UsageView;
 
 import org.junit.Before;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUsageStatsLoaderTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoaderTest.java
similarity index 96%
rename from tests/robotests/src/com/android/settings/fuelgauge/BatteryUsageStatsLoaderTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoaderTest.java
index 8c47ff6..1d0bca4 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUsageStatsLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageStatsLoaderTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
 
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java
similarity index 61%
rename from tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java
index 42483d0..c1f9815 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -27,6 +27,8 @@
 import android.os.LocaleList;
 import android.os.UserHandle;
 
+import com.android.settings.fuelgauge.BatteryUtils;
+import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
 import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.Before;
@@ -37,8 +39,8 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
-import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -54,7 +56,7 @@
     @Mock
     private BatteryUsageStats mBatteryUsageStats;
     @Mock
-    private BatteryEntry mockBatteryEntry;
+    private BatteryEntry mMockBatteryEntry;
 
     private FakeFeatureFactory mFeatureFactory;
     private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
@@ -70,115 +72,116 @@
     @Test
     public void convert_returnsExpectedContentValues() {
         final int expectedType = 3;
-        when(mockBatteryEntry.getUid()).thenReturn(1001);
-        when(mockBatteryEntry.getLabel()).thenReturn("Settings");
-        when(mockBatteryEntry.getDefaultPackageName())
-            .thenReturn("com.google.android.settings.battery");
-        when(mockBatteryEntry.isHidden()).thenReturn(true);
+        when(mMockBatteryEntry.getUid()).thenReturn(1001);
+        when(mMockBatteryEntry.getLabel()).thenReturn("Settings");
+        when(mMockBatteryEntry.getDefaultPackageName())
+                .thenReturn("com.google.android.settings.battery");
+        when(mMockBatteryEntry.isHidden()).thenReturn(true);
         when(mBatteryUsageStats.getConsumedPower()).thenReturn(5.1);
-        when(mockBatteryEntry.getConsumedPower()).thenReturn(1.1);
-        mockBatteryEntry.mPercent = 0.3;
-        when(mockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
-        when(mockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
-        when(mockBatteryEntry.getPowerComponentId()).thenReturn(expectedType);
-        when(mockBatteryEntry.getConsumerType())
-            .thenReturn(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
+        when(mMockBatteryEntry.getConsumedPower()).thenReturn(1.1);
+        mMockBatteryEntry.mPercent = 0.3;
+        when(mMockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
+        when(mMockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
+        when(mMockBatteryEntry.getPowerComponentId()).thenReturn(expectedType);
+        when(mMockBatteryEntry.getConsumerType())
+                .thenReturn(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
 
         final ContentValues values =
-            ConvertUtils.convert(
-                mockBatteryEntry,
-                mBatteryUsageStats,
-                /*batteryLevel=*/ 12,
-                /*batteryStatus=*/ BatteryManager.BATTERY_STATUS_FULL,
-                /*batteryHealth=*/ BatteryManager.BATTERY_HEALTH_COLD,
-                /*bootTimestamp=*/ 101L,
-                /*timestamp=*/ 10001L);
+                ConvertUtils.convert(
+                        mMockBatteryEntry,
+                        mBatteryUsageStats,
+                        /*batteryLevel=*/ 12,
+                        /*batteryStatus=*/ BatteryManager.BATTERY_STATUS_FULL,
+                        /*batteryHealth=*/ BatteryManager.BATTERY_HEALTH_COLD,
+                        /*bootTimestamp=*/ 101L,
+                        /*timestamp=*/ 10001L);
 
         assertThat(values.getAsLong(BatteryHistEntry.KEY_UID)).isEqualTo(1001L);
         assertThat(values.getAsLong(BatteryHistEntry.KEY_USER_ID))
-            .isEqualTo(UserHandle.getUserId(1001));
+                .isEqualTo(UserHandle.getUserId(1001));
         assertThat(values.getAsString(BatteryHistEntry.KEY_APP_LABEL))
-            .isEqualTo("Settings");
+                .isEqualTo("Settings");
         assertThat(values.getAsString(BatteryHistEntry.KEY_PACKAGE_NAME))
-            .isEqualTo("com.google.android.settings.battery");
+                .isEqualTo("com.google.android.settings.battery");
         assertThat(values.getAsBoolean(BatteryHistEntry.KEY_IS_HIDDEN)).isTrue();
         assertThat(values.getAsLong(BatteryHistEntry.KEY_BOOT_TIMESTAMP))
-            .isEqualTo(101L);
+                .isEqualTo(101L);
         assertThat(values.getAsLong(BatteryHistEntry.KEY_TIMESTAMP)).isEqualTo(10001L);
         assertThat(values.getAsString(BatteryHistEntry.KEY_ZONE_ID))
-            .isEqualTo(TimeZone.getDefault().getID());
+                .isEqualTo(TimeZone.getDefault().getID());
         assertThat(values.getAsDouble(BatteryHistEntry.KEY_TOTAL_POWER)).isEqualTo(5.1);
         assertThat(values.getAsDouble(BatteryHistEntry.KEY_CONSUME_POWER)).isEqualTo(1.1);
         assertThat(values.getAsDouble(BatteryHistEntry.KEY_PERCENT_OF_TOTAL)).isEqualTo(0.3);
         assertThat(values.getAsLong(BatteryHistEntry.KEY_FOREGROUND_USAGE_TIME))
-            .isEqualTo(1234L);
+                .isEqualTo(1234L);
         assertThat(values.getAsLong(BatteryHistEntry.KEY_BACKGROUND_USAGE_TIME))
-            .isEqualTo(5689L);
+                .isEqualTo(5689L);
         assertThat(values.getAsInteger(BatteryHistEntry.KEY_DRAIN_TYPE)).isEqualTo(expectedType);
         assertThat(values.getAsInteger(BatteryHistEntry.KEY_CONSUMER_TYPE))
-            .isEqualTo(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
+                .isEqualTo(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
         assertThat(values.getAsInteger(BatteryHistEntry.KEY_BATTERY_LEVEL)).isEqualTo(12);
         assertThat(values.getAsInteger(BatteryHistEntry.KEY_BATTERY_STATUS))
-            .isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
+                .isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
         assertThat(values.getAsInteger(BatteryHistEntry.KEY_BATTERY_HEALTH))
-            .isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
+                .isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
     }
 
     @Test
     public void convert_nullBatteryEntry_returnsExpectedContentValues() {
         final ContentValues values =
-            ConvertUtils.convert(
-                /*entry=*/ null,
-                /*batteryUsageStats=*/ null,
-                /*batteryLevel=*/ 12,
-                /*batteryStatus=*/ BatteryManager.BATTERY_STATUS_FULL,
-                /*batteryHealth=*/ BatteryManager.BATTERY_HEALTH_COLD,
-                /*bootTimestamp=*/ 101L,
-                /*timestamp=*/ 10001L);
+                ConvertUtils.convert(
+                        /*entry=*/ null,
+                        /*batteryUsageStats=*/ null,
+                        /*batteryLevel=*/ 12,
+                        /*batteryStatus=*/ BatteryManager.BATTERY_STATUS_FULL,
+                        /*batteryHealth=*/ BatteryManager.BATTERY_HEALTH_COLD,
+                        /*bootTimestamp=*/ 101L,
+                        /*timestamp=*/ 10001L);
 
         assertThat(values.getAsLong(BatteryHistEntry.KEY_BOOT_TIMESTAMP))
-            .isEqualTo(101L);
+                .isEqualTo(101L);
         assertThat(values.getAsLong(BatteryHistEntry.KEY_TIMESTAMP))
-            .isEqualTo(10001L);
+                .isEqualTo(10001L);
         assertThat(values.getAsString(BatteryHistEntry.KEY_ZONE_ID))
-            .isEqualTo(TimeZone.getDefault().getID());
+                .isEqualTo(TimeZone.getDefault().getID());
         assertThat(values.getAsInteger(BatteryHistEntry.KEY_BATTERY_LEVEL)).isEqualTo(12);
         assertThat(values.getAsInteger(BatteryHistEntry.KEY_BATTERY_STATUS))
-            .isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
+                .isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
         assertThat(values.getAsInteger(BatteryHistEntry.KEY_BATTERY_HEALTH))
-            .isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
+                .isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
         assertThat(values.getAsString(BatteryHistEntry.KEY_PACKAGE_NAME))
-            .isEqualTo(ConvertUtils.FAKE_PACKAGE_NAME);
+                .isEqualTo(ConvertUtils.FAKE_PACKAGE_NAME);
     }
 
     @Test
     public void getIndexedUsageMap_nullOrEmptyHistoryMap_returnEmptyCollection() {
         final int timeSlotSize = 2;
-        final long[] batteryHistoryKeys = new long[] {101L, 102L, 103L, 104L, 105L};
+        final long[] batteryHistoryKeys = new long[]{101L, 102L, 103L, 104L, 105L};
 
         assertThat(ConvertUtils.getIndexedUsageMap(
                 mContext, timeSlotSize, batteryHistoryKeys,
                 /*batteryHistoryMap=*/ null, /*purgeLowPercentageAndFakeData=*/ true))
-            .isEmpty();
+                .isEmpty();
         assertThat(ConvertUtils.getIndexedUsageMap(
                 mContext, timeSlotSize, batteryHistoryKeys,
                 new HashMap<Long, Map<String, BatteryHistEntry>>(),
                 /*purgeLowPercentageAndFakeData=*/ true))
-            .isEmpty();
+                .isEmpty();
     }
+
     @Test
     public void getIndexedUsageMap_returnsExpectedResult() {
         // Creates the fake testing data.
         final int timeSlotSize = 2;
-        final long[] batteryHistoryKeys = new long[] {101L, 102L, 103L, 104L, 105L};
+        final long[] batteryHistoryKeys = new long[]{101L, 102L, 103L, 104L, 105L};
         final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
-            new HashMap<>();
+                new HashMap<>();
         final BatteryHistEntry fakeEntry = createBatteryHistEntry(
-            ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", 0, 0L, 0L, 0L);
+                ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", 0, 0L, 0L, 0L);
         // Adds the index = 0 data.
         Map<String, BatteryHistEntry> entryMap = new HashMap<>();
         BatteryHistEntry entry = createBatteryHistEntry(
-            "package1", "label1", 5.0, 1L, 10L, 20L);
+                "package1", "label1", 5.0, 1L, 10L, 20L);
         entryMap.put(entry.getKey(), entry);
         entryMap.put(fakeEntry.getKey(), fakeEntry);
         batteryHistoryMap.put(Long.valueOf(batteryHistoryKeys[0]), entryMap);
@@ -189,38 +192,38 @@
         // Adds the index = 2 data.
         entryMap = new HashMap<>();
         entry = createBatteryHistEntry(
-            "package2", "label2", 10.0, 2L, 15L, 25L);
+                "package2", "label2", 10.0, 2L, 15L, 25L);
         entryMap.put(entry.getKey(), entry);
         entryMap.put(fakeEntry.getKey(), fakeEntry);
         batteryHistoryMap.put(Long.valueOf(batteryHistoryKeys[2]), entryMap);
         // Adds the index = 3 data.
         entryMap = new HashMap<>();
         entry = createBatteryHistEntry(
-            "package2", "label2", 15.0, 2L, 25L, 35L);
+                "package2", "label2", 15.0, 2L, 25L, 35L);
         entryMap.put(entry.getKey(), entry);
         entry = createBatteryHistEntry(
-            "package3", "label3", 5.0, 3L, 5L, 5L);
+                "package3", "label3", 5.0, 3L, 5L, 5L);
         entryMap.put(entry.getKey(), entry);
         entryMap.put(fakeEntry.getKey(), fakeEntry);
         batteryHistoryMap.put(Long.valueOf(batteryHistoryKeys[3]), entryMap);
         // Adds the index = 4 data.
         entryMap = new HashMap<>();
         entry = createBatteryHistEntry(
-            "package2", "label2", 30.0, 2L, 30L, 40L);
+                "package2", "label2", 30.0, 2L, 30L, 40L);
         entryMap.put(entry.getKey(), entry);
         entry = createBatteryHistEntry(
-            "package2", "label2", 75.0, 4L, 40L, 50L);
+                "package2", "label2", 75.0, 4L, 40L, 50L);
         entryMap.put(entry.getKey(), entry);
         entry = createBatteryHistEntry(
-            "package3", "label3", 5.0, 3L, 5L, 5L);
+                "package3", "label3", 5.0, 3L, 5L, 5L);
         entryMap.put(entry.getKey(), entry);
         entryMap.put(fakeEntry.getKey(), fakeEntry);
         batteryHistoryMap.put(Long.valueOf(batteryHistoryKeys[4]), entryMap);
 
         final Map<Integer, List<BatteryDiffEntry>> resultMap =
-            ConvertUtils.getIndexedUsageMap(
-                mContext, timeSlotSize, batteryHistoryKeys, batteryHistoryMap,
-                /*purgeLowPercentageAndFakeData=*/ false);
+                ConvertUtils.getIndexedUsageMap(
+                        mContext, timeSlotSize, batteryHistoryKeys, batteryHistoryMap,
+                        /*purgeLowPercentageAndFakeData=*/ false);
 
         assertThat(resultMap).hasSize(3);
         // Verifies the first timestamp result.
@@ -243,9 +246,9 @@
         // Test getIndexedUsageMap() with purged data.
         ConvertUtils.PERCENTAGE_OF_TOTAL_THRESHOLD = 50;
         final Map<Integer, List<BatteryDiffEntry>> purgedResultMap =
-            ConvertUtils.getIndexedUsageMap(
-                mContext, timeSlotSize, batteryHistoryKeys, batteryHistoryMap,
-                 /*purgeLowPercentageAndFakeData=*/ true);
+                ConvertUtils.getIndexedUsageMap(
+                        mContext, timeSlotSize, batteryHistoryKeys, batteryHistoryMap,
+                        /*purgeLowPercentageAndFakeData=*/ true);
 
         assertThat(purgedResultMap).hasSize(3);
         // Verifies the first timestamp result.
@@ -260,7 +263,7 @@
         assertThat(entryList).hasSize(1);
         // Verifies the fake data is cleared out.
         assertThat(entryList.get(0).getPackageName())
-            .isNotEqualTo(ConvertUtils.FAKE_PACKAGE_NAME);
+                .isNotEqualTo(ConvertUtils.FAKE_PACKAGE_NAME);
 
         // Adds lacked data into the battery history map.
         final int remainingSize = 25 - batteryHistoryKeys.length;
@@ -268,10 +271,10 @@
             batteryHistoryMap.put(105L + index + 1, new HashMap<>());
         }
         when(mPowerUsageFeatureProvider.getBatteryHistory(mContext))
-            .thenReturn(batteryHistoryMap);
+                .thenReturn(batteryHistoryMap);
 
         final List<BatteryDiffEntry> batteryDiffEntryList =
-            BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext);
+                BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext);
 
         assertThat(batteryDiffEntryList).isNotEmpty();
         final BatteryDiffEntry resultEntry = batteryDiffEntryList.get(0);
@@ -281,11 +284,11 @@
     @Test
     public void getIndexedUsageMap_usageTimeExceed_returnsExpectedResult() {
         final int timeSlotSize = 1;
-        final long[] batteryHistoryKeys = new long[] {101L, 102L, 103L};
+        final long[] batteryHistoryKeys = new long[]{101L, 102L, 103L};
         final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
-            new HashMap<>();
+                new HashMap<>();
         final BatteryHistEntry fakeEntry = createBatteryHistEntry(
-            ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", 0, 0L, 0L, 0L);
+                ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", 0, 0L, 0L, 0L);
         // Adds the index = 0 data.
         Map<String, BatteryHistEntry> entryMap = new HashMap<>();
         entryMap.put(fakeEntry.getKey(), fakeEntry);
@@ -297,14 +300,14 @@
         // Adds the index = 2 data.
         entryMap = new HashMap<>();
         final BatteryHistEntry entry = createBatteryHistEntry(
-            "package3", "label3", 500, 5L, 3600000L, 7200000L);
+                "package3", "label3", 500, 5L, 3600000L, 7200000L);
         entryMap.put(entry.getKey(), entry);
         batteryHistoryMap.put(Long.valueOf(batteryHistoryKeys[2]), entryMap);
 
         final Map<Integer, List<BatteryDiffEntry>> purgedResultMap =
-            ConvertUtils.getIndexedUsageMap(
-                mContext, timeSlotSize, batteryHistoryKeys, batteryHistoryMap,
-                /*purgeLowPercentageAndFakeData=*/ true);
+                ConvertUtils.getIndexedUsageMap(
+                        mContext, timeSlotSize, batteryHistoryKeys, batteryHistoryMap,
+                        /*purgeLowPercentageAndFakeData=*/ true);
 
         assertThat(purgedResultMap).hasSize(2);
         final List<BatteryDiffEntry> entryList = purgedResultMap.get(0);
@@ -313,19 +316,19 @@
         final float ratio = (float) (7200) / (float) (3600 + 7200);
         final BatteryDiffEntry resultEntry = entryList.get(0);
         assertThat(resultEntry.mForegroundUsageTimeInMs)
-            .isEqualTo(Math.round(entry.mForegroundUsageTimeInMs * ratio));
+                .isEqualTo(Math.round(entry.mForegroundUsageTimeInMs * ratio));
         assertThat(resultEntry.mBackgroundUsageTimeInMs)
-            .isEqualTo(Math.round(entry.mBackgroundUsageTimeInMs * ratio));
+                .isEqualTo(Math.round(entry.mBackgroundUsageTimeInMs * ratio));
         assertThat(resultEntry.mConsumePower)
-            .isEqualTo(entry.mConsumePower * ratio);
+                .isEqualTo(entry.mConsumePower * ratio);
     }
 
     @Test
     public void getIndexedUsageMap_hideBackgroundUsageTime_returnsExpectedResult() {
-        final long[] batteryHistoryKeys = new long[] {101L, 102L, 103L};
+        final long[] batteryHistoryKeys = new long[]{101L, 102L, 103L};
         final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = new HashMap<>();
         final BatteryHistEntry fakeEntry = createBatteryHistEntry(
-            ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", 0, 0L, 0L, 0L);
+                ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", 0, 0L, 0L, 0L);
         // Adds the index = 0 data.
         Map<String, BatteryHistEntry> entryMap = new HashMap<>();
         entryMap.put(fakeEntry.getKey(), fakeEntry);
@@ -337,16 +340,16 @@
         // Adds the index = 2 data.
         entryMap = new HashMap<>();
         final BatteryHistEntry entry = createBatteryHistEntry(
-            "package3", "label3", 500, 5L, 3600000L, 7200000L);
+                "package3", "label3", 500, 5L, 3600000L, 7200000L);
         entryMap.put(entry.getKey(), entry);
         batteryHistoryMap.put(Long.valueOf(batteryHistoryKeys[2]), entryMap);
         when(mPowerUsageFeatureProvider.getHideBackgroundUsageTimeSet(mContext))
-            .thenReturn(new HashSet(Arrays.asList((CharSequence) "package3")));
+                .thenReturn(new HashSet(Arrays.asList((CharSequence) "package3")));
 
         final Map<Integer, List<BatteryDiffEntry>> purgedResultMap =
-            ConvertUtils.getIndexedUsageMap(
-                mContext, /*timeSlotSize=*/ 1, batteryHistoryKeys, batteryHistoryMap,
-                /*purgeLowPercentageAndFakeData=*/ true);
+                ConvertUtils.getIndexedUsageMap(
+                        mContext, /*timeSlotSize=*/ 1, batteryHistoryKeys, batteryHistoryMap,
+                        /*purgeLowPercentageAndFakeData=*/ true);
 
         final BatteryDiffEntry resultEntry = purgedResultMap.get(0).get(0);
         assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0);
@@ -355,7 +358,7 @@
     @Test
     public void getLocale_nullContext_returnDefaultLocale() {
         assertThat(ConvertUtils.getLocale(/*context=*/ null))
-            .isEqualTo(Locale.getDefault());
+                .isEqualTo(Locale.getDefault());
     }
 
     @Test
@@ -370,6 +373,71 @@
         assertThat(ConvertUtils.getLocale(mContext)).isEqualTo(Locale.getDefault());
     }
 
+    @Test
+    public void resolveMultiUsersData_replaceOtherUsersItemWithExpectedEntry() {
+        final int currentUserId = mContext.getUserId();
+        final Map<Integer, List<BatteryDiffEntry>> entryMap = new HashMap<>();
+        // Without other users time slot.
+        entryMap.put(0, Arrays.asList(
+                createBatteryDiffEntry(
+                        currentUserId,
+                        ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+                        /*consumePercentage=*/ 50)));
+        // With other users time slot.
+        final List<BatteryDiffEntry> withOtherUsersList = new ArrayList<>();
+        entryMap.put(1, withOtherUsersList);
+        withOtherUsersList.add(
+                createBatteryDiffEntry(
+                        currentUserId + 1,
+                        ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY,
+                        /*consumePercentage=*/ 20));
+        withOtherUsersList.add(
+                createBatteryDiffEntry(
+                        currentUserId + 2,
+                        ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+                        /*consumePercentage=*/ 30));
+        withOtherUsersList.add(
+                createBatteryDiffEntry(
+                        currentUserId + 3,
+                        ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+                        /*consumePercentage=*/ 40));
+
+        ConvertUtils.resolveMultiUsersData(mContext, entryMap);
+
+        assertThat(entryMap.get(0).get(0).getPercentOfTotal()).isEqualTo(50);
+        // Asserts with other users items.
+        final List<BatteryDiffEntry> entryList = entryMap.get(1);
+        assertThat(entryList).hasSize(2);
+        assertBatteryDiffEntry(
+                entryList.get(0),
+                currentUserId + 1,
+                /*uid=*/ 0,
+                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY,
+                /*consumePercentage=*/ 20);
+        assertBatteryDiffEntry(
+                entryList.get(1),
+                BatteryUtils.UID_OTHER_USERS,
+                BatteryUtils.UID_OTHER_USERS,
+                ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
+                /*consumePercentage=*/ 70);
+    }
+
+    private BatteryDiffEntry createBatteryDiffEntry(
+            long userId, int counsumerType, double consumePercentage) {
+        final ContentValues values = new ContentValues();
+        values.put(BatteryHistEntry.KEY_USER_ID, userId);
+        values.put(BatteryHistEntry.KEY_CONSUMER_TYPE, counsumerType);
+        final BatteryDiffEntry batteryDiffEntry =
+                new BatteryDiffEntry(
+                        mContext,
+                        /*foregroundUsageTimeInMs=*/ 0,
+                        /*backgroundUsageTimeInMs=*/ 0,
+                        /*consumePower=*/ consumePercentage,
+                        new BatteryHistEntry(values));
+        batteryDiffEntry.setTotalConsumePower(100f);
+        return batteryDiffEntry;
+    }
+
     private static BatteryHistEntry createBatteryHistEntry(
             String packageName, String appLabel, double consumePower,
             long uid, long foregroundUsageTimeInMs, long backgroundUsageTimeInMs) {
@@ -379,16 +447,25 @@
         values.put(BatteryHistEntry.KEY_APP_LABEL, appLabel);
         values.put(BatteryHistEntry.KEY_UID, Long.valueOf(uid));
         values.put(BatteryHistEntry.KEY_CONSUMER_TYPE,
-            Integer.valueOf(ConvertUtils.CONSUMER_TYPE_UID_BATTERY));
+                Integer.valueOf(ConvertUtils.CONSUMER_TYPE_UID_BATTERY));
         values.put(BatteryHistEntry.KEY_CONSUME_POWER, consumePower);
         values.put(BatteryHistEntry.KEY_FOREGROUND_USAGE_TIME,
-            Long.valueOf(foregroundUsageTimeInMs));
+                Long.valueOf(foregroundUsageTimeInMs));
         values.put(BatteryHistEntry.KEY_BACKGROUND_USAGE_TIME,
-            Long.valueOf(backgroundUsageTimeInMs));
+                Long.valueOf(backgroundUsageTimeInMs));
         return new BatteryHistEntry(values);
     }
 
     private static void assertBatteryDiffEntry(
+            BatteryDiffEntry entry, long userId, long uid, int counsumerType,
+            double consumePercentage) {
+        assertThat(entry.mBatteryHistEntry.mUid).isEqualTo(uid);
+        assertThat(entry.mBatteryHistEntry.mUserId).isEqualTo(userId);
+        assertThat(entry.mBatteryHistEntry.mConsumerType).isEqualTo(counsumerType);
+        assertThat(entry.getPercentOfTotal()).isEqualTo(consumePercentage);
+    }
+
+    private static void assertBatteryDiffEntry(
             BatteryDiffEntry entry, int percentOfTotal,
             long foregroundUsageTimeInMs, long backgroundUsageTimeInMs) {
         assertThat((int) entry.getPercentOfTotal()).isEqualTo(percentOfTotal);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/ExpandDividerPreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ExpandDividerPreferenceTest.java
similarity index 92%
rename from tests/robotests/src/com/android/settings/fuelgauge/ExpandDividerPreferenceTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ExpandDividerPreferenceTest.java
index 9e32da4..e36f948 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/ExpandDividerPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ExpandDividerPreferenceTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,14 +14,13 @@
  * limitations under the License.
  */
 
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 
 import android.content.Context;
 import android.widget.ImageView;
@@ -74,7 +73,7 @@
 
     @Test
     public void testOnClick_switchExpandStateAndInvokeCallback() {
-        final boolean[] isExpandedArray = new boolean[] {false};
+        final boolean[] isExpandedArray = new boolean[]{false};
         mExpandDividerPreference.mImageView = mImageView;
         mExpandDividerPreference.setOnExpandListener(
                 isExpanded -> isExpandedArray[0] = isExpanded);
@@ -94,7 +93,7 @@
 
     @Test
     public void testSetIsExpanded_updateStateButNotInvokeCallback() {
-        final boolean[] isExpandedArray = new boolean[] {false};
+        final boolean[] isExpandedArray = new boolean[]{false};
         mExpandDividerPreference.mImageView = mImageView;
         mExpandDividerPreference.setOnExpandListener(
                 isExpanded -> isExpandedArray[0] = isExpanded);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerGaugePreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java
similarity index 94%
rename from tests/robotests/src/com/android/settings/fuelgauge/PowerGaugePreferenceTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java
index 10b89a6..5d599fe 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerGaugePreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -55,7 +55,7 @@
         mContext = RuntimeEnvironment.application;
         mRootView = LayoutInflater.from(mContext).inflate(R.layout.preference_app, null);
         mWidgetView =
-            LayoutInflater.from(mContext).inflate(R.layout.preference_widget_summary, null);
+                LayoutInflater.from(mContext).inflate(R.layout.preference_widget_summary, null);
         final LinearLayout widgetFrame = mRootView.findViewById(android.R.id.widget_frame);
         assertThat(widgetFrame).isNotNull();
         widgetFrame.addView(mWidgetView);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageBaseTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBaseTest.java
similarity index 95%
rename from tests/robotests/src/com/android/settings/fuelgauge/PowerUsageBaseTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBaseTest.java
index 451e605..2700930 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageBaseTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageBaseTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryTest.java
similarity index 93%
rename from tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
rename to tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryTest.java
index 843cc99..81b574a 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerUsageSummaryTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,11 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.settings.fuelgauge;
+package com.android.settings.fuelgauge.batteryusage;
 
-import static com.android.settings.fuelgauge.PowerUsageSummary.BATTERY_INFO_LOADER;
-import static com.android.settings.fuelgauge.PowerUsageSummary.KEY_BATTERY_ERROR;
-import static com.android.settings.fuelgauge.PowerUsageSummary.KEY_BATTERY_USAGE;
+import static com.android.settings.fuelgauge.batteryusage.PowerUsageSummary.BATTERY_INFO_LOADER;
+import static com.android.settings.fuelgauge.batteryusage.PowerUsageSummary.KEY_BATTERY_ERROR;
+import static com.android.settings.fuelgauge.batteryusage.PowerUsageSummary.KEY_BATTERY_USAGE;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -44,6 +44,8 @@
 
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
+import com.android.settings.fuelgauge.BatteryBroadcastReceiver;
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.XmlTestUtils;
@@ -55,6 +57,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
@@ -74,6 +77,7 @@
     public static void beforeClass() {
         sAdditionalBatteryInfoIntent = new Intent("com.example.app.ADDITIONAL_BATTERY_INFO");
     }
+
     @Mock
     private SettingsActivity mSettingsActivity;
     @Mock
@@ -111,7 +115,7 @@
                 .thenReturn(sAdditionalBatteryInfoIntent);
         when(mFeatureFactory.powerUsageFeatureProvider.isChartGraphEnabled(mRealContext))
                 .thenReturn(true);
-        mFragment.mBatteryUtils = spy(new BatteryUtils(mRealContext));
+        mFragment.mBatteryUtils = Mockito.spy(new BatteryUtils(mRealContext));
         ReflectionHelpers.setField(mFragment, "mVisibilityLoggerMixin", mVisibilityLoggerMixin);
         ReflectionHelpers.setField(mFragment, "mBatteryBroadcastReceiver",
                 mBatteryBroadcastReceiver);
diff --git a/tests/robotests/src/com/android/settings/gestures/LongPressPowerButtonPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/LongPressPowerButtonPreferenceControllerTest.java
deleted file mode 100644
index 5637e96..0000000
--- a/tests/robotests/src/com/android/settings/gestures/LongPressPowerButtonPreferenceControllerTest.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) 2021 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.settings.gestures;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.Application;
-import android.content.res.Resources;
-import android.provider.Settings;
-
-import androidx.annotation.StringRes;
-import androidx.preference.Preference;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settings.R;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.mockito.stubbing.Answer;
-import org.robolectric.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public class LongPressPowerButtonPreferenceControllerTest {
-
-    private static final String KEY_LONG_PRESS_POWER_BUTTON =
-            "gesture_power_menu_long_press_for_assist";
-
-    private Application mContext;
-    private Resources mResources;
-    private LongPressPowerButtonPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(ApplicationProvider.getApplicationContext());
-        mResources = mock(Resources.class);
-        when(mContext.getResources()).thenReturn(mResources);
-        when(mResources.getString(anyInt())).thenAnswer((Answer<String>) invocation -> {
-            int id = invocation.getArgument(0);
-            return getString(id);
-        });
-        when(mResources.getBoolean(
-                com.android.internal.R.bool.config_longPressOnPowerForAssistantSettingAvailable))
-                .thenReturn(true);
-        mController = new LongPressPowerButtonPreferenceController(mContext,
-                KEY_LONG_PRESS_POWER_BUTTON);
-        mController.mAssistSwitch = mock(Preference.class);
-        mController.mFooterHint = mock(Preference.class);
-    }
-
-    @Test
-    public void isAvailable_configIsTrue_shouldReturnTrue() {
-        when(mResources.getBoolean(
-                com.android.internal.R.bool.config_longPressOnPowerForAssistantSettingAvailable))
-                .thenReturn(true);
-
-        assertThat(mController.isAvailable()).isTrue();
-    }
-
-    @Test
-    public void isAvailable_configIsFalse_shouldReturnFalse() {
-        when(mResources.getBoolean(
-                com.android.internal.R.bool.config_longPressOnPowerForAssistantSettingAvailable))
-                .thenReturn(false);
-
-        assertThat(mController.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void preferenceChecked_powerMenuHintTextShown() {
-        mController.onPreferenceChange(null, true);
-
-        verify(mController.mFooterHint).setSummary(
-                getString(
-                        R.string.power_menu_power_volume_up_hint));
-        verify(mController.mFooterHint).setVisible(true);
-    }
-
-
-    @Test
-    public void preferenceUnchecked_keyChordEnabled_powerMenuHintTextShown() {
-        when(mResources.getInteger(
-                com.android.internal.R.integer.config_keyChordPowerVolumeUp))
-                .thenReturn(
-                 LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS);
-
-        mController.onPreferenceChange(null, false);
-
-        verify(mController.mFooterHint).setSummary(
-                getString(
-                        R.string.power_menu_power_volume_up_hint));
-        verify(mController.mFooterHint).setVisible(true);
-    }
-
-    @Test
-    public void preferenceChecked_hushGestureEnabled_powerMenuHintTextIncludesHushHint() {
-        when(mResources.getBoolean(
-                com.android.internal.R.bool.config_volumeHushGestureEnabled))
-                .thenReturn(true);
-
-        mController.onPreferenceChange(null, true);
-
-        verify(mController.mFooterHint).setSummary(
-                getString(
-                        R.string.power_menu_power_volume_up_hint) + "\n\n"
-                        + getString(
-                        R.string.power_menu_power_prevent_ringing_hint));
-        verify(mController.mFooterHint).setVisible(true);
-    }
-
-
-    @Test
-    public void preferenceUnchecked_keyChordDisabled_powerMenuHintTextHidden() {
-        mController.onPreferenceChange(null, false);
-        when(mResources.getInteger(
-                com.android.internal.R.integer.config_keyChordPowerVolumeUp))
-                .thenReturn(
-                     LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_NO_ACTION);
-
-        verify(mController.mFooterHint).setVisible(false);
-    }
-
-    @Test
-    public void preferenceChecked_longPressPowerSettingSetToAssistant() {
-        mController.onPreferenceChange(null, true);
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(
-                PowerMenuSettingsUtils.LONG_PRESS_POWER_ASSISTANT_VALUE);
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo(
-                LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_GLOBAL_ACTIONS);
-    }
-
-    @Test
-    public void preferenceUnchecked_longPressPowerSettingSetToDefaultValue() {
-        when(mResources.getInteger(
-                com.android.internal.R.integer.config_longPressOnPowerBehavior))
-                .thenReturn(
-                        PowerMenuSettingsUtils.LONG_PRESS_POWER_GLOBAL_ACTIONS);
-
-        mController.onPreferenceChange(null, false);
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(
-                PowerMenuSettingsUtils.LONG_PRESS_POWER_GLOBAL_ACTIONS);
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo(
-                LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_NO_ACTION);
-        verify(mController.mAssistSwitch).setSummary(
-                getString(
-                      R.string.power_menu_summary_long_press_for_assist_disabled_with_power_menu));
-    }
-
-    @Test
-    public void preferenceUnchecked_muteChordDefault_longPressPowerSettingSetToDefaultValue() {
-        // Value out of range chosen deliberately.
-        when(mResources.getInteger(
-                com.android.internal.R.integer.config_longPressOnPowerBehavior))
-                .thenReturn(8);
-        when(mResources.getInteger(
-                com.android.internal.R.integer.config_keyChordPowerVolumeUp))
-                .thenReturn(
-                    LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE);
-
-        mController.onPreferenceChange(null, false);
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(8);
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo(
-                LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_MUTE_TOGGLE);
-    }
-
-    @Test
-    public void preferenceUnchecked_assistDefault_setNoAction() {
-        // Ensure that the Assistant is the default behavior for LPP.
-        when(mResources.getInteger(
-                com.android.internal.R.integer.config_longPressOnPowerBehavior))
-                .thenReturn(
-                        PowerMenuSettingsUtils.LONG_PRESS_POWER_ASSISTANT_VALUE);
-
-        mController.onPreferenceChange(null, false);
-
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.POWER_BUTTON_LONG_PRESS, -1)).isEqualTo(
-                PowerMenuSettingsUtils.LONG_PRESS_POWER_GLOBAL_ACTIONS);
-        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.KEY_CHORD_POWER_VOLUME_UP, -1)).isEqualTo(
-                LongPressPowerButtonPreferenceController.KEY_CHORD_POWER_VOLUME_UP_NO_ACTION);
-        verify(mController.mAssistSwitch).setSummary(getString(
-                    R.string.power_menu_summary_long_press_for_assist_disabled_with_power_menu));
-    }
-
-    private String getString(@StringRes int id) {
-        return ApplicationProvider.getApplicationContext().getString(id);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/gestures/LongPressPowerFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/LongPressPowerFooterPreferenceControllerTest.java
new file mode 100644
index 0000000..e1cd53e
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/gestures/LongPressPowerFooterPreferenceControllerTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.gestures;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.app.Application;
+import android.content.res.Resources;
+import android.text.TextUtils;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+import com.android.settingslib.widget.FooterPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class LongPressPowerFooterPreferenceControllerTest {
+
+    private Application mContext;
+    private Resources mResources;
+    private Preference mPreference;
+    private LongPressPowerFooterPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mResources = spy(mContext.getResources());
+        when(mContext.getResources()).thenReturn(mResources);
+        mPreference = new FooterPreference(mContext);
+        mController = new LongPressPowerFooterPreferenceController(mContext, "test_key");
+
+        PreferenceScreen mScreen = mock(PreferenceScreen.class);
+        when(mScreen.findPreference("test_key")).thenReturn(mPreference);
+        mController.displayPreference(mScreen);
+    }
+
+    @Test
+    public void updateState_longPressPowerForPowerMenu_hidesPreference() {
+        PowerMenuSettingsUtils.setLongPressPowerForPowerMenu(mContext);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void updateState_longPressPowerForAssistant_showsPreference() {
+        PowerMenuSettingsUtils.setLongPressPowerForAssistant(mContext);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void updateState_notEligible_showsPreference() {
+        PowerMenuSettingsUtils.setLongPressPowerForAssistant(mContext);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void updateState_hushGestureEnabled_includesPreventRingingHint() {
+        when(mResources.getBoolean(com.android.internal.R.bool.config_volumeHushGestureEnabled))
+                .thenReturn(true);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.getSummary().toString())
+                .isEqualTo(
+                        TextUtils.concat(
+                                mContext.getString(R.string.power_menu_power_volume_up_hint),
+                                "\n\n",
+                                mContext.getString(
+                                        R.string.power_menu_power_prevent_ringing_hint)));
+    }
+
+    @Test
+    public void updateState_hushGestureDisabled_doesNotIncludePreventRingingHint() {
+        when(mResources.getBoolean(com.android.internal.R.bool.config_volumeHushGestureEnabled))
+                .thenReturn(false);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.getSummary().toString())
+                .isEqualTo(mContext.getString(R.string.power_menu_power_volume_up_hint));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/gestures/LongPressPowerForAssistantPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/LongPressPowerForAssistantPreferenceControllerTest.java
new file mode 100644
index 0000000..e210077
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/gestures/LongPressPowerForAssistantPreferenceControllerTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.gestures;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.app.Application;
+import android.content.res.Resources;
+
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class LongPressPowerForAssistantPreferenceControllerTest {
+
+    private Application mContext;
+    private Resources mResources;
+    private SelectorWithWidgetPreference mPreference;
+    private LongPressPowerForAssistantPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mResources = spy(mContext.getResources());
+        mPreference = new SelectorWithWidgetPreference(mContext);
+        mController = new LongPressPowerForAssistantPreferenceController(mContext, "test_key");
+
+        when(mContext.getResources()).thenReturn(mResources);
+        when(mResources.getBoolean(
+                com.android.internal.R.bool
+                        .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(true);
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(5); // Default to Assistant
+
+        PreferenceScreen mScreen = mock(PreferenceScreen.class);
+        when(mScreen.findPreference("test_key")).thenReturn(mPreference);
+        mController.displayPreference(mScreen);
+        mController.onStart();
+    }
+
+    @Test
+    public void initialState_longPressPowerForPowerMenu_preferenceNotChecked() {
+        PowerMenuSettingsUtils.setLongPressPowerForPowerMenu(mContext);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void initialState_longPressPowerForAssistant_preferenceChecked() {
+        PowerMenuSettingsUtils.setLongPressPowerForAssistant(mContext);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void getAvailabilityStatus_longPressPowerSettingAvailable_returnsAvailable() {
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_longPressPowerSettingNotAvailable_returnsNotAvailable() {
+        when(mResources.getBoolean(
+                com.android.internal.R.bool
+                        .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(false);
+
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void onClick_updatesSettingsValue_checksPreference() {
+        // Initial state: preference not checked
+        PowerMenuSettingsUtils.setLongPressPowerForPowerMenu(mContext);
+        mController.updateState(mPreference);
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext)).isFalse();
+        assertThat(mPreference.isChecked()).isFalse();
+
+        mPreference.performClick();
+
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext)).isTrue();
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/gestures/LongPressPowerForPowerMenuPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/LongPressPowerForPowerMenuPreferenceControllerTest.java
new file mode 100644
index 0000000..ea6557b
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/gestures/LongPressPowerForPowerMenuPreferenceControllerTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.gestures;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.app.Application;
+import android.content.res.Resources;
+
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class LongPressPowerForPowerMenuPreferenceControllerTest {
+
+    private Application mContext;
+    private Resources mResources;
+    private SelectorWithWidgetPreference mPreference;
+    private LongPressPowerForPowerMenuPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mResources = spy(mContext.getResources());
+        mPreference = new SelectorWithWidgetPreference(mContext);
+        mController = new LongPressPowerForPowerMenuPreferenceController(mContext, "test_key");
+
+        when(mContext.getResources()).thenReturn(mResources);
+        when(mResources.getBoolean(
+                com.android.internal.R.bool
+                        .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(true);
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(5); // Default to Assistant
+
+        PreferenceScreen mScreen = mock(PreferenceScreen.class);
+        when(mScreen.findPreference("test_key")).thenReturn(mPreference);
+        mController.displayPreference(mScreen);
+        mController.onStart();
+    }
+
+    @Test
+    public void initialState_longPressPowerForPowerMenu_preferenceChecked() {
+        PowerMenuSettingsUtils.setLongPressPowerForPowerMenu(mContext);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void initialState_longPressPowerForAssistant_preferenceNotChecked() {
+        PowerMenuSettingsUtils.setLongPressPowerForAssistant(mContext);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void getAvailabilityStatus_longPressPowerSettingAvailable_returnsAvailable() {
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_longPressPowerSettingNotAvailable_returnsNotAvailable() {
+        when(mResources.getBoolean(
+                com.android.internal.R.bool
+                        .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(false);
+
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void onClick_updatesSettingsValue_checksPreference() {
+        // Initial state: preference not checked
+        PowerMenuSettingsUtils.setLongPressPowerForAssistant(mContext);
+        mController.updateState(mPreference);
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext)).isTrue();
+        assertThat(mPreference.isChecked()).isFalse();
+
+        mPreference.performClick();
+
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext)).isFalse();
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/gestures/LongPressPowerIllustrationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/LongPressPowerIllustrationPreferenceControllerTest.java
new file mode 100644
index 0000000..37a4c0b
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/gestures/LongPressPowerIllustrationPreferenceControllerTest.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.gestures;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.app.Application;
+
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+import com.android.settingslib.widget.IllustrationPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class LongPressPowerIllustrationPreferenceControllerTest {
+
+    private Application mContext;
+    private IllustrationPreference mPreference;
+    private LongPressPowerIllustrationPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = ApplicationProvider.getApplicationContext();
+        mPreference = new IllustrationPreference(mContext);
+        mController = new LongPressPowerIllustrationPreferenceController(mContext, "test_key");
+
+        PreferenceScreen mScreen = mock(PreferenceScreen.class);
+        when(mScreen.findPreference("test_key")).thenReturn(mPreference);
+        mController.displayPreference(mScreen);
+    }
+
+    @Test
+    public void updateState_longPressPowerForPowerMenu_showsPowerMenuAnimation() {
+        PowerMenuSettingsUtils.setLongPressPowerForPowerMenu(mContext);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.getLottieAnimationResId())
+                .isEqualTo(R.raw.lottie_long_press_power_for_power_menu);
+    }
+
+    @Test
+    public void updateState_longPressPowerForAssistant_showsAssistantAnimation() {
+        PowerMenuSettingsUtils.setLongPressPowerForAssistant(mContext);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.getLottieAnimationResId())
+                .isEqualTo(R.raw.lottie_long_press_power_for_assistant);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/gestures/LongPressPowerSensitivityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/LongPressPowerSensitivityPreferenceControllerTest.java
index 9c99092..d1c0922 100644
--- a/tests/robotests/src/com/android/settings/gestures/LongPressPowerSensitivityPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/LongPressPowerSensitivityPreferenceControllerTest.java
@@ -26,14 +26,20 @@
 import android.content.res.Resources;
 import android.provider.Settings;
 
+import androidx.preference.PreferenceScreen;
 import androidx.test.core.app.ApplicationProvider;
 
+import com.android.settings.widget.LabeledSeekBarPreference;
+import com.android.settingslib.testutils.shadow.ShadowInteractionJankMonitor;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
 
 @RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowInteractionJankMonitor.class})
 public class LongPressPowerSensitivityPreferenceControllerTest {
 
     private static final String KEY_LONG_PRESS_SENSITIVITY =
@@ -43,7 +49,9 @@
 
     private Application mContext;
     private Resources mResources;
+    private LabeledSeekBarPreference mPreference;
     private LongPressPowerSensitivityPreferenceController mController;
+    private PreferenceScreen mScreen;
 
     @Before
     public void setUp() {
@@ -52,11 +60,22 @@
         when(mContext.getResources()).thenReturn(mResources);
 
         when(mResources.getIntArray(
-                com.android.internal.R.array.config_longPressOnPowerDurationSettings))
+                        com.android.internal.R.array.config_longPressOnPowerDurationSettings))
                 .thenReturn(SENSITIVITY_VALUES);
+        when(mResources.getBoolean(
+                        com.android.internal.R.bool
+                                .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(true);
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(5); // Default to Assistant
 
+        mPreference = new LabeledSeekBarPreference(mContext, null);
         mController = new LongPressPowerSensitivityPreferenceController(mContext,
                 KEY_LONG_PRESS_SENSITIVITY);
+
+        mScreen = mock(PreferenceScreen.class);
+        when(mScreen.findPreference(KEY_LONG_PRESS_SENSITIVITY)).thenReturn(mPreference);
+        mController.displayPreference(mScreen);
     }
 
     @Test
@@ -98,46 +117,64 @@
     }
 
     @Test
-    public void longPressForAssistEnabled_isAvailable() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.POWER_BUTTON_LONG_PRESS,
-                PowerMenuSettingsUtils.LONG_PRESS_POWER_ASSISTANT_VALUE);
+    public void longPressForAssistant_isVisible() {
+        PowerMenuSettingsUtils.setLongPressPowerForAssistant(mContext);
 
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(
-                LongPressPowerSensitivityPreferenceController.AVAILABLE);
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.isVisible()).isTrue();
     }
 
     @Test
-    public void longPressForAssistDisabled_isNotAvailableDueToDependentSetting() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.POWER_BUTTON_LONG_PRESS,
-                PowerMenuSettingsUtils.LONG_PRESS_POWER_NO_ACTION);
+    public void longPressForPowerMenu_isHidden() {
+        PowerMenuSettingsUtils.setLongPressPowerForPowerMenu(mContext);
 
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(
-                LongPressPowerSensitivityPreferenceController.DISABLED_DEPENDENT_SETTING);
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.isVisible()).isFalse();
     }
 
     @Test
-    public void sensitivityValuesAreNull_notAvailable() {
+    public void longPressPowerSettingNotAvailable_notAvailable_isHidden() {
+        when(mResources.getBoolean(
+                        com.android.internal.R.bool
+                                .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(false);
+
+        mController.updateState(mPreference);
+
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(LongPressPowerSensitivityPreferenceController.UNSUPPORTED_ON_DEVICE);
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void sensitivityValuesAreNull_notAvailable_isHidden() {
         when(mResources.getIntArray(
                 com.android.internal.R.array.config_longPressOnPowerDurationSettings))
                 .thenReturn(null);
         mController = new LongPressPowerSensitivityPreferenceController(mContext,
                 KEY_LONG_PRESS_SENSITIVITY);
+        mController.displayPreference(mScreen);
+        mController.updateState(mPreference);
 
         assertThat(mController.getAvailabilityStatus()).isEqualTo(
                 LongPressPowerSensitivityPreferenceController.UNSUPPORTED_ON_DEVICE);
+        assertThat(mPreference.isVisible()).isFalse();
     }
 
     @Test
-    public void sensitivityValuesArrayTooShort_notAvailable() {
+    public void sensitivityValuesArrayTooShort_notAvailable_isHidden() {
         when(mResources.getIntArray(
                 com.android.internal.R.array.config_longPressOnPowerDurationSettings))
                 .thenReturn(new int[]{200});
         mController = new LongPressPowerSensitivityPreferenceController(mContext,
                 KEY_LONG_PRESS_SENSITIVITY);
+        mController.displayPreference(mScreen);
+        mController.updateState(mPreference);
 
         assertThat(mController.getAvailabilityStatus()).isEqualTo(
                 LongPressPowerSensitivityPreferenceController.UNSUPPORTED_ON_DEVICE);
+        assertThat(mPreference.isVisible()).isFalse();
     }
 }
diff --git a/tests/robotests/src/com/android/settings/gestures/PowerMenuPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/PowerMenuPreferenceControllerTest.java
index 1a82a13..0dc16cc 100644
--- a/tests/robotests/src/com/android/settings/gestures/PowerMenuPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/PowerMenuPreferenceControllerTest.java
@@ -18,20 +18,21 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
 import android.content.res.Resources;
 
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
 @RunWith(RobolectricTestRunner.class)
 public class PowerMenuPreferenceControllerTest {
@@ -41,35 +42,75 @@
 
     private static final String KEY_GESTURE_POWER_MENU = "gesture_power_menu";
 
-
     @Before
     public void setUp() {
-        mContext = spy(RuntimeEnvironment.application);
-        mResources = mock(Resources.class);
-        when(mResources.getBoolean(
-            com.android.internal.R.bool.config_longPressOnPowerForAssistantSettingAvailable))
-                .thenReturn(true);
-        when(mContext.getResources()).thenReturn(mResources);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mResources = spy(mContext.getResources());
         mController = new PowerMenuPreferenceController(mContext, KEY_GESTURE_POWER_MENU);
+
+        when(mContext.getResources()).thenReturn(mResources);
+        when(mResources.getBoolean(
+                        com.android.internal.R.bool
+                                .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(true);
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(1); // Default to power menu
     }
 
     @Test
-    public void getAvailabilityStatus_assistAvailable_available() {
+    public void getAvailabilityStatus_settingsAvailable_returnsAvailable() {
         when(mResources.getBoolean(
-                com.android.internal.R.bool.config_longPressOnPowerForAssistantSettingAvailable))
-                    .thenReturn(true);
+                        com.android.internal.R.bool
+                                .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(true);
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(1); // Default to power menu
 
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(
-                BasePreferenceController.AVAILABLE);
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.AVAILABLE);
     }
 
     @Test
-    public void getAvailabilityStatus_assistUnavailable_unavailable() {
+    public void getAvailabilityStatus_settingsNotAvailable_returnsNotAvailable() {
         when(mResources.getBoolean(
-                com.android.internal.R.bool.config_longPressOnPowerForAssistantSettingAvailable))
-                    .thenReturn(false);
+                        com.android.internal.R.bool
+                                .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(false);
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(1); // Default to power menu
 
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(
-                BasePreferenceController.UNSUPPORTED_ON_DEVICE);
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_longPressPowerSettingNotAvailable_returnsNotAvailable() {
+        when(mResources.getBoolean(
+                        com.android.internal.R.bool
+                                .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(true);
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(3); // Default to power off (unsupported setup)
+
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getSummary_longPressPowerToAssistant_returnsNotAvailable() {
+        PowerMenuSettingsUtils.setLongPressPowerForAssistant(mContext);
+
+        assertThat(mController.getSummary().toString())
+                .isEqualTo(
+                        mContext.getString(R.string.power_menu_summary_long_press_for_assistant));
+    }
+
+    @Test
+    public void getSummary_longPressPowerToPowerMenu_returnsNotAvailable() {
+        PowerMenuSettingsUtils.setLongPressPowerForPowerMenu(mContext);
+
+        assertThat(mController.getSummary().toString())
+                .isEqualTo(
+                        mContext.getString(R.string.power_menu_summary_long_press_for_power_menu));
     }
 }
diff --git a/tests/robotests/src/com/android/settings/gestures/PowerMenuSettingsUtilsTest.java b/tests/robotests/src/com/android/settings/gestures/PowerMenuSettingsUtilsTest.java
index 25f0320..3f16b63 100644
--- a/tests/robotests/src/com/android/settings/gestures/PowerMenuSettingsUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/PowerMenuSettingsUtilsTest.java
@@ -44,48 +44,123 @@
         mContext = spy(ApplicationProvider.getApplicationContext());
         mResources = mock(Resources.class);
         when(mContext.getResources()).thenReturn(mResources);
+
+        when(mResources.getBoolean(
+                        com.android.internal.R.bool
+                                .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(true);
     }
 
     @Test
-    public void longPressBehaviourValuePresent_returnsValue() {
-        when(mResources.getInteger(
-                com.android.internal.R.integer.config_longPressOnPowerBehavior))
-                .thenReturn(0);
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.POWER_BUTTON_LONG_PRESS, 1);
-
-        assertThat(PowerMenuSettingsUtils.getPowerButtonSettingValue(mContext)).isEqualTo(1);
+    public void isLongPressPowerForAssistantEnabled_valueSetToAssistant_returnsTrue() {
+        Settings.Global.putInt(
+                mContext.getContentResolver(), Settings.Global.POWER_BUTTON_LONG_PRESS, 5);
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext)).isTrue();
     }
 
     @Test
-    public void longPressBehaviourValueNotPresent_returnsDefault() {
-        when(mResources.getInteger(
-                com.android.internal.R.integer.config_longPressOnPowerBehavior))
-                .thenReturn(2);
-
-        assertThat(PowerMenuSettingsUtils.getPowerButtonSettingValue(mContext)).isEqualTo(2);
+    public void isLongPressPowerForAssistantEnabled_valueNotSetToAssistant_returnsFalse() {
+        Settings.Global.putInt(
+                mContext.getContentResolver(), Settings.Global.POWER_BUTTON_LONG_PRESS, 3);
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext)).isFalse();
     }
 
     @Test
-    public void longPressBehaviourValueSetToAssistant_isAssistEnabledReturnsTrue() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.POWER_BUTTON_LONG_PRESS, 5);
-        assertThat(PowerMenuSettingsUtils.isLongPressPowerForAssistEnabled(mContext)).isTrue();
+    public void isLongPressPowerForAssistantEnabled_valueNotSet_defaultToAssistant_returnsTrue() {
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(5);
+
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext)).isTrue();
     }
 
     @Test
-    public void longPressBehaviourValueNotSetToAssistant_isAssistEnabledReturnsFalse() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.POWER_BUTTON_LONG_PRESS, 3);
-        assertThat(PowerMenuSettingsUtils.isLongPressPowerForAssistEnabled(mContext)).isFalse();
+    public void isLongPressPowerForAssistantEnabled_valueNotSet_defaultToPowerMenu_returnsFalse() {
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(1);
+
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerForAssistantEnabled(mContext)).isFalse();
     }
 
     @Test
-    public void longPressBehaviourDefaultSetToAssistant_isAssistEnabledReturnsFalse() {
-        when(mResources.getInteger(
-                com.android.internal.R.integer.config_longPressOnPowerBehavior))
+    public void isLongPressPowerSettingAvailable_defaultToAssistant_returnsTrue() {
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(5);
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerSettingAvailable(mContext)).isTrue();
+    }
+
+    @Test
+    public void isLongPressPowerSettingAvailable_defaultToPowerMenu_returnsTrue() {
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(1);
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerSettingAvailable(mContext)).isTrue();
+    }
+
+    @Test
+    public void isLongPressPowerSettingAvailable_defaultToPowerOff_returnsFalse() {
+        // Power off is the unsupported option in long press power settings
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
                 .thenReturn(3);
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerSettingAvailable(mContext)).isFalse();
+    }
 
-        assertThat(PowerMenuSettingsUtils.isLongPressPowerForAssistEnabled(mContext)).isFalse();
+    @Test
+    public void isLongPressPowerSettingAvailable_settingDisabled_returnsFalse() {
+        // Disable the setting
+        when(mResources.getBoolean(
+                        com.android.internal.R.bool
+                                .config_longPressOnPowerForAssistantSettingAvailable))
+                .thenReturn(false);
+        when(mResources.getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior))
+                .thenReturn(1);
+
+        assertThat(PowerMenuSettingsUtils.isLongPressPowerSettingAvailable(mContext)).isFalse();
+    }
+
+    @Test
+    public void setLongPressPowerForAssistant_updatesValue() throws Exception {
+        boolean result = PowerMenuSettingsUtils.setLongPressPowerForAssistant(mContext);
+
+        assertThat(result).isTrue();
+        assertThat(
+                        Settings.Global.getInt(
+                                mContext.getContentResolver(),
+                                Settings.Global.POWER_BUTTON_LONG_PRESS))
+                .isEqualTo(5);
+    }
+
+    @Test
+    public void setLongPressPowerForAssistant_updatesKeyChordValueToPowerMenu() throws Exception {
+        PowerMenuSettingsUtils.setLongPressPowerForAssistant(mContext);
+        assertThat(
+                        Settings.Global.getInt(
+                                mContext.getContentResolver(),
+                                Settings.Global.KEY_CHORD_POWER_VOLUME_UP))
+                .isEqualTo(2);
+    }
+
+    @Test
+    public void setLongPressPowerForPowerMenu_updatesValue() throws Exception {
+        boolean result = PowerMenuSettingsUtils.setLongPressPowerForPowerMenu(mContext);
+
+        assertThat(result).isTrue();
+        assertThat(
+                        Settings.Global.getInt(
+                                mContext.getContentResolver(),
+                                Settings.Global.POWER_BUTTON_LONG_PRESS))
+                .isEqualTo(1);
+    }
+
+    @Test
+    public void setLongPressPowerForPowerMenu_updatesKeyChordValueToDefault() throws Exception {
+        when(mResources.getInteger(com.android.internal.R.integer.config_keyChordPowerVolumeUp))
+                .thenReturn(1);
+
+        PowerMenuSettingsUtils.setLongPressPowerForPowerMenu(mContext);
+
+        assertThat(
+                        Settings.Global.getInt(
+                                mContext.getContentResolver(),
+                                Settings.Global.KEY_CHORD_POWER_VOLUME_UP))
+                .isEqualTo(1);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java
index e4fc9fa..78541db 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java
@@ -31,13 +31,13 @@
 import androidx.slice.widget.SliceLiveData;
 
 import com.android.settings.R;
-import com.android.settings.fuelgauge.BatteryUsageStatsLoader;
 import com.android.settings.fuelgauge.batterytip.AppInfo;
 import com.android.settings.fuelgauge.batterytip.BatteryTipLoader;
 import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
 import com.android.settings.fuelgauge.batterytip.tips.EarlyWarningTip;
 import com.android.settings.fuelgauge.batterytip.tips.HighUsageTip;
 import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip;
+import com.android.settings.fuelgauge.batteryusage.BatteryUsageStatsLoader;
 import com.android.settings.slices.SliceBackgroundWorker;
 
 import org.junit.After;
diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
index 53e68d9..e01e023 100644
--- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
@@ -27,6 +27,7 @@
 import android.os.UserHandle;
 import android.view.View;
 import android.widget.Button;
+import android.widget.TextView;
 
 import androidx.appcompat.app.AlertDialog;
 import androidx.fragment.app.FragmentActivity;
@@ -192,6 +193,18 @@
                 .isEqualTo(application.getString(R.string.lockpattern_retry_button_text));
     }
 
+    @Test
+    public void createActivity_patternDescription_shouldBeShown() {
+        PartnerCustomizationLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
+
+        final TextView patternDescription =
+                layout.findViewById(R.id.sud_layout_subtitle);
+
+        assertThat(patternDescription.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(patternDescription.getText()).isEqualTo(
+                application.getString(R.string.lockpassword_choose_your_pattern_description));
+    }
+
     private ChooseLockPatternFragment findFragment(FragmentActivity activity) {
         return (ChooseLockPatternFragment)
                 activity.getSupportFragmentManager().findFragmentById(R.id.main_content);
diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
index 518aee9..2f24832 100644
--- a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
+++ b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
@@ -47,6 +47,7 @@
 import com.android.settings.security.SecuritySettingsFeatureProvider;
 import com.android.settings.slices.SlicesFeatureProvider;
 import com.android.settings.users.UserFeatureProvider;
+import com.android.settings.vpn2.AdvancedVpnFeatureProvider;
 import com.android.settings.wifi.WifiTrackerLibProvider;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
@@ -87,6 +88,7 @@
     public SecuritySettingsFeatureProvider securitySettingsFeatureProvider;
     public AccessibilitySearchFeatureProvider mAccessibilitySearchFeatureProvider;
     public AccessibilityMetricsFeatureProvider mAccessibilityMetricsFeatureProvider;
+    public AdvancedVpnFeatureProvider mAdvancedVpnFeatureProvider;
 
     /**
      * Call this in {@code @Before} method of the test class to use fake factory.
@@ -136,6 +138,7 @@
         securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class);
         mAccessibilitySearchFeatureProvider = mock(AccessibilitySearchFeatureProvider.class);
         mAccessibilityMetricsFeatureProvider = mock(AccessibilityMetricsFeatureProvider.class);
+        mAdvancedVpnFeatureProvider = mock(AdvancedVpnFeatureProvider.class);
     }
 
     @Override
@@ -272,4 +275,9 @@
     public AccessibilityMetricsFeatureProvider getAccessibilityMetricsFeatureProvider() {
         return mAccessibilityMetricsFeatureProvider;
     }
+
+    @Override
+    public AdvancedVpnFeatureProvider getAdvancedVpnFeatureProvider() {
+        return mAdvancedVpnFeatureProvider;
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
index ea51370..b865ea6 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
@@ -226,4 +226,32 @@
         return new UserInfo(PRIMARY_USER_ID, null, null,
                 UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_ADMIN | UserInfo.FLAG_PRIMARY);
     }
+
+    protected boolean setUserEphemeral(@UserIdInt int userId, boolean enableEphemeral) {
+        UserInfo userInfo = mUserProfileInfos.stream()
+                .filter(user -> user.id == userId)
+                .findFirst()
+                .orElse(super.getUserInfo(userId));
+
+        boolean isSuccess = false;
+        boolean isEphemeralUser =
+                        (userInfo.flags & UserInfo.FLAG_EPHEMERAL) != 0;
+        boolean isEphemeralOnCreateUser =
+                (userInfo.flags & UserInfo.FLAG_EPHEMERAL_ON_CREATE)
+                    != 0;
+        // when user is created in ephemeral mode via FLAG_EPHEMERAL
+        // its state cannot be changed.
+        // FLAG_EPHEMERAL_ON_CREATE is used to keep track of this state
+        if (!isEphemeralOnCreateUser) {
+            isSuccess = true;
+            if (isEphemeralUser != enableEphemeral) {
+                if (enableEphemeral) {
+                    userInfo.flags |= UserInfo.FLAG_EPHEMERAL;
+                } else {
+                    userInfo.flags &= ~UserInfo.FLAG_EPHEMERAL;
+                }
+            }
+        }
+        return isSuccess;
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
index bb7dd75..d1192c1 100644
--- a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
@@ -56,6 +56,7 @@
 import android.view.MenuItem;
 
 import androidx.fragment.app.FragmentActivity;
+import androidx.preference.Preference;
 import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceManager;
 import androidx.preference.PreferenceScreen;
@@ -152,6 +153,8 @@
         ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);
         ReflectionHelpers.setField(mFragment, "mAddingUser", false);
         ReflectionHelpers.setField(mFragment, "mMetricsFeatureProvider", mMetricsFeatureProvider);
+        ReflectionHelpers.setField(mFragment, "mRemoveGuestOnExitPreferenceController",
+                mock(RemoveGuestOnExitPreferenceController.class));
 
         doReturn(mUserManager).when(mActivity).getSystemService(UserManager.class);
         doReturn(mPackageManager).when(mActivity).getPackageManager();
@@ -178,6 +181,10 @@
         mFragment.mAddSupervisedUser = mAddSupervisedUserPreference;
         mFragment.mAddGuest = mAddGuestPreference;
         mFragment.mUserListCategory = mock(PreferenceCategory.class);
+        mFragment.mGuestUserCategory = mock(PreferenceCategory.class);
+        mFragment.mGuestCategory = mock(PreferenceCategory.class);
+        mFragment.mGuestResetPreference = mock(Preference.class);
+        mFragment.mGuestExitPreference = mock(Preference.class);
     }
 
     @After
@@ -219,7 +226,7 @@
     @Test
     public void testExitGuest_ShouldLogAction() {
         mUserCapabilities.mIsGuest = true;
-        mFragment.exitGuest();
+        mFragment.clearAndExitGuest();
         verify(mMetricsFeatureProvider).action(any(),
                 eq(SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED));
     }
@@ -227,7 +234,7 @@
     @Test
     public void testExitGuestWhenNotGuest_ShouldNotLogAction() {
         mUserCapabilities.mIsGuest = false;
-        mFragment.exitGuest();
+        mFragment.clearAndExitGuest();
         verify(mMetricsFeatureProvider, never()).action(any(),
                 eq(SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED));
     }
@@ -323,7 +330,6 @@
 
         verify(mAddGuestPreference).setVisible(true);
         verify(mAddGuestPreference).setEnabled(true);
-        verify(mAddGuestPreference).setIcon(any(Drawable.class));
         verify(mAddGuestPreference).setSelectable(true);
     }
 
@@ -371,7 +377,6 @@
 
         verify(mAddGuestPreference).setVisible(true);
         verify(mAddGuestPreference).setEnabled(false);
-        verify(mAddGuestPreference).setIcon(any(Drawable.class));
         verify(mAddGuestPreference).setSelectable(true);
     }
 
@@ -473,9 +478,9 @@
         mFragment.updateUserList();
 
         ArgumentCaptor<UserPreference> captor = ArgumentCaptor.forClass(UserPreference.class);
-        verify(mFragment.mUserListCategory, times(2))
+        verify(mFragment.mGuestUserCategory, times(1))
                 .addPreference(captor.capture());
-        UserPreference guestPref = captor.getAllValues().get(1);
+        UserPreference guestPref = captor.getAllValues().get(0);
         assertThat(guestPref.getUserId()).isEqualTo(INACTIVE_GUEST_USER_ID);
         assertThat(guestPref.getTitle()).isEqualTo("Guest");
         assertThat(guestPref.getIcon()).isNotNull();
@@ -595,9 +600,9 @@
         mFragment.updateUserList();
 
         ArgumentCaptor<UserPreference> captor = ArgumentCaptor.forClass(UserPreference.class);
-        verify(mFragment.mUserListCategory, times(2))
+        verify(mFragment.mGuestUserCategory, times(1))
                 .addPreference(captor.capture());
-        UserPreference userPref = captor.getAllValues().get(1);
+        UserPreference userPref = captor.getAllValues().get(0);
         assertThat(userPref.getUserId()).isEqualTo(INACTIVE_GUEST_USER_ID);
         assertThat(userPref.getSummary()).isNull();
     }
diff --git a/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
index 89df035..5e3d715 100644
--- a/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
@@ -1,41 +1,180 @@
 package com.android.settings.wifi;
 
+import static com.android.settings.wifi.ConfigureWifiSettings.KEY_INSTALL_CREDENTIALS;
+
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
+import android.annotation.Nullable;
 import android.content.Context;
+import android.net.wifi.WifiManager;
+import android.os.Bundle;
+import android.os.UserManager;
+import android.view.View;
+import android.widget.TextView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.testutils.XmlTestUtils;
+import com.android.settingslib.core.AbstractPreferenceController;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
 import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
 
 import java.util.List;
 
 @RunWith(RobolectricTestRunner.class)
 public class ConfigureWifiSettingsTest {
 
-    private Context mContext;
+    @Rule
+    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+    @Spy
+    Context mContext = ApplicationProvider.getApplicationContext();
+    @Mock
+    UserManager mUserManager;
+    @Mock
+    WifiManager mWifiManager;
+    @Mock
+    FragmentActivity mActivity;
+    @Mock
+    WifiWakeupPreferenceController mWifiWakeupPreferenceController;
+    @Mock
+    Preference mInstallCredentialsPref;
+    @Mock
+    PreferenceScreen mPreferenceScreen;
+    @Mock
+    TextView mEmptyView;
+
+    TestConfigureWifiSettings mSettings;
 
     @Before
     public void setUp() {
-        mContext = spy(RuntimeEnvironment.application);
+        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
+        when(mUserManager.isGuestUser()).thenReturn(false);
+        when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
+
+        mSettings = spy(new TestConfigureWifiSettings());
+        when(mSettings.getContext()).thenReturn(mContext);
+        when(mSettings.getActivity()).thenReturn(mActivity);
+        when(mSettings.use(WifiWakeupPreferenceController.class))
+                .thenReturn(mWifiWakeupPreferenceController);
+        when(mSettings.findPreference(KEY_INSTALL_CREDENTIALS)).thenReturn(mInstallCredentialsPref);
+    }
+
+    @Test
+    public void onAttach_isNotGuestUser_setupController() {
+        when(mUserManager.isGuestUser()).thenReturn(false);
+
+        mSettings.onAttach(mContext);
+
+        verify(mWifiWakeupPreferenceController).setFragment(any());
+    }
+
+    @Test
+    public void onAttach_isGuestUser_doNotSetupController() {
+        when(mUserManager.isGuestUser()).thenReturn(true);
+
+        mSettings.onAttach(mContext);
+
+        verify(mWifiWakeupPreferenceController, never()).setFragment(any());
+    }
+
+    @Test
+    @Config(shadows = ShadowDashboardFragment.class)
+    public void onCreate_isNotGuestUser_setupPreference() {
+        when(mUserManager.isGuestUser()).thenReturn(false);
+
+        mSettings.onCreate(null);
+
+        verify(mInstallCredentialsPref).setOnPreferenceClickListener(any());
+    }
+
+    @Test
+    @Config(shadows = ShadowDashboardFragment.class)
+    public void onCreate_isGuestUser_doNotSetupPreference() {
+        when(mUserManager.isGuestUser()).thenReturn(true);
+
+        mSettings.onCreate(null);
+
+        verify(mInstallCredentialsPref, never()).setOnPreferenceClickListener(any());
+    }
+
+    @Test
+    @Config(shadows = ShadowDashboardFragment.class)
+    public void onViewCreated_isNotGuestUser_doNotRestrictUi() {
+        when(mUserManager.isGuestUser()).thenReturn(false);
+        when(mActivity.findViewById(android.R.id.empty)).thenReturn(mEmptyView);
+        doReturn(mPreferenceScreen).when(mSettings).getPreferenceScreen();
+
+        mSettings.onViewCreated(mock(View.class), null);
+
+        verify(mEmptyView, never()).setVisibility(View.VISIBLE);
+        verify(mPreferenceScreen, never()).removeAll();
+    }
+
+    @Test
+    @Config(shadows = ShadowDashboardFragment.class)
+    public void onViewCreated_isGuestUser_restrictUi() {
+        when(mUserManager.isGuestUser()).thenReturn(true);
+        when(mActivity.findViewById(android.R.id.empty)).thenReturn(mEmptyView);
+        doReturn(mPreferenceScreen).when(mSettings).getPreferenceScreen();
+
+        mSettings.onViewCreated(mock(View.class), null);
+
+        verify(mEmptyView).setVisibility(View.VISIBLE);
+        verify(mPreferenceScreen).removeAll();
     }
 
     @Test
     @Config(qualifiers = "mcc999")
-    public void testNonIndexableKeys_ifPageDisabled_shouldNotIndexResource() {
+    public void getNonIndexableKeys_ifPageDisabled_shouldNotIndexResource() {
         final List<String> niks =
             ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
-        final int xmlId = new ConfigureWifiSettings().getPreferenceScreenResId();
 
+        final int xmlId = mSettings.getPreferenceScreenResId();
         final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(mContext, xmlId);
         assertThat(keys).isNotNull();
         assertThat(niks).containsAtLeastElementsIn(keys);
     }
+
+    public static class TestConfigureWifiSettings extends ConfigureWifiSettings {
+        @Override
+        public <T extends AbstractPreferenceController> T use(Class<T> clazz) {
+            return super.use(clazz);
+        }
+    }
+
+    @Implements(DashboardFragment.class)
+    public static class ShadowDashboardFragment {
+        @Implementation
+        public void onCreate(Bundle icicle) {
+            // do nothing
+        }
+
+        @Implementation
+        public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+            // do nothing
+        }
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java b/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
index 4ceb1e3..c9cc02e 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
@@ -18,6 +18,7 @@
 
 import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
 import static android.Manifest.permission.ACCESS_FINE_LOCATION;
+import static android.os.UserManager.DISALLOW_CONFIG_WIFI;
 
 import static com.android.settings.wifi.WifiDialogActivity.REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER;
 import static com.android.settings.wifi.WifiDialogActivity.RESULT_CONNECTED;
@@ -32,10 +33,12 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.app.KeyguardManager;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
+import android.os.UserManager;
 
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.wifi.AccessPoint;
@@ -58,6 +61,8 @@
     static final int REQUEST_CODE = REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER;
 
     @Mock
+    UserManager mUserManager;
+    @Mock
     PackageManager mPackageManager;
     @Mock
     WifiManager mWifiManager;
@@ -77,6 +82,8 @@
     Intent mResultData;
     @Mock
     WifiConfigController mController;
+    @Mock
+    KeyguardManager mKeyguardManager;
 
     WifiDialogActivity mActivity;
 
@@ -92,7 +99,9 @@
         FakeFeatureFactory.setupForTest();
 
         mActivity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
+        when(mActivity.getSystemService(UserManager.class)).thenReturn(mUserManager);
         when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
+        when(mActivity.getSystemService(KeyguardManager.class)).thenReturn(mKeyguardManager);
     }
 
     @Test
@@ -212,6 +221,20 @@
     }
 
     @Test
+    public void isConfigWifiAllowed_hasNoUserRestriction_returnTrue() {
+        when(mUserManager.hasUserRestriction(DISALLOW_CONFIG_WIFI)).thenReturn(false);
+
+        assertThat(mActivity.isConfigWifiAllowed()).isTrue();
+    }
+
+    @Test
+    public void isConfigWifiAllowed_hasUserRestriction_returnFalse() {
+        when(mUserManager.hasUserRestriction(DISALLOW_CONFIG_WIFI)).thenReturn(true);
+
+        assertThat(mActivity.isConfigWifiAllowed()).isFalse();
+    }
+
+    @Test
     public void hasPermissionForResult_noCallingPackage_returnFalse() {
         when(mActivity.getCallingPackage()).thenReturn(null);
 
@@ -274,4 +297,35 @@
 
         assertThat(result).isTrue();
     }
+
+    @Test
+    public void dismissDialog_hasDialog_dialogDismiss() {
+        mActivity.mDialog = mWifiDialog;
+        mActivity.mDialog2 = mWifiDialog2;
+
+        mActivity.dismissDialog();
+
+        verify(mWifiDialog).dismiss();
+        verify(mWifiDialog2).dismiss();
+    }
+
+    @Test
+    public void onKeyguardLockedStateChanged_keyguardIsNotLocked_doNotDismissDialog() {
+        WifiDialogActivity.LockScreenMonitor lockScreenMonitor =
+                new WifiDialogActivity.LockScreenMonitor(mActivity);
+
+        lockScreenMonitor.onKeyguardLockedStateChanged(false /* isKeyguardLocked */);
+
+        verify(mActivity, never()).dismissDialog();
+    }
+
+    @Test
+    public void onKeyguardLockedStateChanged_keyguardIsLocked_dismissDialog() {
+        WifiDialogActivity.LockScreenMonitor lockScreenMonitor =
+                new WifiDialogActivity.LockScreenMonitor(mActivity);
+
+        lockScreenMonitor.onKeyguardLockedStateChanged(true /* isKeyguardLocked */);
+
+        verify(mActivity).dismissDialog();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiScanModeActivityTest.java b/tests/robotests/src/com/android/settings/wifi/WifiScanModeActivityTest.java
index 1e3afdb..5937997 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiScanModeActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiScanModeActivityTest.java
@@ -18,11 +18,17 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.content.Context;
+import android.os.UserManager;
 import android.text.TextUtils;
 
+import androidx.test.core.app.ApplicationProvider;
+
 import com.android.settings.testutils.shadow.ShadowUtils;
 import com.android.settingslib.wifi.WifiPermissionChecker;
 
@@ -32,6 +38,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.Spy;
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 import org.robolectric.Robolectric;
@@ -47,6 +54,10 @@
 
     @Rule
     public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+    @Spy
+    Context mContext = ApplicationProvider.getApplicationContext();
+    @Mock
+    UserManager mUserManager;
     @Mock
     WifiPermissionChecker mWifiPermissionChecker;
 
@@ -54,7 +65,11 @@
 
     @Before
     public void setUp() {
+        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
+        when(mUserManager.isGuestUser()).thenReturn(false);
+
         mActivity = spy(Robolectric.setupActivity(WifiScanModeActivity.class));
+        when(mActivity.getApplicationContext()).thenReturn(mContext);
         mActivity.mWifiPermissionChecker = mWifiPermissionChecker;
     }
 
@@ -87,4 +102,22 @@
 
         assertThat(mActivity.mApp).isEqualTo(APP_LABEL);
     }
+
+    @Test
+    public void createDialog_isNotGuestUser_shouldNotFinishDialog() {
+        when(mUserManager.isGuestUser()).thenReturn(false);
+
+        mActivity.createDialog();
+
+        verify(mActivity, never()).finish();
+    }
+
+    @Test
+    public void createDialog_isGuestUser_shouldFinishDialog() {
+        when(mUserManager.isGuestUser()).thenReturn(true);
+
+        mActivity.createDialog();
+
+        verify(mActivity).finish();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivityTest.java b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivityTest.java
index 8391b8a..dccd023 100644
--- a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksActivityTest.java
@@ -18,24 +18,38 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import android.annotation.Nullable;
-import android.app.IActivityManager;
-import android.os.RemoteException;
-
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
+import android.annotation.Nullable;
+import android.app.IActivityManager;
+import android.content.Context;
+import android.os.RemoteException;
+import android.os.UserManager;
+
+import androidx.test.core.app.ApplicationProvider;
+
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 
 @RunWith(RobolectricTestRunner.class)
 public class AddAppNetworksActivityTest {
 
+    @Rule
+    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+    @Spy
+    Context mContext = ApplicationProvider.getApplicationContext();
+    @Mock
+    UserManager mUserManager;
     @Mock
     private IActivityManager mIActivityManager;
 
@@ -43,10 +57,13 @@
 
     @Before
     public void setUp() {
-        MockitoAnnotations.initMocks(this);
+        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
+        when(mUserManager.isGuestUser()).thenReturn(false);
 
-        mActivity = Robolectric.buildActivity(FakeAddAppNetworksActivity.class).create().get();
+        mActivity = spy(Robolectric.buildActivity(FakeAddAppNetworksActivity.class).create().get());
+        when(mActivity.getApplicationContext()).thenReturn(mContext);
         mActivity.mActivityManager = mIActivityManager;
+        fakeCallingPackage("com.android.settings");
     }
 
     @Test
@@ -84,6 +101,20 @@
         assertThat(mActivity.showAddNetworksFragment()).isFalse();
     }
 
+    @Test
+    public void showAddNetworksFragment_isGuestUser_returnFalse() {
+        when(mUserManager.isGuestUser()).thenReturn(true);
+
+        assertThat(mActivity.showAddNetworksFragment()).isFalse();
+    }
+
+    @Test
+    public void showAddNetworksFragment_notGuestUser_returnTrue() {
+        when(mUserManager.isGuestUser()).thenReturn(false);
+
+        assertThat(mActivity.showAddNetworksFragment()).isTrue();
+    }
+
     private void fakeCallingPackage(@Nullable String packageName) {
         try {
             when(mIActivityManager.getLaunchedFromPackage(any())).thenReturn(packageName);
diff --git a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
index 24d4c47..8248789 100644
--- a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
@@ -455,6 +455,36 @@
                 AddAppNetworksFragment.MESSAGE_SHOW_SAVE_FAILED)).isTrue();
     }
 
+    @Test
+    public void uiConfigurationItem_putCrToDisplayedSsid_shouldRemoveCr() {
+        String testSsid = "\r" + FAKE_NEW_WPA_SSID + "\r";
+
+        AddAppNetworksFragment.UiConfigurationItem item =
+                new AddAppNetworksFragment.UiConfigurationItem(testSsid, null, 0, 0);
+
+        assertThat(item.mDisplayedSsid).isEqualTo(FAKE_NEW_WPA_SSID);
+    }
+
+    @Test
+    public void uiConfigurationItem_putLfToDisplayedSsid_shouldRemoveLf() {
+        String testSsid = "\n" + FAKE_NEW_WPA_SSID + "\n";
+
+        AddAppNetworksFragment.UiConfigurationItem item =
+                new AddAppNetworksFragment.UiConfigurationItem(testSsid, null, 0, 0);
+
+        assertThat(item.mDisplayedSsid).isEqualTo(FAKE_NEW_WPA_SSID);
+    }
+
+    @Test
+    public void uiConfigurationItem_putCrLfToDisplayedSsid_shouldRemoveCrLf() {
+        String testSsid = "\r\n" + FAKE_NEW_WPA_SSID + "\r\n";
+
+        AddAppNetworksFragment.UiConfigurationItem item =
+                new AddAppNetworksFragment.UiConfigurationItem(testSsid, null, 0, 0);
+
+        assertThat(item.mDisplayedSsid).isEqualTo(FAKE_NEW_WPA_SSID);
+    }
+
     private void setUpOneScannedNetworkWithScanedLevel4() {
         final ArrayList list = new ArrayList<>();
         list.add(mWifiEntry);
diff --git a/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java b/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java
index 0c9bf37..d8605de 100644
--- a/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java
@@ -16,16 +16,78 @@
 
 package com.android.settings.wifi.dpp;
 
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserManager;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 
 @RunWith(RobolectricTestRunner.class)
 public class WifiDppConfiguratorActivityTest {
+
+    @Rule
+    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+    @Spy
+    Context mContext = ApplicationProvider.getApplicationContext();
+    @Mock
+    UserManager mUserManager;
+
+    WifiDppConfiguratorActivity mActivity;
+    Intent mIntent;
+
+    @Before
+    public void setUp() {
+        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
+        when(mUserManager.isGuestUser()).thenReturn(false);
+
+        mIntent = new Intent(WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_SCANNER);
+        mIntent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest");
+        mIntent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WPA");
+        mIntent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "\\012345678,");
+
+        mActivity = spy(Robolectric.setupActivity(WifiDppConfiguratorActivity.class));
+        when(mActivity.getApplicationContext()).thenReturn(mContext);
+    }
+
     @Test
     public void launchActivity_noIntentAction_shouldNotFatalException() {
         WifiDppConfiguratorActivity wifiDppConfiguratorActivity =
                 Robolectric.setupActivity(WifiDppConfiguratorActivity.class);
     }
+
+    @Test
+    public void handleIntent_isGuestUser_shouldFinish() {
+        when(mUserManager.isGuestUser()).thenReturn(true);
+
+        mActivity.handleIntent(mIntent);
+
+        verify(mActivity).finish();
+    }
+
+    @Test
+    public void handleIntent_notGuestUser_shouldNotFinish() {
+        when(mUserManager.isGuestUser()).thenReturn(false);
+        doNothing().when(mActivity).showQrCodeScannerFragment();
+
+        mActivity.handleIntent(mIntent);
+
+        verify(mActivity, never()).finish();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
index 8e42fcd..33302ce 100644
--- a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
@@ -33,6 +33,7 @@
 import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.net.wifi.WifiManager;
+import android.os.UserManager;
 
 import androidx.slice.Slice;
 import androidx.slice.SliceItem;
@@ -84,6 +85,8 @@
     @Spy
     Context mContext = ApplicationProvider.getApplicationContext();
     @Mock
+    private UserManager mUserManager;
+    @Mock
     private WifiManager mWifiManager;
     @Mock
     private PackageManager mPackageManager;
@@ -98,6 +101,8 @@
     @Before
     public void setUp() {
         doReturn(mResolver).when(mContext).getContentResolver();
+        doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
+        doReturn(false).when(mUserManager).isGuestUser();
         doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class);
         doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState();
         when(mContext.getPackageManager()).thenReturn(mPackageManager);
@@ -114,6 +119,33 @@
     }
 
     @Test
+    public void getWifiSlice_isGuestUser_shouldReturnNoToggle() {
+        doReturn(true).when(mUserManager).isGuestUser();
+
+        final Slice wifiSlice = mWifiSlice.getSlice();
+        final SliceMetadata metadata = SliceMetadata.from(mContext, wifiSlice);
+        final List<SliceAction> toggles = metadata.getToggles();
+        assertThat(toggles).hasSize(0);
+
+        final int rows = SliceQuery.findAll(wifiSlice, FORMAT_SLICE, HINT_LIST_ITEM,
+                null /* nonHints */).size();
+        // Title row
+        assertThat(rows).isEqualTo(1);
+    }
+
+    @Test
+    public void getWifiSlice_isNotGuestUser_shouldHaveTitleAndToggle() {
+        doReturn(false).when(mUserManager).isGuestUser();
+
+        final Slice wifiSlice = mWifiSlice.getSlice();
+        assertThat(wifiSlice).isNotNull();
+
+        final SliceMetadata metadata = SliceMetadata.from(mContext, wifiSlice);
+        final List<SliceAction> toggles = metadata.getToggles();
+        assertThat(toggles).hasSize(1);
+    }
+
+    @Test
     public void getWifiSlice_fromSIPackage_shouldHaveTitleAndToggle() {
         when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{mSIPackageName});
         ShadowWifiSlice.setWifiPermissible(false);
diff --git a/tests/unit/src/com/android/settings/bluetooth/QrCodeScanModeActivityTest.java b/tests/unit/src/com/android/settings/bluetooth/QrCodeScanModeActivityTest.java
new file mode 100644
index 0000000..56764e3
--- /dev/null
+++ b/tests/unit/src/com/android/settings/bluetooth/QrCodeScanModeActivityTest.java
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.bluetooth;
+
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Intent;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.android.settingslib.bluetooth.BluetoothBroadcastUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+@RunWith(AndroidJUnit4.class)
+public class QrCodeScanModeActivityTest {
+
+    @Mock
+    private Intent mIntent;
+    private QrCodeScanModeActivity mActivity;
+
+    @Before
+    public void setUp() {
+        mIntent = new Intent(BluetoothBroadcastUtils.ACTION_BLUETOOTH_LE_AUDIO_QR_CODE_SCANNER);
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+            try {
+                mActivity =
+                        spy((QrCodeScanModeActivity) InstrumentationRegistry
+                                .getInstrumentation().newActivity(
+                                        getClass().getClassLoader(),
+                                        QrCodeScanModeActivity.class.getName(), mIntent));
+            } catch (Exception e) {
+                throw new RuntimeException(e); // nothing to do
+            }
+        });
+    }
+
+    @Test
+    public void handleIntent_noIntentAction_shouldFinish() {
+        mIntent = new Intent();
+        mActivity.handleIntent(mIntent);
+        verify(mActivity).finish();
+    }
+
+    @Test
+    public void handleIntent_hasIntentExtra_shouldShowFragment() {
+        doNothing().when(mActivity).showQrCodeScannerFragment(mIntent);
+        mActivity.handleIntent(mIntent);
+        verify(mActivity).showQrCodeScannerFragment(mIntent);
+    }
+
+}
diff --git a/tests/unit/src/com/android/settings/display/ScreenSaverPreferenceControllerTest.java b/tests/unit/src/com/android/settings/display/ScreenSaverPreferenceControllerTest.java
new file mode 100644
index 0000000..3319e2a
--- /dev/null
+++ b/tests/unit/src/com/android/settings/display/ScreenSaverPreferenceControllerTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.display;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.UserManager;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+
+@RunWith(AndroidJUnit4.class)
+public class ScreenSaverPreferenceControllerTest {
+    @Spy
+    private final Context mContext = ApplicationProvider.getApplicationContext();
+    @Spy
+    private final Resources mResources = mContext.getResources();
+    @Mock
+    private UserManager mUserManager;
+
+    private ScreenSaverPreferenceController mController;
+
+    @Before
+    public void setup() {
+        MockitoAnnotations.initMocks(this);
+
+        mController = new ScreenSaverPreferenceController(mContext);
+
+        when(mContext.getResources()).thenReturn(mResources);
+        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
+    }
+
+    @Test
+    public void isAvailable_dreamsEnabledForAllUsers_shouldBeTrueForSystemUser() {
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_dreamsSupported)).thenReturn(true);
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_dreamsOnlyEnabledForSystemUser))
+                .thenReturn(false);
+        when(mUserManager.isSystemUser()).thenReturn(true);
+        assertTrue(mController.isAvailable());
+    }
+
+    @Test
+    public void isAvailable_dreamsEnabledForAllUsers_shouldBeTrueForNonSystemUser() {
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_dreamsSupported)).thenReturn(true);
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_dreamsOnlyEnabledForSystemUser))
+                .thenReturn(false);
+        when(mUserManager.isSystemUser()).thenReturn(false);
+        assertTrue(mController.isAvailable());
+    }
+
+    @Test
+    public void isAvailable_dreamsDisabled_shouldBeFalseForSystemUser() {
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_dreamsSupported)).thenReturn(false);
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_dreamsOnlyEnabledForSystemUser))
+                .thenReturn(false);
+        when(mUserManager.isSystemUser()).thenReturn(true);
+        assertFalse(mController.isAvailable());
+    }
+
+    @Test
+    public void isAvailable_dreamsOnlyEnabledForSystemUser_shouldBeTrueForSystemUser() {
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_dreamsSupported)).thenReturn(true);
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_dreamsOnlyEnabledForSystemUser))
+                .thenReturn(true);
+        when(mUserManager.isSystemUser()).thenReturn(true);
+        assertTrue(mController.isAvailable());
+    }
+
+    @Test
+    public void isAvailable_dreamsOnlyEnabledForSystemUser_shouldBeFalseForNonSystemUser() {
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_dreamsSupported)).thenReturn(true);
+        when(mResources.getBoolean(
+                com.android.internal.R.bool.config_dreamsOnlyEnabledForSystemUser))
+                .thenReturn(true);
+        when(mUserManager.isSystemUser()).thenReturn(false);
+        assertFalse(mController.isAvailable());
+    }
+}
diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java
index 66247d3..345631c 100644
--- a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java
+++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java
@@ -42,6 +42,7 @@
 import android.net.ConnectivityManager;
 import android.net.Uri;
 import android.net.wifi.WifiManager;
+import android.os.UserManager;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 
@@ -87,6 +88,8 @@
     private MockNetworkProviderWorker mMockNetworkProviderWorker;
 
     @Mock
+    private UserManager mUserManager;
+    @Mock
     private SubscriptionManager mSubscriptionManager;
     @Mock
     private ConnectivityManager mConnectivityManager;
@@ -122,6 +125,8 @@
                         any(), any(), any(), any(), any(), anyLong(), anyLong(), any()))
                 .thenReturn(mWifiPickerTracker);
 
+        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
+        when(mUserManager.isGuestUser()).thenReturn(false);
         when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
         when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
         when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
@@ -164,6 +169,17 @@
 
     @Test
     @UiThreadTest
+    public void getSlice_isGuestUser_shouldNotAddRow() {
+        when(mUserManager.isGuestUser()).thenReturn(true);
+
+        final Slice slice = mMockProviderModelSlice.getSlice();
+
+        assertThat(slice).isNotNull();
+        verify(mListBuilder, never()).addRow(any());
+    }
+
+    @Test
+    @UiThreadTest
     public void getSlice_noWifiAndHasCarrierNoData_oneCarrier() {
         mWifiList.clear();
         mMockNetworkProviderWorker.updateSelfResults(null);
@@ -320,6 +336,21 @@
     }
 
     @Test
+    public void getBackgroundWorkerClass_isGuestUser_returnNull() {
+        when(mUserManager.isGuestUser()).thenReturn(true);
+
+        assertThat(mMockProviderModelSlice.getBackgroundWorkerClass()).isNull();
+    }
+
+    @Test
+    public void getBackgroundWorkerClass_notGuestUser_returnWorkerClass() {
+        when(mUserManager.isGuestUser()).thenReturn(false);
+
+        assertThat(mMockProviderModelSlice.getBackgroundWorkerClass())
+                .isEqualTo(NetworkProviderWorker.class);
+    }
+
+    @Test
     public void providerModelSlice_hasCorrectUri() {
         assertThat(mMockProviderModelSlice.getUri()).isEqualTo(PROVIDER_MODEL_SLICE_URI);
     }
diff --git a/tests/unit/src/com/android/settings/safetycenter/LockScreenSafetySourceTest.java b/tests/unit/src/com/android/settings/safetycenter/LockScreenSafetySourceTest.java
index e7ce002..9dc39da 100644
--- a/tests/unit/src/com/android/settings/safetycenter/LockScreenSafetySourceTest.java
+++ b/tests/unit/src/com/android/settings/safetycenter/LockScreenSafetySourceTest.java
@@ -55,8 +55,10 @@
 public class LockScreenSafetySourceTest {
 
     private static final String SUMMARY = "summary";
-    private static final String FAKE_ACTION_CHOOSE_LOCK_GENERIC_FRAGMENT = "choose_lock_generic";
-    private static final String FAKE_ACTION_SCREEN_LOCK_SETTINGS = "screen_lock_settings";
+    private static final String FAKE_ACTION_OPEN_SUB_SETTING = "open_sub_setting";
+    private static final String EXTRA_DESTINATION = "destination";
+    private static final String FAKE_CHOOSE_LOCK_GENERIC_FRAGMENT = "choose_lock_generic";
+    private static final String FAKE_SCREEN_LOCK_SETTINGS = "screen_lock_settings";
     private static final SafetyEvent EVENT_SOURCE_STATE_CHANGED =
             new SafetyEvent.Builder(SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build();
 
@@ -157,7 +159,10 @@
                 .isEqualTo(SUMMARY);
         assertThat(safetySourceStatus.getPendingIntent().getIntent()).isNotNull();
         assertThat(safetySourceStatus.getPendingIntent().getIntent().getAction())
-                .isEqualTo(FAKE_ACTION_CHOOSE_LOCK_GENERIC_FRAGMENT);
+                .isEqualTo(FAKE_ACTION_OPEN_SUB_SETTING);
+        assertThat(
+                safetySourceStatus.getPendingIntent().getIntent().getStringExtra(EXTRA_DESTINATION))
+                .isEqualTo(FAKE_CHOOSE_LOCK_GENERIC_FRAGMENT);
     }
 
     @Test
@@ -300,7 +305,9 @@
                 ResourcesUtils.getResourcesString(mApplicationContext,
                         "no_screen_lock_issue_action_label"));
         assertThat(action.getPendingIntent().getIntent().getAction())
-                .isEqualTo(FAKE_ACTION_CHOOSE_LOCK_GENERIC_FRAGMENT);
+                .isEqualTo(FAKE_ACTION_OPEN_SUB_SETTING);
+        assertThat(action.getPendingIntent().getIntent().getStringExtra(EXTRA_DESTINATION))
+                .isEqualTo(FAKE_CHOOSE_LOCK_GENERIC_FRAGMENT);
     }
 
     @Test
@@ -383,9 +390,6 @@
     public void setSafetySourceData_whenShouldShowGearMenu_setGearMenuActionIcon() {
         whenScreenLockIsEnabled();
         when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
-        final Intent launchScreenLockSettings = new Intent(FAKE_ACTION_SCREEN_LOCK_SETTINGS);
-        when(mScreenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent(anyInt()))
-                .thenReturn(launchScreenLockSettings);
         when(mScreenLockPreferenceDetailsUtils.shouldShowGearMenu()).thenReturn(true);
 
         LockScreenSafetySource.setSafetySourceData(mApplicationContext,
@@ -399,7 +403,10 @@
 
         assertThat(iconAction.getIconType()).isEqualTo(IconAction.ICON_TYPE_GEAR);
         assertThat(iconAction.getPendingIntent().getIntent().getAction())
-                .isEqualTo(FAKE_ACTION_SCREEN_LOCK_SETTINGS);
+                .isEqualTo(FAKE_ACTION_OPEN_SUB_SETTING);
+        assertThat(
+                iconAction.getPendingIntent().getIntent().getStringExtra(EXTRA_DESTINATION))
+                .isEqualTo(FAKE_SCREEN_LOCK_SETTINGS);
     }
 
     @Test
@@ -448,9 +455,15 @@
         when(mScreenLockPreferenceDetailsUtils.isAvailable()).thenReturn(true);
         when(mScreenLockPreferenceDetailsUtils.getSummary(anyInt())).thenReturn(SUMMARY);
 
-        Intent launchChooseLockGenericFragment = new Intent(
-                FAKE_ACTION_CHOOSE_LOCK_GENERIC_FRAGMENT);
+        Intent launchChooseLockGenericFragment = new Intent(FAKE_ACTION_OPEN_SUB_SETTING);
+        launchChooseLockGenericFragment.putExtra(EXTRA_DESTINATION,
+                FAKE_CHOOSE_LOCK_GENERIC_FRAGMENT);
         when(mScreenLockPreferenceDetailsUtils.getLaunchChooseLockGenericFragmentIntent(anyInt()))
                 .thenReturn(launchChooseLockGenericFragment);
+
+        Intent launchScreenLockSettings = new Intent(FAKE_ACTION_OPEN_SUB_SETTING);
+        launchScreenLockSettings.putExtra(EXTRA_DESTINATION, FAKE_SCREEN_LOCK_SETTINGS);
+        when(mScreenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent(anyInt()))
+                .thenReturn(launchScreenLockSettings);
     }
 }
diff --git a/tests/unit/src/com/android/settings/search/CustomSiteMapRegistryTest.java b/tests/unit/src/com/android/settings/search/CustomSiteMapRegistryTest.java
index 5eb3b33..a3090c6 100644
--- a/tests/unit/src/com/android/settings/search/CustomSiteMapRegistryTest.java
+++ b/tests/unit/src/com/android/settings/search/CustomSiteMapRegistryTest.java
@@ -23,8 +23,8 @@
 import com.android.settings.backup.UserBackupSettingsActivity;
 import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
 import com.android.settings.connecteddevice.usb.UsbDetailsFragment;
-import com.android.settings.fuelgauge.PowerUsageAdvanced;
-import com.android.settings.fuelgauge.PowerUsageSummary;
+import com.android.settings.fuelgauge.batteryusage.PowerUsageAdvanced;
+import com.android.settings.fuelgauge.batteryusage.PowerUsageSummary;
 import com.android.settings.gestures.GestureNavigationSettingsFragment;
 import com.android.settings.gestures.SystemNavigationGestureSettings;
 import com.android.settings.location.LocationSettings;
diff --git a/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java
index 717de79..f565075 100644
--- a/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java
+++ b/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java
@@ -45,6 +45,7 @@
 import com.android.settings.security.SecuritySettingsFeatureProvider;
 import com.android.settings.slices.SlicesFeatureProvider;
 import com.android.settings.users.UserFeatureProvider;
+import com.android.settings.vpn2.AdvancedVpnFeatureProvider;
 import com.android.settings.wifi.WifiTrackerLibProvider;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
@@ -82,6 +83,7 @@
     public SecuritySettingsFeatureProvider securitySettingsFeatureProvider;
     public AccessibilitySearchFeatureProvider mAccessibilitySearchFeatureProvider;
     public AccessibilityMetricsFeatureProvider mAccessibilityMetricsFeatureProvider;
+    public AdvancedVpnFeatureProvider mAdvancedVpnFeatureProvider;
 
     /**
      * Call this in {@code @Before} method of the test class to use fake factory.
@@ -122,6 +124,7 @@
         securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class);
         mAccessibilitySearchFeatureProvider = mock(AccessibilitySearchFeatureProvider.class);
         mAccessibilityMetricsFeatureProvider = mock(AccessibilityMetricsFeatureProvider.class);
+        mAdvancedVpnFeatureProvider = mock(AdvancedVpnFeatureProvider.class);
     }
 
     @Override
@@ -258,4 +261,9 @@
     public AccessibilityMetricsFeatureProvider getAccessibilityMetricsFeatureProvider() {
         return mAccessibilityMetricsFeatureProvider;
     }
+
+    @Override
+    public AdvancedVpnFeatureProvider getAdvancedVpnFeatureProvider() {
+        return mAdvancedVpnFeatureProvider;
+    }
 }
diff --git a/tests/unit/src/com/android/settings/vpn2/AppManagementFragmentTest.java b/tests/unit/src/com/android/settings/vpn2/AppManagementFragmentTest.java
new file mode 100644
index 0000000..80bb393
--- /dev/null
+++ b/tests/unit/src/com/android/settings/vpn2/AppManagementFragmentTest.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.vpn2;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.os.Looper;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.RestrictedPreference;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+
+@RunWith(AndroidJUnit4.class)
+public class AppManagementFragmentTest {
+    private static final String FAKE_PACKAGE_NAME = "com.fake.package.name";
+    private static final String ADVANCED_VPN_GROUP_PACKAGE_NAME = "com.advanced.package.name";
+
+    @Rule
+    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+
+    private AppManagementFragment mFragment;
+    private Context mContext;
+    private FakeFeatureFactory mFakeFeatureFactory;
+    private RestrictedPreference mPreferenceForget;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+
+        mFragment = spy(new AppManagementFragment());
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mPreferenceForget = new RestrictedPreference(mContext);
+
+        mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
+        mFragment.init(ADVANCED_VPN_GROUP_PACKAGE_NAME,
+                mFakeFeatureFactory.getAdvancedVpnFeatureProvider(), mPreferenceForget);
+        when(mFakeFeatureFactory.mAdvancedVpnFeatureProvider.getAdvancedVpnPackageName())
+                .thenReturn(ADVANCED_VPN_GROUP_PACKAGE_NAME);
+        when(mFakeFeatureFactory.mAdvancedVpnFeatureProvider.isAdvancedVpnSupported(any()))
+                .thenReturn(true);
+    }
+
+    @Test
+    public void updateRestrictedViews_isAdvancedVpn_hidesForgetPreference() {
+        when(mFakeFeatureFactory.mAdvancedVpnFeatureProvider.isAdvancedVpnRemovable())
+                .thenReturn(false);
+        mFragment.updateRestrictedViews();
+        assertThat(mPreferenceForget.isVisible()).isFalse();
+    }
+
+    @Test
+    public void updateRestrictedViews_isNotAdvancedVpn_showsForgetPreference() {
+        when(mFakeFeatureFactory.mAdvancedVpnFeatureProvider.isAdvancedVpnRemovable())
+                .thenReturn(false);
+        mFragment.init(FAKE_PACKAGE_NAME,
+                mFakeFeatureFactory.getAdvancedVpnFeatureProvider(), mPreferenceForget);
+        mFragment.updateRestrictedViews();
+        assertThat(mPreferenceForget.isVisible()).isTrue();
+    }
+
+    @Test
+    public void updateRestrictedViews_isAdvancedVpnRemovable_showsForgetPreference() {
+        when(mFakeFeatureFactory.mAdvancedVpnFeatureProvider.isAdvancedVpnRemovable())
+                .thenReturn(true);
+        mFragment.init(FAKE_PACKAGE_NAME,
+                mFakeFeatureFactory.getAdvancedVpnFeatureProvider(), mPreferenceForget);
+        mFragment.updateRestrictedViews();
+        assertThat(mPreferenceForget.isVisible()).isTrue();
+    }
+}
diff --git a/tests/unit/src/com/android/settings/vpn2/VpnSettingsTest.java b/tests/unit/src/com/android/settings/vpn2/VpnSettingsTest.java
new file mode 100644
index 0000000..86bd1e7
--- /dev/null
+++ b/tests/unit/src/com/android/settings/vpn2/VpnSettingsTest.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.vpn2;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Looper;
+import android.os.UserHandle;
+import android.util.ArraySet;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.testutils.FakeFeatureFactory;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+@RunWith(AndroidJUnit4.class)
+public class VpnSettingsTest {
+    private static final String ADVANCED_VPN_GROUP_KEY = "advanced_vpn_group";
+    private static final String VPN_GROUP_KEY = "vpn_group";
+    private static final String ADVANCED_VPN_GROUP_TITLE = "advanced_vpn_group_title";
+    private static final String VPN_GROUP_TITLE = "vpn_group_title";
+    private static final String FAKE_PACKAGE_NAME = "com.fake.package.name";
+    private static final String ADVANCED_VPN_GROUP_PACKAGE_NAME = "com.advanced.package.name";
+    private static final int USER_ID_1 = UserHandle.USER_NULL;
+
+    @Rule
+    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+
+    @Mock
+    private AppOpsManager mAppOpsManager;
+
+    private VpnSettings mVpnSettings;
+    private Context mContext;
+    private PreferenceManager mPreferenceManager;
+    private PreferenceScreen mPreferenceScreen;
+    private PreferenceGroup mAdvancedVpnGroup;
+    private PreferenceGroup mVpnGroup;
+    private FakeFeatureFactory mFakeFeatureFactory;
+
+    @Before
+    @UiThreadTest
+    public void setUp() throws PackageManager.NameNotFoundException {
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+
+        mVpnSettings = spy(new VpnSettings());
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mAdvancedVpnGroup = spy(new PreferenceCategory(mContext));
+        mVpnGroup = spy(new PreferenceCategory(mContext));
+        mAdvancedVpnGroup.setKey(ADVANCED_VPN_GROUP_KEY);
+        mVpnGroup.setKey(VPN_GROUP_KEY);
+        mPreferenceManager = new PreferenceManager(mContext);
+        mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
+        mPreferenceScreen.addPreference(mAdvancedVpnGroup);
+        mPreferenceScreen.addPreference(mVpnGroup);
+        mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
+        mVpnSettings.init(mPreferenceScreen, mFakeFeatureFactory.getAdvancedVpnFeatureProvider());
+
+        when(mVpnSettings.getContext()).thenReturn(mContext);
+        when(mFakeFeatureFactory.mAdvancedVpnFeatureProvider
+                .getAdvancedVpnPreferenceGroupTitle(mContext)).thenReturn(ADVANCED_VPN_GROUP_TITLE);
+        when(mFakeFeatureFactory.mAdvancedVpnFeatureProvider.getVpnPreferenceGroupTitle(mContext))
+                .thenReturn(VPN_GROUP_TITLE);
+        when(mFakeFeatureFactory.mAdvancedVpnFeatureProvider.getAdvancedVpnPackageName())
+                .thenReturn(ADVANCED_VPN_GROUP_PACKAGE_NAME);
+        when(mFakeFeatureFactory.mAdvancedVpnFeatureProvider.isAdvancedVpnSupported(any()))
+                .thenReturn(true);
+        doReturn(mContext).when(mContext).createContextAsUser(any(), anyInt());
+        doReturn(mContext).when(mContext).createPackageContextAsUser(any(), anyInt(), any());
+        doReturn(mPreferenceManager).when(mVpnGroup).getPreferenceManager();
+        doReturn(mPreferenceManager).when(mAdvancedVpnGroup).getPreferenceManager();
+    }
+
+    @Test
+    public void setShownAdvancedPreferences_hasGeneralVpn_returnsVpnCountAs1() {
+        Set<Preference> updates = new ArraySet<>();
+        AppPreference pref =
+                spy(new AppPreference(mContext, USER_ID_1, FAKE_PACKAGE_NAME));
+        updates.add(pref);
+
+        mVpnSettings.setShownAdvancedPreferences(updates);
+
+        assertThat(mVpnGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mVpnGroup.isVisible()).isTrue();
+        assertThat(mAdvancedVpnGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void setShownAdvancedPreferences_hasAdvancedVpn_returnsAdvancedVpnCountAs1() {
+        Set<Preference> updates = new ArraySet<>();
+        AppPreference pref =
+                spy(new AppPreference(mContext, USER_ID_1, ADVANCED_VPN_GROUP_PACKAGE_NAME));
+        updates.add(pref);
+
+        mVpnSettings.setShownAdvancedPreferences(updates);
+
+        assertThat(mAdvancedVpnGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mAdvancedVpnGroup.isVisible()).isTrue();
+        assertThat(mVpnGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void setShownAdvancedPreferences_noVpn_returnsEmpty() {
+        Set<Preference> updates = new ArraySet<>();
+
+        mVpnSettings.setShownAdvancedPreferences(updates);
+
+        assertThat(mAdvancedVpnGroup.getPreferenceCount()).isEqualTo(0);
+        assertThat(mVpnGroup.getPreferenceCount()).isEqualTo(0);
+        assertThat(mAdvancedVpnGroup.isVisible()).isFalse();
+        assertThat(mVpnGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void getVpnApps_isAdvancedVpn_returnsOne() {
+        int uid = 1111;
+        List<AppOpsManager.OpEntry> opEntries = new ArrayList<>();
+        List<AppOpsManager.PackageOps> apps = new ArrayList<>();
+        AppOpsManager.PackageOps packageOps =
+                new AppOpsManager.PackageOps(ADVANCED_VPN_GROUP_PACKAGE_NAME, uid, opEntries);
+        apps.add(packageOps);
+        when(mAppOpsManager.getPackagesForOps((int[]) any())).thenReturn(apps);
+
+        assertThat(VpnSettings.getVpnApps(mContext, /* includeProfiles= */ false,
+                mFakeFeatureFactory.getAdvancedVpnFeatureProvider(),
+                mAppOpsManager).size()).isEqualTo(1);
+    }
+
+    @Test
+    public void getVpnApps_isNotAdvancedVpn_returnsEmpty() {
+        int uid = 1111;
+        List<AppOpsManager.OpEntry> opEntries = new ArrayList<>();
+        List<AppOpsManager.PackageOps> apps = new ArrayList<>();
+        AppOpsManager.PackageOps packageOps =
+                new AppOpsManager.PackageOps(FAKE_PACKAGE_NAME, uid, opEntries);
+        apps.add(packageOps);
+        when(mAppOpsManager.getPackagesForOps((int[]) any())).thenReturn(apps);
+
+        assertThat(VpnSettings.getVpnApps(mContext, /* includeProfiles= */ false,
+                mFakeFeatureFactory.getAdvancedVpnFeatureProvider(),
+                mAppOpsManager)).isEmpty();
+    }
+}
