Merge "Import translations. DO NOT MERGE ANYWHERE"
diff --git a/res/layout/face_enroll_button.xml b/res/layout/face_enroll_button.xml
index 09094d5..6266650 100644
--- a/res/layout/face_enroll_button.xml
+++ b/res/layout/face_enroll_button.xml
@@ -18,7 +18,9 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:minHeight="?android:attr/listPreferredItemHeight">
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart">
<Button
android:id="@+id/security_settings_face_settings_enroll_button"
@@ -26,7 +28,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
- android:layout_marginStart="20dp"
android:text="@string/security_settings_face_settings_enroll"/>
</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/face_remove_button.xml b/res/layout/face_remove_button.xml
index ea860d5..2c2497a 100644
--- a/res/layout/face_remove_button.xml
+++ b/res/layout/face_remove_button.xml
@@ -18,7 +18,9 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:minHeight="?android:attr/listPreferredItemHeight">
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart">
<Button
android:id="@+id/security_settings_face_settings_remove_button"
@@ -26,7 +28,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
- android:layout_marginStart="20dp"
android:text="@string/security_settings_face_settings_remove_face_model"/>
</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/locale_drag_cell.xml b/res/layout/locale_drag_cell.xml
index 7b932f3..47bf70a 100644
--- a/res/layout/locale_drag_cell.xml
+++ b/res/layout/locale_drag_cell.xml
@@ -56,6 +56,17 @@
android:layout_toStartOf="@+id/dragHandle"
android:layout_below="@id/label"/>
+ <TextView
+ android:id="@+id/default_locale"
+ style="@style/LanguageCheckboxAndLabel"
+ android:layout_marginTop="-28dp"
+ android:paddingStart="56dp"
+ android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+ android:textColor="?android:textColorSecondary"
+ android:text="@string/desc_current_default_language"
+ android:layout_toStartOf="@+id/dragHandle"
+ android:layout_below="@id/label"/>
+
<ImageView
android:id="@+id/dragHandle"
android:layout_width="wrap_content"
diff --git a/res/layout/notification_history_app_layout.xml b/res/layout/notification_history_app_layout.xml
index 7d53b4d..143fff8 100644
--- a/res/layout/notification_history_app_layout.xml
+++ b/res/layout/notification_history_app_layout.xml
@@ -35,42 +35,36 @@
android:id="@+id/icon"
android:layout_width="24dp"
android:layout_height="24dp"
- android:layout_marginEnd="14dp"
android:scaleType="centerInside"
app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toStartOf="@id/text_start_guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/text_start_guideline"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- app:layout_constraintStart_toEndOf="@id/icon" />
-
<TextView
android:id="@+id/label"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:layout_marginStart="14dp"
android:ellipsize="end"
android:lines="1"
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification.Title"
+ android:textDirection="locale"
app:layout_constraintBottom_toTopOf="@id/count"
app:layout_constraintEnd_toStartOf="@id/expand_button_wrapper"
- app:layout_constraintStart_toEndOf="@id/text_start_guideline"
+ app:layout_constraintStart_toEndOf="@id/icon"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/count"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:layout_marginStart="14dp"
android:paddingTop="4dp"
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification"
android:textDirection="locale"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/expand_button_wrapper"
- app:layout_constraintStart_toEndOf="@id/text_start_guideline"
+ app:layout_constraintStart_toEndOf="@id/icon"
app:layout_constraintTop_toBottomOf="@id/label" />
<FrameLayout
diff --git a/res/layout/tare_homepage.xml b/res/layout/tare_homepage.xml
index 4cd649f..def8cb7 100644
--- a/res/layout/tare_homepage.xml
+++ b/res/layout/tare_homepage.xml
@@ -27,8 +27,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
- android:textOff="@string/tare_off"
- android:textOn="@string/tare_on"
+ android:textOff="@string/off"
+ android:textOn="@string/on"
android:showText="true"
android:background="?android:attr/colorBackground" />
<TextView
diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml
index 1e7ff8c..8ccc058 100644
--- a/res/values-el/arrays.xml
+++ b/res/values-el/arrays.xml
@@ -499,8 +499,8 @@
</string-array>
<string-array name="wifi_metered_entries">
<item msgid="3237321077949659241">"Αυτόματος εντοπισμός"</item>
- <item msgid="3779092145391320375">"Χρήση ως δικτύου με περιορισμούς"</item>
- <item msgid="2047166446768045816">"Χρήση ως δικτύου χωρίς περιορισμούς"</item>
+ <item msgid="3779092145391320375">"Δίκτυο με περιορισμούς"</item>
+ <item msgid="2047166446768045816">"Δίκτυο χωρίς περιορισμούς"</item>
</string-array>
<string-array name="wifi_privacy_entries">
<item msgid="3485945604919292489">"Χρήση τυχαίου MAC (προεπιλογή)"</item>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
index 909860f..16e1c76 100644
--- a/res/values-fr/arrays.xml
+++ b/res/values-fr/arrays.xml
@@ -499,8 +499,8 @@
</string-array>
<string-array name="wifi_metered_entries">
<item msgid="3237321077949659241">"Détecter automatiquement"</item>
- <item msgid="3779092145391320375">"Traiter comme facturé à l\'usage"</item>
- <item msgid="2047166446768045816">"Traiter comme sans compteur"</item>
+ <item msgid="3779092145391320375">"Traiter comme limitée"</item>
+ <item msgid="2047166446768045816">"Traiter comme illimitée"</item>
</string-array>
<string-array name="wifi_privacy_entries">
<item msgid="3485945604919292489">"Utiliser MAC aléatoire (par défaut)"</item>
diff --git a/res/values-hi/arrays.xml b/res/values-hi/arrays.xml
index 2b780b2..adecd62 100644
--- a/res/values-hi/arrays.xml
+++ b/res/values-hi/arrays.xml
@@ -574,7 +574,7 @@
<!-- no translation found for rtt_setting_mode:3 (7725394146877517088) -->
<string-array name="nfc_payment_favor">
<item msgid="9104058551372383947">"हमेशा"</item>
- <item msgid="5283665583617307336">"सिवाय तब, जब दूसरा पेमेंट ऐप्लिकेशन खुला हो"</item>
+ <item msgid="5283665583617307336">"दूसरा ऐप्लिकेशन खुला होने पर इसका इस्तेमाल नहीं किया जाएगा"</item>
</string-array>
<string-array name="nfc_payment_favor_values">
<item msgid="2373999996715432397">"0"</item>
diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml
index d0d6957..a19b6aa 100644
--- a/res/values-nl/arrays.xml
+++ b/res/values-nl/arrays.xml
@@ -498,7 +498,7 @@
<item msgid="9080166583718385565">"0"</item>
</string-array>
<string-array name="wifi_metered_entries">
- <item msgid="3237321077949659241">"Detecteer automatisch"</item>
+ <item msgid="3237321077949659241">"Automatisch detecteren"</item>
<item msgid="3779092145391320375">"Behandelen als wifi met datalimiet"</item>
<item msgid="2047166446768045816">"Behandelen als wifi zonder datalimiet"</item>
</string-array>
diff --git a/res/values-or/arrays.xml b/res/values-or/arrays.xml
index 6e240df..991f89f 100644
--- a/res/values-or/arrays.xml
+++ b/res/values-or/arrays.xml
@@ -467,7 +467,7 @@
<item msgid="5777152116210127847">"ଶ୍ରେଷ୍ଠ ଗତିବିଧି"</item>
<item msgid="1834030155560727324">"ଜରୁରୀ (ଫୋର୍ଗ୍ରାଉଣ୍ଡ)"</item>
<item msgid="8494424742994426350">"ଗୁରୁତ୍ଵପୁର୍ଣ୍ଣ (ପୃଷ୍ଠପଟ)"</item>
- <item msgid="5099332663422156149">"ବ୍ୟାକଅପ୍"</item>
+ <item msgid="5099332663422156149">"ବ୍ୟାକଅପ"</item>
<item msgid="7701089238529887617">"ଭାରୀ"</item>
<item msgid="3006466648960525485">"ସେବା (ଚାଲୁଛି)"</item>
<item msgid="2253476667031759713">"ସେବା (ରିଷ୍ଟାର୍ଟ ହେଉଛି)"</item>
@@ -503,7 +503,7 @@
<item msgid="2047166446768045816">"ମିଟର୍ ହୋଇନଥିବା ରୂପେ ବିବେଚନା କରନ୍ତୁ"</item>
</string-array>
<string-array name="wifi_privacy_entries">
- <item msgid="3485945604919292489">"ରେଣ୍ଡମାଇଜ୍ MAC ବ୍ୟବହାର କରନ୍ତୁ (ଡିଫଲ୍ଟ)"</item>
+ <item msgid="3485945604919292489">"ରେଣ୍ଡମାଇଜ୍ଡ MAC ବ୍ୟବହାର କରନ୍ତୁ (ଡିଫଲ୍ଟ)"</item>
<item msgid="741680937828608749">"MAC ଡିଭାଇସ ବ୍ୟବହାର କରନ୍ତୁ"</item>
</string-array>
<string-array name="wifi_hidden_entries">
@@ -520,7 +520,7 @@
<item msgid="8657797891533816070">"ଶବ୍ଦବହୁଳ"</item>
</string-array>
<string-array name="cdma_system_select_choices">
- <item msgid="1205665684426617345">"କେବଳ ହୋମ୍ ନେଟ୍ୱର୍କ"</item>
+ <item msgid="1205665684426617345">"କେବଳ ହୋମ"</item>
<item msgid="6691772120712000966">"ଅଟୋମେଟିକ"</item>
</string-array>
<string-array name="preferred_network_mode_choices">
diff --git a/res/values-pt-rPT/arrays.xml b/res/values-pt-rPT/arrays.xml
index 29bd3a9..5ba6ee1 100644
--- a/res/values-pt-rPT/arrays.xml
+++ b/res/values-pt-rPT/arrays.xml
@@ -503,8 +503,8 @@
<item msgid="2047166446768045816">"Tratar como acesso ilimitado"</item>
</string-array>
<string-array name="wifi_privacy_entries">
- <item msgid="3485945604919292489">"Utilizar MAC aleatório (predefinição)"</item>
- <item msgid="741680937828608749">"Utilizar MAC do dispositivo"</item>
+ <item msgid="3485945604919292489">"Usar MAC aleatório (predefinição)"</item>
+ <item msgid="741680937828608749">"Usar MAC do dispositivo"</item>
</string-array>
<string-array name="wifi_hidden_entries">
<item msgid="342232116597649254">"Não"</item>
diff --git a/res/values-ro/arrays.xml b/res/values-ro/arrays.xml
index 05a5108..0ec751f 100644
--- a/res/values-ro/arrays.xml
+++ b/res/values-ro/arrays.xml
@@ -101,7 +101,7 @@
<string-array name="eap_ocsp_type">
<item msgid="8568170800958331461">"Nu verificați"</item>
<item msgid="5703177653586269306">"Solicitați starea certificatelor"</item>
- <item msgid="326388247868439528">"Solicitați obligatoriu starea certificatelor"</item>
+ <item msgid="326388247868439528">"Solicită obligatoriu starea certificatelor"</item>
</string-array>
<string-array name="wifi_p2p_wps_setup">
<item msgid="1446717102923442720">"Buton WPS"</item>
@@ -216,7 +216,7 @@
<string-array name="app_install_location_entries">
<item msgid="3771157789865587832">"Stocare internă pe dispozitiv"</item>
<item msgid="5501345333507193420">"Card SD detașabil"</item>
- <item msgid="2362840341195111674">"Permiteți sistemului să decidă"</item>
+ <item msgid="2362840341195111674">"Permite sistemului să decidă"</item>
</string-array>
<string-array name="app_ops_categories">
<item msgid="528483497841471005">"Locație"</item>
@@ -308,13 +308,13 @@
<item msgid="8112680908829570200">"Locație"</item>
<item msgid="5019327268152480733">"Apelează un telefon"</item>
<item msgid="8001855901083066554">"Citiți mesaje SMS/MMS"</item>
- <item msgid="187744670643011148">"Scrieți mesaje SMS/MMS"</item>
+ <item msgid="187744670643011148">"Scrie mesaje SMS/MMS"</item>
<item msgid="3324078624274013835">"Primește mesaje SMS/MMS"</item>
<item msgid="1924065490920451511">"Primește mesaje SMS/MMS"</item>
<item msgid="1239934115787777477">"Primește mesaje SMS/MMS"</item>
<item msgid="1030342664910454057">"Primește mesaje SMS/MMS"</item>
<item msgid="9189359977063200554">"Trimite mesaje SMS/MMS"</item>
- <item msgid="6954817837534799424">"Citiți mesaje SMS/MMS"</item>
+ <item msgid="6954817837534799424">"Citește mesaje SMS/MMS"</item>
<item msgid="7921014514153395846">"Scrieți mesaje SMS/MMS"</item>
<item msgid="8997371825401751421">"Modifică setările"</item>
<item msgid="7005755175240764443">"Desenează deasupra"</item>
@@ -336,8 +336,8 @@
<item msgid="1148968792599973150">"Păstrare în activitate"</item>
<item msgid="8482874682804856549">"Locație"</item>
<item msgid="5186169827582545242">"Locație"</item>
- <item msgid="6122293931012635638">"Obțineți statistici de utilizare"</item>
- <item msgid="2526677383312751932">"Activați/dezactivați microfonul"</item>
+ <item msgid="6122293931012635638">"Obține statistici de utilizare"</item>
+ <item msgid="2526677383312751932">"Activezi/dezactivezi microfonul"</item>
<item msgid="4000577305179914546">"Afișează semnalarea"</item>
<item msgid="8660207174515570558">"Proiectează conținutul media"</item>
<item msgid="3904996949561946108">"Activează serviciul VPN"</item>
@@ -446,7 +446,7 @@
</string-array>
<string-array name="security_settings_premium_sms_values">
<item msgid="3985605994234635072">"Întreabă"</item>
- <item msgid="2358187544264718285">"Nu permiteți niciodată"</item>
+ <item msgid="2358187544264718285">"Nu permite niciodată"</item>
<item msgid="7043782324123900484">"Permiteți întotdeauna"</item>
</string-array>
<string-array name="ram_states">
@@ -516,7 +516,7 @@
</string-array>
<string-array name="autofill_logging_level_entries">
<item msgid="2263571982739726576">"Dezactivat"</item>
- <item msgid="4295717421282345505">"Remediați erorile"</item>
+ <item msgid="4295717421282345505">"Remediază erorile"</item>
<item msgid="8657797891533816070">"Detaliat"</item>
</string-array>
<string-array name="cdma_system_select_choices">
diff --git a/res/values-th/arrays.xml b/res/values-th/arrays.xml
index b7d1e9f..34c9bd2 100644
--- a/res/values-th/arrays.xml
+++ b/res/values-th/arrays.xml
@@ -500,7 +500,7 @@
<string-array name="wifi_metered_entries">
<item msgid="3237321077949659241">"ตรวจหาโดยอัตโนมัติ"</item>
<item msgid="3779092145391320375">"ถือว่ามีการจำกัดปริมาณอินเทอร์เน็ต"</item>
- <item msgid="2047166446768045816">"ถือว่าไม่มีการวัดปริมาณอินเทอร์เน็ต"</item>
+ <item msgid="2047166446768045816">"ถือว่าไม่มีการจำกัดปริมาณอินเทอร์เน็ต"</item>
</string-array>
<string-array name="wifi_privacy_entries">
<item msgid="3485945604919292489">"ใช้ MAC แบบสุ่ม (ค่าเริ่มต้น)"</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2aae74a..c0348ee 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -26,6 +26,10 @@
<string name="deny">Deny</string>
<!-- Used in confirmation dialogs as the action that the user will tap to turn on the feature. [CHAR LIMIT=40]-->
<string name="confirmation_turn_on">Turn on</string>
+ <!-- State enabled. [CHAR LIMIT=NONE] -->
+ <string name="on">On</string>
+ <!-- State is disabled. [CHAR LIMIT=NONE] -->
+ <string name="off">Off</string>
<!-- Device Info screen. Used for a status item's value when the proper value is not known -->
<string name="device_info_default">Unknown</string>
@@ -401,6 +405,12 @@
<!-- Title for the locale picker activity. [CHAR LIMIT=30]-->
<string name="language_picker_title">Languages</string>
+ <!-- Title for category of the locale picker . [CHAR LIMIT=50]-->
+ <string name="language_picker_category_title">Preferred language order</string>
+
+ <!-- Description for indication of current system default language. [CHAR LIMIT=50]-->
+ <string name="desc_current_default_language">System language</string>
+
<!-- Menu item in the locale menu. Will remove the selected locales. [CHAR LIMIT=30] -->
<string name="locale_remove_menu">Remove</string>
@@ -414,13 +424,13 @@
<string name="locale_picker_category_title">Preferred Language</string>
<!-- Title for the Apps' locale menu entry [CHAR LIMIT=50]-->
- <string name="app_locales_picker_menu_title">App Languages</string>
+ <string name="app_locales_picker_menu_title">App languages</string>
<!-- Summary for the app's locale picker activity. [CHAR LIMIT=50]-->
<string name="app_locale_picker_summary">Set the language for each app</string>
<!-- Title for the App's locale picker activity. [CHAR LIMIT=50]-->
- <string name="app_locale_picker_title">App Language</string>
+ <string name="app_locale_picker_title">App language</string>
<!-- Category for the suggested app's locales. [CHAR LIMIT=50]-->
<string name="suggested_app_locales_title">Suggested languages</string>
@@ -443,6 +453,18 @@
<!-- Description for introduction of the locale selection supported of app list [CHAR LIMIT=NONE]-->
<string name="desc_app_locale_selection_supported">Only apps that support language selection are shown here.</string>
+ <!-- Description for the introduction to language picker activity. [CHAR LIMIT=NONE]-->
+ <string name="desc_introduction_of_language_picker">Your system, apps, and websites use the first supported language from your preferred languages.</string>
+
+ <!-- Description for the notice of language picker. [CHAR LIMIT=NONE]-->
+ <string name="desc_notice_of_language_picker">To select a language for each app, go to app language settings.</string>
+
+ <!-- Title for locale helper page [CHAR LIMIT=NONE] -->
+ <string name="desc_locale_helper_footer_general">Learn more about languages</string>
+
+ <!-- Link for Locale helper page. [CHAR LIMIT=NONE]-->
+ <string name="link_locale_picker_footer_learn_more" translatable="false">https://support.google.com/android?p=per_language_app_settings</string>
+
<!-- The title of the confirmation dialog shown when the user selects one / several languages and tries to remove them [CHAR LIMIT=60] -->
<plurals name="dlg_remove_locales_title">
<item quantity="one">Remove selected language?</item>
@@ -458,7 +480,7 @@
<string name="dlg_remove_locales_error_message">Keep at least one preferred language</string>
<!-- This text shows in the language picker when the system is not translated into that languages [CHAR LIMIT=80] -->
- <string name="locale_not_translated">May not be available in some apps</string>
+ <string name="locale_not_translated">Not available as system language</string>
<!-- Label for an accessibility action that moves a language up in the ordered language list [CHAR LIMIT=20] -->
<string name="action_drag_label_move_up">Move up</string>
@@ -641,8 +663,6 @@
<string name="location_settings_title">Location</string>
<!-- Used in the location settings to control turning on/off the feature entirely [CHAR LIMIT=60] -->
<string name="location_settings_primary_switch_title">Use location</string>
- <!-- Summary for Location settings when location is off [CHAR LIMIT=NONE] -->
- <string name="location_settings_summary_location_off">Off</string>
<!-- Summary for Location settings when location is on, explaining how many apps have location permission [CHAR LIMIT=NONE]-->
<plurals name="location_settings_summary_location_on">
<item quantity="one">On - <xliff:g id="count">%1$d</xliff:g> app has access to location</item>
@@ -1064,11 +1084,11 @@
<!-- Title shown in fingerprint enrollment dialog once enrollment is completed [CHAR LIMIT=29] -->
<string name="security_settings_fingerprint_enroll_finish_title">Fingerprint added</string>
<!-- Message shown in fingerprint enrollment dialog once enrollment is completed (tablet) [CHAR LIMIT=NONE] -->
- <string name="security_settings_fingerprint_enroll_finish_v2_message" product="tablet">Fingerprint Unlock improves the more you use it to unlock your tablet or verify it\u2019s you in apps</string>
+ <string name="security_settings_fingerprint_enroll_finish_v2_message" product="tablet">Now you can use your fingerprint to unlock your tablet or verify it\u2019s you, like when you sign in to apps</string>
<!-- Message shown in fingerprint enrollment dialog once enrollment is completed (device) [CHAR LIMIT=NONE] -->
- <string name="security_settings_fingerprint_enroll_finish_v2_message" product="device">Fingerprint Unlock improves the more you use it to unlock your device or verify it\u2019s you in apps</string>
+ <string name="security_settings_fingerprint_enroll_finish_v2_message" product="device">Now you can use your fingerprint to unlock your device or verify it\u2019s you, like when you sign in to apps</string>
<!-- Message shown in fingerprint enrollment dialog once enrollment is completed (default) [CHAR LIMIT=NONE] -->
- <string name="security_settings_fingerprint_enroll_finish_v2_message" product="default">Fingerprint Unlock improves the more you use it to unlock your phone or verify it\u2019s you in apps</string>
+ <string name="security_settings_fingerprint_enroll_finish_v2_message" product="default">Now you can use your fingerprint to unlock your phone or verify it\u2019s you, like when you sign in to apps</string>
<!-- Button text to skip enrollment of fingerprint [CHAR LIMIT=40] -->
<string name="security_settings_fingerprint_enroll_enrolling_skip">Do it later</string>
<!-- Accessibility message for fingerprint enrollment asking the user to place the tip of their finger on the fingerprint sensor [CHAR LIMIT=NONE] -->
@@ -1870,6 +1890,21 @@
<!-- Nfc developer settings: The description of the setting. -->
<string name="nfc_stack_debuglog_summary">Increase NFC stack logging level</string>
+ <!-- Nfc developer settings: The title of the setting to enable nfc verbose vendor log. [CHAR LIMIT=60] -->
+ <string name="nfc_verbose_vendor_log_title">NFC verbose vendor debug log</string>
+ <!-- Nfc developer settings: The description of the setting to enable nfc verbose vendor log. [CHAR_LIMIT=NONE] -->
+ <string name="nfc_verbose_vendor_log_summary">Include additional device-specific vendor logs in bugreports, which may contain private information. </string>
+ <!-- Nfc developer settings: The title of the setting to enable full nfc snoop log. [CHAR LIMIT=60] -->
+ <string name="nfc_snoop_log_title">NFC NCI unfiltered snoop log</string>
+ <!-- Nfc developer settings: The description of the setting to enable full nfc snoop log. [CHAR_LIMIT=NONE] -->
+ <string name="nfc_snoop_log_summary">Capture detail NFC packets, which may contain private information. </string>
+ <!-- Nfc developer settings: The title of the popup dialog. [CHAR_LIMIT=60] -->
+ <string name="nfc_reboot_dialog_title">Restart Device?</string>
+ <!-- Nfc developer settings: The content of the popup dialog. [CHAR_LIMIT=NONE] -->
+ <string name="nfc_reboot_dialog_message">Detail NFC logging is intended for development purposes only. Additional NFC data is included in bug reports, which may contain private information. Restart your device to change this setting. </string>
+ <!-- Nfc developer settings: The confirm button of the popup dialog. [CHAR_LIMIT=60] -->
+ <string name="nfc_reboot_dialog_confirm">Restart</string>
+
<!-- Wifi Display settings. The title of the screen. [CHAR LIMIT=40] -->
<string name="wifi_display_settings_title">Cast</string>
<!-- Wifi Display settings. The keywords of the setting. [CHAR LIMIT=NONE] -->
@@ -1974,8 +2009,6 @@
<string name="android_beam_settings_title">Android Beam</string>
<!-- Used to describe the on state of the Android Beam feature [CHAR LIMIT=NONE] -->
<string name="android_beam_on_summary">Ready to transmit app content via NFC</string>
- <!-- Used to describe the off state of the Android Beam feature [CHAR LIMIT=NONE] -->
- <string name="android_beam_off_summary">Off</string>
<!-- Used to describe the enabled state of the Android Beam feature when NFC, which it relies on, is turned off [CHAR LIMIT=NONE] -->
<string name="nfc_disabled_summary">Unavailable because NFC is turned off</string>
<!-- Used in the Android Beam sharing preferences screen. This phrase is a trademark. [CHAR LIMIT=32] -->
@@ -2712,8 +2745,6 @@
<string name="emergency_address_summary">Used as your location when you make an emergency call over Wi\u2011Fi</string>
<!-- Message of private dns that provides a help link. [CHAR LIMIT=NONE] -->
<string name="private_dns_help_message"><annotation id="url">Learn more</annotation> about Private DNS features</string>
- <!-- Message to display when private dns is on. [CHAR LIMIT=10] -->
- <string name="private_dns_mode_on">On</string>
<!-- Message to display when setting wifi calling are not editable [CHAR LIMIT=NONE] -->
<string name="wifi_calling_pref_managed_by_carrier">Setting managed by carrier</string>
@@ -2845,10 +2876,6 @@
<string name="display_settings">Display</string>
<!-- Sound & display settings screen, accelerometer-based rotation check box label -->
<string name="accelerometer_title">Auto-rotate screen</string>
- <!-- Sound & display settings screen, locked rotation check box label [CHAR LIMIT=30] -->
- <string name="auto_rotate_option_off">Off</string>
- <!-- Sound & display settings screen, accelerometer-based rotation check box label [CHAR LIMIT=30] -->
- <string name="auto_rotate_option_on">On</string>
<!-- Sound & display settings screen, face-based rotation check box label [CHAR LIMIT=30] -->
<string name="auto_rotate_option_face_based">On - Face-based</string>
<!-- SmartAutoRotatePreferenceFragment settings screen, face-based rotation switch label [CHAR LIMIT=30] -->
@@ -2906,10 +2933,6 @@
<string name="auto_brightness_title">Adaptive brightness</string>
<!-- Summary about the feature adaptive brightness [CHAR LIMIT=NONE] -->
<string name="auto_brightness_summary">Screen brightness adjusts to environment</string>
- <!-- Setting option summary when adaptive brightness is on [CHAR LIMIT=NONE] -->
- <string name="auto_brightness_summary_on">On</string>
- <!-- Setting option summary when adaptive brightness is off [CHAR LIMIT=NONE] -->
- <string name="auto_brightness_summary_off">Off</string>
<!-- Sound & display settings screen, setting option summary when preferred adaptive brightness is very low [CHAR LIMIT=100] -->
<string name="auto_brightness_summary_very_low">Preferred brightness is very low</string>
<!-- Sound & display settings screen, setting option summary when preferred adaptive brightness is low [CHAR LIMIT=100] -->
@@ -2920,8 +2943,6 @@
<string name="auto_brightness_summary_high">Preferred brightness is high</string>
<!-- Sound & display settings screen, setting option summary when preferred adaptive brightness is very high [CHAR LIMIT=100] -->
<string name="auto_brightness_summary_very_high">Preferred brightness is very high</string>
- <!-- Adaptive brightness settings screen, setting option to disable adaptive brightness [CHAR LIMIT=100] -->
- <string name="auto_brightness_off_title">Off</string>
<!-- Adaptive brightness settings screen, setting option to enable adaptive brightness when user prefers very low brightness [CHAR LIMIT=100] -->
<string name="auto_brightness_very_low_title">Very low</string>
<!-- Adaptive brightness settings screen, setting option to enable adaptive brightness when user prefers low brightness [CHAR LIMIT=100] -->
@@ -2960,8 +2981,6 @@
<string name="adaptive_sleep_title">Screen attention</string>
<!-- Setting option summary when adaptive sleep is on [CHAR LIMIT=NONE] -->
<string name="adaptive_sleep_summary_on">On / Screen won\u2019t turn off if you\u2019re looking at it</string>
- <!-- Setting option summary when adaptive sleep is off [CHAR LIMIT=NONE] -->
- <string name="adaptive_sleep_summary_off">Off</string>
<!-- adaptive_sleep settings screen, title about the required permission is missing [CHAR LIMIT=NONE]-->
<string name="adaptive_sleep_title_no_permission">Camera access needed</string>
<!-- adaptive_sleep settings screen, subtitle when permission is missing [CHAR LIMIT=NONE]-->
@@ -3131,8 +3150,6 @@
<string name="screensaver_settings_summary_dock">While docked</string>
<!-- Display settings screen, summary fragment for screen saver options, activated never [CHAR LIMIT=35] -->
<string name="screensaver_settings_summary_never">Never</string>
- <!-- Display settings screen, summary for screen saver options, screen saver is turned off [CHAR LIMIT=20] -->
- <string name="screensaver_settings_summary_off">Off</string>
<!-- Dream settings screen, action label, when to dream [CHAR LIMIT=20] -->
<string name="screensaver_settings_when_to_dream">When to start</string>
<!-- Dream settings screen, action label, current selected screen saver [CHAR LIMIT=35] -->
@@ -3168,8 +3185,6 @@
<string name="sim_lock_settings">SIM card lock settings</string>
<!-- Security & screen lock settings screen, SIM card lock setting option name [CHAR LIMIT=40] -->
<string name="sim_lock_settings_category">SIM card lock</string>
- <!-- Security & screen lock settings screen, SIM card lock setting summary when off [CHAR LIMIT=NONE] -->
- <string name="sim_lock_settings_summary_off">Off</string>
<!-- Security & screen lock settings screen, SIM card lock setting summary when on [CHAR LIMIT=NONE] -->
<string name="sim_lock_settings_summary_on">Locked</string>
<!-- Security & location settings screen, section heading for settings related to sim card locking [CHAR LIMIT=40] -->
@@ -3334,10 +3349,6 @@
<string name="status_prl_version">PRL version</string>
<!-- About phone screen, title for MEID for multi-sim devices -->
<string name="meid_multi_sim">MEID (sim slot %1$d)</string>
- <!-- The status text when (Wi-Fi or Bluetooth) scanning is on. [CHAR LIMIT=100] -->
- <string name="scanning_status_text_on">On</string>
- <!-- The status text when (Wi-Fi or Bluetooth) scanning is off. [CHAR LIMIT=100] -->
- <string name="scanning_status_text_off">Off</string>
<!-- The status text when both Wi-Fi scanning and Bluetooth scanning are on. [CHAR LIMIT=100] -->
<string name="scanning_status_text_wifi_on_ble_on">Both Wi\u2011Fi and Bluetooth scanning are on</string>
<!-- The status text when Wi-Fi scanning is on and Bluetooth scanning are off. [CHAR LIMIT=100] -->
@@ -5506,10 +5517,6 @@
<string name="accessibility_vibration_settings_title">Vibration & haptics</string>
<!-- Summary for preference screen for configuring vibrations. [CHAR LIMIT=NONE] -->
<string name="accessibility_vibration_settings_summary">Control the vibration strength for different usages</string>
- <!-- "Vibration & haptics" preference's state when enabled. This text is shown next to the "Vibration & haptics" preference title. [CHAR LIMIT=NONE] -->
- <string name="accessibility_vibration_settings_state_on">On</string>
- <!-- "Vibration & haptics" preference's state when disabled. This text is shown next to the "Vibration & haptics" preference title. [CHAR LIMIT=NONE] -->
- <string name="accessibility_vibration_settings_state_off">Off</string>
<!-- Summary for vibration preference shown when it is disabled because the device is in silent mode. [CHAR LIMIT=NONE] -->
<string name="accessibility_vibration_setting_disabled_for_silent_mode_summary">Setting disabled because device is set to silent</string>
<!-- Title for the category of preferences to configure device vibrations related to calls. [CHAR LIMIT=NONE] -->
@@ -5636,10 +5643,6 @@
<string name="accessibility_summary_shortcut_enabled">Shortcut on</string>
<!-- Preference's shortcut when disabled. [CHAR LIMIT=NONE] -->
<string name="accessibility_summary_shortcut_disabled">Off</string>
- <!-- Preference's state when enabled. [CHAR LIMIT=NONE] -->
- <string name="accessibility_summary_state_enabled">On</string>
- <!-- Preference's state when disabled. [CHAR LIMIT=NONE] -->
- <string name="accessibility_summary_state_disabled">Off</string>
<!-- Accessibility service's preference's state when enabled but not running (like maybe it crashed). -->
<string name="accessibility_summary_state_stopped">Not working. Tap for info.</string>
<!-- Accessibility service's description when enabled but not running (like maybe it crashed). -->
@@ -5731,11 +5734,6 @@
<!-- Title for accessibility menu item to launch a settings activity. [CHAR LIMIT=15] -->
<string name="accessibility_menu_item_settings">Settings</string>
- <!-- Summary for the enabled state of an accessibility feature. [CHAR LIMIT=10] -->
- <string name="accessibility_feature_state_on">On</string>
- <!-- Summary for the disabled state of an accessibility feature. [CHAR LIMIT=10] -->
- <string name="accessibility_feature_state_off">Off</string>
-
<!-- Title for the preference category containing the video caption preview. [CHAR LIMIT=35] -->
<string name="captioning_preview_title">Preview</string>
<!-- Title for the preference catgeory containing standard video caption options. [CHAR LIMIT=35] -->
@@ -5932,9 +5930,6 @@
<string name="print_settings">Printing</string>
<!-- Print setting summary in settings screen [CHAR LIMIT=50] -->
- <string name="print_settings_summary_no_service">Off</string>
-
- <!-- Print setting summary in settings screen [CHAR LIMIT=50] -->
<plurals name="print_settings_summary">
<item quantity="one">1 print service on</item>
<item quantity="other"><xliff:g id="count">%1$d</xliff:g> print services on</item>
@@ -5961,11 +5956,6 @@
<!-- Title for print menu item to launch the add printers activity. [CHAR LIMIT=25] -->
<string name="print_menu_item_add_printers">Add printers</string>
- <!-- Summary for the enabled state of a print feature. [CHAR LIMIT=10] -->
- <string name="print_feature_state_on">On</string>
- <!-- Summary for the disabled state of a print feature. [CHAR LIMIT=10] -->
- <string name="print_feature_state_off">Off</string>
-
<!-- Title of the action bar button to got to Play Store to download a print service. [CHAR LIMIT=25] -->
<string name="print_menu_item_add_service">Add service</string>
@@ -6622,10 +6612,6 @@
<string name="adaptive_connectivity_title">Adaptive connectivity</string>
<!-- Summary of Adaptive connectivity preference. [CHAR LIMIT=NONE] -->
<string name="adaptive_connectivity_summary">Extends battery life and improves device performance by automatically managing your network connections</string>
- <!-- Switch on text of Adaptive connectivity preference. [CHAR LIMIT=NONE]-->
- <string name="adaptive_connectivity_switch_on">On</string>
- <!-- Switch off text of Adaptive connectivity preference. [CHAR LIMIT=NONE]-->
- <string name="adaptive_connectivity_switch_off">Off</string>
<!-- Title of preference group for credential storage settings [CHAR LIMIT=30] -->
<string name="credentials_title">Credential storage</string>
@@ -6718,10 +6704,6 @@
<!-- Backup and reset Settings screen --><skip />
<!-- Backup and reset settings menu and activity title -->
<string name="privacy_settings_title">Backup</string>
- <!-- Summary for the Backup settings when it is turned on. -->
- <string name="backup_summary_state_on">On</string>
- <!-- Summary for the Backup settings when it is turned off. -->
- <string name="backup_summary_state_off">Off</string>
<!-- Backup section title -->
<string name="backup_section_title">Backup & restore</string>
<!-- Personal data section title -->
@@ -8311,9 +8293,6 @@
<!-- Sound: Summary for the spatializer effect. [CHAR LIMIT=NONE]-->
<string name="spatial_audio_text">Audio from compatible media becomes more immersive</string>
- <!-- Sound: Summary for the Spatial audio setting when it is off. [CHAR LIMIT=NONE]-->
- <string name="spatial_summary_off">Off</string>
-
<!-- Sound: Summary for the Spatial audio setting when it is on with one output device enabled. [CHAR LIMIT=NONE]-->
<string name="spatial_summary_on_one">On / <xliff:g id="output device" example="Phone speaker">%1$s</xliff:g></string>
@@ -8506,9 +8485,6 @@
<!-- Sound settings screen, summary format of do not disturb when on with extra info. [CHAR LIMIT=NONE] -->
<string name="zen_mode_sound_summary_on_with_info">On / <xliff:g name="dnd_summary" example="No sound except alarms and media">%1$s</xliff:g></string>
- <!-- Sound settings screen, summary format of do not disturb when on with no extra information. [CHAR LIMIT=NONE] -->
- <string name="zen_mode_sound_summary_on">On</string>
-
<!-- Do not disturb: Summary for zen mode duration setting indicating user will be prompted to set dnd duration whenever dnd is manually toggled on [CHAR LIMIT=NONE]-->
<string name="zen_mode_duration_summary_always_prompt">Ask every time</string>
@@ -9411,12 +9387,6 @@
<item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> categories deleted</item>
</plurals>
- <!-- [CHAR LIMIT=NONE] App notification settings: notifications enabled-->
- <string name="notification_toggle_on">On</string>
-
- <!-- [CHAR LIMIT=NONE] App notification settings: notifications disabled-->
- <string name="notification_toggle_off">Off</string>
-
<!-- [CHAR LIMIT=NONE] App notification settings: Block option title -->
<string name="app_notification_block_title">Block all</string>
@@ -9898,19 +9868,6 @@
<!-- PIN entry dialog title for entering the administrator PIN [CHAR LIMIT=none] -->
<string name="restr_pin_enter_admin_pin">Enter admin PIN</string>
- <!-- Switch On/Off -->
- <string name="switch_on_text">On</string>
- <string name="switch_off_text">Off</string>
-
- <!-- Switch text for nfc feature being on [CHAR LIMIT=NONE] -->
- <string name="nfc_setting_on">On</string>
- <!-- Switch text for nfc feature being off [CHAR LIMIT=NONE] -->
- <string name="nfc_setting_off">Off</string>
-
- <!-- The subtext when screen pinning feature is enabled. [CHAR LIMIT=28] -->
- <string name="screen_pinning_switch_on_text">On</string>
- <!-- The subtext when screen pinning feature is disabled. [CHAR LIMIT=28] -->
- <string name="screen_pinning_switch_off_text">Off</string>
<!-- [CHAR LIMIT=28] Screen pinning title -->
<string name="screen_pinning_title">App pinning</string>
<!-- [CHAR LIMIT=none] Screen pinning introduction -->
@@ -10109,11 +10066,7 @@
<!-- Label for notification settings for an specific app [CHAR LIMIT=40] -->
<string name="notifications_label">Notifications</string>
<!-- App notification summary with notifications enabled [CHAR LIMIT=40] -->
- <string name="notifications_enabled">On</string>
- <!-- App notification summary with notifications enabled [CHAR LIMIT=40] -->
<string name="notifications_enabled_with_info"><xliff:g id="notifications_sent" example="~6 per week">%1$s</xliff:g> / <xliff:g id="notifications_categories_off" example="3 categories turned off">%2$s</xliff:g> </string>
- <!-- Label for showing apps with blocked notifications in list [CHAR LIMIT=30] -->
- <string name="notifications_disabled">Off</string>
<!-- Label for showing apps with some blocked notifications in list [CHAR LIMIT=30] -->
<string name="notifications_partly_blocked"><xliff:g id="count" example="1">%1$d</xliff:g> of <xliff:g id="count" example="10">%2$d</xliff:g> categories turned off</string>
<!-- App notification summary with notifications silenced [CHAR LIMIT=40] -->
@@ -11207,12 +11160,6 @@
<!-- Description of message shown when app is blocklisted for background data access [CHAR LIMIT=NONE] -->
<string name="restrict_background_blocklisted">Background data is turned off</string>
- <!-- Summary for the Data Saver feature being on [CHAR LIMIT=NONE] -->
- <string name="data_saver_on">On</string>
-
- <!-- Summary for the Data Saver feature being off [CHAR LIMIT=NONE] -->
- <string name="data_saver_off">Off</string>
-
<!-- Switch label to enable the Data Saver feature [CHAR LIMIT=NONE] -->
<string name="data_saver_switch_title">Use Data Saver</string>
@@ -11246,15 +11193,9 @@
<!-- Summary for suggestion adding more fingerprints [CHAR LIMIT=55] -->
<string name="suggestion_additional_fingerprints_summary">Unlock with a different finger</string>
- <!-- Summary of battery saver when on [CHAR LIMIT=NONE] -->
- <string name="battery_saver_on_summary">On</string>
-
<!-- Summary of battery saver when it is off and scheduled [CHAR LIMIT=NONE] -->
<string name="battery_saver_off_scheduled_summary">Will turn on at <xliff:g id="battery_percentage" example="15%">%1$s</xliff:g></string>
- <!-- Summary of battery saver when it is off and scheduled [CHAR LIMIT=NONE] -->
- <string name="battery_saver_off_summary">Off</string>
-
<!-- Battery saver: Label for button that will turn on battery saver. [CHAR LIMIT=30] -->
<string name="battery_saver_button_turn_on">Turn on now</string>
@@ -11409,9 +11350,6 @@
<!-- Title of screen controlling which apps have access to send premium SMS messages [CHAR LIMIT=60] -->
<string name="premium_sms_access">Premium SMS access</string>
- <!-- Summary for Bluetooth when disabled. [CHAR LIMIT=NONE] -->
- <string name="bluetooth_disabled">Off</string>
-
<!-- Summary for Bluetooth when connected to one device. [CHAR LIMIT=NONE] -->
<string name="bluetooth_connected_summary">Connected to <xliff:g name="device">%1$s</xliff:g></string>
@@ -11736,10 +11674,6 @@
<!-- Title text for the assist gesture [CHAR LIMIT=60] DO NOT TRANSLATE -->
<string name="assist_gesture_title" translatable="false">Assist gesture</string>
- <!-- Switch text for each gesture setting state -->
- <string name="gesture_setting_on">On</string>
- <string name="gesture_setting_off">Off</string>
-
<!-- setting enable OEM unlock Checkbox's summary to explain this Checkbox is disabled because the bootloader has been unlocked [CHAR_LIMIT=60] -->
<string name="oem_unlock_enable_disabled_summary_bootloader_unlocked">Bootloader is already unlocked</string>
<!-- setting enable OEM unlock Checkbox's summary to explain this Checkbox is disabled because there is no connectivity. [CHAR_LIMIT=60] -->
@@ -12579,9 +12513,6 @@
<!-- Label for the on position of a switch on the mobile network details page which allows
disabling/enabling a SIM. The SIM is enabled in this state. [CHAR LIMIT=40] -->
<string name="mobile_network_use_sim_on">Use SIM</string>
- <!-- Label for the off position of a switch on the mobile network details page which allows
- disabling/enabling a SIM. The SIM is disabled in this state. [CHAR LIMIT=40] -->
- <string name="mobile_network_use_sim_off">Off</string>
<!-- Text shown in an information footer on the SIM details page for a physical SIM notifying
the user that the way to disable this SIM is to physically remove it. This is in contrast
to eSIM's, which can disabled using an on/off toggle switch. [CHAR LIMIT=NONE] -->
@@ -13181,11 +13112,6 @@
<!-- Summary for see all preference when bluetooth is disable [CHAR LIMIT=none]-->
<string name="connected_device_see_all_summary">Bluetooth will turn on</string>
- <!-- Switch text for bluetooth feature being on [CHAR LIMIT=NONE] -->
- <string name="bluetooth_setting_on">On</string>
- <!-- Switch text for bluetooth feature being off [CHAR LIMIT=NONE] -->
- <string name="bluetooth_setting_off">Off</string>
-
<!-- Provider Model: Internet controls settings screen, item title to go into the networks settings -->
<string name="provider_internet_settings">Internet</string>
<!-- Provider Model: SIMs controls settings screen, item title to go into the SIMs settings -->
@@ -13477,10 +13403,6 @@
<!-- TARE settings title in developer options; "TARE" is the name of the feature and cannot be
translated. [CHAR LIMIT=40] -->
<string name="tare_settings">TARE Settings</string>
- <!-- Summary for the TARE feature being on (ie. enabled) [CHAR LIMIT=NONE] -->
- <string name="tare_on">On</string>
- <!-- Summary for the TARE feature being off (ie. disabled) [CHAR LIMIT=NONE] -->
- <string name="tare_off">Off</string>
<!-- Allows user to revert the TARE settings to their default values [CHAR LIMIT=40] -->
<string name="tare_revert">Revert to Default Settings</string>
<!-- Allows user to view AlarmManager policy factors. Alarm in this context is referring to the
diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml
index 19c1209..a0640f5 100644
--- a/res/xml/development_settings.xml
+++ b/res/xml/development_settings.xml
@@ -402,6 +402,16 @@
android:title="@string/nfc_stack_debuglog_title"
android:summary="@string/nfc_stack_debuglog_summary" />
+ <SwitchPreference
+ android:key="nfc_verbose_vendor_log"
+ android:title="@string/nfc_verbose_vendor_log_title"
+ android:summary="@string/nfc_verbose_vendor_log_summary" />
+
+ <SwitchPreference
+ android:key="nfc_snoop_log"
+ android:title="@string/nfc_snoop_log_title"
+ android:summary="@string/nfc_snoop_log_summary"/>
+
</PreferenceCategory>
<PreferenceCategory
diff --git a/res/xml/languages.xml b/res/xml/languages.xml
new file mode 100644
index 0000000..0f45540
--- /dev/null
+++ b/res/xml/languages.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2022 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:title="@string/language_settings">
+
+ <com.android.settingslib.widget.TopIntroPreference
+ android:title="@string/desc_introduction_of_language_picker"
+ android:persistent="false"
+ android:selectable="false"/>
+
+ <PreferenceCategory
+ android:title="@string/language_picker_category_title">
+ <com.android.settingslib.widget.LayoutPreference
+ android:key="languages_picker"
+ android:layout="@layout/locale_order_list" />
+ </PreferenceCategory>
+
+ <com.android.settingslib.widget.FooterPreference
+ android:key="footer_languages_picker"
+ android:title="@string/desc_notice_of_language_picker"
+ android:persistent="false"
+ android:selectable="false"
+ settings:controller="com.android.settings.localepicker.LocaleHelperPreferenceController"/>
+
+</PreferenceScreen>
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index ef7c2ba..1008183 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -251,8 +251,8 @@
: context.getText(R.string.accessibility_summary_shortcut_disabled);
} else {
serviceState = serviceEnabled
- ? context.getText(R.string.accessibility_summary_state_enabled)
- : context.getText(R.string.accessibility_summary_state_disabled);
+ ? context.getText(R.string.on)
+ : context.getText(R.string.off);
}
final CharSequence serviceSummary = info.loadSummary(context.getPackageManager());
diff --git a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
index 17334b1..43292d7 100644
--- a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
@@ -400,7 +400,7 @@
}
if (!mShortcutPreference.isChecked()) {
- return context.getText(R.string.switch_off_text);
+ return context.getText(R.string.off);
}
final int shortcutTypes = PreferredShortcuts.retrieveUserShortcutType(context,
diff --git a/src/com/android/settings/accessibility/AccessibilityUtil.java b/src/com/android/settings/accessibility/AccessibilityUtil.java
index e2e2933..bfb1806 100644
--- a/src/com/android/settings/accessibility/AccessibilityUtil.java
+++ b/src/com/android/settings/accessibility/AccessibilityUtil.java
@@ -130,8 +130,7 @@
static CharSequence getSummary(Context context, String settingsSecureKey) {
final boolean enabled = Settings.Secure.getInt(context.getContentResolver(),
settingsSecureKey, State.OFF) == State.ON;
- final int resId = enabled ? R.string.accessibility_feature_state_on
- : R.string.accessibility_feature_state_off;
+ final int resId = enabled ? R.string.on : R.string.off;
return context.getResources().getText(resId);
}
diff --git a/src/com/android/settings/accessibility/AutoclickPreferenceController.java b/src/com/android/settings/accessibility/AutoclickPreferenceController.java
index b354aa6..f4df774 100644
--- a/src/com/android/settings/accessibility/AutoclickPreferenceController.java
+++ b/src/com/android/settings/accessibility/AutoclickPreferenceController.java
@@ -39,7 +39,7 @@
final boolean enabled = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, 0) == 1;
if (!enabled) {
- return mContext.getResources().getText(R.string.accessibility_feature_state_off);
+ return mContext.getResources().getText(R.string.off);
}
final int delay = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_AUTOCLICK_DELAY,
diff --git a/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java b/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java
index 01ee249..793ab5a 100644
--- a/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java
+++ b/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java
@@ -88,8 +88,7 @@
resId = R.string.accessibility_screen_magnification_short_summary;
} else {
final boolean enabled = isChecked();
- resId = (enabled ? R.string.accessibility_feature_state_on :
- R.string.accessibility_feature_state_off);
+ resId = (enabled ? R.string.on : R.string.off);
}
return mContext.getString(resId);
}
diff --git a/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java b/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java
index 98855f7..02fdf9e 100644
--- a/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java
+++ b/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java
@@ -94,8 +94,7 @@
resId = R.string.accessibility_screen_magnification_navbar_short_summary;
} else {
final boolean enabled = isChecked();
- resId = (enabled ? R.string.accessibility_feature_state_on :
- R.string.accessibility_feature_state_off);
+ resId = (enabled ? R.string.on : R.string.off);
}
return mContext.getText(resId);
}
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index 17b178a..9f38ac5 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -655,7 +655,7 @@
}
if (!mShortcutPreference.isChecked()) {
- return context.getText(R.string.switch_off_text);
+ return context.getText(R.string.off);
}
final int shortcutTypes = PreferredShortcuts.retrieveUserShortcutType(context,
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index 8da190a..935c3cb 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -337,7 +337,7 @@
@Override
protected CharSequence getShortcutTypeSummary(Context context) {
if (!mShortcutPreference.isChecked()) {
- return context.getText(R.string.switch_off_text);
+ return context.getText(R.string.off);
}
final int shortcutTypes = PreferredShortcuts.retrieveUserShortcutType(context,
@@ -658,6 +658,6 @@
final int uerShortcutType = getUserShortcutTypeFromSettings(context);
return (uerShortcutType != AccessibilityUtil.UserShortcutType.EMPTY)
? context.getText(R.string.accessibility_summary_shortcut_enabled)
- : context.getText(R.string.accessibility_summary_shortcut_disabled);
+ : context.getText(R.string.off);
}
}
diff --git a/src/com/android/settings/accessibility/VibrationPreferenceController.java b/src/com/android/settings/accessibility/VibrationPreferenceController.java
index 61606b8..fef0958 100644
--- a/src/com/android/settings/accessibility/VibrationPreferenceController.java
+++ b/src/com/android/settings/accessibility/VibrationPreferenceController.java
@@ -44,9 +44,6 @@
public CharSequence getSummary() {
final boolean isVibrateOn = Settings.System.getInt(mContext.getContentResolver(),
Settings.System.VIBRATE_ON, ON) == ON;
- return mContext.getText(
- isVibrateOn
- ? R.string.accessibility_vibration_settings_state_on
- : R.string.accessibility_vibration_settings_state_off);
+ return mContext.getText(isVibrateOn ? R.string.on : R.string.off);
}
}
diff --git a/src/com/android/settings/applications/AppLocaleUtil.java b/src/com/android/settings/applications/AppLocaleUtil.java
index 8c3671e..79406f0 100644
--- a/src/com/android/settings/applications/AppLocaleUtil.java
+++ b/src/com/android/settings/applications/AppLocaleUtil.java
@@ -100,8 +100,8 @@
*/
public static boolean isAppLocaleSupported(Context context, String packageName) {
LocaleList localeList = getPackageLocales(context, packageName);
- if (localeList != null && localeList.size() > 0) {
- return true;
+ if (localeList != null) {
+ return localeList.size() > 0;
}
if (FeatureFlagUtils.isEnabled(
diff --git a/src/com/android/settings/applications/appinfo/AppLocalePreferenceController.java b/src/com/android/settings/applications/appinfo/AppLocalePreferenceController.java
index f406d87..6bf94a6 100644
--- a/src/com/android/settings/applications/appinfo/AppLocalePreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppLocalePreferenceController.java
@@ -22,7 +22,6 @@
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.text.TextUtils;
-import android.util.FeatureFlagUtils;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
@@ -51,9 +50,7 @@
@Override
public int getAvailabilityStatus() {
- boolean isFeatureOn = FeatureFlagUtils
- .isEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION);
- return isFeatureOn && canDisplayLocaleUi() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+ return canDisplayLocaleUi() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
}
@Override
diff --git a/src/com/android/settings/applications/appinfo/AppNotificationPreferenceController.java b/src/com/android/settings/applications/appinfo/AppNotificationPreferenceController.java
index a32205b..df0d3549 100644
--- a/src/com/android/settings/applications/appinfo/AppNotificationPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppNotificationPreferenceController.java
@@ -94,11 +94,11 @@
return "";
}
if (appRow.banned) {
- return context.getText(R.string.notifications_disabled);
+ return context.getText(R.string.off);
} else if (appRow.channelCount == 0) {
return NotificationBackend.getSentSummary(context, appRow.sentByApp, false);
} else if (appRow.channelCount == appRow.blockedChannelCount) {
- return context.getText(R.string.notifications_disabled);
+ return context.getText(R.string.off);
} else {
if (appRow.blockedChannelCount == 0) {
return NotificationBackend.getSentSummary(context, appRow.sentByApp, false);
diff --git a/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceController.java b/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceController.java
deleted file mode 100644
index aa12b62..0000000
--- a/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.applications.appinfo;
-
-import android.content.Context;
-import android.util.FeatureFlagUtils;
-
-import com.android.settings.core.BasePreferenceController;
-
-/**
- * A controller to update current locale information of application
- * and a entry to launch {@link ManageApplications}.
- * TODO(209775925) After feature release, this class may be removed.
- */
-public class ManageAppLocalePreferenceController extends BasePreferenceController {
- public ManageAppLocalePreferenceController(Context context, String key) {
- super(context, key);
- }
-
- @Override
- public int getAvailabilityStatus() {
- return FeatureFlagUtils
- .isEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION)
- ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
- }
-}
diff --git a/src/com/android/settings/backup/BackupDataPreferenceController.java b/src/com/android/settings/backup/BackupDataPreferenceController.java
index 25ef58c..7c6775a 100644
--- a/src/com/android/settings/backup/BackupDataPreferenceController.java
+++ b/src/com/android/settings/backup/BackupDataPreferenceController.java
@@ -54,8 +54,7 @@
public CharSequence getSummary() {
if (!mPSCD.isBackupGray()) {
return mPSCD.isBackupEnabled()
- ? mContext.getText(R.string.accessibility_feature_state_on)
- : mContext.getText(R.string.accessibility_feature_state_off);
+ ? mContext.getText(R.string.on) : mContext.getText(R.string.off);
}
return null;
}
diff --git a/src/com/android/settings/backup/BackupSettingsHelper.java b/src/com/android/settings/backup/BackupSettingsHelper.java
index 1483714..4a8ae0c 100644
--- a/src/com/android/settings/backup/BackupSettingsHelper.java
+++ b/src/com/android/settings/backup/BackupSettingsHelper.java
@@ -58,8 +58,7 @@
UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
if (userManager.getUserProfiles().size() == 1) {
try {
- int resId = mBackupManager.isBackupEnabled() ? R.string.backup_summary_state_on
- : R.string.backup_summary_state_off;
+ int resId = mBackupManager.isBackupEnabled() ? R.string.on : R.string.off;
return mContext.getText(resId).toString();
} catch (RemoteException e) {
Log.e(TAG, "Error getting isBackupEnabled", e);
diff --git a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java
index 7256511..1ae5dae 100644
--- a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java
@@ -77,7 +77,7 @@
@NonNull
public AlertDialog.Builder onCreateDialogBuilder() {
- return new AlertDialog.Builder(getContext())
+ return new AlertDialog.Builder(getActivity(), R.style.GlifV2ThemeAlertDialog)
.setTitle(R.string.setup_fingerprint_enroll_skip_title)
.setPositiveButton(R.string.skip_anyway_button_label, this)
.setNegativeButton(R.string.go_back_button_label, this)
diff --git a/src/com/android/settings/bluetooth/BluetoothSummaryUpdater.java b/src/com/android/settings/bluetooth/BluetoothSummaryUpdater.java
index 6e82649..bf72877 100644
--- a/src/com/android/settings/bluetooth/BluetoothSummaryUpdater.java
+++ b/src/com/android/settings/bluetooth/BluetoothSummaryUpdater.java
@@ -74,7 +74,7 @@
@Override
public String getSummary() {
if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
- return mContext.getString(R.string.bluetooth_disabled);
+ return mContext.getString(R.string.off);
}
switch (mBluetoothAdapter.getConnectionState()) {
case BluetoothAdapter.STATE_CONNECTED:
@@ -95,7 +95,7 @@
final Set<BluetoothDevice> devices = mBluetoothAdapter.getBondedDevices();
if (devices == null) {
Log.e(TAG, "getConnectedDeviceSummary, bonded devices are null");
- return mContext.getString(R.string.bluetooth_disabled);
+ return mContext.getString(R.string.off);
} else if (devices.isEmpty()) {
Log.e(TAG, "getConnectedDeviceSummary, no bonded devices");
return mContext.getString(R.string.disconnected);
diff --git a/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java b/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java
index ee0021e..f5d6bfe 100644
--- a/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java
+++ b/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java
@@ -54,9 +54,9 @@
public CharSequence getSummary() {
if (mNfcAdapter != null) {
if (mNfcAdapter.isEnabled()) {
- return mContext.getText(R.string.nfc_setting_on);
+ return mContext.getText(R.string.on);
} else {
- return mContext.getText(R.string.nfc_setting_off);
+ return mContext.getText(R.string.off);
}
}
return null;
diff --git a/src/com/android/settings/datausage/DataSaverPreference.java b/src/com/android/settings/datausage/DataSaverPreference.java
index 305d061..fd64506 100644
--- a/src/com/android/settings/datausage/DataSaverPreference.java
+++ b/src/com/android/settings/datausage/DataSaverPreference.java
@@ -44,7 +44,7 @@
@Override
public void onDataSaverChanged(boolean isDataSaving) {
- setSummary(isDataSaving ? R.string.data_saver_on : R.string.data_saver_off);
+ setSummary(isDataSaving ? R.string.on : R.string.off);
}
@Override
diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
index d92fb7f..210d011 100644
--- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
+++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
@@ -81,7 +81,8 @@
implements OnMainSwitchChangeListener, OemUnlockDialogHost, AdbDialogHost,
AdbClearKeysDialogHost, LogPersistDialogHost,
BluetoothRebootDialog.OnRebootDialogListener,
- AbstractBluetoothPreferenceController.Callback {
+ AbstractBluetoothPreferenceController.Callback,
+ NfcRebootDialog.OnNfcRebootDialogConfirmedListener {
private static final String TAG = "DevSettingsDashboard";
@@ -299,10 +300,19 @@
final BluetoothLeAudioHwOffloadPreferenceController leAudioController =
getDevelopmentOptionsController(
BluetoothLeAudioHwOffloadPreferenceController.class);
+ final NfcSnoopLogPreferenceController nfcSnoopLogController =
+ getDevelopmentOptionsController(
+ NfcSnoopLogPreferenceController.class);
+ final NfcVerboseVendorLogPreferenceController nfcVerboseLogController =
+ getDevelopmentOptionsController(
+ NfcVerboseVendorLogPreferenceController.class);
// If hardware offload isn't default value, we must reboot after disable
// developer options. Show a dialog for the user to confirm.
if ((a2dpController == null || a2dpController.isDefaultValue())
- && (leAudioController == null || leAudioController.isDefaultValue())) {
+ && (leAudioController == null || leAudioController.isDefaultValue())
+ && (nfcSnoopLogController == null || nfcSnoopLogController.isDefaultValue())
+ && (nfcVerboseLogController == null
+ || nfcVerboseLogController.isDefaultValue())) {
disableDeveloperOptions();
} else {
DisableDevSettingsDialogFragment.show(this /* host */);
@@ -396,6 +406,28 @@
}
@Override
+ public void onNfcRebootDialogConfirmed() {
+ final NfcSnoopLogPreferenceController controller =
+ getDevelopmentOptionsController(NfcSnoopLogPreferenceController.class);
+ controller.onNfcRebootDialogConfirmed();
+
+ final NfcVerboseVendorLogPreferenceController vendorLogController =
+ getDevelopmentOptionsController(NfcVerboseVendorLogPreferenceController.class);
+ vendorLogController.onNfcRebootDialogConfirmed();
+ }
+
+ @Override
+ public void onNfcRebootDialogCanceled() {
+ final NfcSnoopLogPreferenceController controller =
+ getDevelopmentOptionsController(NfcSnoopLogPreferenceController.class);
+ controller.onNfcRebootDialogCanceled();
+
+ final NfcVerboseVendorLogPreferenceController vendorLogController =
+ getDevelopmentOptionsController(NfcVerboseVendorLogPreferenceController.class);
+ vendorLogController.onNfcRebootDialogCanceled();
+ }
+
+ @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
boolean handledResult = false;
for (AbstractPreferenceController controller : mPreferenceControllers) {
@@ -555,6 +587,8 @@
controllers.add(new BluetoothLeAudioHwOffloadPreferenceController(context, fragment));
controllers.add(new BluetoothMaxConnectedAudioDevicesPreferenceController(context));
controllers.add(new NfcStackDebugLogPreferenceController(context));
+ controllers.add(new NfcSnoopLogPreferenceController(context, fragment));
+ controllers.add(new NfcVerboseVendorLogPreferenceController(context, fragment));
controllers.add(new ShowTapsPreferenceController(context));
controllers.add(new PointerLocationPreferenceController(context));
controllers.add(new ShowSurfaceUpdatesPreferenceController(context));
diff --git a/src/com/android/settings/development/NfcRebootDialog.java b/src/com/android/settings/development/NfcRebootDialog.java
new file mode 100644
index 0000000..7d9890e
--- /dev/null
+++ b/src/com/android/settings/development/NfcRebootDialog.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.development;
+
+import android.app.Dialog;
+import android.app.settings.SettingsEnums;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.os.PowerManager;
+
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.FragmentManager;
+
+import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+
+/**
+ * The NFC log type switch should reboot the device to take effect,
+ * the dialog is to ask the user to reboot the device.
+ */
+public class NfcRebootDialog extends InstrumentedDialogFragment
+ implements DialogInterface.OnClickListener {
+
+ public static final String TAG = "NfcRebootDialog";
+
+ /**
+ * The function to show the Dialog.
+ */
+ public static void show(DevelopmentSettingsDashboardFragment host) {
+ final FragmentManager manager = host.getActivity().getSupportFragmentManager();
+ if (manager.findFragmentByTag(TAG) == null) {
+ final NfcRebootDialog dialog = new NfcRebootDialog();
+ dialog.setTargetFragment(host, 0 /* requestCode */);
+ dialog.show(manager, TAG);
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return SettingsEnums.DIALOG_NFC_ENABLE_DETAIL_LOG;
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ return new AlertDialog.Builder(getActivity())
+ .setMessage(R.string.nfc_reboot_dialog_message)
+ .setTitle(R.string.nfc_reboot_dialog_title)
+ .setPositiveButton(
+ R.string.nfc_reboot_dialog_confirm, this)
+ .setNegativeButton(
+ android.R.string.cancel, this)
+ .create();
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ final OnNfcRebootDialogConfirmedListener host =
+ (OnNfcRebootDialogConfirmedListener) getTargetFragment();
+ if (host == null) {
+ return;
+ }
+ if (which == DialogInterface.BUTTON_POSITIVE) {
+ host.onNfcRebootDialogConfirmed();
+ PowerManager pm = getContext().getSystemService(PowerManager.class);
+ pm.reboot(null);
+ } else {
+ host.onNfcRebootDialogCanceled();
+ }
+ }
+
+ /**
+ * Interface for EnableAdbWarningDialog callbacks.
+ */
+ public interface OnNfcRebootDialogConfirmedListener {
+ /**
+ * Called when the user presses enable on the warning dialog.
+ */
+ void onNfcRebootDialogConfirmed();
+
+ /**
+ * Called when the user presses cancel on the warning dialog.
+ */
+ void onNfcRebootDialogCanceled();
+ }
+}
diff --git a/src/com/android/settings/development/NfcSnoopLogPreferenceController.java b/src/com/android/settings/development/NfcSnoopLogPreferenceController.java
new file mode 100644
index 0000000..10cfee0
--- /dev/null
+++ b/src/com/android/settings/development/NfcSnoopLogPreferenceController.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.development;
+
+import android.content.Context;
+import android.os.SystemProperties;
+import android.util.Log;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+
+import com.android.settingslib.development.DeveloperOptionsPreferenceController;
+
+/**
+ * Preference controller to control NFCSNOOP data payload
+ */
+public class NfcSnoopLogPreferenceController extends
+ DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener {
+ private static final String TAG = "NfcSnoopLog";
+ private static final String NFC_NFCSNOOP_LOG_KEY =
+ "nfc_snoop_log";
+ @VisibleForTesting
+ static final String NFC_NFCSNOOP_LOG_MODE_PROPERTY =
+ "persist.nfc.nfcsnooplogmode";
+ @VisibleForTesting
+ static final String NFCSNOOP_MODE_FILTERED = "filtered";
+ @VisibleForTesting
+ static final String NFCSNOOP_MODE_FULL = "full";
+
+ @VisibleForTesting
+ boolean mChanged = false;
+
+ private final DevelopmentSettingsDashboardFragment mFragment;
+
+ public NfcSnoopLogPreferenceController(Context context,
+ DevelopmentSettingsDashboardFragment fragment) {
+ super(context);
+ mFragment = fragment;
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return NFC_NFCSNOOP_LOG_KEY;
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ NfcRebootDialog.show(mFragment);
+ mChanged = true;
+ return false;
+ }
+
+ @Override
+ public void updateState(Preference preference) {
+ try {
+ final String currentValue = SystemProperties.get(NFC_NFCSNOOP_LOG_MODE_PROPERTY);
+ ((SwitchPreference) mPreference).setChecked(currentValue.equals(NFCSNOOP_MODE_FULL));
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Fail to get nfc system property: " + e.getMessage());
+ }
+ }
+
+ @Override
+ protected void onDeveloperOptionsSwitchDisabled() {
+ super.onDeveloperOptionsSwitchDisabled();
+ try {
+ SystemProperties.set(NFC_NFCSNOOP_LOG_MODE_PROPERTY, NFCSNOOP_MODE_FILTERED);
+ ((SwitchPreference) mPreference).setChecked(false);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Fail to set nfc system property: " + e.getMessage());
+ }
+ }
+
+ /**
+ * Check whether the current setting is the default value or not.
+ */
+ public boolean isDefaultValue() {
+ try {
+ final String currentValue = SystemProperties.get(NFC_NFCSNOOP_LOG_MODE_PROPERTY);
+ return !currentValue.equals(NFCSNOOP_MODE_FULL);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Fail to get nfc system property: " + e.getMessage());
+ }
+ return true;
+ }
+
+ /**
+ * Called when the NfcRebootDialog confirm is clicked.
+ */
+ public void onNfcRebootDialogConfirmed() {
+ if (!mChanged) {
+ return;
+ }
+ try {
+ final String currentValue =
+ SystemProperties.get(NFC_NFCSNOOP_LOG_MODE_PROPERTY, NFCSNOOP_MODE_FILTERED);
+ if (currentValue.equals(NFCSNOOP_MODE_FILTERED)) {
+ SystemProperties.set(NFC_NFCSNOOP_LOG_MODE_PROPERTY, NFCSNOOP_MODE_FULL);
+ } else {
+ SystemProperties.set(NFC_NFCSNOOP_LOG_MODE_PROPERTY, NFCSNOOP_MODE_FILTERED);
+ }
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Fail to set nfc system property: " + e.getMessage());
+ }
+
+ }
+
+ /**
+ * Called when the NfcRebootDialog cancel is clicked.
+ */
+ public void onNfcRebootDialogCanceled() {
+ mChanged = false;
+ }
+}
diff --git a/src/com/android/settings/development/NfcVerboseVendorLogPreferenceController.java b/src/com/android/settings/development/NfcVerboseVendorLogPreferenceController.java
new file mode 100644
index 0000000..8b3cab0
--- /dev/null
+++ b/src/com/android/settings/development/NfcVerboseVendorLogPreferenceController.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.development;
+
+import android.content.Context;
+import android.os.SystemProperties;
+import android.util.Log;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+
+import com.android.settingslib.development.DeveloperOptionsPreferenceController;
+
+/**
+ * Preference controller to control NFC vendor verbose logging enable and disable
+ */
+public class NfcVerboseVendorLogPreferenceController
+ extends DeveloperOptionsPreferenceController
+ implements Preference.OnPreferenceChangeListener {
+ private static final String TAG = "NfcVerboseVendorLog";
+ private static final String NFC_VERBOSE_VENDOR_LOG_KEY = "nfc_verbose_vendor_log";
+ @VisibleForTesting
+ static final String NFC_VERBOSE_VENDOR_LOG_PROPERTY =
+ "persist.nfc.verbosevendorlog";
+ @VisibleForTesting
+ static final String VERBOSE_VENDOR_LOG_ENABLED = "enabled";
+ @VisibleForTesting
+ static final String VERBOSE_VENDOR_LOG_DISABLED = "disabled";
+
+ @VisibleForTesting
+ boolean mChanged = false;
+
+ private final DevelopmentSettingsDashboardFragment mFragment;
+
+ public NfcVerboseVendorLogPreferenceController(Context context,
+ DevelopmentSettingsDashboardFragment fragment) {
+ super(context);
+ mFragment = fragment;
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return NFC_VERBOSE_VENDOR_LOG_KEY;
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ NfcRebootDialog.show(mFragment);
+ mChanged = true;
+ return false;
+ }
+
+ @Override
+ public void updateState(Preference preference) {
+ try {
+ final String currentValue = SystemProperties.get(NFC_VERBOSE_VENDOR_LOG_PROPERTY);
+ ((SwitchPreference) mPreference)
+ .setChecked(currentValue.equals(VERBOSE_VENDOR_LOG_ENABLED));
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Fail to get nfc system property: " + e.getMessage());
+ }
+ }
+
+ @Override
+ protected void onDeveloperOptionsSwitchDisabled() {
+ super.onDeveloperOptionsSwitchDisabled();
+ try {
+ SystemProperties.set(NFC_VERBOSE_VENDOR_LOG_PROPERTY, VERBOSE_VENDOR_LOG_DISABLED);
+ ((SwitchPreference) mPreference).setChecked(false);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Fail to set nfc system property: " + e.getMessage());
+ }
+ }
+
+ /**
+ * Check whether the current setting is the default value or not.
+ */
+ public boolean isDefaultValue() {
+ try {
+ final String currentValue = SystemProperties.get(NFC_VERBOSE_VENDOR_LOG_PROPERTY);
+ return !currentValue.equals(VERBOSE_VENDOR_LOG_ENABLED);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Fail to get nfc system property: " + e.getMessage());
+ }
+ return true;
+ }
+
+ /**
+ * Called when the NfcRebootDialog confirm is clicked.
+ */
+ public void onNfcRebootDialogConfirmed() {
+ if (!mChanged) {
+ return;
+ }
+ try {
+ final String currentValue = SystemProperties
+ .get(NFC_VERBOSE_VENDOR_LOG_PROPERTY, VERBOSE_VENDOR_LOG_DISABLED);
+ if (currentValue.equals(VERBOSE_VENDOR_LOG_DISABLED)) {
+ SystemProperties.set(NFC_VERBOSE_VENDOR_LOG_PROPERTY, VERBOSE_VENDOR_LOG_ENABLED);
+ } else {
+ SystemProperties.set(NFC_VERBOSE_VENDOR_LOG_PROPERTY, VERBOSE_VENDOR_LOG_DISABLED);
+ }
+ updateState(mPreference);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Fail to set nfc system property: " + e.getMessage());
+ }
+ }
+
+ /**
+ * Called when the NfcRebootDialog cancel is clicked.
+ */
+ public void onNfcRebootDialogCanceled() {
+ mChanged = false;
+ }
+}
diff --git a/src/com/android/settings/display/AutoBrightnessPreferenceController.java b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
index d925de3..ffb10fb 100644
--- a/src/com/android/settings/display/AutoBrightnessPreferenceController.java
+++ b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
@@ -57,9 +57,7 @@
@Override
public CharSequence getSummary() {
- return mContext.getText(isChecked()
- ? R.string.auto_brightness_summary_on
- : R.string.auto_brightness_summary_off);
+ return mContext.getText(isChecked() ? R.string.on : R.string.off);
}
@Override
diff --git a/src/com/android/settings/display/SmartAutoRotatePreferenceController.java b/src/com/android/settings/display/SmartAutoRotatePreferenceController.java
index d02e336..abf4f0c 100644
--- a/src/com/android/settings/display/SmartAutoRotatePreferenceController.java
+++ b/src/com/android/settings/display/SmartAutoRotatePreferenceController.java
@@ -165,7 +165,7 @@
@Override
public CharSequence getSummary() {
- int activeStringId = R.string.auto_rotate_option_off;
+ int activeStringId = R.string.off;
if (!RotationPolicy.isRotationLocked(mContext)) {
final int cameraRotate = Settings.Secure.getIntForUser(
mContext.getContentResolver(),
@@ -176,7 +176,7 @@
&& !isCameraLocked()
&& !isPowerSaveMode()
? R.string.auto_rotate_option_face_based
- : R.string.auto_rotate_option_on;
+ : R.string.on;
}
return mContext.getString(activeStringId);
}
diff --git a/src/com/android/settings/dream/DreamSettings.java b/src/com/android/settings/dream/DreamSettings.java
index 1d12c1a..ae4610a 100644
--- a/src/com/android/settings/dream/DreamSettings.java
+++ b/src/com/android/settings/dream/DreamSettings.java
@@ -137,7 +137,7 @@
@VisibleForTesting
static CharSequence getSummaryTextFromBackend(DreamBackend backend, Context context) {
if (!backend.isEnabled()) {
- return context.getString(R.string.screensaver_settings_summary_off);
+ return context.getString(R.string.off);
} else {
return backend.getActiveDreamName();
}
diff --git a/src/com/android/settings/emergency/EmergencyGestureEntrypointPreferenceController.java b/src/com/android/settings/emergency/EmergencyGestureEntrypointPreferenceController.java
index 155efd3..bcf3f21 100644
--- a/src/com/android/settings/emergency/EmergencyGestureEntrypointPreferenceController.java
+++ b/src/com/android/settings/emergency/EmergencyGestureEntrypointPreferenceController.java
@@ -95,8 +95,7 @@
public CharSequence getSummary() {
return mContext.getText(
mEmergencyNumberUtils.getEmergencyGestureEnabled()
- ? R.string.gesture_setting_on
- : R.string.gesture_setting_off);
+ ? R.string.on : R.string.off);
}
/**
diff --git a/src/com/android/settings/fuelgauge/BatterySaverController.java b/src/com/android/settings/fuelgauge/BatterySaverController.java
index c712ab0..2a39ab3 100644
--- a/src/com/android/settings/fuelgauge/BatterySaverController.java
+++ b/src/com/android/settings/fuelgauge/BatterySaverController.java
@@ -97,7 +97,7 @@
public CharSequence getSummary() {
final boolean isPowerSaveOn = mPowerManager.isPowerSaveMode();
if (isPowerSaveOn) {
- return mContext.getString(R.string.battery_saver_on_summary);
+ return mContext.getString(R.string.on);
}
final ContentResolver resolver = mContext.getContentResolver();
@@ -109,7 +109,7 @@
return percent != 0 ?
mContext.getString(R.string.battery_saver_off_scheduled_summary,
Utils.formatPercentage(percent)) :
- mContext.getString(R.string.battery_saver_off_summary);
+ mContext.getString(R.string.off);
} else {
return mContext.getString(R.string.battery_saver_pref_auto_routine_summary);
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
index 45ae8c5..6d2c1a1 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
@@ -369,10 +369,6 @@
addFooterPreferenceIfNeeded(false);
return false;
}
- if (mBatteryUsageMap == null) {
- // Battery usage data is not ready, wait for data ready to refresh UI.
- return false;
- }
if (isBatteryLevelDataInOneDay()) {
// Only 1 day data, hide the daily chart view.
@@ -394,6 +390,10 @@
mHourlyChartView.setViewModel(hourlyViewModel);
}
+ if (mBatteryUsageMap == null) {
+ // Battery usage data is not ready, wait for data ready to refresh UI.
+ return false;
+ }
mHandler.post(() -> {
final long start = System.currentTimeMillis();
removeAndCacheAllPrefs();
@@ -697,12 +697,13 @@
final Map<Integer, Map<Integer, BatteryDiffData>> batteryUsageData =
DataProcessor.getBatteryUsageData(context, batteryHistoryMap);
- return batteryUsageData == null
- ? null
- : batteryUsageData
- .get(BatteryChartViewModel.SELECTED_INDEX_ALL)
- .get(BatteryChartViewModel.SELECTED_INDEX_ALL)
- .getAppDiffEntryList();
+ if (batteryUsageData == null) {
+ return null;
+ }
+ BatteryDiffData allBatteryDiffData = batteryUsageData.get(
+ BatteryChartViewModel.SELECTED_INDEX_ALL).get(
+ BatteryChartViewModel.SELECTED_INDEX_ALL);
+ return allBatteryDiffData == null ? null : allBatteryDiffData.getAppDiffEntryList();
}
/** Used for {@link AppBatteryPreferenceController}. */
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java
index e668b37..c1cffc8 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java
@@ -515,7 +515,7 @@
private boolean hasOverlap(
final Rect[] displayAreas, final int leftIndex, final int rightIndex) {
- return displayAreas[leftIndex].right + mTextPadding * 2f > displayAreas[rightIndex].left;
+ return displayAreas[leftIndex].right + mTextPadding * 2.3f > displayAreas[rightIndex].left;
}
private void drawAxisLabelText(
@@ -595,6 +595,9 @@
// Searches the corresponding trapezoid index from x location.
private int getTrapezoidIndex(float x) {
+ if (mTrapezoidSlots == null) {
+ return BatteryChartViewModel.SELECTED_INDEX_INVALID;
+ }
for (int index = 0; index < mTrapezoidSlots.length; index++) {
final TrapezoidSlot slot = mTrapezoidSlots[index];
if (x >= slot.mLeft - mTrapezoidHOffset
diff --git a/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java b/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java
index 49a9de6..2b32eec 100644
--- a/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java
+++ b/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java
@@ -128,8 +128,7 @@
if (!mAssistOnly) {
isEnabled = isEnabled || isSilenceGestureEnabled();
}
- return mContext.getText(
- isEnabled ? R.string.gesture_setting_on : R.string.gesture_setting_off);
+ return mContext.getText(isEnabled ? R.string.on : R.string.off);
}
@Override
diff --git a/src/com/android/settings/gestures/GesturePreferenceController.java b/src/com/android/settings/gestures/GesturePreferenceController.java
index 71c3c9a..9e8181c 100644
--- a/src/com/android/settings/gestures/GesturePreferenceController.java
+++ b/src/com/android/settings/gestures/GesturePreferenceController.java
@@ -60,8 +60,7 @@
@Override
public CharSequence getSummary() {
- return mContext.getText(
- isChecked() ? R.string.gesture_setting_on : R.string.gesture_setting_off);
+ return mContext.getText(isChecked() ? R.string.on : R.string.off);
}
@Override
diff --git a/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java b/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java
index 6aac772..a3bc052 100644
--- a/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java
+++ b/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java
@@ -51,7 +51,7 @@
public CharSequence getSummary() {
return mContext.getText(
OneHandedSettingsUtils.isOneHandedModeEnabled(mContext)
- ? R.string.gesture_setting_on : R.string.gesture_setting_off);
+ ? R.string.on : R.string.off);
}
@Override
diff --git a/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java b/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java
index 03b0259..50b6cb0 100644
--- a/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java
+++ b/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java
@@ -104,7 +104,7 @@
break;
// VOLUME_HUSH_OFF
default:
- summary = mContext.getText(R.string.switch_off_text);
+ summary = mContext.getText(R.string.off);
}
preference.setEnabled(true);
mPreference.setSwitchEnabled(true);
diff --git a/src/com/android/settings/inputmethod/SpellCheckerPreferenceController.java b/src/com/android/settings/inputmethod/SpellCheckerPreferenceController.java
index f0bb8d9..68e46e9 100644
--- a/src/com/android/settings/inputmethod/SpellCheckerPreferenceController.java
+++ b/src/com/android/settings/inputmethod/SpellCheckerPreferenceController.java
@@ -66,7 +66,7 @@
return;
}
if (!mTextServicesManager.isSpellCheckerEnabled()) {
- preference.setSummary(R.string.switch_off_text);
+ preference.setSummary(R.string.off);
} else {
final SpellCheckerInfo sci = mTextServicesManager.getCurrentSpellChecker();
if (sci != null) {
diff --git a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
index ab9110d..b3c2e30 100644
--- a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
+++ b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
@@ -43,7 +43,6 @@
import java.util.List;
import java.util.Locale;
-
class LocaleDragAndDropAdapter
extends RecyclerView.Adapter<LocaleDragAndDropAdapter.CustomViewHolder> {
@@ -154,8 +153,10 @@
final LocaleDragCell dragCell = holder.getLocaleDragCell();
final String label = feedItem.getFullNameNative();
final String description = feedItem.getFullNameInUiLanguage();
+
dragCell.setLabelAndDescription(label, description);
dragCell.setLocalized(feedItem.isTranslated());
+ dragCell.setCurrentDefault(feedItem.getLocale().equals(Locale.getDefault()));
dragCell.setMiniLabel(mNumberFormatter.format(i + 1));
dragCell.setShowCheckbox(mRemoveMode);
dragCell.setShowMiniLabel(!mRemoveMode);
diff --git a/src/com/android/settings/localepicker/LocaleDragCell.java b/src/com/android/settings/localepicker/LocaleDragCell.java
index ea86189..2f4cfef 100644
--- a/src/com/android/settings/localepicker/LocaleDragCell.java
+++ b/src/com/android/settings/localepicker/LocaleDragCell.java
@@ -33,6 +33,7 @@
private CheckBox mCheckbox;
private TextView mMiniLabel;
private TextView mLocalized;
+ private TextView mCurrentDefault;
private ImageView mDragHandle;
public LocaleDragCell(Context context, AttributeSet attrs) {
@@ -44,6 +45,7 @@
super.onFinishInflate();
mLabel = (TextView) findViewById(R.id.label);
mLocalized = (TextView) findViewById(R.id.l10nWarn);
+ mCurrentDefault = (TextView) findViewById(R.id.default_locale);
mMiniLabel = (TextView) findViewById(R.id.miniLabel);
mCheckbox = (CheckBox) findViewById(R.id.checkbox);
mDragHandle = (ImageView) findViewById(R.id.dragHandle);
@@ -100,6 +102,14 @@
invalidate();
}
+ /**
+ * Indicate current locale is system default.
+ */
+ public void setCurrentDefault(boolean isCurrentDefault) {
+ mCurrentDefault.setVisibility(isCurrentDefault ? VISIBLE : GONE);
+ invalidate();
+ }
+
public ImageView getDragHandle() {
return mDragHandle;
}
diff --git a/src/com/android/settings/localepicker/LocaleHelperPreferenceController.java b/src/com/android/settings/localepicker/LocaleHelperPreferenceController.java
new file mode 100644
index 0000000..05c7401
--- /dev/null
+++ b/src/com/android/settings/localepicker/LocaleHelperPreferenceController.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.localepicker;
+
+import android.content.Context;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settingslib.HelpUtils;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.widget.FooterPreference;
+
+/**
+ * A controller to update current locale information of application.
+ */
+public class LocaleHelperPreferenceController extends AbstractPreferenceController {
+ private static final String TAG = LocaleHelperPreferenceController.class.getSimpleName();
+
+ private static final String KEY_FOOTER_LANGUAGE_PICKER = "footer_languages_picker";
+
+ public LocaleHelperPreferenceController(Context context) {
+ super(context);
+ }
+
+ @Override
+ public boolean isAvailable() {
+ return true;
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return KEY_FOOTER_LANGUAGE_PICKER;
+ }
+
+ @Override
+ public void displayPreference(PreferenceScreen screen) {
+ super.displayPreference(screen);
+ FooterPreference footerPreference = screen.findPreference(getPreferenceKey());
+ updateFooterPreference(footerPreference);
+ }
+
+ @VisibleForTesting
+ void updateFooterPreference(FooterPreference footerPreference) {
+ if (footerPreference != null) {
+ footerPreference.setLearnMoreAction(v -> openLocaleLearnMoreLink());
+ footerPreference.setLearnMoreText(mContext.getString(
+ R.string.desc_locale_helper_footer_general));
+ }
+ }
+
+ private void openLocaleLearnMoreLink() {
+ mContext.startActivity(
+ HelpUtils.getHelpIntent(
+ mContext,
+ mContext.getString(R.string.link_locale_picker_footer_learn_more),
+ /*backupContext=*/""));
+ }
+}
diff --git a/src/com/android/settings/localepicker/LocaleListEditor.java b/src/com/android/settings/localepicker/LocaleListEditor.java
index eac2dd1..9db3468 100644
--- a/src/com/android/settings/localepicker/LocaleListEditor.java
+++ b/src/com/android/settings/localepicker/LocaleListEditor.java
@@ -36,6 +36,7 @@
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog;
+import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.app.LocalePicker;
@@ -46,6 +47,7 @@
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.search.SearchIndexableRaw;
+import com.android.settingslib.widget.LayoutPreference;
import java.util.ArrayList;
import java.util.List;
@@ -64,6 +66,7 @@
private static final int REQUEST_LOCALE_PICKER = 0;
private static final String INDEX_KEY_ADD_LANGUAGE = "add_language";
+ private static final String KEY_LANGUAGES_PICKER = "languages_picker";
private LocaleDragAndDropAdapter mAdapter;
private Menu mMenu;
@@ -72,6 +75,9 @@
private boolean mShowingRemoveDialog;
private boolean mIsUiRestricted;
+ private LayoutPreference mLocalePickerPreference;
+ private LocaleHelperPreferenceController mLocaleHelperPreferenceController;
+
public LocaleListEditor() {
super(DISALLOW_CONFIG_LOCALE);
}
@@ -86,6 +92,14 @@
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
+ addPreferencesFromResource(R.xml.languages);
+ final Activity activity = getActivity();
+ activity.setTitle(R.string.language_picker_title);
+ mLocaleHelperPreferenceController = new LocaleHelperPreferenceController(activity);
+ final PreferenceScreen screen = getPreferenceScreen();
+ mLocalePickerPreference = screen.findPreference(KEY_LANGUAGES_PICKER);
+ mLocaleHelperPreferenceController.displayPreference(screen);
+
LocaleStore.fillCache(this.getContext());
final List<LocaleStore.LocaleInfo> feedsList = getUserLocaleList();
mAdapter = new LocaleDragAndDropAdapter(this.getContext(), feedsList);
@@ -93,11 +107,8 @@
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstState) {
- final View result = super.onCreateView(inflater, container, savedInstState);
- final View myLayout = inflater.inflate(R.layout.locale_order_list, (ViewGroup) result);
-
- configureDragAndDrop(myLayout);
- return result;
+ configureDragAndDrop(mLocalePickerPreference);
+ return super.onCreateView(inflater, container, savedInstState);
}
@Override
@@ -287,8 +298,8 @@
return result;
}
- private void configureDragAndDrop(View view) {
- final RecyclerView list = view.findViewById(R.id.dragList);
+ private void configureDragAndDrop(LayoutPreference layout) {
+ final RecyclerView list = layout.findViewById(R.id.dragList);
final LocaleLinearLayoutManager llm = new LocaleLinearLayoutManager(getContext(), mAdapter);
llm.setAutoMeasureEnabled(true);
list.setLayoutManager(llm);
@@ -297,7 +308,7 @@
mAdapter.setRecyclerView(list);
list.setAdapter(mAdapter);
- mAddLanguage = view.findViewById(R.id.add_language);
+ mAddLanguage = layout.findViewById(R.id.add_language);
mAddLanguage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
diff --git a/src/com/android/settings/location/LocationForWorkPreferenceController.java b/src/com/android/settings/location/LocationForWorkPreferenceController.java
index 45fb5f1..3341b8f 100644
--- a/src/com/android/settings/location/LocationForWorkPreferenceController.java
+++ b/src/com/android/settings/location/LocationForWorkPreferenceController.java
@@ -44,8 +44,7 @@
final boolean switchState = mPreference.isChecked();
mUserManager.setUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, !switchState,
Utils.getManagedProfile(mUserManager));
- mPreference.setSummary(switchState ?
- R.string.switch_on_text : R.string.switch_off_text);
+ mPreference.setSummary(switchState ? R.string.on : R.string.off);
return true;
}
return false;
@@ -81,11 +80,11 @@
mLocationEnabler.isManagedProfileRestrictedByBase();
if (isRestrictedByBase || !enabled) {
mPreference.setChecked(false);
- summaryResId = enabled ? R.string.switch_off_text
+ summaryResId = enabled ? R.string.off
: R.string.location_app_permission_summary_location_off;
} else {
mPreference.setChecked(true);
- summaryResId = R.string.switch_on_text;
+ summaryResId = R.string.on;
}
mPreference.setSummary(summaryResId);
}
diff --git a/src/com/android/settings/location/LocationServicesBluetoothScanningPreferenceController.java b/src/com/android/settings/location/LocationServicesBluetoothScanningPreferenceController.java
index ccda572..cc2b704 100644
--- a/src/com/android/settings/location/LocationServicesBluetoothScanningPreferenceController.java
+++ b/src/com/android/settings/location/LocationServicesBluetoothScanningPreferenceController.java
@@ -46,8 +46,7 @@
public CharSequence getSummary() {
final boolean bleScanOn = Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE, 0) == 1;
- int resId =
- bleScanOn ? R.string.scanning_status_text_on : R.string.scanning_status_text_off;
+ final int resId = bleScanOn ? R.string.on : R.string.off;
return mContext.getString(resId);
}
diff --git a/src/com/android/settings/location/LocationServicesWifiScanningPreferenceController.java b/src/com/android/settings/location/LocationServicesWifiScanningPreferenceController.java
index 2814f9d..1e8412e 100644
--- a/src/com/android/settings/location/LocationServicesWifiScanningPreferenceController.java
+++ b/src/com/android/settings/location/LocationServicesWifiScanningPreferenceController.java
@@ -47,8 +47,7 @@
@Override
public CharSequence getSummary() {
final boolean wifiScanOn = mWifiManager.isScanAlwaysAvailable();
- int resId =
- wifiScanOn ? R.string.scanning_status_text_on : R.string.scanning_status_text_off;
+ final int resId = wifiScanOn ? R.string.on : R.string.off;
return mContext.getString(resId);
}
diff --git a/src/com/android/settings/location/TopLevelLocationPreferenceController.java b/src/com/android/settings/location/TopLevelLocationPreferenceController.java
index 5effe6c..91100b7 100644
--- a/src/com/android/settings/location/TopLevelLocationPreferenceController.java
+++ b/src/com/android/settings/location/TopLevelLocationPreferenceController.java
@@ -57,7 +57,7 @@
}
return sSummary;
} else {
- return mContext.getString(R.string.location_settings_summary_location_off);
+ return mContext.getString(R.string.off);
}
}
diff --git a/src/com/android/settings/network/AdaptiveConnectivityPreferenceController.java b/src/com/android/settings/network/AdaptiveConnectivityPreferenceController.java
index a938515..0b7acc7 100644
--- a/src/com/android/settings/network/AdaptiveConnectivityPreferenceController.java
+++ b/src/com/android/settings/network/AdaptiveConnectivityPreferenceController.java
@@ -48,7 +48,7 @@
public CharSequence getSummary() {
return Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ADAPTIVE_CONNECTIVITY_ENABLED, 1) == 1
- ? mContext.getString(R.string.adaptive_connectivity_switch_on)
- : mContext.getString(R.string.adaptive_connectivity_switch_off);
+ ? mContext.getString(R.string.on)
+ : mContext.getString(R.string.off);
}
}
diff --git a/src/com/android/settings/network/PrivateDnsPreferenceController.java b/src/com/android/settings/network/PrivateDnsPreferenceController.java
index ed6f9ed..04db834 100644
--- a/src/com/android/settings/network/PrivateDnsPreferenceController.java
+++ b/src/com/android/settings/network/PrivateDnsPreferenceController.java
@@ -130,7 +130,7 @@
case PRIVATE_DNS_MODE_OFF:
return res.getString(R.string.private_dns_mode_off);
case PRIVATE_DNS_MODE_OPPORTUNISTIC:
- return dnsesResolved ? res.getString(R.string.private_dns_mode_on)
+ return dnsesResolved ? res.getString(R.string.on)
: res.getString(R.string.private_dns_mode_opportunistic);
case PRIVATE_DNS_MODE_PROVIDER_HOSTNAME:
return dnsesResolved
diff --git a/src/com/android/settings/network/TetherPreferenceController.java b/src/com/android/settings/network/TetherPreferenceController.java
index f91f787..12c359d 100644
--- a/src/com/android/settings/network/TetherPreferenceController.java
+++ b/src/com/android/settings/network/TetherPreferenceController.java
@@ -216,7 +216,7 @@
}
if (!hotSpotOn && !tetherOn) {
// Both off
- mPreference.setSummary(R.string.switch_off_text);
+ mPreference.setSummary(R.string.off);
} else if (hotSpotOn && tetherOn) {
// Both on
mPreference.setSummary(R.string.tether_settings_summary_hotspot_on_tether_on);
@@ -232,7 +232,7 @@
// Preference is not ready yet.
return;
}
- mPreference.setSummary(R.string.switch_off_text);
+ mPreference.setSummary(R.string.off);
}
class SettingObserver extends ContentObserver {
diff --git a/src/com/android/settings/network/apn/ApnEditor.java b/src/com/android/settings/network/apn/ApnEditor.java
index 926c77e..bfb4943 100644
--- a/src/com/android/settings/network/apn/ApnEditor.java
+++ b/src/com/android/settings/network/apn/ApnEditor.java
@@ -78,7 +78,8 @@
private static final String KEY_MVNO_TYPE = "mvno_type";
private static final String KEY_PASSWORD = "apn_password";
- private static final int MENU_DELETE = Menu.FIRST;
+ @VisibleForTesting
+ static final int MENU_DELETE = Menu.FIRST;
private static final int MENU_SAVE = Menu.FIRST + 1;
private static final int MENU_CANCEL = Menu.FIRST + 2;
@@ -148,6 +149,17 @@
String mDefaultApnRoamingProtocol;
private String[] mReadOnlyApnFields;
private boolean mReadOnlyApn;
+ /**
+ * The APN deletion feature within menu is aligned with the APN adding feature.
+ * Having only one of them could lead to a UX which not that make sense from user's
+ * perspective.
+ *
+ * mIsAddApnAllowed stores the configuration value reading from
+ * CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL to support the presentation
+ * control of the menu options. When false, delete option would be invisible to
+ * the end user.
+ */
+ private boolean mIsAddApnAllowed;
private Uri mCarrierUri;
private boolean mIsCarrierIdApn;
@@ -282,7 +294,7 @@
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
initApnEditorUi();
- getCarrierCustomizedConfig();
+ getCarrierCustomizedConfig(getContext());
Uri uri = null;
if (action.equals(Intent.ACTION_EDIT)) {
@@ -826,7 +838,8 @@
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
// If it's a new APN, then cancel will delete the new entry in onPause
- if (!mNewApn && !mReadOnlyApn) {
+ // If APN add is not allowed, delete might lead to issue regarding recovery
+ if (!mNewApn && !mReadOnlyApn && mIsAddApnAllowed) {
menu.add(0, MENU_DELETE, 0, R.string.menu_delete)
.setIcon(R.drawable.ic_delete);
}
@@ -1319,13 +1332,15 @@
mMvnoMatchData = (EditTextPreference) findPreference("mvno_match_data");
}
- private void getCarrierCustomizedConfig() {
+ @VisibleForTesting
+ protected void getCarrierCustomizedConfig(Context context) {
mReadOnlyApn = false;
mReadOnlyApnTypes = null;
mReadOnlyApnFields = null;
+ mIsAddApnAllowed = true;
final CarrierConfigManager configManager = (CarrierConfigManager)
- getSystemService(Context.CARRIER_CONFIG_SERVICE);
+ context.getSystemService(Context.CARRIER_CONFIG_SERVICE);
if (configManager != null) {
final PersistableBundle b = configManager.getConfigForSubId(mSubId);
if (b != null) {
@@ -1357,6 +1372,11 @@
Log.d(TAG, "onCreate: default apn roaming protocol: "
+ mDefaultApnRoamingProtocol);
}
+
+ mIsAddApnAllowed = b.getBoolean(CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL);
+ if (!mIsAddApnAllowed) {
+ Log.d(TAG, "onCreate: not allow to add new APN");
+ }
}
}
}
diff --git a/src/com/android/settings/nfc/AndroidBeamEnabler.java b/src/com/android/settings/nfc/AndroidBeamEnabler.java
index 31ef702..a1ecffd 100644
--- a/src/com/android/settings/nfc/AndroidBeamEnabler.java
+++ b/src/com/android/settings/nfc/AndroidBeamEnabler.java
@@ -65,7 +65,7 @@
if (mNfcAdapter.isNdefPushEnabled() && mPreference.isEnabled()) {
mPreference.setSummary(R.string.android_beam_on_summary);
} else {
- mPreference.setSummary(R.string.android_beam_off_summary);
+ mPreference.setSummary(R.string.off);
}
break;
case NfcAdapter.STATE_TURNING_ON:
diff --git a/src/com/android/settings/notification/BubbleSummaryNotificationPreferenceController.java b/src/com/android/settings/notification/BubbleSummaryNotificationPreferenceController.java
index 3dac732..78ba9ea 100644
--- a/src/com/android/settings/notification/BubbleSummaryNotificationPreferenceController.java
+++ b/src/com/android/settings/notification/BubbleSummaryNotificationPreferenceController.java
@@ -44,7 +44,7 @@
return mContext.getString(
areBubblesEnabled()
? R.string.notifications_bubble_setting_on_summary
- : R.string.switch_off_text);
+ : R.string.off);
}
@Override
diff --git a/src/com/android/settings/notification/SpatialAudioParentPreferenceController.java b/src/com/android/settings/notification/SpatialAudioParentPreferenceController.java
index 8ae0493..5f2a9cb 100644
--- a/src/com/android/settings/notification/SpatialAudioParentPreferenceController.java
+++ b/src/com/android/settings/notification/SpatialAudioParentPreferenceController.java
@@ -71,7 +71,7 @@
return mContext.getString(R.string.spatial_summary_on_one,
mContext.getString(R.string.spatial_audio_wired_headphones));
} else {
- return mContext.getString(R.string.spatial_summary_off);
+ return mContext.getString(R.string.off);
}
}
}
diff --git a/src/com/android/settings/notification/zen/ZenModeSettings.java b/src/com/android/settings/notification/zen/ZenModeSettings.java
index a707e53..b849edf 100644
--- a/src/com/android/settings/notification/zen/ZenModeSettings.java
+++ b/src/com/android/settings/notification/zen/ZenModeSettings.java
@@ -194,7 +194,7 @@
String description = ZenModeConfig.getDescription(mContext, true, config, false);
if (description == null) {
- return mContext.getString(R.string.zen_mode_sound_summary_on);
+ return mContext.getString(R.string.on);
} else {
return mContext.getString(R.string.zen_mode_sound_summary_on_with_info,
description);
diff --git a/src/com/android/settings/notification/zen/ZenModeSettingsFooterPreferenceController.java b/src/com/android/settings/notification/zen/ZenModeSettingsFooterPreferenceController.java
index 6a57441..1964ccd 100644
--- a/src/com/android/settings/notification/zen/ZenModeSettingsFooterPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenModeSettingsFooterPreferenceController.java
@@ -274,7 +274,7 @@
}
private int getAllowRes(boolean allow) {
- return allow ? R.string.zen_mode_sound_summary_on : R.string.switch_off_text;
+ return allow ? R.string.on : R.string.off;
}
@Override
diff --git a/src/com/android/settings/notification/zen/ZenRulePreference.java b/src/com/android/settings/notification/zen/ZenRulePreference.java
index 8cf3106..ee13c28 100644
--- a/src/com/android/settings/notification/zen/ZenRulePreference.java
+++ b/src/com/android/settings/notification/zen/ZenRulePreference.java
@@ -151,7 +151,7 @@
}
return (rule == null || !rule.isEnabled())
- ? mContext.getResources().getString(R.string.switch_off_text)
- : mContext.getResources().getString(R.string.switch_on_text);
+ ? mContext.getResources().getString(R.string.off)
+ : mContext.getResources().getString(R.string.on);
}
}
diff --git a/src/com/android/settings/print/PrintSettingPreferenceController.java b/src/com/android/settings/print/PrintSettingPreferenceController.java
index c0adfa3..d4ae311 100644
--- a/src/com/android/settings/print/PrintSettingPreferenceController.java
+++ b/src/com/android/settings/print/PrintSettingPreferenceController.java
@@ -116,7 +116,7 @@
final List<PrintServiceInfo> services =
mPrintManager.getPrintServices(PrintManager.ENABLED_SERVICES);
if (services == null || services.isEmpty()) {
- return mContext.getText(R.string.print_settings_summary_no_service);
+ return mContext.getText(R.string.off);
} else {
final int count = services.size();
return mContext.getResources().getQuantityString(
diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java
index ed21b6f..46250c7 100644
--- a/src/com/android/settings/print/PrintSettingsFragment.java
+++ b/src/com/android/settings/print/PrintSettingsFragment.java
@@ -204,9 +204,9 @@
preference.setPersistent(false);
if (service.isEnabled()) {
- preference.setSummary(getString(R.string.print_feature_state_on));
+ preference.setSummary(getString(R.string.on));
} else {
- preference.setSummary(getString(R.string.print_feature_state_off));
+ preference.setSummary(getString(R.string.off));
}
Drawable drawable = service.getResolveInfo().loadIcon(pm);
diff --git a/src/com/android/settings/security/ScreenPinningPreferenceController.java b/src/com/android/settings/security/ScreenPinningPreferenceController.java
index c72d018..dae6b8e 100644
--- a/src/com/android/settings/security/ScreenPinningPreferenceController.java
+++ b/src/com/android/settings/security/ScreenPinningPreferenceController.java
@@ -38,7 +38,7 @@
public CharSequence getSummary() {
return Settings.System.getInt(mContext.getContentResolver(),
Settings.System.LOCK_TO_APP_ENABLED, 0) != 0
- ? mContext.getText(R.string.screen_pinning_switch_on_text)
- : mContext.getText(R.string.screen_pinning_switch_off_text);
+ ? mContext.getText(R.string.on)
+ : mContext.getText(R.string.off);
}
}
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 274d40a..2c797bb 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -279,7 +279,7 @@
final SettingsActivity activity = (SettingsActivity) getActivity();
final SettingsMainSwitchBar switchBar = activity.getSwitchBar();
switchBar.setTitle(getContext().getString(R.string.multiple_users_main_switch_title));
- if (mUserCaps.mIsAdmin) {
+ if (isCurrentUserAdmin()) {
switchBar.show();
} else {
switchBar.hide();
@@ -358,7 +358,7 @@
mMePreference = new UserPreference(getPrefContext(), null /* attrs */, myUserId);
mMePreference.setKey(KEY_USER_ME);
mMePreference.setOnPreferenceClickListener(this);
- if (mUserCaps.mIsAdmin) {
+ if (isCurrentUserAdmin()) {
mMePreference.setSummary(R.string.user_admin);
}
@@ -449,10 +449,7 @@
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
int pos = 0;
- // TODO(b/191509236): The menu item does not need to be accessible for guest users,
- // regardless of mGuestUserAutoCreated
- if (!mUserCaps.mIsAdmin && canSwitchUserNow() && !(isCurrentUserGuest()
- && mGuestUserAutoCreated)) {
+ if (!isCurrentUserAdmin() && canSwitchUserNow() && !isCurrentUserGuest()) {
String nickname = mUserManager.getUserName();
MenuItem removeThisUser = menu.add(0, MENU_REMOVE_USER, pos++,
getResources().getString(R.string.user_remove_user_menu, nickname));
@@ -1211,12 +1208,12 @@
// don't show the guest user icon, instead we show two preferences for guest user to
// exit and reset itself. Hence we don't add mMePreference, i.e. guest user to the
// list of users visible in the UI.
- if (!mUserCaps.mIsGuest) {
+ if (!isCurrentUserGuest()) {
userPreferences.add(mMePreference);
}
boolean canOpenUserDetails =
- mUserCaps.mIsAdmin || (canSwitchUserNow() && !mUserCaps.mDisallowSwitchUser);
+ isCurrentUserAdmin() || (canSwitchUserNow() && !mUserCaps.mDisallowSwitchUser);
for (UserInfo user : users) {
if (user.isGuest()) {
// Guest user is added to guest category via updateGuestCategory
@@ -1341,6 +1338,10 @@
return mUserCaps.mIsGuest;
}
+ private boolean isCurrentUserAdmin() {
+ return mUserCaps.mIsAdmin;
+ }
+
private boolean canSwitchUserNow() {
return mUserManager.getUserSwitchability() == UserManager.SWITCHABILITY_STATUS_OK;
}
@@ -1388,7 +1389,7 @@
UserPreference pref = null;
boolean isGuestAlreadyCreated = false;
boolean canOpenUserDetails =
- mUserCaps.mIsAdmin || (canSwitchUserNow() && !mUserCaps.mDisallowSwitchUser);
+ isCurrentUserAdmin() || (canSwitchUserNow() && !mUserCaps.mDisallowSwitchUser);
mGuestUserCategory.removeAll();
mGuestUserCategory.setVisible(false);
@@ -1436,7 +1437,7 @@
// "reset guest on exit" preference is shown hence also make guest category visible
mGuestUserCategory.setVisible(true);
}
- if (mUserCaps.mIsGuest) {
+ if (isCurrentUserGuest()) {
// guest category is not visible for guest user.
mGuestUserCategory.setVisible(false);
}
diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java
index de0d98b..7d47457 100644
--- a/src/com/android/settings/widget/SwitchBar.java
+++ b/src/com/android/settings/widget/SwitchBar.java
@@ -38,7 +38,6 @@
import android.widget.TextView;
import androidx.annotation.ColorInt;
-import androidx.annotation.StringRes;
import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
@@ -135,7 +134,7 @@
lp.setMarginEnd(switchBarMarginEnd);
setBackgroundColor(mBackgroundColor);
- setSwitchBarText(R.string.switch_on_text, R.string.switch_off_text);
+ setSwitchBarText(R.string.on, R.string.off);
addOnSwitchChangeListener(
(switchView, isChecked) -> setTextViewLabelAndBackground(isChecked));
diff --git a/src/com/android/settings/wifi/WifiSummaryUpdater.java b/src/com/android/settings/wifi/WifiSummaryUpdater.java
index 93bbe0f..030db5a 100644
--- a/src/com/android/settings/wifi/WifiSummaryUpdater.java
+++ b/src/com/android/settings/wifi/WifiSummaryUpdater.java
@@ -87,7 +87,7 @@
@Override
public String getSummary() {
if (!mWifiTracker.enabled) {
- return mContext.getString(R.string.switch_off_text);
+ return mContext.getString(R.string.off);
}
if (!mWifiTracker.connected) {
return mContext.getString(R.string.disconnected);
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
index 891439e..433fe77 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
@@ -187,7 +187,7 @@
mServiceInfo, SERVICE_ENABLED);
assertThat(summary).isEqualTo(
- mContext.getString(R.string.accessibility_summary_state_enabled));
+ mContext.getString(R.string.on));
}
@Test
@@ -198,13 +198,13 @@
mServiceInfo, SERVICE_DISABLED);
assertThat(summary).isEqualTo(
- mContext.getString(R.string.accessibility_summary_state_disabled));
+ mContext.getString(R.string.off));
}
@Test
public void getServiceSummary_enableServiceAndHasSummary_showsEnabledSummary() {
final String service_enabled = mContext.getString(
- R.string.accessibility_summary_state_enabled);
+ R.string.on);
doReturn(DEFAULT_SUMMARY).when(mServiceInfo).loadSummary(any());
final CharSequence summary = AccessibilitySettings.getServiceSummary(mContext,
@@ -218,7 +218,7 @@
@Test
public void getServiceSummary_disableServiceAndHasSummary_showsCombineDisabledSummary() {
final String service_disabled = mContext.getString(
- R.string.accessibility_summary_state_disabled);
+ R.string.off);
doReturn(DEFAULT_SUMMARY).when(mServiceInfo).loadSummary(any());
final CharSequence summary = AccessibilitySettings.getServiceSummary(mContext,
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityUtilTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityUtilTest.java
index 83c5bc2..c89d526 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityUtilTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityUtilTest.java
@@ -80,7 +80,7 @@
final CharSequence result = AccessibilityUtil.getSummary(mContext, SECURE_TEST_KEY);
assertThat(result)
- .isEqualTo(mContext.getText(R.string.accessibility_feature_state_on));
+ .isEqualTo(mContext.getText(R.string.on));
}
@Test
@@ -90,7 +90,7 @@
final CharSequence result = AccessibilityUtil.getSummary(mContext, SECURE_TEST_KEY);
assertThat(result)
- .isEqualTo(mContext.getText(R.string.accessibility_feature_state_off));
+ .isEqualTo(mContext.getText(R.string.off));
}
@Test
@@ -98,7 +98,7 @@
final CharSequence result = AccessibilityUtil.getSummary(mContext, SECURE_TEST_KEY);
assertThat(result)
- .isEqualTo(mContext.getText(R.string.accessibility_feature_state_off));
+ .isEqualTo(mContext.getText(R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java
index d670ee8..b959483 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AutoclickPreferenceControllerTest.java
@@ -55,7 +55,7 @@
Settings.Secure.ACCESSIBILITY_AUTOCLICK_ENABLED, 0);
assertThat(mController.getSummary())
- .isEqualTo(mContext.getText(R.string.accessibility_feature_state_off));
+ .isEqualTo(mContext.getText(R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/accessibility/CaptioningPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/CaptioningPreferenceControllerTest.java
index c44bed1..9fb7ea4 100644
--- a/tests/robotests/src/com/android/settings/accessibility/CaptioningPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/CaptioningPreferenceControllerTest.java
@@ -58,7 +58,7 @@
Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, ON);
assertThat(mController.getSummary()).isEqualTo(
- mContext.getText(R.string.accessibility_feature_state_on));
+ mContext.getText(R.string.on));
}
@Test
@@ -67,6 +67,6 @@
Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, OFF);
assertThat(mController.getSummary()).isEqualTo(
- mContext.getText(R.string.accessibility_feature_state_off));
+ mContext.getText(R.string.off));
}
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/ColorInversionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ColorInversionPreferenceControllerTest.java
index e034498..47cfdaf 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ColorInversionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ColorInversionPreferenceControllerTest.java
@@ -52,7 +52,7 @@
DISPLAY_INVERSION_ENABLED, State.ON);
assertThat(mController.getSummary().toString().contains(
- mContext.getText(R.string.accessibility_feature_state_on))).isTrue();
+ mContext.getText(R.string.on))).isTrue();
}
@Test
@@ -61,7 +61,7 @@
DISPLAY_INVERSION_ENABLED, State.OFF);
assertThat(mController.getSummary().toString().contains(
- mContext.getText(R.string.accessibility_feature_state_off))).isTrue();
+ mContext.getText(R.string.off))).isTrue();
}
@Retention(RetentionPolicy.SOURCE)
diff --git a/tests/robotests/src/com/android/settings/accessibility/DaltonizerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/DaltonizerPreferenceControllerTest.java
index 1a00cc1..c02131b 100644
--- a/tests/robotests/src/com/android/settings/accessibility/DaltonizerPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/DaltonizerPreferenceControllerTest.java
@@ -50,7 +50,7 @@
Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, ON);
assertThat(mController.getSummary().toString().contains(
- mContext.getText(R.string.accessibility_feature_state_on))).isTrue();
+ mContext.getText(R.string.on))).isTrue();
}
@Test
@@ -59,6 +59,6 @@
Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, OFF);
assertThat(mController.getSummary().toString().contains(
- mContext.getText(R.string.accessibility_feature_state_off))).isTrue();
+ mContext.getText(R.string.off))).isTrue();
}
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationGesturesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationGesturesPreferenceControllerTest.java
index c7d70e0..8ccde4f 100644
--- a/tests/robotests/src/com/android/settings/accessibility/MagnificationGesturesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationGesturesPreferenceControllerTest.java
@@ -64,13 +64,13 @@
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, ON);
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
- .isEqualTo(mContext.getString(R.string.accessibility_feature_state_on));
+ .isEqualTo(mContext.getString(R.string.on));
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, OFF);
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
- .isEqualTo(mContext.getString(R.string.accessibility_feature_state_off));
+ .isEqualTo(mContext.getString(R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationNavbarPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationNavbarPreferenceControllerTest.java
index 83fe496..b2427c6 100644
--- a/tests/robotests/src/com/android/settings/accessibility/MagnificationNavbarPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationNavbarPreferenceControllerTest.java
@@ -89,13 +89,13 @@
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, ON);
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
- .isEqualTo(mContext.getText(R.string.accessibility_feature_state_on));
+ .isEqualTo(mContext.getText(R.string.on));
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, OFF);
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
- .isEqualTo(mContext.getText(R.string.accessibility_feature_state_off));
+ .isEqualTo(mContext.getText(R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/accessibility/VibrationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/VibrationPreferenceControllerTest.java
index a045dea..c266b56 100644
--- a/tests/robotests/src/com/android/settings/accessibility/VibrationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/VibrationPreferenceControllerTest.java
@@ -92,7 +92,7 @@
controller.updateState(mPreference);
assertThat(mPreference.getSummary().toString()).isEqualTo(
- mContext.getString(R.string.accessibility_vibration_settings_state_on));
+ mContext.getString(R.string.on));
}
@Test
@@ -103,7 +103,7 @@
controller.updateState(mPreference);
assertThat(mPreference.getSummary().toString()).isEqualTo(
- mContext.getString(R.string.accessibility_vibration_settings_state_on));
+ mContext.getString(R.string.on));
}
@Test
@@ -114,7 +114,7 @@
controller.updateState(mPreference);
assertThat(mPreference.getSummary().toString()).isEqualTo(
- mContext.getString(R.string.accessibility_vibration_settings_state_off));
+ mContext.getString(R.string.off));
}
private VibrationPreferenceController createPreferenceController() {
diff --git a/tests/robotests/src/com/android/settings/backup/BackupDataPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/backup/BackupDataPreferenceControllerTest.java
index 1a6537b..98f48f5 100644
--- a/tests/robotests/src/com/android/settings/backup/BackupDataPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/backup/BackupDataPreferenceControllerTest.java
@@ -73,7 +73,7 @@
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
- .isEqualTo(mContext.getString(R.string.accessibility_feature_state_on));
+ .isEqualTo(mContext.getString(R.string.on));
}
@Test
@@ -83,7 +83,7 @@
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
- .isEqualTo(mContext.getString(R.string.accessibility_feature_state_off));
+ .isEqualTo(mContext.getString(R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/backup/BackupSettingsHelperTest.java b/tests/robotests/src/com/android/settings/backup/BackupSettingsHelperTest.java
index b6ef32c..6e922dd 100644
--- a/tests/robotests/src/com/android/settings/backup/BackupSettingsHelperTest.java
+++ b/tests/robotests/src/com/android/settings/backup/BackupSettingsHelperTest.java
@@ -90,7 +90,7 @@
String backupSummary = mBackupSettingsHelper.getSummary();
- assertThat(backupSummary).isEqualTo(mContext.getString(R.string.backup_summary_state_on));
+ assertThat(backupSummary).isEqualTo(mContext.getString(R.string.on));
}
@Test
@@ -100,7 +100,7 @@
String backupSummary = mBackupSettingsHelper.getSummary();
- assertThat(backupSummary).isEqualTo(mContext.getString(R.string.backup_summary_state_off));
+ assertThat(backupSummary).isEqualTo(mContext.getString(R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java
index a198d86..54a7fb1 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java
@@ -22,7 +22,6 @@
import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
-import android.widget.Button;
import androidx.appcompat.app.AlertDialog;
@@ -66,6 +65,23 @@
@Test
public void fingerprintEnroll_showsAlert_whenClickingSkip() {
+ final AlertDialog alertDialog = setupAlertDialog();
+ final ShadowAlertDialogCompat shadowAlertDialog = ShadowAlertDialogCompat.shadowOf(
+ alertDialog);
+ final int titleRes = R.string.setup_fingerprint_enroll_skip_title;
+
+ assertThat(application.getString(titleRes)).isEqualTo(shadowAlertDialog.getTitle());
+ }
+
+ @Test
+ public void fingerprintEnroll_showsAlert_setSudTheme() {
+ final AlertDialog alertDialog = setupAlertDialog();
+
+ assertThat(alertDialog.getContext().getThemeResId()).isEqualTo(
+ R.style.GlifV2ThemeAlertDialog);
+ }
+
+ private AlertDialog setupAlertDialog() {
final Intent intent = new Intent()
// Set the challenge token so the confirm screen will not be shown
.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0]);
@@ -80,9 +96,6 @@
final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(alertDialog).isNotNull();
- final ShadowAlertDialogCompat shadowAlertDialog = ShadowAlertDialogCompat.shadowOf(
- alertDialog);
- final int titleRes = R.string.setup_fingerprint_enroll_skip_title;
- assertThat(application.getString(titleRes)).isEqualTo(shadowAlertDialog.getTitle());
+ return alertDialog;
}
}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothSummaryUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothSummaryUpdaterTest.java
index 2aca4a3..dcd45ce 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothSummaryUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothSummaryUpdaterTest.java
@@ -132,7 +132,7 @@
mSummaryUpdater.onBluetoothStateChanged(BluetoothAdapter.STATE_OFF);
- verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_disabled));
+ verify(mListener).onSummaryChanged(mContext.getString(R.string.off));
}
@Test
@@ -197,12 +197,12 @@
mShadowBluetoothAdapter.setEnabled(false);
mSummaryUpdater.onBluetoothStateChanged(BluetoothAdapter.STATE_OFF);
- verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_disabled));
+ verify(mListener).onSummaryChanged(mContext.getString(R.string.off));
// Turning ON means not enabled
mSummaryUpdater.onBluetoothStateChanged(BluetoothAdapter.STATE_TURNING_ON);
// There should still be only one invocation of disabled message
- verify(mListener).onSummaryChanged(mContext.getString(R.string.bluetooth_disabled));
+ verify(mListener).onSummaryChanged(mContext.getString(R.string.off));
mShadowBluetoothAdapter.setEnabled(true);
mDeviceConnected[0] = false;
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentControllerTest.java
index 8acb81c..c894716 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentControllerTest.java
@@ -92,13 +92,13 @@
public void getSummary_nfcOn_shouldProvideOnSummary() {
mShadowNfcAdapter.setEnabled(true);
assertThat(mController.getSummary().toString()).contains(
- mContext.getString(R.string.switch_on_text));
+ mContext.getString(R.string.on));
}
@Test
public void getSummary_nfcOff_shouldProvideOffSummary() {
mShadowNfcAdapter.setEnabled(false);
assertThat(mController.getSummary().toString()).contains(
- mContext.getString(R.string.switch_off_text));
+ mContext.getString(R.string.off));
}
}
diff --git a/tests/robotests/src/com/android/settings/development/NfcSnoopLogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/NfcSnoopLogPreferenceControllerTest.java
new file mode 100644
index 0000000..4ea5475
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/development/NfcSnoopLogPreferenceControllerTest.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.development;
+
+import static com.android.settings.development.NfcSnoopLogPreferenceController
+ .NFCSNOOP_MODE_FILTERED;
+import static com.android.settings.development.NfcSnoopLogPreferenceController
+ .NFCSNOOP_MODE_FULL;
+import static com.android.settings.development.NfcSnoopLogPreferenceController
+ .NFC_NFCSNOOP_LOG_MODE_PROPERTY;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.os.SystemProperties;
+
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(RobolectricTestRunner.class)
+public class NfcSnoopLogPreferenceControllerTest {
+ @Mock
+ private PreferenceScreen mPreferenceScreen;
+ @Mock
+ private DevelopmentSettingsDashboardFragment mFragment;
+
+ private Context mContext;
+ private SwitchPreference mPreference;
+ private NfcSnoopLogPreferenceController mController;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ mPreference = new SwitchPreference(mContext);
+ mController = spy(new NfcSnoopLogPreferenceController(mContext, mFragment));
+ when(mPreferenceScreen.findPreference(mController.getPreferenceKey()))
+ .thenReturn(mPreference);
+ mController.displayPreference(mPreferenceScreen);
+ }
+
+ @Test
+ public void onNfcRebootDialogConfirmed_nfcSnoopLogDisabled_shouldChangeProperty() {
+ SystemProperties.set(NFC_NFCSNOOP_LOG_MODE_PROPERTY, NFCSNOOP_MODE_FILTERED);
+ mController.mChanged = true;
+
+ mController.onNfcRebootDialogConfirmed();
+
+ final String currentValue = SystemProperties.get(NFC_NFCSNOOP_LOG_MODE_PROPERTY);
+ assertThat(currentValue.equals(NFCSNOOP_MODE_FULL)).isTrue();
+ }
+
+ @Test
+ public void onNfcRebootDialogConfirmed_nfcSnoopLogEnabled_shouldChangeProperty() {
+ SystemProperties.set(NFC_NFCSNOOP_LOG_MODE_PROPERTY, NFCSNOOP_MODE_FULL);
+ mController.mChanged = true;
+
+ mController.onNfcRebootDialogConfirmed();
+
+ final String currentValue = SystemProperties.get(NFC_NFCSNOOP_LOG_MODE_PROPERTY);
+ assertThat(currentValue.equals(NFCSNOOP_MODE_FILTERED)).isTrue();
+ }
+
+ @Test
+ public void onNfcRebootDialogCanceled_shouldNotChangeProperty() {
+ SystemProperties.set(NFC_NFCSNOOP_LOG_MODE_PROPERTY, NFCSNOOP_MODE_FILTERED);
+ mController.mChanged = true;
+
+ mController.onNfcRebootDialogCanceled();
+
+ final String currentValue = SystemProperties.get(NFC_NFCSNOOP_LOG_MODE_PROPERTY);
+ assertThat(currentValue.equals(NFCSNOOP_MODE_FILTERED)).isTrue();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/development/NfcVerboseVendorLogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/NfcVerboseVendorLogPreferenceControllerTest.java
new file mode 100644
index 0000000..49ddd30
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/development/NfcVerboseVendorLogPreferenceControllerTest.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.development;
+
+import static com.android.settings.development.NfcVerboseVendorLogPreferenceController
+ .NFC_VERBOSE_VENDOR_LOG_PROPERTY;
+import static com.android.settings.development.NfcVerboseVendorLogPreferenceController
+ .VERBOSE_VENDOR_LOG_DISABLED;
+import static com.android.settings.development.NfcVerboseVendorLogPreferenceController
+ .VERBOSE_VENDOR_LOG_ENABLED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.os.SystemProperties;
+
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(RobolectricTestRunner.class)
+public class NfcVerboseVendorLogPreferenceControllerTest {
+ @Mock
+ private PreferenceScreen mPreferenceScreen;
+ @Mock
+ private DevelopmentSettingsDashboardFragment mFragment;
+
+ private Context mContext;
+ private SwitchPreference mPreference;
+ private NfcVerboseVendorLogPreferenceController mController;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ mPreference = new SwitchPreference(mContext);
+ mController = spy(new NfcVerboseVendorLogPreferenceController(mContext, mFragment));
+ when(mPreferenceScreen.findPreference(mController.getPreferenceKey()))
+ .thenReturn(mPreference);
+ mController.displayPreference(mPreferenceScreen);
+ }
+
+ @Test
+ public void onNfcRebootDialogConfirmed_nfcVendorLogDisabled_shouldChangeProperty() {
+ SystemProperties.set(NFC_VERBOSE_VENDOR_LOG_PROPERTY, VERBOSE_VENDOR_LOG_DISABLED);
+ mController.mChanged = true;
+
+ mController.onNfcRebootDialogConfirmed();
+
+ final String currentValue = SystemProperties.get(NFC_VERBOSE_VENDOR_LOG_PROPERTY);
+ assertThat(currentValue.equals(VERBOSE_VENDOR_LOG_ENABLED)).isTrue();
+ }
+
+ @Test
+ public void onNfcRebootDialogConfirmed_nfcVendorLogEnabled_shouldChangeProperty() {
+ SystemProperties.set(NFC_VERBOSE_VENDOR_LOG_PROPERTY, VERBOSE_VENDOR_LOG_ENABLED);
+ mController.mChanged = true;
+
+ mController.onNfcRebootDialogConfirmed();
+
+ final String currentValue = SystemProperties.get(NFC_VERBOSE_VENDOR_LOG_PROPERTY);
+ assertThat(currentValue.equals(VERBOSE_VENDOR_LOG_DISABLED)).isTrue();
+ }
+
+ @Test
+ public void onNfcRebootDialogCanceled_shouldNotChangeProperty() {
+ SystemProperties.set(NFC_VERBOSE_VENDOR_LOG_PROPERTY, VERBOSE_VENDOR_LOG_DISABLED);
+ mController.mChanged = true;
+
+ mController.onNfcRebootDialogCanceled();
+
+ final String currentValue = SystemProperties.get(NFC_VERBOSE_VENDOR_LOG_PROPERTY);
+ assertThat(currentValue.equals(VERBOSE_VENDOR_LOG_DISABLED)).isTrue();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
index 0229173..4fa0003 100644
--- a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
@@ -109,7 +109,7 @@
mController.setChecked(true);
assertThat(mController.getSummary())
- .isEqualTo(mContext.getText(R.string.auto_brightness_summary_on));
+ .isEqualTo(mContext.getText(R.string.on));
}
@Test
@@ -117,7 +117,7 @@
mController.setChecked(false);
assertThat(mController.getSummary())
- .isEqualTo(mContext.getText(R.string.auto_brightness_summary_off));
+ .isEqualTo(mContext.getText(R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceControllerTest.java
index 39fdb04..6b8d706 100644
--- a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceControllerTest.java
@@ -83,9 +83,9 @@
doReturn(PACKAGE_NAME).when(mPackageManager).getRotationResolverPackageName();
doReturn(PackageManager.PERMISSION_GRANTED).when(mPackageManager).checkPermission(
Manifest.permission.CAMERA, PACKAGE_NAME);
- when(mContext.getString(R.string.auto_rotate_option_off))
+ when(mContext.getString(R.string.off))
.thenReturn("Off");
- when(mContext.getString(R.string.auto_rotate_option_on))
+ when(mContext.getString(R.string.on))
.thenReturn("On");
when(mContext.getString(R.string.auto_rotate_option_face_based))
.thenReturn("On - Face-based");
diff --git a/tests/robotests/src/com/android/settings/dream/DreamSettingsTest.java b/tests/robotests/src/com/android/settings/dream/DreamSettingsTest.java
index a554564..4d0adb4 100644
--- a/tests/robotests/src/com/android/settings/dream/DreamSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/dream/DreamSettingsTest.java
@@ -29,10 +29,10 @@
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
import java.util.Arrays;
import java.util.List;
-import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class DreamSettingsTest {
@@ -96,7 +96,7 @@
when(mockBackend.isEnabled()).thenReturn(false);
assertThat(DreamSettings.getSummaryTextFromBackend(mockBackend, mockContext))
- .isEqualTo(mockContext.getString(R.string.screensaver_settings_summary_off));
+ .isEqualTo(mockContext.getString(R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/gestures/OneHandedEnablePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/OneHandedEnablePreferenceControllerTest.java
index d0f6485..0006485 100644
--- a/tests/robotests/src/com/android/settings/gestures/OneHandedEnablePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/OneHandedEnablePreferenceControllerTest.java
@@ -67,7 +67,7 @@
OneHandedSettingsUtils.setOneHandedModeEnabled(mContext, true);
assertThat(mController.getSummary())
- .isEqualTo(mContext.getText(R.string.switch_on_text));
+ .isEqualTo(mContext.getText(R.string.on));
}
@Test
@@ -75,6 +75,6 @@
OneHandedSettingsUtils.setOneHandedModeEnabled(mContext, false);
assertThat(mController.getSummary())
- .isEqualTo(mContext.getText(R.string.switch_off_text));
+ .isEqualTo(mContext.getText(R.string.off));
}
}
diff --git a/tests/robotests/src/com/android/settings/gestures/PreventRingingParentPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/PreventRingingParentPreferenceControllerTest.java
index 04467a4..8f06d37 100644
--- a/tests/robotests/src/com/android/settings/gestures/PreventRingingParentPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/PreventRingingParentPreferenceControllerTest.java
@@ -137,7 +137,7 @@
VOLUME_HUSH_OFF);
mController.updateState(mPreference);
assertThat(mPreference.getSummary()).isEqualTo(mContext.getResources().getText(
- R.string.switch_off_text));
+ R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/inputmethod/SpellCheckerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/SpellCheckerPreferenceControllerTest.java
index b050970..e13e2a7 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/SpellCheckerPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/SpellCheckerPreferenceControllerTest.java
@@ -97,7 +97,7 @@
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
- .isEqualTo(mAppContext.getString(R.string.switch_off_text));
+ .isEqualTo(mAppContext.getString(R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/location/LocationForWorkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/LocationForWorkPreferenceControllerTest.java
index 03f4663..a8a1a86 100644
--- a/tests/robotests/src/com/android/settings/location/LocationForWorkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/LocationForWorkPreferenceControllerTest.java
@@ -97,7 +97,7 @@
verify(mUserManager)
.setUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, false, mUserHandle);
- verify(mPreference).setSummary(R.string.switch_on_text);
+ verify(mPreference).setSummary(R.string.on);
}
@Test
@@ -109,7 +109,7 @@
verify(mUserManager)
.setUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, true, mUserHandle);
- verify(mPreference).setSummary(R.string.switch_off_text);
+ verify(mPreference).setSummary(R.string.off);
}
@Test
@@ -147,7 +147,7 @@
mController.onLocationModeChanged(Settings.Secure.LOCATION_MODE_BATTERY_SAVING, false);
verify(mPreference).setEnabled(true);
- verify(mPreference).setSummary(R.string.switch_on_text);
+ verify(mPreference).setSummary(R.string.on);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java
index f0bc705..db809f3 100644
--- a/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java
@@ -52,7 +52,7 @@
public void getSummary_whenLocationIsOff_shouldReturnStringForOff() {
mLocationManager.setLocationEnabledForUser(false, android.os.Process.myUserHandle());
assertThat(mController.getSummary()).isEqualTo(
- mContext.getString(R.string.location_settings_summary_location_off));
+ mContext.getString(R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityPreferenceControllerTest.java
index 9ba6238..654d3bf 100644
--- a/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/AdaptiveConnectivityPreferenceControllerTest.java
@@ -74,7 +74,7 @@
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.ADAPTIVE_CONNECTIVITY_ENABLED, 1);
- assertThat(mController.getSummary()).isEqualTo(mContext.getString(R.string.switch_on_text));
+ assertThat(mController.getSummary()).isEqualTo(mContext.getString(R.string.on));
}
@Test
@@ -83,6 +83,6 @@
Settings.Secure.ADAPTIVE_CONNECTIVITY_ENABLED, 0);
assertThat(mController.getSummary())
- .isEqualTo(mContext.getString(R.string.switch_off_text));
+ .isEqualTo(mContext.getString(R.string.off));
}
}
diff --git a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java
index 057b6cb..71da26e 100644
--- a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java
@@ -224,7 +224,7 @@
when(lp.getValidatedPrivateDnsServers()).thenReturn(NON_EMPTY_ADDRESS_LIST);
updateLinkProperties(lp);
mController.updateState(mPreference);
- verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_on));
+ verify(mPreference).setSummary(getResourceString(R.string.on));
reset(mPreference);
lp = mock(LinkProperties.class);
diff --git a/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java
index 9aa79ff..5cec125 100644
--- a/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java
@@ -139,7 +139,7 @@
when(mTetheringManager.getTetherableWifiRegexs()).thenReturn(new String[]{"456"});
mController.updateSummary();
- verify(mPreference).setSummary(R.string.switch_off_text);
+ verify(mPreference).setSummary(R.string.off);
}
@Test
@@ -169,7 +169,7 @@
ReflectionHelpers.getField(mController, "mAirplaneModeObserver");
observer.onChange(true, Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON));
- verify(mPreference).setSummary(R.string.switch_off_text);
+ verify(mPreference).setSummary(R.string.off);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/network/apn/ApnEditorTest.java b/tests/robotests/src/com/android/settings/network/apn/ApnEditorTest.java
index 0a430cd..f03b6d8 100644
--- a/tests/robotests/src/com/android/settings/network/apn/ApnEditorTest.java
+++ b/tests/robotests/src/com/android/settings/network/apn/ApnEditorTest.java
@@ -17,14 +17,15 @@
package com.android.settings.network.apn;
import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
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.times;
import static org.mockito.Mockito.verify;
import android.content.ContentResolver;
@@ -34,22 +35,21 @@
import android.content.res.Resources;
import android.database.Cursor;
import android.net.Uri;
+import android.os.PersistableBundle;
+import android.telephony.CarrierConfigManager;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-
import androidx.fragment.app.FragmentActivity;
import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
import androidx.preference.MultiSelectListPreference;
import androidx.preference.SwitchPreference;
-
import com.android.settings.R;
import com.android.settings.network.ProxySubscriptionManager;
import com.android.settings.network.apn.ApnEditor.ApnData;
import com.android.settings.testutils.shadow.ShadowFragment;
-
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -103,13 +103,15 @@
private FragmentActivity mActivity;
@Mock
private ProxySubscriptionManager mProxySubscriptionMgr;
-
+ @Mock
+ private CarrierConfigManager mCarrierConfigManager;
@Captor
private ArgumentCaptor<Uri> mUriCaptor;
private ApnEditor mApnEditorUT;
private Context mContext;
private Resources mResources;
+ private PersistableBundle mBundle = new PersistableBundle();
@Before
public void setUp() {
@@ -127,6 +129,10 @@
doReturn(mContext.getTheme()).when(mActivity).getTheme();
doReturn(mContext.getContentResolver()).when(mActivity).getContentResolver();
+ doReturn(mCarrierConfigManager).when(mContext)
+ .getSystemService(Context.CARRIER_CONFIG_SERVICE);
+ doReturn(mBundle).when(mCarrierConfigManager).getConfigForSubId(anyInt());
+
setMockPreference(mContext);
mApnEditorUT.mApnData = new FakeApnData(APN_DATA);
mApnEditorUT.sNotSet = "Not Set";
@@ -379,6 +385,20 @@
verify(mApnEditorUT).finish();
}
+ @Test
+ public void testDeleteApnData_shouldNotPresentMenuWhenNotSupportAdding() {
+ mBundle.putBoolean(CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL, false);
+
+ MenuItem item = Mockito.mock(MenuItem.class);
+ Menu menu = Mockito.mock(Menu.class);
+ doReturn(item).when(menu).add(anyInt(), anyInt(), anyInt(), anyInt());
+
+ mApnEditorUT.getCarrierCustomizedConfig(mContext);
+ mApnEditorUT.onCreateOptionsMenu(menu, null);
+
+ verify(menu, times(0)).add(anyInt(), eq(ApnEditor.MENU_DELETE), anyInt(), anyInt());
+ }
+
@Test(expected = ClassCastException.class)
public void testApnData_invalidIntegerType_throwsInvalidTypeException() {
// GIVEN a ApnData constructed from cursor
diff --git a/tests/robotests/src/com/android/settings/print/PrintSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/print/PrintSettingsPreferenceControllerTest.java
index e24eb8f..c782d9b 100644
--- a/tests/robotests/src/com/android/settings/print/PrintSettingsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/print/PrintSettingsPreferenceControllerTest.java
@@ -144,7 +144,7 @@
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
- .isEqualTo(mContext.getString(R.string.print_settings_summary_no_service));
+ .isEqualTo(mContext.getString(R.string.off));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java
index 4f694bc..0b6643b 100644
--- a/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java
@@ -76,7 +76,7 @@
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
- .isEqualTo(mContext.getString(R.string.switch_off_text));
+ .isEqualTo(mContext.getString(R.string.off));
}
@Test
@@ -87,7 +87,7 @@
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
- .isEqualTo(mContext.getString(R.string.switch_on_text));
+ .isEqualTo(mContext.getString(R.string.on));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java b/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java
index 0c297f4..7eb2878 100644
--- a/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java
+++ b/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java
@@ -55,8 +55,8 @@
@Test
public void cycleChecked_defaultLabel_shouldUpdateTextAndBackground() {
- final int defaultOnText = R.string.switch_on_text;
- final int defaultOffText = R.string.switch_off_text;
+ final int defaultOnText = R.string.on;
+ final int defaultOffText = R.string.off;
assertThat(((TextView) mBar.findViewById(R.id.switch_text)).getText())
.isEqualTo(mContext.getString(defaultOffText));
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java
index 99040db..e060c0f 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java
@@ -110,7 +110,7 @@
mWifiTracker.enabled = false;
assertThat(mSummaryUpdater.getSummary())
- .isEqualTo(mContext.getString(R.string.switch_off_text));
+ .isEqualTo(mContext.getString(R.string.off));
}
@Test
diff --git a/tests/unit/src/com/android/settings/applications/appinfo/AppLocalePreferenceControllerTest.java b/tests/unit/src/com/android/settings/applications/appinfo/AppLocalePreferenceControllerTest.java
index 526b6cc..805041c 100644
--- a/tests/unit/src/com/android/settings/applications/appinfo/AppLocalePreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/applications/appinfo/AppLocalePreferenceControllerTest.java
@@ -19,7 +19,6 @@
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
-import android.util.FeatureFlagUtils;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -49,22 +48,10 @@
return mCanDisplayLocaleUi;
}
};
- FeatureFlagUtils
- .setEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION, true);
}
@Test
- public void getAvailabilityStatus_canShowUiButFeatureFlagOff_shouldReturnUnavailable() {
- mCanDisplayLocaleUi = true;
- FeatureFlagUtils
- .setEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION, false);
-
- assertThat(mController.getAvailabilityStatus())
- .isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
- }
-
- @Test
- public void getAvailabilityStatus_canShowUiAndFeatureFlagOn_shouldReturnAvailable() {
+ public void getAvailabilityStatus_canShowUi_shouldReturnAvailable() {
mCanDisplayLocaleUi = true;
assertThat(mController.getAvailabilityStatus())
@@ -72,20 +59,10 @@
}
@Test
- public void getAvailabilityStatus_featureFlagOnButCanNotShowUi_shouldReturnUnavailable() {
+ public void getAvailabilityStatus_canNotShowUi_shouldReturnUnavailable() {
mCanDisplayLocaleUi = false;
assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
}
-
- @Test
- public void getAvailabilityStatus_featureFlagOffAndCanNotShowUi_shouldReturnUnavailable() {
- mCanDisplayLocaleUi = false;
- FeatureFlagUtils
- .setEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION, false);
-
- assertThat(mController.getAvailabilityStatus())
- .isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
- }
}
diff --git a/tests/unit/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceControllerTest.java b/tests/unit/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceControllerTest.java
deleted file mode 100644
index 648c757..0000000
--- a/tests/unit/src/com/android/settings/applications/appinfo/ManageAppLocalePreferenceControllerTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.applications.appinfo;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.spy;
-
-import android.content.Context;
-import android.util.FeatureFlagUtils;
-
-import androidx.test.core.app.ApplicationProvider;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-
-import com.android.settings.core.BasePreferenceController;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-
-@RunWith(AndroidJUnit4.class)
-public class ManageAppLocalePreferenceControllerTest {
- private Context mContext;
- private ManageAppLocalePreferenceController mController;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- mContext = spy(ApplicationProvider.getApplicationContext());
- mController = spy(new ManageAppLocalePreferenceController(mContext, "a key"));
-
- FeatureFlagUtils
- .setEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION, true);
- }
-
- @Test
- public void getAvailabilityStatus_featureFlagOff_shouldReturnUnavailable() {
- FeatureFlagUtils
- .setEnabled(mContext, FeatureFlagUtils.SETTINGS_APP_LANGUAGE_SELECTION, false);
-
- assertThat(mController.getAvailabilityStatus())
- .isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
- }
-
- @Test
- public void getAvailabilityStatus_featureFlagOn_shouldReturnAvailable() {
- assertThat(mController.getAvailabilityStatus())
- .isEqualTo(BasePreferenceController.AVAILABLE);
- }
-}
diff --git a/tests/unit/src/com/android/settings/localepicker/LocaleHelperPreferenceControllerTest.java b/tests/unit/src/com/android/settings/localepicker/LocaleHelperPreferenceControllerTest.java
new file mode 100644
index 0000000..31b8e79
--- /dev/null
+++ b/tests/unit/src/com/android/settings/localepicker/LocaleHelperPreferenceControllerTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.localepicker;
+
+import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.os.Looper;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settingslib.widget.FooterPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class LocaleHelperPreferenceControllerTest {
+ private Context mContext;
+ private LocaleHelperPreferenceController mLocaleHelperPreferenceController;
+
+ @Mock
+ private FooterPreference mMockFooterPreference;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
+ mContext = ApplicationProvider.getApplicationContext();
+ mLocaleHelperPreferenceController = new LocaleHelperPreferenceController(mContext);
+ }
+
+ @Test
+ public void updateFooterPreference_setFooterPreference_hasClickAction() {
+ mLocaleHelperPreferenceController.updateFooterPreference(mMockFooterPreference);
+ verify(mMockFooterPreference).setLearnMoreText(anyString());
+ }
+}