Merge "Import translations. DO NOT MERGE ANYWHERE" into main
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 02dd9cd..8c6b84a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1668,7 +1668,7 @@
</activity>
<activity
- android:name="Settings$HighPowerApplicationsActivity"
+ android:name="Settings$AppBatteryUsageActivity"
android:knownActivityEmbeddingCerts="@array/config_known_host_certs"
android:exported="true"
android:label="@string/high_power_apps">
diff --git a/res/layout/wifi_add_network_view.xml b/res/layout/wifi_add_network_view.xml
index 480d597..d698adf 100644
--- a/res/layout/wifi_add_network_view.xml
+++ b/res/layout/wifi_add_network_view.xml
@@ -18,8 +18,7 @@
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:fitsSystemWindows="true">
+ android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/res/layout/wifi_network_config.xml b/res/layout/wifi_network_config.xml
index 77afedc..3de1a38 100644
--- a/res/layout/wifi_network_config.xml
+++ b/res/layout/wifi_network_config.xml
@@ -22,6 +22,19 @@
android:orientation="vertical"
android:paddingBottom="8dip">
+ <LinearLayout android:id="@+id/wep_warning_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingBottom="20dp"
+ style="@style/wifi_item"
+ android:visibility="gone">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/wifi_item_label"
+ android:text="@string/wifi_settings_warning_wep_network"/>
+ </LinearLayout>
+
<LinearLayout android:id="@+id/info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/res/values-af/arrays.xml b/res/values-af/arrays.xml
index 12689e0..5f0b1a3 100644
--- a/res/values-af/arrays.xml
+++ b/res/values-af/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-am/arrays.xml b/res/values-am/arrays.xml
index 49be0c4..4bc5176 100644
--- a/res/values-am/arrays.xml
+++ b/res/values-am/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ar/arrays.xml b/res/values-ar/arrays.xml
index 8398b6e..509c4b9 100644
--- a/res/values-ar/arrays.xml
+++ b/res/values-ar/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-as/arrays.xml b/res/values-as/arrays.xml
index 09c4b09..caca9e2 100644
--- a/res/values-as/arrays.xml
+++ b/res/values-as/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-az/arrays.xml b/res/values-az/arrays.xml
index a6e001b..16a8830 100644
--- a/res/values-az/arrays.xml
+++ b/res/values-az/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-b+sr+Latn/arrays.xml b/res/values-b+sr+Latn/arrays.xml
index 7053b92..880334d 100644
--- a/res/values-b+sr+Latn/arrays.xml
+++ b/res/values-b+sr+Latn/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-be/arrays.xml b/res/values-be/arrays.xml
index bab8e6d..a9be1b7 100644
--- a/res/values-be/arrays.xml
+++ b/res/values-be/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-bg/arrays.xml b/res/values-bg/arrays.xml
index f951171..dbf54fe 100644
--- a/res/values-bg/arrays.xml
+++ b/res/values-bg/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-bn/arrays.xml b/res/values-bn/arrays.xml
index ca36982..d8e95a6 100644
--- a/res/values-bn/arrays.xml
+++ b/res/values-bn/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-bs/arrays.xml b/res/values-bs/arrays.xml
index f96a12a..237eb30 100644
--- a/res/values-bs/arrays.xml
+++ b/res/values-bs/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ca/arrays.xml b/res/values-ca/arrays.xml
index 64482df..db59b92 100644
--- a/res/values-ca/arrays.xml
+++ b/res/values-ca/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-cs/arrays.xml b/res/values-cs/arrays.xml
index 4bc26cd..13706ff 100644
--- a/res/values-cs/arrays.xml
+++ b/res/values-cs/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-da/arrays.xml b/res/values-da/arrays.xml
index dd01a6c..6aefc19 100644
--- a/res/values-da/arrays.xml
+++ b/res/values-da/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml
index 0ebf788..a4302b6 100644
--- a/res/values-de/arrays.xml
+++ b/res/values-de/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml
index f1b3e22..e1d9875 100644
--- a/res/values-el/arrays.xml
+++ b/res/values-el/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-en-rAU/arrays.xml b/res/values-en-rAU/arrays.xml
index 3e9299d..ab9f648 100644
--- a/res/values-en-rAU/arrays.xml
+++ b/res/values-en-rAU/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-en-rCA/arrays.xml b/res/values-en-rCA/arrays.xml
index 50c5678..b401f55 100644
--- a/res/values-en-rCA/arrays.xml
+++ b/res/values-en-rCA/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-en-rGB/arrays.xml b/res/values-en-rGB/arrays.xml
index 3e9299d..ab9f648 100644
--- a/res/values-en-rGB/arrays.xml
+++ b/res/values-en-rGB/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-en-rIN/arrays.xml b/res/values-en-rIN/arrays.xml
index 3e9299d..ab9f648 100644
--- a/res/values-en-rIN/arrays.xml
+++ b/res/values-en-rIN/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-en-rXC/arrays.xml b/res/values-en-rXC/arrays.xml
index 67ce5b1..c43b7be 100644
--- a/res/values-en-rXC/arrays.xml
+++ b/res/values-en-rXC/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-es-rUS/arrays.xml b/res/values-es-rUS/arrays.xml
index 6df4d21..1d8779b 100644
--- a/res/values-es-rUS/arrays.xml
+++ b/res/values-es-rUS/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml
index 554ce3b..e9013b8 100644
--- a/res/values-es/arrays.xml
+++ b/res/values-es/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-et/arrays.xml b/res/values-et/arrays.xml
index 19c1135..85e9a8a 100644
--- a/res/values-et/arrays.xml
+++ b/res/values-et/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-eu/arrays.xml b/res/values-eu/arrays.xml
index fe370f3..45ddcb6 100644
--- a/res/values-eu/arrays.xml
+++ b/res/values-eu/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-fa/arrays.xml b/res/values-fa/arrays.xml
index ca9f278..866fcff 100644
--- a/res/values-fa/arrays.xml
+++ b/res/values-fa/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-fi/arrays.xml b/res/values-fi/arrays.xml
index c2ed23b..159a2f8 100644
--- a/res/values-fi/arrays.xml
+++ b/res/values-fi/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-fr-rCA/arrays.xml b/res/values-fr-rCA/arrays.xml
index 558385d..f472ecb 100644
--- a/res/values-fr-rCA/arrays.xml
+++ b/res/values-fr-rCA/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
index 66539d3..f0a26ba 100644
--- a/res/values-fr/arrays.xml
+++ b/res/values-fr/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-gl/arrays.xml b/res/values-gl/arrays.xml
index b5ecdd0..6d5e88b 100644
--- a/res/values-gl/arrays.xml
+++ b/res/values-gl/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-gu/arrays.xml b/res/values-gu/arrays.xml
index 6d45a9e..084804c 100644
--- a/res/values-gu/arrays.xml
+++ b/res/values-gu/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-hi/arrays.xml b/res/values-hi/arrays.xml
index 8ba24da..b2a9db6 100644
--- a/res/values-hi/arrays.xml
+++ b/res/values-hi/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-hr/arrays.xml b/res/values-hr/arrays.xml
index 13784b8..f56d73c 100644
--- a/res/values-hr/arrays.xml
+++ b/res/values-hr/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-hu/arrays.xml b/res/values-hu/arrays.xml
index 11f18a7..a53728b 100644
--- a/res/values-hu/arrays.xml
+++ b/res/values-hu/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-hy/arrays.xml b/res/values-hy/arrays.xml
index bd1b26e..64c2775 100644
--- a/res/values-hy/arrays.xml
+++ b/res/values-hy/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-in/arrays.xml b/res/values-in/arrays.xml
index 2991224..a5291e5 100644
--- a/res/values-in/arrays.xml
+++ b/res/values-in/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-is/arrays.xml b/res/values-is/arrays.xml
index 470e79e..8d26706 100644
--- a/res/values-is/arrays.xml
+++ b/res/values-is/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-it/arrays.xml b/res/values-it/arrays.xml
index 40e43cb..be222df 100644
--- a/res/values-it/arrays.xml
+++ b/res/values-it/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-iw/arrays.xml b/res/values-iw/arrays.xml
index 711bcc3..b8c1696 100644
--- a/res/values-iw/arrays.xml
+++ b/res/values-iw/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml
index a12f42f..ebdf56a 100644
--- a/res/values-ja/arrays.xml
+++ b/res/values-ja/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ka/arrays.xml b/res/values-ka/arrays.xml
index c08d19b..5c3f956 100644
--- a/res/values-ka/arrays.xml
+++ b/res/values-ka/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-kk/arrays.xml b/res/values-kk/arrays.xml
index 056213b..4fb8109 100644
--- a/res/values-kk/arrays.xml
+++ b/res/values-kk/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-km/arrays.xml b/res/values-km/arrays.xml
index d007522f..7292a00 100644
--- a/res/values-km/arrays.xml
+++ b/res/values-km/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-kn/arrays.xml b/res/values-kn/arrays.xml
index 75a2300..a79ba9b 100644
--- a/res/values-kn/arrays.xml
+++ b/res/values-kn/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ko/arrays.xml b/res/values-ko/arrays.xml
index c1c4719..50b65b0 100644
--- a/res/values-ko/arrays.xml
+++ b/res/values-ko/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ky/arrays.xml b/res/values-ky/arrays.xml
index de56208..e20cb78 100644
--- a/res/values-ky/arrays.xml
+++ b/res/values-ky/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-lo/arrays.xml b/res/values-lo/arrays.xml
index b5a8f8a..e0a9547 100644
--- a/res/values-lo/arrays.xml
+++ b/res/values-lo/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-lt/arrays.xml b/res/values-lt/arrays.xml
index 5d2eef2..d6cbf04 100644
--- a/res/values-lt/arrays.xml
+++ b/res/values-lt/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-lv/arrays.xml b/res/values-lv/arrays.xml
index ca0f276..05c0cfe 100644
--- a/res/values-lv/arrays.xml
+++ b/res/values-lv/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-mk/arrays.xml b/res/values-mk/arrays.xml
index 4e3b715..5db8d03 100644
--- a/res/values-mk/arrays.xml
+++ b/res/values-mk/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ml/arrays.xml b/res/values-ml/arrays.xml
index b2f97f8..26df0b6 100644
--- a/res/values-ml/arrays.xml
+++ b/res/values-ml/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-mn/arrays.xml b/res/values-mn/arrays.xml
index 6cc296c..34855bc 100644
--- a/res/values-mn/arrays.xml
+++ b/res/values-mn/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-mr/arrays.xml b/res/values-mr/arrays.xml
index ee84068..4adab31 100644
--- a/res/values-mr/arrays.xml
+++ b/res/values-mr/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ms/arrays.xml b/res/values-ms/arrays.xml
index ff1b598..962bb41 100644
--- a/res/values-ms/arrays.xml
+++ b/res/values-ms/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-my/arrays.xml b/res/values-my/arrays.xml
index 382eb36..aa98436 100644
--- a/res/values-my/arrays.xml
+++ b/res/values-my/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-nb/arrays.xml b/res/values-nb/arrays.xml
index 1a26b4b..a034cce 100644
--- a/res/values-nb/arrays.xml
+++ b/res/values-nb/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ne/arrays.xml b/res/values-ne/arrays.xml
index 638b42b..9152bf5 100644
--- a/res/values-ne/arrays.xml
+++ b/res/values-ne/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml
index c2fcbea..d1c7669 100644
--- a/res/values-nl/arrays.xml
+++ b/res/values-nl/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-or/arrays.xml b/res/values-or/arrays.xml
index 60319c1..133d09f 100644
--- a/res/values-or/arrays.xml
+++ b/res/values-or/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-pa/arrays.xml b/res/values-pa/arrays.xml
index ea99fe0..47bb15c 100644
--- a/res/values-pa/arrays.xml
+++ b/res/values-pa/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml
index 785be2a..01b10b4 100644
--- a/res/values-pl/arrays.xml
+++ b/res/values-pl/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-pt-rBR/arrays.xml b/res/values-pt-rBR/arrays.xml
index cd9c222..2e9649b 100644
--- a/res/values-pt-rBR/arrays.xml
+++ b/res/values-pt-rBR/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-pt-rPT/arrays.xml b/res/values-pt-rPT/arrays.xml
index d0a1f45..ede92a2 100644
--- a/res/values-pt-rPT/arrays.xml
+++ b/res/values-pt-rPT/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-pt/arrays.xml b/res/values-pt/arrays.xml
index cd9c222..2e9649b 100644
--- a/res/values-pt/arrays.xml
+++ b/res/values-pt/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ro/arrays.xml b/res/values-ro/arrays.xml
index f18525f..f8ace1d 100644
--- a/res/values-ro/arrays.xml
+++ b/res/values-ro/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
index 762be14..8954f52 100644
--- a/res/values-ru/arrays.xml
+++ b/res/values-ru/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-si/arrays.xml b/res/values-si/arrays.xml
index 4bd0f64..cffd8d8 100644
--- a/res/values-si/arrays.xml
+++ b/res/values-si/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-sk/arrays.xml b/res/values-sk/arrays.xml
index 47ff940..578c756 100644
--- a/res/values-sk/arrays.xml
+++ b/res/values-sk/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-sl/arrays.xml b/res/values-sl/arrays.xml
index 4d4ca2b..7fa6e79 100644
--- a/res/values-sl/arrays.xml
+++ b/res/values-sl/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-sq/arrays.xml b/res/values-sq/arrays.xml
index e8903c0..4649573 100644
--- a/res/values-sq/arrays.xml
+++ b/res/values-sq/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-sr/arrays.xml b/res/values-sr/arrays.xml
index 20b1cff..177bf08 100644
--- a/res/values-sr/arrays.xml
+++ b/res/values-sr/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-sv/arrays.xml b/res/values-sv/arrays.xml
index 0c509bf..949a18f 100644
--- a/res/values-sv/arrays.xml
+++ b/res/values-sv/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-sw/arrays.xml b/res/values-sw/arrays.xml
index a163455..923f46e 100644
--- a/res/values-sw/arrays.xml
+++ b/res/values-sw/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ta/arrays.xml b/res/values-ta/arrays.xml
index e31f2a4..62732a4 100644
--- a/res/values-ta/arrays.xml
+++ b/res/values-ta/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-te/arrays.xml b/res/values-te/arrays.xml
index f271093..88c51f0 100644
--- a/res/values-te/arrays.xml
+++ b/res/values-te/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-th/arrays.xml b/res/values-th/arrays.xml
index c65512f..a9bb803 100644
--- a/res/values-th/arrays.xml
+++ b/res/values-th/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-tl/arrays.xml b/res/values-tl/arrays.xml
index 39c69d5..a3c1d5a 100644
--- a/res/values-tl/arrays.xml
+++ b/res/values-tl/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-tr/arrays.xml b/res/values-tr/arrays.xml
index cb49a84..cb4447e 100644
--- a/res/values-tr/arrays.xml
+++ b/res/values-tr/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-uk/arrays.xml b/res/values-uk/arrays.xml
index c57fefb..43c4c5f 100644
--- a/res/values-uk/arrays.xml
+++ b/res/values-uk/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-ur/arrays.xml b/res/values-ur/arrays.xml
index 21cde2b..6a1220e 100644
--- a/res/values-ur/arrays.xml
+++ b/res/values-ur/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-uz/arrays.xml b/res/values-uz/arrays.xml
index 0e63347..c5a3dac 100644
--- a/res/values-uz/arrays.xml
+++ b/res/values-uz/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-vi/arrays.xml b/res/values-vi/arrays.xml
index cd249d3..d29136c 100644
--- a/res/values-vi/arrays.xml
+++ b/res/values-vi/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml
index d05f9d5..fb9d893 100644
--- a/res/values-zh-rCN/arrays.xml
+++ b/res/values-zh-rCN/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-zh-rHK/arrays.xml b/res/values-zh-rHK/arrays.xml
index 35df364..5465990 100644
--- a/res/values-zh-rHK/arrays.xml
+++ b/res/values-zh-rHK/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml
index 13301cf..b358037 100644
--- a/res/values-zh-rTW/arrays.xml
+++ b/res/values-zh-rTW/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values-zu/arrays.xml b/res/values-zu/arrays.xml
index 578ca6a..3bac8c0 100644
--- a/res/values-zu/arrays.xml
+++ b/res/values-zu/arrays.xml
@@ -482,4 +482,7 @@
<!-- no translation found for notification_polite_options:0 (4617190141263245257) -->
<!-- no translation found for notification_polite_options:1 (3884076684767467743) -->
<!-- no translation found for notification_polite_options:2 (8765197536079931966) -->
+ <!-- no translation found for private_space_auto_lock_options:0 (551584871228110817) -->
+ <!-- no translation found for private_space_auto_lock_options:1 (3263162333754809690) -->
+ <!-- no translation found for private_space_auto_lock_options:2 (1575103586471380629) -->
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 776e3f4..2b5117d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3967,6 +3967,14 @@
<string name="archive">Archive</string>
<!-- Manage applications, text label for button to restore an application. Restoring means installing the archived app. -->
<string name="restore">Restore</string>
+ <!-- Manage applications, text label for button while the application is restoring. -->
+ <string name="restoring_step_one">Restoring</string>
+ <!-- Manage applications, text label for button while the application is restoring. -->
+ <string name="restoring_step_two">Restoring.</string>
+ <!-- Manage applications, text label for button while the application is restoring. -->
+ <string name="restoring_step_three">Restoring..</string>
+ <!-- Manage applications, text label for button while the application is restoring. -->
+ <string name="restoring_step_four">Restoring...</string>
<!-- Manage applications, individual application info screen,label under Storage heading. The total storage space taken up by this app. -->
<string name="total_size_label">Total</string>
<!-- Manage applications, individual application info screen, label under Storage heading. The amount of space taken up by the application itself (for example, the java compield files and things like that) -->
diff --git a/res/xml/bluetooth_audio_streams_dialog.xml b/res/xml/bluetooth_audio_streams_dialog.xml
new file mode 100644
index 0000000..afc5055
--- /dev/null
+++ b/res/xml/bluetooth_audio_streams_dialog.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2024 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <LinearLayout
+ android:id="@+id/dialog_bg"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/broadcast_dialog_margin"
+ android:orientation="vertical">
+
+ <ImageView
+ android:id="@+id/dialog_icon"
+ android:layout_width="36dp"
+ android:layout_height="36dp"
+ android:layout_marginTop="@dimen/broadcast_dialog_icon_margin_top"
+ android:layout_marginBottom="@dimen/broadcast_dialog_title_img_margin_top"
+ android:layout_gravity="center"
+ android:src="@drawable/ic_bt_audio_sharing"/>
+
+ <TextView
+ style="@style/BroadcastDialogTitleStyle"
+ android:id="@+id/dialog_title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:layout_gravity="center"/>
+
+ <TextView
+ style="@style/BroadcastDialogBodyStyle"
+ android:id="@+id/dialog_subtitle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:layout_gravity="center"
+ android:visibility="gone"/>
+
+ <TextView
+ style="@style/BroadcastDialogBodyStyle"
+ android:id="@+id/dialog_subtitle_2"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:layout_gravity="center"
+ android:visibility="gone"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/broadcast_dialog_margin"
+ android:orientation="horizontal">
+ <Button
+ android:id="@+id/left_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="16dp"
+ android:layout_weight="1"
+ android:visibility="gone"/>
+ <Button
+ android:id="@+id/right_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:layout_marginRight="16dp"
+ android:visibility="gone"/>
+ </LinearLayout>
+
+ </LinearLayout>
+</FrameLayout>
\ No newline at end of file
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java
index b0af7dd..b5c71b6 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java
@@ -71,6 +71,7 @@
super.onAttach(context);
use(AudioStreamsScanQrCodeController.class).setFragment(this);
mAudioStreamsProgressCategoryController = use(AudioStreamsProgressCategoryController.class);
+ mAudioStreamsProgressCategoryController.setFragment(this);
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDialogFragment.java
new file mode 100644
index 0000000..c7d7f16
--- /dev/null
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDialogFragment.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.connecteddevice.audiosharing.audiostreams;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+
+import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+
+import com.google.common.base.Strings;
+
+import java.util.function.Consumer;
+
+public class AudioStreamsDialogFragment extends InstrumentedDialogFragment {
+ private static final String TAG = "AudioStreamsDialogFragment";
+ private final DialogBuilder mDialogBuilder;
+
+ AudioStreamsDialogFragment(DialogBuilder dialogBuilder) {
+ mDialogBuilder = dialogBuilder;
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ // TODO(chelseahao): update metrics id
+ return 0;
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ return mDialogBuilder.build();
+ }
+
+ static void show(Fragment host, DialogBuilder dialogBuilder) {
+ FragmentManager manager = host.getChildFragmentManager();
+ (new AudioStreamsDialogFragment(dialogBuilder)).show(manager, TAG);
+ }
+
+ static class DialogBuilder {
+ private final Context mContext;
+ private final AlertDialog.Builder mBuilder;
+ private String mTitle;
+ private String mSubTitle1;
+ private String mSubTitle2;
+ private String mLeftButtonText;
+ private String mRightButtonText;
+ private Consumer<AlertDialog> mLeftButtonOnClickListener;
+ private Consumer<AlertDialog> mRightButtonOnClickListener;
+
+ DialogBuilder(Context context) {
+ mContext = context;
+ mBuilder = new AlertDialog.Builder(context);
+ }
+
+ DialogBuilder setTitle(String title) {
+ mTitle = title;
+ return this;
+ }
+
+ DialogBuilder setSubTitle1(String subTitle1) {
+ mSubTitle1 = subTitle1;
+ return this;
+ }
+
+ DialogBuilder setSubTitle2(String subTitle2) {
+ mSubTitle2 = subTitle2;
+ return this;
+ }
+
+ DialogBuilder setLeftButtonText(String text) {
+ mLeftButtonText = text;
+ return this;
+ }
+
+ DialogBuilder setLeftButtonOnClickListener(Consumer<AlertDialog> listener) {
+ mLeftButtonOnClickListener = listener;
+ return this;
+ }
+
+ DialogBuilder setRightButtonText(String text) {
+ mRightButtonText = text;
+ return this;
+ }
+
+ DialogBuilder setRightButtonOnClickListener(Consumer<AlertDialog> listener) {
+ mRightButtonOnClickListener = listener;
+ return this;
+ }
+
+ AlertDialog build() {
+ View rootView =
+ LayoutInflater.from(mContext)
+ .inflate(R.xml.bluetooth_audio_streams_dialog, /* parent= */ null);
+
+ AlertDialog dialog = mBuilder.setView(rootView).setCancelable(false).create();
+ dialog.setCanceledOnTouchOutside(false);
+
+ TextView title = rootView.requireViewById(R.id.dialog_title);
+ title.setText(mTitle);
+
+ if (!Strings.isNullOrEmpty(mSubTitle1)) {
+ TextView subTitle1 = rootView.requireViewById(R.id.dialog_subtitle);
+ subTitle1.setText(mSubTitle1);
+ subTitle1.setVisibility(View.VISIBLE);
+ }
+ if (!Strings.isNullOrEmpty(mSubTitle2)) {
+ TextView subTitle2 = rootView.requireViewById(R.id.dialog_subtitle_2);
+ subTitle2.setText(mSubTitle2);
+ subTitle2.setVisibility(View.VISIBLE);
+ }
+ if (!Strings.isNullOrEmpty(mLeftButtonText)) {
+ Button leftButton = rootView.requireViewById(R.id.left_button);
+ leftButton.setText(mLeftButtonText);
+ leftButton.setVisibility(View.VISIBLE);
+ leftButton.setOnClickListener(unused -> mLeftButtonOnClickListener.accept(dialog));
+ }
+ if (!Strings.isNullOrEmpty(mRightButtonText)) {
+ Button rightButton = rootView.requireViewById(R.id.right_button);
+ rightButton.setText(mRightButtonText);
+ rightButton.setVisibility(View.VISIBLE);
+ rightButton.setOnClickListener(
+ unused -> mRightButtonOnClickListener.accept(dialog));
+ }
+
+ return dialog;
+ }
+ }
+}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java
index ab380c8..cb9975d 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java
@@ -24,8 +24,10 @@
import android.bluetooth.BluetoothLeBroadcastReceiveState;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
+import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
+import android.provider.Settings;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -92,6 +94,7 @@
new ConcurrentHashMap<>();
private TimedSourceFromQrCode mTimedSourceFromQrCode;
private AudioStreamsProgressCategoryPreference mCategoryPreference;
+ private AudioStreamsDashboardFragment mFragment;
public AudioStreamsProgressCategoryController(Context context, String preferenceKey) {
super(context, preferenceKey);
@@ -135,10 +138,13 @@
mExecutor.execute(this::stopScanning);
}
+ void setFragment(AudioStreamsDashboardFragment fragment) {
+ mFragment = fragment;
+ }
+
void setSourceFromQrCode(BluetoothLeBroadcastMetadata source) {
mTimedSourceFromQrCode =
- new TimedSourceFromQrCode(
- mContext, source, () -> handleSourceLost(source.getBroadcastId()));
+ new TimedSourceFromQrCode(source, () -> handleSourceLost(source.getBroadcastId()));
}
void setScanning(boolean isScanning) {
@@ -324,6 +330,8 @@
startScanning();
} else {
stopScanning();
+ ThreadUtils.postOnMainThread(
+ () -> AudioStreamsDialogFragment.show(mFragment, getNoLeDeviceDialog()));
}
}
@@ -463,15 +471,41 @@
alertDialog.show();
}
- private static class TimedSourceFromQrCode {
+ private AudioStreamsDialogFragment.DialogBuilder getNoLeDeviceDialog() {
+ return new AudioStreamsDialogFragment.DialogBuilder(mContext)
+ .setTitle("Connect compatible headphones")
+ .setSubTitle1(
+ "To listen to an audio stream, first connect headphones that support LE"
+ + " Audio to this device. Learn more")
+ .setLeftButtonText("Close")
+ .setLeftButtonOnClickListener(AlertDialog::dismiss)
+ .setRightButtonText("Connect a device")
+ .setRightButtonOnClickListener(
+ unused ->
+ mContext.startActivity(
+ new Intent(Settings.ACTION_BLUETOOTH_SETTINGS)));
+ }
+
+ private AudioStreamsDialogFragment.DialogBuilder getBroadcastUnavailableDialog(
+ String broadcastName) {
+ return new AudioStreamsDialogFragment.DialogBuilder(mContext)
+ .setTitle("Audio stream isn't available")
+ .setSubTitle1(broadcastName)
+ .setSubTitle2("This audio stream isn't playing anything right now")
+ .setLeftButtonText("Close")
+ .setLeftButtonOnClickListener(AlertDialog::dismiss)
+ .setRightButtonText("Retry")
+ // TODO(chelseahao): Add retry action
+ .setRightButtonOnClickListener(AlertDialog::dismiss);
+ }
+
+ private class TimedSourceFromQrCode {
private static final int WAIT_FOR_SYNC_TIMEOUT_MILLIS = 15000;
private final CountDownTimer mTimer;
private BluetoothLeBroadcastMetadata mSourceFromQrCode;
private TimedSourceFromQrCode(
- Context context,
- BluetoothLeBroadcastMetadata sourceFromQrCode,
- Runnable timeoutAction) {
+ BluetoothLeBroadcastMetadata sourceFromQrCode, Runnable timeoutAction) {
mSourceFromQrCode = sourceFromQrCode;
mTimer =
new CountDownTimer(WAIT_FOR_SYNC_TIMEOUT_MILLIS, 1000) {
@@ -481,7 +515,12 @@
@Override
public void onFinish() {
timeoutAction.run();
- AudioSharingUtils.toastMessage(context, "Audio steam isn't available");
+ ThreadUtils.postOnMainThread(
+ () ->
+ AudioStreamsDialogFragment.show(
+ mFragment,
+ getBroadcastUnavailableDialog(
+ sourceFromQrCode.getBroadcastName())));
}
};
}
diff --git a/src/com/android/settings/spa/app/AllAppList.kt b/src/com/android/settings/spa/app/AllAppList.kt
index 5b13211..5e0ac95 100644
--- a/src/com/android/settings/spa/app/AllAppList.kt
+++ b/src/com/android/settings/spa/app/AllAppList.kt
@@ -34,6 +34,7 @@
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.ui.SpinnerOption
+import com.android.settingslib.spaprivileged.framework.compose.getPlaceholder
import com.android.settingslib.spaprivileged.model.app.AppListModel
import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.installed
@@ -131,7 +132,11 @@
override fun getSummary(option: Int, record: AppRecordWithSize): () -> String {
val storageSummary = record.app.getStorageSummary()
return {
- val summaryList = mutableListOf(storageSummary.value)
+ val summaryList = mutableListOf<String>()
+ val storageSummaryValue = storageSummary.value
+ if (storageSummaryValue.isNotBlank()) {
+ summaryList += storageSummaryValue
+ }
when {
!record.app.installed && !record.app.isArchived -> {
summaryList += context.getString(R.string.not_installed)
@@ -142,6 +147,7 @@
}
}
summaryList.joinToString(separator = System.lineSeparator())
+ .ifEmpty { context.getPlaceholder() } // Use placeholder to reduce flaky
}
}
diff --git a/src/com/android/settings/spa/app/appinfo/AppPermissionPreference.kt b/src/com/android/settings/spa/app/appinfo/AppPermissionPreference.kt
index ec1780f..1274eea 100644
--- a/src/com/android/settings/spa/app/appinfo/AppPermissionPreference.kt
+++ b/src/com/android/settings/spa/app/appinfo/AppPermissionPreference.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2022 The Android Open Source Project
+ * Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,15 +22,15 @@
import android.content.pm.ApplicationInfo
import android.util.Log
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.res.stringResource
-import androidx.lifecycle.LiveData
+import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.settings.R
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
+import com.android.settingslib.spaprivileged.framework.compose.placeholder
import com.android.settingslib.spaprivileged.model.app.userHandle
+import kotlinx.coroutines.flow.Flow
private const val TAG = "AppPermissionPreference"
private const val EXTRA_HIDE_INFO_BUTTON = "hideInfoButton"
@@ -38,14 +38,11 @@
@Composable
fun AppPermissionPreference(
app: ApplicationInfo,
- summaryLiveData: LiveData<AppPermissionSummaryState> = rememberAppPermissionSummary(app),
+ summaryFlow: Flow<AppPermissionSummaryState> = rememberAppPermissionSummary(app),
) {
val context = LocalContext.current
- val summaryState = summaryLiveData.observeAsState(
- initial = AppPermissionSummaryState(
- summary = stringResource(R.string.summary_placeholder),
- enabled = false,
- )
+ val summaryState = summaryFlow.collectAsStateWithLifecycle(
+ initialValue = AppPermissionSummaryState(summary = placeholder(), enabled = false),
)
Preference(
model = remember {
diff --git a/src/com/android/settings/spa/app/appinfo/AppPermissionSummary.kt b/src/com/android/settings/spa/app/appinfo/AppPermissionSummary.kt
index 91c3887..d0bdd6b 100644
--- a/src/com/android/settings/spa/app/appinfo/AppPermissionSummary.kt
+++ b/src/com/android/settings/spa/app/appinfo/AppPermissionSummary.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2022 The Android Open Source Project
+ * Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,18 +18,22 @@
import android.content.Context
import android.content.pm.ApplicationInfo
-import android.content.pm.PackageManager.OnPermissionsChangedListener
import android.icu.text.ListFormatter
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
-import androidx.lifecycle.LiveData
import com.android.settings.R
import com.android.settingslib.applications.PermissionsSummaryHelper
-import com.android.settingslib.applications.PermissionsSummaryHelper.PermissionsResultCallback
import com.android.settingslib.spa.framework.util.formatString
import com.android.settingslib.spaprivileged.framework.common.asUser
+import com.android.settingslib.spaprivileged.model.app.permissionsChangedFlow
import com.android.settingslib.spaprivileged.model.app.userHandle
+import kotlin.coroutines.resume
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.suspendCancellableCoroutine
data class AppPermissionSummaryState(
val summary: String,
@@ -37,58 +41,40 @@
)
@Composable
-fun rememberAppPermissionSummary(app: ApplicationInfo): AppPermissionSummaryLiveData {
+fun rememberAppPermissionSummary(app: ApplicationInfo): Flow<AppPermissionSummaryState> {
val context = LocalContext.current
- return remember(app) { AppPermissionSummaryLiveData(context, app) }
+ return remember(app) { AppPermissionSummaryRepository(context, app).flow }
}
-class AppPermissionSummaryLiveData(
+class AppPermissionSummaryRepository(
private val context: Context,
private val app: ApplicationInfo,
-) : LiveData<AppPermissionSummaryState>() {
+) {
private val userContext = context.asUser(app.userHandle)
- private val userPackageManager = userContext.packageManager
- private val onPermissionsChangedListener = OnPermissionsChangedListener { uid ->
- if (uid == app.uid) update()
- }
+ val flow = context.permissionsChangedFlow(app)
+ .map { getPermissionSummary() }
+ .flowOn(Dispatchers.Default)
- override fun onActive() {
- userPackageManager.addOnPermissionsChangeListener(onPermissionsChangedListener)
- if (app.isArchived) {
- postValue(noPermissionRequestedState())
- } else {
- update()
- }
- }
-
- override fun onInactive() {
- userPackageManager.removeOnPermissionsChangeListener(onPermissionsChangedListener)
- }
-
- private fun update() {
+ private suspend fun getPermissionSummary() = suspendCancellableCoroutine { continuation ->
PermissionsSummaryHelper.getPermissionSummary(
- userContext, app.packageName, permissionsCallback
- )
- }
-
- private val permissionsCallback = object : PermissionsResultCallback {
- override fun onPermissionSummaryResult(
- requestedPermissionCount: Int,
+ userContext,
+ app.packageName,
+ ) { requestedPermissionCount: Int,
additionalGrantedPermissionCount: Int,
- grantedGroupLabels: List<CharSequence>,
- ) {
- if (requestedPermissionCount == 0) {
- postValue(noPermissionRequestedState())
- return
- }
- val labels = getDisplayLabels(additionalGrantedPermissionCount, grantedGroupLabels)
- val summary = if (labels.isNotEmpty()) {
- ListFormatter.getInstance().format(labels)
+ grantedGroupLabels: List<CharSequence> ->
+ val summaryState = if (requestedPermissionCount == 0) {
+ noPermissionRequestedState()
} else {
- context.getString(R.string.runtime_permissions_summary_no_permissions_granted)
+ val labels = getDisplayLabels(additionalGrantedPermissionCount, grantedGroupLabels)
+ val summary = if (labels.isNotEmpty()) {
+ ListFormatter.getInstance().format(labels)
+ } else {
+ context.getString(R.string.runtime_permissions_summary_no_permissions_granted)
+ }
+ AppPermissionSummaryState(summary = summary, enabled = true)
}
- postValue(AppPermissionSummaryState(summary = summary, enabled = true))
+ continuation.resume(summaryState)
}
}
@@ -100,15 +86,14 @@
private fun getDisplayLabels(
additionalGrantedPermissionCount: Int,
grantedGroupLabels: List<CharSequence>,
- ): List<CharSequence> = when (additionalGrantedPermissionCount) {
- 0 -> grantedGroupLabels
- else -> {
- grantedGroupLabels +
- // N additional permissions.
- context.formatString(
- R.string.runtime_permissions_additional_count,
- "count" to additionalGrantedPermissionCount,
- )
- }
+ ): List<CharSequence> = if (additionalGrantedPermissionCount == 0) {
+ grantedGroupLabels
+ } else {
+ grantedGroupLabels +
+ // N additional permissions.
+ context.formatString(
+ R.string.runtime_permissions_additional_count,
+ "count" to additionalGrantedPermissionCount,
+ )
}
}
diff --git a/src/com/android/settings/spa/app/appinfo/AppRestoreButton.kt b/src/com/android/settings/spa/app/appinfo/AppRestoreButton.kt
index 6596529..bf46e95 100644
--- a/src/com/android/settings/spa/app/appinfo/AppRestoreButton.kt
+++ b/src/com/android/settings/spa/app/appinfo/AppRestoreButton.kt
@@ -27,9 +27,18 @@
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.CloudDownload
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.rememberCoroutineScope
+import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.settings.R
import com.android.settingslib.spa.widget.button.ActionButton
import com.android.settingslib.spaprivileged.framework.compose.DisposableBroadcastReceiverAsUser
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.asStateFlow
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.launch
class AppRestoreButton(packageInfoPresenter: PackageInfoPresenter) {
private companion object {
@@ -43,6 +52,16 @@
private val packageName = packageInfoPresenter.packageName
private val userHandle = UserHandle.of(packageInfoPresenter.userId)
private var broadcastReceiverIsCreated = false
+ private lateinit var coroutineScope: CoroutineScope
+ private lateinit var updateButtonTextJob: Job
+ private val buttonTexts = intArrayOf(
+ R.string.restore,
+ R.string.restoring_step_one,
+ R.string.restoring_step_two,
+ R.string.restoring_step_three,
+ R.string.restoring_step_four,
+ )
+ private var buttonTextIndexStateFlow = MutableStateFlow(0)
@Composable
fun getActionButton(app: ApplicationInfo): ActionButton {
@@ -55,10 +74,17 @@
}
broadcastReceiverIsCreated = true
}
+ coroutineScope = rememberCoroutineScope()
+ if (app.isArchived && ::updateButtonTextJob.isInitialized && !updateButtonTextJob.isActive) {
+ buttonTextIndexStateFlow.value = 0
+ }
return ActionButton(
- text = context.getString(R.string.restore),
+ text = context.getString(
+ buttonTexts[
+ buttonTextIndexStateFlow.asStateFlow().collectAsStateWithLifecycle(0).value]
+ ),
imageVector = Icons.Outlined.CloudDownload,
- enabled = app.isArchived
+ enabled = app.isArchived && (!::updateButtonTextJob.isInitialized || !updateButtonTextJob.isActive)
) { onRestoreClicked(app) }
}
@@ -87,6 +113,18 @@
when (val unarchiveStatus =
intent.getIntExtra(PackageInstaller.EXTRA_UNARCHIVE_STATUS, Int.MIN_VALUE)) {
PackageInstaller.UNARCHIVAL_OK -> {
+ // updateButtonTextJob will be canceled automatically once
+ // AppButtonsPresenter#getActionButtons is triggered
+ updateButtonTextJob = coroutineScope.launch {
+ while (isActive) {
+ var index = buttonTextIndexStateFlow.value
+ index = (index + 1) % buttonTexts.size
+ // The initial state shouldn't be used here
+ if (index == 0) index++
+ buttonTextIndexStateFlow.emit(index)
+ delay(1000)
+ }
+ }
val appLabel = userPackageManager.getApplicationLabel(app)
Toast.makeText(
context,
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index d2beec8..1627056 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -60,6 +60,7 @@
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageButton;
+import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
@@ -75,6 +76,8 @@
import com.android.settingslib.Utils;
import com.android.settingslib.utils.ThreadUtils;
import com.android.settingslib.wifi.AccessPoint;
+import com.android.wifi.flags.Flags;
+import com.android.wifitrackerlib.WifiEntry;
import java.net.Inet4Address;
import java.net.InetAddress;
@@ -273,6 +276,12 @@
mDoNotProvideEapUserCertString =
mContext.getString(R.string.wifi_do_not_provide_eap_user_cert);
+ if (Flags.wepUsage() && mAccessPointSecurity == WifiEntry.SECURITY_WEP) {
+ LinearLayout wepWarningLayout =
+ (LinearLayout) mView.findViewById(R.id.wep_warning_layout);
+ wepWarningLayout.setVisibility(View.VISIBLE);
+ }
+
mSsidScanButton = (ImageButton) mView.findViewById(R.id.ssid_scanner_button);
mIpSettingsSpinner = (Spinner) mView.findViewById(R.id.ip_settings);
mIpSettingsSpinner.setOnItemSelectedListener(this);
diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java
index b2353f0..a885330 100644
--- a/src/com/android/settings/wifi/WifiConfigController2.java
+++ b/src/com/android/settings/wifi/WifiConfigController2.java
@@ -61,6 +61,7 @@
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageButton;
+import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
@@ -77,6 +78,7 @@
import com.android.settings.wifi.dpp.WifiDppUtils;
import com.android.settingslib.Utils;
import com.android.settingslib.utils.ThreadUtils;
+import com.android.wifi.flags.Flags;
import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiEntry.ConnectedInfo;
@@ -287,6 +289,12 @@
mContext.getString(R.string.wifi_do_not_provide_eap_user_cert);
mInstallCertsString = mContext.getString(R.string.wifi_install_credentials);
+ if (Flags.wepUsage() && mWifiEntrySecurity == WifiEntry.SECURITY_WEP) {
+ LinearLayout wepWarningLayout =
+ (LinearLayout) mView.findViewById(R.id.wep_warning_layout);
+ wepWarningLayout.setVisibility(View.VISIBLE);
+ }
+
mSsidScanButton = (ImageButton) mView.findViewById(R.id.ssid_scanner_button);
mIpSettingsSpinner = (Spinner) mView.findViewById(R.id.ip_settings);
mIpSettingsSpinner.setOnItemSelectedListener(this);
diff --git a/tests/spa_unit/src/com/android/settings/spa/app/AllAppListTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/AllAppListTest.kt
index 1a05479..0ec8754 100644
--- a/tests/spa_unit/src/com/android/settings/spa/app/AllAppListTest.kt
+++ b/tests/spa_unit/src/com/android/settings/spa/app/AllAppListTest.kt
@@ -31,6 +31,7 @@
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.testutils.FakeNavControllerWrapper
import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull
+import com.android.settingslib.spaprivileged.framework.compose.getPlaceholder
import com.android.settingslib.spaprivileged.template.app.AppListInput
import com.android.settingslib.spaprivileged.template.app.AppListItemModel
import com.google.common.truth.Truth.assertThat
@@ -142,7 +143,7 @@
}
@Test
- fun allAppListModel_getSummary() {
+ fun listModelGetSummary_regular() {
val listModel = AllAppListModel(context) { stateOf(SUMMARY) }
lateinit var summary: () -> String
@@ -154,7 +155,19 @@
}
@Test
- fun allAppListModel_getSummaryWhenDisabled() {
+ fun listModelGetSummary_emptyStorage() {
+ val listModel = AllAppListModel(context) { stateOf("") }
+
+ lateinit var summary: () -> String
+ composeTestRule.setContent {
+ summary = listModel.getSummary(option = 0, record = AppRecordWithSize(app = APP))
+ }
+
+ assertThat(summary()).isEqualTo(context.getPlaceholder())
+ }
+
+ @Test
+ fun listModelGetSummary_disabled() {
val listModel = AllAppListModel(context) { stateOf(SUMMARY) }
val disabledApp = ApplicationInfo().apply {
packageName = PACKAGE_NAME
@@ -172,7 +185,26 @@
}
@Test
- fun allAppListModel_getSummaryWhenNotInstalled() {
+ fun listModelGetSummary_emptyStorageAndDisabled() {
+ val listModel = AllAppListModel(context) { stateOf("") }
+ val disabledApp = ApplicationInfo().apply {
+ packageName = PACKAGE_NAME
+ flags = ApplicationInfo.FLAG_INSTALLED
+ enabled = false
+ }
+
+ lateinit var summary: () -> String
+ composeTestRule.setContent {
+ summary =
+ listModel.getSummary(option = 0, record = AppRecordWithSize(app = disabledApp))
+ }
+
+ assertThat(summary())
+ .isEqualTo(context.getString(com.android.settingslib.R.string.disabled))
+ }
+
+ @Test
+ fun listModelGetSummary_notInstalled() {
val listModel = AllAppListModel(context) { stateOf(SUMMARY) }
val notInstalledApp = ApplicationInfo().apply {
packageName = PACKAGE_NAME
diff --git a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppPermissionPreferenceTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppPermissionPreferenceTest.kt
index 1646851..11d4b9a 100644
--- a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppPermissionPreferenceTest.kt
+++ b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppPermissionPreferenceTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,35 +26,32 @@
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.onRoot
import androidx.compose.ui.test.performClick
-import androidx.lifecycle.MutableLiveData
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.R
import com.android.settingslib.spa.testutils.delay
import com.android.settingslib.spaprivileged.model.app.userHandle
import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.flow.flowOf
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.ArgumentCaptor
-import org.mockito.Mockito.any
-import org.mockito.Mockito.doNothing
-import org.mockito.Mockito.eq
-import org.mockito.Mockito.verify
-import org.mockito.Spy
-import org.mockito.junit.MockitoJUnit
-import org.mockito.junit.MockitoRule
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.doNothing
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
@RunWith(AndroidJUnit4::class)
class AppPermissionPreferenceTest {
@get:Rule
val composeTestRule = createComposeRule()
- @get:Rule
- val mockito: MockitoRule = MockitoJUnit.rule()
-
- @Spy
- private val context: Context = ApplicationProvider.getApplicationContext()
+ private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
+ doNothing().whenever(mock).startActivityAsUser(any(), any())
+ }
@Test
fun title_display() {
@@ -66,15 +63,13 @@
@Test
fun whenClick_startActivity() {
- doNothing().`when`(context).startActivityAsUser(any(), any())
-
setContent()
composeTestRule.onRoot().performClick()
composeTestRule.delay()
- val intentCaptor = ArgumentCaptor.forClass(Intent::class.java)
- verify(context).startActivityAsUser(intentCaptor.capture(), eq(APP.userHandle))
- val intent = intentCaptor.value
+ val intent = argumentCaptor {
+ verify(context).startActivityAsUser(capture(), eq(APP.userHandle))
+ }.firstValue
assertThat(intent.action).isEqualTo(Intent.ACTION_MANAGE_APP_PERMISSIONS)
assertThat(intent.getStringExtra(Intent.EXTRA_PACKAGE_NAME)).isEqualTo(PACKAGE_NAME)
assertThat(intent.getBooleanExtra(EXTRA_HIDE_INFO_BUTTON, false)).isEqualTo(true)
@@ -85,7 +80,7 @@
CompositionLocalProvider(LocalContext provides context) {
AppPermissionPreference(
app = APP,
- summaryLiveData = MutableLiveData(
+ summaryFlow = flowOf(
AppPermissionSummaryState(summary = SUMMARY, enabled = true)
),
)
@@ -103,4 +98,4 @@
packageName = PACKAGE_NAME
}
}
-}
\ No newline at end of file
+}
diff --git a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppPermissionSummaryTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppPermissionSummaryTest.kt
index c82da1a..0735e3b 100644
--- a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppPermissionSummaryTest.kt
+++ b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppPermissionSummaryTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2022 The Android Open Source Project
+ * Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,7 +19,6 @@
import android.content.Context
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
-import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession
@@ -27,50 +26,42 @@
import com.android.settings.testutils.mockAsUser
import com.android.settingslib.applications.PermissionsSummaryHelper
import com.android.settingslib.applications.PermissionsSummaryHelper.PermissionsResultCallback
-import com.android.settingslib.spa.testutils.getOrAwaitValue
import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.runBlocking
import org.junit.After
import org.junit.Before
-import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
-import org.mockito.Mockito.any
-import org.mockito.Mockito.doReturn
-import org.mockito.Mockito.eq
-import org.mockito.Mockito.never
-import org.mockito.Mockito.verify
import org.mockito.MockitoSession
-import org.mockito.Spy
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.whenever
import org.mockito.quality.Strictness
-import org.mockito.Mockito.`when` as whenever
@RunWith(AndroidJUnit4::class)
class AppPermissionSummaryTest {
- @get:Rule
- val instantTaskExecutorRule = InstantTaskExecutorRule()
private lateinit var mockSession: MockitoSession
- @Spy
- private var context: Context = ApplicationProvider.getApplicationContext()
+ private val mockPackageManager = mock<PackageManager>()
- @Mock
- private lateinit var packageManager: PackageManager
+ private var context: Context = spy(ApplicationProvider.getApplicationContext()) {
+ mock.mockAsUser()
+ on { packageManager } doReturn mockPackageManager
+ }
- private lateinit var summaryLiveData: AppPermissionSummaryLiveData
+ private val summaryRepository = AppPermissionSummaryRepository(context, APP)
@Before
fun setUp() {
mockSession = mockitoSession()
- .initMocks(this)
.mockStatic(PermissionsSummaryHelper::class.java)
.strictness(Strictness.LENIENT)
.startMocking()
- context.mockAsUser()
- whenever(context.packageManager).thenReturn(packageManager)
-
- summaryLiveData = AppPermissionSummaryLiveData(context, APP)
}
private fun mockGetPermissionSummary(
@@ -95,22 +86,10 @@
}
@Test
- fun permissionsChangeListener() {
- mockGetPermissionSummary()
-
- summaryLiveData.getOrAwaitValue {
- verify(packageManager).addOnPermissionsChangeListener(any())
- verify(packageManager, never()).removeOnPermissionsChangeListener(any())
- }
-
- verify(packageManager).removeOnPermissionsChangeListener(any())
- }
-
- @Test
- fun summary_noPermissionsRequested() {
+ fun summary_noPermissionsRequested() = runBlocking {
mockGetPermissionSummary(requestedPermissionCount = 0)
- val (summary, enabled) = summaryLiveData.getOrAwaitValue()!!
+ val (summary, enabled) = summaryRepository.flow.first()
assertThat(summary).isEqualTo(
context.getString(R.string.runtime_permissions_summary_no_permissions_requested)
@@ -119,10 +98,10 @@
}
@Test
- fun summary_noPermissionsGranted() {
+ fun summary_noPermissionsGranted() = runBlocking {
mockGetPermissionSummary(requestedPermissionCount = 1, grantedGroupLabels = emptyList())
- val (summary, enabled) = summaryLiveData.getOrAwaitValue()!!
+ val (summary, enabled) = summaryRepository.flow.first()
assertThat(summary).isEqualTo(
context.getString(R.string.runtime_permissions_summary_no_permissions_granted)
@@ -131,34 +110,34 @@
}
@Test
- fun onPermissionSummaryResult_hasRuntimePermission_shouldSetPermissionAsSummary() {
+ fun summary_hasRuntimePermission_usePermissionAsSummary() = runBlocking {
mockGetPermissionSummary(
requestedPermissionCount = 1,
grantedGroupLabels = listOf(PERMISSION),
)
- val (summary, enabled) = summaryLiveData.getOrAwaitValue()!!
+ val (summary, enabled) = summaryRepository.flow.first()
assertThat(summary).isEqualTo(PERMISSION)
assertThat(enabled).isTrue()
}
@Test
- fun onPermissionSummaryResult_hasAdditionalPermission_shouldSetAdditionalSummary() {
+ fun summary_hasAdditionalPermission_containsAdditionalSummary() = runBlocking {
mockGetPermissionSummary(
requestedPermissionCount = 5,
additionalGrantedPermissionCount = 2,
grantedGroupLabels = listOf(PERMISSION),
)
- val (summary, enabled) = summaryLiveData.getOrAwaitValue()!!
+ val (summary, enabled) = summaryRepository.flow.first()
assertThat(summary).isEqualTo("Storage and 2 additional permissions")
assertThat(enabled).isTrue()
}
private companion object {
- const val PACKAGE_NAME = "packageName"
+ const val PACKAGE_NAME = "package.name"
const val PERMISSION = "Storage"
val APP = ApplicationInfo().apply {
packageName = PACKAGE_NAME
diff --git a/tests/spa_unit/src/com/android/settings/testutils/ContextTestUtil.kt b/tests/spa_unit/src/com/android/settings/testutils/ContextTestUtil.kt
index 43b7a20..a2b479c 100644
--- a/tests/spa_unit/src/com/android/settings/testutils/ContextTestUtil.kt
+++ b/tests/spa_unit/src/com/android/settings/testutils/ContextTestUtil.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2022 The Android Open Source Project
+ * Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,10 +17,11 @@
package com.android.settings.testutils
import android.content.Context
-import org.mockito.Mockito.any
-import org.mockito.Mockito.doReturn
-import org.mockito.Mockito.eq
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.whenever
fun Context.mockAsUser() {
- doReturn(this).`when`(this).createContextAsUser(any(), eq(0))
+ doReturn(this).whenever(this).createContextAsUser(any(), eq(0))
}