Snap for 13264465 from 44552dc98fc15eef89dce94290c45887462d7dfa to 25Q2-release

Change-Id: I8d341b11943f415bf62f7078a856633cd1055ab4
diff --git a/quickstep/res/values-as/strings.xml b/quickstep/res/values-as/strings.xml
index 0f8126b..0a5241b 100644
--- a/quickstep/res/values-as/strings.xml
+++ b/quickstep/res/values-as/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"ডেস্কটপ"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> আৰু <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>টাৰ ভিতৰত <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g>তম বস্তু"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"বাওঁফাললৈ স্ক্ৰ’ল কৰক"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"সোঁফাললৈ স্ক্ৰ’ল কৰক"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"বাবল"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"অ’ভাৰফ্ল’"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="APP_NAME">%2$s</xliff:g>ৰ পৰা <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
diff --git a/quickstep/res/values-b+sr+Latn/strings.xml b/quickstep/res/values-b+sr+Latn/strings.xml
index 8b60c14..12ae5e7 100644
--- a/quickstep/res/values-b+sr+Latn/strings.xml
+++ b/quickstep/res/values-b+sr+Latn/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Računar"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> i <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, stavka <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> od <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Skrolujte ulevo"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Skrolujte udesno"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Oblačić"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Preklopni"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> – <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-be/strings.xml b/quickstep/res/values-be/strings.xml
index f0d4ee4..c1e9b29 100644
--- a/quickstep/res/values-be/strings.xml
+++ b/quickstep/res/values-be/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Працоўны стол"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> і <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, элемент <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> з <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Прагартаць улева"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Прагартаць управа"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Бурбалкі"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Меню з пашырэннем"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, крыніца: <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-es-rUS/strings.xml b/quickstep/res/values-es-rUS/strings.xml
index 703c434..903a04d 100644
--- a/quickstep/res/values-es-rUS/strings.xml
+++ b/quickstep/res/values-es-rUS/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Escritorio"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> y <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, elemento <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> de <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Desplazarse hacia la izquierda"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Desplazarse hacia la derecha"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Burbuja"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Ampliada"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-hu/strings.xml b/quickstep/res/values-hu/strings.xml
index 6584eaf..b38dddd 100644
--- a/quickstep/res/values-hu/strings.xml
+++ b/quickstep/res/values-hu/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Asztali"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> és <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g>. elem, összesen ennyiből: <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Görgetés balra"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Görgetés jobbra"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Buborék"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Túlcsordulás"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, forrás: <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-it/strings.xml b/quickstep/res/values-it/strings.xml
index 00529b7..8a08dcf 100644
--- a/quickstep/res/values-it/strings.xml
+++ b/quickstep/res/values-it/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Desktop"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> e <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, elemento <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> di <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Scorri verso sinistra"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Scorri verso destra"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Fumetto"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Extra"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> da <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-ja/strings.xml b/quickstep/res/values-ja/strings.xml
index 596e104..8f44ee7 100644
--- a/quickstep/res/values-ja/strings.xml
+++ b/quickstep/res/values-ja/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"デスクトップ"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> と <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>、アイテム <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g>/<xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"左へスクロール"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"右へスクロール"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"ふきだし"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"オーバーフロー"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>(<xliff:g id="APP_NAME">%2$s</xliff:g>)"</string>
diff --git a/quickstep/res/values-ka/strings.xml b/quickstep/res/values-ka/strings.xml
index ac46836..6294cbd 100644
--- a/quickstep/res/values-ka/strings.xml
+++ b/quickstep/res/values-ka/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"დესკტოპი"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> და <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g>-ე ერთეული <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>-დან"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"მარცხნივ გადაადგილება"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"მარჯვნივ გადაადგილება"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"ბუშტი"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"გადავსება"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>: <xliff:g id="APP_NAME">%2$s</xliff:g>-იდან"</string>
diff --git a/quickstep/res/values-km/strings.xml b/quickstep/res/values-km/strings.xml
index 799bcda..f1772af 100644
--- a/quickstep/res/values-km/strings.xml
+++ b/quickstep/res/values-km/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"អេក្រង់ដើម"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> និង <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g> ធាតុទី <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> នៃ <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"រំកិលទៅឆ្វេង"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"រំកិលទៅស្ដាំ"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"ផ្ទាំងសារ"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"ម៉ឺនុយបន្ថែម"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ពី <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-kn/strings.xml b/quickstep/res/values-kn/strings.xml
index c88aed2..5f6734b 100644
--- a/quickstep/res/values-kn/strings.xml
+++ b/quickstep/res/values-kn/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"ಡೆಸ್ಕ್‌ಟಾಪ್"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> ಮತ್ತು <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="TOTAL_TASKS">%3$d</xliff:g> ರಲ್ಲಿ <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> ಐಟಂ"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"ಎಡಕ್ಕೆ ಸ್ಕ್ರಾಲ್ ಮಾಡಿ"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"ಬಲಕ್ಕೆ ಸ್ಕ್ರಾಲ್ ಮಾಡಿ"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"ಬಬಲ್"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"ಓವರ್‌ಫ್ಲೋ"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="APP_NAME">%2$s</xliff:g> ನಿಂದ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
diff --git a/quickstep/res/values-ky/strings.xml b/quickstep/res/values-ky/strings.xml
index 049da10..1d740b0 100644
--- a/quickstep/res/values-ky/strings.xml
+++ b/quickstep/res/values-ky/strings.xml
@@ -164,5 +164,5 @@
     <string name="header_default_app_title" msgid="8308052350689531566">"Колдонмонун аталышы"</string>
     <string name="header_close_icon_description" msgid="5400033616675911319">"Жабуу баскычы"</string>
     <string name="pin_to_taskbar" msgid="6607778046321626950">"Тапшырмалар панелине кадоо"</string>
-    <string name="unpin_from_taskbar" msgid="2178811773165572676">"Тапшырмалар панелинен алып коюу"</string>
+    <string name="unpin_from_taskbar" msgid="2178811773165572676">"Тапшырмалар панелинен алуу"</string>
 </resources>
diff --git a/quickstep/res/values-lo/strings.xml b/quickstep/res/values-lo/strings.xml
index 9eb169a..0539e1f 100644
--- a/quickstep/res/values-lo/strings.xml
+++ b/quickstep/res/values-lo/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"ເດັສທັອບ"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> ແລະ <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, ລາຍການທີ <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> ຈາກທັງໝົດ <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"ເລື່ອນໄປທາງຊ້າຍ"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"ເລື່ອນໄປທາງຂວາ"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"ຟອງ"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"ລາຍການເພີ່ມເຕີມ"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ຈາກ <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-lt/strings.xml b/quickstep/res/values-lt/strings.xml
index 2cbdc8e..dbc5649 100644
--- a/quickstep/res/values-lt/strings.xml
+++ b/quickstep/res/values-lt/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Stalinis kompiuteris"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"„<xliff:g id="APP_NAME_1">%1$s</xliff:g>“ ir „<xliff:g id="APP_NAME_2">%2$s</xliff:g>“"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> element. iš <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Slinkti kairėn"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Slinkti dešinėn"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Burbulas"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Perpildymas"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"„<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>“ iš „<xliff:g id="APP_NAME">%2$s</xliff:g>“"</string>
diff --git a/quickstep/res/values-ml/strings.xml b/quickstep/res/values-ml/strings.xml
index 099e000..73c795b 100644
--- a/quickstep/res/values-ml/strings.xml
+++ b/quickstep/res/values-ml/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"ഡെസ്‌ക്ടോപ്പ്"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g>, <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>-ൽ <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g>-ാമത്തെ ഇനം"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"ഇടത്തേക്ക് സ്‌ക്രോൾ ചെയ്യുക"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"വലത്തേക്ക് സ്‌ക്രോൾ ചെയ്യുക"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"ബബിൾ"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"ഓവർഫ്ലോ"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="APP_NAME">%2$s</xliff:g> എന്നതിൽ നിന്നുള്ള <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
diff --git a/quickstep/res/values-mr/strings.xml b/quickstep/res/values-mr/strings.xml
index 5aa9dfc..ef44bb2 100644
--- a/quickstep/res/values-mr/strings.xml
+++ b/quickstep/res/values-mr/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"डेस्कटॉप"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> आणि <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="TOTAL_TASKS">%3$d</xliff:g> पैकी <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> आयटम"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"डावीकडे स्क्रोल करा"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"उजवीकडे स्क्रोल करा"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"बबल"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"ओव्हरफ्लो"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="APP_NAME">%2$s</xliff:g> वरील <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
diff --git a/quickstep/res/values-ms/strings.xml b/quickstep/res/values-ms/strings.xml
index a633bf4..1007b55 100644
--- a/quickstep/res/values-ms/strings.xml
+++ b/quickstep/res/values-ms/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Desktop"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> dan <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> item daripada <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Tatal ke kiri"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Tatal ke kanan"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Gelembung"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Limpahan"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> daripada <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-ne/strings.xml b/quickstep/res/values-ne/strings.xml
index 91c6bba..fece2a8 100644
--- a/quickstep/res/values-ne/strings.xml
+++ b/quickstep/res/values-ne/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"डेस्कटप"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> र <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="TOTAL_TASKS">%3$d</xliff:g> मध्ये <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> औँ वस्तु"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"बायाँतिर स्क्रोल गर्नुहोस्"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"दायाँतिर स्क्रोल गर्नुहोस्"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"बबल"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"ओभरफ्लो"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="APP_NAME">%2$s</xliff:g> मा देखाइएका <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
diff --git a/quickstep/res/values-nl/strings.xml b/quickstep/res/values-nl/strings.xml
index 9e49f13..a8dbb87 100644
--- a/quickstep/res/values-nl/strings.xml
+++ b/quickstep/res/values-nl/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Desktop"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> en <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, item <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> van <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Naar links scrollen"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Naar rechts scrollen"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Bubbel"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Overloop"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> van <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-pt/strings.xml b/quickstep/res/values-pt/strings.xml
index 92fed63..e4c3cf1 100644
--- a/quickstep/res/values-pt/strings.xml
+++ b/quickstep/res/values-pt/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Computador"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> e <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, item <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> de <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Rolar para a esquerda"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Rolar para a direita"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Balão"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Balão flutuante"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> do app <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-si/strings.xml b/quickstep/res/values-si/strings.xml
index d413b0d..2030252 100644
--- a/quickstep/res/values-si/strings.xml
+++ b/quickstep/res/values-si/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"ඩෙස්ක්ටොපය"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> සහ <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, අයිතම <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>න් <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"වමට අනුචලනය කරන්න"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"දකුණට අනුචලනය කරන්න"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"බුබුළු"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"පිටාර යාම"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="APP_NAME">%2$s</xliff:g> සිට <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
diff --git a/quickstep/res/values-sl/strings.xml b/quickstep/res/values-sl/strings.xml
index 1f87e65..fd7dc69 100644
--- a/quickstep/res/values-sl/strings.xml
+++ b/quickstep/res/values-sl/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Namizni računalnik"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> in <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, element <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> od <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Pomik levo"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Pomik desno"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Oblaček"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Oblaček z dodatnimi elementi"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> iz aplikacije <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-sr/strings.xml b/quickstep/res/values-sr/strings.xml
index 4e32155..345fc27 100644
--- a/quickstep/res/values-sr/strings.xml
+++ b/quickstep/res/values-sr/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Рачунар"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> и <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, ставка <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> од <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Скролујте улево"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Скролујте удесно"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Облачић"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Преклопни"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> – <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-te/strings.xml b/quickstep/res/values-te/strings.xml
index 5ab198e..7bd92dd 100644
--- a/quickstep/res/values-te/strings.xml
+++ b/quickstep/res/values-te/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"డెస్క్‌టాప్"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g>, <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>‌లో <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g>‌వ ఐటెమ్"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"ఎడమవైపునకు స్క్రోల్ చేయండి"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"కుడివైపునకు స్క్రోల్ చేయండి"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"బబుల్"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"ఓవర్‌ఫ్లో"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="APP_NAME">%2$s</xliff:g> నుండి <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
diff --git a/quickstep/res/values-th/strings.xml b/quickstep/res/values-th/strings.xml
index 9838003..a18a89f 100644
--- a/quickstep/res/values-th/strings.xml
+++ b/quickstep/res/values-th/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"เดสก์ท็อป"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> และ <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, รายการที่ <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> จาก <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"เลื่อนไปทางซ้าย"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"เลื่อนไปทางขวา"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"บับเบิล"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"การดำเนินการเพิ่มเติม"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> จาก <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-tl/strings.xml b/quickstep/res/values-tl/strings.xml
index 52619b9..3551578 100644
--- a/quickstep/res/values-tl/strings.xml
+++ b/quickstep/res/values-tl/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"Desktop"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> at <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, item <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> ng <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"Mag-scroll pakaliwa"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"Mag-scroll pakanan"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"Bubble"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"Overflow"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> mula sa <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
diff --git a/quickstep/res/values-ur/strings.xml b/quickstep/res/values-ur/strings.xml
index a5508d4..8c44ef7 100644
--- a/quickstep/res/values-ur/strings.xml
+++ b/quickstep/res/values-ur/strings.xml
@@ -146,10 +146,8 @@
     <string name="quick_switch_desktop" msgid="8393802056024499749">"ڈیسک ٹاپ"</string>
     <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> اور <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
     <string name="quick_switch_task_with_position_in_parent" msgid="4968670948331508951">"‫<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>، آئٹم <xliff:g id="INDEX_IN_PARENT">%2$d</xliff:g> از <xliff:g id="TOTAL_TASKS">%3$d</xliff:g>"</string>
-    <!-- no translation found for quick_switch_scroll_arrow_left (6527033155534184309) -->
-    <skip />
-    <!-- no translation found for quick_switch_scroll_arrow_right (7319779291086916348) -->
-    <skip />
+    <string name="quick_switch_scroll_arrow_left" msgid="6527033155534184309">"بائیں طرف اسکرول کریں"</string>
+    <string name="quick_switch_scroll_arrow_right" msgid="7319779291086916348">"دائیں طرف اسکرول کریں"</string>
     <string name="bubble_bar_bubble_fallback_description" msgid="7811684548953452009">"ببل"</string>
     <string name="bubble_bar_overflow_description" msgid="8617628132733151708">"اوورفلو"</string>
     <string name="bubble_bar_bubble_description" msgid="1882466152448446446">"<xliff:g id="APP_NAME">%2$s</xliff:g> سے <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
diff --git a/quickstep/src/com/android/launcher3/dagger/Modules.kt b/quickstep/src/com/android/launcher3/dagger/Modules.kt
index 7671a82..9723b42 100644
--- a/quickstep/src/com/android/launcher3/dagger/Modules.kt
+++ b/quickstep/src/com/android/launcher3/dagger/Modules.kt
@@ -21,8 +21,10 @@
 import com.android.launcher3.uioverrides.plugins.PluginManagerWrapperImpl
 import com.android.launcher3.util.ApiWrapper
 import com.android.launcher3.util.PluginManagerWrapper
+import com.android.launcher3.util.window.RefreshRateTracker
 import com.android.launcher3.util.window.WindowManagerProxy
 import com.android.launcher3.widget.LauncherWidgetHolder.WidgetHolderFactory
+import com.android.quickstep.util.ChoreographerFrameRateTracker
 import com.android.quickstep.util.GestureExclusionManager
 import com.android.quickstep.util.SystemWindowManagerProxy
 import dagger.Binds
@@ -60,4 +62,8 @@
     @Provides
     @JvmStatic
     fun provideGestureExclusionManager(): GestureExclusionManager = GestureExclusionManager.INSTANCE
+
+    @Provides
+    @JvmStatic
+    fun provideRefreshRateTracker(): RefreshRateTracker = ChoreographerFrameRateTracker
 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
index 605fd31..69966cc 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
@@ -86,7 +86,6 @@
 import android.os.UserHandle;
 import android.text.TextUtils;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.Display;
 import android.view.HapticFeedbackConstants;
 import android.view.KeyEvent;
@@ -225,7 +224,6 @@
 
 public class QuickstepLauncher extends Launcher implements RecentsViewContainer,
         SystemShortcut.BubbleActivityStarter {
-    private static final String TAG = "QuickstepLauncher";
     private static final boolean TRACE_LAYOUTS =
             SystemProperties.getBoolean("persist.debug.trace_layouts", false);
     private static final String TRACE_RELAYOUT_CLASS =
@@ -562,35 +560,20 @@
 
     @Override
     public void onDestroy() {
-        // wrap non-trivial clean up blocks in try-catch to avoid stopping clean up of rest of
-        // objects
-
         if (mAppTransitionManager != null) {
-            try {
-                mAppTransitionManager.onActivityDestroyed();
-            } catch (Exception e) {
-                Log.e(TAG, "Failed to destroy mAppTransitionManager", e);
-            }
+            mAppTransitionManager.onActivityDestroyed();
         }
         mAppTransitionManager = null;
         mIsPredictiveBackToHomeInProgress = false;
 
         if (mUnfoldTransitionProgressProvider != null) {
-            try {
-                SystemUiProxy.INSTANCE.get(this).setUnfoldAnimationListener(null);
-                mUnfoldTransitionProgressProvider.destroy();
-            } catch (Exception e) {
-                Log.e(TAG, "Failed to destroy mUnfoldTransitionProgressProvider", e);
-            }
+            SystemUiProxy.INSTANCE.get(this).setUnfoldAnimationListener(null);
+            mUnfoldTransitionProgressProvider.destroy();
         }
 
         OverviewComponentObserver.INSTANCE.get(this)
                 .removeOverviewChangeListener(mOverviewChangeListener);
-        try {
-            mTISBindHelper.onDestroy();
-        } catch (Exception e) {
-            Log.e(TAG, "Failed to destroy mTISBindHelper", e);
-        }
+        mTISBindHelper.onDestroy();
 
         if (mLauncherUnfoldAnimationController != null) {
             mLauncherUnfoldAnimationController.onDestroy();
@@ -600,22 +583,15 @@
             mSplitSelectStateController.onDestroy();
         }
 
-        try {
-            RecentsView recentsView = getOverviewPanel();
-            if (recentsView != null) {
-                recentsView.destroy();
-            }
-        } catch (Exception e) {
-            Log.e(TAG, "Failed to destroy RecentsView", e);
+        RecentsView recentsView = getOverviewPanel();
+        if (recentsView != null) {
+            recentsView.destroy();
         }
 
-        try {
-            super.onDestroy();
-        } finally { // trivial close operations in finally.
-            mHotseatPredictionController.destroy();
-            if (mViewCapture != null) mViewCapture.close();
-            removeBackAnimationCallback(mSplitSelectStateController.getSplitBackHandler());
-        }
+        super.onDestroy();
+        mHotseatPredictionController.destroy();
+        if (mViewCapture != null) mViewCapture.close();
+        removeBackAnimationCallback(mSplitSelectStateController.getSplitBackHandler());
     }
 
     @Override
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
index 3170df9..c774143 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
@@ -22,7 +22,6 @@
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_OVERVIEW;
 
 import android.content.Context;
-import android.graphics.Color;
 import android.graphics.Rect;
 import android.os.SystemProperties;
 
@@ -162,7 +161,7 @@
     @Override
     public int getWorkspaceScrimColor(Launcher launcher) {
         return enableOverviewBackgroundWallpaperBlur() && BlurUtils.supportsBlursOnWindows()
-                ? Color.TRANSPARENT
+                ? Themes.getAttrColor(launcher, R.attr.overviewScrimColorOverBlur)
                 : Themes.getAttrColor(launcher, R.attr.overviewScrimColor);
     }
 
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewDismissTouchController.kt b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewDismissTouchController.kt
index eac5235..06e6734 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewDismissTouchController.kt
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewDismissTouchController.kt
@@ -25,6 +25,7 @@
 import com.android.launcher3.R
 import com.android.launcher3.Utilities.EDGE_NAV_BAR
 import com.android.launcher3.Utilities.boundToRange
+import com.android.launcher3.Utilities.debugLog
 import com.android.launcher3.Utilities.isRtl
 import com.android.launcher3.Utilities.mapToRange
 import com.android.launcher3.touch.SingleAxisSwipeDetector
@@ -70,6 +71,7 @@
             // Don't intercept swipes on the nav bar, as user might be trying to go home during a
             // task dismiss animation.
             (ev.edgeFlags and EDGE_NAV_BAR) != 0 -> {
+                debugLog(TAG, "Not intercepting edge swipe on nav bar.")
                 false
             }
 
@@ -77,14 +79,23 @@
             AbstractFloatingView.getTopOpenViewWithType(
                 container,
                 AbstractFloatingView.TYPE_TOUCH_CONTROLLER_NO_INTERCEPT,
-            ) != null -> false
-
-            // Disable swiping if the task overlay is modal.
-            taskViewRecentsTouchContext.isRecentsModal -> {
+            ) != null -> {
+                debugLog(TAG, "Not intercepting, open floating view blocking touch.")
                 false
             }
 
-            else -> taskViewRecentsTouchContext.isRecentsInteractive
+            // Disable swiping if the task overlay is modal.
+            taskViewRecentsTouchContext.isRecentsModal -> {
+                debugLog(TAG, "Not intercepting touch in modal overlay.")
+                false
+            }
+
+            else ->
+                taskViewRecentsTouchContext.isRecentsInteractive.also { isRecentsInteractive ->
+                    if (!isRecentsInteractive) {
+                        debugLog(TAG, "Not intercepting touch, recents not interactive.")
+                    }
+                }
         }
 
     override fun onControllerInterceptTouchEvent(ev: MotionEvent): Boolean {
@@ -140,6 +151,7 @@
     override fun onDragStart(start: Boolean, startDisplacement: Float) {
         if (isBlockedDuringDismissal) return
         val taskBeingDragged = taskBeingDragged ?: return
+        debugLog(TAG, "Handling touch event.")
 
         initialDisplacement =
             taskBeingDragged.secondaryDismissTranslationProperty.get(taskBeingDragged)
@@ -289,6 +301,8 @@
     }
 
     companion object {
+        private const val TAG = "TaskViewDismissTouchController"
+
         private const val DISMISS_THRESHOLD_FRACTION = 0.5f
         private const val DISMISS_THRESHOLD_HAPTIC_RANGE = 10f
 
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewLaunchTouchController.kt b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewLaunchTouchController.kt
index 8ee552d..fe9cae5 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewLaunchTouchController.kt
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewLaunchTouchController.kt
@@ -24,6 +24,7 @@
 import com.android.launcher3.LauncherAnimUtils
 import com.android.launcher3.Utilities.EDGE_NAV_BAR
 import com.android.launcher3.Utilities.boundToRange
+import com.android.launcher3.Utilities.debugLog
 import com.android.launcher3.Utilities.isRtl
 import com.android.launcher3.anim.AnimatorPlaybackController
 import com.android.launcher3.touch.BaseSwipeDetector
@@ -72,6 +73,7 @@
             // Don't intercept swipes on the nav bar, as user might be trying to go home during a
             // task dismiss animation.
             (ev.edgeFlags and EDGE_NAV_BAR) != 0 -> {
+                debugLog(TAG, "Not intercepting edge swipe on nav bar.")
                 false
             }
 
@@ -80,15 +82,22 @@
                 container,
                 AbstractFloatingView.TYPE_TOUCH_CONTROLLER_NO_INTERCEPT,
             ) != null -> {
+                debugLog(TAG, "Not intercepting, open floating view blocking touch.")
                 false
             }
 
             // Disable swiping if the task overlay is modal.
             taskViewRecentsTouchContext.isRecentsModal -> {
+                debugLog(TAG, "Not intercepting touch in modal overlay.")
                 false
             }
 
-            else -> taskViewRecentsTouchContext.isRecentsInteractive
+            else ->
+                taskViewRecentsTouchContext.isRecentsInteractive.also { isRecentsInteractive ->
+                    if (!isRecentsInteractive) {
+                        debugLog(TAG, "Not intercepting touch, recents not interactive.")
+                    }
+                }
         }
 
     override fun onControllerInterceptTouchEvent(ev: MotionEvent): Boolean {
@@ -128,6 +137,7 @@
                         recentsView.pagedOrientationHandler.getTaskDragDisplacementFactor(isRtl)
                 }
         if (!canTaskLaunchTaskView(taskBeingDragged)) {
+            debugLog(TAG, "Not intercepting touch, task cannot be launched.")
             return false
         }
         detector.setDetectableScrollConditions(downDirection, /* ignoreSlop= */ false)
@@ -136,6 +146,7 @@
 
     override fun onDragStart(start: Boolean, startDisplacement: Float) {
         val taskBeingDragged = taskBeingDragged ?: return
+        debugLog(TAG, "Handling touch event.")
 
         val secondaryLayerDimension: Int =
             recentsView.pagedOrientationHandler.getSecondaryDimension(container.getDragLayer())
@@ -202,6 +213,7 @@
     }
 
     companion object {
+        private const val TAG = "TaskViewLaunchTouchController"
         private const val LAUNCH_THRESHOLD_FRACTION: Float = 0.5f
     }
 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchControllerDeprecated.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchControllerDeprecated.java
index f26bd13..57ffd95 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchControllerDeprecated.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchControllerDeprecated.java
@@ -17,6 +17,7 @@
 
 import static com.android.launcher3.AbstractFloatingView.TYPE_TOUCH_CONTROLLER_NO_INTERCEPT;
 import static com.android.launcher3.LauncherAnimUtils.SUCCESS_TRANSITION_PROGRESS;
+import static com.android.launcher3.Utilities.debugLog;
 import static com.android.launcher3.touch.SingleAxisSwipeDetector.DIRECTION_BOTH;
 
 import android.animation.Animator;
@@ -56,6 +57,7 @@
 public class TaskViewTouchControllerDeprecated<
         CONTAINER extends Context & RecentsViewContainer> extends AnimatorListenerAdapter
         implements TouchController, SingleAxisSwipeDetector.Listener {
+    private static final String TAG = "TaskViewTouchControllerDeprecated";
 
     private static final float ANIMATION_PROGRESS_FRACTION_MIDPOINT = 0.5f;
     private static final long MIN_TASK_DISMISS_ANIMATION_DURATION = 300;
@@ -110,6 +112,7 @@
             if (mCurrentAnimation != null) {
                 mCurrentAnimation.getAnimationPlayer().end();
             }
+            debugLog(TAG, "Not intercepting edge swipe on nav bar.");
             return false;
         }
         if (mCurrentAnimation != null) {
@@ -121,6 +124,7 @@
         }
         if (AbstractFloatingView.getTopOpenViewWithType(
                 mContainer, TYPE_TOUCH_CONTROLLER_NO_INTERCEPT) != null) {
+            debugLog(TAG, "Not intercepting, open floating view blocking touch.");
             return false;
         }
         return mTaskViewRecentsTouchContext.isRecentsInteractive();
@@ -142,6 +146,7 @@
         if (ev.getAction() == MotionEvent.ACTION_DOWN) {
             mNoIntercept = !canInterceptTouch(ev);
             if (mNoIntercept) {
+                debugLog(TAG, "Not intercepting touch.");
                 return false;
             }
 
@@ -186,6 +191,7 @@
                 }
                 if (mTaskBeingDragged == null) {
                     mNoIntercept = true;
+                    debugLog(TAG, "Not intercepting touch, no task to drag.");
                     return false;
                 }
             }
@@ -195,6 +201,7 @@
         }
 
         if (mNoIntercept) {
+            debugLog(TAG, "Not intercepting touch.");
             return false;
         }
 
@@ -266,6 +273,7 @@
     @Override
     public void onDragStart(boolean start, float startDisplacement) {
         if (!mDraggingEnabled) return;
+        debugLog(TAG, "Handling touch.");
 
         RecentsPagedOrientationHandler orientationHandler =
                 mRecentsView.getPagedOrientationHandler();
diff --git a/quickstep/src/com/android/quickstep/AspectRatioSystemShortcut.kt b/quickstep/src/com/android/quickstep/AspectRatioSystemShortcut.kt
new file mode 100644
index 0000000..68860ac
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/AspectRatioSystemShortcut.kt
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.quickstep
+
+import android.content.Intent
+import android.provider.Settings
+import android.view.View
+import androidx.core.net.toUri
+import com.android.launcher3.AbstractFloatingViewHelper
+import com.android.launcher3.R
+import com.android.launcher3.logging.StatsLogManager.LauncherEvent
+import com.android.launcher3.popup.SystemShortcut
+import com.android.quickstep.views.RecentsViewContainer
+import com.android.quickstep.views.TaskContainer
+import com.android.window.flags.Flags.universalResizableByDefault
+
+/**
+ * System shortcut to change the application's aspect ratio compatibility mode.
+ *
+ * This shows up only on screens that are not compact, ie. shortest-width greater than {@link
+ * com.android.launcher3.util.window.WindowManagerProxy#MIN_TABLET_WIDTH}.
+ */
+class AspectRatioSystemShortcut(
+    viewContainer: RecentsViewContainer,
+    taskContainer: TaskContainer,
+    abstractFloatingViewHelper: AbstractFloatingViewHelper,
+) :
+    SystemShortcut<RecentsViewContainer>(
+        R.drawable.ic_aspect_ratio,
+        R.string.recent_task_option_aspect_ratio,
+        viewContainer,
+        taskContainer.itemInfo,
+        taskContainer.taskView,
+        abstractFloatingViewHelper,
+    ) {
+    override fun onClick(view: View) {
+        dismissTaskMenuView()
+
+        val intent =
+            Intent(Settings.ACTION_MANAGE_USER_ASPECT_RATIO_SETTINGS)
+                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
+        if (mItemInfo.targetPackage != null) {
+            intent.setData(("package:" + mItemInfo.targetPackage).toUri())
+        }
+
+        mTarget.startActivitySafely(view, intent, mItemInfo)
+        mTarget
+            .statsLogManager
+            .logger()
+            .withItemInfo(mItemInfo)
+            .log(LauncherEvent.LAUNCHER_ASPECT_RATIO_SETTINGS_SYSTEM_SHORTCUT_TAP)
+    }
+
+    companion object {
+        /** Optionally create a factory for the aspect ratio system shortcut. */
+        @JvmOverloads
+        fun createFactory(
+            abstractFloatingViewHelper: AbstractFloatingViewHelper = AbstractFloatingViewHelper()
+        ): TaskShortcutFactory {
+            return object : TaskShortcutFactory {
+                override fun getShortcuts(
+                    viewContainer: RecentsViewContainer,
+                    taskContainer: TaskContainer,
+                ): List<AspectRatioSystemShortcut>? {
+                    return when {
+                        // Only available when the feature flag is on.
+                        !universalResizableByDefault() -> null
+
+                        // The option is only shown on sw600dp+ screens (checked by isTablet)
+                        !viewContainer.deviceProfile.isTablet -> null
+
+                        else -> {
+                            listOf(
+                                AspectRatioSystemShortcut(
+                                    viewContainer,
+                                    taskContainer,
+                                    abstractFloatingViewHelper,
+                                )
+                            )
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
index 783ec2c..c678562 100644
--- a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
+++ b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
@@ -26,6 +26,7 @@
 import static com.android.launcher3.BaseActivity.INVISIBLE_BY_PENDING_FLAGS;
 import static com.android.launcher3.BaseActivity.PENDING_INVISIBLE_BY_WALLPAPER_ANIMATION;
 import static com.android.window.flags.Flags.predictiveBackThreeButtonNav;
+import static com.android.window.flags.Flags.removeDepartTargetFromMotion;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -121,6 +122,7 @@
     private final SurfaceControl.Transaction mTransaction = new SurfaceControl.Transaction();
     private float mBackProgress = 0;
     private boolean mBackInProgress = false;
+    private boolean mWaitStartTransition = false;
     private OnBackInvokedCallbackStub mBackCallback;
     private IRemoteAnimationFinishedCallback mAnimationFinishedCallback;
     private final BackProgressAnimator mProgressAnimator = new BackProgressAnimator();
@@ -158,7 +160,8 @@
         mBackCallback = new OnBackInvokedCallbackStub(handler, mProgressAnimator,
                 mProgressInterpolator, this);
         SystemUiProxy.INSTANCE.get(mLauncher).setBackToLauncherCallback(mBackCallback,
-                new RemoteAnimationRunnerStub(this));
+                new RemoteAnimationRunnerStub(this,
+                        removeDepartTargetFromMotion() ? handler : null));
     }
 
     private static class OnBackInvokedCallbackStub extends IOnBackInvokedCallback.Stub {
@@ -195,7 +198,14 @@
             mHandler.post(() -> {
                 LauncherBackAnimationController controller = mControllerRef.get();
                 if (controller != null) {
-                    controller.startTransition();
+                    if (!removeDepartTargetFromMotion()) {
+                        controller.startTransition();
+                    } else {
+                        controller.mWaitStartTransition = true;
+                        if (controller.mBackTarget != null && controller.mBackInProgress) {
+                            controller.startTransition();
+                        }
+                    }
                 }
                 mProgressAnimator.reset();
             });
@@ -220,7 +230,8 @@
             mHandler.post(() -> {
                 LauncherBackAnimationController controller = mControllerRef.get();
                 if (controller != null) {
-                    controller.startBack(backEvent);
+                    controller.initBackMotion(backEvent);
+                    controller.tryStartBackAnimation();
                     mProgressAnimator.onBackStarted(backEvent, event -> {
                         float backProgress = event.getProgress();
                         controller.mBackProgress =
@@ -248,9 +259,12 @@
         // LauncherBackAnimationController has strong reference to Launcher activity, the binder
         // callback should not hold strong reference to it to avoid memory leak.
         private WeakReference<LauncherBackAnimationController> mControllerRef;
+        private final Handler mHandler;
 
-        private RemoteAnimationRunnerStub(LauncherBackAnimationController controller) {
+        private RemoteAnimationRunnerStub(LauncherBackAnimationController controller,
+                Handler handler) {
             mControllerRef = new WeakReference<>(controller);
+            mHandler = handler;
         }
 
         @Override
@@ -261,15 +275,29 @@
             if (controller == null) {
                 return;
             }
-            for (final RemoteAnimationTarget target : apps) {
-                if (MODE_CLOSING == target.mode) {
-                    controller.mBackTarget = target;
+            final Runnable r = () -> {
+                for (final RemoteAnimationTarget target : apps) {
+                    if (MODE_CLOSING == target.mode) {
+                        controller.mBackTarget = target;
+                    }
+                    if (MODE_OPENING == target.mode) {
+                        controller.mLauncherTarget = target;
+                    }
                 }
-                if (MODE_OPENING == target.mode) {
-                    controller.mLauncherTarget = target;
+                controller.mAnimationFinishedCallback = finishedCallback;
+                if (!removeDepartTargetFromMotion()) {
+                    return;
                 }
+                controller.tryStartBackAnimation();
+                if (controller.mWaitStartTransition) {
+                    controller.startTransition();
+                }
+            };
+            if (mHandler != null) {
+                mHandler.post(r);
+            } else {
+                r.run();
             }
-            controller.mAnimationFinishedCallback = finishedCallback;
         }
 
         @Override
@@ -294,34 +322,39 @@
         mBackCallback = null;
     }
 
-    private void startBack(BackMotionEvent backEvent) {
+    private void initBackMotion(BackMotionEvent backEvent) {
         // in case we're still animating an onBackCancelled event, let's remove the finish-
         // callback from the progress animator to prevent calling finishAnimation() before
         // restarting a new animation
-        // Side note: startBack is never called during the post-commit phase if the back gesture
-        // was committed (not cancelled). BackAnimationController prevents that. Therefore we
-        // don't have to handle that case.
+        // Side note: initBackMotion is never called during the post-commit phase if the back
+        // gesture was committed (not cancelled). BackAnimationController prevents that. Therefore
+        // we don't have to handle that case.
         mProgressAnimator.removeOnBackCancelledFinishCallback();
 
+        if (!removeDepartTargetFromMotion()) {
+            RemoteAnimationTarget appTarget = backEvent.getDepartingAnimationTarget();
+            if (appTarget == null || appTarget.leash == null || !appTarget.leash.isValid()) {
+                return;
+            }
+            mBackTarget = appTarget;
+        }
         mBackInProgress = true;
-        RemoteAnimationTarget appTarget = backEvent.getDepartingAnimationTarget();
-
-        if (appTarget == null || appTarget.leash == null || !appTarget.leash.isValid()) {
+        mInitialTouchPos.set(backEvent.getTouchX(), backEvent.getTouchY());
+    }
+    private void tryStartBackAnimation() {
+        if (mBackTarget == null || (removeDepartTargetFromMotion() && !mBackInProgress)) {
             return;
         }
 
         mTransaction
-                .show(appTarget.leash)
+                .show(mBackTarget.leash)
                 .setAnimationTransaction();
-        mBackTarget = appTarget;
-        mInitialTouchPos.set(backEvent.getTouchX(), backEvent.getTouchY());
-
-        mStartRect.set(appTarget.windowConfiguration.getMaxBounds());
+        mStartRect.set(mBackTarget.windowConfiguration.getMaxBounds());
 
         // inset bottom in case of taskbar being present
         if (!predictiveBackThreeButtonNav() || mLauncher.getDeviceProfile().isTaskbarPresent
                 || DisplayController.getNavigationMode(mLauncher) == NavigationMode.NO_BUTTON) {
-            mStartRect.inset(0, 0, 0, appTarget.contentInsets.bottom);
+            mStartRect.inset(0, 0, 0, mBackTarget.contentInsets.bottom);
         }
 
         mLauncherTargetView = mQuickstepTransitionManager.findLauncherView(
@@ -466,10 +499,14 @@
     }
 
     private void startTransition() {
-        if (mBackTarget == null) {
-            // Trigger transition system instead of custom transition animation.
-            finishAnimation();
-            return;
+        if (!removeDepartTargetFromMotion()) {
+            if (mBackTarget == null) {
+                // Trigger transition system instead of custom transition animation.
+                finishAnimation();
+                return;
+            }
+        } else {
+            mWaitStartTransition = false;
         }
         if (mLauncher.isDestroyed()) {
             return;
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
index 6710096..9bf63a0 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
@@ -18,6 +18,7 @@
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
 import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
 import static android.view.Display.DEFAULT_DISPLAY;
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 
 import static com.android.launcher3.MotionEventsUtils.isTrackpadScroll;
 import static com.android.launcher3.util.DisplayController.CHANGE_ALL;
@@ -342,6 +343,9 @@
      * @return whether the given running task info matches the gesture-blocked task.
      */
     public boolean isGestureBlockedTask(CachedTaskInfo taskInfo) {
+        if (mGestureBlockingTaskId == INVALID_TASK_ID) {
+            return false;
+        }
         if (com.android.wm.shell.Flags.enableShellTopTaskTracking()) {
             return taskInfo != null && taskInfo.topGroupedTaskContainsTask(mGestureBlockingTaskId);
         } else {
diff --git a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
index ae6bfbc..5bf4451 100644
--- a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
+++ b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
@@ -118,6 +118,7 @@
             TaskShortcutFactory.FREE_FORM,
             DesktopSystemShortcut.Companion.createFactory(),
             ExternalDisplaySystemShortcut.Companion.createFactory(),
+            AspectRatioSystemShortcut.Companion.createFactory(),
             TaskShortcutFactory.WELLBEING,
             TaskShortcutFactory.SAVE_APP_PAIR,
             TaskShortcutFactory.SCREENSHOT,
diff --git a/quickstep/src/com/android/quickstep/TopTaskTracker.java b/quickstep/src/com/android/quickstep/TopTaskTracker.java
index 43e8ff9..2b83311 100644
--- a/quickstep/src/com/android/quickstep/TopTaskTracker.java
+++ b/quickstep/src/com/android/quickstep/TopTaskTracker.java
@@ -21,6 +21,7 @@
 import static android.content.Intent.ACTION_CHOOSER;
 import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
 import static android.view.Display.DEFAULT_DISPLAY;
+import static android.view.Display.INVALID_DISPLAY;
 
 import static com.android.launcher3.Flags.enableOverviewOnConnectedDisplays;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
@@ -332,7 +333,7 @@
             // TODO(346588978): Currently ignore filterOnlyVisibleRecents, but perhaps make this an
             //  explicit filter For things to ignore (ie. PIP/Bubbles/Assistant/etc/so that this is
             //  explicit)
-            return new CachedTaskInfo(mVisibleTasks.get(displayId), mCanEnterDesktopMode);
+            return new CachedTaskInfo(mVisibleTasks.get(displayId));
         } else {
             if (filterOnlyVisibleRecents) {
                 // Since we only know about the top most task, any filtering may not be applied on
@@ -343,9 +344,10 @@
                 if (enableOverviewOnConnectedDisplays()) {
                     return new CachedTaskInfo(Arrays.stream(tasks).filter(
                             info -> ExternalDisplaysKt.getSafeDisplayId(info)
-                                    == displayId).toList(), mCanEnterDesktopMode);
+                                    == displayId).toList(), mCanEnterDesktopMode, displayId);
                 } else {
-                    return new CachedTaskInfo(Arrays.asList(tasks), mCanEnterDesktopMode);
+                    return new CachedTaskInfo(Arrays.asList(tasks), mCanEnterDesktopMode,
+                            displayId);
                 }
             }
 
@@ -363,9 +365,9 @@
             if (enableOverviewOnConnectedDisplays()) {
                 return new CachedTaskInfo(tasks.stream().filter(
                         info -> ExternalDisplaysKt.getSafeDisplayId(info) == displayId).toList(),
-                        mCanEnterDesktopMode);
+                        mCanEnterDesktopMode, displayId);
             } else {
-                return new CachedTaskInfo(tasks, mCanEnterDesktopMode);
+                return new CachedTaskInfo(tasks, mCanEnterDesktopMode, displayId);
             }
         }
     }
@@ -385,8 +387,8 @@
      * during the lifecycle of the task.
      */
     public static class CachedTaskInfo {
-        // TODO: b/402362465 - Provide a valid value while tracking top task per display.
-        private final int mDisplayId = DEFAULT_DISPLAY;
+        // Only used when enableShellTopTaskTracking() is disabled.
+        private int mDisplayId = INVALID_DISPLAY;
         // Only used when enableShellTopTaskTracking() is disabled
         @Nullable
         private final TaskInfo mTopTask;
@@ -397,22 +399,23 @@
         @Nullable
         private final GroupedTaskInfo mVisibleTasks;
 
-        private final boolean mCanEnterDesktopMode;
+        private boolean mCanEnterDesktopMode = false;
 
         // Only used when enableShellTopTaskTracking() is enabled
-        CachedTaskInfo(@Nullable GroupedTaskInfo visibleTasks, boolean canEnterDesktopMode) {
+        CachedTaskInfo(@Nullable GroupedTaskInfo visibleTasks) {
             mAllCachedTasks = null;
             mTopTask = null;
             mVisibleTasks = visibleTasks;
-            mCanEnterDesktopMode = canEnterDesktopMode;
         }
 
         // Only used when enableShellTopTaskTracking() is disabled
-        CachedTaskInfo(@NonNull List<TaskInfo> allCachedTasks, boolean canEnterDesktopMode) {
+        CachedTaskInfo(@NonNull List<TaskInfo> allCachedTasks, boolean canEnterDesktopMode,
+                int displayId) {
             mVisibleTasks = null;
             mAllCachedTasks = allCachedTasks;
             mTopTask = allCachedTasks.isEmpty() ? null : allCachedTasks.get(0);
             mCanEnterDesktopMode = canEnterDesktopMode;
+            mDisplayId = displayId;
         }
 
         /**
@@ -522,7 +525,7 @@
                             && t.getActivityType() != ACTIVITY_TYPE_RECENTS)
                     .toList();
             return visibleNonExcludedTasks.isEmpty() ? null
-                    : new CachedTaskInfo(visibleNonExcludedTasks, mCanEnterDesktopMode);
+                    : new CachedTaskInfo(visibleNonExcludedTasks, mCanEnterDesktopMode, mDisplayId);
         }
 
         /**
@@ -555,7 +558,6 @@
 
         // TODO(346588978): Update this to return more than a single task once the callers
         //  are refactored.
-
         /**
          * Returns a {@link GroupedTaskInfo} which can be used as a placeholder until the true
          * object is loaded by the model.
diff --git a/quickstep/src/com/android/quickstep/util/ChoreographerFrameRateTracker.kt b/quickstep/src/com/android/quickstep/util/ChoreographerFrameRateTracker.kt
new file mode 100644
index 0000000..1b61a6a
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/ChoreographerFrameRateTracker.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.quickstep.util
+
+import android.util.TimeUtils
+import android.view.Choreographer
+import com.android.launcher3.util.window.RefreshRateTracker
+
+/** [RefreshRateTracker] using main thread [Choreographer] */
+object ChoreographerFrameRateTracker : RefreshRateTracker {
+
+    override val singleFrameMs: Int
+        get() =
+            Choreographer.getMainThreadInstance()?.let {
+                (it.frameIntervalNanos / TimeUtils.NANOS_PER_MS).toInt().coerceAtLeast(1)
+            } ?: 1
+}
diff --git a/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt b/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt
index 96a5733..8601350 100644
--- a/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt
+++ b/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt
@@ -65,7 +65,6 @@
 import com.android.launcher3.util.SplitConfigurationOptions.SplitSelectSource
 import com.android.launcher3.views.BaseDragLayer
 import com.android.quickstep.TaskViewUtils
-import com.android.quickstep.util.SplitScreenUtils.Companion.extractTopParentAndChildren
 import com.android.quickstep.views.FloatingAppPairView
 import com.android.quickstep.views.FloatingTaskView
 import com.android.quickstep.views.GroupedTaskView
@@ -982,14 +981,35 @@
         progressUpdater.setDuration(QuickstepTransitionManager.APP_LAUNCH_DURATION)
         progressUpdater.interpolator = Interpolators.EMPHASIZED
 
-        val splitTree: Pair<Change, List<Change>>? = extractTopParentAndChildren(transitionInfo)
-        check(splitTree != null) { "Could not find a split root candidate" }
-        val rootCandidate = splitTree.first
-        val stageRootTaskIds: Set<Int> = splitTree.second.map { it.taskInfo!!.taskId }.toSet()
-        val leafTasks: List<Change> =
-            transitionInfo.changes
-                .filter { it.taskInfo != null && it.taskInfo!!.parentTaskId in stageRootTaskIds }
-                .toList()
+        var rootCandidate: Change? = null
+
+        for (change in transitionInfo.changes) {
+            val taskInfo: RunningTaskInfo = change.taskInfo ?: continue
+
+            // TODO (b/316490565): Replace this logic when SplitBounds is available to
+            //  startAnimation() and we can know the precise taskIds of launching tasks.
+            if (
+                taskInfo.windowingMode == windowingMode &&
+                    (change.mode == TRANSIT_OPEN || change.mode == TRANSIT_TO_FRONT)
+            ) {
+                // Found one!
+                rootCandidate = change
+                break
+            }
+        }
+
+        // If we could not find a proper root candidate, something went wrong.
+        check(rootCandidate != null) { "Could not find a split root candidate" }
+
+        // Recurse up the tree until parent is null, then we've found our root.
+        var parentToken: WindowContainerToken? = rootCandidate.parent
+        while (parentToken != null) {
+            rootCandidate = transitionInfo.getChange(parentToken) ?: break
+            parentToken = rootCandidate.parent
+        }
+
+        // Make sure nothing weird happened, like getChange() returning null.
+        check(rootCandidate != null) { "Failed to find a root leash" }
 
         // Starting position is a 34% size tile centered in the middle of the screen.
         // Ending position is the full device screen.
@@ -1023,42 +1043,6 @@
                 override fun onAnimationEnd(animation: Animator) {
                     finishCallback.run()
                 }
-
-                override fun onAnimationStart(animation: Animator) {
-                    // Reset leaf and stage root tasks, animation can begin from freeform windows
-                    for (leaf in leafTasks) {
-                        val endAbsBounds = leaf.endAbsBounds
-
-                        t.setAlpha(leaf.leash, 1f)
-                        t.setCrop(
-                            leaf.leash,
-                            0f,
-                            0f,
-                            endAbsBounds.width().toFloat(),
-                            endAbsBounds.height().toFloat(),
-                        )
-                        t.setPosition(leaf.leash, 0f, 0f)
-                    }
-
-                    for (stageRoot in splitTree.second) {
-                        val endAbsBounds = stageRoot.endAbsBounds
-
-                        t.setAlpha(stageRoot.leash, 1f)
-                        t.setCrop(
-                            stageRoot.leash,
-                            0f,
-                            0f,
-                            endAbsBounds.width().toFloat(),
-                            endAbsBounds.height().toFloat(),
-                        )
-                        t.setPosition(
-                            stageRoot.leash,
-                            endAbsBounds.left.toFloat(),
-                            endAbsBounds.top.toFloat(),
-                        )
-                    }
-                    t.apply()
-                }
             }
         )
 
diff --git a/quickstep/src/com/android/quickstep/util/SplitScreenUtils.kt b/quickstep/src/com/android/quickstep/util/SplitScreenUtils.kt
index 7787e30..4005c5a 100644
--- a/quickstep/src/com/android/quickstep/util/SplitScreenUtils.kt
+++ b/quickstep/src/com/android/quickstep/util/SplitScreenUtils.kt
@@ -46,8 +46,8 @@
          * Given a TransitionInfo, generates the tree structure for those changes and extracts out
          * the top most root and it's two immediate children. Changes can be provided in any order.
          *
-         * @return null if no root is found, otherwise a [Pair] where first -> top most split root,
-         *         second -> [List] of 2, leftTop/bottomRight stage roots
+         * @return a [Pair] where first -> top most split root, second -> [List] of 2,
+         *   leftTop/bottomRight stage roots
          */
         fun extractTopParentAndChildren(
             transitionInfo: TransitionInfo
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index ea95206..3e4b953 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -7016,6 +7016,8 @@
             return;
         }
 
+        TaskView currentTaskView = getTaskViewAt(mCurrentPage);
+
         // We assume that a newly added desk is always empty and gets added to the left of the
         // `AddNewDesktopButton`.
         DesktopTaskView desktopTaskView =
@@ -7029,9 +7031,12 @@
 
         updateTaskSize();
         mUtils.updateChildTaskOrientations();
+        updateScrollSynchronously();
 
-        // TODO: b/401002178 - Recalculate the new current page such that the addition of the new
-        //  desk does not result in a change in the current scroll page.
+        // Set Current Page based on the stored TaskView.
+        if (currentTaskView != null) {
+            setCurrentPage(indexOfChild(currentTaskView));
+        }
     }
 
     @Override
diff --git a/quickstep/tests/multivalentTests/src/com/android/quickstep/AbsSwipeUpHandlerTestCase.java b/quickstep/tests/multivalentTests/src/com/android/quickstep/AbsSwipeUpHandlerTestCase.java
index 568da2d..6adb7b4 100644
--- a/quickstep/tests/multivalentTests/src/com/android/quickstep/AbsSwipeUpHandlerTestCase.java
+++ b/quickstep/tests/multivalentTests/src/com/android/quickstep/AbsSwipeUpHandlerTestCase.java
@@ -16,6 +16,8 @@
 
 package com.android.quickstep;
 
+import static android.view.Display.DEFAULT_DISPLAY;
+
 import static com.android.quickstep.AbsSwipeUpHandler.STATE_HANDLER_INVALIDATED;
 import static com.android.wm.shell.shared.ShellSharedConstants.KEY_EXTRA_SHELL_CAN_HAND_OFF_ANIMATION;
 import static com.android.wm.shell.shared.split.SplitBounds.KEY_EXTRA_SPLIT_BOUNDS;
@@ -102,7 +104,8 @@
             new ActivityManager.RunningTaskInfo();
     protected final TopTaskTracker.CachedTaskInfo mCachedTaskInfo =
             new TopTaskTracker.CachedTaskInfo(
-                    Collections.singletonList(mRunningTaskInfo), /* canEnterDesktopMode = */ false);
+                    Collections.singletonList(mRunningTaskInfo), /* canEnterDesktop = */ false,
+                    DEFAULT_DISPLAY);
     protected final RemoteAnimationTarget mRemoteAnimationTarget = new RemoteAnimationTarget(
             /* taskId= */ 0,
             /* mode= */ RemoteAnimationTarget.MODE_CLOSING,
@@ -191,7 +194,7 @@
     @Before
     public void setUpRecentsContainer() {
         mTaskAnimationManager = new TaskAnimationManager(mContext,
-                RecentsAnimationDeviceState.INSTANCE.get(mContext), Display.DEFAULT_DISPLAY);
+                RecentsAnimationDeviceState.INSTANCE.get(mContext), DEFAULT_DISPLAY);
         RecentsViewContainer recentsContainer = getRecentsContainer();
         RECENTS_VIEW recentsView = getRecentsView();
 
diff --git a/quickstep/tests/src/com/android/quickstep/AspectRatioSystemShortcutTests.kt b/quickstep/tests/src/com/android/quickstep/AspectRatioSystemShortcutTests.kt
new file mode 100644
index 0000000..10e85e6
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/AspectRatioSystemShortcutTests.kt
@@ -0,0 +1,285 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *            http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.quickstep
+
+import android.content.ComponentName
+import android.content.Context
+import android.content.ContextWrapper
+import android.content.Intent
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
+import android.platform.test.flag.junit.SetFlagsRule
+import android.provider.Settings
+import android.view.Display.DEFAULT_DISPLAY
+import android.view.LayoutInflater
+import android.view.Surface
+import android.view.View
+import android.view.ViewGroup
+import android.view.ViewGroup.LayoutParams.MATCH_PARENT
+import androidx.test.platform.app.InstrumentationRegistry
+import com.android.launcher3.AbstractFloatingView
+import com.android.launcher3.AbstractFloatingViewHelper
+import com.android.launcher3.Flags.enableRefactorTaskThumbnail
+import com.android.launcher3.InvariantDeviceProfile
+import com.android.launcher3.R
+import com.android.launcher3.logging.StatsLogManager
+import com.android.launcher3.logging.StatsLogManager.LauncherEvent
+import com.android.launcher3.logging.StatsLogManager.StatsLogger
+import com.android.launcher3.model.data.ItemInfo
+import com.android.launcher3.model.data.TaskViewItemInfo
+import com.android.launcher3.util.RunnableList
+import com.android.launcher3.util.SplitConfigurationOptions
+import com.android.launcher3.util.TransformingTouchDelegate
+import com.android.launcher3.util.WindowBounds
+import com.android.quickstep.orientation.LandscapePagedViewHandler
+import com.android.quickstep.recents.data.RecentsDeviceProfileRepository
+import com.android.quickstep.recents.data.RecentsRotationStateRepository
+import com.android.quickstep.recents.di.RecentsDependencies
+import com.android.quickstep.task.thumbnail.TaskThumbnailView
+import com.android.quickstep.util.RecentsOrientedState
+import com.android.quickstep.views.LauncherRecentsView
+import com.android.quickstep.views.RecentsViewContainer
+import com.android.quickstep.views.TaskContainer
+import com.android.quickstep.views.TaskThumbnailViewDeprecated
+import com.android.quickstep.views.TaskView
+import com.android.quickstep.views.TaskViewIcon
+import com.android.systemui.shared.recents.model.Task
+import com.android.systemui.shared.recents.model.Task.TaskKey
+import com.android.window.flags.Flags
+import com.google.common.truth.Truth.assertThat
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.mockito.Mockito
+import org.mockito.Mockito.eq
+import org.mockito.Mockito.isNull
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
+
+/** Test for [AspectRatioSystemShortcut] */
+class AspectRatioSystemShortcutTests {
+
+    @get:Rule val setFlagsRule = SetFlagsRule(SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT)
+
+    /** Spy on a concrete Context so we can reference real View, Layout, and Display properties. */
+    private val context: Context = spy(InstrumentationRegistry.getInstrumentation().targetContext)
+
+    /**
+     * RecentsViewContainer and its super-interface ActivityContext contain methods to convert
+     * themselves to a Context at runtime, and static methods to convert a Context back to
+     * themselves by traversing ContextWrapper layers.
+     *
+     * Thus there is an undocumented assumption that a RecentsViewContainer always extends Context.
+     * We need to mock all of the RecentsViewContainer methods but leave the Context-under-test
+     * intact.
+     *
+     * The simplest way is to extend ContextWrapper and delegate the RecentsViewContainer interface
+     * to a mock.
+     */
+    class RecentsViewContainerContextWrapper(base: Context) :
+        ContextWrapper(base), RecentsViewContainer by mock() {
+
+        private val statsLogManager: StatsLogManager = mock()
+
+        override fun getStatsLogManager(): StatsLogManager = statsLogManager
+
+        override fun startActivitySafely(v: View, intent: Intent, item: ItemInfo?): RunnableList? =
+            null
+    }
+
+    /**
+     * This <RecentsViewContainer & Context> is implicitly required in many parts of Launcher that
+     * require a Context. See RecentsViewContainerContextWrapper.
+     */
+    private val launcher: RecentsViewContainerContextWrapper =
+        spy(RecentsViewContainerContextWrapper(context))
+
+    private val recentsView: LauncherRecentsView = mock()
+    private val abstractFloatingViewHelper: AbstractFloatingViewHelper = mock()
+    private val taskOverlayFactory: TaskOverlayFactory =
+        mock(defaultAnswer = Mockito.RETURNS_DEEP_STUBS)
+    private val factory: TaskShortcutFactory =
+        AspectRatioSystemShortcut.createFactory(abstractFloatingViewHelper)
+    private val statsLogger = mock<StatsLogger>()
+    private val orientedState: RecentsOrientedState =
+        mock(defaultAnswer = Mockito.RETURNS_DEEP_STUBS)
+    private val taskView: TaskView =
+        LayoutInflater.from(context).cloneInContext(launcher).inflate(R.layout.task, null) as
+            TaskView
+
+    @Before
+    fun setUp() {
+        whenever(launcher.getOverviewPanel<LauncherRecentsView>()).thenReturn(recentsView)
+
+        val statsLogManager = launcher.getStatsLogManager()
+        whenever(statsLogManager.logger()).thenReturn(statsLogger)
+        whenever(statsLogger.withItemInfo(any())).thenReturn(statsLogger)
+
+        whenever(orientedState.orientationHandler).thenReturn(LandscapePagedViewHandler())
+        taskView.setLayoutParams(ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT))
+
+        if (enableRefactorTaskThumbnail()) {
+            val recentsDependencies = RecentsDependencies.maybeInitialize(launcher)
+            val scopeId = recentsDependencies.createRecentsViewScope(launcher)
+            recentsDependencies.provide(
+                RecentsRotationStateRepository::class.java,
+                scopeId,
+                { mock<RecentsRotationStateRepository>() }
+            )
+            recentsDependencies.provide(
+                RecentsDeviceProfileRepository::class.java,
+                scopeId,
+                { mock<RecentsDeviceProfileRepository>() }
+            )
+        }
+    }
+
+    @After
+    fun tearDown() {
+        if (enableRefactorTaskThumbnail()) {
+            RecentsDependencies.destroy(launcher)
+        }
+    }
+
+    /**
+     * When the corresponding feature flag is off, there will not be an option to open aspect ratio
+     * settings.
+     */
+    @DisableFlags(com.android.window.flags.Flags.FLAG_UNIVERSAL_RESIZABLE_BY_DEFAULT)
+    @Test
+    fun createShortcut_flaggedOff_notCreated() {
+        val task = createTask()
+        val taskContainer = createTaskContainer(task)
+
+        setScreenSizeDp(widthDp = 1200, heightDp = 800)
+        taskView.bind(task, orientedState, taskOverlayFactory)
+
+        assertThat(factory.getShortcuts(launcher, taskContainer)).isNull()
+    }
+
+    /**
+     * When the screen doesn't meet or exceed sw600dp (eg. phone, watch), there will not be an
+     * option to open aspect ratio settings.
+     */
+    @EnableFlags(com.android.window.flags.Flags.FLAG_UNIVERSAL_RESIZABLE_BY_DEFAULT)
+    @Test
+    fun createShortcut_sw599dp_notCreated() {
+        val task = createTask()
+        val taskContainer = createTaskContainer(task)
+
+        setScreenSizeDp(widthDp = 599, heightDp = 599)
+        taskView.bind(task, orientedState, taskOverlayFactory)
+
+        assertThat(factory.getShortcuts(launcher, taskContainer)).isNull()
+    }
+
+    /**
+     * When the screen does meet or exceed sw600dp (eg. tablet, inner foldable screen, home cinema)
+     * there will be an option to open aspect ratio settings.
+     */
+    @EnableFlags(com.android.window.flags.Flags.FLAG_UNIVERSAL_RESIZABLE_BY_DEFAULT)
+    @Test
+    fun createShortcut_sw800dp_created_andOpensSettings() {
+        val task = createTask()
+        val taskContainer = spy(createTaskContainer(task))
+        val taskViewItemInfo = mock<TaskViewItemInfo>()
+        doReturn(taskViewItemInfo).whenever(taskContainer).itemInfo
+
+        setScreenSizeDp(widthDp = 1200, heightDp = 800)
+        taskView.bind(task, orientedState, taskOverlayFactory)
+
+        val shortcuts = factory.getShortcuts(launcher, taskContainer)
+        assertThat(shortcuts).hasSize(1)
+
+        // On clicking the shortcut:
+        val shortcut = shortcuts!!.first() as AspectRatioSystemShortcut
+        shortcut.onClick(taskView)
+
+        // 1) Panel should be closed
+        val allTypesExceptRebindSafe =
+            AbstractFloatingView.TYPE_ALL and AbstractFloatingView.TYPE_REBIND_SAFE.inv()
+        verify(abstractFloatingViewHelper).closeOpenViews(launcher, true, allTypesExceptRebindSafe)
+
+        // 2) Compat mode settings activity should be launched
+        val intentCaptor = argumentCaptor<Intent>()
+        verify(launcher)
+            .startActivitySafely(any<View>(), intentCaptor.capture(), eq(taskViewItemInfo))
+        val intent = intentCaptor.firstValue!!
+        assertThat(intent.action).isEqualTo(Settings.ACTION_MANAGE_USER_ASPECT_RATIO_SETTINGS)
+
+        // 3) Shortcut tap event should be reported
+        verify(statsLogger).withItemInfo(taskViewItemInfo)
+        verify(statsLogger).log(LauncherEvent.LAUNCHER_ASPECT_RATIO_SETTINGS_SYSTEM_SHORTCUT_TAP)
+    }
+
+    /**
+     * Overrides the screen size reported in the DeviceProfile, keeping the same pixel density as
+     * the underlying device and adjusting the pixel width/height to match what is required.
+     */
+    private fun setScreenSizeDp(widthDp: Int, heightDp: Int) {
+        val density = context.resources.configuration.densityDpi
+        val widthPx = widthDp * density / 160
+        val heightPx = heightDp * density / 160
+
+        val screenBounds = WindowBounds(widthPx, heightPx, widthPx, heightPx, Surface.ROTATION_0)
+        val deviceProfile =
+            InvariantDeviceProfile.INSTANCE[context].getDeviceProfile(context)
+                .toBuilder(context)
+                .setWindowBounds(screenBounds)
+                .build()
+        whenever(launcher.getDeviceProfile()).thenReturn(deviceProfile)
+    }
+
+    /** Create a (very) fake task for testing. */
+    private fun createTask() =
+        Task(
+            TaskKey(
+                /* id */ 1,
+                /* windowingMode */ 0,
+                Intent(),
+                ComponentName("", ""),
+                /* userId */ 0,
+                /* lastActiveTime */ 2000,
+                DEFAULT_DISPLAY,
+                ComponentName("", ""),
+                /* numActivities */ 1,
+                /* isTopActivityNoDisplay */ false,
+                /* isActivityStackTransparent */ false,
+            )
+        )
+
+    /** Create TaskContainer out of a given Task and fill in the rest with mocks. */
+    private fun createTaskContainer(task: Task) =
+        TaskContainer(
+            taskView,
+            task,
+            if (enableRefactorTaskThumbnail()) mock<TaskThumbnailView>()
+            else mock<TaskThumbnailViewDeprecated>(),
+            mock<TaskViewIcon>(),
+            mock<TransformingTouchDelegate>(),
+            SplitConfigurationOptions.STAGE_POSITION_UNDEFINED,
+            digitalWellBeingToast = null,
+            showWindowsView = null,
+            taskOverlayFactory,
+        )
+}
diff --git a/quickstep/tests/src/com/android/quickstep/DesktopSystemShortcutTest.kt b/quickstep/tests/src/com/android/quickstep/DesktopSystemShortcutTest.kt
index 5f61ba2..8a2393d 100644
--- a/quickstep/tests/src/com/android/quickstep/DesktopSystemShortcutTest.kt
+++ b/quickstep/tests/src/com/android/quickstep/DesktopSystemShortcutTest.kt
@@ -16,9 +16,11 @@
 
 package com.android.quickstep
 
+import android.Manifest.permission.SYSTEM_ALERT_WINDOW
 import android.content.ComponentName
 import android.content.Context
 import android.content.Intent
+import android.content.pm.PackageInfo
 import android.content.pm.PackageManager
 import android.platform.test.annotations.DisableFlags
 import android.platform.test.annotations.EnableFlags
@@ -44,6 +46,7 @@
 import com.android.quickstep.views.TaskThumbnailViewDeprecated
 import com.android.quickstep.views.TaskView
 import com.android.quickstep.views.TaskViewIcon
+import com.android.quickstep.views.TaskViewType
 import com.android.systemui.shared.recents.model.Task
 import com.android.systemui.shared.recents.model.Task.TaskKey
 import com.android.window.flags.Flags
@@ -54,6 +57,8 @@
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.ArgumentMatchers.anyString
 import org.mockito.Mockito.`when`
 import org.mockito.kotlin.any
 import org.mockito.kotlin.doReturn
@@ -74,12 +79,12 @@
     private val statsLogManager: StatsLogManager = mock()
     private val statsLogger: StatsLogManager.StatsLogger = mock()
     private val recentsView: LauncherRecentsView = mock()
-    private val taskView: TaskView = mock()
     private val abstractFloatingViewHelper: AbstractFloatingViewHelper = mock()
     private val overlayFactory: TaskOverlayFactory = mock()
     private val factory: TaskShortcutFactory =
         DesktopSystemShortcut.createFactory(abstractFloatingViewHelper)
     private val context: Context = spy(InstrumentationRegistry.getInstrumentation().targetContext)
+    private val taskView: TaskView = createTaskViewMock()
 
     private lateinit var mockitoSession: StaticMockitoSession
 
@@ -135,6 +140,64 @@
     }
 
     @Test
+    @EnableFlags(
+        Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY,
+        Flags.FLAG_ENABLE_MODALS_FULLSCREEN_WITH_PERMISSION,
+    )
+    fun createDesktopTaskShortcutFactoryPermissionEnabledAllowed_transparentTask() {
+        val packageManager: PackageManager = mock()
+        setUpTransparentPermission(packageManager, isAllowed = true)
+        val baseComponent = ComponentName("", /* class */ "")
+        val taskKey =
+            TaskKey(
+                /* id */ 1,
+                /* windowingMode */ 0,
+                Intent(),
+                baseComponent,
+                /* userId */ 0,
+                /* lastActiveTime */ 2000,
+                DEFAULT_DISPLAY,
+                baseComponent,
+                /* numActivities */ 1,
+                /* isTopActivityNoDisplay */ false,
+                /* isActivityStackTransparent */ true,
+            )
+        val taskContainer = createTaskContainer(Task(taskKey))
+        val shortcuts = factory.getShortcuts(launcher, taskContainer)
+        assertThat(shortcuts).isNull()
+    }
+
+    @Test
+    @EnableFlags(
+        Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY,
+        Flags.FLAG_ENABLE_MODALS_FULLSCREEN_WITH_PERMISSION,
+    )
+    fun createDesktopTaskShortcutFactoryPermissionEnabledNotAllowed_transparentTask() {
+        val packageManager: PackageManager = mock()
+        setUpTransparentPermission(packageManager, isAllowed = false)
+        val baseComponent = ComponentName("", /* class */ "")
+        val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
+        whenever(packageManager.getHomeActivities(any())).thenReturn(homeActivities)
+        val taskKey =
+            TaskKey(
+                /* id */ 1,
+                /* windowingMode */ 0,
+                Intent(),
+                baseComponent,
+                /* userId */ 0,
+                /* lastActiveTime */ 2000,
+                DEFAULT_DISPLAY,
+                baseComponent,
+                /* numActivities */ 1,
+                /* isTopActivityNoDisplay */ false,
+                /* isActivityStackTransparent */ true,
+            )
+        val taskContainer = createTaskContainer(Task(taskKey).apply { isDockable = true })
+        val shortcuts = factory.getShortcuts(launcher, taskContainer)
+        assertThat(shortcuts).isNotEmpty()
+    }
+
+    @Test
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
     fun createDesktopTaskShortcutFactory_systemUiTask() {
         val sysUiPackageName: String = context.resources.getString(R.string.config_systemUi)
@@ -162,8 +225,8 @@
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
     fun createDesktopTaskShortcutFactory_defaultHomeTask() {
         val packageManager: PackageManager = mock()
-        val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
         whenever(context.packageManager).thenReturn(packageManager)
+        val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
         whenever(packageManager.getHomeActivities(any())).thenReturn(homeActivities)
         val taskKey =
             TaskKey(
@@ -262,4 +325,27 @@
             showWindowsView = null,
             overlayFactory,
         )
+
+    private fun setUpTransparentPermission(packageManager: PackageManager, isAllowed: Boolean) {
+        val packageInfo: PackageInfo = mock()
+        if (isAllowed) {
+            packageInfo.requestedPermissions = arrayOf(SYSTEM_ALERT_WINDOW)
+        }
+        whenever(context.packageManager).thenReturn(packageManager)
+        whenever(
+                packageManager.getPackageInfoAsUser(
+                    anyString(),
+                    eq(PackageManager.GET_PERMISSIONS),
+                    anyInt(),
+                )
+            )
+            .thenReturn(packageInfo)
+    }
+
+    private fun createTaskViewMock(): TaskView {
+        val taskView: TaskView = mock()
+        whenever(taskView.type).thenReturn(TaskViewType.SINGLE)
+        whenever(taskView.context).thenReturn(context)
+        return taskView
+    }
 }
diff --git a/quickstep/tests/src/com/android/quickstep/InputConsumerUtilsTest.java b/quickstep/tests/src/com/android/quickstep/InputConsumerUtilsTest.java
index 1464ca8..655560c 100644
--- a/quickstep/tests/src/com/android/quickstep/InputConsumerUtilsTest.java
+++ b/quickstep/tests/src/com/android/quickstep/InputConsumerUtilsTest.java
@@ -22,9 +22,11 @@
 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.mock;
 import static org.mockito.Mockito.when;
+import static org.mockito.kotlin.StubberKt.doCallRealMethod;
 
 import android.annotation.NonNull;
 import android.os.Looper;
@@ -306,6 +308,16 @@
     }
 
     @Test
+    public void testNewBaseConsumer_noGestureBlockedTask_returnsOtherActivityInputConsumer() {
+        doCallRealMethod().when(mDeviceState).setGestureBlockingTaskId(anyInt());
+        mDeviceState.setGestureBlockingTaskId(-1);
+        when(mDeviceState.isGestureBlockedTask(any())).thenCallRealMethod();
+
+        assertCorrectInputConsumer(this::createBaseInputConsumer, OtherActivityInputConsumer.class,
+                InputConsumer.TYPE_OTHER_ACTIVITY);
+    }
+
+    @Test
     public void testNewBaseConsumer_containsOtherActivityInputConsumer() {
         assertCorrectInputConsumer(
                 this::createBaseInputConsumer,
diff --git a/res/drawable/ic_aspect_ratio.xml b/res/drawable/ic_aspect_ratio.xml
new file mode 100644
index 0000000..aafaac4
--- /dev/null
+++ b/res/drawable/ic_aspect_ratio.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2025 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/textColorPrimary">
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M19,12h-2v3h-3v2h5v-5zM7,9h3L10,7L5,7v5h2L7,9zM21,3L3,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2L23,5c0,-1.1 -0.9,-2 -2,-2zM21,19.01L3,19.01L3,4.99h18v14.02z"/>
+</vector>
diff --git a/res/layout/widgets_list_row_header.xml b/res/layout/widgets_list_row_header.xml
index 98f9dac..2a7d22c 100644
--- a/res/layout/widgets_list_row_header.xml
+++ b/res/layout/widgets_list_row_header.xml
@@ -45,25 +45,19 @@
             android:id="@+id/app_title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            style="@style/WidgetListHeader.Title"
             android:layout_gravity="start|center_vertical"
             android:ellipsize="end"
             android:maxLines="1"
-            android:textColor="?attr/widgetPickerHeaderAppTitleColor"
-            android:textSize="@dimen/widget_picker_header_app_title_font_size"
-            android:textFontWeight="@integer/widget_picker_header_app_title_font_weight"
-            android:lineHeight="@dimen/widget_picker_header_app_title_line_height"
             tools:text="App name" />
 
         <TextView
             android:id="@+id/app_subtitle"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            style="@style/WidgetListHeader.SubTitle"
             android:ellipsize="end"
             android:maxLines="1"
-            android:textColor="?attr/widgetPickerHeaderAppSubtitleColor"
-            android:textSize="@dimen/widget_picker_header_app_subtitle_font_size"
-            android:textFontWeight="@integer/widget_picker_header_app_subtitle_font_weight"
-            android:lineHeight="@dimen/widget_picker_header_app_subtitle_line_height"
             tools:text="m widgets, n shortcuts" />
 
     </LinearLayout>
diff --git a/res/layout/widgets_list_row_header_two_pane.xml b/res/layout/widgets_list_row_header_two_pane.xml
index d4baf0a..4827ed4 100644
--- a/res/layout/widgets_list_row_header_two_pane.xml
+++ b/res/layout/widgets_list_row_header_two_pane.xml
@@ -47,13 +47,10 @@
             android:id="@+id/app_title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            style="@style/WidgetListHeader.Title"
             android:layout_gravity="start|center_vertical"
             android:ellipsize="end"
             android:maxLines="1"
-            android:textColor="?attr/widgetPickerHeaderAppTitleColor"
-            android:textSize="@dimen/widget_picker_header_app_title_font_size"
-            android:textFontWeight="@integer/widget_picker_header_app_title_font_weight"
-            android:lineHeight="@dimen/widget_picker_header_app_title_line_height"
             android:duplicateParentState="true"
             tools:text="App name" />
 
@@ -61,12 +58,9 @@
             android:id="@+id/app_subtitle"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            style="@style/WidgetListHeader.SubTitle"
             android:ellipsize="end"
             android:maxLines="1"
-            android:textColor="?attr/widgetPickerHeaderAppSubtitleColor"
-            android:textSize="@dimen/widget_picker_header_app_subtitle_font_size"
-            android:textFontWeight="@integer/widget_picker_header_app_subtitle_font_weight"
-            android:lineHeight="@dimen/widget_picker_header_app_subtitle_line_height"
             android:duplicateParentState="true"
             tools:text="m widgets, n shortcuts" />
 
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 962a018..1b206ac 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Privaat Ruimte-oorgang"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Installeer"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Installeer apps in privaat ruimte"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Voeg lêers en meer by privaat ruimte"</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 1fbff54..204c9af 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"የግል ቦታ ሽግግር"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"ይጫኑ"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"መተግበሪያዎችን ወደ የግል ቦታ ይጫኑ"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"ወደ የግል ቦታ ፋይሎች እና ሌሎችንም ያክሉ"</string>
 </resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 87301ff..703b08a 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"ব্যক্তিগত স্পে’চৰ স্থানান্তৰণ"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"ইনষ্টল কৰক"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"এপ্‌সমূহ প্ৰাইভেট স্পেচত ইনষ্টল কৰক"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"প্ৰাইভেট স্পে’চত ফাইল আৰু অধিক যোগ দিয়ক"</string>
 </resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index f7c68d5..07822f6 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"ব্যক্তিগত স্পেস ট্রানজিট করা"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"ইনস্টল করুন"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"প্রাইভেট স্পেসে অ্যাপ ইনস্টল করুন"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"প্রাইভেট স্পেসে ফাইল ও আরও অনেক কিছু যোগ করুন"</string>
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 96d567c..80f50ea 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Prelazak u privatan prostor"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instalirajte"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instaliranje aplikacija u privatni prostor"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Dodavanje fajlova i drugih stavki u privatni prostor"</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 839c681..f93a19e 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Canvia a Espai privat"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instal·la"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instal·la les aplicacions a Espai privat"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Afegeix fitxers i més a Espai privat"</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index e297418..f8cab17 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Převádění soukromého prostoru"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Nainstalovat"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instalovat aplikace do soukromého prostoru"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Přidejte do soukromého prostoru soubory a další položky"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 9691fb0..4d7cd67 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Ændringer af tilstanden for det private område"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Installer"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Installer apps i privat område"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Føj filer m.m. til dit private område"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index fc390f6..36bb55f 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Sperrzustand des vertraulichen Profils wird gerade geändert"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Installieren"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Apps im vertraulichen Profil installieren"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Dateien und mehr zum vertraulichen Profil hinzufügen"</string>
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 46a9a35..d53ec23 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Private Space transitioning"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Install"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Install apps to private space"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Add files and more to private space"</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 46a9a35..d53ec23 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Private Space transitioning"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Install"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Install apps to private space"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Add files and more to private space"</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 46a9a35..d53ec23 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Private Space transitioning"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Install"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Install apps to private space"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Add files and more to private space"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index d5476ca..b1ce80e 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Pasar a Espacio privado"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instalar"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instala las apps en el espacio privado"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Agrega archivos y mucho más al Espacio privado"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 7e8ff04..f01900e 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Cambiar a espacio privado"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instalar"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Descargar aplicaciones en el espacio privado"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Añade archivos y más al espacio privado"</string>
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 3a4b3e2..de6c231 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Privaatse ruumi üleviimine"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Installi"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Rakenduste installimine privaatses ruumis"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Privaatsesse ruumi failide ja muu sisu lisamine"</string>
 </resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 8a84353..af54389 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Eremu pribaturako trantsizioa"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instalatu"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instalatu aplikazioak eremu pribatuan"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Gehitu fitxategiak eta gauza gehiago eremu pribatuan"</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index ff27a1b..143b3c2 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Yksityisen tilan siirtäminen"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Asenna"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Asenna sovelluksia yksityiseen tilaan"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Lisää tiedostoja ja muuta yksityiseen tilaan"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 0c62a9d..acbeac0 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Transition vers Espace privé"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Installer"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Installer des applis dans l\'espace privé"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Ajoutez des fichiers et bien plus à votre espace privé"</string>
 </resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 21e16cc..46fc492 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Transición ao espazo privado"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instalar"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instalar as aplicacións no espazo privado"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Engade ficheiros e máis elementos ao espazo privado"</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 3aad85f..c86b210 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"प्राइवेट स्पेस की सेटिंग में बदलाव किया जा रहा है"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"इंस्टॉल करें"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"प्राइवेट स्पेस में ऐप्लिकेशन इंस्टॉल करें"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"प्राइवेट स्पेस में फ़ाइलें और अन्य चीज़ें जोड़ें"</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index bdb088b..1b018df 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Prelazak na privatni prostor"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instalirajte"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instaliranje aplikacija u privatni prostor"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Dodajte datoteke i druge sadržaje u privatni prostor"</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 8abfaac..b3ae8f2 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Átállás privát területre…"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Telepítés"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Alkalmazások telepítése privát területre"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Fájlok és egyebek hozzáadása a privát területhez"</string>
 </resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 9c6fc18..29ef36c 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Անցում մասնավոր տարածք"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Տեղադրել"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Հավելվածների տեղադրում անձնական տարածքում"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Ձեր մասնավոր տարածքում ավելացրեք ֆայլեր և ավելին"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 986f36c..abe9f30 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Ruang Pribadi Bertransisi"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instal"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instal aplikasi ke Ruang Pribadi"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Tambahkan file dan lainnya ke Ruang Privasi"</string>
 </resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 1c24006..b5368f4 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Leynirými að breytast"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Setja upp"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Setja upp forrit í leynirými"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Bættu skrám og fleiru við leynirými"</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 1d3eef1..0f791e9 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -131,8 +131,7 @@
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"טפט וסגנון"</string>
     <string name="edit_home_screen" msgid="8947858375782098427">"עריכה של מסך הבית"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"הגדרות של מסך הבית"</string>
-    <!-- no translation found for all_apps_home_screen (8658178652647896497) -->
-    <skip />
+    <string name="all_apps_home_screen" msgid="8658178652647896497">"אפליקציות"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"הושבת על ידי מנהל המערכת שלך"</string>
     <string name="allow_rotation_title" msgid="7222049633713050106">"סיבוב מסך הבית"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"כאשר מסובבים את הטלפון"</string>
@@ -186,10 +185,8 @@
     <string name="action_decrease_height" msgid="282377193880900022">"הקטנת גובה"</string>
     <string name="widget_resized" msgid="9130327887929620">"גודל הווידג\'ט שונה - רוחב <xliff:g id="NUMBER_0">%1$s</xliff:g> גובה <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
     <string name="action_deep_shortcut" msgid="4766835855579976045">"תפריט קיצורי הדרך"</string>
-    <!-- no translation found for widget_frame_name (8782828448471444270) -->
-    <skip />
-    <!-- no translation found for action_close (1077760267194136901) -->
-    <skip />
+    <string name="widget_frame_name" msgid="8782828448471444270">"מסגרת שינוי גודל הווידג\'ט של <xliff:g id="STRING">%1$s</xliff:g>"</string>
+    <string name="action_close" msgid="1077760267194136901">"סגירה"</string>
     <string name="action_dismiss_notification" msgid="5909461085055959187">"סגירה"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"סגירה"</string>
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"אישי"</string>
@@ -220,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"מעבר למרחב הפרטי"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"התקנה"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"התקנת אפליקציות במרחב הפרטי"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"הוספת קבצים ופריטים נוספים למרחב הפרטי"</string>
 </resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index c789a8f..4360f55 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -131,8 +131,7 @@
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Тұсқағаз және стиль"</string>
     <string name="edit_home_screen" msgid="8947858375782098427">"Негізгі экранды өзгерту"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Негізгі экран параметрлері"</string>
-    <!-- no translation found for all_apps_home_screen (8658178652647896497) -->
-    <skip />
+    <string name="all_apps_home_screen" msgid="8658178652647896497">"Қолданбалар"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Әкімші өшірді"</string>
     <string name="allow_rotation_title" msgid="7222049633713050106">"Негізгі экранды бұруға рұқсат ету"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Телефон бұрылғанда"</string>
@@ -186,10 +185,8 @@
     <string name="action_decrease_height" msgid="282377193880900022">"Биіктігін азайту"</string>
     <string name="widget_resized" msgid="9130327887929620">"Виджет өлшемінің ені <xliff:g id="NUMBER_0">%1$s</xliff:g>, биіктігі <xliff:g id="NUMBER_1">%2$s</xliff:g> болып өзгертілді"</string>
     <string name="action_deep_shortcut" msgid="4766835855579976045">"Жылдам пәрмен мәзірі"</string>
-    <!-- no translation found for widget_frame_name (8782828448471444270) -->
-    <skip />
-    <!-- no translation found for action_close (1077760267194136901) -->
-    <skip />
+    <string name="widget_frame_name" msgid="8782828448471444270">"<xliff:g id="STRING">%1$s</xliff:g> үшін виджет өлшемін өзгерту"</string>
+    <string name="action_close" msgid="1077760267194136901">"Жабу"</string>
     <string name="action_dismiss_notification" msgid="5909461085055959187">"Бас тарту"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"Жабу"</string>
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"Жеке"</string>
@@ -220,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Жеке бөлмеге өту"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Орнату"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Қолданбаларды \"Құпия кеңістікке\" орнатыңыз."</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Құпия кеңістікке файлдар мен басқа да элементтерді қосыңыз"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index ec54bd6..f1f050f 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"비공개 스페이스 전환"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"설치"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"비공개 스페이스에 앱 설치"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"비공개 스페이스에 파일 등 추가"</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index d1cbf9a..141c643 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Privačios erdvės perkėlimas"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Įdiegti"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Įdiegti programas privačioje erdvėje"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Pridėkite failų ir kt. prie privačios erdvės"</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index fa4dd27..723a742 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -131,8 +131,7 @@
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Fona tapete un stils"</string>
     <string name="edit_home_screen" msgid="8947858375782098427">"Rediģēt sākuma ekrānu"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Sākumlapas iestatījumi"</string>
-    <!-- no translation found for all_apps_home_screen (8658178652647896497) -->
-    <skip />
+    <string name="all_apps_home_screen" msgid="8658178652647896497">"Lietotnes"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Atspējojis administrators"</string>
     <string name="allow_rotation_title" msgid="7222049633713050106">"Atļaut sākuma ekrāna pagriešanu"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Pagriežot tālruni"</string>
@@ -186,10 +185,8 @@
     <string name="action_decrease_height" msgid="282377193880900022">"Samazināt augstumu"</string>
     <string name="widget_resized" msgid="9130327887929620">"Logrīka lielums mainīts — platums: <xliff:g id="NUMBER_0">%1$s</xliff:g>, augstums: <xliff:g id="NUMBER_1">%2$s</xliff:g>."</string>
     <string name="action_deep_shortcut" msgid="4766835855579976045">"Saīsnes izvēlne"</string>
-    <!-- no translation found for widget_frame_name (8782828448471444270) -->
-    <skip />
-    <!-- no translation found for action_close (1077760267194136901) -->
-    <skip />
+    <string name="widget_frame_name" msgid="8782828448471444270">"Logrīka lieluma maiņas rāmis lietotnei <xliff:g id="STRING">%1$s</xliff:g>"</string>
+    <string name="action_close" msgid="1077760267194136901">"Aizvērt"</string>
     <string name="action_dismiss_notification" msgid="5909461085055959187">"Nerādīt"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"Aizvērt"</string>
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"Personīgās lietotnes"</string>
@@ -220,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Pāriet uz privāto mapi"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instalēt"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instalējiet lietotnes privātajā telpā."</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Pievienojiet failus un citu saturu privātajai telpai"</string>
 </resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 631e310..f017ad7 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Private Space-н шилжилт"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Суулгах"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Хувийн орон зайд аппууд суулгана уу"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Хаалттай орон зайд файл болон бусад зүйлийг нэмэх"</string>
 </resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index c467055..258b821 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"သီးသန့်ချတ်ခန်း အပြောင်းအလဲ"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"ထည့်သွင်းရန်"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"‘သီးသန့်နေရာ’ တွင် အက်ပ်များ ထည့်သွင်းနိုင်သည်"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"‘သီးသန့်နေရာ’ တွင် ဖိုင်နှင့် အခြားအရာများ ထည့်နိုင်သည်"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index f4e10fc..200765c 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Private Space-overgang"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Installer"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Installer apper i privat område"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Legg til filer og annet i det private området"</string>
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 00cbba0..a368ad2 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"निजी स्पेस ट्रान्जिसन गरिँदै छ"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"इन्स्टल गर्नुहोस्"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"निजी स्पेसमा एपहरू इन्स्टल गर्नुहोस्"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"निजी स्पेसमा फाइल र अन्य कुरा हाल्नुहोस्"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 5fa50c6..9558cbf 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Overschakelen naar privéruimte"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Installeren"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Apps installeren in privégedeelte"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Bestanden en meer toevoegen aan privégedeelte"</string>
 </resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index d2b1906..8351ecb 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"ପ୍ରାଇଭେଟ ସ୍ପେସ ଟ୍ରାଞ୍ଜିସନିଂ"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"ଇନଷ୍ଟଲ କରନ୍ତୁ"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"ଆପ୍ସକୁ ପ୍ରାଇଭେଟ ସ୍ପେସରେ ଇନଷ୍ଟଲ କରନ୍ତୁ"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"ପ୍ରାଇଭେଟ ସ୍ପେସରେ ଫାଇଲ ଏବଂ ଅଧିକ ଯୋଗ କରନ୍ତୁ"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 327c5ea..d1960a4 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Przenoszenie obszaru prywatnego"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Zainstaluj"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Zainstaluj aplikacje w przestrzeni prywatnej"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Dodawanie plików i innych elementów do przestrzeni prywatnej"</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 9c7261b..de018c4 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -131,8 +131,7 @@
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Plano de fundo e estilo"</string>
     <string name="edit_home_screen" msgid="8947858375782098427">"Editar tela inicial"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Configurações da tela inicial"</string>
-    <!-- no translation found for all_apps_home_screen (8658178652647896497) -->
-    <skip />
+    <string name="all_apps_home_screen" msgid="8658178652647896497">"Apps"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Desativado pelo administrador"</string>
     <string name="allow_rotation_title" msgid="7222049633713050106">"Permitir a rotação da tela inicial"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Quando o smartphone for girado"</string>
@@ -186,10 +185,8 @@
     <string name="action_decrease_height" msgid="282377193880900022">"Diminuir altura"</string>
     <string name="widget_resized" msgid="9130327887929620">"Widget redimensionado para a largura <xliff:g id="NUMBER_0">%1$s</xliff:g>, altura <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
     <string name="action_deep_shortcut" msgid="4766835855579976045">"Menu de atalhos"</string>
-    <!-- no translation found for widget_frame_name (8782828448471444270) -->
-    <skip />
-    <!-- no translation found for action_close (1077760267194136901) -->
-    <skip />
+    <string name="widget_frame_name" msgid="8782828448471444270">"Frame de redimensionamento do widget para <xliff:g id="STRING">%1$s</xliff:g>"</string>
+    <string name="action_close" msgid="1077760267194136901">"Fechar"</string>
     <string name="action_dismiss_notification" msgid="5909461085055959187">"Dispensar"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"Fechar"</string>
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"Pessoais"</string>
@@ -220,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Espaço particular em transição"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instalar"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instalar apps no espaço privado"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Adicione arquivos e muito mais ao espaço privado"</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 9a61bb4..9683705 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Tranziție pentru spațiul privat"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instalează"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instalează aplicații în Spațiul privat"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Adaugă fișiere și altele în Spațiul privat"</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 504ca56..2fe2840 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Prechod súkromného priestoru"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Inštalovať"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Inštalácia aplikácií v súkromnom priestore"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Pridajte do súkromného priestoru súbory a ďalšie položky"</string>
 </resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 2906849..1279640 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Kalimi te \"Hapësira private\""</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Instalo"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Instalo aplikacionet në hapësirën private"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Shto skedarë dhe më shumë te \"Hapësira private\""</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 898873a..b326a6f 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Överföring av privat rum"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Installera"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Installera appar i privat rum"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Lägg till filer och annat i det privata utrymmet"</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index c6ee27b..576e247 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Mabadiliko ya Nafasi ya Faragha"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Weka"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Sakinisha programu kwenye Sehemu ya Faragha"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Weka faili na mengineyo kwenye Sehemu ya Faragha"</string>
 </resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 73782da..e252bf7 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"தனிப்பட்ட சேமிப்பிடத்திற்கு மாற்றுகிறது"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"நிறுவுக"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"தனிப்பட்ட சேமிப்பிடத்தில் ஆப்ஸை நிறுவும்"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"ரகசிய இடத்தில் ஃபைல்கள் மற்றும் பலவற்றைச் சேர்க்கலாம்"</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index c5504fe..4daeb8a 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Gizli Alana Geçiş"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Yükle"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Uygulamaları özel alana yükleyin"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Özel alana dosya ve başka öğeler ekleyin"</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 318944f..961e6e7 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -131,8 +131,7 @@
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Оформлення й стиль"</string>
     <string name="edit_home_screen" msgid="8947858375782098427">"Редагувати головний екран"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Налаштування головного екрана"</string>
-    <!-- no translation found for all_apps_home_screen (8658178652647896497) -->
-    <skip />
+    <string name="all_apps_home_screen" msgid="8658178652647896497">"Додатки"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Вимкнув адміністратор"</string>
     <string name="allow_rotation_title" msgid="7222049633713050106">"Дозволити обертання головного екрана"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Коли телефон обертається"</string>
@@ -186,10 +185,8 @@
     <string name="action_decrease_height" msgid="282377193880900022">"Зменшити висоту"</string>
     <string name="widget_resized" msgid="9130327887929620">"Розміри віджета змінено на <xliff:g id="NUMBER_0">%1$s</xliff:g> завширшки та <xliff:g id="NUMBER_1">%2$s</xliff:g> заввишки"</string>
     <string name="action_deep_shortcut" msgid="4766835855579976045">"Меню швидкого доступу"</string>
-    <!-- no translation found for widget_frame_name (8782828448471444270) -->
-    <skip />
-    <!-- no translation found for action_close (1077760267194136901) -->
-    <skip />
+    <string name="widget_frame_name" msgid="8782828448471444270">"Рамка для зміни розміру віджета \"<xliff:g id="STRING">%1$s</xliff:g>\""</string>
+    <string name="action_close" msgid="1077760267194136901">"Закрити"</string>
     <string name="action_dismiss_notification" msgid="5909461085055959187">"Закрити"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"Закрити"</string>
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"Особисті додатки"</string>
@@ -220,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Перехід у приватний простір"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Установити"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Установити додатки в особистому просторі"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Додавайте файли й інші об’єкти в приватний простір"</string>
 </resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 36000c0..ec0bb05 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"نجی اسپیس کی منتقلی"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"انسٹال کریں"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"پرائیویٹ اسپیس میں ایپس انسٹال کریں"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"پرائیویٹ اسپیس میں فائلز وغیرہ شامل کریں"</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index a3ecb4e..c40fbe9 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Chuyển đổi sang không gian riêng tư"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Cài đặt"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Cài đặt ứng dụng vào Không gian riêng tư"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Thêm tệp và nội dung khác vào Không gian riêng tư"</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 0b610dc..672a911 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"私密空间转换"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"安装"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"将应用安装到私密空间"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"将文件等内容添加到私密空间"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 6262df5..dc51d9b 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"轉為「私人空間」"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"安裝"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"將應用程式安裝在「私人空間」中"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"新增檔案和其他內容到「私人空間」"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 9bb1056..531742b 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"轉換私人空間狀態"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"安裝"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"將應用程式安裝在私人空間中"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"將檔案和其他內容新增至私人空間"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 82fafc6..d4338d4 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -217,6 +217,5 @@
     <string name="ps_container_transition" msgid="8667331812048014412">"Ukuguqulwa Kwendawo Yangasese"</string>
     <string name="ps_add_button_label" msgid="8127988716897128773">"Faka"</string>
     <string name="ps_add_button_content_description" msgid="3254274107740952556">"Faka ama-app Endaweni Engasese"</string>
-    <!-- no translation found for ps_app_content_description (1129133475892816226) -->
-    <skip />
+    <string name="ps_app_content_description" msgid="1129133475892816226">"Faka amafayela nokunye Endaweni engasese"</string>
 </resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 1ecac33..b0e9cd0 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -40,6 +40,7 @@
     <attr name="iconOnlyShortcutColor" format="color" />
     <attr name="eduHalfSheetBGColor" format="color" />
     <attr name="overviewScrimColor" format="color" />
+    <attr name="overviewScrimColorOverBlur" format="color" />
     <attr name="popupNotificationDotColor" format="color" />
     <attr name="notificationDotColor" format="color" />
     <attr name="focusOutlineColor" format="color" />
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 4d0379d..3f9c535 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -226,9 +226,11 @@
     <dimen name="widget_picker_two_panels_left_right_margin">0dp</dimen>
     <dimen name="widget_picker_header_app_title_font_size">16sp</dimen>
     <integer name="widget_picker_header_app_title_font_weight">500</integer>
+    <integer name="widget_picker_header_selected_app_title_font_weight">600</integer>
     <dimen name="widget_picker_header_app_title_line_height">24sp</dimen>
     <dimen name="widget_picker_header_app_subtitle_font_size">14sp</dimen>
     <integer name="widget_picker_header_app_subtitle_font_weight">400</integer>
+    <integer name="widget_picker_header_selected_app_subtitle_font_weight">600</integer>
     <dimen name="widget_picker_header_app_subtitle_line_height">20sp</dimen>
     <dimen name="widget_recommendations_table_vertical_padding">8dp</dimen>
     <!-- Bottom margin for the search and recommended widgets container without work profile -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a626097..f0578cd 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -42,6 +42,7 @@
     <!-- Options for recent tasks -->
     <!-- Title for an option to enter split screen mode for a given app -->
     <string name="recent_task_option_split_screen">Split screen</string>
+    <string name="recent_task_option_aspect_ratio">Change aspect ratio</string>
     <string name="split_app_info_accessibility">App info for %1$s</string>
     <string name="split_app_usage_settings">Usage settings for %1$s</string>
 
diff --git a/res/values/styles.xml b/res/values/styles.xml
index cf6c560..7d5b575 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -77,6 +77,7 @@
         <item name="dropTargetHoverTextColor">@color/drop_target_hover_text_color_light</item>
         <item name="dropTargetHoverButtonColor">@color/drop_target_hover_button_color_light</item>
         <item name="overviewScrimColor">@color/overview_scrim</item>
+        <item name="overviewScrimColorOverBlur">#33000000</item>
         <item name="preloadIconAccentColor">@color/preload_icon_accent_color_light</item>
         <item name="preloadIconBackgroundColor">@color/preload_icon_background_color_light</item>
         <item name="android:windowTranslucentStatus">false</item>
@@ -141,6 +142,7 @@
         <item name="iconOnlyShortcutColor">#B3FFFFFF</item>
         <item name="eduHalfSheetBGColor">#DD000000</item>
         <item name="overviewScrimColor">@color/overview_scrim_dark</item>
+        <item name="overviewScrimColorOverBlur">#52000000</item>
         <item name="preloadIconAccentColor">@color/preload_icon_accent_color_dark</item>
         <item name="preloadIconBackgroundColor">@color/preload_icon_background_color_dark</item>
     </style>
@@ -291,6 +293,36 @@
             @color/widget_cell_subtitle_color_dark</item>
     </style>
 
+    <style name="WidgetListHeader.Title" parent="@android:style/TextAppearance.DeviceDefault" >
+        <!-- Title / Medium -->
+        <item name="android:textFontWeight">@integer/widget_picker_header_app_title_font_weight</item>
+        <item name="android:textSize">@dimen/widget_picker_header_app_title_font_size</item>
+        <item name="android:lineHeight">@dimen/widget_picker_header_app_title_line_height</item>
+        <item name="android:textColor">?attr/widgetPickerHeaderAppTitleColor</item>
+    </style>
+
+    <style name="WidgetListHeader.Title.Selected" parent="WidgetListHeader.Title">
+        <!-- Title / Medium / Emphasized -->
+        <item name="android:textFontWeight">
+            @integer/widget_picker_header_selected_app_title_font_weight
+        </item>
+    </style>
+
+    <style name="WidgetListHeader.SubTitle" parent="@android:style/TextAppearance.DeviceDefault" >
+        <!-- Title / Small -->
+        <item name="android:textFontWeight">@integer/widget_picker_header_app_subtitle_font_weight</item>
+        <item name="android:textSize">@dimen/widget_picker_header_app_subtitle_font_size</item>
+        <item name="android:lineHeight">@dimen/widget_picker_header_app_subtitle_line_height</item>
+        <item name="android:textColor">?attr/widgetPickerHeaderAppSubtitleColor</item>
+    </style>
+
+    <style name="WidgetListHeader.SubTitle.Selected" parent="WidgetListHeader.SubTitle">
+        <!-- Title / Small / Emphasized -->
+        <item name="android:textFontWeight">
+            @integer/widget_picker_header_selected_app_subtitle_font_weight
+        </item>
+    </style>
+
     <style name="FastScrollerPopup" parent="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle">
         <item name="android:layout_width">wrap_content</item>
         <item name="android:minWidth">@dimen/fastscroll_popup_width</item>
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index d6ae3a6..79774b2 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -964,4 +964,15 @@
             return null;
         }
     }
+
+    /**
+     * Logs with DEBUG priority if the current device is a debug device.
+     *
+     * <p>Debug devices by default include -eng and -userdebug builds, but not -user builds.
+     */
+    public static void debugLog(String tag, String message) {
+        if (BuildConfig.IS_DEBUG_DEVICE) {
+            Log.d(tag, message);
+        }
+    }
 }
diff --git a/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java b/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java
index f86772e..c95c376 100644
--- a/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java
+++ b/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java
@@ -91,6 +91,7 @@
 
     LoaderCursorFactory getLoaderCursorFactory();
     WidgetHolderFactory getWidgetHolderFactory();
+    RefreshRateTracker getFrameRateProvider();
 
     /** Builder for LauncherBaseAppComponent. */
     interface Builder {
diff --git a/src/com/android/launcher3/logging/StatsLogManager.java b/src/com/android/launcher3/logging/StatsLogManager.java
index 40b597f..aaf26d0 100644
--- a/src/com/android/launcher3/logging/StatsLogManager.java
+++ b/src/com/android/launcher3/logging/StatsLogManager.java
@@ -865,6 +865,9 @@
         @UiEvent(doc = "User long press nav handle and a long press runnable was created.")
         LAUNCHER_OMNI_GET_LONG_PRESS_RUNNABLE(1545),
 
+        @UiEvent(doc = "User tapped on \"change aspect ratio\" system shortcut.")
+        LAUNCHER_ASPECT_RATIO_SETTINGS_SYSTEM_SHORTCUT_TAP(2219),
+
         // One Grid Flags
         @UiEvent(doc = "User sets the device in Fixed Landscape")
         FIXED_LANDSCAPE_TOGGLE_ENABLE(2014),
diff --git a/src/com/android/launcher3/util/window/RefreshRateTracker.java b/src/com/android/launcher3/util/window/RefreshRateTracker.java
deleted file mode 100644
index e3397d4..0000000
--- a/src/com/android/launcher3/util/window/RefreshRateTracker.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.launcher3.util.window;
-
-import static android.view.Display.DEFAULT_DISPLAY;
-
-import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
-
-import android.content.Context;
-import android.hardware.display.DisplayManager;
-import android.hardware.display.DisplayManager.DisplayListener;
-import android.view.Display;
-
-import androidx.annotation.WorkerThread;
-
-import com.android.launcher3.dagger.ApplicationContext;
-import com.android.launcher3.dagger.LauncherAppComponent;
-import com.android.launcher3.dagger.LauncherAppSingleton;
-import com.android.launcher3.util.DaggerSingletonObject;
-import com.android.launcher3.util.DaggerSingletonTracker;
-import com.android.launcher3.util.SafeCloseable;
-
-import javax.inject.Inject;
-
-/**
- * Utility class to track refresh rate of the current device
- */
-@LauncherAppSingleton
-public class RefreshRateTracker implements DisplayListener, SafeCloseable {
-
-    private static final DaggerSingletonObject<RefreshRateTracker> INSTANCE =
-            new DaggerSingletonObject<>(LauncherAppComponent::getRefreshRateTracker);
-
-    private int mSingleFrameMs = 1;
-
-    private final DisplayManager mDM;
-
-    @Inject
-    RefreshRateTracker(@ApplicationContext Context context, DaggerSingletonTracker tracker) {
-        mDM = context.getSystemService(DisplayManager.class);
-        updateSingleFrameMs();
-        mDM.registerDisplayListener(this, UI_HELPER_EXECUTOR.getHandler());
-        tracker.addCloseable(this);
-    }
-
-    /**
-     * Returns the single frame time in ms
-     */
-    public static int getSingleFrameMs(Context context) {
-        return INSTANCE.get(context).mSingleFrameMs;
-    }
-
-    @Override
-    public final void onDisplayAdded(int displayId) { }
-
-    @Override
-    public final void onDisplayRemoved(int displayId) { }
-
-    @WorkerThread
-    @Override
-    public final void onDisplayChanged(int displayId) {
-        if (displayId == DEFAULT_DISPLAY) {
-            updateSingleFrameMs();
-        }
-    }
-
-    private void updateSingleFrameMs() {
-        Display display = mDM.getDisplay(DEFAULT_DISPLAY);
-        if (display != null) {
-            float refreshRate = display.getRefreshRate();
-            mSingleFrameMs = refreshRate > 0 ? (int) (1000 / refreshRate) : 16;
-        }
-    }
-
-    @Override
-    public void close() {
-        mDM.unregisterDisplayListener(this);
-    }
-}
diff --git a/src/com/android/launcher3/util/window/RefreshRateTracker.kt b/src/com/android/launcher3/util/window/RefreshRateTracker.kt
new file mode 100644
index 0000000..577fec1
--- /dev/null
+++ b/src/com/android/launcher3/util/window/RefreshRateTracker.kt
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.launcher3.util.window
+
+import android.content.Context
+import android.hardware.display.DisplayManager
+import android.hardware.display.DisplayManager.DisplayListener
+import android.view.Display.DEFAULT_DISPLAY
+import com.android.launcher3.dagger.ApplicationContext
+import com.android.launcher3.dagger.LauncherAppSingleton
+import com.android.launcher3.dagger.LauncherComponentProvider.appComponent
+import com.android.launcher3.util.DaggerSingletonTracker
+import com.android.launcher3.util.Executors
+import javax.inject.Inject
+
+/** Utility class to track refresh rate of the current device */
+interface RefreshRateTracker {
+
+    val singleFrameMs: Int
+
+    @LauncherAppSingleton
+    class RefreshRateTrackerImpl
+    @Inject
+    constructor(@ApplicationContext ctx: Context, tracker: DaggerSingletonTracker) :
+        RefreshRateTracker, DisplayListener {
+
+        private val displayManager: DisplayManager =
+            ctx.getSystemService(DisplayManager::class.java)!!.also {
+                it.registerDisplayListener(this, Executors.UI_HELPER_EXECUTOR.handler)
+                tracker.addCloseable { it.unregisterDisplayListener(this) }
+            }
+
+        override var singleFrameMs: Int = updateSingleFrameMs()
+
+        private fun updateSingleFrameMs(): Int {
+            val refreshRate = displayManager.getDisplay(DEFAULT_DISPLAY)?.refreshRate
+            return if (refreshRate != null && refreshRate > 0) (1000 / refreshRate).toInt() else 16
+        }
+
+        override fun onDisplayChanged(displayId: Int) {
+            if (displayId == DEFAULT_DISPLAY) {
+                singleFrameMs = updateSingleFrameMs()
+            }
+        }
+
+        override fun onDisplayAdded(displayId: Int) {}
+
+        override fun onDisplayRemoved(displayId: Int) {}
+    }
+
+    companion object {
+
+        /** Returns the single frame time in ms */
+        @JvmStatic fun Context.getSingleFrameMs() = appComponent.frameRateProvider.singleFrameMs
+    }
+}
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListHeader.java b/src/com/android/launcher3/widget/picker/WidgetsListHeader.java
index 2f123a3..836675a 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsListHeader.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsListHeader.java
@@ -131,6 +131,14 @@
     public void setExpanded(boolean isExpanded) {
         this.mIsExpanded = isExpanded;
         refreshDrawableState();
+        refreshTextAppearance(isExpanded);
+    }
+
+    private void refreshTextAppearance(boolean isExpanded) {
+        mTitle.setTextAppearance(isExpanded ? R.style.WidgetListHeader_Title_Selected
+                : R.style.WidgetListHeader_Title);
+        mSubtitle.setTextAppearance(isExpanded ? R.style.WidgetListHeader_SubTitle_Selected
+                : R.style.WidgetListHeader_SubTitle);
     }
 
     /** @return true if this header is expanded. */
diff --git a/src_no_quickstep/com/android/launcher3/dagger/Modules.kt b/src_no_quickstep/com/android/launcher3/dagger/Modules.kt
index 7dbe9c3..21d8e06 100644
--- a/src_no_quickstep/com/android/launcher3/dagger/Modules.kt
+++ b/src_no_quickstep/com/android/launcher3/dagger/Modules.kt
@@ -16,6 +16,8 @@
 
 package com.android.launcher3.dagger
 
+import com.android.launcher3.util.window.RefreshRateTracker
+import com.android.launcher3.util.window.RefreshRateTracker.RefreshRateTrackerImpl
 import com.android.launcher3.widget.LauncherWidgetHolder.WidgetHolderFactory
 import com.android.launcher3.widget.LauncherWidgetHolder.WidgetHolderFactoryImpl
 import dagger.Binds
@@ -35,7 +37,10 @@
 
 @Module abstract class PluginManagerWrapperModule {}
 
-@Module object StaticObjectModule {}
+@Module
+abstract class StaticObjectModule {
+    @Binds abstract fun bindRefreshRateTracker(tracker: RefreshRateTrackerImpl): RefreshRateTracker
+}
 
 // Module containing bindings for the final derivative app
 @Module abstract class AppModule {}
diff --git a/tests/src/com/android/launcher3/dragging/TaplUninstallRemoveTest.java b/tests/src/com/android/launcher3/dragging/TaplUninstallRemoveTest.java
index f490bd6..a03c161 100644
--- a/tests/src/com/android/launcher3/dragging/TaplUninstallRemoveTest.java
+++ b/tests/src/com/android/launcher3/dragging/TaplUninstallRemoveTest.java
@@ -26,6 +26,7 @@
 
 import android.graphics.Point;
 import android.platform.test.annotations.PlatinumTest;
+import android.platform.test.rule.ScreenRecordRule;
 import android.util.Log;
 
 import com.android.launcher3.Launcher;
@@ -107,6 +108,7 @@
     @Test
     @PortraitLandscape
     @PlatinumTest(focusArea = "launcher")
+    @ScreenRecordRule.ScreenRecord // b/386231522
     public void testUninstallFromAllApps() throws Exception {
         // Ensure no existing app icons on the workspace cause scroll to all apps interruptions
         mLauncher.clearLauncherData();