diff --git a/Android.bp b/Android.bp
index bb9db22..24fc7e8 100644
--- a/Android.bp
+++ b/Android.bp
@@ -73,6 +73,7 @@
         "android.hardware.dumpstate-V1.0-java",
         "android.hardware.dumpstate-V1.1-java",
         "lottie",
+        "WifiTrackerLib",
     ],
 
     libs: [
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 627421d..85cf985 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -82,6 +82,7 @@
     <uses-permission android:name="android.permission.OEM_UNLOCK_STATE" />
     <uses-permission android:name="android.permission.MANAGE_USER_OEM_UNLOCK_STATE" />
     <uses-permission android:name="android.permission.OVERRIDE_WIFI_CONFIG" />
+    <uses-permission android:name="android.permission.RESTART_WIFI_SUBSYSTEM" />
     <uses-permission android:name="android.permission.MANAGE_FINGERPRINT" />
     <uses-permission android:name="android.permission.USE_BIOMETRIC" />
     <uses-permission android:name="android.permission.USE_BIOMETRIC_INTERNAL" />
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index f564eb5..679202b 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Toeganklikheidsknoppie en -gebaar"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Gebruik tans toeganklikheidsknoppie. Die gebaar is nie beskikbaar met 3-knoppienavigasie nie."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Kry vinnig toegang tot toeganklikheidskenmerke"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Kry van enige skerm af vinnig toegang tot toeganklikheidskenmerke. \n\nGaan na toeganklikheidinstellings en kies \'n kenmerk om te begin. Tik op die kortpad en kies die toeganklikheidknoppie of -gebaar."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Kry van enige skerm af vinnig toegang tot toeganklikheidskenmerke. \n\nGaan na toeganklikheidinstellings en kies \'n kenmerk om te begin. Tik op die kortpad en kies die toeganklikheidknoppie."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Gebruik knoppie of gebaar"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Ligging"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index ccadf9f..25ceb80 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"የተደራሽነት አዝራር እና የእጅ ምልክት"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"የተደራሽነት አዝራርን መጠቀም። የእጅ ምልክቱ በባለ3-አዝራር ዳሰሳ አይገኝም።"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"የተደራሽነት ባህሪያትን በፍጥነት ይድረሱባቸው"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"የተደራሽነት ባህሪያትን ከማንኛውም ማያ ገጽ ሆነው በፍጥነት ይድረሱ። \n\nለመጀመር ወደ የተደራሽነት ቅንብሮች ይሂዱ እና አንድ ባህሪ ይምረጡ። በአቋራጩ ላይ መታ ያድርጉ እና የተደራሽነት አዝራሩን ወይም ምልክት ይምረጡ።"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"የተደራሽነት ባህሪያትን ከማንኛውም ማያ ገጽ በፍጥነት ይድረሱ። \n\nለመጀመር ወደ የተደራሽነት ቅንብሮች ይሂዱ እና አንድ ባህሪ ይምረጡ። በአቋራጩ ላይ መታ ያድርጉ እና የተደራሽነት አዝራሩን ይምረጡ።"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"አዝራርን ወይም የእጅ ምልክትን ይጠቀሙ"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"አካባቢ"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 38f178b..df721c1 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -2466,7 +2466,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"إيماءة وزرّ أدوات تسهيل الاستخدام"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"استخدام زرّ أدوات تسهيل الاستخدام: لا تتوفّر إيماءة التنقُّل باستخدام ثلاثة أزرار"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"الوصول السريع إلى ميزات تسهيل الاستخدام"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
+    <!-- no translation found for accessibility_button_gesture_description (2717632658372117656) -->
     <skip />
     <string name="accessibility_button_description" msgid="7372405202698400339">"يمكنك الوصول بسرعة إلى ميزات تسهيل الاستخدام من أي شاشة. \n\nلبدء الاستخدام، انتقِل إلى إعدادات تسهيل الاستخدام واختَر ميزة. انقر على الاختصار واختَر زر أدوات تسهيل الاستخدام."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"استخدام الزرّ أو الإيماءة"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 7c988db..fa6a81b 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"সাধ্য-সুবিধাৰ বুটাম আৰু নিৰ্দেশ"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"সাধ্য-সুবিধাৰ বুটামটো ব্যৱহাৰ কৰি। ৩ টা বুটামেৰে কৰা নেভিগেশ্বনৰ বাবে নিৰ্দেশটো উপলব্ধ নহয়।"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"সাধ্য সুবিধাসমূহ ক্ষিপ্ৰতাৰে এক্সেছ কৰক"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"যিকোনো স্ক্ৰীনৰ পৰা ক্ষিপ্ৰতাৰে সাধ্য সুবিধাসমূহ এক্সেছ কৰক। \n\nআৰম্ভ কৰিবলৈ সাধ্য সুবিধাৰ ছেটিঙলৈ যাওক আৰু এটা সুবিধা বাছনি কৰক। শ্বৰ্টকাটটোত টিপক আৰু সাধ্য সুবিধাৰ বুটামটো অথবা নিৰ্দেশটো বাছনি কৰক।"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"যিকোনো স্ক্ৰীনৰ পৰা ক্ষিপ্ৰতাৰে সাধ্য সুবিধাসমূহ এক্সেছ কৰক। \n\nআৰম্ভ কৰিবলৈ সাধ্য সুবিধাৰ ছেটিঙলৈ যাওক আৰু এটা সুবিধা বাছনি কৰক। শ্বৰ্টকাটটোত টিপক আৰু সাধ্য সুবিধাৰ বুটামটো বাছনি কৰক।"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"বুটাম অথবা নিৰ্দেশ ব্যৱহাৰ কৰক"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"অৱস্থান"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 813840e..7ac36a6 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Jest və xüsusi imkanlar düyməsi"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Xüsusi imkanlar düyməsi istifadə edilir. 3 düyməli naviqasiyada jest əlçatmazdır."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Xüsusi imkanlara cəld keçid"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"İstənilən ekrandan əlçatımlılıq funksiyalarına sürətli giriş edin. \n\nBaşlamaq üçün əlçatımlılıq ayarlarına keçin və funksiya seçin. Qısayolun üzərinə toxunun və əlçatımlılıq düyməsini və ya jesti seçin."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"İstənilən pəncərədən xüsusi imkanlara cəld giriş. \n\nXüsusi imkanlar ayarlarını açıb gərəkli funksiyanı seçin. Cəld aktivləşmə vasitəsi olaraq xüsusi imkanlar düyməsini seçin."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Düymə və ya jestdən istifadə edin"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Məkan"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 6b5edcb..6830425 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -2377,8 +2377,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Dugme i pokret Pristupačnost"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Korišćenje dugmeta Pristupačnost. Pokret nije dostupan uz navigaciju pomoću 3 dugmeta."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Brzo pristupajte funkcijama pristupačnosti"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Brzo pristupajte funkcijama pristupačnosti sa bilo kog ekrana. \n\nDa biste započeli, idite u podešavanja pristupačnosti i izaberite funkciju. Dodirnite prečicu i izaberite dugme ili pokret Pristupačnost."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Brzo pristupajte funkcijama pristupačnosti sa bilo kog ekrana. \n\nDa biste započeli, idite u podešavanja pristupačnosti i izaberite funkciju. Dodirnite prečicu i izaberite dugme Pristupačnost."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Koristite dugme ili pokret"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Lokacija"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 105bdca..10287d8 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -2403,8 +2403,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Кнопка спец. магчымасцей; жэст"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Выкарыстанне кнопкі спецыяльных магчымасцей. Гэты жэст недаступны з 3-кнопачнай навігацыяй."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Хуткі доступ да спецыяльных магчымасцей"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Хуткі доступ да спецыяльных магчымасцей з любога экрана. \n\nКаб пачаць, адкрыйце налады спецыяльных магчымасцей і выберыце патрэбную функцыю. Націсніце ярлык і выберыце кнопку ці жэст спецыяльных магчымасцей."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Хуткі доступ да спецыяльных магчымасцей з любога экрана. \n\nКаб пачаць, адкрыйце налады спецыяльных магчымасцей і выберыце патрэбную функцыю. Націсніце ярлык і выберыце кнопку спецыяльных магчымасцей."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Скарыстаць кнопку ці жэст"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Месцазнаходжанне"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index ff5f718..943546a 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -2355,8 +2355,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Бутон и жест за достъпност"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Използване на бутона за достъпност. Жестът не е налице посредством навигиране с 3 бутона."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Бърз достъп до функциите за достъпност"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Осъществявайте бързо достъп до функциите за достъпност от всеки екран. \n\nЗа да започнете, отворете настройките за достъпност и изберете функция. Докоснете прекия път и изберете бутона или жеста за достъпност."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Осъществявайте бързо достъп до функциите за достъпност от всеки екран. \n\nЗа да започнете, отворете настройките за достъпност и изберете функция. Докоснете прекия път и изберете бутона за достъпност."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Използване на бутона или жеста"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Местоположение"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 1fd08b7..e825859 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -2373,7 +2373,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"অ্যাক্সেসিবিলিটি বোতাম &amp; জেসচার"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"অ্যাক্সেসিবিলিটি বোতাম ব্যবহার করা। ৩টি-বোতাম দিয়ে করা নেভিগেশন এর ক্ষেত্রে জেসচারটি কাজ করবে না।"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"সহজেই অ্যাক্সেসেবিলিটি ফিচার অ্যাক্সেস করুন"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
+    <!-- no translation found for accessibility_button_gesture_description (2717632658372117656) -->
     <skip />
     <string name="accessibility_button_description" msgid="7372405202698400339">"যেকোনও স্ক্রিন থেকে অ্যাক্সেসেবিলিটি ফিচার সহজেই অ্যাক্সেস করুন। \n\nচালু করতে, অ্যাক্সেসেবিলিটি সেটিংসে গিয়ে একটি ফিচার বেছে নিন। শর্টকার্টে ট্যাপ করে অ্যাক্সেসেবিলিটি বোতাম বেছে নিন।"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"বোতাম বা জেসচার ব্যবহার করুন"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 03d2178..3cb8479 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -2377,8 +2377,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Dugme za pristupačnost i pokret"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Korištenje dugmeta za pristupačnost. Pokret nije dostupan s navigiranjem pomoću 3 dugmeta."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Brzo pristupite funkcijama pristupačnosti"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Brzo pristupite funkcijama pristupačnosti s bilo kojeg ekrana. \n\nDa započnete, idite u postavke pristupačnosti i odaberite funkciju. Dodirnite prečicu i odaberite dugme za pristupačnost ili pokret."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Brzo pristupite funkcijama pristupačnosti s bilo kojeg ekrana. \n\nDa započnete, idite u postavke pristupačnosti i odaberite funkciju. Dodirnite prečicu i odaberite dugme za pristupačnost."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Korištenje dugmeta ili pokreta"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Lokacija"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 561a327..2867712 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Botó i gest d\'accessibilitat"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"S\'està utilitzant el botó d\'accessibilitat. El gest no està disponible amb la navegació amb 3 botons."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Accedeix ràpidament a les funcions d\'accessibilitat"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Accedeix ràpidament a les funcions d\'accessibilitat des de qualsevol pantalla. \n\nPer començar, ves a la configuració d\'accessibilitat i selecciona una funció. Toca la drecera i selecciona el botó o el gest d\'accessibilitat."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Accedeix ràpidament a les funcions d\'accessibilitat des de qualsevol pantalla. \n\nPer començar, ves a la configuració d\'accessibilitat i selecciona una funció. Toca la drecera i selecciona el botó d\'accessibilitat."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Utilitza el botó o el gest"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Ubicació"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 091afba..b29f1f2 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -2401,8 +2401,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Tlačítko a gesto přístupnosti."</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Použije se tlačítko přístupnosti. Toto gesto není k dispozici u navigace třemi tlačítky."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Rychlý přístup k funkcím pro usnadnění přístupu"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Funkce pro usnadnění přístupu lze snadno používat na libovolné obrazovce. \n\nPokud chcete začít, přejděte do nastavení funkcí pro usnadnění přístupu a vyberte funkci. Klepněte na zkratku a vyberte tlačítko přístupnosti nebo gesto."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Funkce pro usnadnění přístupu lze snadno používat na libovolné obrazovce. \n\nPokud chcete začít, přejděte do nastavení funkcí pro usnadnění přístupu a vyberte funkci. Klepněte na zkratku a vyberte tlačítko přístupnosti."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Použít tlačítko nebo gesto"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Umístění"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 8b26134..116ab69 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Knappen og bevægelsen Hjælpefunktioner"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Brug af knappen Hjælpefunktioner. Bevægelsen er ikke tilgængelig med navigation med tre knapper."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Få hurtigt adgang til hjælpefunktioner"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Få hurtigt adgang til hjælpefunktioner på enhver skærm. \n\nKom godt i gang ved at gå til indstillingerne for hjælpefunktioner og vælge en funktion. Tryk på genvejen, og vælg knappen Hjælpefunktioner eller bevægelsen for hjælpefunktioner."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Få hurtigt adgang til hjælpefunktioner på enhver skærm. \n\nKom godt i gang ved at gå til indstillingerne for hjælpefunktioner og vælge en funktion. Tryk på genvejen, og vælg knappen Hjælpefunktioner."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Brug knappen eller bevægelsen"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Placering"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 258bb2c..bc650c3 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -2359,8 +2359,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Bedienungshilfen &amp; Touch-Geste"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Schaltfläche „Bedienungshilfen“ wird verwendet. Bei Bedienung über 3 Schaltflächen ist die Touch-Geste nicht verfügbar."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Schnell auf Bedienungshilfen zugreifen"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Du kannst auf allen Bildschirmen schnell auf Bedienungshilfen zugreifen. \n\nGehe zuerst zu den Einstellungen für Bedienungshilfen und wähle eine Funktion aus. Tippe auf den Kurzbefehl und wähle die Schaltfläche „Bedienungshilfen“ aus oder nutze die entsprechende Touch-Geste."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Du kannst auf allen Bildschirmen schnell auf Bedienungshilfen zugreifen. \n\nGehe zuerst zu den Einstellungen für Bedienungshilfen und wähle eine Funktion aus. Tippe auf den Kurzbefehl und wähle die Schaltfläche „Bedienungshilfen“ aus."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Schaltfläche oder Touch-Geste verwenden"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Ort"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 9086362..ec39f1c 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Κουμπί και κίνηση προσβασιμότητας"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Χρήση του κουμπιού προσβασιμότητας. Η κίνηση δεν είναι διαθέσιμη με Πλοήγηση με τρία κουμπιά."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Γρήγορη πρόσβαση σε λειτουργίες προσβασιμότητας"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Αποκτήστε γρήγορα πρόσβαση σε λειτουργίες προσβασιμότητας από οποιαδήποτε οθόνη. \n\nΓια να ξεκινήσετε, μεταβείτε στις ρυθμίσεις προσβασιμότητας και επιλέξτε μια λειτουργία. Πατήστε τη συντόμευση και επιλέξτε το κουμπί ή την κίνηση προσβασιμότητας."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Αποκτήστε γρήγορα πρόσβαση σε λειτουργίες προσβασιμότητας από οποιαδήποτε οθόνη. \n\nΓια να ξεκινήσετε, μεταβείτε στις ρυθμίσεις προσβασιμότητας και επιλέξτε μια λειτουργία. Πατήστε τη συντόμευση και επιλέξτε το κουμπί προσβασιμότητας."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Χρήση κουμπιού ή κίνησης"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Τοποθεσία"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index b71ae40..649b6ac 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -2353,7 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Accessibility button &amp; gesture"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Using the accessibility button. The gesture isn’t available with 3-button navigation."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Quickly access accessibility features"</string>
-    <string name="accessibility_button_gesture_description" msgid="2516420653060025670">"Quickly access accessibility features from any screen.\n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the accessibility button.\n\nTo use the accessibility button in the navigation bar instead, switch to 2-button navigation or 3-button navigation."</string>
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Quickly access accessibility features from any screen. \n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the Accessibility button or gesture."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Quickly access accessibility features from any screen. \n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the Accessibility button."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Use button or gesture"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Location"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index afb8b67..88977bb 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -2353,7 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Accessibility button &amp; gesture"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Using the accessibility button. The gesture isn’t available with 3-button navigation."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Quickly access accessibility features"</string>
-    <string name="accessibility_button_gesture_description" msgid="2516420653060025670">"Quickly access accessibility features from any screen.\n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the accessibility button.\n\nTo use the accessibility button in the navigation bar instead, switch to 2-button navigation or 3-button navigation."</string>
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Quickly access accessibility features from any screen. \n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the Accessibility button or gesture."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Quickly access accessibility features from any screen. \n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the Accessibility button."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Use button or gesture"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Location"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 5e63533..3b40c45 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -2353,7 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Accessibility button &amp; gesture"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Using the accessibility button. The gesture isn’t available with 3-button navigation."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Quickly access accessibility features"</string>
-    <string name="accessibility_button_gesture_description" msgid="2516420653060025670">"Quickly access accessibility features from any screen.\n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the accessibility button.\n\nTo use the accessibility button in the navigation bar instead, switch to 2-button navigation or 3-button navigation."</string>
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Quickly access accessibility features from any screen. \n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the Accessibility button or gesture."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Quickly access accessibility features from any screen. \n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the Accessibility button."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Use button or gesture"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Location"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 6256ce1..c0e1931 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -2353,7 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Accessibility button &amp; gesture"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Using the accessibility button. The gesture isn’t available with 3-button navigation."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Quickly access accessibility features"</string>
-    <string name="accessibility_button_gesture_description" msgid="2516420653060025670">"Quickly access accessibility features from any screen.\n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the accessibility button.\n\nTo use the accessibility button in the navigation bar instead, switch to 2-button navigation or 3-button navigation."</string>
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Quickly access accessibility features from any screen. \n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the Accessibility button or gesture."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Quickly access accessibility features from any screen. \n\nTo get started, go to accessibility settings and select a feature. Tap on the shortcut and select the Accessibility button."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Use button or gesture"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Location"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index c8ce95e..2c2b41c 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -2353,7 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‏‏‎‏‏‏‏‏‎‏‎‎‏‏‏‎‎‎‏‏‎‏‏‏‎‎‏‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎Accessibility button &amp; gesture‎‏‎‎‏‎"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‎‏‏‏‏‎‏‎‎‎‎‎‏‏‎‎‏‏‏‏‎‎‏‎‏‎‏‎‏‏‏‎‏‏‎‏‏‎‎‏‏‏‏‎Using the accessibility button. The gesture isn’t available with 3-button navigation.‎‏‎‎‏‎"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‏‏‏‏‏‎‎‎‎‎‏‏‎‏‎‎‎‏‏‏‎‏‎‎‏‎‏‏‎‏‎‎‎‎‏‎‏‎‏‏‏‎Quickly access accessibility features‎‏‎‎‏‎"</string>
-    <string name="accessibility_button_gesture_description" msgid="2516420653060025670">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‏‎‏‏‏‎‏‏‎‎‎‎‎‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‎‏‏‎‏‏‎‎‎‏‏‎‎‏‎‏‏‎‏‏‎‏‎‏‎‎‎‏‏‎‎Quickly access accessibility features from any screen.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎To get started, go to accessibility settings and select a feature. Tap on the shortcut and select the accessibility button.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎To use the accessibility button in the navigation bar instead, switch to 2-button navigation or 3-button navigation.‎‏‎‎‏‎"</string>
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‏‎‏‏‎‏‏‎‏‏‏‏‏‎‎‎‏‎‎‎‎‎‎‏‎‎‎‏‎‎‎‎‎‏‎‎‎‏‎‏‎‏‎‎‎‏‎‎‏‎‎‏‏‎‎‎‎Quickly access accessibility features from any screen. ‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎To get started, go to accessibility settings and select a feature. Tap on the shortcut and select the accessibility button or gesture.‎‏‎‎‏‎"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‎‏‎‎‎‎‎‎‎‎‏‎‏‏‎‏‏‏‏‎‎‎‏‎‎‏‏‏‏‏‎‎‎‏‎‏‎‎‎‏‏‏‎‎‏‎‎‏‎‏‎‎‏‏‎Quickly access accessibility features from any screen. ‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎To get started, go to accessibility settings and select a feature. Tap on the shortcut and select the accessibility button.‎‏‎‎‏‎"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‎‏‏‎‎‏‎‎‏‎‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‎‏‎‏‎‎‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‎‏‎Use button or gesture‎‏‎‎‏‎"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‏‎‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎‎‏‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‏‎‏‏‎‎‏‎‎‎‏‎‏‏‏‎‎Location‎‏‎‎‏‎"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 32223fd..a275525 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -2355,8 +2355,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Botón de accesibilidad y gestos"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Se está usando el botón de accesibilidad. El gesto no está disponible con navegación con 3 botones."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Accede rápidamente a funciones de accesibilidad"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Accede rápidamente a las funciones de accesibilidad desde cualquier pantalla. \n\nPara comenzar, ve a la configuración de accesibilidad y selecciona una función. Presiona la combinación de teclas y selecciona el gesto o botón de accesibilidad."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Accede rápidamente a las funciones de accesibilidad desde cualquier pantalla. \n\nPara comenzar, ve a la configuración de accesibilidad y selecciona una función. Presiona la combinación de teclas y selecciona el botón de accesibilidad."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Usar botón o gesto"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Ubicación"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 28f4324..82114f4 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Botón y gesto de accesibilidad"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Usando el botón Accesibilidad. El gesto no está disponible si se usa la navegación con 3 botones."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Accede rápidamente a funciones de accesibilidad"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Accede rápidamente a las funciones de accesibilidad desde cualquier pantalla. \n\nPara empezar, ve a los ajustes de accesibilidad y elige una función. Toca el acceso directo y selecciona el botón o el gesto de accesibilidad."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Accede rápidamente a las funciones de accesibilidad desde cualquier pantalla. \n\nPara empezar, ve a los ajustes de accesibilidad y elige una función. Toca el acceso directo y selecciona el botón Accesibilidad."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Usar botón o gesto"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Ubicación"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 69d9fbb..4b9b63e 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -2355,8 +2355,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Juurdepääsetavuse nupp ja liigutus"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Juurdepääsetavuse nupu kasutamine. Liigutus ei ole kolme nupuga navigeerimise puhul saadaval."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Kiirjuurdepääs juurdepääsufunktsioonidele"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Pääsege juurdepääsufunktsioonidele kiiresti juurde igalt kuvalt. \n\nAlustamiseks avage juurdepääsetavuse seaded ja valige funktsioon. Puudutage otseteed ja valige juurdepääsetavuse nupp või juurdepääsuliigutus."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Pääsege juurdepääsufunktsioonidele kiiresti juurde igalt kuvalt. \n\nAlustamiseks avage juurdepääsetavuse seaded ja valige funktsioon. Puudutage otseteed ja valige juurdepääsetavuse nupp."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Nupu või liigutuse kasutamine"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Asukoht"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 4df40b3..87b195d 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Erabilerraztasun-botoia eta -keinua"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Erabili erabilerraztasun-botoia. Keinuak ez du funtzionatzen hiru botoiko nabigazioarekin."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Atzitu bizkor erabilerraztasun-eginbideak"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Atzitu bizkor erabilerraztasun-eginbideak edozein pantailatan. \n\nHasteko, joan erabilerraztasun-ezarpenetara eta hautatu eginbide bat. Sakatu lasterbidea eta, jarraian, sakatu Erabilerraztasuna botoia edo keinua."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Atzitu bizkor erabilerraztasun-eginbideak edozein pantailatan. \n\nHasteko, joan erabilerraztasun-ezarpenetara eta hautatu eginbide bat. Sakatu lasterbidea eta, jarraian, sakatu Erabilerraztasuna botoia."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Erabili botoia edo keinua"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Kokapena"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 30f31aa..6457538 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"دکمه دسترس‌پذیری و اشاره"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"درحال استفاده از دکمه دسترس‌پذیری هستید. اشاره موردنظر با پیمایش ۳دکمه‌ای دردسترس نیست."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"دسترسی سریع به ویژگی‌های دسترس‌پذیری"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"به‌سرعت از هر صفحه‌ای به ویژگی‌های دسترس‌پذیری دسترسی داشته باشید. \n\nبرای شروع، به تنظیمات دسترس‌پذیری بروید و یکی از ویژگی‌ها را انتخاب کنید. روی میان‌بر ضربه بزنید و دکمه دسترس‌پذیری یا اشاره را انتخاب کنید."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"به‌سرعت از هر صفحه‌ای به ویژگی‌های دسترس‌پذیری دسترسی پیدا کنید. \n\nبرای شروع، به تنظیمات دسترس‌پذیری بروید و یکی از ویژگی‌ها را انتخاب کنید. روی میان‌بر ضربه بزنید و دکمه دسترس‌پذیری را انتخاب کنید."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"استفاده از دکمه یا اشاره"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"مکان"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 0811132..5f2a0c5 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Esteettömyyspainike ja ‑ele"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Esteettömyyspainikkeen käyttö. Elettä ei voi käyttää kolmen painikkeen navigoinnissa."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Avaa esteettömyysominaisuudet nopeasti"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Avaa esteettömyysominaisuudet nopeasti miltä tahansa näytöltä. \n\nSiirry ensin esteettömyysasetuksiin ja valitse ominaisuus. Napauta pikakuvaketta ja valitse esteettömyyspainike tai ‑ele."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Avaa esteettömyysominaisuudet nopeasti miltä tahansa näytöltä. \n\nSiirry ensin esteettömyysasetuksiin ja valitse ominaisuus. Napauta pikakuvaketta ja valitse esteettömyyspainike."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Käytä painiketta tai elettä"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Sijainti"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index a4f1821..1cfb926 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -2356,8 +2356,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Bouton d\'accessibilité et geste"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Utilisez le bouton d\'accessibilité. Le geste n\'est pas proposé avec la navigation à trois boutons."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Accès rapide aux fonctionnalités d\'accessibilité"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Accédez rapidement aux fonctionnalités d\'accessibilité à partir de n\'importe quel écran. \n\nPour commencer, accédez aux paramètres d\'accessibilité et sélectionnez une fonctionnalité. Touchez le raccourci et sélectionnez le bouton d\'accessibilité ou le geste."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Accédez rapidement aux fonctionnalités d\'accessibilité à partir de n\'importe quel écran. \n\nPour commencer, accédez aux paramètres d\'accessibilité et sélectionnez une fonctionnalité. Touchez le raccourci et sélectionnez le bouton d\'accessibilité."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Utiliser le bouton ou le geste"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Position"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index eab62cc..ae79ecb 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Bouton et geste Accessibilité"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Utilisation du bouton Accessibilité. Geste indisponible avec la navigation à trois boutons."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Accès rapide aux fonctionnalités d\'accessibilité"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Accédez rapidement aux fonctionnalités d\'accessibilité depuis n\'importe quel écran. \n\nPour commencer, allez dans les paramètres d\'accessibilité et sélectionnez une fonctionnalité. Appuyez sur le raccourci et sélectionnez le bouton ou le geste d\'accessibilité."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Accédez rapidement aux fonctionnalités d\'accessibilité depuis n\'importe quel écran. \n\nPour commencer, allez dans les paramètres d\'accessibilité et sélectionnez une fonctionnalité. Appuyez sur le raccourci et sélectionnez le bouton Accessibilité."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Utiliser le bouton ou le geste"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Emplacement"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 4293fa5..086dcc9 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Botón e xesto de accesibilidade"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Estás utilizando o botón Accesibilidade. O xesto non pode usarse coa navegación con 3 botóns."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Accede rapidamente ás funcións de accesibilidade"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Accede rapidamente ás funcións de accesibilidade desde calquera pantalla. \n\nPara comezar, selecciona unha función en Configuración de accesibilidade. Toca o atallo e selecciona o botón ou o xesto de accesibilidade."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Accede rapidamente ás funcións de accesibilidade desde calquera pantalla. \n\nPara comezar, selecciona unha función en Configuración de accesibilidade. Toca o atallo e selecciona o botón de accesibilidade."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Usar botón ou xesto"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Localización"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 2daa11e..ffd302f 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -2356,8 +2356,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ઍક્સેસિબિલિટી બટન અને સંકેત"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"ઍક્સેસિબિલિટી બટનનો ઉપયોગ કરી રહ્યાં છીએ. 3-બટનથી નૅવિગેશનમાં કોઈ સંકેત ઉપલબ્ધ હોતા નથી."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"ઍક્સેસિબિલિટી સુવિધાઓ ઝડપથી ઍક્સેસ કરો"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"કોઈપણ સ્ક્રીન પરથી ઍક્સેસિબિલિટી સુવિધાઓ ઝડપથી ઍક્સેસ કરો. \n\nશરૂ કરવા માટે, ઍક્સેસિબિલિટી સેટિંગ પર જાઓ અને કોઈ સુવિધા પસંદ કરો. શૉર્ટકટ પર ટૅપ કરો અને ઍક્સેસિબિલિટી બટન અથવા સંકેત પસંદ કરો."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"કોઈપણ સ્ક્રીન પરથી ઍક્સેસિબિલિટી સુવિધાઓ ઝડપથી ઍક્સેસ કરો. \n\nશરૂ કરવા માટે, ઍક્સેસિબિલિટી સેટિંગ પર જાઓ અને કોઈપણ સુવિધા પસંદ કરો. શૉર્ટકટ પર ટૅપ કરો અને ઍક્સેસિબિલિટી બટન પસંદ કરો."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"બટન અથવા સંકેતનો ઉપયોગ કરો"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"સ્થાન"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 0dcc505..164f069 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"सुलभता बटन और जेस्चर (हाव-भाव)"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"सुलभता बटन का इस्तेमाल करना. तीन बटन वाले नेविगेशन का इस्तेमाल करने पर, जेस्चर काम नहीं करता."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"सुलभता सुविधाओं को फटाफट ऐक्सेस करें"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"किसी भी स्क्रीन से, सुलभता सुविधाओं को फटाफट ऐक्सेस करें. \n\nशुरू करने के लिए, सुलभता सेटिंग में जाकर कोई सुविधा चुनें. शॉर्टकट पर टैप करें और सुलभता बटन या हाथ के जेस्चर (हाव-भाव) को चुनें."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"किसी भी स्क्रीन से, सुलभता सुविधाओं को फटाफट ऐक्सेस करें. \n\nशुरू करने के लिए, सुलभता सेटिंग में जाकर कोई सुविधा चुनें. शॉर्टकट पर टैप करें और सुलभता बटन को चुनें."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"बटन या जेस्चर का इस्तेमाल करें"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"सुलभता बटन यहां दिखेगा"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index b2a3737..01489aa 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -2379,8 +2379,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Gumb i pokret za Pristupačnost"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Upotreba gumba za Pristupačnost. Pokret nije dostupan uz navigaciju pomoću tri gumba."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Brz pristup značajkama pristupačnosti"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Brzo pristupite značajkama pristupačnosti s bilo kojeg zaslona. \n\nZa početak otvorite postavke pristupačnosti i odaberite značajku. Dodirnite prečac i odaberite gumb za pristupačnost ili pokret."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Brzo pristupite značajkama pristupačnosti s bilo kojeg zaslona. \n\nZa početak otvorite postavke pristupačnosti i odaberite značajku. Dodirnite prečac i odaberite gumb za pristupačnost."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Upotreba gumba ili pokreta"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Lokacija"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index be15c5d..6ea238d 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Kisegítő lehetőségek és kézmozdulat"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"A kisegítő lehetőségek gomb használata. Kézmozdulat nem használható háromgombos navigáció esetén."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Gyors hozzáférés a kisegítő lehetőségekhez"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Bármely képernyőn gyorsan hozzáférhet a kisegítő lehetőségekhez. \n\nA kezdéshez lépjen a kisegítő lehetőségek beállításaihoz, és válassza ki valamelyik funkciót. Koppintson a parancsikonra, majd használja a Kisegítő lehetőségek gombot vagy kézmozdulatot."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Bármely képernyőn gyorsan hozzáférhet a kisegítő lehetőségekhez. \n\nA kezdéshez lépjen a kisegítő lehetőségek beállításaihoz, és válassza ki valamelyik funkciót. Koppintson a parancsikonra, majd válassza a Kisegítő lehetőségek gombot."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Gomb vagy kézmozdulat használata"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Hely"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 2ee9cbf..65a84d7 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"«Հատուկ գործառույթներ» կոճակ և ժեստ"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"«Հատուկ գործառույթներ» կոճակի օգտագործում։ Ժեստը հասանելի չէ եռակոճակ նավիգացիայի դեպքում։"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Արագ բացեք հատուկ գործառույթները"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Արագ բացեք հատուկ գործառույթները ցանկացած էկրանից։ \n\nՍկսելու համար անցեք հատուկ գործառույթների կարգավորումներ և ընտրեք անհրաժեշտ գործառույթը։ Հպեք դյուրանցմանը և ընտրեք «Հատուկ գործառույթներ» կոճակը կամ ժեստը։"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Արագ բացեք հատուկ գործառույթները ցանկացած էկրանից։ \n\nՍկսելու համար անցեք հատուկ գործառույթների կարգավորումներ ընտրեք անհրաժեշտ գործառույթը։ Հպեք դյուրանցմանը և ընտրեք «Հատուկ գործառույթներ» կոճակը։"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Օգտագործել կոճակ կամ ժեստ"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Վայրը"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index cee1f92..998abc1 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Tombol &amp; gestur aksesibilitas"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Menggunakan tombol aksesibilitas. Gestur tidak tersedia dengan navigasi 3 tombol."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Akses fitur aksesibilitas dengan cepat"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Akses fitur aksesibilitas dengan cepat dari layar mana pun. \n\nUntuk memulai, buka setelan aksesibilitas dan pilih fitur. Ketuk pintasan dan pilih tombol atau gestur aksesibilitas."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Akses fitur aksesibilitas dengan cepat dari layar mana pun. \n\nUntuk memulai, buka setelan aksesibilitas dan pilih fitur. Ketuk pintasan dan pilih tombol aksesibilitas."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Gunakan tombol atau gestur"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Lokasi"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 347ebbe..aaf58e4 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Aðgengishnappur og bending"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Notkun aðgengishnappsins. Ekki er hægt að nota bendinguna með þriggja hnappa stjórnun."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Skjótur aðgangur að aðgengiseiginleikum"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Opnaðu aðgengiseiginleika á skjótan hátt á hvaða skjá sem er. \n\nTil að hefjast handa skaltu opna aðgengisstillingar og velja eiginleika. Ýttu á flýtileiðina og veldu aðgengishnappinn eða bendingu."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Opnaðu aðgengiseiginleika á skjótan hátt á hvaða skjá sem er. \n\nTil að hefjast handa skaltu opna aðgengisstillingar og velja eiginleika. Ýttu á flýtileiðina og veldu aðgengishnappinn."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Nota hnapp eða bendingu"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Staðsetning"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index ac52f03..9593bb1 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Gesto e pulsante Accessibilità"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Viene usato il pulsante Accessibilità. Gesto non disponibile con la navigazione con tre pulsanti."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Accedi rapidamente alle funzioni di accessibilità"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Accedi rapidamente alle funzioni di accessibilità da qualsiasi schermata. \n\nPer iniziare, vai alle impostazioni di accessibilità e seleziona una funzione. Tocca la scorciatoia e seleziona il gesto o il pulsante Accessibilità."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Accedi rapidamente alle funzioni di accessibilità da qualsiasi schermata. \n\nPer iniziare, vai alle impostazioni di accessibilità e seleziona una funzione. Tocca la scorciatoia e seleziona il pulsante Accessibilità."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Usa il pulsante o il gesto"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Posizione"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 28c23f4..ae008b3 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -2403,8 +2403,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"לחצן הנגישות ותנועות"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"השימוש בלחצן הנגישות. התנועה אינה זמינה עם ניווט ב-3 לחצנים."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"גישה מהירה לתכונות נגישות"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"גישה מהירה לתכונות נגישות מכל מסך. \n\nכדי להתחיל, צריך לעבור להגדרות הנגישות ולבחור תכונה. יש להקיש על מקש הקיצור ולבחור בלחצן הנגישות או בתנועה."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"גישה מהירה לתכונות נגישות מכל מסך. \n\nכדי להתחיל, צריך לעבור להגדרות הנגישות ולבחור תכונה. יש להקיש על מקש הקיצור ולבחור את לחצן הנגישות."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"השימוש בלחצן או בתנועה"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"מיקום"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 844652e..93de127 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ユーザー補助機能ボタンと操作"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"ユーザー補助機能ボタンを使用します。3 ボタン ナビゲーションでは操作は利用できません。"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"ユーザー補助機能にすばやくアクセスできます"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"どの画面からでもユーザー補助機能にすばやくアクセスできます。\n\n開始するには、[ユーザー補助] の設定に移動し、機能を選択します。ショートカットをタップし、ユーザー補助機能ボタンまたは操作を選択します。"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"どの画面からでもユーザー補助機能にすばやくアクセスできます。\n\n開始するには、[ユーザー補助] の設定に移動し、機能を選択します。ショートカットをタップし、ユーザー補助機能ボタンを選択します。"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"ボタンまたは操作を使用する"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"場所"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 4e024e5..ef3961f 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"მარტივი წვდომის ღილაკი და ჟესტი"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"მარტივი წვდომის ღილაკის გამოყენებისას. ჟესტი არ არის ხელმისაწვდომი 3-ღილაკიანი ნავიგაციით."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"სწრაფად შეძელით მარტივი წვდომის ფუნქციების გამოყენება"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"სწრაფად იქონიეთ წვდომა მარტივი წვდომის ფუნქციებზე ნებისმიერი ეკრანიდან. \n\nდასაწყებად გადადით მარტივი წვდომის პარამეტრებზე და აირჩიეთ რომელიმე ფუნქცია. შეეხეთ მალსახმობს და აირჩიეთ მარტივი წვდომის ღილაკი ან ჟესტი."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"სწრაფად იქონიეთ წვდომა მარტივი წვდომის ფუნქციებზე ნებისმიერი ეკრანიდან. \n\nდასაწყებად გადადით მარტივი წვდომის პარამეტრებზე და აირჩიეთ რომელიმე ფუნქცია. შეეხეთ მალსახმობს და აირჩიეთ მარტივი წვდომის ღილაკი."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"გამოიყენეთ ღილაკი ან ჟესტი"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"მდებარეობა"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 55729ac..855b7a0 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Арнайы мүмкіндіктер түймесі мен қимылы"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Арнайы мүмкіндіктер түймесі қолданылуда. Бұл қимыл 3 түймемен басқарылмайды."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Арнайы мүмкіндіктерге жылдам қол жеткізу"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Арнайы мүмкіндіктерді кез келген экраннан пайдалануға болады. \n\nОл үшін арнайы мүмкіндіктер параметрлерінен қажетті функцияны таңдаңыз. Жылдам пәрменді түртіңіз де, арнайы мүмкіндіктер түймесін немесе қимылын таңдаңыз."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Арнайы мүмкіндіктерге кез келген экраннан жылдам қол жеткізуге болады. \n\nОл үшін арнайы мүмкіндіктер параметрлерінен керек функцияны таңдаңыз. Жылдам пәрменді түртіңіз де, оның түймесін таңдаңыз."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Түйме не қимылды қолдану"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Орны"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index b9d2d68..9381a0a 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ចលនា និងប៊ូតុង​ភាពងាយស្រួល"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"ប្រើប៊ូតុង​ភាពងាយស្រួល។ មិនអាចប្រើចលនានេះតាមរយៈការរុករកដោយប្រើ​​ប៊ូតុង 3 បានទេ។"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"ចូលប្រើមុខងារ​ភាពងាយស្រួល​បានយ៉ាងរហ័ស"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"ចូលប្រើមុខងារ​ភាពងាយស្រួលពី​អេក្រង់ណាមួយ​បានយ៉ាងរហ័ស។ \n\nដើម្បីចាប់ផ្ដើម សូមចូលទៅកាន់ការកំណត់​ភាពងាយស្រួល រួចជ្រើសរើស​មុខងារ។ ចុចលើ​ផ្លូវកាត់ រួចជ្រើសរើសប៊ូតុង​ភាពងាយស្រួល ឬចលនា។"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"ចូលប្រើមុខងារ​ភាពងាយស្រួលពី​អេក្រង់ណាមួយ​បានយ៉ាងរហ័ស។ \n\nដើម្បីចាប់ផ្ដើម សូមចូលទៅកាន់ការកំណត់​ភាពងាយស្រួល រួចជ្រើសរើស​មុខងារ។ ចុចលើ​ផ្លូវកាត់ រួចជ្រើសរើសប៊ូតុង​ភាពងាយស្រួល។"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"ប្រើប៊ូតុង ឬចលនា"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"ទីតាំង"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index c3640db..5b2969d 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ಪ್ರವೇಶಿಸುವಿಕೆ ಬಟನ್ ಮತ್ತು ಗೆಸ್ಚರ್"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"ಪ್ರವೇಶಿಸುವಿಕೆ ಬಟನ್ ಬಳಸಿ. 3-ಬಟನ್ ನ್ಯಾವಿಗೇಶನ್‌ನ ಜೊತೆಗೆ ಗೆಸ್ಚರ್ ಲಭ್ಯವಿಲ್ಲ."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಪ್ರವೇಶಿಸಿ"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"ಯಾವುದಾದರೂ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಪ್ರವೇಶಿಸಿ. \n\nಪ್ರಾರಂಭಿಸಲು, ಪ್ರವೇಶಿಸುವಿಕೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಹೋಗಿ ಮತ್ತು ವೈಶಿಷ್ಟ್ಯವನ್ನು ಆಯ್ಕೆಮಾಡಿ. ಶಾರ್ಟ್‌ಕಟ್‌ನಲ್ಲಿ ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ಪ್ರವೇಶಿಸುವಿಕೆ ಬಟನ್ ಅಥವಾ ಗೆಸ್ಚರ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"ಯಾವುದಾದರೂ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಪ್ರವೇಶಿಸಿ. \n\nಪ್ರಾರಂಭಿಸಲು, ಪ್ರವೇಶಿಸುವಿಕೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಹೋಗಿ ಮತ್ತು ವೈಶಿಷ್ಟ್ಯವನ್ನು ಆಯ್ಕೆಮಾಡಿ. ಶಾರ್ಟ್‌ಕಟ್ ಮೇಲೆ ಟ್ಯಾಪ್ ಮಾಡಿ ಹಾಗೂ ಪ್ರವೇಶಿಸುವಿಕೆ ಬಟನ್ ಆಯ್ಕೆಮಾಡಿ."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"ಬಟನ್ ಅಥವಾ ಗೆಸ್ಚರ್ ಬಳಸಿ"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"ಸ್ಥಳ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index fdf2c87..4bbe018 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -2355,8 +2355,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"접근성 버튼 및 동작"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"접근성 버튼을 사용하세요. 3버튼 탐색에서는 동작을 사용할 수 없습니다."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"접근성 기능에 빠르게 액세스"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"어느 화면에서나 접근성 기능에 빠르게 액세스하세요. \n\n시작하려면 접근성 설정으로 이동하여 기능을 선택합니다. 단축키를 탭하고 접근성 버튼 또는 동작을 선택합니다."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"어느 화면에서나 접근성 기능에 빠르게 액세스하세요. \n\n시작하려면 접근성 설정으로 가서 기능을 선택합니다. 단축키를 탭하고 접근성 버튼을 선택하세요."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"버튼 또는 동작 사용"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"위치"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index c52c200..87ea2a9 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Атайын мүмкүнчүлүктөр баскычы жана жаңсоо"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Атайын мүмкүнчүлүктөр баскычын колдонуңуз. Бул жаңсоо 3 баскычтуу чабыттоодо жеткиликсиз."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Атайын мүмкүнчүлүктөргө тез өтүү"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Атайын мүмкүнчүлүктөргө каалаган экрандан тез өтөсүз. \n\nБаштоо үчүн атайын мүмкүнчүлүктөрдүн жөндөөлөрүнө өтүп, функция тандаңыз. Ыкчам баскычты таптап, атайын мүмкүнчүлүктөр баскычын же жаңсоосун тандаңыз."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Атайын мүмкүнчүлүктөргө каалаган экрандан тез өтөсүз. \n\nБаштоо үчүн атайын мүмкүнчүлүктөрдүн жөндөөлөрүнө өтүп, функция тандаңыз. Ыкчам баскычты басып, атайын мүмкүнчүлүктөр баскычын тандаңыз."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Баскычты же жаңсоону колдонуу"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Жайгашкан орду"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index a57aaa4..8b48736 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ປຸ່ມການຊ່ວຍເຂົ້າເຖິງ ແລະ ທ່າທາງ"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"ການໃຊ້ປຸ່ມການຊ່ວຍເຂົ້າເຖິງ. ບໍ່ສາມາດໃຊ້ທ່າທາງກັບການນຳທາງແບບ 3 ປຸ່ມໄດ້."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"ເຂົ້າເຖິງຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງແບບດ່ວນ"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"ເຂົ້າເຖິງຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງແບບດ່ວນຈາກໜ້າຈໍໃດກໍໄດ້. \n\nເພື່ອເລີ່ມຕົ້ນ, ໃຫ້ເຂົ້າໄປການຕັ້ງຄ່າການຊ່ວຍເຂົ້າເຖິງແລ້ວເລືອກຄຸນສົມບັດໃດໜຶ່ງ. ແຕະໃສ່ທາງລັດແລ້ວເລືອກປຸ່ມ ຫຼື ທ່າທາງການຊ່ວຍເຂົ້າເຖິງ."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"ເຂົ້າເຖິງຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງດ່ວນຈາກໜ້າຈໍໃດກໍໄດ້. \n\nເພື່ອເລີ່ມຕົ້ນ, ໃຫ້ໄປການຕັ້ງຄ່າການຊ່ວຍເຂົ້າເຖິງແລ້ວເລືອກຄຸນສົມບັດໃດໜຶ່ງ. ແຕະໃສ່ທາງລັດແລ້ວເລືອກປຸ່ມການຊ່ວຍເຂົ້າເຖິງ."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"ໃຊ້ປຸ່ມ ຫຼື ທ່າທາງ"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"ສະຖານທີ່"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 13d37ff..3dd4abb 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -2401,8 +2401,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Pritaikomumo mygtukas ir gestas"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Pritaikomumo mygtuko naudojimas. Gestas nepasiekiamas naudojant naršymą 3 mygtukais."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Greitai pasiekti pritaik. neįgaliesiems funkcijas"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Sparčiai pasiekite pritaikymo neįgaliesiems funkcijas bet kuriame ekrane. \n\nJei norite pradėti, eikite į pritaikomumo nustatymus ir pasirinkite funkciją. Palieskite spartųjį klavišą ir pasirinkite pritaikomumo mygtuką arba gestą."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Greitai pasiekite pritaikymo neįgaliesiems funkcijas bet kuriame ekrane. \n\nNorėdami pradėti, eikite į pritaikomumo nustatymus ir pasirinkite funkciją. Palieskite spartųjį klavišą ir pasirinkite pritaikomumo mygtuką."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Naudoti mygtuką arba gestą"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Vieta"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 8041ad3..87c76c8 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -2377,8 +2377,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Pieejamības poga un žests"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Tiek izmantota pieejamības poga. Žests nav pieejams, izmantojot 3 pogu navigāciju."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Ātri piekļūt pieejamības funkcijām"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Ātri piekļūstiet pieejamības funkcijām no jebkura ekrāna. \n\nLai sāktu darbu, pārejiet uz pieejamības iestatījumiem un atlasiet funkciju. Pieskarieties saīsnei un atlasiet pieejamības pogu vai žestu."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Ātri piekļūstiet pieejamības funkcijām no jebkura ekrāna. \n\nLai sāktu darbu, pārejiet uz pieejamības iestatījumiem un atlasiet funkciju. Pieskarieties saīsnei un atlasiet pieejamības pogu."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Izmantot pogu vai žestu"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Atrašanās vieta"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 14b47db..6ecbd81 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -2355,8 +2355,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Копче за пристапност и движење"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Користење на копчето за пристапност. Движењето не е достапно со навигација со 3 копчиња."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Брзо пристапувајте до функциите за пристапност"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Брзо пристапувајте до функциите за пристапност од секој екран. \n\nЗа да започнете, одете во поставките за пристапност и изберете функција. Допрете на кратенката и изберете го копчето за пристапност или движење."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Брзо пристапувајте до функциите за пристапност од секој екран. \n\nЗа да започнете, одете во поставките за пристапност и изберете функција. Допрете на кратенката и изберете го копчето за пристапност."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Користете копче или движење"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Локација"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index ff0bf71..79696e2 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ഉപയോഗസഹായി ബട്ടണും ജെസ്ച്ചറും"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"ഉപയോഗസഹായി ബട്ടൺ ഉപയോഗിക്കുന്നു. 3-ബട്ടൺ നാവിഗേഷനൊപ്പം ഈ ജെസ്ച്ചർ ലഭ്യമല്ല."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"ഉപയോഗസഹായി ഫീച്ചറുകൾ അതിവേഗം ആക്‌സസ് ചെയ്യുക"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"ഏത് സ്ക്രീനിൽ നിന്നും ഉപയോഗസഹായി ഫീച്ചറുകൾ അതിവേഗം ആക്‌സസ് ചെയ്യൂ. \n\nആരംഭിക്കാൻ, ഉപയോഗസഹായി ക്രമീകരണത്തിലേക്ക് പോയി ഒരു ഫീച്ചർ തിരഞ്ഞെടുക്കുക. കുറുക്കുവഴിയിൽ ടാപ്പ് ചെയ്‌ത് ഉപയോഗസഹായി ബട്ടണോ ജെസ്‌ച്ചറോ തിരഞ്ഞെടുക്കുക."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"ഉപയോഗസഹായി ഫീച്ചറുകൾ ഏത് സ്ക്രീനിൽ നിന്നും അതിവേഗം ആക്‌സസ് ചെയ്യൂ. \n\nആരംഭിക്കാൻ, ഉപയോഗസഹായി ക്രമീകരണത്തിലേക്ക് പോയി ഒരു ഫീച്ചർ തിരഞ്ഞെടുക്കുക. കുറുക്കുവഴിയിൽ ടാപ്പ് ചെയ്‌ത് ഉപയോഗസഹായി ബട്ടൺ തിരഞ്ഞെടുക്കുക."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"ബട്ടണോ ജെസ്ച്ചറോ ഉപയോഗിക്കുക"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"ലൊക്കേഷൻ"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 6b93b7d..17c622a 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Хандалтын товчлуур болон зангаа"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Хандалтын товчлуурыг ашиглаж байна. 3 товчлуурт навигацаар зангаа боломжгүй байна."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Хандалтын онцлогуудад шуурхай хандана уу"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Дурын дэлгэцээс хандалтын онцлогуудад шуурхай хандана уу. \n\nЭхлүүлэхийн тулд хандалтын тохиргоо руу очиж, онцлогийг сонгоно уу. Товчлол дээр товшиж, хандалтын товчлуур эсвэл зангааг сонгоно уу."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Дурын дэлгэцээс хандалтын онцлогуудад шуурхай хандана уу. \n\nЭхлүүлэхийн тулд хандалтын тохиргоо руу очиж, онцлогийг сонгоно уу. Товчлол дээр товшиж, хандалтын товчлуурыг сонгоно уу."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Товчлуур эсвэл зангаа ашиглах"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Байршил"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 607a33b..4afa47d 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -2357,8 +2357,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ॲक्सेसिबिलिटी बटण आणि जेश्चर"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"ॲक्सेसिबिलिटी बटण वापरणे. तीन बटण नेव्हिगेशनसह जेश्चर उपलब्ध नाही."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"अ‍ॅक्सेसिबिलिटी वैशिष्ट्ये झटपट अ‍ॅक्सेस करा"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"कोणत्याही स्क्रीनवरून अ‍ॅक्सेसिबिलिटी वैशिष्ट्ये झटपट अ‍ॅक्सेस करा. \n\nसुरुवात करण्यासाठी, अ‍ॅक्सेसिबिलिटी सेटिंग्जवर जा आणि वैशिष्ट्य निवडा. शॉर्टकटवर टॅप करा आणि अ‍ॅक्सेसिबिलिटी बटण किंवा जेश्चर निवडा."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"कोणत्याही स्क्रीनवरून अ‍ॅक्सेसिबिलिटी वैशिष्ट्ये झटपट अ‍ॅक्सेस करा. \n\nसुरू करण्यासाठी, अ‍ॅक्सेसिबिलिटी सेटिंग्ज वर जा आणि वैशिष्ट्य निवडा. शॉर्टकटवर टॅप करा आणि अ‍ॅक्सेसिबिलिटी बटण निवडा."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"बटण किंवा जेश्चर वापरा"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"स्थान"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index ccde9b6..04a6196 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Butang boleh akses &amp; gerak isyarat"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Menggunakan butang kebolehaksesan. Gerak isyarat tidak tersedia dengan navigasi 3 butang."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Akses ciri kebolehaksesan dengan cepat"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Akses ciri kebolehaksesan dengan cepat daripada mana-mana skrin. \n\nUntuk bermula, pergi ke tetapan kebolehaksesan dan pilih satu ciri. Ketik pintasan dan pilih butang kebolehaksesan atau gerak isyarat."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Akses ciri kebolehaksesan dengan cepat daripada mana-mana skrin. \n\nUntuk bermula, pergi ke tetapan kebolehaksesan dan pilih satu ciri. Ketik pada pintasan dan pilih butang kebolehaksesan."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Gunakan butang atau gerak isyarat"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Lokasi"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index ced7749..4b1246d 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"အများသုံးစွဲနိုင်မှု ခလုတ်နှင့် လက်ဟန်"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"အများသုံးစွဲနိုင်မှု ခလုတ်ကို သုံးနေသည်။ ခလုတ် ၃ ခုဖြင့် လမ်းညွှန်ခြင်းဖြင့် ဤလက်ဟန်ကို မရနိုင်ပါ။"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုများကို အမြန်သုံးသည်"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုများကို မည်သည့်ဖန်သားပြင်မှမဆို အမြန်သုံးနိုင်သည်။ \n\nစတင်ရန် အများသုံးစွဲနိုင်မှု ဆက်တင်များသို့သွား၍ ဝန်ဆောင်မှုကို ရွေးပါ။ ဖြတ်လမ်းလင့်ခ်ကို တို့ပြီး အများသုံးစွဲနိုင်မှု ခလုတ် (သို့) လက်ဟန်ကို ရွေးပါ။"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုများကို မည်သည့်ဖန်သားပြင်မှမဆို အမြန်သုံးနိုင်သည်။ \n\nစတင်ရန် အများသုံးစွဲနိုင်မှု ဆက်တင်များသို့သွား၍ ဝန်ဆောင်မှုကို ရွေးပါ။ ဖြတ်လမ်းလင့်ခ်ကို တို့ပြီး အများသုံးစွဲနိုင်မှု ခလုတ်ကို ရွေးပါ။"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"ခလုတ် (သို့) လက်ဟန်ကို သုံးရန်"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"တည်နေရာ"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 38143be..27a0799 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Tilgjengelighet-knapp og bevegelse"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Bruk av Tilgjengelighet-knappen. Bevegelsen er ikke tilgjengelig med navigasjon med tre knapper."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Rask tilgang til tilgjengelighetsfunksjoner"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Få rask tilgang til tilgjengelighetsfunksjoner fra hvilken som helst skjerm. \n\nFor å komme i gang, gå til tilgjengelighetsinnstillingene og velg en funksjon. Trykk på snarveien og velg Tilgjengelighet-knappen eller -bevegelsen."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Få rask tilgang til tilgjengelighetsfunksjoner fra hvilken som helst skjerm. \n\nFor å komme i gang, gå til tilgjengelighetsinnstillingene og velg en funksjon. Trykk på snarveien og velg Tilgjengelighet-knappen."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Bruk knapp eller bevegelse"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Posisjon"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 2dce5cb..5f2a001 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -2356,8 +2356,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"एक्सेसिबिलिटी बटन तथा जेस्चर"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"एक्सेसिबिलिटी बटन प्रयोग गरिँदै छ। यो जेस्चर ३ बटनमार्फत गरिने नेभिगेसनका सहायताले प्रयोग गर्न मिल्दैन।"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"एक्सेसिबिलिटी सुविधा तुरुन्तै प्रयोग गर्नुहोस्"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"तपाईं जुनसुकै स्क्रिनमा भए पनि सर्वसुलभता कायम गर्ने सुविधाहरू तुरुन्तै प्रयोग गर्न सक्नुहुन्छ। \n\nसुरु गर्न सर्वसुलभतासम्बन्धी सेटिङमा जानुहोस् अनि कुनै सुविधा चयन गर्नुहोस्। सर्टकटमा ट्याप गर्नुहोस् अनि एक्सेसिबिलिटी बटन वा इसारा चयन गर्नुहोस्।"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"तपाईं जुनसुकै स्क्रिनमा भए पनि एक्सेसिबिलिटी सुविधा तुरुन्तै प्रयोग गर्न सक्नुहुन्छ। \n\nसुरु गर्न एक्सेसिबिलिटी सेटिङमा जानुहोस् अनि कुनै सुविधा चयन गर्नुहोस्। सर्टकटमा ट्याप गर्नुहोस् अनि एक्सेसिबिलिटी बटन चयन गर्नुहोस्।"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"बटन वा जेस्चर प्रयोग गर्नुहोस्"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"स्थान"</string>
diff --git a/res/values-night/themes.xml b/res/values-night/themes.xml
index fb7a3b9..3403d99 100644
--- a/res/values-night/themes.xml
+++ b/res/values-night/themes.xml
@@ -25,10 +25,6 @@
 
     <style name="Theme.SubSettings" parent="Theme.SubSettings.Base"/>
 
-    <style name="ThemeOverlay.SwitchBar.Settings" parent="ThemeOverlay.SwitchBar.Settings.Base">
-        <item name="android:textColorPrimaryInverse">@android:color/black</item>
-    </style>
-
     <style name="Theme.AlertDialog.Base" parent="@style/Theme.AppCompat.DayNight.Dialog.Alert">
         <item name="colorAccent">@*android:color/accent_device_default_dark</item>
         <item name="android:colorError">@color/settings_dialog_colorError</item>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 154e0d6..12a19e8 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Toegankelijkheidsknop en -gebaar"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"De toegankelijkheidsknop gebruiken. Het gebaar is niet beschikbaar bij navigatie met 3 knoppen."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Krijg snel toegang tot toegankelijkheidsfuncties"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Krijg vanaf elk scherm snel toegang tot toegankelijkheidsfuncties. \n\nGa naar de toegankelijkheidsinstellingen en selecteer een functie om aan de slag te gaan. Tik op de snelkoppeling en selecteer de knop Toegankelijkheid of het toegankelijkheidsgebaar."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Krijg vanaf elk scherm snel toegang tot toegankelijkheidsfuncties. \n\nGa naar de toegankelijkheidsinstellingen en selecteer een functie om aan de slag te gaan. Tik op de snelkoppeling en selecteer de knop Toegankelijkheid."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Knop of gebaar gebruiken"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Locatie"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 2dd976f..a643f9d 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -2356,8 +2356,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ଆକ୍ସେସିବିଲିଟୀ ବଟନ୍ ଏବଂ ଜେଶ୍ଚର୍"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"ଆକ୍ସେସିବିଲିଟୀ ବଟନ୍ ବ୍ୟବହାର କରାଯାଉଛି। 3-ବଟନ୍ ନାଭିଗେସନ୍ ମାଧ୍ୟମରେ ଜେଶ୍ଚର୍ ଉପଲବ୍ଧ ନାହିଁ।"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"ଆକ୍ସେସିବିଲିଟୀ ଫିଚରକୁ ଶୀଘ୍ର ଆକ୍ସେସ୍ କରନ୍ତୁ"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"ଯେ କୌଣସି ସ୍କ୍ରିନରୁ ଆକ୍ସେସିବିଲିଟୀ ଫିଚରଗୁଡ଼ିକୁ ଶୀଘ୍ର ଆକ୍ସେସ୍ କରନ୍ତୁ। \n\nଆରମ୍ଭ କରିବାକୁ, ଆକ୍ସେସିବିଲିଟୀ ସେଟିଂସକୁ ଯାଇ ଗୋଟିଏ ଫିଚରକୁ ଚୟନ କରନ୍ତୁ। ସର୍ଟକଟରେ ଟାପ୍ କରି ଆକ୍ସେସିବିଲିଟୀ ବଟନ କିମ୍ବା ଜେଶ୍ଚରକୁ ଚୟନ କରନ୍ତୁ।"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"ଯେ କୌଣସି ସ୍କ୍ରିନରୁ ଆକ୍ସେସିବିଲିଟୀ ଫିଚରକୁ ଶୀଘ୍ର ଆକ୍ସେସ୍ କରନ୍ତୁ। \n\nଆରମ୍ଭ କରିବାକୁ, ଆକ୍ସେସିବିଲିଟୀ ସେଟିଂସକୁ ଯାଇ ଗୋଟିଏ ଫିଚରକୁ ଚୟନ କରନ୍ତୁ। ସର୍ଟକଟରେ ଟାପ୍ କରି ଆକ୍ସେସିବିଲିଟୀ ବଟନକୁ ଚୟନ କରନ୍ତୁ।"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"ବଟନ୍ କିମ୍ବା ଜେଶ୍ଚର୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"ଲୋକେସନ୍"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 2877b9e..adcb800 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -2370,7 +2370,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ ਅਤੇ ਇਸ਼ਾਰਾ"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ ਦੀ ਵਰਤੋਂ ਕਰਨਾ। ਇਸ਼ਾਰਾ 3-ਬਟਨ ਨੈਵੀਗੇਸ਼ਨ ਦੇ ਨਾਲ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"ਪਹੁੰਚਯੋਗਤਾ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਤੱਕ ਤੁਰੰਤ ਪਹੁੰਚ ਕਰੋ"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
+    <!-- no translation found for accessibility_button_gesture_description (2717632658372117656) -->
     <skip />
     <string name="accessibility_button_description" msgid="7372405202698400339">"ਕਿਸੇ ਵੀ ਸਕ੍ਰੀਨ ਤੋਂ ਪਹੁੰਚਯੋਗਤਾ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਤੱਕ ਤੁਰੰਤ ਪਹੁੰਚ ਕਰੋ। \n\nਸ਼ੁਰੂ ਕਰਨ ਲਈ, ਪਹੁੰਚਯੋਗਤਾ ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾ ਕੇ ਕੋਈ ਵਿਸ਼ੇਸ਼ਤਾ ਚੁਣੋ। ਸ਼ਾਰਟਕੱਟ \'ਤੇ ਟੈਪ ਕਰੋ ਅਤੇ ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ ਚੁਣੋ।"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"ਬਟਨ ਜਾਂ ਇਸ਼ਾਰਾ ਵਰਤੋ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index edc9146..9a93f26 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -2401,8 +2401,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Przycisk i gest ułatwień dostępu"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Używam przycisku ułatwień dostępu. Ten gest nie jest dostępny w przypadku nawigacji przy użyciu 3 przycisków."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Szybki dostęp do ułatwień dostępu"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Szybko uruchamiaj ułatwienia dostępu na dowolnym ekranie. \n\nAby rozpocząć, otwórz ustawienia ułatwień dostępu i wybierz funkcję. Kliknij skrót i wybierz przycisk lub gest ułatwień dostępu."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Szybko uruchamiaj ułatwienia dostępu na dowolnym ekranie. \n\nAby rozpocząć, otwórz ustawienia ułatwień dostępu i wybierz funkcję. Kliknij skrót i wybierz przycisk ułatwień dostępu."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Użyj przycisku lub gestu"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Lokalizacja"</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index f28d6ae..627cc65 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -2355,8 +2355,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Botão e gesto de acessibilidade"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Como usar o botão de acessibilidade. O gesto não está disponível na navegação com três botões."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Acessar rapidamente os recursos de acessibilidade"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Acesse rapidamente os recursos de acessibilidade em qualquer tela. \n\nPara começar, abra as configurações de acessibilidade e selecione um recurso. Toque no atalho e selecione o botão ou gesto de acessibilidade."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Acesse rapidamente os recursos de acessibilidade em qualquer tela. \n\nPara começar, abra as configurações de acessibilidade e selecione um recurso. Toque no atalho e selecione o botão de acessibilidade."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Usar botão ou gesto"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Local"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index e1627b2..3701106 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Botão e gesto de acessibilidade"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Utilizar o botão Acessibilidade. O gesto não está disponível com a navegação com 3 botões."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Aceda rapidamente às funcionalidades de acessib."</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Aceda rapidamente às funcionalidades de acessibilidade a partir de qualquer ecrã. \n\nPara começar, aceda às definições de acessibilidade e selecione uma funcionalidade. Toque no atalho e selecione o gesto ou o botão Acessibilidade."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Aceda rapidamente às funcionalidades de acessibilidade a partir de qualquer ecrã. \n\nPara começar, aceda às definições de acessibilidade e selecione uma funcionalidade. Toque no atalho e selecione o botão Acessibilidade."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Utilize o botão ou o gesto"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Localização"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index f28d6ae..627cc65 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -2355,8 +2355,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Botão e gesto de acessibilidade"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Como usar o botão de acessibilidade. O gesto não está disponível na navegação com três botões."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Acessar rapidamente os recursos de acessibilidade"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Acesse rapidamente os recursos de acessibilidade em qualquer tela. \n\nPara começar, abra as configurações de acessibilidade e selecione um recurso. Toque no atalho e selecione o botão ou gesto de acessibilidade."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Acesse rapidamente os recursos de acessibilidade em qualquer tela. \n\nPara começar, abra as configurações de acessibilidade e selecione um recurso. Toque no atalho e selecione o botão de acessibilidade."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Usar botão ou gesto"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Local"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 05f9df4..f282bea 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -2379,8 +2379,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Buton și gest de accesibilitate"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Folosirea butonului de accesibilitate. Gestul nu este disponibil în cazul navigării cu 3 butoane."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Accesați rapid funcțiile de accesibilitate"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Accesați rapid funcțiile de accesibilitate de pe orice ecran. \n\nPentru a începe, accesați setările pentru accesibilitate și selectați o funcție. Atingeți comanda rapidă și selectați butonul sau gestul de accesibilitate."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Accesați rapid funcțiile de accesibilitate de pe orice ecran. \n\nPentru a începe, accesați setările pentru accesibilitate și selectați o funcție. Atingeți comanda rapidă și selectați butonul de accesibilitate."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Folosiți butonul sau gestul"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Locație"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index c7b4c47..39bccad 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -2401,8 +2401,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Жест и кнопка спец. возможностей"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Используется кнопка специальных возможностей. При навигации с помощью трех кнопок жест недоступен."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Быстрый доступ к специальным возможностям"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Получайте быстрый доступ к специальным возможностям из любого окна.\n\nОткройте настройки специальных возможностей и выберите нужную функцию. В качестве способа быстрого включения выберите кнопку специальных возможностей или жест."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Быстрый доступ к специальным возможностям из любого окна. \n\nОткройте настройки специальных возможностей и выберите нужную функцию. В качестве способа быстрого включения выберите кнопку специальных возможностей."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Использовать кнопку или жест"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Расположение"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 0d1d3d0..6de5c69 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"සජීවී සිරස්තල &amp; ඉංගිතය"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"ප්‍රවේශ්‍යතා බොත්තම භාවිත කිරීම. ඉංගිතය 3-බොත්තම් සංචාලනය සමඟ ලබා ගත නොහැකිය."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"ප්‍රවේශ්‍යතා විශේෂාංගවලට ඉක්මනින් ප්‍රවේශ වන්න"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"ඕනෑම තිරයකින් ප්‍රවේශ්‍යතා විශේෂාංගවලට ඉක්මනින් ප්‍රවේශ වන්න \n\nආරම්භ කිරීම සඳහා, ප්‍රවේශ්‍යතා සැකසීම් වෙත ගොස් විශේෂාංගයක් තෝරන්න. කෙටි මඟ මත තට්ටු කර ප්‍රවේශ්‍යතා බොත්තම හෝ ඉංගිතය තෝරන්න."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"ඕනෑම තිරයකින් ප්‍රවේශ්‍යතා විශේෂාංගවලට ඉක්මනින් ප්‍රවේශ වන්න \n\nආරම්භ කිරීම සඳහා, ප්‍රවේශ්‍යතා සැකසීම් වෙත ගොස් විශේෂාංගයක් තෝරන්න. කෙටි මඟ මත තට්ටු කර ප්‍රවේශ්‍යතා බොත්තම තෝරන්න."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"බොත්තම හෝ ඉංගිතය භාවිත කරන්න"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"ස්ථානය"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index ba6aa7c..7d440db 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -2403,8 +2403,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Tlačidlo a gesto dostupnosti"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Používa sa tlačidlo dostupnosti. Pri trojtlačidlovej navigácii nie je gesto k dispozícii."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Rýchly prístup k funkciám dostupnosti"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Rýchly prístup k funkciám dostupnosti na ľubovoľnej obrazovke. \n\nZačnite prejdením do nastavení dostupnosti a vyberte funkciu. Klepnite na odkaz a vyberte tlačidlo dostupnosti alebo gesto."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Rýchly prístup k funkciám dostupnosti na ľubovoľnej obrazovke. \n\nZačnite prejdením do nastavení dostupnosti a vyberte funkciu. Klepnite na skratku a vyberte tlačidlo dostupnosti."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Použiť tlačidlo alebo gesto"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Poloha"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index f0fb8b8..a719ebf 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -2403,8 +2403,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Gumb ali poteza za funk. za ljud. s pos. potrebami"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Uporaba gumba za funkcije za ljudi s posebnimi potrebami Poteza ni na voljo pri krmarjenju s tremi gumbi."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Hiter dostop do funkcij za ljudi s posebnimi potrebami."</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Hitro dostopajte do funkcij za ljudi s posebnimi potrebami na poljubnem zaslonu. \n\nČe želite začeti, odprite nastavitve funkcij za ljudi s posebnimi potrebami in izberite funkcijo. Dotaknite se bližnjice in izberite gumb ali potezo za funkcije za ljudi s posebnimi potrebami."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Hitro dostopajte do funkcij za ljudi s posebnimi potrebami na poljubnem zaslonu. \n\nČe želite začeti, odprite nastavitve funkcij za ljudi s posebnimi potrebami in izberite funkcijo. Dotaknite se bližnjice in izberite gumb za funkcije za ljudi s posebnimi potrebami."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Uporaba gumba ali poteze"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Lokacija"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index fc72271..2714b1b 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Butoni dhe gjesti i qasshmërisë"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Përdorimi i butonit të qasshmërisë. Gjesti nuk ofrohet me navigimin me 3 butona."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Qasu me shpejtësi te veçoritë e qasshmërisë"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Qasu me shpejtësi në veçoritë e qasshmërisë nga çdo ekran. \n\nPër të filluar, shko te cilësimet e qasshmërisë dhe zgjidh një veçori. Trokit te shkurtorja dhe zgjidh gjestin ose butonin e qasshmërisë."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Qasu me shpejtësi në veçoritë e qasshmërisë nga çdo ekran. \n\nPër të filluar, shko te cilësimet e qasshmërisë dhe zgjidh një veçori. Trokit te shkurtorja dhe zgjidh butonin e qasshmërisë."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Përdor butonin ose gjestin"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Vendndodhja"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 685dfa9..9c963bc 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -2377,8 +2377,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Дугме и покрет Приступачност"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Коришћење дугмета Приступачност. Покрет није доступан уз навигацију помоћу 3 дугмета."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Брзо приступајте функцијама приступачности"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Брзо приступајте функцијама приступачности са било ког екрана. \n\nДа бисте започели, идите у подешавања приступачности и изаберите функцију. Додирните пречицу и изаберите дугме или покрет Приступачност."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Брзо приступајте функцијама приступачности са било ког екрана. \n\nДа бисте започели, идите у подешавања приступачности и изаберите функцију. Додирните пречицу и изаберите дугме Приступачност."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Користите дугме или покрет"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Локација"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 62bb80f..306ea82 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Tillgänglighetsknapp och rörelse"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Använda tillgänglighetsknappen. Rörelsen är inte tillgänglig med navigering med tre knappar."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Kom snabbt åt tillgänglighetsfunktioner"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Kom snabbt åt tillgänglighetsfunktioner från alla skärmar. \n\nKom igång genom att öppna tillgänglighetsinställningarna och välj en funktion. Tryck på genvägen och välj tillgänglighetsknappen eller rörelsen."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Kom snabbt åt tillgänglighetsfunktioner från alla skärmar. \n\nKom igång genom att öppna tillgänglighetsinställningarna och välj en funktion. Tryck på genvägen och välj tillgänglighetsknappen."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Använda knapp eller rörelse"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Läge"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 260cecf..d35bf82 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Ishara na kitufe cha zana za ufikivu"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Kutumia kitufe cha zana za ufikivu. Ishara haipatikani kwenye usogezaji kwa kutumia vitufe 3."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Fikia vipengele vya ufikivu haraka"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Fikia vipengele vya ufikivu haraka kwenye skrini yoyote. \n\nIli uanze, nenda kwenye mipangilio ya ufikivu na uchague kipengele. Gusa njia ya mkato na uchague kitufe cha zana za ufikivu au ishara."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Fikia vipengele vya ufikivu haraka kwenye skrini yoyote. \n\nIli uanze, nenda kwenye mipangilio ya ufikivu na uchague kipengele. Gusa njia ya mkato na uchague kitufe cha zana za ufikivu."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Tumia ishara au kitufe"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Mahali"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index d2143b7..6df6058 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"அணுகல்தன்மை பட்டன் &amp; சைகை"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"அணுகல்தன்மை பட்டனைப் பயன்படுத்துதல். 3-பட்டன் வழிசெலுத்தலில் சைகையைப் பயன்படுத்த முடியாது."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"அணுகல்தன்மை அம்சங்களை விரைவாக அணுகலாம்"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"எந்தத் திரையிலிருந்தும் அணுகல்தன்மை அம்சங்களை விரைவாக அணுகலாம். \n\nதொடங்க, அணுகல்தன்மை அமைப்புகளுக்குச் சென்று ஓர் அம்சத்தைத் தேர்ந்தெடுங்கள். ஷார்ட்கட்டின் மீது தட்டி அணுகல்தன்மை பட்டன்/சைகையைத் தேர்ந்தெடுங்கள்."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"எந்தத் திரையிலிருந்தும் அணுகல்தன்மை அம்சங்களை விரைவாக அணுகலாம். \n\nதொடங்க, அணுகல்தன்மை அமைப்புகளுக்குச் சென்று ஓர் அம்சத்தைத் தேர்ந்தெடுங்கள். ஷார்ட்கட்டின் மீது தட்டி அணுகல்தன்மை பட்டனைத் தேர்ந்தெடுங்கள்."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"பட்டனையோ சைகையையோ பயன்படுத்துதல்"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"இடம்"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 27ae515..2c367ed 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -2373,7 +2373,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"యాక్సెసిబిలిటీ బటన్ &amp; సంజ్ఞ"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"యాక్సెసిబిలిటీ బటన్‌ను ఉపయోగించడం. 3-బటన్ నావిగేషన్‌తో సంజ్ఞ అందుబాటులో లేదు."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"యాక్సెసిబిలిటీ ఫీచర్‌లను త్వరగా యాక్సెస్ చేయండి"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
+    <!-- no translation found for accessibility_button_gesture_description (2717632658372117656) -->
     <skip />
     <string name="accessibility_button_description" msgid="7372405202698400339">"ఏ స్క్రీన్ నుండి అయినా యాక్సెసిబిలిటీ ఫీచర్‌లను త్వరగా యాక్సెస్ చేయండి. \n\nప్రారంభించడం కోసం, యాక్సెసిబిలిటీ సెట్టింగ్‌లకు వెళ్లి, ఒక ఫీచర్‌ను ఎంచుకోండి. షార్ట్‌కట్ మీద ట్యాప్ చేయండి, యాక్సెసిబిలిటీ బటన్‌ను ఎంచుకోండి."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"బటన్ లేదా సంజ్ఞను ఉపయోగించండి"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 01c22ad..19fbf5f 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ปุ่มและท่าทางสัมผัสการช่วยเหลือพิเศษ"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"กำลังใช้ปุ่มการช่วยเหลือพิเศษ ท่าทางสัมผัสดังกล่าวใช้กับการนำทางแบบ 3 ปุ่มไม่ได้"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"เข้าถึงฟีเจอร์การช่วยเหลือพิเศษได้อย่างรวดเร็ว"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"เข้าถึงฟีเจอร์การช่วยเหลือพิเศษได้อย่างรวดเร็วจากหน้าจอใดก็ได้ \n\nหากต้องการเริ่มต้นใช้งาน ให้ไปที่การตั้งค่าการช่วยเหลือพิเศษแล้วเลือกฟีเจอร์ที่ต้องการ แตะทางลัดแล้วเลือกปุ่มการช่วยเหลือพิเศษหรือท่าทางสัมผัส"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"เข้าถึงฟีเจอร์การช่วยเหลือพิเศษได้อย่างรวดเร็วจากหน้าจอใดก็ได้ \n\nหากต้องการเริ่มต้นใช้งาน ให้ไปที่การตั้งค่าการช่วยเหลือพิเศษแล้วเลือกฟีเจอร์ที่ต้องการ แตะทางลัดแล้วเลือกปุ่มการช่วยเหลือพิเศษ"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"ใช้ปุ่มหรือท่าทางสัมผัส"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"ตำแหน่ง"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index c2fc459..2438722 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Button ng accessibility at galaw"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Paggamit sa button ng accessibility. Hindi available ang galaw sa 3-button na navigaton."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Madaling i-access ang mga feature ng accessibility"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Mabilis na i-access ang mga feature ng pagiging naa-access mula sa anumang screen. \n\nPara magsimula, pumunta sa mga setting ng accessibility at pumili ng feature. I-tap ang shortcut at piliin ang button o galaw ng accessibility."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Mabilis na i-access ang mga feature sa pagiging naa-access mula sa anumang screen. \n\nPara magsimula, pumunta sa mga setting ng accessibility at pumili ng feature. I-tap ang shortcut at piliin ang button ng accessibility."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Gamitin ang button o galaw"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Lokasyon"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 2f9f1fd..912774f 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Erişilebilirlik düğmesi ve hareketi"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Erişilebilirlik düğmesini kullanma. Hareket, 3 düğmeli gezinme ile kullanılamaz."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Erişilebilirlik özelliklerine hızlıca erişin"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Erişilebilirlik özelliklerine herhangi bir ekrandan hızlıca erişin. \n\nBaşlamak için erişilebilirlik ayarlarına gidip bir özellik seçin. Kısayola dokunup erişilebilirlik düğmesi veya hareketini seçin."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Erişilebilirlik özelliklerine herhangi bir ekrandan hızlıca erişin. \n\nBaşlamak için erişilebilirlik ayarlarına gidip bir özellik seçin. Kısayola dokunun ve erişilebilirlik düğmesini seçin."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Düğmeyi veya hareketi kullan"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Yer"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index bf2f40a..4dba6c7 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -2401,8 +2401,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Кнопка й жест спеціальних можливостей"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Використання кнопки спеціальних можливостей. Жест недоступний при навігації трьома кнопками."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Швидкий доступ до спеціальних можливостей"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Отримайте швидкий доступ до спеціальних можливостей із будь-якого екрана. \n\nЩоб почати, відкрийте налаштування спеціальних можливостей і виберіть потрібну функцію. У списку швидкого доступу виберіть кнопку або жест спеціальних можливостей."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Спеціальними можливостями можна швидко скористатися на будь-якому екрані. \n\nЩоб почати, відкрийте налаштування спеціальних можливостей і виберіть потрібну функцію. У списку швидкого доступу виберіть кнопку спеціальних можливостей."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Використати кнопку або жест"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Розташування"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 3512cb5..e171751 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -2353,8 +2353,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"ایکسیسبیلٹی بٹن اور اشارہ"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"ایکسیسبیلٹی بٹن کا استعمال کرنا۔ 3 بٹن والی نیویگیشن کے ساتھ اشارہ دستیاب نہیں ہوتا ہے۔"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"تیزی سے ایکسیسبیلٹی خصوصیات تک رسائی حاصل کریں"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"کسی بھی اسکرین سے تیزی سے ایکسیسبیلٹی خصوصیات تک رسائی حاصل کریں۔ \n\nشروع کرنے کے لئے، ایکسیسبیلٹی کی ترتیبات پر جائیں اور کوئی خصوصیت منتخب کریں۔ شارٹ کٹ پر تھپتھپائیں اور ایکسیسبیلٹی بٹن یا اشارہ منتخب کریں۔"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"کسی بھی اسکرین سے تیزی سے ایکسیسبیلٹی خصوصیات تک رسائی حاصل کریں۔ \n\nشروع کرنے کے لئے، ایکسیسبیلٹی کی ترتیبات پر جائیں اور خصوصیت منتخب کریں۔ شارٹ کٹ پر تھپتھپائیں اور ایکسیسبیلٹی بٹن منتخب کریں۔"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"بٹن یا اشارہ کا استعمال کریں"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"مقام"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index f932892..c168403 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -2355,8 +2355,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Qulaylik tugmasi va ishoralar"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Qulaylik tugmasidan foydalanish. 3 tugmali navigatsiya ishora orqali ishlamaydi."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Maxsus imkoniyatlarni tez ochish"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Qulayliklar funksiyalarini istalgan ekrandan tez oching. \n\nBoshlash uchun qulayliklar sozlamalari orqali kerakli funksiyani tanlang. Yorliq ustiga bosing va qulaylik tugmasi yoki ishorasini tanlang."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Maxsus imkoniyatlarni istalgan ekrandan tez oching. \n\nBoshlash uchun maxsus imkoniyatlar sozlamalari orqali kerakli funksiyani tanlang. Yorliq ustiga bosing yoki maxsus imkoniyat tugmasini tanlang."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Tugma yoki ishoradan foydalanish"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Joylashuv"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index bce2c08..ba3749d 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -2355,8 +2355,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Nút và cử chỉ hỗ trợ tiếp cận"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Sử dụng nút hỗ trợ tiếp cận. Bạn không thể sử dụng cử chỉ này với thao tác bằng 3 nút."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Truy cập nhanh vào bộ tính năng hỗ trợ tiếp cận"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Truy cập nhanh vào bộ tính năng hỗ trợ tiếp cận trên mọi màn hình. \n\nĐể bắt đầu, hãy chuyển đến phần cài đặt hỗ trợ tiếp cận rồi chọn một tính năng. Nhấn vào phím tắt rồi chọn cử chỉ hoặc nút hỗ trợ tiếp cận."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Truy cập nhanh vào bộ tính năng hỗ trợ tiếp cận từ mọi màn hình. \n\nĐể bắt đầu, hãy chuyển đến phần cài đặt hỗ trợ tiếp cận rồi chọn một tính năng. Nhấn vào phím tắt rồi chọn nút hỗ trợ tiếp cận."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Sử dụng nút hoặc cử chỉ"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Vị trí"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 2ed6a98..ab12efc 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -2370,7 +2370,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"“无障碍”按钮和手势"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"请使用“无障碍”按钮。该手势不能与“三按钮”导航搭配使用。"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"快速使用无障碍功能"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
+    <!-- no translation found for accessibility_button_gesture_description (2717632658372117656) -->
     <skip />
     <string name="accessibility_button_description" msgid="7372405202698400339">"在任意屏幕上快速使用无障碍功能。\n\n如需开始使用，请转到无障碍设置并选择相应功能。点按相应快捷方式，然后选择“无障碍”按钮。"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"使用按钮或手势"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index e7fdad3..3923bc4 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -2356,8 +2356,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"無障礙工具按鈕和手勢"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"請使用無障礙功能按鈕。手勢無法與三按鈕導覽配搭使用。"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"快速使用無障礙功能"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"在任何畫面上快速使用無障礙功能。\n\n如要開始使用，請前往無障礙功能設定頁面並選擇所需功能，然後輕按快速鍵並選取無障礙功能按鈕或手勢。"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"在任何畫面上快速使用無障礙功能。\n\n如要開始使用，請前往無障礙功能設定頁面並選擇所需功能，然後輕按快速鍵並選取無障礙功能按鈕。"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"使用按鈕或手勢"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"位置"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index a772c5e..07f24b7 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -2355,8 +2355,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"無障礙工具按鈕和手勢"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"請使用無障礙工具按鈕。手勢無法搭配三按鈕操作機制。"</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"快速使用無障礙功能"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"不論在哪個畫面，你都能快速使用無障礙功能。\n\n首先，請先前往無障礙設定，選取要使用的功能，然後輕觸捷徑並選取無障礙工具按鈕或手勢。"</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"不論在任何畫面中，你都能快速使用無障礙功能。\n\n首先，請前往無障礙設定頁面，選取要使用的功能，然後輕觸捷徑並選取無障礙工具按鈕。"</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"使用按鈕或手勢"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"位置"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index dd909d6..431a472 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -2354,8 +2354,7 @@
     <string name="accessibility_button_gesture_title" msgid="3573456209050374139">"Inkinobho yokufinyeleleka nokuthinta"</string>
     <string name="accessibility_button_intro" msgid="2601976470525277903">"Ukusebenzisa inkinobho yokufinyeleleka. Ukuthinta akutholakali ngokuzulazula kwezinkinobho ezi-3."</string>
     <string name="accessibility_button_summary" msgid="8510939012631455831">"Finyelela ngokushesha izakhi zokufinyelela"</string>
-    <!-- no translation found for accessibility_button_gesture_description (2516420653060025670) -->
-    <skip />
+    <string name="accessibility_button_gesture_description" msgid="2717632658372117656">"Finyelela ngokushesha izakhi zokufinyelela ezivela kunoma yisiphi isikrini. \n\nUkuze uqalise, iya kumasethinig wokufinyelela bese ukhetha isakhi. Thepha isinqamuleli bese ukhetha inkinobho yokufinyelela noma ngokuthinta."</string>
     <string name="accessibility_button_description" msgid="7372405202698400339">"Finyelela ngokushesha izakhi zokufinyelela ezivela kunoma yisiphi isikrini. \n\nUkuze uqalise, iya kumasethinig wokufinyelela bese ukhetha isakhi. Thepha isinqamuleli bese ukhetha inkinobho yokufinyelela."</string>
     <string name="accessibility_button_or_gesture_title" msgid="3510075963401163529">"Sebenzisa inkinobho noma ukuthinta"</string>
     <string name="accessibility_button_location_title" msgid="7182107846092304942">"Indawo"</string>
diff --git a/src/com/android/settings/development/tare/OWNERS b/src/com/android/settings/development/tare/OWNERS
new file mode 100644
index 0000000..46d25c8
--- /dev/null
+++ b/src/com/android/settings/development/tare/OWNERS
@@ -0,0 +1,3 @@
+# Bug component: 330055
+
+include platform/frameworks/base:/apex/jobscheduler/service/java/com/android/server/tare/OWNERS
\ No newline at end of file
diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
index c09ea02..3653baf 100644
--- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
@@ -17,6 +17,7 @@
 package com.android.settings.deviceinfo;
 
 import android.app.Activity;
+import android.app.ActivityManager;
 import android.app.settings.SettingsEnums;
 import android.content.ComponentName;
 import android.content.Context;
@@ -29,6 +30,7 @@
 import android.text.TextUtils;
 import android.widget.Toast;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -112,7 +114,7 @@
         if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
             return false;
         }
-        if (Utils.isMonkeyRunning()) {
+        if (isUserAMonkey()) {
             return false;
         }
         // Don't enable developer options for secondary non-demo users.
@@ -245,4 +247,9 @@
                 Toast.LENGTH_LONG);
         mDevHitToast.show();
     }
+
+    @VisibleForTesting
+    protected boolean isUserAMonkey() {
+        return ActivityManager.isUserAMonkey();
+    }
 }
diff --git a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
index abf58d8..292196e 100644
--- a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
@@ -133,7 +133,7 @@
     }
 
     @VisibleForTesting
-    SubscriptionInfo getSubscriptionInfo(int simSlot) {
+    protected SubscriptionInfo getSubscriptionInfo(int simSlot) {
         final List<SubscriptionInfo> subscriptionInfoList =
                 mSubscriptionManager.getActiveSubscriptionInfoList();
         if (subscriptionInfoList != null) {
@@ -147,7 +147,7 @@
     }
 
     @VisibleForTesting
-    CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) {
+    protected CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) {
         final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext,
                 subscriptionInfo);
         return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default)
@@ -155,7 +155,7 @@
     }
 
     @VisibleForTesting
-    Preference createNewPreference(Context context) {
+    protected Preference createNewPreference(Context context) {
         return new Preference(context);
     }
 }
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index 88e732a..968a408 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -68,6 +68,7 @@
 import com.android.settings.wifi.AddWifiNetworkPreference;
 import com.android.settings.wifi.ConfigureWifiEntryFragment;
 import com.android.settings.wifi.ConnectedWifiEntryPreference;
+import com.android.settings.wifi.LongPressWifiEntryPreference;
 import com.android.settings.wifi.WifiConfigUiBase2;
 import com.android.settings.wifi.WifiConnectListener;
 import com.android.settings.wifi.WifiDialog2;
@@ -83,7 +84,6 @@
 import com.android.settingslib.search.SearchIndexable;
 import com.android.settingslib.utils.ThreadUtils;
 import com.android.settingslib.widget.LayoutPreference;
-import com.android.settingslib.wifi.LongPressWifiEntryPreference;
 import com.android.settingslib.wifi.WifiSavedConfigUtils;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiEntry.ConnectCallback;
diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
index 1c3fc76..442af38 100644
--- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
+++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
@@ -189,6 +189,8 @@
         if (linkInfo.isActionable()) {
             helpTextView.setText(AnnotationSpan.linkify(
                     context.getText(R.string.private_dns_help_message), linkInfo));
+        } else {
+            helpTextView.setText("");
         }
     }
 
diff --git a/src/com/android/settings/network/telephony/CellInfoUtil.java b/src/com/android/settings/network/telephony/CellInfoUtil.java
index d7d2b18..63ef159 100644
--- a/src/com/android/settings/network/telephony/CellInfoUtil.java
+++ b/src/com/android/settings/network/telephony/CellInfoUtil.java
@@ -145,6 +145,8 @@
         final CellIdentity cid = getCellIdentity(cellInfo);
         String mcc = null;
         String mnc = null;
+        CharSequence alphaLong = null;
+        CharSequence alphaShort = null;
         if (cid != null) {
             if (cid instanceof CellIdentityGsm) {
                 mcc = ((CellIdentityGsm) cid).getMccString();
@@ -162,10 +164,13 @@
                 mcc = ((CellIdentityNr) cid).getMccString();
                 mnc = ((CellIdentityNr) cid).getMncString();
             }
+
+            alphaLong = cid.getOperatorAlphaLong();
+            alphaShort = cid.getOperatorAlphaShort();
         }
         return String.format(
                 "{CellType = %s, isRegistered = %b, mcc = %s, mnc = %s, alphaL = %s, alphaS = %s}",
                 cellType, cellInfo.isRegistered(), mcc, mnc,
-                cid.getOperatorAlphaLong(), cid.getOperatorAlphaShort());
+                alphaLong, alphaShort);
     }
 }
diff --git a/src/com/android/settings/network/telephony/NetworkOperatorPreference.java b/src/com/android/settings/network/telephony/NetworkOperatorPreference.java
index 3a7dc31..397bf36 100644
--- a/src/com/android/settings/network/telephony/NetworkOperatorPreference.java
+++ b/src/com/android/settings/network/telephony/NetworkOperatorPreference.java
@@ -36,6 +36,7 @@
 import android.telephony.CellSignalStrength;
 import android.util.Log;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
 import com.android.internal.telephony.OperatorInfo;
@@ -89,7 +90,8 @@
         updateCell(cellinfo, CellInfoUtil.getCellIdentity(cellinfo));
     }
 
-    private void updateCell(CellInfo cellinfo, CellIdentity cellId) {
+    @VisibleForTesting
+    protected void updateCell(CellInfo cellinfo, CellIdentity cellId) {
         mCellInfo = cellinfo;
         mCellId = cellId;
         refresh();
diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
index 6f315be..76b6cbd 100644
--- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java
+++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
@@ -36,6 +36,7 @@
 import android.util.Log;
 import android.view.View;
 
+import androidx.annotation.Keep;
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceCategory;
@@ -56,6 +57,7 @@
 /**
  * "Choose network" settings UI for the Settings app.
  */
+@Keep
 public class NetworkSelectSettings extends DashboardFragment {
 
     private static final String TAG = "NetworkSelectSettings";
@@ -67,8 +69,7 @@
 
     private static final String PREF_KEY_NETWORK_OPERATORS = "network_operators_preference";
 
-    @VisibleForTesting
-    PreferenceCategory mPreferenceCategory;
+    private PreferenceCategory mPreferenceCategory;
     @VisibleForTesting
     NetworkOperatorPreference mSelectedPreference;
     private View mProgressHeader;
@@ -76,8 +77,7 @@
     @VisibleForTesting
     List<CellInfo> mCellInfoList;
     private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-    @VisibleForTesting
-    TelephonyManager mTelephonyManager;
+    private TelephonyManager mTelephonyManager;
     private List<String> mForbiddenPlmns;
     private boolean mShow4GForLTE = false;
     private NetworkScanHelper mNetworkScanHelper;
@@ -93,28 +93,74 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
+        onCreateInitialization();
+    }
 
-        mUseNewApi = getContext().getResources().getBoolean(
-                com.android.internal.R.bool.config_enableNewAutoSelectNetworkUI);
+    @Keep
+    @VisibleForTesting
+    protected void onCreateInitialization() {
+        mUseNewApi = enableNewAutoSelectNetworkUI(getContext());
         mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID);
 
-        mPreferenceCategory = findPreference(PREF_KEY_NETWORK_OPERATORS);
+        mPreferenceCategory = getPreferenceCategory(PREF_KEY_NETWORK_OPERATORS);
         mStatusMessagePreference = new Preference(getContext());
         mStatusMessagePreference.setSelectable(false);
         mSelectedPreference = null;
-        mTelephonyManager = getContext().getSystemService(TelephonyManager.class)
-                .createForSubscriptionId(mSubId);
+        mTelephonyManager = getTelephonyManager(getContext(), mSubId);
         mNetworkScanHelper = new NetworkScanHelper(
                 mTelephonyManager, mCallback, mNetworkScanExecutor);
-        PersistableBundle bundle = ((CarrierConfigManager) getContext().getSystemService(
-                Context.CARRIER_CONFIG_SERVICE)).getConfigForSubId(mSubId);
+        PersistableBundle bundle = getCarrierConfigManager(getContext())
+                .getConfigForSubId(mSubId);
         if (bundle != null) {
             mShow4GForLTE = bundle.getBoolean(
                     CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL);
         }
 
-        mMetricsFeatureProvider = FeatureFactory
-                .getFactory(getContext()).getMetricsFeatureProvider();
+        mMetricsFeatureProvider = getMetricsFeatureProvider(getContext());
+    }
+
+    @Keep
+    @VisibleForTesting
+    protected boolean enableNewAutoSelectNetworkUI(Context context) {
+        return context.getResources().getBoolean(
+                com.android.internal.R.bool.config_enableNewAutoSelectNetworkUI);
+    }
+
+    @Keep
+    @VisibleForTesting
+    protected PreferenceCategory getPreferenceCategory(String preferenceKey) {
+        return findPreference(preferenceKey);
+    }
+
+    @Keep
+    @VisibleForTesting
+    protected TelephonyManager getTelephonyManager(Context context, int subscriptionId) {
+        return context.getSystemService(TelephonyManager.class)
+                .createForSubscriptionId(subscriptionId);
+    }
+
+    @Keep
+    @VisibleForTesting
+    protected CarrierConfigManager getCarrierConfigManager(Context context) {
+        return context.getSystemService(CarrierConfigManager.class);
+    }
+
+    @Keep
+    @VisibleForTesting
+    protected MetricsFeatureProvider getMetricsFeatureProvider(Context context) {
+        return FeatureFactory.getFactory(context).getMetricsFeatureProvider();
+    }
+
+    @Keep
+    @VisibleForTesting
+    protected boolean isPreferenceScreenEnabled() {
+        return getPreferenceScreen().isEnabled();
+    }
+
+    @Keep
+    @VisibleForTesting
+    protected void enablePreferenceScreen(boolean enable) {
+        getPreferenceScreen().setEnabled(enable);
     }
 
     @Override
@@ -146,8 +192,9 @@
     /**
      * Update forbidden PLMNs from the USIM App
      */
+    @Keep
     @VisibleForTesting
-    void updateForbiddenPlmns() {
+    protected void updateForbiddenPlmns() {
         final String[] forbiddenPlmns = mTelephonyManager.getForbiddenPlmns();
         mForbiddenPlmns = forbiddenPlmns != null
                 ? Arrays.asList(forbiddenPlmns)
@@ -182,7 +229,7 @@
 
             setProgressBarVisible(true);
             // Disable the screen until network is manually set
-            getPreferenceScreen().setEnabled(false);
+            enablePreferenceScreen(false);
 
             mRequestIdManualNetworkSelect = getNewRequestId();
             mWaitingForNumberOfScanResults = MIN_NUMBER_OF_SCAN_REQUIRED;
@@ -222,7 +269,7 @@
                     final boolean isSucceed = (boolean) msg.obj;
                     stopNetworkQuery();
                     setProgressBarVisible(false);
-                    getPreferenceScreen().setEnabled(true);
+                    enablePreferenceScreen(true);
 
                     if (mSelectedPreference != null) {
                         mSelectedPreference.setSummary(isSucceed
@@ -233,38 +280,7 @@
                     }
                     break;
                 case EVENT_NETWORK_SCAN_RESULTS:
-                    final List<CellInfo> results = (List<CellInfo>) msg.obj;
-                    if (mRequestIdManualNetworkScan < mRequestIdManualNetworkSelect) {
-                        Log.d(TAG, "CellInfoList (drop): "
-                                + CellInfoUtil.cellInfoListToString(new ArrayList<>(results)));
-                        break;
-                    }
-                    mWaitingForNumberOfScanResults--;
-                    if ((mWaitingForNumberOfScanResults <= 0) && (!isResumed())) {
-                        stopNetworkQuery();
-                    }
-
-                    mCellInfoList = new ArrayList<>(results);
-                    Log.d(TAG, "CellInfoList: " + CellInfoUtil.cellInfoListToString(mCellInfoList));
-                    if (mCellInfoList != null && mCellInfoList.size() != 0) {
-                        final NetworkOperatorPreference connectedPref =
-                                updateAllPreferenceCategory();
-                        if (connectedPref != null) {
-                            // update selected preference instance into connected preference
-                            if (mSelectedPreference != null) {
-                                mSelectedPreference = connectedPref;
-                            }
-                        } else if (!getPreferenceScreen().isEnabled()) {
-                            if (connectedPref == null) {
-                                mSelectedPreference.setSummary(R.string.network_connecting);
-                            }
-                        }
-                        getPreferenceScreen().setEnabled(true);
-                    } else if (getPreferenceScreen().isEnabled()) {
-                        addMessagePreference(R.string.empty_networks_list);
-                        // keep showing progress bar, it will be stopped when error or completed
-                        setProgressBarVisible(true);
-                    }
+                    scanResultHandler((List<CellInfo>) msg.obj);
                     break;
 
                 case EVENT_NETWORK_SCAN_ERROR:
@@ -277,9 +293,9 @@
                     if (mRequestIdManualNetworkScan < mRequestIdManualNetworkSelect) {
                         break;
                     }
-                    if (!getPreferenceScreen().isEnabled()) {
+                    if (!isPreferenceScreenEnabled()) {
                         clearPreferenceSummary();
-                        getPreferenceScreen().setEnabled(true);
+                        enablePreferenceScreen(true);
                     } else {
                         addMessagePreference(R.string.network_query_error);
                     }
@@ -295,9 +311,9 @@
                     if (mRequestIdManualNetworkScan < mRequestIdManualNetworkSelect) {
                         break;
                     }
-                    if (!getPreferenceScreen().isEnabled()) {
+                    if (!isPreferenceScreenEnabled()) {
                         clearPreferenceSummary();
-                        getPreferenceScreen().setEnabled(true);
+                        enablePreferenceScreen(true);
                     } else if (mCellInfoList == null) {
                         // In case the scan timeout before getting any results
                         addMessagePreference(R.string.empty_networks_list);
@@ -327,13 +343,55 @@
                 }
             };
 
+    @Keep
+    @VisibleForTesting
+    protected void scanResultHandler(List<CellInfo> results) {
+        if (mRequestIdManualNetworkScan < mRequestIdManualNetworkSelect) {
+            Log.d(TAG, "CellInfoList (drop): "
+                    + CellInfoUtil.cellInfoListToString(new ArrayList<>(results)));
+            return;
+        }
+        mWaitingForNumberOfScanResults--;
+        if ((mWaitingForNumberOfScanResults <= 0) && (!isResumed())) {
+            stopNetworkQuery();
+        }
+
+        mCellInfoList = new ArrayList<>(results);
+        Log.d(TAG, "CellInfoList: " + CellInfoUtil.cellInfoListToString(mCellInfoList));
+        if (mCellInfoList != null && mCellInfoList.size() != 0) {
+            final NetworkOperatorPreference connectedPref =
+                    updateAllPreferenceCategory();
+            if (connectedPref != null) {
+                // update selected preference instance into connected preference
+                if (mSelectedPreference != null) {
+                    mSelectedPreference = connectedPref;
+                }
+            } else if (!isPreferenceScreenEnabled()) {
+                if (connectedPref == null) {
+                    mSelectedPreference.setSummary(R.string.network_connecting);
+                }
+            }
+            enablePreferenceScreen(true);
+        } else if (isPreferenceScreenEnabled()) {
+            addMessagePreference(R.string.empty_networks_list);
+            // keep showing progress bar, it will be stopped when error or completed
+            setProgressBarVisible(true);
+        }
+    }
+
+    @Keep
+    @VisibleForTesting
+    protected NetworkOperatorPreference createNetworkOperatorPreference(CellInfo cellInfo) {
+        return new NetworkOperatorPreference(getPrefContext(),
+                cellInfo, mForbiddenPlmns, mShow4GForLTE);
+    }
+
     /**
      * Update the content of network operators list.
      *
      * @return preference which shows connected
      */
-    @VisibleForTesting
-    NetworkOperatorPreference updateAllPreferenceCategory() {
+    private NetworkOperatorPreference updateAllPreferenceCategory() {
         int numberOfPreferences = mPreferenceCategory.getPreferenceCount();
 
         // remove unused preferences
@@ -361,8 +419,7 @@
             }
             if (pref == null) {
                 // add new preference
-                pref = new NetworkOperatorPreference(getPrefContext(),
-                        cellInfo, mForbiddenPlmns, mShow4GForLTE);
+                pref = createNetworkOperatorPreference(cellInfo);
                 pref.setOrder(index);
                 mPreferenceCategory.addPreference(pref);
             }
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index ee23fc3..23cdaf9 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -809,51 +809,62 @@
 
         mUserCreatingDialog = new UserCreatingDialog(getActivity());
         mUserCreatingDialog.show();
-        ThreadUtils.postOnBackgroundThread(new Runnable() {
-            @Override
-            public void run() {
-                UserInfo user;
-                String username;
+        ThreadUtils.postOnBackgroundThread(new AddUserNowImpl(userType, mAddingUserName));
+    }
 
-                synchronized (mUserLock) {
-                    username = mAddingUserName;
-                }
+    @VisibleForTesting
+    class AddUserNowImpl implements Runnable{
+        int mUserType;
+        String mImplAddUserName;
 
-                // Could take a few seconds
-                if (userType == USER_TYPE_USER) {
-                    user = mUserManager.createUser(username, 0);
-                } else {
-                    user = mUserManager.createRestrictedProfile(username);
-                }
+        AddUserNowImpl(final int userType, final String addUserName) {
+            mUserType = userType;
+            mImplAddUserName = addUserName;
+        }
 
-                synchronized (mUserLock) {
-                    if (user == null) {
-                        mAddingUser = false;
-                        mPendingUserIcon = null;
-                        mPendingUserName = null;
-                        ThreadUtils.postOnMainThread(() -> onUserCreationFailed());
-                        return;
-                    }
+        @Override
+        public void run() {
+            UserInfo user;
+            String username;
 
-                    Drawable newUserIcon = mPendingUserIcon;
-                    if (newUserIcon == null) {
-                        newUserIcon = UserIcons.getDefaultUserIcon(getResources(), user.id, false);
-                    }
-                    mUserManager.setUserIcon(user.id, UserIcons.convertToBitmap(newUserIcon));
+            synchronized (mUserLock) {
+                username = mImplAddUserName;
+            }
 
-                    if (userType == USER_TYPE_USER) {
-                        mHandler.sendEmptyMessage(MESSAGE_UPDATE_LIST);
-                    }
+            // Could take a few seconds
+            if (mUserType == USER_TYPE_USER) {
+                user = mUserManager.createUser(username, 0);
+            } else {
+                user = mUserManager.createRestrictedProfile(username);
+            }
 
-                    mHandler.sendMessage(mHandler.obtainMessage(
-                            MESSAGE_USER_CREATED, user.id, user.serialNumber));
-
+            synchronized (mUserLock) {
+                if (user == null) {
+                    mAddingUser = false;
                     mPendingUserIcon = null;
                     mPendingUserName = null;
+                    ThreadUtils.postOnMainThread(() -> onUserCreationFailed());
+                    return;
                 }
+
+                Drawable newUserIcon = mPendingUserIcon;
+                if (newUserIcon == null) {
+                    newUserIcon = UserIcons.getDefaultUserIcon(getResources(), user.id, false);
+                }
+                mUserManager.setUserIcon(user.id, UserIcons.convertToBitmap(newUserIcon));
+
+                if (mUserType == USER_TYPE_USER) {
+                    mHandler.sendEmptyMessage(MESSAGE_UPDATE_LIST);
+                }
+
+                mHandler.sendMessage(mHandler.obtainMessage(
+                        MESSAGE_USER_CREATED, user.id, user.serialNumber));
+
+                mPendingUserIcon = null;
+                mPendingUserName = null;
             }
-        });
-    }
+        }
+    };
 
     /**
      * Erase the current user (guest) and switch to another user.
diff --git a/src/com/android/settings/wifi/ConnectedWifiEntryPreference.java b/src/com/android/settings/wifi/ConnectedWifiEntryPreference.java
index afba0d8..1c069246 100644
--- a/src/com/android/settings/wifi/ConnectedWifiEntryPreference.java
+++ b/src/com/android/settings/wifi/ConnectedWifiEntryPreference.java
@@ -22,7 +22,6 @@
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settingslib.R;
-import com.android.settingslib.wifi.LongPressWifiEntryPreference;
 import com.android.wifitrackerlib.WifiEntry;
 
 /**
diff --git a/src/com/android/settings/wifi/LongPressWifiEntryPreference.java b/src/com/android/settings/wifi/LongPressWifiEntryPreference.java
new file mode 100644
index 0000000..bee92cf
--- /dev/null
+++ b/src/com/android/settings/wifi/LongPressWifiEntryPreference.java
@@ -0,0 +1,46 @@
+/*
+ * 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.wifi;
+
+import android.content.Context;
+
+import androidx.fragment.app.Fragment;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.wifitrackerlib.WifiEntry;
+
+/**
+ * WifiEntryPreference that can be long pressed.
+ */
+public class LongPressWifiEntryPreference extends WifiEntryPreference {
+
+    private final Fragment mFragment;
+
+    public LongPressWifiEntryPreference(Context context, WifiEntry wifiEntry, Fragment fragment) {
+        super(context, wifiEntry);
+        mFragment = fragment;
+    }
+
+    @Override
+    public void onBindViewHolder(final PreferenceViewHolder view) {
+        super.onBindViewHolder(view);
+        if (mFragment != null) {
+            view.itemView.setOnCreateContextMenuListener(mFragment);
+            view.itemView.setTag(this);
+            view.itemView.setLongClickable(true);
+        }
+    }
+}
diff --git a/src/com/android/settings/wifi/WifiConnectionPreferenceController.java b/src/com/android/settings/wifi/WifiConnectionPreferenceController.java
index 3b2669c..47eb587 100644
--- a/src/com/android/settings/wifi/WifiConnectionPreferenceController.java
+++ b/src/com/android/settings/wifi/WifiConnectionPreferenceController.java
@@ -37,7 +37,6 @@
 import com.android.settings.wifi.details2.WifiNetworkDetailsFragment2;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.core.lifecycle.Lifecycle;
-import com.android.settingslib.wifi.WifiEntryPreference;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiPickerTracker;
 
diff --git a/src/com/android/settings/wifi/WifiEntryPreference.java b/src/com/android/settings/wifi/WifiEntryPreference.java
new file mode 100644
index 0000000..3dfeada
--- /dev/null
+++ b/src/com/android/settings/wifi/WifiEntryPreference.java
@@ -0,0 +1,315 @@
+/*
+ * 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.wifi;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.StateListDrawable;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.settingslib.R;
+import com.android.settingslib.Utils;
+import com.android.settingslib.wifi.WifiUtils;
+import com.android.wifitrackerlib.WifiEntry;
+
+/**
+ * Preference to display a WifiEntry in a wifi picker.
+ */
+public class WifiEntryPreference extends Preference implements WifiEntry.WifiEntryCallback,
+        View.OnClickListener {
+
+    private static final int[] STATE_SECURED = {
+            R.attr.state_encrypted
+    };
+
+    private static final int[] FRICTION_ATTRS = {
+            R.attr.wifi_friction
+    };
+
+    // These values must be kept within [WifiEntry.WIFI_LEVEL_MIN, WifiEntry.WIFI_LEVEL_MAX]
+    private static final int[] WIFI_CONNECTION_STRENGTH = {
+            R.string.accessibility_no_wifi,
+            R.string.accessibility_wifi_one_bar,
+            R.string.accessibility_wifi_two_bars,
+            R.string.accessibility_wifi_three_bars,
+            R.string.accessibility_wifi_signal_full
+    };
+
+    // StateListDrawable to display secured lock / metered "$" icon
+    @Nullable private final StateListDrawable mFrictionSld;
+    private final IconInjector mIconInjector;
+    private WifiEntry mWifiEntry;
+    private int mLevel = -1;
+    private boolean mShowX; // Shows the Wi-Fi signl icon of Pie+x when it's true.
+    private CharSequence mContentDescription;
+    private OnButtonClickListener mOnButtonClickListener;
+
+    public WifiEntryPreference(@NonNull Context context, @NonNull WifiEntry wifiEntry) {
+        this(context, wifiEntry, new IconInjector(context));
+    }
+
+    @VisibleForTesting
+    WifiEntryPreference(@NonNull Context context, @NonNull WifiEntry wifiEntry,
+            @NonNull IconInjector iconInjector) {
+        super(context);
+
+        setLayoutResource(R.layout.preference_access_point);
+        setWidgetLayoutResource(R.layout.access_point_friction_widget);
+        mFrictionSld = getFrictionStateListDrawable();
+        mWifiEntry = wifiEntry;
+        mWifiEntry.setListener(this);
+        mIconInjector = iconInjector;
+        refresh();
+    }
+
+    public WifiEntry getWifiEntry() {
+        return mWifiEntry;
+    }
+
+    @Override
+    public void onBindViewHolder(final PreferenceViewHolder view) {
+        super.onBindViewHolder(view);
+        final Drawable drawable = getIcon();
+        if (drawable != null) {
+            drawable.setLevel(mLevel);
+        }
+
+        view.itemView.setContentDescription(mContentDescription);
+
+        // Turn off divider
+        view.findViewById(R.id.two_target_divider).setVisibility(View.INVISIBLE);
+
+        // Enable the icon button when the help string in this WifiEntry is not null.
+        final ImageButton imageButton = (ImageButton) view.findViewById(R.id.icon_button);
+        final ImageView frictionImageView = (ImageView) view.findViewById(
+                R.id.friction_icon);
+        if (mWifiEntry.getHelpUriString() != null
+                && mWifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_DISCONNECTED) {
+            final Drawable drawablehelp = getDrawable(R.drawable.ic_help);
+            drawablehelp.setTintList(
+                    Utils.getColorAttr(getContext(), android.R.attr.colorControlNormal));
+            ((ImageView) imageButton).setImageDrawable(drawablehelp);
+            imageButton.setVisibility(View.VISIBLE);
+            imageButton.setOnClickListener(this);
+            imageButton.setContentDescription(
+                    getContext().getText(R.string.help_label));
+
+            if (frictionImageView != null) {
+                frictionImageView.setVisibility(View.GONE);
+            }
+        } else {
+            imageButton.setVisibility(View.GONE);
+
+            if (frictionImageView != null) {
+                frictionImageView.setVisibility(View.VISIBLE);
+                bindFrictionImage(frictionImageView);
+            }
+        }
+    }
+
+    /**
+     * Updates the title and summary; may indirectly call notifyChanged().
+     */
+    public void refresh() {
+        setTitle(mWifiEntry.getTitle());
+        final int level = mWifiEntry.getLevel();
+        final boolean showX = mWifiEntry.shouldShowXLevelIcon();
+        if (level != mLevel || showX != mShowX) {
+            mLevel = level;
+            mShowX = showX;
+            updateIcon(mShowX, mLevel);
+            notifyChanged();
+        }
+
+        setSummary(mWifiEntry.getSummary(false /* concise */));
+        mContentDescription = buildContentDescription();
+    }
+
+    /**
+     * Indicates the state of the WifiEntry has changed and clients may retrieve updates through
+     * the WifiEntry getter methods.
+     */
+    public void onUpdated() {
+        // TODO(b/70983952): Fill this method in
+        refresh();
+    }
+
+    /**
+     * Result of the connect request indicated by the WifiEntry.CONNECT_STATUS constants.
+     */
+    public void onConnectResult(int status) {
+        // TODO(b/70983952): Fill this method in
+    }
+
+    /**
+     * Result of the disconnect request indicated by the WifiEntry.DISCONNECT_STATUS constants.
+     */
+    public void onDisconnectResult(int status) {
+        // TODO(b/70983952): Fill this method in
+    }
+
+    /**
+     * Result of the forget request indicated by the WifiEntry.FORGET_STATUS constants.
+     */
+    public void onForgetResult(int status) {
+        // TODO(b/70983952): Fill this method in
+    }
+
+    /**
+     * Result of the sign-in request indecated by the WifiEntry.SIGNIN_STATUS constants
+     */
+    public void onSignInResult(int status) {
+        // TODO(b/70983952): Fill this method in
+    }
+
+    protected int getIconColorAttr() {
+        final boolean accent = (mWifiEntry.hasInternetAccess()
+                && mWifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED);
+        return accent ? android.R.attr.colorAccent : android.R.attr.colorControlNormal;
+    }
+
+    private void updateIcon(boolean showX, int level) {
+        if (level == -1) {
+            setIcon(null);
+            return;
+        }
+
+        final Drawable drawable = mIconInjector.getIcon(showX, level);
+        if (drawable != null) {
+            drawable.setTint(Utils.getColorAttrDefaultColor(getContext(), getIconColorAttr()));
+            setIcon(drawable);
+        } else {
+            setIcon(null);
+        }
+    }
+
+    @Nullable
+    private StateListDrawable getFrictionStateListDrawable() {
+        TypedArray frictionSld;
+        try {
+            frictionSld = getContext().getTheme().obtainStyledAttributes(FRICTION_ATTRS);
+        } catch (Resources.NotFoundException e) {
+            // Fallback for platforms that do not need friction icon resources.
+            frictionSld = null;
+        }
+        return frictionSld != null ? (StateListDrawable) frictionSld.getDrawable(0) : null;
+    }
+
+    /**
+     * Binds the friction icon drawable using a StateListDrawable.
+     *
+     * <p>Friction icons will be rebound when notifyChange() is called, and therefore
+     * do not need to be managed in refresh()</p>.
+     */
+    private void bindFrictionImage(ImageView frictionImageView) {
+        if (frictionImageView == null || mFrictionSld == null) {
+            return;
+        }
+        if ((mWifiEntry.getSecurity() != WifiEntry.SECURITY_NONE)
+                && (mWifiEntry.getSecurity() != WifiEntry.SECURITY_OWE)) {
+            mFrictionSld.setState(STATE_SECURED);
+        }
+        frictionImageView.setImageDrawable(mFrictionSld.getCurrent());
+    }
+
+    /**
+     * Helper method to generate content description string.
+     */
+    @VisibleForTesting
+    CharSequence buildContentDescription() {
+        final Context context = getContext();
+
+        CharSequence contentDescription = getTitle();
+        final CharSequence summary = getSummary();
+        if (!TextUtils.isEmpty(summary)) {
+            contentDescription = TextUtils.concat(contentDescription, ",", summary);
+        }
+        int level = mWifiEntry.getLevel();
+        if (level >= 0 && level < WIFI_CONNECTION_STRENGTH.length) {
+            contentDescription = TextUtils.concat(contentDescription, ",",
+                    context.getString(WIFI_CONNECTION_STRENGTH[level]));
+        }
+        return TextUtils.concat(contentDescription, ",",
+                mWifiEntry.getSecurity() == WifiEntry.SECURITY_NONE
+                        ? context.getString(R.string.accessibility_wifi_security_type_none)
+                        : context.getString(R.string.accessibility_wifi_security_type_secured));
+    }
+
+
+    static class IconInjector {
+        private final Context mContext;
+
+        IconInjector(Context context) {
+            mContext = context;
+        }
+
+        public Drawable getIcon(boolean showX, int level) {
+            return mContext.getDrawable(WifiUtils.getInternetIconResource(level, showX));
+        }
+    }
+
+    /**
+     * Set listeners, who want to listen the button client event.
+     */
+    public void setOnButtonClickListener(OnButtonClickListener listener) {
+        mOnButtonClickListener = listener;
+        notifyChanged();
+    }
+
+    @Override
+    public void onClick(View view) {
+        if (view.getId() == R.id.icon_button) {
+            if (mOnButtonClickListener != null) {
+                mOnButtonClickListener.onButtonClick(this);
+            }
+        }
+    }
+
+    /**
+     * Callback to inform the caller that the icon button is clicked.
+     */
+    public interface OnButtonClickListener {
+
+        /**
+         * Register to listen the button click event.
+         */
+        void onButtonClick(WifiEntryPreference preference);
+    }
+
+    private Drawable getDrawable(@DrawableRes int iconResId) {
+        Drawable buttonIcon = null;
+
+        try {
+            buttonIcon = getContext().getDrawable(iconResId);
+        } catch (Resources.NotFoundException exception) {
+            // Do nothing
+        }
+        return buttonIcon;
+    }
+
+}
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 75e6307..2ceb278 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -74,7 +74,6 @@
 import com.android.settingslib.RestrictedLockUtilsInternal;
 import com.android.settingslib.search.Indexable;
 import com.android.settingslib.search.SearchIndexable;
-import com.android.settingslib.wifi.LongPressWifiEntryPreference;
 import com.android.settingslib.wifi.WifiSavedConfigUtils;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiEntry.ConnectCallback;
diff --git a/src/com/android/settings/wifi/dpp/WifiNetworkListFragment.java b/src/com/android/settings/wifi/dpp/WifiNetworkListFragment.java
index a017fac..61d2eb8 100644
--- a/src/com/android/settings/wifi/dpp/WifiNetworkListFragment.java
+++ b/src/com/android/settings/wifi/dpp/WifiNetworkListFragment.java
@@ -41,7 +41,7 @@
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.wifi.AddNetworkFragment;
-import com.android.settingslib.wifi.WifiEntryPreference;
+import com.android.settings.wifi.WifiEntryPreference;
 import com.android.wifitrackerlib.SavedNetworkTracker;
 import com.android.wifitrackerlib.WifiEntry;
 
diff --git a/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2.java b/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2.java
index 1d1c801..f0841f4 100644
--- a/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2.java
+++ b/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2.java
@@ -25,7 +25,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.core.BasePreferenceController;
-import com.android.settingslib.wifi.WifiEntryPreference;
+import com.android.settings.wifi.WifiEntryPreference;
 import com.android.wifitrackerlib.WifiEntry;
 
 import java.util.ArrayList;
diff --git a/tests/componenttests/src/com/android/settings/display/darkmode/DarkThemeScheduleComponentTest.java b/tests/componenttests/src/com/android/settings/display/darkmode/DarkThemeScheduleComponentTest.java
new file mode 100644
index 0000000..3822c82
--- /dev/null
+++ b/tests/componenttests/src/com/android/settings/display/darkmode/DarkThemeScheduleComponentTest.java
@@ -0,0 +1,145 @@
+/*
+ * 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.display.darkmode;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.Instrumentation;
+import android.app.TimePickerDialog;
+import android.app.UiModeManager;
+import android.content.Intent;
+import android.content.res.Configuration;
+import android.provider.Settings;
+import android.util.Log;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.test.core.app.ActivityScenario;
+import androidx.test.ext.junit.rules.ActivityScenarioRule;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.runner.lifecycle.Stage;
+
+import com.android.settings.testutils.CommonUtils;
+import com.android.settings.testutils.UiUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.time.LocalTime;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class DarkThemeScheduleComponentTest {
+    private static final int DIALOG_START_TIME = 0;
+    private static final int DIALOG_END_TIME = 1;
+    /** The identifier for the positive button. */
+    private static final int BUTTON_POSITIVE = -1;
+    public final String TAG = this.getClass().getName();
+    private final Instrumentation mInstrumentation = InstrumentationRegistry.getInstrumentation();
+
+    @Rule
+    public ActivityScenarioRule<com.android.settings.Settings.DarkThemeSettingsActivity> rule =
+            new ActivityScenarioRule<>(
+                    new Intent(
+                            Settings.ACTION_DARK_THEME_SETTINGS).setFlags(
+                            Intent.FLAG_ACTIVITY_NEW_TASK));
+    private UiModeManager mUiModeManager;
+
+    @Before
+    public void setUp() {
+        mUiModeManager = mInstrumentation.getTargetContext().getSystemService(UiModeManager.class);
+        if (mUiModeManager.getNightMode() != UiModeManager.MODE_NIGHT_NO) {
+            mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
+        }
+    }
+
+    private void test_step_for_custom_time(int startTimeDiff, int endTimeDiff) {
+
+        ActivityScenario scenario = rule.getScenario();
+        scenario.onActivity(activity -> {
+            mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_CUSTOM);
+            Fragment f =
+                    ((FragmentActivity) activity).getSupportFragmentManager().getFragments().get(0);
+            DarkModeSettingsFragment fragment = (DarkModeSettingsFragment) f;
+
+            setCustomTime(fragment, DIALOG_START_TIME, LocalTime.now().plusMinutes(startTimeDiff));
+            setCustomTime(fragment, DIALOG_END_TIME, LocalTime.now().plusMinutes(endTimeDiff));
+
+            // The night mode need to reopen the screen to trigger UI change after mode change.
+            CommonUtils.reopenScreen();
+        });
+
+        // Recreate the scenario to make sure UI apply new mode.
+        scenario.recreate();
+        scenario.onActivity(activity -> {
+            Log.d(TAG, "Activity Recreated!");
+            UiUtils.waitForActivitiesInStage(2000, Stage.RESUMED);
+        });
+    }
+
+    @Test
+    public void test_dark_mode_in_custom_time() {
+        test_step_for_custom_time(-1, 11);
+        assertThat(checkNightMode(true)).isTrue();
+    }
+
+    @Test
+    public void test_dark_mode_after_custom_time() {
+        test_step_for_custom_time(-11, -1);
+        assertThat(checkNightMode(false)).isTrue();
+    }
+
+    @Test
+    public void test_dark_mode_before_custom_time() {
+        test_step_for_custom_time(2, 20);
+        assertThat(checkNightMode(false)).isTrue();
+    }
+
+    /**
+     * Sets custom time for night mode.
+     *
+     * @param fragment The DarkModeSettingsFragment.
+     * @param dialogId Dialog id for start time or end time.
+     * @param time     The time to be set.
+     */
+    private void setCustomTime(DarkModeSettingsFragment fragment, int dialogId, LocalTime time) {
+        Log.d(TAG, "Start to set custom time " + (dialogId == DIALOG_START_TIME ? "StartTime"
+                : "EndTime") + " to " + time.getHour() + ":" + time.getMinute());
+        TimePickerDialog startTimeDialog = (TimePickerDialog) fragment.onCreateDialog(dialogId);
+        startTimeDialog.updateTime(time.getHour(), time.getMinute());
+        startTimeDialog.onClick(startTimeDialog, BUTTON_POSITIVE);
+    }
+
+    private boolean checkNightMode(boolean isNightMode) {
+        int mask = (isNightMode ? Configuration.UI_MODE_NIGHT_YES : Configuration.UI_MODE_NIGHT_NO);
+        int mode = mInstrumentation.getTargetContext().getResources().getConfiguration().uiMode;
+        return (mode & mask) != 0;
+    }
+
+    @After
+    public void tearDown() {
+        Log.d(TAG, "tearDown.");
+        if (mUiModeManager.getNightMode() != UiModeManager.MODE_NIGHT_NO) {
+            mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
+        }
+    }
+}
diff --git a/tests/componenttests/src/com/android/settings/testutils/AdbUtils.java b/tests/componenttests/src/com/android/settings/testutils/AdbUtils.java
index 08eb47a..81f9854 100644
--- a/tests/componenttests/src/com/android/settings/testutils/AdbUtils.java
+++ b/tests/componenttests/src/com/android/settings/testutils/AdbUtils.java
@@ -17,46 +17,61 @@
 package com.android.settings.testutils;
 
 import android.os.ParcelFileDescriptor;
-import android.text.TextUtils;
-import android.util.Log;
 
 import androidx.test.platform.app.InstrumentationRegistry;
 
 import java.io.BufferedReader;
+import java.io.IOException;
 import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
-import java.util.Optional;
+import java.util.stream.Collectors;
 
 public class AdbUtils {
+    public static String getCallerClassName() {
+        StackTraceElement[] stElements = Thread.currentThread().getStackTrace();
+        for (int i = 1; i < stElements.length; i++) {
+            StackTraceElement ste = stElements[i];
+            if (!ste.getClassName().equals(new Object() {
+            }.getClass().getEnclosingClass().getName()) && ste.getClassName().indexOf(
+                    "java.lang.Thread") != 0) {
+                return ste.getClassName();
+            }
+        }
+        return null;
+    }
+
     public static boolean checkStringInAdbCommandOutput(String logTag, String command,
             String prefix, String target, int timeoutInMillis) throws Exception {
         long start = System.nanoTime();
         //Sometimes the change do no reflect in adn output immediately, so need a wait and poll here
         while (System.nanoTime() - start < (timeoutInMillis * 1000000)) {
-            try (ParcelFileDescriptor.AutoCloseInputStream in =
-                         new ParcelFileDescriptor.AutoCloseInputStream(
-                                 InstrumentationRegistry.getInstrumentation()
-                                         .getUiAutomation()
-                                         .executeShellCommand(command))) {
-                try (BufferedReader br =
-                             new BufferedReader(
-                                     new InputStreamReader(in, StandardCharsets.UTF_8))) {
-                    Optional<String> resultOptional = br.lines().filter(line -> {
-                        Log.d(logTag, line);
-                        return TextUtils.isEmpty(prefix) || line.contains(prefix);
-                    }).findFirst();
-                    String result = resultOptional.get();
-                    if (result.contains(target)) {
-                        return true;
-                    } else {
-                        Thread.sleep(100);
-                    }
-                }
-            } catch (Exception e) {
-                throw e;
+            String result = shell(command);
+            if (result.contains(prefix) && result.contains(target)) {
+                return true;
+            } else {
+                Thread.sleep(100);
             }
         }
 
         return false;
     }
+
+    public static String shell(String shellCommand) {
+        String returnValue = "";
+        try (ParcelFileDescriptor.AutoCloseInputStream in =
+                     new ParcelFileDescriptor.AutoCloseInputStream(
+                             InstrumentationRegistry.getInstrumentation()
+                                     .getUiAutomation()
+                                     .executeShellCommand(shellCommand))) {
+            try (BufferedReader br =
+                         new BufferedReader(
+                                 new InputStreamReader(in, StandardCharsets.UTF_8))) {
+                returnValue = br.lines().collect(Collectors.joining());
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return returnValue;
+    }
 }
diff --git a/tests/componenttests/src/com/android/settings/testutils/CommonUtils.java b/tests/componenttests/src/com/android/settings/testutils/CommonUtils.java
index 02a83fc..7cc4d2d 100644
--- a/tests/componenttests/src/com/android/settings/testutils/CommonUtils.java
+++ b/tests/componenttests/src/com/android/settings/testutils/CommonUtils.java
@@ -17,8 +17,12 @@
 package com.android.settings.testutils;
 
 import android.app.Activity;
+import android.app.Instrumentation;
+import android.content.Context;
 import android.graphics.Bitmap;
 import android.os.Environment;
+import android.os.PowerManager;
+import android.os.SystemClock;
 import android.util.Log;
 import android.view.View;
 
@@ -36,6 +40,11 @@
 
 public class CommonUtils {
     private static final String TAG = CommonUtils.class.getSimpleName();
+    private static Instrumentation sInstrumentation =
+            InstrumentationRegistry.getInstrumentation();
+    private static PowerManager sPowerManager =
+            (PowerManager) sInstrumentation.getTargetContext().getSystemService(
+                    Context.POWER_SERVICE);
 
     public static void takeScreenshot(Activity activity) {
         long now = System.currentTimeMillis();
@@ -106,4 +115,21 @@
         return InstrumentationRegistry.getInstrumentation().getTargetContext().getResources()
                 .getIdentifier(name, "id", Constants.SETTINGS_PACKAGE_NAME);
     }
+
+    public static void reopenScreen() {
+        sPowerManager.goToSleep(SystemClock.uptimeMillis());
+        // According to local test, we need to sleep to wait it fully processed.
+        // 1000 ms is a good value to sleep, otherwise it might cause keyDispatchingTimedOut.
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        UiUtils.waitUntilCondition(1000, () -> !sPowerManager.isInteractive());
+        sPowerManager.wakeUp(SystemClock.uptimeMillis());
+        UiUtils.waitUntilCondition(1000, () -> sPowerManager.isInteractive());
+
+        // After power on screen, need to unlock and goto home page.
+        AdbUtils.shell("input keyevent KEYCODE_MENU");
+    }
 }
diff --git a/tests/componenttests/src/com/android/settings/testutils/UiUtils.java b/tests/componenttests/src/com/android/settings/testutils/UiUtils.java
index 481a7b2..d58dced 100644
--- a/tests/componenttests/src/com/android/settings/testutils/UiUtils.java
+++ b/tests/componenttests/src/com/android/settings/testutils/UiUtils.java
@@ -32,7 +32,7 @@
 public class UiUtils {
     private static final String TAG = "UI_UTILS";
 
-    public static void waitUntilCondition(long timeoutInMillis, Supplier<Boolean> condition) {
+    public static boolean waitUntilCondition(long timeoutInMillis, Supplier<Boolean> condition) {
         long start = System.nanoTime();
         while (System.nanoTime() - start < (timeoutInMillis * 1000000)) {
             try {
@@ -40,17 +40,14 @@
                 //findViewById when the view hierarchy is still rendering, it sometimes encounter
                 //null views that may exist few milliseconds before, and causes a NPE.
                 if (condition.get()) {
-                    return;
+                    return true;
                 }
             } catch (NullPointerException e) {
                 e.printStackTrace();
             }
         }
-        if (System.nanoTime() - start >= (timeoutInMillis * 1000000)) {
-            Log.w(TAG, "Condition not match and timeout for waiting " + timeoutInMillis + "(ms).");
-        } else {
-            Log.d(TAG, "Condition matched.");
-        }
+        Log.w(TAG, "Condition not match and timeout for waiting " + timeoutInMillis + "(ms).");
+        return false;
     }
 
     public static boolean waitForActivitiesInStage(long timeoutInMillis, Stage stage) {
diff --git a/tests/componenttests/src/com/android/settings/users/UserSettingsComponentTest.java b/tests/componenttests/src/com/android/settings/users/UserSettingsComponentTest.java
new file mode 100644
index 0000000..b0735fb
--- /dev/null
+++ b/tests/componenttests/src/com/android/settings/users/UserSettingsComponentTest.java
@@ -0,0 +1,141 @@
+/*
+ * 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.users;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.Instrumentation;
+import android.content.Intent;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.util.Log;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.test.core.app.ActivityScenario;
+import androidx.test.ext.junit.rules.ActivityScenarioRule;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.android.settings.Settings;
+import com.android.settings.testutils.AdbUtils;
+import com.android.settings.testutils.UiUtils;
+import com.android.settingslib.utils.ThreadUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Random;
+import java.util.stream.Collectors;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class UserSettingsComponentTest {
+    public static final int TIMEOUT = 2000;
+    private static final int USER_TYPE_RESTRICTED_PROFILE = 2;
+    public final String TAG = this.getClass().getName();
+    private final Instrumentation mInstrumentation = InstrumentationRegistry.getInstrumentation();
+    private final ArrayList<Integer> mOriginUserIds = new ArrayList<>();
+    private final UserManager mUserManager =
+            (UserManager) mInstrumentation.getTargetContext().getSystemService("user");
+    @Rule
+    public ActivityScenarioRule<Settings.UserSettingsActivity>
+            rule = new ActivityScenarioRule<>(
+            new Intent(android.provider.Settings.ACTION_USER_SETTINGS)
+                    .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+
+    @Before
+    public void setUp() {
+        for (UserInfo info : mUserManager.getUsers()) {
+            mOriginUserIds.add(info.id);
+        }
+
+        // Enable multiple user switch.
+        if (!mUserManager.isUserSwitcherEnabled()) {
+            android.provider.Settings.Global.putInt(
+                    mInstrumentation.getTargetContext().getContentResolver(),
+                    android.provider.Settings.Global.USER_SWITCHER_ENABLED, 1);
+        }
+    }
+
+    @Test
+    public void test_new_user_on_multiple_setting_page() throws IOException {
+        String randomUserName = gendrate_random_name(10);
+        ActivityScenario scenario = rule.getScenario();
+        scenario.onActivity(activity -> {
+            Fragment f =
+                    ((FragmentActivity) activity).getSupportFragmentManager().getFragments().get(0);
+            UserSettings us = (UserSettings) f;
+            Log.d(TAG, "Start to add user :" + randomUserName);
+            ThreadUtils.postOnBackgroundThread(
+                    us.new AddUserNowImpl(USER_TYPE_RESTRICTED_PROFILE, randomUserName));
+        });
+
+        assertThat(
+                UiUtils.waitUntilCondition(5000, () -> mUserManager.getAliveUsers().stream().filter(
+                        (user) -> user.name.equals(
+                                randomUserName)).findFirst().isPresent())).isTrue();
+    }
+
+    @After
+    public void tearDown() {
+        int retryNumber = 5;
+        for (int i = 0; i < retryNumber; ++i) {
+            int currentUsersCount = mUserManager.getUserCount();
+            if (currentUsersCount == mOriginUserIds.size()) {
+                break;
+            } else if (i != 0) {
+                Log.d(TAG, "[tearDown] User not fully removed. Retry #" + (i = 1) + " of total "
+                        + mOriginUserIds.size());
+            }
+
+            for (UserInfo info : mUserManager.getUsers()) {
+                if (mOriginUserIds.contains(info.id)) {
+                    continue;
+                }
+                Log.d(TAG, "[tearDown] Clean up user {" + info.id + "}:" + info.name);
+                try {
+                    AdbUtils.shell("pm remove-user " + info.id);
+                } catch (Exception e) {
+                    Log.w(TAG, "[tearDown] Error occurs while removing user. " + e.toString());
+                }
+            }
+        }
+    }
+
+    private String gendrate_random_name(int length) {
+        String seed = "abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQSTUVWXYZ";
+        Random r1 = new Random();
+        String result = "";
+        for (int i = 0; i < length; ++i) {
+            result = result + seed.charAt(r1.nextInt(seed.length() - 1));
+        }
+        if (mUserManager.getAliveUsers().stream().map(user -> user.name).collect(
+                Collectors.toList()).contains(result)) {
+            Log.d(TAG, "Name repeated! add padding 'rpt' in the end of name.");
+            result += "rpt";
+        }
+        return result;
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/development/tare/OWNERS b/tests/robotests/src/com/android/settings/development/tare/OWNERS
new file mode 100644
index 0000000..46d25c8
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/development/tare/OWNERS
@@ -0,0 +1,3 @@
+# Bug component: 330055
+
+include platform/frameworks/base:/apex/jobscheduler/service/java/com/android/server/tare/OWNERS
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BrandedAccountPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BrandedAccountPreferenceControllerTest.java
deleted file mode 100644
index 87dcb33..0000000
--- a/tests/robotests/src/com/android/settings/deviceinfo/BrandedAccountPreferenceControllerTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2018 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.deviceinfo;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
-import android.accounts.Account;
-import android.content.Context;
-
-import com.android.settings.testutils.FakeFeatureFactory;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-
-@RunWith(RobolectricTestRunner.class)
-public class BrandedAccountPreferenceControllerTest {
-
-    private Context mContext;
-    private FakeFeatureFactory fakeFeatureFactory;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        fakeFeatureFactory = FakeFeatureFactory.setupForTest();
-
-    }
-
-    @Test
-    public void isAvailable_configOn_noAccount_off() {
-        final BrandedAccountPreferenceController controller =
-                new BrandedAccountPreferenceController(mContext, "test_key");
-        assertThat(controller.isAvailable()).isFalse();
-    }
-
-    @Test
-    public void isAvailable_accountIsAvailable_on() {
-        when(fakeFeatureFactory.mAccountFeatureProvider.getAccounts(any(Context.class)))
-                .thenReturn(new Account[]{new Account("fake@account.foo", "fake.reallyfake")});
-
-        final BrandedAccountPreferenceController controller =
-                new BrandedAccountPreferenceController(mContext, "test_key");
-
-        assertThat(controller.isAvailable()).isTrue();
-    }
-
-    @Test
-    @Config(qualifiers = "mcc999")
-    public void isAvailable_configOff_hasAccount_off() {
-        when(fakeFeatureFactory.mAccountFeatureProvider.getAccounts(any(Context.class)))
-                .thenReturn(new Account[]{new Account("fake@account.foo", "fake.reallyfake")});
-
-        final BrandedAccountPreferenceController controller =
-                new BrandedAccountPreferenceController(mContext, "test_key");
-
-        assertThat(controller.isAvailable()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java
deleted file mode 100644
index d705b64..0000000
--- a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2019 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.deviceinfo.hardwareinfo;
-
-import static android.content.Context.CLIPBOARD_SERVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.ClipboardManager;
-import android.content.Context;
-import android.os.SystemProperties;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class HardwareRevisionPreferenceControllerTest {
-
-    private Context mContext;
-    private HardwareRevisionPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mController = new HardwareRevisionPreferenceController(mContext,
-                "hardware_info_device_revision");
-    }
-
-    @Test
-    public void copy_shouldCopyHardwareRevisionToClipboard() {
-        final String fakeHardwareVer = "FakeVer1.0";
-        SystemProperties.set("ro.boot.hardware.revision", fakeHardwareVer);
-
-        mController.copy();
-
-        final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(
-                CLIPBOARD_SERVICE);
-        final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText();
-
-        assertThat(data.toString()).isEqualTo(fakeHardwareVer);
-    }
-}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java
deleted file mode 100644
index 2106b54..0000000
--- a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2019 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.deviceinfo.hardwareinfo;
-
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.ClipData;
-import android.content.ClipboardManager;
-import android.content.Context;
-import android.os.Build;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class SerialNumberPreferenceControllerTest {
-
-    private Context mContext;
-    private SerialNumberPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mController = new SerialNumberPreferenceController(mContext, "test");
-    }
-
-    @Test
-    public void copy_shouldPutSerialNumberToClipBoard() {
-        mController.copy();
-
-        final ClipboardManager clipboardManager = mContext.getSystemService(ClipboardManager.class);
-        final ClipData data = clipboardManager.getPrimaryClip();
-
-        assertThat(data.getItemAt(0).getText().toString()).contains(Build.getSerial());
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
index 9951449..4036000 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
@@ -64,11 +64,11 @@
 import com.android.settings.testutils.shadow.ShadowFragment;
 import com.android.settings.wifi.AddWifiNetworkPreference;
 import com.android.settings.wifi.ConnectedWifiEntryPreference;
+import com.android.settings.wifi.LongPressWifiEntryPreference;
 import com.android.settings.wifi.WifiConfigController2;
 import com.android.settings.wifi.WifiDialog2;
 import com.android.settingslib.connectivity.ConnectivitySubsystemsRecoveryManager;
 import com.android.settingslib.widget.LayoutPreference;
-import com.android.settingslib.wifi.LongPressWifiEntryPreference;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiPickerTracker;
 
diff --git a/tests/robotests/src/com/android/settings/network/WifiConnectionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/WifiConnectionPreferenceControllerTest.java
index ea957c3..038a292 100644
--- a/tests/robotests/src/com/android/settings/network/WifiConnectionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/WifiConnectionPreferenceControllerTest.java
@@ -34,8 +34,8 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.wifi.WifiConnectionPreferenceController;
+import com.android.settings.wifi.WifiEntryPreference;
 import com.android.settingslib.core.lifecycle.Lifecycle;
-import com.android.settingslib.wifi.WifiEntryPreference;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiPickerTracker;
 
diff --git a/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java b/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
deleted file mode 100644
index 6bee38f..0000000
--- a/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2018 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.network.telephony;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.telephony.CellIdentityLte;
-import android.telephony.CellIdentityWcdma;
-import android.telephony.CellInfoLte;
-import android.telephony.CellInfoWcdma;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceManager;
-
-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;
-
-import java.util.Arrays;
-
-@RunWith(RobolectricTestRunner.class)
-public class NetworkSelectSettingsTest {
-    private static final int SUB_ID = 2;
-    private static final String CARRIER_NAME1 = "CarrierName1";
-    private static final String CARRIER_NAME2 = "CarrierName2";
-
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private SubscriptionManager mSubscriptionManager;
-    @Mock
-    private CellInfoWcdma mCellInfo1;
-    @Mock
-    private CellIdentityWcdma mCellId1;
-    @Mock
-    private CellInfoLte mCellInfo2;
-    @Mock
-    private CellIdentityLte mCellId2;
-    @Mock
-    private PreferenceManager mPreferenceManager;
-    @Mock
-    private SharedPreferences mSharedPreferences;
-    private Context mContext;
-
-    private PreferenceCategory mPreferenceCategory;
-
-    private NetworkSelectSettings mNetworkSelectSettings;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(RuntimeEnvironment.application);
-        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
-        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
-        when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
-
-        when(mCellInfo1.isRegistered()).thenReturn(true);
-        when(mCellInfo1.getCellIdentity()).thenReturn(mCellId1);
-        when(mCellId1.getOperatorAlphaLong()).thenReturn(CARRIER_NAME1);
-        when(mCellInfo2.isRegistered()).thenReturn(false);
-        when(mCellInfo2.getCellIdentity()).thenReturn(mCellId2);
-        when(mCellId2.getOperatorAlphaLong()).thenReturn(CARRIER_NAME2);
-
-        doReturn(mSharedPreferences).when(mPreferenceManager).getSharedPreferences();
-        mPreferenceCategory = spy(new PreferenceCategory(mContext));
-        doReturn(mPreferenceManager).when(mPreferenceCategory).getPreferenceManager();
-
-        mNetworkSelectSettings = spy(new NetworkSelectSettings());
-        doReturn(mContext).when(mNetworkSelectSettings).getContext();
-        doReturn(mPreferenceManager).when(mNetworkSelectSettings).getPreferenceManager();
-        doReturn(mContext).when(mPreferenceManager).getContext();
-
-        mNetworkSelectSettings.mTelephonyManager = mTelephonyManager;
-        mNetworkSelectSettings.mPreferenceCategory = mPreferenceCategory;
-        mNetworkSelectSettings.mCellInfoList = Arrays.asList(mCellInfo1, mCellInfo2);
-    }
-
-    @Test
-    public void updateAllPreferenceCategory_correctOrderingPreference() {
-        mNetworkSelectSettings.updateAllPreferenceCategory();
-
-        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
-        final NetworkOperatorPreference preference =
-                (NetworkOperatorPreference) mPreferenceCategory.getPreference(1);
-        assertThat(preference.getOperatorName()).isEqualTo(mCellId2.getOperatorAlphaLong());
-    }
-
-    @Test
-    public void updateForbiddenPlmns_forbiddenPlmnsNull_shouldNotCrash() {
-        when(mTelephonyManager.getForbiddenPlmns()).thenReturn(null);
-
-        // Should not Crash
-        mNetworkSelectSettings.updateForbiddenPlmns();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiEntryPreferenceTest.java b/tests/robotests/src/com/android/settings/wifi/WifiEntryPreferenceTest.java
new file mode 100644
index 0000000..ce1b46a
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/wifi/WifiEntryPreferenceTest.java
@@ -0,0 +1,255 @@
+/*
+ * 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.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.LinearLayout;
+
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.settingslib.R;
+import com.android.wifitrackerlib.WifiEntry;
+
+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;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+public class WifiEntryPreferenceTest {
+
+    private Context mContext;
+
+    @Mock
+    private WifiEntry mMockWifiEntry;
+    @Mock
+    private WifiEntryPreference.IconInjector mMockIconInjector;
+
+    @Mock
+    private Drawable mMockDrawable0;
+    @Mock
+    private Drawable mMockDrawable1;
+    @Mock
+    private Drawable mMockDrawable2;
+    @Mock
+    private Drawable mMockDrawable3;
+    @Mock
+    private Drawable mMockDrawable4;
+
+    @Mock
+    private Drawable mMockShowXDrawable0;
+    @Mock
+    private Drawable mMockShowXDrawable1;
+    @Mock
+    private Drawable mMockShowXDrawable2;
+    @Mock
+    private Drawable mMockShowXDrawable3;
+    @Mock
+    private Drawable mMockShowXDrawable4;
+
+    private static final String MOCK_TITLE = "title";
+    private static final String MOCK_SUMMARY = "summary";
+    private static final String FAKE_URI_STRING = "fakeuri";
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+
+        MockitoAnnotations.initMocks(this);
+
+        when(mMockWifiEntry.getTitle()).thenReturn(MOCK_TITLE);
+        when(mMockWifiEntry.getSummary(false /* concise */)).thenReturn(MOCK_SUMMARY);
+
+        when(mMockIconInjector.getIcon(false /* showX */, 0)).thenReturn(mMockDrawable0);
+        when(mMockIconInjector.getIcon(false /* showX */, 1)).thenReturn(mMockDrawable1);
+        when(mMockIconInjector.getIcon(false /* showX */, 2)).thenReturn(mMockDrawable2);
+        when(mMockIconInjector.getIcon(false /* showX */, 3)).thenReturn(mMockDrawable3);
+        when(mMockIconInjector.getIcon(false /* showX */, 4)).thenReturn(mMockDrawable4);
+
+        when(mMockIconInjector.getIcon(true /* showX */, 0))
+                .thenReturn(mMockShowXDrawable0);
+        when(mMockIconInjector.getIcon(true /* showX */, 1))
+                .thenReturn(mMockShowXDrawable1);
+        when(mMockIconInjector.getIcon(true /* showX */, 2))
+                .thenReturn(mMockShowXDrawable2);
+        when(mMockIconInjector.getIcon(true /* showX */, 3))
+                .thenReturn(mMockShowXDrawable3);
+        when(mMockIconInjector.getIcon(true /* showX */, 4))
+                .thenReturn(mMockShowXDrawable4);
+    }
+
+    @Test
+    public void constructor_shouldSetWifiEntryTitleAndSummary() {
+        final WifiEntryPreference pref =
+                new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
+
+        assertThat(pref.getTitle()).isEqualTo(MOCK_TITLE);
+        assertThat(pref.getSummary()).isEqualTo(MOCK_SUMMARY);
+        assertThat(false).isTrue();
+    }
+
+    @Test
+    public void constructor_shouldSetIcon() {
+        when(mMockWifiEntry.getLevel()).thenReturn(0);
+
+        final WifiEntryPreference pref =
+                new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
+
+        assertThat(pref.getIcon()).isEqualTo(mMockDrawable0);
+    }
+
+    @Test
+    public void titleChanged_refresh_shouldUpdateTitle() {
+        final WifiEntryPreference pref =
+                new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
+        final String updatedTitle = "updated title";
+        when(mMockWifiEntry.getTitle()).thenReturn(updatedTitle);
+
+        pref.refresh();
+
+        assertThat(pref.getTitle()).isEqualTo(updatedTitle);
+    }
+
+    @Test
+    public void summaryChanged_refresh_shouldUpdateSummary() {
+        final WifiEntryPreference pref =
+                new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
+        final String updatedSummary = "updated summary";
+        when(mMockWifiEntry.getSummary(false /* concise */)).thenReturn(updatedSummary);
+
+        pref.refresh();
+
+        assertThat(pref.getSummary()).isEqualTo(updatedSummary);
+    }
+
+    @Test
+    public void levelChanged_refresh_shouldUpdateLevelIcon() {
+        final List<Drawable> iconList = new ArrayList<>();
+        final WifiEntryPreference pref =
+                new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
+
+        when(mMockWifiEntry.getLevel()).thenReturn(0);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+        when(mMockWifiEntry.getLevel()).thenReturn(1);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+        when(mMockWifiEntry.getLevel()).thenReturn(2);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+        when(mMockWifiEntry.getLevel()).thenReturn(3);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+        when(mMockWifiEntry.getLevel()).thenReturn(4);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+        when(mMockWifiEntry.getLevel()).thenReturn(-1);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+
+        assertThat(iconList).containsExactly(mMockDrawable0, mMockDrawable1,
+                mMockDrawable2, mMockDrawable3, mMockDrawable4, null);
+    }
+
+    @Test
+    public void levelChanged_showXWifiRefresh_shouldUpdateLevelIcon() {
+        final List<Drawable> iconList = new ArrayList<>();
+        when(mMockWifiEntry.shouldShowXLevelIcon()).thenReturn(true);
+        final WifiEntryPreference pref =
+                new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
+
+        when(mMockWifiEntry.getLevel()).thenReturn(0);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+        when(mMockWifiEntry.getLevel()).thenReturn(1);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+        when(mMockWifiEntry.getLevel()).thenReturn(2);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+        when(mMockWifiEntry.getLevel()).thenReturn(3);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+        when(mMockWifiEntry.getLevel()).thenReturn(4);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+        when(mMockWifiEntry.getLevel()).thenReturn(-1);
+        pref.refresh();
+        iconList.add(pref.getIcon());
+
+        assertThat(iconList).containsExactly(mMockShowXDrawable0, mMockShowXDrawable1,
+                mMockShowXDrawable2, mMockShowXDrawable3, mMockShowXDrawable4, null);
+    }
+
+    @Test
+    public void notNull_whenGetHelpUriString_shouldSetImageButtonVisible() {
+        when(mMockWifiEntry.getHelpUriString()).thenReturn(FAKE_URI_STRING);
+        final WifiEntryPreference pref =
+                new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
+        final LayoutInflater inflater = LayoutInflater.from(mContext);
+        final View view = inflater.inflate(pref.getLayoutResource(), new LinearLayout(mContext),
+                false);
+        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
+
+        pref.onBindViewHolder(holder);
+
+        assertThat(view.findViewById(R.id.icon_button).getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void helpButton_whenGetHelpUriStringNotNull_shouldSetCorrectContentDescription() {
+        when(mMockWifiEntry.getHelpUriString()).thenReturn(FAKE_URI_STRING);
+        final WifiEntryPreference pref =
+                new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
+        final LayoutInflater inflater = LayoutInflater.from(mContext);
+        final View view = inflater.inflate(pref.getLayoutResource(), new LinearLayout(mContext),
+                false);
+        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
+
+        pref.onBindViewHolder(holder);
+
+        assertThat(view.findViewById(R.id.icon_button).getContentDescription()).isEqualTo(
+                mContext.getString(R.string.help_label));
+    }
+
+    @Test
+    public void subscriptionEntry_shouldSetImageButtonGone() {
+        when(mMockWifiEntry.isSubscription()).thenReturn(true);
+        final WifiEntryPreference pref =
+                new WifiEntryPreference(mContext, mMockWifiEntry, mMockIconInjector);
+        final LayoutInflater inflater = LayoutInflater.from(mContext);
+        final View view = inflater.inflate(pref.getLayoutResource(), new LinearLayout(mContext),
+                false);
+        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(view);
+
+        pref.onBindViewHolder(holder);
+
+        assertThat(view.findViewById(R.id.icon_button).getVisibility()).isEqualTo(View.GONE);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
index 1f5abd3..c124c59 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
@@ -57,7 +57,6 @@
 import com.android.settings.datausage.DataUsagePreference;
 import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
 import com.android.settings.testutils.shadow.ShadowFragment;
-import com.android.settingslib.wifi.LongPressWifiEntryPreference;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiPickerTracker;
 
diff --git a/tests/robotests/src/com/android/settings/wifi/dpp/WifiNetworkListFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/dpp/WifiNetworkListFragmentTest.java
index 70f2b1a..e78f1c1 100644
--- a/tests/robotests/src/com/android/settings/wifi/dpp/WifiNetworkListFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/dpp/WifiNetworkListFragmentTest.java
@@ -36,7 +36,7 @@
 import androidx.preference.PreferenceCategory;
 import androidx.test.InstrumentationRegistry;
 
-import com.android.settingslib.wifi.WifiEntryPreference;
+import com.android.settings.wifi.WifiEntryPreference;
 import com.android.wifitrackerlib.SavedNetworkTracker;
 import com.android.wifitrackerlib.WifiEntry;
 
diff --git a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2Test.java b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2Test.java
index 7b7a3b1..0d10223 100644
--- a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2Test.java
@@ -35,7 +35,7 @@
 import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceScreen;
 
-import com.android.settingslib.wifi.WifiEntryPreference;
+import com.android.settings.wifi.WifiEntryPreference;
 import com.android.wifitrackerlib.WifiEntry;
 
 import org.junit.Before;
diff --git a/tests/unit/src/com/android/settings/deviceinfo/BrandedAccountPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/BrandedAccountPreferenceControllerTest.java
new file mode 100644
index 0000000..6e78d05
--- /dev/null
+++ b/tests/unit/src/com/android/settings/deviceinfo/BrandedAccountPreferenceControllerTest.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2018 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.deviceinfo;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.accounts.Account;
+import android.content.Context;
+import android.content.res.Resources;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.testutils.ResourcesUtils;
+
+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 BrandedAccountPreferenceControllerTest {
+
+    @Mock
+    private Resources mResources;
+    private Context mContext;
+    private FakeFeatureFactory mFakeFeatureFactory;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        when(mContext.getResources()).thenReturn(mResources);
+        mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
+
+    }
+
+    @Test
+    public void isAvailable_configOn_noAccount_off() {
+        final int boolId = ResourcesUtils.getResourcesId(
+                ApplicationProvider.getApplicationContext(), "bool",
+                "config_show_branded_account_in_device_info");
+        when(mResources.getBoolean(boolId)).thenReturn(true);
+
+        final BrandedAccountPreferenceController controller =
+                new BrandedAccountPreferenceController(mContext, "test_key");
+        assertThat(controller.isAvailable()).isFalse();
+    }
+
+    @Test
+    public void isAvailable_accountIsAvailable_on() {
+        final int boolId = ResourcesUtils.getResourcesId(
+                ApplicationProvider.getApplicationContext(), "bool",
+                "config_show_branded_account_in_device_info");
+        when(mResources.getBoolean(boolId)).thenReturn(true);
+        when(mFakeFeatureFactory.mAccountFeatureProvider.getAccounts(any(Context.class)))
+                .thenReturn(new Account[]{new Account("fake@account.foo", "fake.reallyfake")});
+
+        final BrandedAccountPreferenceController controller =
+                new BrandedAccountPreferenceController(mContext, "test_key");
+
+        assertThat(controller.isAvailable()).isTrue();
+    }
+
+    @Test
+    public void isAvailable_configOff_hasAccount_off() {
+        final int boolId = ResourcesUtils.getResourcesId(
+                ApplicationProvider.getApplicationContext(), "bool",
+                "config_show_branded_account_in_device_info");
+        when(mResources.getBoolean(boolId)).thenReturn(false);
+        when(mFakeFeatureFactory.mAccountFeatureProvider.getAccounts(any(Context.class)))
+                .thenReturn(new Account[]{new Account("fake@account.foo", "fake.reallyfake")});
+
+        final BrandedAccountPreferenceController controller =
+                new BrandedAccountPreferenceController(mContext, "test_key");
+
+        assertThat(controller.isAvailable()).isFalse();
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
similarity index 71%
rename from tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
index 80a3a11..8c75449 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
@@ -22,52 +22,51 @@
 
 import static org.mockito.ArgumentMatchers.any;
 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.spy;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import android.app.Activity;
+import android.content.ClipData;
 import android.content.ClipboardManager;
 import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.Process;
-import android.os.UserHandle;
+import android.os.Looper;
 import android.os.UserManager;
 import android.provider.Settings;
 
 import androidx.lifecycle.LifecycleOwner;
 import androidx.preference.Preference;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.testutils.shadow.ShadowUtils;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.development.DevelopmentSettingsEnabler;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
+import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowUserManager;
 
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowUtils.class)
+@RunWith(AndroidJUnit4.class)
 public class BuildNumberPreferenceControllerTest {
 
     private static final String KEY_BUILD_NUMBER = "build_number";
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private InstrumentedPreferenceFragment mFragment;
 
-    private ShadowUserManager mShadowUserManager;
-
     private Context mContext;
+    private UserManager mUserManager;
+    private ClipboardManager mClipboardManager;
     private LifecycleOwner mLifecycleOwner;
     private Lifecycle mLifecycle;
     private FakeFeatureFactory mFactory;
@@ -75,15 +74,23 @@
     private BuildNumberPreferenceController mController;
 
     @Before
+    @UiThreadTest
     public void setUp() {
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
         MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mShadowUserManager = Shadows.shadowOf(
-                RuntimeEnvironment.application.getSystemService(UserManager.class));
+
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mUserManager = (UserManager) spy(mContext.getSystemService(Context.USER_SERVICE));
+        doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE);
+        mClipboardManager = (ClipboardManager) spy(mContext.getSystemService(CLIPBOARD_SERVICE));
+        doReturn(mClipboardManager).when(mContext).getSystemService(CLIPBOARD_SERVICE);
+
         mFactory = FakeFeatureFactory.setupForTest();
         mLifecycleOwner = () -> mLifecycle;
         mLifecycle = new Lifecycle(mLifecycleOwner);
-        mController = new BuildNumberPreferenceController(mContext, KEY_BUILD_NUMBER);
+        mController = spy(new BuildNumberPreferenceController(mContext, KEY_BUILD_NUMBER));
         mController.setHost(mFragment);
 
         mPreference = new Preference(mContext);
@@ -93,11 +100,6 @@
                 Settings.Global.DEVICE_PROVISIONED, 1);
     }
 
-    @After
-    public void tearDown() {
-        ShadowUtils.reset();
-    }
-
     @Test
     public void handlePrefTreeClick_onlyHandleBuildNumberPref() {
         assertThat(mController.handlePreferenceTreeClick(mock(Preference.class))).isFalse();
@@ -105,32 +107,32 @@
 
     @Test
     public void handlePrefTreeClick_notAdminUser_notDemoUser_doNothing() {
-        mShadowUserManager.setIsAdminUser(false);
-        mShadowUserManager.setIsDemoUser(false);
+        when(mUserManager.isAdminUser()).thenReturn(false);
+        when(mUserManager.isDemoUser()).thenReturn(false);
 
         assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
     }
 
     @Test
     public void handlePrefTreeClick_isAdminUser_notDemoUser_handleBuildNumberPref() {
-        mShadowUserManager.setIsAdminUser(true);
-        mShadowUserManager.setIsDemoUser(false);
+        when(mUserManager.isAdminUser()).thenReturn(true);
+        when(mUserManager.isDemoUser()).thenReturn(false);
 
         assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue();
     }
 
     @Test
     public void handlePrefTreeClick_notAdminUser_isDemoUser_handleBuildNumberPref() {
-        mShadowUserManager.setIsAdminUser(false);
-        mShadowUserManager.addUser(UserHandle.myUserId(), "test", UserInfo.FLAG_DEMO);
+        when(mUserManager.isAdminUser()).thenReturn(false);
+        when(mUserManager.isDemoUser()).thenReturn(true);
 
         assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue();
     }
 
     @Test
     public void handlePrefTreeClick_deviceNotProvisioned_doNothing() {
-        mShadowUserManager.setIsAdminUser(true);
-        mShadowUserManager.setIsDemoUser(false);
+        when(mUserManager.isAdminUser()).thenReturn(true);
+        when(mUserManager.isDemoUser()).thenReturn(false);
 
         Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
                 0);
@@ -143,17 +145,16 @@
 
     @Test
     public void handlePrefTreeClick_isMonkeyRun_doNothing() {
-        ShadowUtils.setIsUserAMonkey(true);
+        when(mController.isUserAMonkey()).thenReturn(true);
         assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
     }
 
     @Test
     public void handlePrefTreeClick_userHasRestriction_doNothing() {
-        mShadowUserManager.setIsAdminUser(true);
-        mShadowUserManager.setIsDemoUser(false);
-
-        mShadowUserManager.setUserRestriction(Process.myUserHandle(),
-                UserManager.DISALLOW_DEBUGGING_FEATURES, true);
+        when(mUserManager.isAdminUser()).thenReturn(true);
+        when(mUserManager.isDemoUser()).thenReturn(false);
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES))
+                .thenReturn(true);
 
         assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
         verify(mFactory.metricsFeatureProvider).action(
@@ -184,8 +185,9 @@
     }
 
     @Test
+    @UiThreadTest
     public void onActivityResult_confirmPasswordRequestCompleted_enableDevPref() {
-        mShadowUserManager.setIsAdminUser(true);
+        when(mUserManager.isAdminUser()).thenReturn(true);
 
         final boolean activityResultHandled = mController.onActivityResult(
                 BuildNumberPreferenceController.REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF,
@@ -197,12 +199,14 @@
     }
 
     @Test
+    @UiThreadTest
     public void copy_shouldCopyBuildNumberToClipboard() {
+        ArgumentCaptor<ClipData> captor = ArgumentCaptor.forClass(ClipData.class);
+        doNothing().when(mClipboardManager).setPrimaryClip(captor.capture());
+
         mController.copy();
 
-        final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(
-                CLIPBOARD_SERVICE);
-        final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText();
-        assertThat(data.toString()).isEqualTo(mController.getSummary());
+        final ClipData data = captor.getValue();
+        assertThat(data.getItemAt(0).getText().toString()).isEqualTo(mController.getSummary());
     }
 }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java
similarity index 71%
rename from tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java
index 9bb2d3f..2a06ce9 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java
@@ -21,38 +21,43 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.content.ClipData;
 import android.content.ClipboardManager;
 import android.content.Context;
+import android.os.Looper;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 
 import androidx.preference.Preference;
+import androidx.preference.PreferenceManager;
 import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
-import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.ResourcesUtils;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
 import java.util.ArrayList;
 import java.util.List;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class PhoneNumberPreferenceControllerTest {
 
-    @Mock
     private Preference mPreference;
     @Mock
     private Preference mSecondPreference;
@@ -62,25 +67,34 @@
     private SubscriptionInfo mSubscriptionInfo;
     @Mock
     private SubscriptionManager mSubscriptionManager;
-    @Mock
     private PreferenceScreen mScreen;
 
     private Context mContext;
     private PhoneNumberPreferenceController mController;
+    private ClipboardManager mClipboardManager;
 
     @Before
     public void setup() {
         MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mClipboardManager = (ClipboardManager) spy(mContext.getSystemService(CLIPBOARD_SERVICE));
+        doReturn(mClipboardManager).when(mContext).getSystemService(CLIPBOARD_SERVICE);
         when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
         when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
         mController = spy(new PhoneNumberPreferenceController(mContext, "phone_number"));
-        final String prefKey = mController.getPreferenceKey();
-        when(mScreen.findPreference(prefKey)).thenReturn(mPreference);
-        when(mScreen.getContext()).thenReturn(mContext);
+
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+        final PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        mScreen = preferenceManager.createPreferenceScreen(mContext);
+        mPreference = spy(new Preference(mContext));
+        mPreference.setKey(mController.getPreferenceKey());
+        mPreference.setVisible(true);
+        mScreen.addPreference(mPreference);
+
         doReturn(mSubscriptionInfo).when(mController).getSubscriptionInfo(anyInt());
         doReturn(mSecondPreference).when(mController).createNewPreference(mContext);
-        when(mPreference.isVisible()).thenReturn(true);
     }
 
     @Test
@@ -105,7 +119,7 @@
 
         mController.displayPreference(mScreen);
 
-        verify(mScreen).addPreference(mSecondPreference);
+        assertThat(mScreen.getPreferenceCount()).isEqualTo(2);
     }
 
     @Test
@@ -117,7 +131,7 @@
 
         mController.updateState(mPreference);
 
-        verify(mPreference).setTitle(mContext.getString(R.string.status_number));
+        verify(mPreference).setTitle(ResourcesUtils.getResourcesString(mContext, "status_number"));
         verify(mPreference).setSummary(phoneNumber);
     }
 
@@ -130,11 +144,11 @@
 
         mController.updateState(mPreference);
 
-        verify(mPreference).setTitle(
-                mContext.getString(R.string.status_number_sim_slot, 1 /* sim slot */));
+        verify(mPreference).setTitle(ResourcesUtils.getResourcesString(
+                mContext, "status_number_sim_slot", 1 /* sim slot */));
         verify(mPreference).setSummary(phoneNumber);
-        verify(mSecondPreference).setTitle(
-                mContext.getString(R.string.status_number_sim_slot, 2 /* sim slot */));
+        verify(mSecondPreference).setTitle(ResourcesUtils.getResourcesString(
+                mContext, "status_number_sim_slot", 2 /* sim slot */));
         verify(mSecondPreference).setSummary(phoneNumber);
     }
 
@@ -145,7 +159,8 @@
         CharSequence primaryNumber = mController.getSummary();
 
         assertThat(primaryNumber).isNotNull();
-        assertThat(primaryNumber).isEqualTo(mContext.getString(R.string.device_info_default));
+        assertThat(primaryNumber).isEqualTo(ResourcesUtils.getResourcesString(
+                mContext, "device_info_default"));
     }
 
     @Test
@@ -155,22 +170,24 @@
 
         CharSequence primaryNumber = mController.getSummary();
 
-        assertThat(primaryNumber).isEqualTo(mContext.getString(R.string.device_info_default));
+        assertThat(primaryNumber).isEqualTo(ResourcesUtils.getResourcesString(
+                mContext, "device_info_default"));
     }
 
     @Test
+    @UiThreadTest
     public void copy_shouldCopyPhoneNumberToClipboard() {
         final List<SubscriptionInfo> list = new ArrayList<>();
         list.add(mSubscriptionInfo);
         when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(list);
         final String phoneNumber = "1111111111";
         doReturn(phoneNumber).when(mController).getFormattedPhoneNumber(mSubscriptionInfo);
+        ArgumentCaptor<ClipData> captor = ArgumentCaptor.forClass(ClipData.class);
+        doNothing().when(mClipboardManager).setPrimaryClip(captor.capture());
 
         mController.copy();
 
-        final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(
-                CLIPBOARD_SERVICE);
-        final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText();
+        final CharSequence data = captor.getValue().getItemAt(0).getText();
         assertThat(phoneNumber.contentEquals(data)).isTrue();
     }
 }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceControllerTest.java
similarity index 66%
rename from tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceControllerTest.java
index 65e29b4..847919a 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceControllerTest.java
@@ -18,41 +18,57 @@
 
 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.content.res.Resources;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.ResourcesUtils;
 
 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;
-import org.robolectric.annotation.Config;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DeviceModelPreferenceControllerTest {
 
     private Context mContext;
     private DeviceModelPreferenceController mController;
 
+    @Mock
+    private Resources mResources;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        when(mContext.getResources()).thenReturn(mResources);
         mController = new DeviceModelPreferenceController(mContext, "test_key");
     }
 
     @Test
     public void getAvailabilityStatus_configAllowed_available() {
+        final int boolId = ResourcesUtils.getResourcesId(
+                ApplicationProvider.getApplicationContext(), "bool", "config_show_device_model");
+        when(mResources.getBoolean(boolId)).thenReturn(true);
+
         assertThat(mController.getAvailabilityStatus()).isEqualTo(
                 BasePreferenceController.AVAILABLE);
     }
 
     @Test
-    @Config(qualifiers = "mcc999")
     public void getAvailabilityStatus_configDisallowed_unavailable() {
+        final int boolId = ResourcesUtils.getResourcesId(
+                ApplicationProvider.getApplicationContext(), "bool", "config_show_device_model");
+        when(mResources.getBoolean(boolId)).thenReturn(false);
+
         assertThat(mController.getAvailabilityStatus()).isEqualTo(
                 BasePreferenceController.UNSUPPORTED_ON_DEVICE);
     }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareInfoPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/HardwareInfoPreferenceControllerTest.java
similarity index 70%
rename from tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareInfoPreferenceControllerTest.java
rename to tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/HardwareInfoPreferenceControllerTest.java
index c7c7669..7262615 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareInfoPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/HardwareInfoPreferenceControllerTest.java
@@ -17,41 +17,53 @@
 
 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.content.res.Resources;
 import android.os.Build;
+import android.os.Looper;
 
 import androidx.preference.Preference;
 import androidx.preference.PreferenceManager;
 import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.deviceinfo.HardwareInfoPreferenceController;
+import com.android.settings.testutils.ResourcesUtils;
 
 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;
-import org.robolectric.annotation.Config;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class HardwareInfoPreferenceControllerTest {
 
-    private final String KEY = "device_model";
+    private static final String KEY = "device_model";
 
     private Preference mPreference;
     private PreferenceScreen mPreferenceScreen;
     private Context mContext;
+    @Mock
+    private Resources mResources;
     private HardwareInfoPreferenceController mController;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        when(mContext.getResources()).thenReturn(mResources);
         mController = new HardwareInfoPreferenceController(mContext, KEY);
         mPreference = new Preference(mContext);
         mPreference.setKey(KEY);
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
         final PreferenceManager preferenceManager = new PreferenceManager(mContext);
         mPreferenceScreen = preferenceManager.createPreferenceScreen(mContext);
         mPreferenceScreen.addPreference(mPreference);
@@ -59,13 +71,20 @@
 
     @Test
     public void isAvailable_returnTrueIfVisible() {
+        final int boolId = ResourcesUtils.getResourcesId(
+                ApplicationProvider.getApplicationContext(), "bool", "config_show_device_model");
+
+        when(mResources.getBoolean(boolId)).thenReturn(true);
         assertThat(mController.getAvailabilityStatus()).isEqualTo(
                 BasePreferenceController.AVAILABLE);
     }
 
     @Test
-    @Config(qualifiers = "mcc999")
     public void isAvailable_returnFalseIfNotVisible() {
+        final int boolId = ResourcesUtils.getResourcesId(
+                ApplicationProvider.getApplicationContext(), "bool", "config_show_device_model");
+
+        when(mResources.getBoolean(boolId)).thenReturn(false);
         assertThat(mController.getAvailabilityStatus()).isEqualTo(
                 BasePreferenceController.UNSUPPORTED_ON_DEVICE);
     }
diff --git a/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java
new file mode 100644
index 0000000..fc1407f
--- /dev/null
+++ b/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2019 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.deviceinfo.hardwareinfo;
+
+import static android.content.Context.CLIPBOARD_SERVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.os.Looper;
+import android.os.SystemProperties;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+
+@RunWith(AndroidJUnit4.class)
+public class HardwareRevisionPreferenceControllerTest {
+
+    private Context mContext;
+    private HardwareRevisionPreferenceController mController;
+    private ClipboardManager mClipboardManager;
+
+    @Before
+    public void setUp() {
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mClipboardManager = (ClipboardManager) spy(mContext.getSystemService(CLIPBOARD_SERVICE));
+        doReturn(mClipboardManager).when(mContext).getSystemService(CLIPBOARD_SERVICE);
+        mController = new HardwareRevisionPreferenceController(mContext,
+                "hardware_info_device_revision");
+    }
+
+    @Test
+    @UiThreadTest
+    public void copy_shouldCopyHardwareRevisionToClipboard() {
+        ArgumentCaptor<ClipData> captor = ArgumentCaptor.forClass(ClipData.class);
+        doNothing().when(mClipboardManager).setPrimaryClip(captor.capture());
+
+        mController.copy();
+
+        final ClipData data = captor.getValue();
+        final String hardwareVer = SystemProperties.get("ro.boot.hardware.revision");
+        assertThat(data.getItemAt(0).getText().toString()).isEqualTo(hardwareVer);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java
new file mode 100644
index 0000000..eaf97d4
--- /dev/null
+++ b/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2019 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.deviceinfo.hardwareinfo;
+
+import static android.content.Context.CLIPBOARD_SERVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.os.Build;
+import android.os.Looper;
+
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+
+@RunWith(AndroidJUnit4.class)
+public class SerialNumberPreferenceControllerTest {
+
+    private Context mContext;
+    private SerialNumberPreferenceController mController;
+    private ClipboardManager mClipboardManager;
+
+    @Before
+    public void setUp() {
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        mClipboardManager = (ClipboardManager) spy(mContext.getSystemService(CLIPBOARD_SERVICE));
+        doReturn(mClipboardManager).when(mContext).getSystemService(CLIPBOARD_SERVICE);
+        mController = new SerialNumberPreferenceController(mContext, "test");
+    }
+
+    @Test
+    @UiThreadTest
+    public void copy_shouldPutSerialNumberToClipBoard() {
+        ArgumentCaptor<ClipData> captor = ArgumentCaptor.forClass(ClipData.class);
+        doNothing().when(mClipboardManager).setPrimaryClip(captor.capture());
+
+        mController.copy();
+
+        final ClipData data = captor.getValue();
+        assertThat(data.getItemAt(0).getText().toString()).contains(Build.getSerial());
+    }
+}
diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
new file mode 100644
index 0000000..8172e1a
--- /dev/null
+++ b/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
@@ -0,0 +1,198 @@
+/*
+ * 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.network.telephony;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.os.PersistableBundle;
+import android.provider.Settings;
+import android.telephony.CarrierConfigManager;
+import android.telephony.CellIdentity;
+import android.telephony.CellInfo;
+import android.telephony.TelephonyManager;
+
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+
+public class NetworkSelectSettingsTest {
+    private static final int SUB_ID = 2;
+    private static final String CARRIER_NAME1 = "CarrierName1";
+    private static final String CARRIER_NAME2 = "CarrierName2";
+
+    @Mock
+    public Resources mResources;
+    @Mock
+    public TelephonyManager mTelephonyManager;
+    @Mock
+    public CarrierConfigManager mCarrierConfigManager;
+    @Mock
+    public MetricsFeatureProvider mMetricsFeatureProvider;
+    @Mock
+    public NetworkOperatorPreference mNetworkOperatorPreference1;
+    @Mock
+    public NetworkOperatorPreference mNetworkOperatorPreference2;
+    @Mock
+    private CellInfo mCellInfo1;
+    @Mock
+    private CellIdentity mCellId1;
+    @Mock
+    private CellInfo mCellInfo2;
+    @Mock
+    private CellIdentity mCellId2;
+
+    private PreferenceScreen mPreferenceScreen;
+    @Mock
+    public PreferenceManager mPreferenceManager;
+
+    public Context mContext;
+    public PreferenceCategory mPreferenceCategory;
+
+    private Bundle mInitArguments;
+    private TargetClass mNetworkSelectSettings;
+
+    @Before
+    @UiThreadTest
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        doReturn(mResources).when(mContext).getResources();
+        doReturn(mContext).when(mPreferenceManager).getContext();
+
+        mPreferenceCategory = spy(new PreferenceCategory(mContext));
+        doReturn(mPreferenceManager).when(mPreferenceCategory).getPreferenceManager();
+
+        doReturn(CARRIER_NAME1).when(mCellId1).getOperatorAlphaLong();
+        doReturn(CARRIER_NAME2).when(mCellId2).getOperatorAlphaLong();
+
+        mNetworkSelectSettings = spy(new TargetClass(this));
+
+        PersistableBundle config = new PersistableBundle();
+        config.putBoolean(CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL, true);
+        doReturn(config).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
+
+        doReturn(TelephonyManager.DATA_CONNECTED).when(mTelephonyManager).getDataState();
+    }
+
+    public class TargetClass extends NetworkSelectSettings {
+        private NetworkSelectSettingsTest mTestEnv;
+        private boolean mIsPreferenceScreenEnabled;
+
+        public TargetClass(NetworkSelectSettingsTest env) {
+            mTestEnv = env;
+
+            Bundle bundle = new Bundle();
+            bundle.putInt(Settings.EXTRA_SUB_ID, SUB_ID);
+            setArguments(bundle);
+        }
+
+        @Override
+        public Context getContext() {
+            return mTestEnv.mContext;
+        }
+
+        @Override
+        public PreferenceManager getPreferenceManager() {
+            return mTestEnv.mPreferenceManager;
+        }
+
+        @Override
+        protected PreferenceCategory getPreferenceCategory(String preferenceKey) {
+            return mTestEnv.mPreferenceCategory;
+        }
+
+        @Override
+        protected TelephonyManager getTelephonyManager(Context context, int subscriptionId) {
+            return mTestEnv.mTelephonyManager;
+        }
+
+        @Override
+        protected CarrierConfigManager getCarrierConfigManager(Context context) {
+            return mTestEnv.mCarrierConfigManager;
+        }
+
+        @Override
+        protected MetricsFeatureProvider getMetricsFeatureProvider(Context context) {
+            return mTestEnv.mMetricsFeatureProvider;
+        }
+
+        @Override
+        protected boolean isPreferenceScreenEnabled() {
+            return mIsPreferenceScreenEnabled;
+        }
+
+        @Override
+        protected void enablePreferenceScreen(boolean enable) {
+            mIsPreferenceScreenEnabled = enable;
+        }
+
+        @Override
+        protected NetworkOperatorPreference
+                createNetworkOperatorPreference(CellInfo cellInfo) {
+            NetworkOperatorPreference pref = super.createNetworkOperatorPreference(cellInfo);
+            if (cellInfo == mTestEnv.mCellInfo1) {
+                pref.updateCell(cellInfo, mTestEnv.mCellId1);
+            } else if (cellInfo == mTestEnv.mCellInfo2) {
+                pref.updateCell(cellInfo, mTestEnv.mCellId2);
+            }
+            return pref;
+        }
+    }
+
+    @Test
+    @UiThreadTest
+    public void updateAllPreferenceCategory_correctOrderingPreference() {
+        mNetworkSelectSettings.onCreateInitialization();
+        mNetworkSelectSettings.enablePreferenceScreen(true);
+        mNetworkSelectSettings.scanResultHandler(Arrays.asList(mCellInfo1, mCellInfo2));
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
+        final NetworkOperatorPreference preference =
+                (NetworkOperatorPreference) mPreferenceCategory.getPreference(1);
+        assertThat(preference.getOperatorName()).isEqualTo(mCellId2.getOperatorAlphaLong());
+    }
+
+    @Test
+    @UiThreadTest
+    public void updateForbiddenPlmns_forbiddenPlmnsNull_shouldNotCrash() {
+        when(mTelephonyManager.getForbiddenPlmns()).thenReturn(null);
+
+        mNetworkSelectSettings.onCreateInitialization();
+        mNetworkSelectSettings.enablePreferenceScreen(true);
+
+        // Should not Crash
+        mNetworkSelectSettings.updateForbiddenPlmns();
+    }
+}
