summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--aconfig/settings_bluetooth_declarations.aconfig8
-rw-r--r--res-product/values/strings.xml6
-rw-r--r--res/drawable/keyboard_arrow_left.xml19
-rw-r--r--res/drawable/keyboard_arrow_right.xml19
-rw-r--r--res/layout/accessibility_text_reading_preview.xml53
-rw-r--r--res/values-af/strings.xml1
-rw-r--r--res/values-am/strings.xml1
-rw-r--r--res/values-ar/strings.xml1
-rw-r--r--res/values-as/strings.xml1
-rw-r--r--res/values-az/strings.xml1
-rw-r--r--res/values-b+sr+Latn/strings.xml1
-rw-r--r--res/values-be/strings.xml1
-rw-r--r--res/values-bg/strings.xml1
-rw-r--r--res/values-bn/strings.xml1
-rw-r--r--res/values-bs/strings.xml1
-rw-r--r--res/values-ca/strings.xml1
-rw-r--r--res/values-cs/strings.xml1
-rw-r--r--res/values-da/strings.xml1
-rw-r--r--res/values-de/strings.xml1
-rw-r--r--res/values-el/strings.xml1
-rw-r--r--res/values-en-rAU/strings.xml1
-rw-r--r--res/values-en-rCA/strings.xml1
-rw-r--r--res/values-en-rGB/strings.xml1
-rw-r--r--res/values-en-rIN/strings.xml1
-rw-r--r--res/values-en-rXC/strings.xml1
-rw-r--r--res/values-es-rUS/strings.xml1
-rw-r--r--res/values-es/strings.xml1
-rw-r--r--res/values-et/strings.xml1
-rw-r--r--res/values-eu/strings.xml1
-rw-r--r--res/values-fa/strings.xml1
-rw-r--r--res/values-fi/strings.xml1
-rw-r--r--res/values-fr-rCA/strings.xml1
-rw-r--r--res/values-fr/strings.xml1
-rw-r--r--res/values-gl/strings.xml1
-rw-r--r--res/values-gu/strings.xml1
-rw-r--r--res/values-hi/strings.xml1
-rw-r--r--res/values-hr/strings.xml1
-rw-r--r--res/values-hu/strings.xml1
-rw-r--r--res/values-hy/strings.xml1
-rw-r--r--res/values-in/strings.xml1
-rw-r--r--res/values-is/strings.xml1
-rw-r--r--res/values-it/strings.xml1
-rw-r--r--res/values-iw/strings.xml1
-rw-r--r--res/values-ja/strings.xml1
-rw-r--r--res/values-ka/strings.xml1
-rw-r--r--res/values-kk/strings.xml1
-rw-r--r--res/values-km/strings.xml1
-rw-r--r--res/values-kn/strings.xml1
-rw-r--r--res/values-ko/strings.xml1
-rw-r--r--res/values-ky/strings.xml1
-rw-r--r--res/values-lo/strings.xml1
-rw-r--r--res/values-lt/strings.xml1
-rw-r--r--res/values-lv/strings.xml1
-rw-r--r--res/values-mk/strings.xml1
-rw-r--r--res/values-ml/strings.xml1
-rw-r--r--res/values-mn/strings.xml1
-rw-r--r--res/values-mr/strings.xml1
-rw-r--r--res/values-ms/strings.xml1
-rw-r--r--res/values-my/strings.xml1
-rw-r--r--res/values-nb/strings.xml1
-rw-r--r--res/values-ne/strings.xml1
-rw-r--r--res/values-nl/strings.xml1
-rw-r--r--res/values-or/strings.xml1
-rw-r--r--res/values-pa/strings.xml1
-rw-r--r--res/values-pl/strings.xml1
-rw-r--r--res/values-pt-rBR/strings.xml1
-rw-r--r--res/values-pt-rPT/strings.xml1
-rw-r--r--res/values-pt/strings.xml1
-rw-r--r--res/values-ro/strings.xml1
-rw-r--r--res/values-ru/strings.xml1
-rw-r--r--res/values-si/strings.xml1
-rw-r--r--res/values-sk/strings.xml1
-rw-r--r--res/values-sl/strings.xml1
-rw-r--r--res/values-sq/strings.xml1
-rw-r--r--res/values-sr/strings.xml1
-rw-r--r--res/values-sv/strings.xml1
-rw-r--r--res/values-sw/strings.xml1
-rw-r--r--res/values-ta/strings.xml1
-rw-r--r--res/values-te/strings.xml1
-rw-r--r--res/values-th/strings.xml1
-rw-r--r--res/values-tl/strings.xml1
-rw-r--r--res/values-tr/strings.xml1
-rw-r--r--res/values-uk/strings.xml1
-rw-r--r--res/values-ur/strings.xml1
-rw-r--r--res/values-uz/strings.xml1
-rw-r--r--res/values-vi/strings.xml1
-rw-r--r--res/values-zh-rCN/strings.xml1
-rw-r--r--res/values-zh-rHK/strings.xml1
-rw-r--r--res/values-zh-rTW/strings.xml1
-rw-r--r--res/values-zu/strings.xml1
-rw-r--r--res/values/strings.xml30
-rw-r--r--res/xml/accessibility_autoclick_settings.xml5
-rw-r--r--res/xml/dark_mode_settings.xml4
-rw-r--r--src/com/android/settings/accessibility/TextReadingPreviewPreference.java23
-rw-r--r--src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickController.java75
-rw-r--r--src/com/android/settings/bluetooth/ForgetDeviceDialogFragment.java103
-rw-r--r--src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java307
-rw-r--r--src/com/android/settings/datetime/DateTimeLaunchUtils.java52
-rw-r--r--src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryController.java7
-rw-r--r--src/com/android/settings/datetime/TimeFeedbackPreferenceController.java10
-rw-r--r--src/com/android/settings/display/ScreenResolutionFragment.java11
-rw-r--r--src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceController.java59
-rw-r--r--src/com/android/settings/nfc/OWNERS1
-rw-r--r--src/com/android/settings/password/ChooseLockPassword.java4
-rw-r--r--src/com/android/settings/password/ConfirmLockPassword.java5
-rw-r--r--src/com/android/settings/password/OWNERS1
-rw-r--r--src/com/android/settings/widget/CheckableRelativeLayout.java19
-rw-r--r--tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickControllerTest.java95
-rw-r--r--tests/robotests/src/com/android/settings/bluetooth/ForgetDeviceDialogFragmentTest.java129
-rw-r--r--tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryControllerTest.java45
-rw-r--r--tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceControllerTest.java19
-rw-r--r--tests/robotests/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceControllerTest.java86
-rw-r--r--tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java2
-rw-r--r--tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java215
114 files changed, 903 insertions, 594 deletions
diff --git a/aconfig/settings_bluetooth_declarations.aconfig b/aconfig/settings_bluetooth_declarations.aconfig
index 4d2528a71db..7f3089500f6 100644
--- a/aconfig/settings_bluetooth_declarations.aconfig
+++ b/aconfig/settings_bluetooth_declarations.aconfig
@@ -54,3 +54,11 @@ flag {
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ name: "enable_remove_association_bt_unpair"
+ is_exported: true
+ namespace: "companion_device_manager"
+ description: "Allow to disassociate when to forget a BT pair device"
+ bug: "365613753"
+ }
diff --git a/res-product/values/strings.xml b/res-product/values/strings.xml
index c121406a03f..48810b9cc49 100644
--- a/res-product/values/strings.xml
+++ b/res-product/values/strings.xml
@@ -419,6 +419,12 @@
<string name="bluetooth_unpair_dialog_body" product="tablet">Your tablet will no longer be paired with <xliff:g id="device_name">%1$s</xliff:g></string>
<!-- Bluetooth device details. The body of a confirmation dialog for unpairing a paired device. -->
<string name="bluetooth_unpair_dialog_body" product="device">Your device will no longer be paired with <xliff:g id="device_name">%1$s</xliff:g></string>
+ <!-- Bluetooth device details. The body of a confirmation dialog for unpairing a paired device if there's any associations associated with this device [CHAR_LIMIT=NONE] -->
+ <string name="bluetooth_unpair_dialog_with_associations_body" product="default">Your phone will no longer be paired with <xliff:g id="device_name">%1$s</xliff:g>.\u0020<xliff:g id="app_name">%2$s</xliff:g> will no longer manage the device</string>
+ <!-- Bluetooth device details. The body of a confirmation dialog for unpairing a paired device if there's any associations associated with this device [CHAR_LIMIT=NONE] -->
+ <string name="bluetooth_unpair_dialog_with_associations_body" product="tablet">Your tablet will no longer be paired with <xliff:g id="device_name">%1$s</xliff:g>.\u0020<xliff:g id="app_name">%2$s</xliff:g> will no longer manage the device</string>
+ <!-- Bluetooth device details. The body of a confirmation dialog for unpairing a paired device if there's any associations associated with this device [CHAR_LIMIT=NONE] -->
+ <string name="bluetooth_unpair_dialog_with_associations_body" product="device">Your device will no longer be paired with <xliff:g id="device_name">%1$s</xliff:g>.\u0020<xliff:g id="app_name">%2$s</xliff:g> will no longer manage the device</string>
<!-- Virtual device details. The body of a confirmation dialog for unpairing a paired device. [CHAR LIMIT=none] -->
<string name="virtual_device_forget_dialog_body" product="default"><xliff:g id="device_name">%1$s</xliff:g> will no longer be connected to this phone. If you continue, some apps and app streaming may stop working.</string>
<!-- Virtual device details. The body of a confirmation dialog for unpairing a paired device. [CHAR LIMIT=none] -->
diff --git a/res/drawable/keyboard_arrow_left.xml b/res/drawable/keyboard_arrow_left.xml
new file mode 100644
index 00000000000..c2ffc1d21cf
--- /dev/null
+++ b/res/drawable/keyboard_arrow_left.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960" android:tint="?attr/colorControlNormal" android:autoMirrored="true">
+ <path android:fillColor="@color/settingslib_materialColorPrimary" android:pathData="M560,720L320,480L560,240L616,296L432,480L616,664L560,720Z"/>
+</vector> \ No newline at end of file
diff --git a/res/drawable/keyboard_arrow_right.xml b/res/drawable/keyboard_arrow_right.xml
new file mode 100644
index 00000000000..ba763690521
--- /dev/null
+++ b/res/drawable/keyboard_arrow_right.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960" android:tint="?attr/colorControlNormal" android:autoMirrored="true">
+ <path android:fillColor="@color/settingslib_materialColorPrimary" android:pathData="M504,480L320,296L376,240L616,480L376,720L320,664L504,480Z" />
+</vector> \ No newline at end of file
diff --git a/res/layout/accessibility_text_reading_preview.xml b/res/layout/accessibility_text_reading_preview.xml
index 830d9e66778..2532a7957eb 100644
--- a/res/layout/accessibility_text_reading_preview.xml
+++ b/res/layout/accessibility_text_reading_preview.xml
@@ -38,20 +38,47 @@
android:text="@string/screen_zoom_preview_title"
style="@style/AccessibilityTextReadingPreviewTitle" />
- <com.android.settings.accessibility.TextReadingPreviewPager
- android:id="@+id/preview_pager"
+ <LinearLayout
android:layout_width="match_parent"
- android:layout_height="217dp"
- android:contentDescription="@string/preview_pager_content_description"
- android:nestedScrollingEnabled="true" />
-
- <com.android.settings.widget.DotsPageIndicator
- android:id="@+id/page_indicator"
- style="@style/PreviewPagerPageIndicator"
- android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:padding="6dp"
- android:visibility="gone" />
+ android:orientation="vertical">
+ <com.android.settings.accessibility.TextReadingPreviewPager
+ android:id="@+id/preview_pager"
+ android:layout_width="wrap_content"
+ android:layout_height="217dp"
+ android:contentDescription="@string/preview_pager_content_description"
+ android:nestedScrollingEnabled="true" />
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_gravity="center_horizontal"
+ android:gravity="center_horizontal">
+ <ImageButton
+ android:id="@+id/preview_left_button"
+ android:src="@drawable/keyboard_arrow_left"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_gravity="center_vertical"
+ android:contentDescription="@string/preview_pager_previous_button"
+ style="?android:attr/borderlessButtonStyle" />
+ <com.android.settings.widget.DotsPageIndicator
+ android:id="@+id/page_indicator"
+ style="@style/PreviewPagerPageIndicator"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:padding="6dp"
+ android:visibility="gone" />
+ <ImageButton
+ android:id="@+id/preview_right_button"
+ android:src="@drawable/keyboard_arrow_right"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_gravity="center_vertical"
+ android:contentDescription="@string/preview_pager_next_button"
+ style="?android:attr/borderlessButtonStyle" />
+ </LinearLayout>
+ </LinearLayout>
</LinearLayout>
</FrameLayout>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index d5165c939ef..530dfce499b 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Hoë resolusie"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimum resolusie"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimum resolusie gebruik meer van jou battery. As jy jou resolusie oorskakel, sal sommige apps dalk herbegin."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Gekies"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Kleure"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Natuurlik"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Gemaksimeer"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 8b5dbfcb76b..ed94606a55e 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"ከፍተኛ ጥራት"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"ከፍተኛው ጥራት"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"ከፍተኛው ጥራት የባትሪዎን ተጨማሪ ይጠቀማል። ጥራትዎን መቀየር አንዳንድ መተግበሪያዎች እንደገና እንዲጀምሩ ሊያስደርግ ይችላል።"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ተመርጧል"</string>
<string name="color_mode_title" msgid="8666690832113906028">"ቀለማት"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"ተፈጥሯዊ"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"ተጨምሯል"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 91e3b3f813a..4a8a3e264a8 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"دقة عالية"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"الحد الأقصى للدقة"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"يستهلك الحد الأقصى للدقة مزيدًا من طاقة البطارية. وقد يؤدي تبديل الدقة إلى إعادة تشغيل بعض التطبيقات."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"تم الاختيار"</string>
<string name="color_mode_title" msgid="8666690832113906028">"الألوان"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"طبيعية"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"مُحسنة"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index d253972a83c..0b5a9773f1f 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"উচ্চ ৰিজ\'লিউশ্বন"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"সর্বাধিক ৰিজ’লিউশ্বন"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"সর্বাধিক ৰিজ’লিউশ্বনে আপোনাৰ অধিক বেটাৰী ব্যৱহাৰ কৰে। আপোনাৰ ৰিজ’লিউশ্বনলৈ সলনি কৰিলে কিছুমান এপ্‌ ৰিষ্টাৰ্ট হ’ব পাৰে।"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"বাছনি কৰা হৈছে"</string>
<string name="color_mode_title" msgid="8666690832113906028">"ৰংবোৰ"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"প্ৰাকৃতিক"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"বৃদ্ধি কৰা"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index ce505f6cda5..9fc5d7f2343 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Yüksək ayırdetmə dəqiqliyi"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maks ayırdetmə dəqiqliyi"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maks ayırdetmə dəqiqliyi batareyanızdan daha çox istifadə edir. Ayırdetmə dəqiqliyinin dəyişdirilməsi bəzi tətbiqlərin yenidən başladılmasına səbəb ola bilər."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seçilib"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Rənglər"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Təbii"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Dolğun"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 2d2ad3ba4ee..6cb31d16c8d 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -1315,7 +1315,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Visoka rezolucija"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimalna rezolucija"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimalna rezolucija koristi više baterije. Ako pređete na ovu rezoluciju, neke aplikacije će se možda restartovati."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Izabrano je"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Boje"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Prirodne"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Pojačane"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index e37d73afc15..73ebe0c8a11 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Высокая раздзяляльнасць"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Максімальная раздзяляльнасць"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Пры максімальнай раздзяляльнасці хутчэй разраджаецца акумулятар. Пераключэнне на іншую раздзяляльнасць экрана можа прывесці да перазапуску некаторых праграм."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Выбрана"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Колеры"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Натуральныя"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Яркія"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 5c4d56a83dc..5f8560470c2 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Висока разделителна способност"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Максимална разделителна способност"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Максималната разделителна способност изразходва батерията ви в по-голяма степен. Превключването на разделителната способност може да доведе до рестартирането на някои приложения."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Избрано"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Цветове"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Естествени"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Подсилени"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 26089c7e2b4..f30bda15290 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"হাই রেজোলিউশন"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"সর্বাধিক রেজোলিউশন"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"সর্বাধিক রেজোলিউশন ব্যবহার করলে আপনার ব্যাটারির চার্জ বেশি খরচ হয়। রেজোলিউশন পরিবর্তন করা হলে কিছু অ্যাপ রিস্টার্ট হতে পারে।"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"বেছে নেওয়া হয়েছে"</string>
<string name="color_mode_title" msgid="8666690832113906028">"রঙ"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"স্বাভাবিক"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"বুস্ট করা"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 5b4375929cd..8ed4fedc718 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Visoka rezolucija"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimalna rezolucija"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimalna rezolucija troši više baterije. Zbog promjene rezolucije neke aplikacije se mogu ponovo pokrenuti."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Odabrano"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Boje"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Prirodne"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Pojačane"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 4b34545a8f0..a356880847f 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolució"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolució màxima"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"La resolució màxima consumeix més bateria. Si canvies la resolució, és possible que algunes aplicacions es reiniciïn."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seleccionada"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Colors"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturals"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Millorats"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 0bd66538244..325dba5441a 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Vysoké rozlišení"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maximální rozlišení"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maximální rozlišení víc vybíjí baterii. Po přepnutí rozlišení se některé aplikace můžou restartovat."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Vybráno"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Barvy"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Přirozené"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Zesílené"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 7a384bda896..6a616b59df2 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Høj opløsning"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimal opløsning"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimal opløsning bruger mere batteri. Nogle apps genstarter muligvis, hvis du skifter opløsning."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Valgt"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Farver"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturlige"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Forstærkede"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 633b2b8f3c8..9dc00d9c353 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Hohe Auflösung"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maximale Auflösung"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Bei maximaler Auflösung wird mehr Akkukapazität verbraucht. Wenn du die Auflösung änderst, werden einige Apps möglicherweise neu gestartet."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Ausgewählt"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Farben"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Natürlich"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Verstärkt"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 06cbb33d4c1..efca6007c78 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Υψηλή ανάλυση"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Μέγιστη ανάλυση"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Η μέγιστη ανάλυση χρησιμοποιεί περισσότερο την μπαταρία. Η αλλαγή της ανάλυσης μπορεί να προκαλέσει επανεκκίνηση ορισμένων εφαρμογών."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Επιλέχθηκε"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Χρώματα"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Φυσικό"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Ενισχυμένο"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index b128d80d5a9..4916707f46f 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"High resolution"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Max resolution"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Max resolution uses more of your battery. Switching your resolution may cause some apps to restart."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selected"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Colours"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Natural"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Boosted"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 9a07172c84d..99750781210 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -1315,7 +1315,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"High resolution"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Max resolution"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Max resolution uses more of your battery. Switching your resolution may cause some apps to restart."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selected"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Colors"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Natural"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Boosted"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 7ca1b5d0ab8..593c655b38c 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"High resolution"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Max resolution"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Max resolution uses more of your battery. Switching your resolution may cause some apps to restart."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selected"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Colours"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Natural"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Boosted"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index d3c742e60dd..68691633688 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"High resolution"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Max resolution"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Max resolution uses more of your battery. Switching your resolution may cause some apps to restart."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selected"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Colours"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Natural"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Boosted"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 0ed369a4de1..4a2dcaec11d 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -1228,7 +1228,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‎‎‏‎‏‎‎‏‏‎‎‏‏‎‏‏‏‏‎‎‎‎‎‏‎‏‎‏‎‏‏‏‎‏‏‏‏‎‏‎‏‏‎‎‎‎‏‏‏‎‏‎‏‎‏‎‏‎High resolution‎‏‎‎‏‎"</string>
<string name="screen_resolution_option_full" msgid="2694003735219114186">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‎‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‏‎‎‏‎‏‎‎Full resolution‎‏‎‎‏‎"</string>
<string name="screen_resolution_footer" msgid="6772341522952795647">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‏‏‏‎‎‎‎‏‏‎‎‎‎‏‎‏‏‏‎‏‏‏‏‎‏‎‏‎‏‎‎‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎Full resolution uses more of your battery. Switching your resolution may cause some apps to restart.‎‏‎‎‏‎"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‏‎Selected‎‏‎‎‏‎"</string>
<string name="color_mode_title" msgid="8666690832113906028">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‎‎‏‎‎‎‏‎‏‎‏‏‎‎‏‎‎‏‏‎‎‏‎‏‎‎‏‎‎‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‎‏‏‎‎‎Colors‎‏‎‎‏‎"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‏‎‎‎‏‏‎‎‎‎‎‏‏‏‎‎‏‏‎‎‎‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‏‏‎Natural‎‏‎‎‏‎"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‎‏‎‏‎‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‏‎‎‏‏‏‏‏‏‎‎‎‏‏‏‎‎‎‎‏‎‏‏‎‎‎‎‏‎‎‎‏‎Boosted‎‏‎‎‏‎"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 5a90ddfb4dd..c7322c5f09d 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolución"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolución máxima"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"La resolución máxima consume más batería. Es posible que, si cambias la resolución, algunas apps se reinicien."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seleccionada"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Colores"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturales"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Potenciado"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 91dda808093..e8ff03af087 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolución"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolución máxima"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"La resolución máxima consume más batería. Cambiar la resolución puede provocar que algunas aplicaciones se reinicien."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seleccionado"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Colores"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturales"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Mejorados"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 1866ca349b6..e5526608a07 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Kõrge eraldusvõime"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimaalne eraldusvõime"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimaalne eraldusvõime tarbib rohkem akut. Eraldusvõime muutmine võib mõne rakenduse taaskäivitada."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Valitud"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Värvid"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Loomulikud"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Võimendatud"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 88697811d2e..87c3b522336 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Bereizmen handia"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Bereizmen handiena"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Bereizmen handienarekin bateria gehiago kontsumitzen da. Bereizmena aldatuz gero, baliteke aplikazio batzuk berrabiaraztea."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Hautatuta"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Koloreak"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturalak"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Nabarmenduak"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index a683c737039..5a3f8de63b8 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"وضوح بالا"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"وضوح بیشینه"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"«وضوح بیشینه» از شارژ باتری بیشتری استفاده می‌کند. تغییر دادن وضوح ممکن است باعث شود برخی‌از برنامه‌ها بازراه‌اندازی شوند."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"انتخاب‌شده"</string>
<string name="color_mode_title" msgid="8666690832113906028">"رنگ‌"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"طبیعی"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"تقویت‌شده"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 6991880b05e..480c0ee6d55 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Korkea resoluutio"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimaalinen resoluutio"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimaalinen resoluutio kuluttaa enemmän akkua. Jotkin sovellukset käynnistyvät uudelleen, kun vaihdat resoluutiota."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Valittu"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Värit"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Luonnollinen"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Tehostettu"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 3b29aab3d93..0973f7587c6 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Haute résolution"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Résolution maximale"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"La résolution maximale sollicite davantage votre pile. Le changement de résolution peut entraîner le redémarrage de certaines applis."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Sélectionnée"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Couleurs"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturelles"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Intenses"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 0c76e3e0266..e42b499f9b9 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Haute résolution"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Résolution maximale"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"La résolution maximale consomme davantage de batterie. Modifier la résolution peut entraîner le redémarrage de certaines applis."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Sélectionnée"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Couleurs"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturelles"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Rehaussées"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 762c705ad21..31dd10c405b 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolución"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Máxima resolución"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"A máxima resolución consome máis batería. Se cambias a resolución, pode que se reinicien algunhas aplicacións."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seleccionada"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Cores"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturais"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Realzadas"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index b60bc67555a..6094ebef3b1 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"વધુ રિઝોલ્યુશન"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"ઉચ્ચ રિઝોલ્યુશન"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"ઉચ્ચ રિઝોલ્યુશનથી તમારી બૅટરીનો વપરાશ વધુ થાય છે. તમારું રિઝોલ્યુશન સ્વિચ કરવાથી કેટલીક ઍપ કદાચ ફરી શરૂ થઈ શકે છે."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"પસંદ કર્યું"</string>
<string name="color_mode_title" msgid="8666690832113906028">"રંગો"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"કુદરતી"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"બુસ્ટ કરેલ"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 1e748363e80..c30cd728d4f 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"हाई रिज़ॉल्यूशन"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"फ़ुल रिज़ॉल्यूशन"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"फ़ुल रिज़ॉल्यूशन में ज़्यादा बैटरी खर्च होती है. रिज़ॉल्यूशन बदलने पर, कुछ ऐप्लिकेशन रीस्टार्ट हो सकते हैं."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"चुना गया"</string>
<string name="color_mode_title" msgid="8666690832113906028">"रंग"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"बिना किसी बदलाव के"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"बूस्ट किया गया"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 7c58370b91f..05c3bd5de3f 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Visoka razlučivost"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimalna razlučivost"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimalna razlučivost više troši bateriju. Promjena razlučivosti može uzrokovati ponovno pokretanje nekih aplikacija."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Odabrano"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Boje"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Prirodno"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Pojačano"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 2783c4db7f2..8913c79607d 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Nagy felbontás"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maximális felbontás"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"A maximális felbontás jobban igénybe veszi az akkumulátort. A felbontásra váltáskor előfordulhat, hogy néhány alkalmazás újraindul."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Kijelölve"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Színek"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Természetes"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Élénk"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index d87d47beb4b..b895fd3237f 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Բարձր լուծաչափ"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Առավելագույն լուծաչափ"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Առավելագույն լուծաչափը մարտկոցի լիցքն ավելի շատ է սպառում։ Այս լուծաչափին անցնելու դեպքում որոշ հավելվածներ կարող են վերագործարկվել։"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Ընտրված է"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Գույներ"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Բնական"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Պայծառ"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 351bbc623a5..1b8312122df 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Resolusi tinggi"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolusi maksimum"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Resolusi maksimum menggunakan lebih banyak daya baterai. Mengganti resolusi mungkin menyebabkan beberapa aplikasi dimulai ulang."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Dipilih"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Warna"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Alami"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Dipertajam"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 5ad2a77bb16..7bd32aed475 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Há upplausn"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Hámarksupplausn"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Hámarksupplausn gengur meira á rafhlöðuna. Hugsanlega munu einhver forrit endurræsast ef upplausn er breytt."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Valið"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Litir"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Náttúrulegir"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Efldir"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 3ba9bff8a44..38beb2cc51a 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -1315,7 +1315,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta risoluzione"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Massima risoluzione"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Se usi la massima risoluzione, viene consumata più batteria. La modifica della risoluzione potrebbe causare il riavvio di alcune app."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selezionata"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Colori"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturali"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Migliorati"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 48797d1b403..e22ff376379 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"רזולוציה גבוהה"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"רזולוציה מקסימלית"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"כשמשתמשים ברזולוציה מקסימלית, צריכת הסוללה גבוהה יותר. שינוי הרזולוציה עלול לגרום להפעלה מחדש של חלק מהאפליקציות."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"נבחרה"</string>
<string name="color_mode_title" msgid="8666690832113906028">"צבעים"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"גוון טבעי"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"גוון מוגבר"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 750dd040a32..fbdfd8f7a11 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -1315,7 +1315,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"高解像度"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"最大解像度"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"最大解像度ではバッテリー消費量が多くなります。解像度を切り替えると、一部のアプリが再起動することがあります。"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"選択中"</string>
<string name="color_mode_title" msgid="8666690832113906028">"カラー"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"ナチュラル"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"ブースト"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 42ac1c0de0b..24a05e34449 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"მაღალი გარჩევადობა"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"მაქსიმალური გარჩევადობა"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"მაქსიმალური გარჩევადობა მეტად მოიხმარს ბატარეას. გარჩევადობის გადართვამ შეიძლება გამოიწვიოს ზოგიერთი აპის გადატვირთვა."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"არჩეულია"</string>
<string name="color_mode_title" msgid="8666690832113906028">"ფერები"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"ბუნებრივი"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"გაძლიერებული"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 8b07a2e1b8c..fe1438a3058 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Жоғары ажыратымдылық"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Ең жоғары ажыратымдылық"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Ең жоғары ажыратымдылық батарея зарядын көбірек пайдаланады. Ажыратымдылықты ауыстырсаңыз, кейбір қолданбалар өшіп қосылады."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Таңдалды."</string>
<string name="color_mode_title" msgid="8666690832113906028">"Түстер"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Табиғи"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Жарқын"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 16bc1d3a27c..613dc3df82f 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"កម្រិតច្បាស់ខ្ពស់"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"កម្រិតគុណភាពខ្ពស់បំផុត"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"កម្រិតគុណភាពខ្ពស់បំផុតប្រើថ្មរបស់អ្នកច្រើនជាង។ ការប្ដូរកម្រិតគុណភាពរបស់អ្នកអាចបណ្ដាលឱ្យកម្មវិធីមួយចំនួនចាប់ផ្ដើមឡើងវិញ។"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"បានជ្រើសរើស"</string>
<string name="color_mode_title" msgid="8666690832113906028">"ពណ៌"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"ធម្មជាតិ"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"បង្កើនពន្លឺ"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 6539b226b3b..7205f2c4c80 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"ಹೆಚ್ಚಿನ ರೆಸಲ್ಯೂಷನ್"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"ಗರಿಷ್ಠ ರೆಸಲ್ಯೂಶನ್"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"ಗರಿಷ್ಠ ರೆಸಲ್ಯೂಶನ್ ನಿಮ್ಮ ಬ್ಯಾಟರಿಯನ್ನು ಹೆಚ್ಚು ಬಳಸುತ್ತದೆ. ನಿಮ್ಮ ರೆಸಲ್ಯೂಶನ್ ಅನ್ನು ಬದಲಿಸುವುದರಿಂದ ಕೆಲವು ಆ್ಯಪ್‌ಗಳು ಮರುಪ್ರಾರಂಭವಾಗಬಹುದು."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ"</string>
<string name="color_mode_title" msgid="8666690832113906028">"ಬಣ್ಣಗಳು"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"ಸ್ವಾಭಾವಿಕ"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"ಬೂಸ್ಟ್ ಮಾಡಿರುವುದು"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 74a7b579f94..adc260b2065 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"고해상도"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"최대 해상도"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"최대 해상도 사용 시 배터리 사용량이 증가합니다. 해상도를 전환하면 일부 앱이 다시 시작될 수 있습니다."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"선택됨"</string>
<string name="color_mode_title" msgid="8666690832113906028">"색상"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"자연스럽게"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"생생하게"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 5b60b3adc5f..1b277dd1e03 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Жогорку дааналык"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Эң жогорку дааналык"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Эң жогорку дааналык режиминде батареяңыз тез отуруп калат. Дааналыкты өзгөртсөңүз, айрым колдонмолор өчүп кайра күйүшү мүмкүн."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Тандалды"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Түстөр"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Табигый"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Күчөтүлгөн"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 66491ba2d44..3a42075d987 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"ຄວາມລະອຽດສູງ"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"ຄວາມລະອຽດສູງສຸດ"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"ຄວາມລະອຽດສູງສຸດຈະໃຊ້ແບັດເຕີຣີຂອງທ່ານຫຼາຍຂຶ້ນ. ການປ່ຽນຄວາມລະອຽດຂອງທ່ານອາດເຮັດໃຫ້ບາງແອັບຣີສະຕາດ."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ເລືອກແລ້ວ"</string>
<string name="color_mode_title" msgid="8666690832113906028">"ສີ"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"ທຳ​ມະ​ຊາດ"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"ສີເຂັ້ມຂຶ້ນ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 620f234f8d9..6aa84ce6949 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Didelė skyra"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Didžiausia skyra"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Didžiausia skyra eikvoja daugiau akumuliatoriaus energijos. Perjungus skyrą, kai kurios programos gali būti paleistos iš naujo."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Pasirinkta"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Spalvos"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Natūrali"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Suintensyvinta"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index cfd60a506e6..7e97580c43a 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Augsta izšķirtspēja"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimālā izšķirtspēja"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Izmantojot maksimālo izšķirtspēju, tiek patērēts vairāk akumulatora enerģijas. Ja mainīsiet izšķirtspēju, noteiktas lietotnes var tikt restartētas."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Atlasīta"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Krāsas"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Dabiska"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Paspilgtināta"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index e857e32be64..7e2a519d74a 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Висока резолуција"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Максимална резолуција"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Максималната резолуција повеќе ја троши батеријата. Ако ја смените резолуцијата, некои од апликациите може да се рестартираат."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Избрано"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Бои"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Природни"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Нагласени"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 47488400e4c..afe47748fa2 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -1315,7 +1315,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"കൂടിയ റെസല്യൂഷൻ"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"പരമാവധി റെസല്യൂഷൻ"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"പരമാവധി റെസല്യൂഷൻ കൂടുതൽ ബാറ്ററി ചാർജ് ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ റെസല്യൂഷൻ മാറ്റുന്നത് ചില ആപ്പുകൾ റീസ്റ്റാർട്ട് ചെയ്യാൻ കാരണമായേക്കാം."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"തിരഞ്ഞെടുത്തു"</string>
<string name="color_mode_title" msgid="8666690832113906028">"നിറങ്ങൾ"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"സ്വാഭാവികം"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"ബൂസ്‌റ്റ് ചെയ്‌‌തത്"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 13c1caebb80..97a42908de8 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Өндөр нягтрал"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Дээд нягтрал"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Дээд нягтрал нь таны батарейн цэнэгийг илүү их ашигладаг. Нягтралаа сэлгэх нь зарим аппыг дахин эхлүүлэхэд хүргэж магадгүй."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Сонгосон"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Өнгө"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Байгалийн"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Өдөөсөн"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 75c4882ba3b..481992cf5a0 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"उच्च रेझोल्यूशन"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"कमाल रेझोल्यूशन"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"कमाल रेझोल्यूशन तुमची बॅटरी जास्त वापरते. तुमचे रेझोल्यूशन स्विच केल्याने काही ॲप्स रीस्टार्ट होऊ शकतात."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"निवडले"</string>
<string name="color_mode_title" msgid="8666690832113906028">"रंग"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"नैसर्गिक"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"बूस्ट केलेला"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index caf79f17f0d..ca335415b6d 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -1315,7 +1315,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Peleraian tinggi"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Peleraian maksimum"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Peleraian maksimum menggunakan lebih banyak bateri anda. Penukaran peleraian anda mungkin menyebabkan sesetengah apl dimulakan semula."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Dipilih"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Warna"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Asli"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Ditingkatkan"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index fd86ab09fad..92a449575ff 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"ပုံရိပ်ပြတ်သားကိန်းမြင့်"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"အမြင့်ဆုံး ပုံရိပ်ပြတ်သားကိန်း"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"အမြင့်ဆုံး ပုံရိပ်ပြတ်သားကိန်းသည် ဘက်ထရီပိုသုံးသည်။ ပုံရိပ်ပြတ်သားကိန်း ပြောင်းပါက အချို့အက်ပ်များကို ပြန်စစေနိုင်သည်။"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ရွေးထားသည်"</string>
<string name="color_mode_title" msgid="8666690832113906028">"အရောင်များ"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"သဘာဝ"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"အရောင်တင်ထားသည်"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 7cf9b5277ce..3111acb6a64 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Høy oppløsning"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimal oppløsning"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimal oppløsning bruker mer batteri. Hvis du endrer oppløsningen, kan det føre til at noen apper starter på nytt."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Valgt"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Farger"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturlig"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Forsterket"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index b0c1405dfad..8ddde598791 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"उच्च रिजोल्युसन"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"अधिकतम रिजोल्युसन"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"अधिकतम रिजोल्युसन प्रयोग गर्दा तपाईंको डिभाइसको ब्याट्री बढी खपत हुन्छ। तपाईंले रोजेको रिजोल्युसन प्रयोग गर्नुभयो भने केही एपहरू रिस्टार्ट हुन सक्छन्।"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"चयन गरियो"</string>
<string name="color_mode_title" msgid="8666690832113906028">"रङ्गहरू"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"प्राकृतिक"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"बुस्ट गरिएको"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 984eb9b6417..9e36dae2b65 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Hoge resolutie"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maximale resolutie"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"De maximale resolutie gebruikt meer batterijlading. Als je de resolutie wijzigt, worden sommige apps misschien opnieuw gestart."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Geselecteerd"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Kleuren"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Natuurlijk"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Versterkt"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index aee0a586a2d..a1cc9b3fbec 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -1315,7 +1315,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"ଉଚ୍ଚ ରିଜୋଲ୍ୟୁସନ"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"ସର୍ବାଧିକ ରିଜୋଲ୍ୟୁସନ"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"ସର୍ବାଧିକ ରିଜୋଲ୍ୟୁସନ ଆପଣଙ୍କ ବେଟେରୀକୁ ଅଧିକ ବ୍ୟବହାର କରେ। ଆପଣଙ୍କ ରିଜୋଲ୍ୟୁସନକୁ ସୁଇଚ କରିବା ଦ୍ୱାରା କିଛି ଆପ୍ସ ରିଷ୍ଟାର୍ଟ ହୋଇପାରେ।"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ଚୟନ କରାଯାଇଛି"</string>
<string name="color_mode_title" msgid="8666690832113906028">"ରଙ୍ଗ"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"ପ୍ରାକୃତିକ"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"ବର୍ଦ୍ଧିତ"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index a2874728374..780154ddd0b 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -1315,7 +1315,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"ਜ਼ਿਆਦਾ ਰੈਜ਼ੋਲਿਊਸ਼ਨ"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"ਪੂਰਾ ਰੈਜ਼ੋਲਿਊਸ਼ਨ"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"ਪੂਰਾ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਤੁਹਾਡੀ ਬੈਟਰੀ ਦੀ ਜ਼ਿਆਦਾ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਤੁਹਾਡੇ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਵਿੱਚ ਸਵਿੱਚ ਕਰਨ ਕਰ ਕੇ ਕੁਝ ਐਪਾਂ ਮੁੜ-ਸ਼ੁਰੂ ਹੋ ਸਕਦੀਆਂ ਹਨ।"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ਚੁਣਿਆ ਗਿਆ"</string>
<string name="color_mode_title" msgid="8666690832113906028">"ਰੰਗ"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"ਕੁਦਰਤੀ"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"ਵਧਾਇਆ ਗਿਆ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 0f2180696a0..58912c20401 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Wysoka rozdzielczość"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksymalna rozdzielczość"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maksymalna rozdzielczość bardziej zużywa baterię. Po przełączeniu rozdzielczości niektóre aplikacje mogą wymagać ponownego uruchomienia."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Wybrano"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Kolory"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturalne"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Wzmocnione"</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 523b67a5f00..874a5dc01bd 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolução"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolução máxima"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"A resolução máxima consome mais bateria. A troca de resolução pode fazer com que alguns apps sejam reiniciados."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selecionada"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Cores"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturais"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Realçadas"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 757a9c00c1c..2923803bc51 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolução"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolução máxima"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"A resolução máxima consome mais bateria. Se mudar a resolução, algumas apps podem ser reiniciadas."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selecionada"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Cores"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturais"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Amplificadas"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 523b67a5f00..874a5dc01bd 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Alta resolução"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Resolução máxima"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"A resolução máxima consome mais bateria. A troca de resolução pode fazer com que alguns apps sejam reiniciados."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selecionada"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Cores"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturais"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Realçadas"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index f58d5775d9b..41c76d636ae 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Rezoluție înaltă"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Rezoluție maximă"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Rezoluția maximă consumă mai multă baterie. Dacă schimbi rezoluția, unele aplicații pot reporni."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Selectată"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Culori"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturale"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Intensificate"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index f73a9d18a5e..138c66a79ce 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Высокое разрешение"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Максимальное разрешение"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"При максимальном разрешении расходуется больше заряда. Когда разрешение меняется, некоторые приложения могут перезапуститься."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Выбрано"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Цвета"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Натуральные"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Яркие"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 8c7989ee833..a8a522ab6ee 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"ඉහළ විභේදනය"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"උපරිම විභේදනය"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"උපරිම විභේදනය ඔබේ බැටරිය වැඩියෙන් භාවිත කරයි. ඔබේ විභේදනය මාරු කිරීම සමහර යෙදුම් නැවත ආරම්භ කිරීමට හේතු විය හැක."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"තෝරා ඇත"</string>
<string name="color_mode_title" msgid="8666690832113906028">"වර්ණ"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"ස්වභාවික"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"වැඩි කළ"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 399f82332b7..900ee51b9d2 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Vysoké rozlíšenie"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maximálne rozlíšenie"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maximálne rozlíšenie viac spotrebúva batériu. Ak rozlíšenie prepnete, niektoré aplikácie sa môžu reštartovať."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Vybrané"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Farby"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Prirodzené"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Zosilnené"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 8180b258aa1..8622b8fb4a7 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Visoka ločljivost"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Najvišja ločljivost"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Za najvišjo ločljivost se porablja več energije baterije. Ob spremembi ločljivosti se bodo morda nekatere aplikacije znova zagnale."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Izbrano"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Barve"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naravne"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Poudarjene"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 6e6bc5cf4e9..473615711a8 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Rezolucion i lartë"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Rezolucioni maksimal"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Rezolucioni maksimal përdor më shumë bateri. Ndryshimi i rezolucionit mund të shkaktojë rinisjen e disa aplikacioneve."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Zgjedhur"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Ngjyrat"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Natyrale"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Të theksuara"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index f10b4247490..02884f46a67 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -1315,7 +1315,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Висока резолуција"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Максимална резолуција"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Максимална резолуција користи више батерије. Ако пређете на ову резолуцију, неке апликације ће се можда рестартовати."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Изабрано је"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Боје"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Природне"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Појачане"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 8f1739973e3..040049aa376 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Hög upplösning"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Högsta upplösning"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Högsta upplösning drar mer batteri. Om du byter upplösning kan vissa appar startas om."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Markerad"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Färger"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Naturliga"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Förstärkta"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 889c056949f..6cef85f08ba 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Ubora wa juu"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Ubora wa juu zaidi"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Ubora wa juu zaidi wa skrini hutumia zaidi betri yako. Ukibadilisha ubora wa skrini yako, huenda baadhi ya programu zikazimwa kisha kuwashwa."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Umechaguliwa"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Rangi"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Asili"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Imeongezwa Rangi"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 31c51b6010b..c4ee04d749f 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"உயர் தெளிவுத்திறன்"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"அதிகபட்சத் தெளிவுத்திறன்"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"அதிகபட்சத் தெளிவுத்திறனை அமைத்தால் பேட்டரி அதிகமாகப் பயன்படுத்தப்படும். தெளிவுத்திறனை மாற்றினால் சில ஆப்ஸ் மீண்டும் தொடங்கக்கூடும்."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"தேர்ந்தெடுக்கப்பட்டது"</string>
<string name="color_mode_title" msgid="8666690832113906028">"வண்ணங்கள்"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"இயற்கை வண்ணம்"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"பூஸ்ட் செய்யப்பட்டது"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 0e9cd91b6bd..48ea4cd1bc4 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"అధిక రిజల్యూషన్"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"పూర్తి రిజల్యూషన్"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"పూర్తి రిజల్యూషన్, మీ బ్యాటరీని ఎక్కువగా వినియోగిస్తుంది. పూర్తి రిజల్యూషన్‌కు మారడం వల్ల కొన్ని యాప్‌లు రీస్టార్ట్ అయ్యే అవకాశం ఉంది."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"ఎంచుకోబడింది"</string>
<string name="color_mode_title" msgid="8666690832113906028">"రంగులు"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"సహజం"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"మెరుగుపరిచినవి"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 012eee2da02..2190a69e4ac 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -1315,7 +1315,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"ความละเอียดสูง"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"ความละเอียดสูงสุด"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"ความละเอียดสูงสุดจะใช้แบตเตอรี่มากขึ้น การเปลี่ยนความละเอียดอาจทำให้บางแอปรีสตาร์ท"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"เลือกแล้ว"</string>
<string name="color_mode_title" msgid="8666690832113906028">"สี"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"ธรรมชาติ"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"บูสต์"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 40c3340c63d..c5dacc47fe4 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Mataas na resolution"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Max na resolution"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Mas malakas gumamit ng iyong baterya ang max na resolution. Kapag pinalitan mo ang iyong resolution, posible itong maging sanhi ng pag-restart ng ilang app."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Napili"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Mga Kulay"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Natural"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Naka-boost"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 11b3427418e..dfb6ed8717d 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Yüksek çözünürlük"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimum çözünürlük"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimum çözünürlük daha fazla pil kullanır. Çözünürlük değiştirildiğinde bazı uygulamalar yeniden başlatılabilir."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Seçili"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Renkler"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Doğal"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Zenginleştirilmiş"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 392397a4d03..23cdd8bb242 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Висока роздільна здатність"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Максимальна роздільна здатність"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Коли екран працює з максимальною роздільною здатністю, акумулятор розряджається швидше. Якщо змінити роздільну здатність, деякі додатки можуть перезапуститися."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Вибрано"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Кольори"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Природні"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Яскраві"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index d3375d2bcef..fd977234e3d 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"اعلی ریزولیوشن"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"زیادہ سے زیادہ ریزولیوشن"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"زیادہ سے زیادہ ریزولیوشن آپ کی زیادہ بیٹری کا استعمال کرتا ہے۔ آپ کی ریزولیوشن پر سوئچ کرنے سے کچھ ایپس ری سٹارٹ ہو سکتی ہیں۔"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"منتخب کردہ"</string>
<string name="color_mode_title" msgid="8666690832113906028">"رنگ"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"قدرتی"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"بڑھایا گیا"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 79da69ea3bb..a1dc225be16 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Yuqori tiniqlik"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Maksimal aniqlik darajasi"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Maksimal aniqlik darajasi batareya quvvatini koʻproq sarflaydi. Tiniqlik almashtirilsa, ayrim ilovalar qayta ishga tushadi."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Tanlandi"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Ranglar"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Tabiiy"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Yorqin"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 0a1fa9dad60..d17eb61296d 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Độ phân giải cao"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Độ phân giải tối đa"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Độ phân giải tối đa sẽ làm tiêu tốn nhiều pin hơn. Việc điều chỉnh độ phân giải có thể khiến một số ứng dụng khởi động lại."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Đã chọn"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Màu"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Tự nhiên"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"Tăng độ nét"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 6a7ebcd8351..131ef89a6b2 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"高分辨率"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"最大分辨率"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"最大分辨率会增加耗电量。切换分辨率可能会导致一些应用重启。"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"已选择"</string>
<string name="color_mode_title" msgid="8666690832113906028">"颜色"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"自然色"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"增强色"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 838b6619f5d..0c6540e8be2 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"高解像度"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"最高解像度"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"設定至最高解像度時,耗電量會較高。切換解像度後,部分應用程式可能會重新啟動。"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"揀咗"</string>
<string name="color_mode_title" msgid="8666690832113906028">"顏色"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"自然"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"強化"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index f98bfbbca24..69331dd7225 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"高解析度"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"最大解析度"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"使用最大解析度會比較耗電。如果切換解析度,部分應用程式可能會重新啟動。"</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"已選取"</string>
<string name="color_mode_title" msgid="8666690832113906028">"色彩"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"自然"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"增強"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index f9cb4601f19..17849991eb2 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -1318,7 +1318,6 @@
<string name="screen_resolution_option_high" msgid="2617496842852992853">"Ukucaca okuphezulu"</string>
<string name="screen_resolution_option_full" msgid="4456839315039000517">"Umkhawulo wokukucaca"</string>
<string name="screen_resolution_footer" msgid="1230761249204935717">"Umkhawulo wokucaca usebenzisa ibhethri yakho eyengeziwe. Ukushintsha ukucaca kwakho kungase kubangele amanye ama-app ukuthi aqale kabusha."</string>
- <string name="screen_resolution_selected_a11y" msgid="6158451180032224977">"Okukhethiwe"</string>
<string name="color_mode_title" msgid="8666690832113906028">"Imibala"</string>
<string name="color_mode_option_natural" msgid="6192875655101283303">"Kwemvelo"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"I-Boost"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index fee6a0a67fb..63bf8b21744 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -80,6 +80,10 @@
<string name="preview_pager_content_description">Preview</string>
<!-- Content description for qrcode image. [CHAR LIMIT=none]-->
<string name="qr_code_content_description">QR code</string>
+ <!-- Previous button for preview pager. [CHAR LIMIT=NONE] -->
+ <string name="preview_pager_previous_button">Previous preview</string>
+ <!-- Next button for preview pager. [CHAR LIMIT=NONE] -->
+ <string name="preview_pager_next_button">Next preview</string>
<!-- Description for the button that makes interface elements smaller. [CHAR_LIMIT=NONE] -->
<string name="font_size_make_smaller_desc">Make smaller</string>
@@ -1735,6 +1739,11 @@
<!-- Summary specifying that this is the current screen lock setting [CHAR LIMIT=45] -->
<string name="current_screen_lock">Current screen lock</string>
+ <!-- Accessibility description of the PIN password view. [CHAR_LIMIT=none] -->
+ <string name="unlock_accessibility_pin_area">PIN area</string>
+ <!-- Accessibility description of the normal password view. [CHAR_LIMIT=none] -->
+ <string name="unlock_accessibility_password">Device password</string>
+
<!-- Title for preference that guides the user through creating a backup unlock pattern for fingerprint [CHAR LIMIT=45]-->
<string name="fingerprint_unlock_set_unlock_pattern">Pattern \u2022 Fingerprint</string>
<!-- Title for preference that guides the user through creating a backup unlock PIN for fingerprint [CHAR LIMIT=45]-->
@@ -3012,9 +3021,6 @@
<string name="screen_resolution_option_full">Max resolution</string>
<!-- The footer message for switch screen resolution [CHAR LIMIT=NONE] -->
<string name="screen_resolution_footer">Max resolution uses more of your battery. Switching your resolution may cause some apps to restart.</string>
- <!-- Message announced to a11y users when they selected one resolution [CHAR LIMIT=NONE] -->
- <string name="screen_resolution_selected_a11y">Selected</string>
-
<!-- Display settings screen, Color mode settings title [CHAR LIMIT=30] -->
<string name="color_mode_title">Colors</string>
<!-- Display settings screen, Color mode option for "natural(sRGB) color" [CHAR LIMIT=45] -->
@@ -3171,6 +3177,7 @@
<string name="dark_ui_summary_on_auto_mode_modes">Will turn off when <xliff:g name="modeName" example="Bedtime">%1$s</xliff:g> ends</string>
<!-- Dark theme screen, description of Dark theme feature. [CHAR LIMIT=NONE] -->
<string name="dark_ui_text">Dark theme uses a black background to help keep battery alive longer on some screens. Dark theme schedules wait to turn on until your screen is off.</string>
+ <string name="dark_ui_text_force_invert">Use a dark background to make your screen more comfortable to view and reduce battery usage on some screens. Your theme will change if you have a schedule, when the screen is off.</string>
<!-- Dark UI screen footer summary text shown when the when Dark theme turns on/off automatically according to a user bedtime schedule. [CHAR LIMIT=NONE] -->
<string name="dark_ui_bedtime_footer_summary">Dark theme is currently following your Bedtime mode schedule</string>
<!-- Dark UI screen footer action text shown when the when Dark theme turns on/off automatically according to a user bedtime schedule. [CHAR LIMIT=NONE] -->
@@ -5568,7 +5575,7 @@
<!-- Title for the accessibility preference for forcing all apps to use dark theme. [CHAR LIMIT=35] -->
<string name="accessibility_force_invert_title">Make more apps dark</string>
<!-- Summary for the accessibility preference for forcing all apps to use dark theme. [CHAR LIMIT=100] -->
- <string name="accessibility_force_invert_summary">Automatically convert light theme apps to dark theme</string>
+ <string name="accessibility_force_invert_summary">Expands dark theme to more apps. May not work with all apps.</string>
<!-- Title for the accessibility preference for disabling animations. [CHAR LIMIT=35] -->
<string name="accessibility_disable_animations">Remove animations</string>
<!-- Summary for the accessibility preference for disabling animations. [CHAR LIMIT=60] -->
@@ -5688,6 +5695,9 @@
<!-- Title for the toggle button that turns on/off the autoclick setting of ignoring minor cursor movement. [CHAR_LIMIT=NONE] -->
<!-- TODO(b/388845718): Update string to translatable once approved by UXW. -->
<string name="autoclick_ignore_minor_cursor_movement_title" translatable="false">Ignore minor cursor movement</string>
+ <!-- TODO(b/394683600): Update string to translatable once approved by UXW. -->
+ <!-- Title for the switch setting to toggle on/off the revert to left click after action. [CHAR LIMIT=NONE] -->
+ <string name="autoclick_revert_to_left_click_title" translatable="false">Revert to left click after action</string>
<!-- Title for preference screen for configuring vibrations. [CHAR LIMIT=NONE] -->
<string name="accessibility_vibration_settings_title">Vibration &amp; haptics</string>
<!-- Summary for preference screen for configuring vibrations. [CHAR LIMIT=NONE] -->
@@ -9324,7 +9334,7 @@ Data usage charges may apply.</string>
<string name="nls_feature_settings_summary">It can turn Do Not Disturb on or off and change related settings.</string>
<string name="nls_feature_modes_settings_summary">It can manage and activate Modes, and change related settings.</string>
<string name="notification_listener_disable_warning_summary">
- If you turn off notification access for <xliff:g id="notification_listener_name">%1$s</xliff:g>, Do Not Disturb access may also be turned off.
+ If you turn off notification access for <xliff:g id="notification_listener_name">%1$s</xliff:g>, Do Not Disturb control may also be turned off.
</string>
<string name="notification_listener_disable_modes_warning_summary">
If you turn off notification access for <xliff:g id="notification_listener_name">%1$s</xliff:g>, Modes access may also be turned off.
@@ -9507,14 +9517,14 @@ Data usage charges may apply.</string>
The placeholder would be the app name (e.g. Calendar). [CHAR LIMIT=NONE]-->
<string name="interact_across_profiles_install_app_summary">Tap to get the app</string>
- <!-- Sound & notification > Advanced section: Title for managing Do Not Disturb access option. [CHAR LIMIT=40] -->
- <string name="manage_zen_access_title">Do Not Disturb access</string>
+ <!-- Sound & notification > Advanced section: Title for managing Do Not Disturb control option. [CHAR LIMIT=40] -->
+ <string name="manage_zen_access_title">Do Not Disturb control</string>
<!-- Button title that grants 'Do Not Disturb' permission to an app [CHAR_LIMIT=60]-->
<string name="zen_access_detail_switch">Allow Do Not Disturb</string>
- <!-- Sound & notification > Do Not Disturb access > Text to display when the list is empty. [CHAR LIMIT=NONE] -->
- <string name="zen_access_empty_text">No installed apps have requested Do Not Disturb access</string>
+ <!-- Sound & notification > Do Not Disturb control > Text to display when the list is empty. [CHAR LIMIT=NONE] -->
+ <string name="zen_access_empty_text">No installed apps have requested Do Not Disturb control</string>
<!-- Special App Access: Title for managing Modes access option. [CHAR LIMIT=40] -->
<string name="manage_zen_modes_access_title">Modes access</string>
@@ -9522,7 +9532,7 @@ Data usage charges may apply.</string>
<!-- Button title that grants 'Modes' permission to an app [CHAR_LIMIT=60]-->
<string name="zen_modes_access_detail_switch">Allow Modes access</string>
- <!-- Special App Access > Do Not Disturb access > Text to display when the list is empty. [CHAR LIMIT=NONE] -->
+ <!-- Special App Access > Do Not Disturb control > Text to display when the list is empty. [CHAR LIMIT=NONE] -->
<string name="zen_modes_access_empty_text">No installed apps have requested Modes access</string>
<!-- [CHAR LIMIT=NONE] Text appearing when app notifications are off -->
diff --git a/res/xml/accessibility_autoclick_settings.xml b/res/xml/accessibility_autoclick_settings.xml
index 7eddb8697da..3878e6c5c9b 100644
--- a/res/xml/accessibility_autoclick_settings.xml
+++ b/res/xml/accessibility_autoclick_settings.xml
@@ -93,6 +93,11 @@
android:title="@string/autoclick_ignore_minor_cursor_movement_title"
settings:controller="com.android.settings.accessibility.ToggleAutoclickIgnoreMinorCursorMovementController"/>
+ <SwitchPreferenceCompat
+ android:key="accessibility_control_autoclick_revert_to_left_click"
+ android:title="@string/autoclick_revert_to_left_click_title"
+ settings:controller="com.android.settings.accessibility.ToggleAutoclickRevertToLeftClickController"/>
+
<com.android.settings.accessibility.AccessibilityFooterPreference
android:key="accessibility_autoclick_footer"
android:title="@string/accessibility_autoclick_description"
diff --git a/res/xml/dark_mode_settings.xml b/res/xml/dark_mode_settings.xml
index 44bd807b660..f886daf2e5b 100644
--- a/res/xml/dark_mode_settings.xml
+++ b/res/xml/dark_mode_settings.xml
@@ -22,8 +22,8 @@
<com.android.settingslib.widget.TopIntroPreference
android:key="dark_ui_top_intro"
- android:title="@string/dark_ui_text"
- settings:searchable="false"/>
+ settings:searchable="false"
+ settings:controller="com.android.settings.display.darkmode.DarkModeTopIntroPreferenceController"/>
<com.android.settingslib.widget.MainSwitchPreference
android:key="dark_ui_activated"
diff --git a/src/com/android/settings/accessibility/TextReadingPreviewPreference.java b/src/com/android/settings/accessibility/TextReadingPreviewPreference.java
index 9161171914a..99e71258b6f 100644
--- a/src/com/android/settings/accessibility/TextReadingPreviewPreference.java
+++ b/src/com/android/settings/accessibility/TextReadingPreviewPreference.java
@@ -22,6 +22,7 @@ import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
+import android.widget.ImageButton;
import android.widget.LinearLayout;
import androidx.preference.Preference;
@@ -99,6 +100,28 @@ public class TextReadingPreviewPreference extends Preference {
(DotsPageIndicator) holder.findViewById(R.id.page_indicator);
updateAdapterIfNeeded(viewPager, pageIndicator, mPreviewAdapter);
updatePagerAndIndicator(viewPager, pageIndicator);
+ viewPager.setClipToOutline(true);
+
+ int layoutDirection =
+ getContext().getResources().getConfiguration().getLayoutDirection();
+ int previousId = (layoutDirection == View.LAYOUT_DIRECTION_RTL)
+ ? R.id.preview_right_button : R.id.preview_left_button;
+ int nextId = (layoutDirection == View.LAYOUT_DIRECTION_RTL)
+ ? R.id.preview_left_button : R.id.preview_right_button;
+ final ImageButton previousButton = previewLayout.findViewById(previousId);
+ final ImageButton nextButton = previewLayout.findViewById(nextId);
+
+ // These call ViewPager#setCurrentItem directly
+ // because that doesn't force a refresh through notifyChanged().
+ // We found this avoids a crash in SUW (See b/386906497).
+ previousButton.setOnClickListener((view) ->
+ viewPager.setCurrentItem(getCurrentItem() - 1));
+ previousButton.setContentDescription(getContext().getString(
+ R.string.preview_pager_previous_button));
+ nextButton.setOnClickListener((view) ->
+ viewPager.setCurrentItem(getCurrentItem() + 1));
+ previousButton.setContentDescription(getContext().getString(
+ R.string.preview_pager_next_button));
}
@Override
diff --git a/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickController.java b/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickController.java
new file mode 100644
index 00000000000..6659c271160
--- /dev/null
+++ b/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickController.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.accessibility;
+
+import static android.view.accessibility.AccessibilityManager.AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT;
+
+import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
+import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.annotation.NonNull;
+
+import com.android.server.accessibility.Flags;
+import com.android.settings.R;
+import com.android.settings.core.TogglePreferenceController;
+
+public class ToggleAutoclickRevertToLeftClickController extends TogglePreferenceController {
+
+ private static final String TAG =
+ ToggleAutoclickRevertToLeftClickController.class.getSimpleName();
+
+ private final ContentResolver mContentResolver;
+
+ public ToggleAutoclickRevertToLeftClickController(
+ @NonNull Context context, @NonNull String key) {
+ super(context, key);
+
+ mContentResolver = context.getContentResolver();
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return Flags.enableAutoclickIndicator() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+ }
+
+ @Override
+ public boolean isChecked() {
+ return Settings.Secure.getInt(
+ mContentResolver,
+ Settings.Secure.ACCESSIBILITY_AUTOCLICK_REVERT_TO_LEFT_CLICK,
+ AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT ? ON : OFF)
+ == ON;
+ }
+
+ @Override
+ public boolean setChecked(boolean isChecked) {
+ Settings.Secure.putInt(
+ mContentResolver,
+ Settings.Secure.ACCESSIBILITY_AUTOCLICK_REVERT_TO_LEFT_CLICK,
+ isChecked ? ON : OFF);
+ return true;
+ }
+
+ @Override
+ public int getSliceHighlightMenuRes() {
+ return R.string.menu_key_accessibility;
+ }
+}
diff --git a/src/com/android/settings/bluetooth/ForgetDeviceDialogFragment.java b/src/com/android/settings/bluetooth/ForgetDeviceDialogFragment.java
index 60d63c637df..7cfa5ea30e6 100644
--- a/src/com/android/settings/bluetooth/ForgetDeviceDialogFragment.java
+++ b/src/com/android/settings/bluetooth/ForgetDeviceDialogFragment.java
@@ -16,31 +16,52 @@
package com.android.settings.bluetooth;
+import static com.android.internal.util.CollectionUtils.filter;
+
import android.app.Activity;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothDevice;
+import android.companion.AssociationInfo;
+import android.companion.CompanionDeviceManager;
import android.content.Context;
import android.content.DialogInterface;
+import android.content.pm.PackageManager;
+import android.icu.text.ListFormatter;
import android.os.Bundle;
+import android.text.TextUtils;
import android.util.Log;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog;
import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.flags.Flags;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.google.common.base.Objects;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+
/** Implements an AlertDialog for confirming that a user wishes to unpair or "forget" a paired
* device*/
public class ForgetDeviceDialogFragment extends InstrumentedDialogFragment {
public static final String TAG = "ForgetBluetoothDevice";
private static final String KEY_DEVICE_ADDRESS = "device_address";
- private CachedBluetoothDevice mDevice;
-
+ @VisibleForTesting
+ CachedBluetoothDevice mDevice;
+ @VisibleForTesting
+ CompanionDeviceManager mCompanionDeviceManager;
+ @VisibleForTesting
+ PackageManager mPackageManager;
public static ForgetDeviceDialogFragment newInstance(String deviceAddress) {
Bundle args = new Bundle(1);
args.putString(KEY_DEVICE_ADDRESS, deviceAddress);
@@ -63,29 +84,93 @@ public class ForgetDeviceDialogFragment extends InstrumentedDialogFragment {
}
@Override
- public Dialog onCreateDialog(Bundle inState) {
- Context context = getContext();
+ public void onAttach(@NonNull Context context) {
+ super.onAttach(context);
+ mCompanionDeviceManager = context.getSystemService(CompanionDeviceManager.class);
+ mPackageManager = context.getPackageManager();
mDevice = getDevice(context);
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle inState) {
if (mDevice == null) {
- Log.e(TAG, "onCreateDialog: Device is null.");
- return null;
+ throw new IllegalStateException("Device must not be null when creating dialog.");
+ }
+ List<AssociationInfo> associationInfos = getAssociations(mDevice.getAddress());
+ Set<String> packageNames = new HashSet<>();
+ if (Flags.enableRemoveAssociationBtUnpair()) {
+ for (AssociationInfo ai : associationInfos) {
+ CharSequence appLabel = getAppLabel(ai.getPackageName());
+ if (!TextUtils.isEmpty(appLabel)) {
+ packageNames.add(appLabel.toString());
+ }
+ }
}
DialogInterface.OnClickListener onConfirm = (dialog, which) -> {
+ // 1. Unpair the device.
mDevice.unpair();
+ // 2. Remove the associations if any.
+ if (Flags.enableRemoveAssociationBtUnpair()) {
+ for (AssociationInfo ai : associationInfos) {
+ mCompanionDeviceManager.disassociate(ai.getId());
+ }
+ }
+
Activity activity = getActivity();
if (activity != null) {
activity.finish();
}
};
- AlertDialog dialog = new AlertDialog.Builder(context)
+
+ AlertDialog dialog = new AlertDialog.Builder(getActivity())
.setPositiveButton(R.string.bluetooth_unpair_dialog_forget_confirm_button,
onConfirm)
.setNegativeButton(android.R.string.cancel, null)
.create();
+
dialog.setTitle(R.string.bluetooth_unpair_dialog_title);
- dialog.setMessage(context.getString(R.string.bluetooth_unpair_dialog_body,
- mDevice.getName()));
+ String message = buildUnpairMessage(
+ getActivity(), mDevice, associationInfos, packageNames.stream().toList());
+ dialog.setMessage(message);
+
return dialog;
}
+
+ private List<AssociationInfo> getAssociations(String address) {
+ return filter(
+ mCompanionDeviceManager.getAllAssociations(),
+ a -> Objects.equal(address, a.getDeviceMacAddressAsString()));
+ }
+
+ private String buildUnpairMessage(Context context, CachedBluetoothDevice device,
+ List<AssociationInfo> associationInfos, List<String> packageNames) {
+ if (Flags.enableRemoveAssociationBtUnpair() && !associationInfos.isEmpty()) {
+ String appNamesString = getAppNamesString(packageNames.stream().toList());
+ return context.getString(R.string.bluetooth_unpair_dialog_with_associations_body,
+ device.getName(), appNamesString);
+ } else {
+ return context.getString(R.string.bluetooth_unpair_dialog_body, device.getName());
+ }
+ }
+
+ private String getAppNamesString(List<String> appNames) {
+ if (appNames == null || appNames.isEmpty()) {
+ return "";
+ }
+
+ ListFormatter formatter = ListFormatter.getInstance(Locale.getDefault());
+ return formatter.format(appNames);
+ }
+
+ private CharSequence getAppLabel(String packageName) {
+ try {
+ return mPackageManager.getApplicationLabel(
+ mPackageManager.getApplicationInfo(packageName, 0));
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e(TAG, "Package Not Found", e);
+ return "";
+ }
+ }
}
diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java b/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java
index 84fbc05f1c9..75b94395963 100644
--- a/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java
+++ b/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java
@@ -16,8 +16,6 @@
package com.android.settings.connecteddevice.display;
-import static android.view.Display.INVALID_DISPLAY;
-
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DISPLAY_ID_ARG;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_HELP_URL;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_NOT_FOUND_RESOURCE;
@@ -60,7 +58,6 @@ import com.android.settingslib.display.DisplayDensityUtils;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.IllustrationPreference;
import com.android.settingslib.widget.MainSwitchPreference;
-import com.android.settingslib.widget.TwoTargetPreference;
import java.util.ArrayList;
import java.util.HashMap;
@@ -87,10 +84,12 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
EXTERNAL_DISPLAY_RESOLUTION(60, "external_display_resolution",
R.string.external_display_resolution_settings_title),
- // Built-in display link is after per-display settings.
+ // Built-in display link is before per-display settings.
BUILTIN_DISPLAY_LIST(70, "builtin_display_list_preference",
R.string.builtin_display_settings_category),
+ EXTERNAL_DISPLAY_LIST(-1, "external_display_list", null),
+
// If shown, footer should appear below everything.
FOOTER(90, "footer_preference", null);
@@ -106,16 +105,27 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
public final String key;
@Nullable public final Integer titleResource;
- void apply(Preference preference) {
+ /**
+ * Applies this basic data to the given preference.
+ *
+ * @param preference object whose properties to set
+ * @param nth if non-null, disambiguates the key so that other preferences can have the same
+ * basic properties. Does not affect the order.
+ */
+ void apply(Preference preference, @Nullable Integer nth) {
if (order != -1) {
preference.setOrder(order);
}
if (titleResource != null) {
preference.setTitle(titleResource);
}
- preference.setKey(key);
+ preference.setKey(nth == null ? key : keyForNth(nth));
preference.setPersistent(false);
}
+
+ String keyForNth(int nth) {
+ return key + "_" + nth;
+ }
}
static final int EXTERNAL_DISPLAY_SETTINGS_RESOURCE = R.xml.external_display_settings;
@@ -131,12 +141,8 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
R.drawable.external_display_mirror_portrait;
static final int EXTERNAL_DISPLAY_SIZE_SUMMARY_RESOURCE = R.string.screen_zoom_short_summary;
- @VisibleForTesting
- static final String PREVIOUSLY_SHOWN_LIST_KEY = "mPreviouslyShownListOfDisplays";
private boolean mStarted;
@Nullable
- private IllustrationPreference mImagePreference;
- @Nullable
private Preference mDisplayTopologyPreference;
@Nullable
private PreferenceCategory mBuiltinDisplayPreference;
@@ -156,7 +162,6 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
scheduleUpdate();
}
};
- private boolean mPreviouslyShownListOfDisplays;
public ExternalDisplayPreferenceFragment() {}
@@ -176,12 +181,6 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
}
@Override
- public void onSaveInstanceStateCallback(@NonNull Bundle outState) {
- outState.putSerializable(PREVIOUSLY_SHOWN_LIST_KEY,
- mPreviouslyShownListOfDisplays);
- }
-
- @Override
public void onCreateCallback(@Nullable Bundle icicle) {
if (mInjector == null) {
mInjector = new Injector(getPrefContext());
@@ -191,7 +190,6 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
@Override
public void onActivityCreatedCallback(@Nullable Bundle savedInstanceState) {
- restoreState(savedInstanceState);
View view = getView();
TextView emptyView = null;
if (view != null) {
@@ -242,17 +240,6 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
}
@VisibleForTesting
- protected void launchExternalDisplaySettings(final int displayId) {
- final Bundle args = new Bundle();
- var context = getPrefContext();
- args.putInt(DISPLAY_ID_ARG, displayId);
- new SubSettingLauncher(context)
- .setDestination(this.getClass().getName())
- .setArguments(args)
- .setSourceMetricsCategory(getMetricsCategory()).launch();
- }
-
- @VisibleForTesting
protected void launchBuiltinDisplaySettings() {
final Bundle args = new Bundle();
var context = getPrefContext();
@@ -275,30 +262,33 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
var pref = refresh.findUnusedPreference(PrefBasics.FOOTER.key);
if (pref == null) {
pref = newFooterPreference(context);
- PrefBasics.FOOTER.apply(pref);
+ PrefBasics.FOOTER.apply(pref, /* nth= */ null);
}
pref.setTitle(title);
refresh.addPreference(pref);
}
@NonNull
- private ListPreference reuseRotationPreference(@NonNull Context context, PrefRefresh refresh) {
+ private ListPreference reuseRotationPreference(@NonNull Context context, PrefRefresh refresh,
+ int position) {
ListPreference pref = refresh.findUnusedPreference(
- PrefBasics.EXTERNAL_DISPLAY_ROTATION.key);
+ PrefBasics.EXTERNAL_DISPLAY_ROTATION.keyForNth(position));
if (pref == null) {
pref = new ListPreference(context);
- PrefBasics.EXTERNAL_DISPLAY_ROTATION.apply(pref);
+ PrefBasics.EXTERNAL_DISPLAY_ROTATION.apply(pref, position);
}
refresh.addPreference(pref);
return pref;
}
@NonNull
- private Preference reuseResolutionPreference(@NonNull Context context, PrefRefresh refresh) {
- var pref = refresh.findUnusedPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key);
+ private Preference reuseResolutionPreference(@NonNull Context context, PrefRefresh refresh,
+ int position) {
+ var pref = refresh.findUnusedPreference(
+ PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(position));
if (pref == null) {
pref = new Preference(context);
- PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.apply(pref);
+ PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.apply(pref, position);
}
refresh.addPreference(pref);
return pref;
@@ -306,41 +296,34 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
@NonNull
private MainSwitchPreference reuseUseDisplayPreference(
- @NonNull Context context, @NonNull PrefRefresh refresh) {
+ Context context, PrefRefresh refresh, int position) {
MainSwitchPreference pref = refresh.findUnusedPreference(
- PrefBasics.EXTERNAL_DISPLAY_USE.key);
+ PrefBasics.EXTERNAL_DISPLAY_USE.keyForNth(position));
if (pref == null) {
pref = new MainSwitchPreference(context);
- PrefBasics.EXTERNAL_DISPLAY_USE.apply(pref);
+ PrefBasics.EXTERNAL_DISPLAY_USE.apply(pref, position);
}
refresh.addPreference(pref);
return pref;
}
@NonNull
- @VisibleForTesting
- IllustrationPreference getIllustrationPreference(@NonNull Context context) {
- if (mImagePreference == null) {
- mImagePreference = new IllustrationPreference(context);
- PrefBasics.ILLUSTRATION.apply(mImagePreference);
+ private IllustrationPreference reuseIllustrationPreference(
+ Context context, PrefRefresh refresh) {
+ IllustrationPreference pref = refresh.findUnusedPreference(PrefBasics.ILLUSTRATION.key);
+ if (pref == null) {
+ pref = new IllustrationPreference(context);
+ PrefBasics.ILLUSTRATION.apply(pref, /* nth= */ null);
}
- return mImagePreference;
- }
-
- /**
- * @return return display id argument of this settings page.
- */
- @VisibleForTesting
- protected int getDisplayIdArg() {
- var args = getArguments();
- return args != null ? args.getInt(DISPLAY_ID_ARG, INVALID_DISPLAY) : INVALID_DISPLAY;
+ refresh.addPreference(pref);
+ return pref;
}
@NonNull
private PreferenceCategory getBuiltinDisplayListPreference(@NonNull Context context) {
if (mBuiltinDisplayPreference == null) {
mBuiltinDisplayPreference = new PreferenceCategory(context);
- PrefBasics.BUILTIN_DISPLAY_LIST.apply(mBuiltinDisplayPreference);
+ PrefBasics.BUILTIN_DISPLAY_LIST.apply(mBuiltinDisplayPreference, /* nth= */ null);
}
return mBuiltinDisplayPreference;
}
@@ -356,7 +339,7 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
@NonNull Preference getDisplayTopologyPreference(@NonNull Context context) {
if (mDisplayTopologyPreference == null) {
mDisplayTopologyPreference = new DisplayTopologyPreference(context);
- PrefBasics.DISPLAY_TOPOLOGY.apply(mDisplayTopologyPreference);
+ PrefBasics.DISPLAY_TOPOLOGY.apply(mDisplayTopologyPreference, /* nth= */ null);
}
return mDisplayTopologyPreference;
}
@@ -366,23 +349,23 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
if (pref == null) {
pref = new MirrorPreference(context,
DesktopExperienceFlags.ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT.isTrue());
- PrefBasics.MIRROR.apply(pref);
+ PrefBasics.MIRROR.apply(pref, /* nth= */ null);
}
refresh.addPreference(pref);
}
@NonNull
private AccessibilitySeekBarPreference reuseSizePreference(Context context,
- PrefRefresh refresh, int displayId) {
+ PrefRefresh refresh, int displayId, int position) {
AccessibilitySeekBarPreference pref =
- refresh.findUnusedPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key);
+ refresh.findUnusedPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(position));
if (pref == null) {
pref = new AccessibilitySeekBarPreference(context, /* attrs= */ null);
pref.setIconStart(R.drawable.ic_remove_24dp);
pref.setIconStartContentDescription(R.string.screen_zoom_make_smaller_desc);
pref.setIconEnd(R.drawable.ic_add_24dp);
pref.setIconEndContentDescription(R.string.screen_zoom_make_larger_desc);
- PrefBasics.EXTERNAL_DISPLAY_SIZE.apply(pref);
+ PrefBasics.EXTERNAL_DISPLAY_SIZE.apply(pref, position);
setStateForDisplaySizePreference(context, displayId, pref);
}
@@ -404,74 +387,43 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
preference.setOnSeekBarChangeListener(seekBarChangeHandler);
}
- private void restoreState(@Nullable Bundle savedInstanceState) {
- if (savedInstanceState == null) {
- return;
- }
- mPreviouslyShownListOfDisplays = Boolean.TRUE.equals(savedInstanceState.getSerializable(
- PREVIOUSLY_SHOWN_LIST_KEY, Boolean.class));
- }
-
private void update() {
final var screen = getPreferenceScreen();
if (screen == null || mInjector == null || mInjector.getContext() == null) {
return;
}
try (var cleanableScreen = new PrefRefresh(screen)) {
- updateScreenForDisplayId(getDisplayIdArg(), cleanableScreen, mInjector.getContext());
+ updateScreen(cleanableScreen, mInjector.getContext());
}
}
- private void updateScreenForDisplayId(final int displayId,
- @NonNull final PrefRefresh screen, @NonNull Context context) {
- final var displaysToShow = externalDisplaysToShow(displayId);
+ private void updateScreen(final PrefRefresh screen, Context context) {
+ final var displaysToShow = externalDisplaysToShow();
- if (displaysToShow.isEmpty() && displayId == INVALID_DISPLAY) {
- showTextWhenNoDisplaysToShow(screen, context);
- } else if (displaysToShow.size() == 1
- && ((displayId == INVALID_DISPLAY && !mPreviouslyShownListOfDisplays)
- || displaysToShow.get(0).getDisplayId() == displayId)) {
- showDisplaySettings(displaysToShow.get(0), screen, context);
- if (displayId == INVALID_DISPLAY && isTopologyPaneEnabled(mInjector)) {
- // Only show the topology pane if the user did not arrive via the displays list.
- maybeAddV2Components(context, screen);
- }
- } else if (displayId == INVALID_DISPLAY) {
- // If ever shown a list of displays - keep showing it for consistency after
- // disconnecting one of the displays, and only one display is left.
- mPreviouslyShownListOfDisplays = true;
+ if (displaysToShow.isEmpty()) {
+ showTextWhenNoDisplaysToShow(screen, context, /* position= */ 0);
+ } else {
showDisplaysList(displaysToShow, screen, context);
}
- updateSettingsTitle(displaysToShow, displayId);
- }
- private void updateSettingsTitle(@NonNull final List<Display> displaysToShow, int displayId) {
final Activity activity = getCurrentActivity();
- if (activity == null) {
- return;
+ if (activity != null) {
+ activity.setTitle(EXTERNAL_DISPLAY_TITLE_RESOURCE);
}
- if (displaysToShow.size() == 1 && displaysToShow.get(0).getDisplayId() == displayId) {
- var displayName = displaysToShow.get(0).getName();
- if (!displayName.isEmpty()) {
- activity.setTitle(displayName.substring(0, Math.min(displayName.length(), 40)));
- return;
- }
- }
- activity.setTitle(EXTERNAL_DISPLAY_TITLE_RESOURCE);
}
private void showTextWhenNoDisplaysToShow(@NonNull final PrefRefresh screen,
- @NonNull Context context) {
+ @NonNull Context context, int position) {
if (isUseDisplaySettingEnabled(mInjector)) {
- addUseDisplayPreferenceNoDisplaysFound(context, screen);
+ addUseDisplayPreferenceNoDisplaysFound(context, screen, position);
}
addFooterPreference(context, screen, EXTERNAL_DISPLAY_NOT_FOUND_FOOTER_RESOURCE);
}
- private static PreferenceCategory getCategoryForDisplay(@NonNull Display display,
- @NonNull PrefRefresh screen, @NonNull Context context) {
+ private static PreferenceCategory reuseDisplayCategory(
+ PrefRefresh screen, Context context, int position) {
// The rest of the settings are in a category with the display name as the title.
- String categoryKey = "expanded_display_items_" + display.getDisplayId();
+ String categoryKey = PrefBasics.EXTERNAL_DISPLAY_LIST.keyForNth(position);
var category = (PreferenceCategory) screen.findUnusedPreference(categoryKey);
if (category != null) {
@@ -479,45 +431,30 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
} else {
category = new PreferenceCategory(context);
screen.addPreference(category);
- category.setPersistent(false);
- category.setKey(categoryKey);
- category.setTitle(display.getName());
- category.setOrder(PrefBasics.BUILTIN_DISPLAY_LIST.order + 1);
+ PrefBasics.EXTERNAL_DISPLAY_LIST.apply(category, position);
+ category.setOrder(PrefBasics.BUILTIN_DISPLAY_LIST.order + 1 + position);
}
return category;
}
- private void showDisplaySettings(@NonNull Display display, @NonNull PrefRefresh screen,
- @NonNull Context context) {
+ private void showDisplaySettings(Display display, PrefRefresh refresh,
+ Context context, boolean includeV1Helpers, int position) {
final var isEnabled = mInjector != null && mInjector.isDisplayEnabled(display);
if (isUseDisplaySettingEnabled(mInjector)) {
- addUseDisplayPreferenceForDisplay(context, screen, display, isEnabled);
+ addUseDisplayPreferenceForDisplay(context, refresh, display, isEnabled, position);
}
if (!isEnabled) {
// Skip all other settings
return;
}
final var displayRotation = getDisplayRotation(display.getDisplayId());
- if (!isTopologyPaneEnabled(mInjector)) {
- screen.addPreference(updateIllustrationImage(context, displayRotation));
- }
-
- if (isTopologyPaneEnabled(mInjector)) {
- var displayCategory = getCategoryForDisplay(display, screen, context);
- try (var categoryRefresh = new PrefRefresh(displayCategory)) {
- addDisplaySettings(context, categoryRefresh, display, displayRotation);
- }
- } else {
- addDisplaySettings(context, screen, display, displayRotation);
+ if (includeV1Helpers) {
+ addIllustrationImage(context, refresh, displayRotation);
}
- }
-
- private void addDisplaySettings(Context context, PrefRefresh refresh, Display display,
- int displayRotation) {
- addResolutionPreference(context, refresh, display);
- addRotationPreference(context, refresh, display, displayRotation);
+ addResolutionPreference(context, refresh, display, position);
+ addRotationPreference(context, refresh, display, displayRotation, position);
if (isResolutionSettingEnabled(mInjector)) {
// Do not show the footer about changing resolution affecting apps. This is not in the
// UX design for v2, and there is no good place to put it, since (a) if it is on the
@@ -529,13 +466,13 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
// inconsistent with the topology pane, which shows that display.
// TODO(b/352648432): probably remove footer once the pane and rest of v2 UI is in
// place.
- if (!isTopologyPaneEnabled(mInjector)) {
+ if (includeV1Helpers) {
addFooterPreference(
context, refresh, EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE);
}
}
if (isDisplaySizeSettingEnabled(mInjector)) {
- addSizePreference(context, refresh, display.getDisplayId());
+ addSizePreference(context, refresh, display.getDisplayId(), position);
}
}
@@ -555,66 +492,26 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
private void showDisplaysList(@NonNull List<Display> displaysToShow,
@NonNull PrefRefresh screen, @NonNull Context context) {
maybeAddV2Components(context, screen);
- int order = PrefBasics.BUILTIN_DISPLAY_LIST.order;
+ int position = 0;
+ boolean includeV1Helpers = !isTopologyPaneEnabled(mInjector) && displaysToShow.size() <= 1;
for (var display : displaysToShow) {
- var pref = getDisplayPreference(context, display, screen, ++order);
- pref.setSummary(display.getMode().getPhysicalWidth() + " x "
- + display.getMode().getPhysicalHeight());
- }
- }
-
- @VisibleForTesting
- static String displayListDisplayCategoryKey(int displayId) {
- return "display_list_display_category_" + displayId;
- }
-
- @VisibleForTesting
- static String resolutionRotationPreferenceKey(int displayId) {
- return "display_id_" + displayId;
- }
-
- private Preference getDisplayPreference(@NonNull Context context,
- @NonNull Display display, @NonNull PrefRefresh groupCleanable, int categoryOrder) {
- var itemKey = resolutionRotationPreferenceKey(display.getDisplayId());
- var categoryKey = displayListDisplayCategoryKey(display.getDisplayId());
- var category = (PreferenceCategory) groupCleanable.findUnusedPreference(categoryKey);
-
- if (category != null) {
- groupCleanable.addPreference(category);
- return category.findPreference(itemKey);
- } else {
- category = new PreferenceCategory(context);
- category.setPersistent(false);
- category.setKey(categoryKey);
- category.setOrder(categoryOrder);
- // Must add the category to the hierarchy before adding its descendants. Otherwise
- // the category will not have a preference manager, which causes an exception when a
- // child is added to it.
- groupCleanable.addPreference(category);
-
- var prefItem = new DisplayPreference(context, display);
- prefItem.setTitle(
- context.getString(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.titleResource) + " | "
- + context.getString(PrefBasics.EXTERNAL_DISPLAY_ROTATION.titleResource));
- prefItem.setKey(itemKey);
-
- category.addPreference(prefItem);
+ var category = reuseDisplayCategory(screen, context, position);
category.setTitle(display.getName());
- return prefItem;
+ try (var refresh = new PrefRefresh(category)) {
+ // The category may have already been populated if it was retrieved from `screen`,
+ // but we still need to update resolution and rotation items.
+ showDisplaySettings(display, refresh, context, includeV1Helpers, position);
+ }
+
+ position++;
}
}
- private List<Display> externalDisplaysToShow(int displayIdToShow) {
+ private List<Display> externalDisplaysToShow() {
if (mInjector == null) {
return List.of();
}
- if (displayIdToShow != INVALID_DISPLAY) {
- var display = mInjector.getDisplay(displayIdToShow);
- if (display != null && isDisplayAllowed(display, mInjector)) {
- return List.of(display);
- }
- }
var displaysToShow = new ArrayList<Display>();
for (var display : mInjector.getAllDisplays()) {
if (display != null && isDisplayAllowed(display, mInjector)) {
@@ -624,16 +521,17 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
return displaysToShow;
}
- private void addUseDisplayPreferenceNoDisplaysFound(Context context, PrefRefresh refresh) {
- final var pref = reuseUseDisplayPreference(context, refresh);
+ private void addUseDisplayPreferenceNoDisplaysFound(Context context, PrefRefresh refresh,
+ int position) {
+ final var pref = reuseUseDisplayPreference(context, refresh, position);
pref.setChecked(false);
pref.setEnabled(false);
pref.setOnPreferenceChangeListener(null);
}
private void addUseDisplayPreferenceForDisplay(final Context context,
- PrefRefresh refresh, final Display display, boolean isEnabled) {
- final var pref = reuseUseDisplayPreference(context, refresh);
+ PrefRefresh refresh, final Display display, boolean isEnabled, int position) {
+ final var pref = reuseUseDisplayPreference(context, refresh, position);
pref.setChecked(isEnabled);
pref.setEnabled(true);
pref.setOnPreferenceChangeListener((p, newValue) -> {
@@ -654,20 +552,19 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
});
}
- private Preference updateIllustrationImage(@NonNull final Context context,
+ private void addIllustrationImage(final Context context, PrefRefresh refresh,
final int displayRotation) {
- var pref = getIllustrationPreference(context);
+ var pref = reuseIllustrationPreference(context, refresh);
if (displayRotation % 2 == 0) {
pref.setLottieAnimationResId(EXTERNAL_DISPLAY_PORTRAIT_DRAWABLE);
} else {
pref.setLottieAnimationResId(EXTERNAL_DISPLAY_LANDSCAPE_DRAWABLE);
}
- return pref;
}
private void addRotationPreference(final Context context,
- PrefRefresh refresh, final Display display, final int displayRotation) {
- var pref = reuseRotationPreference(context, refresh);
+ PrefRefresh refresh, final Display display, final int displayRotation, int position) {
+ var pref = reuseRotationPreference(context, refresh, position);
if (mRotationEntries == null || mRotationEntriesValues == null) {
mRotationEntries = new String[] {
context.getString(R.string.external_display_standard_rotation),
@@ -694,8 +591,8 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
}
private void addResolutionPreference(final Context context, PrefRefresh refresh,
- final Display display) {
- var pref = reuseResolutionPreference(context, refresh);
+ final Display display, int position) {
+ var pref = reuseResolutionPreference(context, refresh, position);
pref.setSummary(display.getMode().getPhysicalWidth() + " x "
+ display.getMode().getPhysicalHeight());
pref.setOnPreferenceClickListener((Preference p) -> {
@@ -706,8 +603,9 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
pref.setEnabled(isResolutionSettingEnabled(mInjector));
}
- private void addSizePreference(final Context context, PrefRefresh refresh, int displayId) {
- var pref = reuseSizePreference(context, refresh, displayId);
+ private void addSizePreference(final Context context, PrefRefresh refresh, int displayId,
+ int position) {
+ var pref = reuseSizePreference(context, refresh, displayId, position);
pref.setSummary(EXTERNAL_DISPLAY_SIZE_SUMMARY_RESOURCE);
pref.setOnPreferenceClickListener(
(Preference p) -> {
@@ -804,27 +702,6 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
public void onStopTrackingTouch(@NonNull SeekBar seekBar) {}
}
- @VisibleForTesting
- class DisplayPreference extends TwoTargetPreference
- implements Preference.OnPreferenceClickListener {
- private final int mDisplayId;
-
- DisplayPreference(@NonNull final Context context, @NonNull final Display display) {
- super(context);
- mDisplayId = display.getDisplayId();
-
- setPersistent(false);
- setOnPreferenceClickListener(this);
- }
-
- @Override
- public boolean onPreferenceClick(@NonNull Preference preference) {
- launchExternalDisplaySettings(mDisplayId);
- writePreferenceClickMetric(preference);
- return true;
- }
- }
-
private static class PrefRefresh implements AutoCloseable {
private final PreferenceGroup mScreen;
private final HashMap<String, Preference> mUnusedPreferences = new HashMap<>();
diff --git a/src/com/android/settings/datetime/DateTimeLaunchUtils.java b/src/com/android/settings/datetime/DateTimeLaunchUtils.java
deleted file mode 100644
index f8cf0be2047..00000000000
--- a/src/com/android/settings/datetime/DateTimeLaunchUtils.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.datetime;
-
-import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME;
-
-import android.provider.DeviceConfig;
-
-import com.android.settings.flags.Flags;
-
-/** A class to avoid duplication of launch-control logic for "time feedback" support. */
-final class DateTimeLaunchUtils {
- /**
- * A {@link DeviceConfig} flag that influences whether the settings entries related to help and
- * feedback are supported on this device / for this user.
- */
- public static final String KEY_HELP_AND_FEEDBACK_FEATURE_SUPPORTED =
- "time_help_and_feedback_feature_supported";
-
- private DateTimeLaunchUtils() {}
-
- static boolean isFeedbackFeatureSupported() {
- // Support is determined according to:
- // 1) A build-time flag to determine release feature availability.
- // 2) A runtime / server-side flag to determine which devices / who gets to see the feature.
- // This is launch control for limiting the feedback to droidfooding.
- return isFeedbackFeatureSupportedThisRelease() && isFeedbackFeatureSupportedOnThisDevice();
- }
-
- private static boolean isFeedbackFeatureSupportedThisRelease() {
- return Flags.datetimeFeedback();
- }
-
- private static boolean isFeedbackFeatureSupportedOnThisDevice() {
- boolean defaultIsSupported = false;
- return DeviceConfig.getBoolean(
- NAMESPACE_SYSTEM_TIME, KEY_HELP_AND_FEEDBACK_FEATURE_SUPPORTED, defaultIsSupported);
- }
-}
diff --git a/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryController.java b/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryController.java
index 372eee89d7d..6e3a0b27378 100644
--- a/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryController.java
+++ b/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryController.java
@@ -20,6 +20,7 @@ import android.content.Context;
import androidx.annotation.NonNull;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.flags.Flags;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.ArrayList;
@@ -48,7 +49,7 @@ public class TimeFeedbackPreferenceCategoryController extends BasePreferenceCont
@Override
public int getAvailabilityStatus() {
// Firstly, hide the category if it is not enabled by flags.
- if (!isTimeFeedbackFeatureEnabled()) {
+ if (!Flags.datetimeFeedback()) {
return UNSUPPORTED_ON_DEVICE;
}
@@ -60,8 +61,4 @@ public class TimeFeedbackPreferenceCategoryController extends BasePreferenceCont
}
return UNSUPPORTED_ON_DEVICE;
}
-
- protected boolean isTimeFeedbackFeatureEnabled() {
- return DateTimeLaunchUtils.isFeedbackFeatureSupported();
- }
}
diff --git a/src/com/android/settings/datetime/TimeFeedbackPreferenceController.java b/src/com/android/settings/datetime/TimeFeedbackPreferenceController.java
index ff3cb4ba49c..4830c60cc37 100644
--- a/src/com/android/settings/datetime/TimeFeedbackPreferenceController.java
+++ b/src/com/android/settings/datetime/TimeFeedbackPreferenceController.java
@@ -32,6 +32,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.flags.Flags;
import java.net.URISyntaxException;
@@ -47,7 +48,6 @@ public class TimeFeedbackPreferenceController
private final PackageManager mPackageManager;
private final String mIntentUri;
- private final int mAvailabilityStatus;
public TimeFeedbackPreferenceController(Context context, String preferenceKey) {
this(context, context.getPackageManager(), preferenceKey, context.getResources().getString(
@@ -60,7 +60,6 @@ public class TimeFeedbackPreferenceController
super(context, preferenceKey);
mPackageManager = packageManager;
mIntentUri = intentUri;
- mAvailabilityStatus = TextUtils.isEmpty(mIntentUri) ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
}
/**
@@ -75,13 +74,12 @@ public class TimeFeedbackPreferenceController
@Override
public int getAvailabilityStatus() {
- if (!DateTimeLaunchUtils.isFeedbackFeatureSupported()) {
+ if (!Flags.datetimeFeedback() || TextUtils.isEmpty(mIntentUri)) {
return UNSUPPORTED_ON_DEVICE;
- }
- if (!isTimeFeedbackTargetAvailable()) {
+ } else if (!isTimeFeedbackTargetAvailable()) {
return CONDITIONALLY_UNAVAILABLE;
}
- return mAvailabilityStatus;
+ return AVAILABLE;
}
@Override
diff --git a/src/com/android/settings/display/ScreenResolutionFragment.java b/src/com/android/settings/display/ScreenResolutionFragment.java
index d9718f66f93..b95d581db5f 100644
--- a/src/com/android/settings/display/ScreenResolutionFragment.java
+++ b/src/com/android/settings/display/ScreenResolutionFragment.java
@@ -26,8 +26,6 @@ import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.Display;
-import android.view.accessibility.AccessibilityEvent;
-import android.view.accessibility.AccessibilityManager;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
@@ -64,7 +62,6 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment {
private IllustrationPreference mImagePreference;
private DisplayObserver mDisplayObserver;
- private AccessibilityManager mAccessibilityManager;
private int mHighWidth;
private int mFullWidth;
@@ -75,7 +72,6 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment {
mDefaultDisplay =
context.getSystemService(DisplayManager.class).getDisplay(Display.DEFAULT_DISPLAY);
- mAccessibilityManager = context.getSystemService(AccessibilityManager.class);
mResources = context.getResources();
mScreenResolutionOptions =
mResources.getStringArray(R.array.config_screen_resolution_options_strings);
@@ -236,13 +232,6 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment {
return;
}
- if (mAccessibilityManager.isEnabled()) {
- AccessibilityEvent event = AccessibilityEvent.obtain();
- event.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT);
- event.getText().add(mResources.getString(R.string.screen_resolution_selected_a11y));
- mAccessibilityManager.sendAccessibilityEvent(event);
- }
-
super.onRadioButtonClicked(selected);
}
diff --git a/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceController.java b/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceController.java
new file mode 100644
index 00000000000..3688a05c6b8
--- /dev/null
+++ b/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceController.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.display.darkmode;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.widget.TopIntroPreference;
+
+/**
+ * Controller of the top info preference in the Dark Mode settings page.
+ *
+ * This should be removed after the flag android.view.accessibility.force_invert_color is launched.
+ */
+public class DarkModeTopIntroPreferenceController extends BasePreferenceController {
+ @Nullable private TopIntroPreference mPreference;
+
+ public DarkModeTopIntroPreferenceController(
+ @NonNull Context context,
+ @NonNull String preferenceKey) {
+ super(context, preferenceKey);
+
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE_UNSEARCHABLE;
+ }
+
+ @Override
+ public void displayPreference(@NonNull PreferenceScreen screen) {
+ super.displayPreference(screen);
+ mPreference = screen.findPreference(getPreferenceKey());
+ if (android.view.accessibility.Flags.forceInvertColor()) {
+ mPreference.setTitle(R.string.dark_ui_text_force_invert);
+ } else {
+ mPreference.setTitle(R.string.dark_ui_text);
+ }
+ }
+}
diff --git a/src/com/android/settings/nfc/OWNERS b/src/com/android/settings/nfc/OWNERS
index 2f73a10ca41..55c4945fc13 100644
--- a/src/com/android/settings/nfc/OWNERS
+++ b/src/com/android/settings/nfc/OWNERS
@@ -4,4 +4,3 @@ jackcwyu@google.com
georgekgchang@google.com
# Emergency approvers in case the above are not available
-zachoverflow@google.com
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index 7892ac47ffa..60589535f2d 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -585,10 +585,10 @@ public class ChooseLockPassword extends SettingsActivity {
: (InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD));
if (mIsAlphaMode) {
mPasswordEntry.setContentDescription(
- getString(R.string.unlock_set_unlock_password_title));
+ getString(R.string.unlock_accessibility_password));
} else {
mPasswordEntry.setContentDescription(
- getString(R.string.unlock_set_unlock_pin_title));
+ getString(R.string.unlock_accessibility_pin_area));
}
// Can't set via XML since setInputType resets the fontFamily to null
mPasswordEntry.setTypeface(Typeface.create(
diff --git a/src/com/android/settings/password/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java
index a09db22c215..ee9e3171dc2 100644
--- a/src/com/android/settings/password/ConfirmLockPassword.java
+++ b/src/com/android/settings/password/ConfirmLockPassword.java
@@ -66,7 +66,6 @@ import com.android.internal.widget.LockscreenCredential;
import com.android.internal.widget.TextViewInputDisabler;
import com.android.settings.R;
import com.android.settings.SetupRedactionInterstitial;
-import com.android.settings.SetupWizardUtils;
import com.android.settings.Utils;
import com.android.settingslib.animation.AppearAnimationUtils;
import com.android.settingslib.animation.DisappearAnimationUtils;
@@ -211,12 +210,12 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
if (mIsAlpha) {
mPasswordEntry.setInputType(currentType);
mPasswordEntry.setContentDescription(
- getContext().getString(R.string.unlock_set_unlock_password_title));
+ getContext().getString(R.string.unlock_accessibility_password));
} else {
mPasswordEntry.setInputType(
InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
mPasswordEntry.setContentDescription(
- getContext().getString(R.string.unlock_set_unlock_pin_title));
+ getContext().getString(R.string.unlock_accessibility_pin_area));
}
// Can't set via XML since setInputType resets the fontFamily to null
mPasswordEntry.setTypeface(Typeface.create(
diff --git a/src/com/android/settings/password/OWNERS b/src/com/android/settings/password/OWNERS
index 4adcfbefd2a..9e403d3b55a 100644
--- a/src/com/android/settings/password/OWNERS
+++ b/src/com/android/settings/password/OWNERS
@@ -2,7 +2,6 @@
set noparent
# Default reviewers for this and subdirectories.
-curtislb@google.com
graciecheng@google.com
ilyamaty@google.com
jbolinger@google.com
diff --git a/src/com/android/settings/widget/CheckableRelativeLayout.java b/src/com/android/settings/widget/CheckableRelativeLayout.java
index d26c042dc29..f3c99291c32 100644
--- a/src/com/android/settings/widget/CheckableRelativeLayout.java
+++ b/src/com/android/settings/widget/CheckableRelativeLayout.java
@@ -16,6 +16,8 @@
package com.android.settings.widget;
+import static android.view.accessibility.Flags.triStateChecked;
+
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
@@ -90,10 +92,16 @@ public class CheckableRelativeLayout extends RelativeLayout implements Checkable
if (mCheckable != null) {
mCheckable.setChecked(checked);
}
+ if (triStateChecked()) {
+ notifyViewAccessibilityStateChangedIfNeeded(
+ AccessibilityEvent.CONTENT_CHANGE_TYPE_CHECKED);
+ }
}
setStateDescriptionIfNeeded();
- notifyViewAccessibilityStateChangedIfNeeded(
- AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
+ if (!triStateChecked()) {
+ notifyViewAccessibilityStateChangedIfNeeded(
+ AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
+ }
}
private void setStateDescriptionIfNeeded() {
@@ -122,6 +130,11 @@ public class CheckableRelativeLayout extends RelativeLayout implements Checkable
@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
- info.setChecked(mChecked);
+ if (triStateChecked()) {
+ info.setChecked(mChecked ? AccessibilityNodeInfo.CHECKED_STATE_TRUE :
+ AccessibilityNodeInfo.CHECKED_STATE_FALSE);
+ } else {
+ info.setChecked(mChecked);
+ }
}
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickControllerTest.java
new file mode 100644
index 00000000000..5d9f79e33e0
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickRevertToLeftClickControllerTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.accessibility;
+
+import static android.view.accessibility.AccessibilityManager.AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT;
+
+import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
+import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.provider.Settings;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.core.BasePreferenceController;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests for {@link ToggleAutoclickRevertToLeftClickController}. */
+@RunWith(RobolectricTestRunner.class)
+public class ToggleAutoclickRevertToLeftClickControllerTest {
+
+ private static final String PREFERENCE_KEY =
+ "accessibility_control_autoclick_revert_to_left_click";
+
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+ private ToggleAutoclickRevertToLeftClickController mController;
+
+ @Before
+ public void setUp() {
+ mController =
+ new ToggleAutoclickRevertToLeftClickController(mContext, PREFERENCE_KEY);
+ }
+
+ @Test
+ @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
+ public void getAvailabilityStatus_availableWhenFlagOn() {
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.AVAILABLE);
+ }
+
+ @Test
+ @DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
+ public void getAvailabilityStatus_conditionallyUnavailableWhenFlagOn() {
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
+ }
+
+ @Test
+ public void isChecked_matchesSetting() {
+ assertThat(mController.isChecked()).isEqualTo(readSetting() == ON);
+ }
+
+ @Test
+ public void setChecked_true_updatesSetting() {
+ mController.setChecked(true);
+ assertThat(readSetting()).isEqualTo(ON);
+ }
+
+ @Test
+ public void setChecked_false_updatesSetting() {
+ mController.setChecked(false);
+ assertThat(readSetting()).isEqualTo(OFF);
+ }
+
+ private int readSetting() {
+ return Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_AUTOCLICK_REVERT_TO_LEFT_CLICK,
+ AUTOCLICK_REVERT_TO_LEFT_CLICK_DEFAULT ? ON : OFF);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/ForgetDeviceDialogFragmentTest.java b/tests/robotests/src/com/android/settings/bluetooth/ForgetDeviceDialogFragmentTest.java
index 2394c7c9740..a743018ea4d 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/ForgetDeviceDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/ForgetDeviceDialogFragmentTest.java
@@ -20,24 +20,36 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothDevice;
+import android.companion.AssociationInfo;
+import android.companion.CompanionDeviceManager;
import android.content.Context;
+import android.content.DialogInterface;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.net.MacAddress;
+import android.os.Bundle;
+import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
import com.android.settings.R;
-import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.flags.Flags;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import org.junit.Before;
import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
@@ -48,41 +60,64 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowDialog;
+import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.androidx.fragment.FragmentController;
-@Ignore
+import java.util.ArrayList;
+import java.util.List;
+
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowAlertDialogCompat.class})
+@Config(shadows = {
+ com.android.settings.testutils.shadow.ShadowFragment.class,
+ ShadowAlertDialogCompat.class,
+})
public class ForgetDeviceDialogFragmentTest {
private static final String DEVICE_NAME = "Nightshade";
+ private static final String PACKAGE_NAME = "com.android.test";
+ private static final CharSequence APP_NAME = "test";
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private CachedBluetoothDevice mCachedDevice;
@Mock
private BluetoothDevice mBluetoothDevice;
+ @Mock
+ private CompanionDeviceManager mCompanionDeviceManager;
+ @Mock
+ private PackageManager mPackageManager;
private ForgetDeviceDialogFragment mFragment;
private FragmentActivity mActivity;
private AlertDialog mDialog;
private Context mContext;
+ private List<AssociationInfo> mAssociations;
+
+ @Rule
+ public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- mContext = RuntimeEnvironment.application;
- FakeFeatureFactory.setupForTest();
String deviceAddress = "55:66:77:88:99:AA";
+ mAssociations = new ArrayList<>();
+ mFragment = spy(ForgetDeviceDialogFragment.newInstance(deviceAddress));
+ mContext = spy(RuntimeEnvironment.application);
+ mFragment.mCompanionDeviceManager = mCompanionDeviceManager;
+ mFragment.mPackageManager = mPackageManager;
+ mFragment.mDevice = mCachedDevice;
+ mActivity = Robolectric.setupActivity(FragmentActivity.class);
+
+ when(mFragment.getActivity()).thenReturn(mActivity);
when(mCachedDevice.getAddress()).thenReturn(deviceAddress);
when(mCachedDevice.getIdentityAddress()).thenReturn(deviceAddress);
when(mCachedDevice.getDevice()).thenReturn(mBluetoothDevice);
when(mCachedDevice.getName()).thenReturn(DEVICE_NAME);
- mFragment = spy(ForgetDeviceDialogFragment.newInstance(deviceAddress));
+ when(mCompanionDeviceManager.getAllAssociations()).thenReturn(mAssociations);
doReturn(mCachedDevice).when(mFragment).getDevice(any());
- mActivity = Robolectric.setupActivity(FragmentActivity.class);
}
+ @Ignore("b/253386225")
@Test
public void cancelDialog() {
initDialog();
@@ -92,6 +127,7 @@ public class ForgetDeviceDialogFragmentTest {
assertThat(mActivity.isFinishing()).isFalse();
}
+ @Ignore("b/253386225")
@Test
public void confirmDialog() {
initDialog();
@@ -101,6 +137,7 @@ public class ForgetDeviceDialogFragmentTest {
assertThat(mActivity.isFinishing()).isTrue();
}
+ @Ignore("b/253386225")
@Test
public void createDialog_normalDevice_showNormalMessage() {
when(mBluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET))
@@ -115,8 +152,86 @@ public class ForgetDeviceDialogFragmentTest {
mContext.getString(R.string.bluetooth_unpair_dialog_body, DEVICE_NAME));
}
+ @Test
+ @RequiresFlagsEnabled(Flags.FLAG_ENABLE_REMOVE_ASSOCIATION_BT_UNPAIR)
+ public void cancelDialog_with_association() {
+ addAssociation();
+ final AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(Bundle.EMPTY);
+ dialog.show();
+ dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
+ ShadowLooper.idleMainLooper();
+
+ verify(mCachedDevice, never()).unpair();
+ verify(mCompanionDeviceManager, never()).disassociate(1);
+ assertThat(mActivity.isFinishing()).isFalse();
+ }
+
+ @Test
+ @RequiresFlagsEnabled(Flags.FLAG_ENABLE_REMOVE_ASSOCIATION_BT_UNPAIR)
+ public void confirmDialog_with_association() {
+ addAssociation();
+ final AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(Bundle.EMPTY);
+ dialog.show();
+ dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+ ShadowLooper.idleMainLooper();
+
+ verify(mCachedDevice).unpair();
+ verify(mCompanionDeviceManager).disassociate(1);
+
+ assertThat(mActivity.isFinishing()).isTrue();
+ }
+
+ @Test
+ @RequiresFlagsEnabled(Flags.FLAG_ENABLE_REMOVE_ASSOCIATION_BT_UNPAIR)
+ public void createDialog_showMessage_with_association() {
+ addAssociation();
+ final AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(Bundle.EMPTY);
+ dialog.show();
+ ShadowLooper.idleMainLooper();
+
+ ShadowAlertDialogCompat shadowDialog = ShadowAlertDialogCompat.shadowOf(dialog);
+ assertThat(shadowDialog.getMessage().toString()).isEqualTo(
+ mContext.getString(
+ R.string.bluetooth_unpair_dialog_with_associations_body,
+ DEVICE_NAME, APP_NAME)
+ );
+ }
+
private void initDialog() {
mActivity.getSupportFragmentManager().beginTransaction().add(mFragment, null).commit();
mDialog = (AlertDialog) ShadowDialog.getLatestDialog();
}
+
+ private void addAssociation() {
+ setupLabelAndInfo(PACKAGE_NAME, APP_NAME);
+ final AssociationInfo association = new AssociationInfo(
+ 1,
+ /* userId */ 0,
+ PACKAGE_NAME,
+ MacAddress.fromString(mCachedDevice.getAddress()),
+ /* displayName */ null,
+ /* deviceProfile */ "",
+ /* associatedDevice */ null,
+ /* selfManaged */ false,
+ /* notifyOnDeviceNearby */ true,
+ /* revoked */ false,
+ /* pending */ false,
+ /* timeApprovedMs */ System.currentTimeMillis(),
+ /* lastTimeConnected */ Long.MAX_VALUE,
+ /* systemDataSyncFlags */ -1,
+ /* deviceIcon */ null,
+ /* deviceId */ null);
+
+ mAssociations.add(association);
+ }
+
+ private void setupLabelAndInfo(String packageName, CharSequence appName) {
+ ApplicationInfo appInfo = mock(ApplicationInfo.class);
+ try {
+ when(mPackageManager.getApplicationInfo(packageName, 0)).thenReturn(appInfo);
+ when(mPackageManager.getApplicationLabel(appInfo)).thenReturn(appName);
+ } catch (PackageManager.NameNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
diff --git a/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryControllerTest.java b/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryControllerTest.java
index 2e603e38d37..dc2d25d3a24 100644
--- a/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceCategoryControllerTest.java
@@ -24,45 +24,51 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+import com.android.settings.flags.Flags;
import com.android.settingslib.core.AbstractPreferenceController;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class TimeFeedbackPreferenceCategoryControllerTest {
- private TestTimeFeedbackPreferenceCategoryController mController;
+ private TimeFeedbackPreferenceCategoryController mController;
@Mock private AbstractPreferenceController mChildController;
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
@Before
public void setUp() {
- MockitoAnnotations.initMocks(this);
Context context = RuntimeEnvironment.getApplication();
- mController = new TestTimeFeedbackPreferenceCategoryController(context, "test_key");
+ mController = new TimeFeedbackPreferenceCategoryController(context, "test_key");
mController.addChildController(mChildController);
}
@Test
+ @DisableFlags({Flags.FLAG_DATETIME_FEEDBACK})
public void getAvailabilityStatus_featureEnabledPrimary() {
- mController.setTimeFeedbackFeatureEnabled(false);
-
when(mChildController.isAvailable()).thenReturn(true);
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
}
@Test
+ @EnableFlags({Flags.FLAG_DATETIME_FEEDBACK})
public void getAvailabilityStatus_childControllerSecondary() {
- mController.setTimeFeedbackFeatureEnabled(true);
-
when(mChildController.isAvailable()).thenReturn(false);
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
@@ -71,27 +77,4 @@ public class TimeFeedbackPreferenceCategoryControllerTest {
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
}
-
- /**
- * Extend class under test to change {@link #isTimeFeedbackFeatureEnabled} to not call
- * {@link DateTimeLaunchUtils} because that's non-trivial to fake.
- */
- private static class TestTimeFeedbackPreferenceCategoryController
- extends TimeFeedbackPreferenceCategoryController {
-
- private boolean mTimeFeedbackFeatureEnabled;
-
- TestTimeFeedbackPreferenceCategoryController(Context context, String preferenceKey) {
- super(context, preferenceKey);
- }
-
- void setTimeFeedbackFeatureEnabled(boolean value) {
- this.mTimeFeedbackFeatureEnabled = value;
- }
-
- @Override
- protected boolean isTimeFeedbackFeatureEnabled() {
- return mTimeFeedbackFeatureEnabled;
- }
- }
}
diff --git a/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceControllerTest.java
index 6cbb14f2142..6354e5e3170 100644
--- a/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/TimeFeedbackPreferenceControllerTest.java
@@ -16,8 +16,6 @@
package com.android.settings.datetime;
-import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME;
-
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
@@ -38,9 +36,9 @@ import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
-import android.provider.DeviceConfig;
import androidx.preference.Preference;
@@ -82,6 +80,7 @@ public class TimeFeedbackPreferenceControllerTest {
}
@Test
+ @EnableFlags({Flags.FLAG_DATETIME_FEEDBACK})
public void emptyIntentUri_controllerNotAvailable() {
String emptyIntentUri = "";
TimeFeedbackPreferenceController controller =
@@ -91,10 +90,17 @@ public class TimeFeedbackPreferenceControllerTest {
}
@Test
+ @DisableFlags({Flags.FLAG_DATETIME_FEEDBACK})
+ public void datetimeFeedbackDisabled_controllerNotAvailable() {
+ TimeFeedbackPreferenceController controller =
+ new TimeFeedbackPreferenceController(
+ mContext, mContext.getPackageManager(), "test_key", TEST_INTENT_URI);
+ assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+ }
+
+ @Test
@EnableFlags({Flags.FLAG_DATETIME_FEEDBACK})
public void validIntentUri_targetHandlerNotFound_returnsConditionallyUnavailable() {
- DeviceConfig.setProperty(NAMESPACE_SYSTEM_TIME,
- DateTimeLaunchUtils.KEY_HELP_AND_FEEDBACK_FEATURE_SUPPORTED, "true", true);
when(mMockPackageManager.resolveActivity(any(), anyInt())).thenReturn(null);
TimeFeedbackPreferenceController controller =
@@ -107,8 +113,6 @@ public class TimeFeedbackPreferenceControllerTest {
@Test
@EnableFlags({Flags.FLAG_DATETIME_FEEDBACK})
public void validIntentUri_targetHandlerAvailable_returnsAvailable() {
- DeviceConfig.setProperty(NAMESPACE_SYSTEM_TIME,
- DateTimeLaunchUtils.KEY_HELP_AND_FEEDBACK_FEATURE_SUPPORTED, "true", true);
when(mMockPackageManager.resolveActivity(any(), anyInt())).thenReturn(
createDummyResolveInfo());
@@ -120,6 +124,7 @@ public class TimeFeedbackPreferenceControllerTest {
}
@Test
+ @EnableFlags({Flags.FLAG_DATETIME_FEEDBACK})
public void clickPreference() {
Preference preference = new Preference(mContext);
diff --git a/tests/robotests/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceControllerTest.java
new file mode 100644
index 00000000000..f5f25d89f82
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/display/darkmode/DarkModeTopIntroPreferenceControllerTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.display.darkmode;
+
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.view.accessibility.Flags;
+
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+import com.android.settingslib.widget.TopIntroPreference;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.robolectric.RobolectricTestRunner;
+
+/**
+ * Tests for {@link DarkModeTopIntroPreferenceController}.
+ */
+@RunWith(RobolectricTestRunner.class)
+public class DarkModeTopIntroPreferenceControllerTest {
+ @Rule
+ public final MockitoRule mocks = MockitoJUnit.rule();
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ private static final String PREFERENCE_KEY = "preference_key";
+
+ @Mock
+ private PreferenceScreen mScreen;
+ @Mock
+ private TopIntroPreference mPreference;
+ private DarkModeTopIntroPreferenceController mController;
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mController = new DarkModeTopIntroPreferenceController(mContext, PREFERENCE_KEY);
+ when(mScreen.findPreference(PREFERENCE_KEY)).thenReturn(mPreference);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FORCE_INVERT_COLOR)
+ public void enableForceInvert_newPreferenceTitle() {
+ mController.displayPreference(mScreen);
+
+ verify(mPreference).setTitle(eq(R.string.dark_ui_text_force_invert));
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_FORCE_INVERT_COLOR)
+ public void disableForceInvert_originalPreferenceTitle() {
+ mController.displayPreference(mScreen);
+
+ verify(mPreference).setTitle(eq(R.string.dark_ui_text));
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
index c6bdebdcc14..c9cf5a2a852 100644
--- a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
@@ -56,7 +56,6 @@ import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiEntry.ConnectedState;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -73,7 +72,6 @@ import org.robolectric.shadows.ShadowBinder;
import java.util.ArrayList;
import java.util.List;
-@Ignore("b/394813533")
@Deprecated(forRemoval = true)
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {
diff --git a/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java
index a87e66b1b96..0b118a78358 100644
--- a/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java
+++ b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java
@@ -21,9 +21,6 @@ import static com.android.settings.connecteddevice.display.ExternalDisplayPrefer
import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_NOT_FOUND_FOOTER_RESOURCE;
import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_SETTINGS_RESOURCE;
import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_SIZE_SUMMARY_RESOURCE;
-import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.PREVIOUSLY_SHOWN_LIST_KEY;
-import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.displayListDisplayCategoryKey;
-import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.resolutionRotationPreferenceKey;
import static com.android.settings.flags.Flags.FLAG_DISPLAY_SIZE_CONNECTED_DISPLAY_SETTING;
import static com.android.settings.flags.Flags.FLAG_DISPLAY_TOPOLOGY_PANE_IN_DISPLAY_LIST;
@@ -53,7 +50,6 @@ import androidx.preference.PreferenceScreen;
import androidx.test.annotation.UiThreadTest;
import androidx.test.ext.junit.runners.AndroidJUnit4;
-import com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.DisplayPreference;
import com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.PrefBasics;
import com.android.settingslib.widget.MainSwitchPreference;
@@ -67,7 +63,6 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
@Nullable
private ExternalDisplayPreferenceFragment mFragment;
private int mPreferenceIdFromResource;
- private int mDisplayIdArg = INVALID_DISPLAY;
private boolean mLaunchedBuiltinSettings;
private int mResolutionSelectorDisplayId = INVALID_DISPLAY;
@Mock
@@ -80,17 +75,20 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
assertThat(mPreferenceIdFromResource).isEqualTo(EXTERNAL_DISPLAY_SETTINGS_RESOURCE);
}
- private void assertDisplayList(boolean present, int displayId) {
- // In display list fragment, there is a combined resolution/rotation preference key.
- var category = mPreferenceScreen.findPreference(displayListDisplayCategoryKey(displayId));
- var pref = mPreferenceScreen.findPreference(resolutionRotationPreferenceKey(displayId));
- if (present) {
- assertThat(category).isNotNull();
- assertThat(pref).isNotNull();
- } else {
- assertThat(category).isNull();
- assertThat(pref).isNull();
+ private PreferenceCategory getExternalDisplayCategory(int positionIndex) {
+ return mPreferenceScreen.findPreference(
+ PrefBasics.EXTERNAL_DISPLAY_LIST.keyForNth(positionIndex));
+ }
+
+ private void assertDisplayListCount(int expectedCount) {
+ int actualCount = 0;
+ for (int i = 0; i < mPreferenceScreen.getPreferenceCount(); i++) {
+ Preference child = mPreferenceScreen.getPreference(i);
+ if (child.getKey().startsWith(PrefBasics.EXTERNAL_DISPLAY_LIST.key)) {
+ actualCount++;
+ }
}
+ assertThat(actualCount).isEqualTo(expectedCount);
}
@Test
@@ -100,27 +98,15 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
var fragment = initFragment();
var outState = new Bundle();
- fragment.onSaveInstanceStateCallback(outState);
- assertThat(outState.getBoolean(PREVIOUSLY_SHOWN_LIST_KEY)).isFalse();
assertThat(mHandler.getPendingMessages().size()).isEqualTo(1);
- // Combined resolution/refresh rate are not available in displays list because the pane is
- // disabled (v1 UI).
- assertDisplayList(false, EXTERNAL_DISPLAY_ID);
- assertDisplayList(false, OVERLAY_DISPLAY_ID);
- // Individual resolution preference is not available in displays list.
- assertThat(mPreferenceScreen.<Preference>findPreference(
- PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key))
- .isNull();
+ assertDisplayListCount(0);
verify(mMockedInjector, never()).getAllDisplays();
mHandler.flush();
assertThat(mHandler.getPendingMessages().size()).isEqualTo(0);
verify(mMockedInjector).getAllDisplays();
- assertDisplayList(true, EXTERNAL_DISPLAY_ID);
- assertDisplayList(true, OVERLAY_DISPLAY_ID);
- fragment.onSaveInstanceStateCallback(outState);
- assertThat(outState.getBoolean(PREVIOUSLY_SHOWN_LIST_KEY)).isTrue();
+ assertDisplayListCount(2);
Preference pref = mPreferenceScreen.findPreference(PrefBasics.DISPLAY_TOPOLOGY.key);
assertThat(pref).isNull();
@@ -143,7 +129,8 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
pref = mPreferenceScreen.findPreference(PrefBasics.MIRROR.key);
assertThat(pref).isNotNull();
- assertDisplayList(false, mDisplays[1].getDisplayId());
+ assertDisplayListCount(1);
+ assertThat("" + getExternalDisplayCategory(0).getTitle()).isEqualTo("HDMI");
PreferenceCategory listPref =
mPreferenceScreen.findPreference(PrefBasics.BUILTIN_DISPLAY_LIST.key);
@@ -168,8 +155,7 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
pref = mPreferenceScreen.findPreference(PrefBasics.MIRROR.key);
assertThat(pref).isNull();
- assertDisplayList(false, EXTERNAL_DISPLAY_ID);
- assertDisplayList(false, OVERLAY_DISPLAY_ID);
+ assertDisplayListCount(0);
var listPref = mPreferenceScreen.findPreference(PrefBasics.BUILTIN_DISPLAY_LIST.key);
assertThat(listPref).isNull();
@@ -179,46 +165,36 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
@UiThreadTest
public void testLaunchDisplaySettingFromList() {
initFragment();
+ doReturn(true).when(mMockedInjector).isDisplayEnabled(any());
mHandler.flush();
- assertDisplayList(true, EXTERNAL_DISPLAY_ID);
- assertDisplayList(true, OVERLAY_DISPLAY_ID);
- PreferenceCategory display1Category = mPreferenceScreen.findPreference(
- displayListDisplayCategoryKey(EXTERNAL_DISPLAY_ID));
- var display1Pref = (DisplayPreference) display1Category.getPreference(0);
- PreferenceCategory display2Category = mPreferenceScreen.findPreference(
- displayListDisplayCategoryKey(OVERLAY_DISPLAY_ID));
- var display2Pref = (DisplayPreference) display2Category.getPreference(0);
- assertThat(display1Pref.getKey()).isEqualTo(
- resolutionRotationPreferenceKey(EXTERNAL_DISPLAY_ID));
+ assertDisplayListCount(2);
+ var display1Category = getExternalDisplayCategory(0);
+ var display2Category = getExternalDisplayCategory(1);
assertThat("" + display1Category.getTitle()).isEqualTo("HDMI");
- assertThat("" + display1Pref.getSummary()).isEqualTo("1920 x 1080");
- display1Pref.onPreferenceClick(display1Pref);
- assertThat(mDisplayIdArg).isEqualTo(1);
- verify(mMockedMetricsLogger).writePreferenceClickMetric(display1Pref);
- assertThat(display2Pref.getKey()).isEqualTo(
- resolutionRotationPreferenceKey(OVERLAY_DISPLAY_ID));
+ var display1Resolution = display1Category.findPreference(
+ PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(0));
+ display1Resolution.performClick();
+ assertThat(mResolutionSelectorDisplayId).isEqualTo(1);
+ verify(mMockedMetricsLogger).writePreferenceClickMetric(display1Resolution);
+ var display2Resolution = display2Category.findPreference(
+ PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(1));
assertThat("" + display2Category.getTitle()).isEqualTo("Overlay #1");
- assertThat("" + display2Pref.getSummary()).isEqualTo("1240 x 780");
- display2Pref.onPreferenceClick(display2Pref);
- assertThat(mDisplayIdArg).isEqualTo(2);
- verify(mMockedMetricsLogger).writePreferenceClickMetric(display2Pref);
+ assertThat("" + display2Resolution.getSummary()).isEqualTo("1240 x 780");
+ display2Resolution.performClick();
+ assertThat(mResolutionSelectorDisplayId).isEqualTo(2);
+ verify(mMockedMetricsLogger).writePreferenceClickMetric(display2Resolution);
}
@Test
@UiThreadTest
public void testShowDisplayListForOnlyOneDisplay_PreviouslyShownList() {
var fragment = initFragment();
- // Previously shown list of displays
- fragment.onActivityCreatedCallback(createBundleForPreviouslyShownList());
// Only one display available
doReturn(new Display[] {mDisplays[1]}).when(mMockedInjector).getAllDisplays();
mHandler.flush();
int attachedId = mDisplays[1].getDisplayId();
- assertDisplayList(true, attachedId);
- assertThat(mPreferenceScreen.<Preference>findPreference(
- resolutionRotationPreferenceKey(attachedId)))
- .isNotNull();
- assertDisplayList(false, mDisplays[2].getDisplayId());
+ assertDisplayListCount(1);
+ assertThat("" + getExternalDisplayCategory(0).getTitle()).isEqualTo("HDMI");
}
@Test
@@ -231,14 +207,15 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
// Init
initFragment();
mHandler.flush();
- assertDisplayList(false, mDisplays[1].getDisplayId());
- var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key);
+ assertDisplayListCount(1);
+ var category = getExternalDisplayCategory(0);
+ var pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(0));
assertThat(pref).isNotNull();
- pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key);
+ pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.keyForNth(0));
assertThat(pref).isNotNull();
- var footerPref = mPreferenceScreen.findPreference(PrefBasics.FOOTER.key);
+ var footerPref = category.findPreference(PrefBasics.FOOTER.key);
assertThat(footerPref).isNotNull();
- var sizePref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key);
+ var sizePref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(0));
assertThat(sizePref).isNull();
assertThat("" + footerPref.getTitle())
.isEqualTo(getText(EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE));
@@ -253,15 +230,12 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
// Init
initFragment();
mHandler.flush();
- assertDisplayList(false, mDisplays[1].getDisplayId());
- assertDisplayList(false, mDisplays[2].getDisplayId());
- var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key);
- assertThat(pref).isNotNull();
- pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key);
- assertThat(pref).isNotNull();
- var footerPref = mPreferenceScreen.findPreference(PrefBasics.FOOTER.key);
+ assertDisplayListCount(1);
+ var category = getExternalDisplayCategory(0);
+ assertThat("" + category.getTitle()).isEqualTo("HDMI");
+ var footerPref = category.findPreference(PrefBasics.FOOTER.key);
assertThat(footerPref).isNotNull();
- var sizePref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key);
+ var sizePref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(0));
assertThat(sizePref).isNotNull();
assertThat("" + footerPref.getTitle())
.isEqualTo(getText(EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE));
@@ -270,47 +244,48 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
@Test
@UiThreadTest
public void testShowOneEnabledDisplay_FewAvailable() {
- mDisplayIdArg = 1;
doReturn(true).when(mMockedInjector).isDisplayEnabled(any());
initFragment();
- verify(mMockedInjector, never()).getDisplay(anyInt());
+ verify(mMockedInjector, never()).getAllDisplays();
mHandler.flush();
- verify(mMockedInjector).getDisplay(mDisplayIdArg);
- var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key);
+ verify(mMockedInjector, never()).getDisplay(anyInt());
+ verify(mMockedInjector).getAllDisplays();
+ var pref = mPreferenceScreen.findPreference(
+ PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(0));
assertThat(pref).isNotNull();
- pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key);
+ pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.keyForNth(0));
assertThat(pref).isNotNull();
var footerPref = mPreferenceScreen.findPreference(PrefBasics.FOOTER.key);
- assertThat(footerPref).isNotNull();
- var sizePref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key);
+ // No footer for showing multiple displays.
+ assertThat(footerPref).isNull();
+ var sizePref = mPreferenceScreen.findPreference(
+ PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(0));
assertThat(sizePref).isNotNull();
- assertThat("" + footerPref.getTitle())
- .isEqualTo(getText(EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE));
}
@Test
@UiThreadTest
public void testShowDisabledDisplay() {
- mDisplayIdArg = 1;
initFragment();
- verify(mMockedInjector, never()).getDisplay(anyInt());
mHandler.flush();
- verify(mMockedInjector).getDisplay(mDisplayIdArg);
- var mainPref = (MainSwitchPreference) mPreferenceScreen.findPreference(
- PrefBasics.EXTERNAL_DISPLAY_USE.key);
+ verify(mMockedInjector, never()).getDisplay(anyInt());
+ verify(mMockedInjector).getAllDisplays();
+ var category = getExternalDisplayCategory(0);
+ var mainPref = (MainSwitchPreference) category.findPreference(
+ PrefBasics.EXTERNAL_DISPLAY_USE.keyForNth(0));
assertThat(mainPref).isNotNull();
assertThat("" + mainPref.getTitle()).isEqualTo(
getText(PrefBasics.EXTERNAL_DISPLAY_USE.titleResource));
assertThat(mainPref.isChecked()).isFalse();
assertThat(mainPref.isEnabled()).isTrue();
assertThat(mainPref.getOnPreferenceChangeListener()).isNotNull();
- var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key);
+ var pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(0));
assertThat(pref).isNull();
- pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key);
+ pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.keyForNth(0));
assertThat(pref).isNull();
- var footerPref = mPreferenceScreen.findPreference(PrefBasics.FOOTER.key);
+ var footerPref = category.findPreference(PrefBasics.FOOTER.key);
assertThat(footerPref).isNull();
- var sizePref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key);
+ var sizePref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(0));
assertThat(sizePref).isNull();
}
@@ -321,7 +296,7 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
initFragment();
mHandler.flush();
var mainPref = (MainSwitchPreference) mPreferenceScreen.findPreference(
- PrefBasics.EXTERNAL_DISPLAY_USE.key);
+ PrefBasics.EXTERNAL_DISPLAY_USE.keyForNth(0));
assertThat(mainPref).isNotNull();
assertThat("" + mainPref.getTitle()).isEqualTo(
getText(PrefBasics.EXTERNAL_DISPLAY_USE.titleResource));
@@ -337,13 +312,13 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
@Test
@UiThreadTest
public void testDisplayRotationPreference() {
- mDisplayIdArg = 1;
+ final int displayId = 1;
doReturn(true).when(mMockedInjector).isDisplayEnabled(any());
var fragment = initFragment();
mHandler.flush();
- ListPreference pref =
- mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key);
- assertThat(pref.getKey()).isEqualTo(PrefBasics.EXTERNAL_DISPLAY_ROTATION.key);
+ var category = getExternalDisplayCategory(0);
+ ListPreference pref = category.findPreference(
+ PrefBasics.EXTERNAL_DISPLAY_ROTATION.keyForNth(0));
assertThat("" + pref.getTitle()).isEqualTo(
getText(PrefBasics.EXTERNAL_DISPLAY_ROTATION.titleResource));
assertThat(pref.getEntries().length).isEqualTo(4);
@@ -359,10 +334,10 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
assertThat(pref.getOnPreferenceChangeListener()).isNotNull();
assertThat(pref.isEnabled()).isTrue();
var rotation = 1;
- doReturn(true).when(mMockedInjector).freezeDisplayRotation(mDisplayIdArg, rotation);
+ doReturn(true).when(mMockedInjector).freezeDisplayRotation(displayId, rotation);
assertThat(pref.getOnPreferenceChangeListener().onPreferenceChange(pref, rotation + ""))
.isTrue();
- verify(mMockedInjector).freezeDisplayRotation(mDisplayIdArg, rotation);
+ verify(mMockedInjector).freezeDisplayRotation(displayId, rotation);
assertThat(pref.getValue()).isEqualTo(rotation + "");
verify(mMockedMetricsLogger).writePreferenceClickMetric(pref);
}
@@ -370,31 +345,30 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
@Test
@UiThreadTest
public void testDisplayResolutionPreference() {
- mDisplayIdArg = 1;
+ final int displayId = 1;
doReturn(true).when(mMockedInjector).isDisplayEnabled(any());
var fragment = initFragment();
mHandler.flush();
- var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key);
- assertThat(pref.getKey()).isEqualTo(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.key);
+ var category = getExternalDisplayCategory(0);
+ var pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.keyForNth(0));
assertThat("" + pref.getTitle()).isEqualTo(
getText(PrefBasics.EXTERNAL_DISPLAY_RESOLUTION.titleResource));
assertThat("" + pref.getSummary()).isEqualTo("1920 x 1080");
assertThat(pref.isEnabled()).isTrue();
assertThat(pref.getOnPreferenceClickListener()).isNotNull();
assertThat(pref.getOnPreferenceClickListener().onPreferenceClick(pref)).isTrue();
- assertThat(mResolutionSelectorDisplayId).isEqualTo(mDisplayIdArg);
+ assertThat(mResolutionSelectorDisplayId).isEqualTo(displayId);
verify(mMockedMetricsLogger).writePreferenceClickMetric(pref);
}
@Test
@UiThreadTest
public void testDisplaySizePreference() {
- mDisplayIdArg = 1;
doReturn(true).when(mMockedInjector).isDisplayEnabled(any());
var fragment = initFragment();
mHandler.flush();
- var pref = mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.key);
- assertThat(pref.getKey()).isEqualTo(PrefBasics.EXTERNAL_DISPLAY_SIZE.key);
+ var category = getExternalDisplayCategory(0);
+ var pref = category.findPreference(PrefBasics.EXTERNAL_DISPLAY_SIZE.keyForNth(0));
assertThat("" + pref.getTitle())
.isEqualTo(getText(PrefBasics.EXTERNAL_DISPLAY_SIZE.titleResource));
assertThat("" + pref.getSummary())
@@ -408,25 +382,25 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
@Test
@UiThreadTest
public void testUseDisplayPreference_EnabledDisplay() {
- mDisplayIdArg = 1;
+ final int displayId = 1;
doReturn(true).when(mMockedInjector).isDisplayEnabled(any());
- doReturn(true).when(mMockedInjector).enableConnectedDisplay(mDisplayIdArg);
- doReturn(true).when(mMockedInjector).disableConnectedDisplay(mDisplayIdArg);
+ doReturn(true).when(mMockedInjector).enableConnectedDisplay(displayId);
+ doReturn(true).when(mMockedInjector).disableConnectedDisplay(displayId);
var fragment = initFragment();
mHandler.flush();
- MainSwitchPreference pref =
- mPreferenceScreen.findPreference(PrefBasics.EXTERNAL_DISPLAY_USE.key);
- assertThat(pref.getKey()).isEqualTo(PrefBasics.EXTERNAL_DISPLAY_USE.key);
+ MainSwitchPreference pref = getExternalDisplayCategory(0)
+ .findPreference(PrefBasics.EXTERNAL_DISPLAY_USE.keyForNth(0));
+ assertThat(pref.getKey()).isEqualTo(PrefBasics.EXTERNAL_DISPLAY_USE.keyForNth(0));
assertThat("" + pref.getTitle())
.isEqualTo(getText(PrefBasics.EXTERNAL_DISPLAY_USE.titleResource));
assertThat(pref.isEnabled()).isTrue();
assertThat(pref.isChecked()).isTrue();
assertThat(pref.getOnPreferenceChangeListener()).isNotNull();
assertThat(pref.getOnPreferenceChangeListener().onPreferenceChange(pref, false)).isTrue();
- verify(mMockedInjector).disableConnectedDisplay(mDisplayIdArg);
+ verify(mMockedInjector).disableConnectedDisplay(displayId);
assertThat(pref.isChecked()).isFalse();
assertThat(pref.getOnPreferenceChangeListener().onPreferenceChange(pref, true)).isTrue();
- verify(mMockedInjector).enableConnectedDisplay(mDisplayIdArg);
+ verify(mMockedInjector).enableConnectedDisplay(displayId);
assertThat(pref.isChecked()).isTrue();
verify(mMockedMetricsLogger, times(2)).writePreferenceClickMetric(pref);
}
@@ -444,13 +418,6 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
}
@NonNull
- private Bundle createBundleForPreviouslyShownList() {
- var state = new Bundle();
- state.putBoolean(PREVIOUSLY_SHOWN_LIST_KEY, true);
- return state;
- }
-
- @NonNull
private String getText(int id) {
return mContext.getResources().getText(id).toString();
}
@@ -502,21 +469,11 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
}
@Override
- protected int getDisplayIdArg() {
- return mDisplayIdArg;
- }
-
- @Override
protected void launchResolutionSelector(@NonNull Context context, int displayId) {
mResolutionSelectorDisplayId = displayId;
}
@Override
- protected void launchExternalDisplaySettings(final int displayId) {
- mDisplayIdArg = displayId;
- }
-
- @Override
Preference newFooterPreference(Context context) {
return new Preference(context);
}