diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 0c4183d..35e8c65 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -516,6 +516,11 @@
                   android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS"
                   android:theme="@style/Transparent" />
 
+        <activity android:name=".network.telephony.DeleteEuiccSubscriptionDialogActivity"
+                  android:exported="false"
+                  android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS"
+                  android:theme="@style/Transparent" />
+
         <activity
             android:name="Settings$TetherSettingsActivity"
             android:label="@string/tether_settings_title_all"
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index f36cef9..8ac6f96 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Toestel se MAC-adres"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Ewekansige MAC-adres"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-adres"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Netwerkbesonderhede"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnetmasker"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Voer \'n geldige deurgangadres in."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Voer \'n geldige DNS-adres in."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Voer \'n netwerkvoorvoegsel in met lengte tussen 0 en 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (tensy deur private DNS geïgnoreer)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (tensy deur private DNS geïgnoreer)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Deurgang"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lengte van netwerkvoorvoegsel"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Nie opgestel nie – werkprofiel"</string>
     <string name="user_admin" msgid="4024553191395768119">"Admin"</string>
     <string name="user_you" msgid="3070562015202859996">"Jy (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Bynaam"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Jy kan tot <xliff:g id="USER_COUNT">%1$d</xliff:g> gebruikers byvoeg"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Net die eienaar van die tablet kan gebruikers bestuur."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Net die eienaar van die foon kan gebruikers bestuur."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Terug"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Volgende"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Klaar"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Neem \'n foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Kies \'n prent"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Kies foto"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-kaarte"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-kaarte"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 05a7c9e..b3b006b 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"ኤስኤስአይዲ"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"የመሣሪያ ማክ አድራሻ"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"የዘፈቀደ የተደረገ የማክ አድራሻ"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP አድራሻ"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"የአውታረ መረብ ዝርዝሮች"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"የንዑስ አውታር ጭንብል"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"እባክህ ትክክለኛ ኣግባቢ ፍኖት አድራሻ ተይብ።"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"እባክህ ትክክለኛ dns አድራሻ ተይብ።"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"እባክህ በ0 እና 32 መካከል የአውታረ መረብ ቅድመ ቅጥያ ርዝመት ተይብ።"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"ዲኤንኤስ 1 (በግል ዲኤንኤስ ቅድሚያ ካልተወሰደበት በስተቀር)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"ዲኤንኤስ 2 (በግል ዲኤንኤስ ቅድሚያ ካልተወሰደበት በስተቀር)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"መውጫ"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"የአውታረ መረብ ቅድመ ቅጥያ ርዝመት"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"አልተዋቀረም - የስራ መገለጫ"</string>
     <string name="user_admin" msgid="4024553191395768119">"አስተዳዳሪ"</string>
     <string name="user_you" msgid="3070562015202859996">"እርስዎ (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"ቅጽል ስም"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"እስከ <xliff:g id="USER_COUNT">%1$d</xliff:g> ተጠቃሚዎች ማከል ይችላሉ"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"የጡባዊው ባለቤት ብቻ ነው ተጠቃሚዎችን ማስተዳደር የሚችለው።"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"የስልኩ ባለቤት ብቻ ነው ተጠቃሚዎችን ማስተዳደር የሚችለው።"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"ተመለስ"</string>
     <string name="wizard_next" msgid="3884832431439072471">"ቀጣይ"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"ተጠናቅቋል"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ፎቶ አንሳ"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"ምስል ይምረጡ"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ፎቶ ምረጥ"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"ሲም ካርዶች"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"ሲም ካርዶች"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 6b32af7..7c1e54d 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -1093,6 +1093,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"‏عنوان MAC للجهاز"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"‏عنوان MAC العشوائي"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"‏عنوان IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"تفاصيل الشبكة"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"قناع الشبكة الفرعية"</string>
@@ -1110,10 +1112,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"اكتب عنوان بوابة صالحًا."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"اكتب عنوان نظام أسماء نطاقات صالحًا."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"اكتب بادئة شبكة يترواح طولها بين 0 و32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"نظام أسماء النطاقات 1 (ما لم يتم إلغاؤها باستخدام نظام أسماء النطاقات الخاص)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"نظام أسماء النطاقات 2 (ما لم يتم إلغاؤها باستخدام نظام أسماء النطاقات الخاص)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"البوابة"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"طول بادئة الشبكة"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"‏اتصال Wi-Fi مباشر"</string>
@@ -2213,7 +2213,7 @@
     <string name="app_name_label" msgid="3809910527680143673">"التطبيق"</string>
     <string name="last_time_used_label" msgid="2639712813493534074">"آخر مرة تم استخدامه"</string>
     <string name="usage_time_label" msgid="9105343335151559883">"وقت الاستخدام"</string>
-    <string name="accessibility_settings" msgid="4713215774904704682">"إمكانية الوصول"</string>
+    <string name="accessibility_settings" msgid="4713215774904704682">"تسهيل الاستخدام"</string>
     <string name="accessibility_settings_title" msgid="6739115703615065716">"إعدادات \"سهولة الاستخدام\""</string>
     <string name="accessibility_settings_summary" msgid="2195085206729325737">"أجهزة قارئ الشاشة والشاشة وعناصر التحكم التفاعلية"</string>
     <string name="vision_settings_title" msgid="8919983801864103069">"إعدادات الرؤية"</string>
@@ -2268,7 +2268,7 @@
     <string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"لاستخدام إحدى ميزات إمكانية الوصول، مرّر سريعًا من أسفل الشاشة للأعلى بثلاثة أصابع.\n\nللتبديل بين الميزات، مرّر سريعًا للأعلى بثلاثة أصابع مع تثبيتها."</string>
     <string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"حسنًا"</string>
     <string name="accessibility_shortcut_title" msgid="8125867833704517463">"اختصار <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
-    <string name="accessibility_shortcut_edit_summary_software" msgid="6405629977940618205">"زر أدوات تمكين الوصول"</string>
+    <string name="accessibility_shortcut_edit_summary_software" msgid="6405629977940618205">"زر تسهيل الاستخدام"</string>
     <string name="accessibility_shortcut_edit_dialog_title_software_gesture" msgid="8078659880723370597">"التمرير بسرعة إلى الأعلى بإصبعين"</string>
     <string name="accessibility_shortcut_edit_dialog_title_software_gesture_talkback" msgid="7422753388389160524">"التمرير بسرعة إلى الأعلى بثلاثة أصابع"</string>
     <string name="accessibility_shortcut_edit_dialog_title_software" msgid="4796192466943479849">"النقر على زر أدوات تمكين الوصول"</string>
@@ -2338,7 +2338,7 @@
     <string name="captioning_caption_appearance_summary" msgid="7340741178479381312">"حجم النص: <xliff:g id="ACCESSIBILITY_FONT_SIZE">%1$s</xliff:g>"</string>
     <string name="captioning_more_options_title" msgid="3484496882942539652">"خيارات أكثر"</string>
     <string name="accessibility_caption_preference_summary" msgid="1191356970836416954">"لا تتوفّر هذه الإعدادات المفضّلة للشرح في بعض التطبيقات."</string>
-    <string name="accessibility_shortcut_type_software" msgid="2552732582767687515">"زر أدوات تمكين الوصول"</string>
+    <string name="accessibility_shortcut_type_software" msgid="2552732582767687515">"زر تسهيل الاستخدام"</string>
     <string name="accessibility_shortcut_type_software_gesture" msgid="5608959693931019059">"التمرير سريعًا بإصبعين إلى أعلى الشاشة من أسفلها"</string>
     <string name="accessibility_shortcut_type_hardware" msgid="4834144210432451916">"الضغط مع الاستمرار على مفتاحَي التحكّم بمستوى الصوت"</string>
     <string name="accessibility_shortcut_type_triple_tap" msgid="7717524216825494543">"النقر ثلاث مرات على الشاشة"</string>
@@ -3204,7 +3204,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"لم يتم الإعداد - الملف الشخصي للعمل"</string>
     <string name="user_admin" msgid="4024553191395768119">"المشرف"</string>
     <string name="user_you" msgid="3070562015202859996">"أنت (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"اللقب"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"يمكنك إضافة ما يصل إلى <xliff:g id="USER_COUNT">%1$d</xliff:g> من المستخدمين"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"يمكن لمالك الجهاز اللوحي فقط إدارة المستخدمين."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"يمكن لمالك الهاتف فقط إدارة المستخدمين."</string>
@@ -3324,9 +3323,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"رجوع"</string>
     <string name="wizard_next" msgid="3884832431439072471">"التالي"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"إنهاء"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"التقاط صورة"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"اختيار صورة"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"اختيار صورة"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"‏بطاقات SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"‏بطاقات SIM"</string>
@@ -5197,7 +5193,7 @@
     <string name="contextual_card_removed_message" msgid="5755438207494260867">"تمت إزالة الاقتراح."</string>
     <string name="contextual_card_undo_dismissal_text" msgid="5200381837316691406">"تراجع"</string>
     <string name="low_storage_summary" msgid="1979492757417779718">"مساحة التخزين منخفضة. <xliff:g id="PERCENTAGE">%1$s</xliff:g> مُستخدَمة - <xliff:g id="FREE_SPACE">%2$s</xliff:g> فارغة"</string>
-    <string name="contextual_card_feedback_send" msgid="7409408664417908922">"إرسال تعليقات"</string>
+    <string name="contextual_card_feedback_send" msgid="7409408664417908922">"إرسال ملاحظات وآراء"</string>
     <string name="contextual_card_feedback_confirm_message" msgid="3186334562157665381">"هل ترغب في إرسال تعليقات إلينا بشأن هذا الاقتراح؟"</string>
     <string name="copyable_slice_toast" msgid="1008251852798990606">"تمّ نسخ <xliff:g id="COPY_CONTENT">%1$s</xliff:g> إلى الحافظة."</string>
     <string name="search_bar_account_avatar_content_description" msgid="880523277036898350"></string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 95874b3..f839d84 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"ডিভাইচৰ MAC ঠিকনা"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"যাদৃচ্ছিক MAC ঠিকনা"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"আইপি ঠিকনা"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"নেটৱৰ্কৰ সবিশেষ"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"ছাবনেট মাস্ক"</string>
@@ -3030,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"ছেট আপ কৰা হোৱা নাই - কৰ্মস্থানৰ প্ৰ’ফাইল"</string>
     <string name="user_admin" msgid="4024553191395768119">"প্ৰশাসক"</string>
     <string name="user_you" msgid="3070562015202859996">"আপুনি (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"উপনাম"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"আপুনি <xliff:g id="USER_COUNT">%1$d</xliff:g> জন লৈকে ব্যৱহাৰকাৰী যোগ কৰিব পাৰে"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"কেৱল টেবলেটৰ গৰাকীয়ে ব্যৱহাৰকাৰীসকলক পৰিচালনা কৰিব পাৰে।"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"কেৱল ফ\'নটোৰ গৰাকীয়েহে ব্যৱহাৰকাৰীসকলক পৰিচালনা কৰিব পাৰে।"</string>
@@ -3150,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"উভতি যাওক"</string>
     <string name="wizard_next" msgid="3884832431439072471">"পৰৱৰ্তী"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"সমাপ্ত"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"এখন ফট’ তোলক"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"এখন প্ৰতিচ্ছবি বাছনি কৰক"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ফট\' বাছনি কৰক"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"ছিম কাৰ্ডসমূহ"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"ছিম কাৰ্ডবোৰ"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index a6a812e..008950c 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Cihazın MAC ünvanı"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Təsadüfi MAC ünvanı"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP ünvanı"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Şəbəkə bilgisi"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Alt şəbəkə maskası"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Düzgün Şlüz ünvanı yazın."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Düzgün DNS ünvanı yazın."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 və 32 uzunluqlu şəbəkə prefiks daxil edin"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (Şəxsi DNS tərəfindən ləğv edilmədiyi halda)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (Şəxsi DNS tərəfindən ləğv edilmədiyi halda)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Keçid"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Şəbəkə prefiks uzunluğu"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Quraşdırılmayıb - İş profili"</string>
     <string name="user_admin" msgid="4024553191395768119">"Admin"</string>
     <string name="user_you" msgid="3070562015202859996">"Siz (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nik"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"<xliff:g id="USER_COUNT">%1$d</xliff:g> istifadəçiyə qədər əlavə edə bilərsiniz"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Yalnız planşet sahibi istifadəçiləri idarə edə bilər."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Yalnız telefon sahibi istifadəçiləri idarə edə bilər"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Geri"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Növbəti"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Bitir"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Foto çəkin"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Şəkil seçin"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Foto seçin"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM kartlar"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM kartlar"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 282ade1..69199d6 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -1033,6 +1033,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC adresa uređaja"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Nasumična MAC adresa"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP adresa"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detalji o mreži"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Maska podmreže"</string>
@@ -1050,10 +1052,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Unesite važeću adresu mrežnog prolaza."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Unesite važeću DNS adresu."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Unesite prefiks mreže dužine između 0 i 32 znaka."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (osim ako ga ne zameni privatni DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (osim ako ga ne zameni privatni DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Mrežni prolaz"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Dužina prefiksa mreže"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3075,7 +3075,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Nije podešeno – poslovni profil"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrator"</string>
     <string name="user_you" msgid="3070562015202859996">"Vi (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nadimak"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Možete da dodate najviše <xliff:g id="USER_COUNT">%1$d</xliff:g> korisnika"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Samo vlasnik tableta može da upravlja korisnicima."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Samo vlasnik telefona može da upravlja korisnicima."</string>
@@ -3195,9 +3194,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Nazad"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Dalje"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Završi"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Slikajte"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Odaberite sliku"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Izaberite sliku"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM kartice"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM kartice"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index a0840d2..35a43ae 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -1053,6 +1053,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC-адрас прылады"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Выпадковы MAC-адрас"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-адрас"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Інфармацыя аб сетцы"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Маска падсеткі"</string>
@@ -1070,10 +1072,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Увядзіце сапраўдны адрас шлюза."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Увядзіце сапраўдны адрас DNS."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Увядзіце даўжыню сеткавага прэфікса ад 0 і 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (калі не перавызначана прыватным DNS-серверам)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (калі не перавызначана прыватным DNS-серверам)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Шлюз"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Даўжыня прэфікса сеткі"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3118,7 +3118,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Не наладжана – Рабочы профіль"</string>
     <string name="user_admin" msgid="4024553191395768119">"Адміністратар"</string>
     <string name="user_you" msgid="3070562015202859996">"Вы (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Псеўданім"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Вы можаце дадаць да <xliff:g id="USER_COUNT">%1$d</xliff:g> карыстальнікаў"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Толькі ўладальнік планшэта можа кіраваць карыстальнікамі."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Толькі ўладальнік тэлефона можа кіраваць карыстальнікамі."</string>
@@ -3238,9 +3237,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Назад"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Далей"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Завершыць"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Зрабіць фота"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Выбраць відарыс"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Выбраць фота"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-карты"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-карты"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index e41b8d1..5004a6c 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC адрес на устройството"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Рандомизиран MAC адрес"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP адрес"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Подробно за мрежата"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Подмрежова маска"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Въведете валиден адрес за шлюз."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Въведете валиден адрес за DNS."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Въведете дължина на мреж. префикс между 0 и 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (освен ако не се замени с частен DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (освен ако не се замени с частен DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Шлюз"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Дължина на мрежов префикс"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Не е настроен – Служебен потребителски профил"</string>
     <string name="user_admin" msgid="4024553191395768119">"Администратор"</string>
     <string name="user_you" msgid="3070562015202859996">"Вие (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Псевдоним"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Можете да добавите до <xliff:g id="USER_COUNT">%1$d</xliff:g> потребители"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Само собственикът на таблета може да управлява потребителите."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Само собственикът на телефона може да управлява потребителите."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Назад"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Напред"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Край"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Правене на снимка"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Избиране на изображение"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Избиране на снимка"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM карти"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM карти"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 16681c1..cbf4855 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"ডিভাইস MAC অ্যাড্রেস"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"র‌্যান্ডামাইজ করা MAC অ্যাড্রেস"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"আইপি অ্যাড্রেস"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"নেটওয়ার্কের বিবরণ"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"সাবনেট মাস্ক"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"একটি বৈধ গেটওয়ে ঠিকানা টাইপ করুন।"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"একটি বৈধ DNS ঠিকানা টাইপ করুন।"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"০ এবং ৩২ এর মধ্যে একটি নেটওয়ার্ক প্রিফিক্স দৈর্ঘ্য টাইপ করুন।"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"ডিএনএস ১ (যদি ব্যক্তিগত ডিএনএস-এ পরিবর্তন না করা হয়)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"ডিএনএস ২ (যদি ব্যক্তিগত ডিএনএস-এ পরিবর্তন না করা হয়)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"গেটওয়ে"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"নেটওয়ার্ক প্রিফিক্স দৈর্ঘ্য"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"ওয়াই-ফাই ডাইরেক্ট"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"সেট-আপ করা নেই - কর্মস্থলের প্রোফাইল"</string>
     <string name="user_admin" msgid="4024553191395768119">"প্রশাসক"</string>
     <string name="user_you" msgid="3070562015202859996">"আপনি (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"ডাকনাম"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"আপনি <xliff:g id="USER_COUNT">%1$d</xliff:g> জন পর্যন্ত ব্যবহারকারী যোগ করতে পারেন"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"শুধুমাত্র ট্যাবলেটেরর মালিক ব্যবহারকারীদের পরিচালনা করতে পারেন।"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"শুধুমাত্র ফোনের মালিক ব্যবহারকারীদের পরিচালনা করতে পারেন।"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"ফিরুন"</string>
     <string name="wizard_next" msgid="3884832431439072471">"পরবর্তী"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"শেষ"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ফটো তুলুন"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"একটি ছবি বেছে নিন"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ফটো বেছে নিন"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"সিম কার্ডগুলি"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"সিম কার্ডগুলি"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 8dd4703..6afb014 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -1033,6 +1033,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC adresa uređaja"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Nasumično odabrana MAC adresa"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP adresa"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detalji o mreži"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Maska podmreže"</string>
@@ -1050,10 +1052,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Unesite važeću adresu pristupnika."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Unesite važeću DNS adresu."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Unesite dužinu mrežnog prefiksa između 0 i 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (osim ako ga nije poništio privatni DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (osim ako ga nije poništio privatni DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Pristupnik"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Dužina prefiksa mreže"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"WiFi Direct"</string>
@@ -3075,7 +3075,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Nije postavljen – Radni profil"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrator"</string>
     <string name="user_you" msgid="3070562015202859996">"Vi (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nadimak"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Možete dodati do <xliff:g id="USER_COUNT">%1$d</xliff:g> korisnika"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Samo vlasnik tableta može upravljati korisnicima."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Samo vlasnik telefona može upravljati korisnicima."</string>
@@ -3195,9 +3194,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Nazad"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Naprijed"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Kraj"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Snimite fotografiju"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Odaberite sliku"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Odaberite fotografiju"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM kartice"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM kartice"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 7f54dcf..bc0c121 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Adreça MAC del dispositiu"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Adreça MAC aleatòria"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Adreça IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detalls de la xarxa"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Màscara de la subxarxa"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Escriu una adreça de passarel·la vàlida."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Escriu una adreça DNS vàlida."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Escriu una longitud de prefix de xarxa entre 0 i 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (tret que se substitueixi per un DNS privat)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (tret que se substitueixi per un DNS privat)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Passarel·la"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Longitud de prefix de xarxa"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"El perfil de treball no està configurat."</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrador"</string>
     <string name="user_you" msgid="3070562015202859996">"Tu (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Àlies"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Pots afegir fins a <xliff:g id="USER_COUNT">%1$d</xliff:g> usuaris"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Només el propietari de la tauleta pot gestionar els usuaris."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Només el propietari del telèfon pot gestionar els usuaris."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Enrere"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Següent"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Finalitza"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Fes una foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Tria una imatge"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Selecciona una foto"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Targetes SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Targetes SIM"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 71da1b9..72842da 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -1053,6 +1053,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Adresa MAC zařízení"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Náhodná adresa MAC"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP adresa"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Podrobnosti sítě"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Maska podsítě"</string>
@@ -1070,10 +1072,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Zadejte prosím platnou adresu brány."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Zadejte prosím platnou adresu DNS."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Zadejte prosím délku síťové předpony v rozsahu 0 až 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (pokud není přepsán soukromým DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (pokud není přepsán soukromým DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Brána"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Délka síťové předpony"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3118,7 +3118,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Nenastaveno – pracovní profil"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrátor"</string>
     <string name="user_you" msgid="3070562015202859996">"Vy (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Přezdívka"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Maximální počet přidávaných uživatelů: <xliff:g id="USER_COUNT">%1$d</xliff:g>"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Uživatele smí spravovat pouze vlastník tabletu."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Uživatele smí spravovat pouze vlastník telefonu."</string>
@@ -3238,9 +3237,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Zpět"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Další"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Dokončit"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Vyfotit"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Zvolit obrázek"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Vybrat fotografii"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM karty"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM karty"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 07dbd9d..3cf2232 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Enhedens MAC-adresse"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Tilfældig MAC-adresse"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-adresse"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Netværksoplysninger"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Undernetmaske"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Angiv en gyldig gatewayadresse."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Angiv en gyldig DNS-adresse."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Angiv gyldigt netværkspræfiks på 0-32 tegn."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (undtagen ved tilsidesættelse med privat DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (undtagen ved tilsidesættelse med privat DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Længde på netværkspræfiks"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Ikke konfigureret – Arbejdsprofil"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrator"</string>
     <string name="user_you" msgid="3070562015202859996">"Dig (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Kaldenavn"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Du kan tilføje op til <xliff:g id="USER_COUNT">%1$d</xliff:g> brugere"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Kun ejeren af tabletten kan administrere brugere."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Kun ejeren af telefonen kan administrere brugere."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Tilbage"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Næste"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Udfør"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Tag et billede"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Vælg et billede"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Vælg billede"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-kort"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-kort"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index daefa65..b2e00aa 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -1014,6 +1014,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC-Adresse des Geräts"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Zufällige MAC-Adresse"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-Adresse"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Netzwerkdetails"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnetzmaske"</string>
@@ -1031,10 +1033,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Gib eine gültige Gateway-Adresse ein."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Gib eine gültige DNS-Adresse ein."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Netzwerkpräfix darf maximal 32 Zeichen enthalten."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (sofern nicht von privatem DNS überschrieben)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (sofern nicht von privatem DNS überschrieben)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Länge d. Netzwerkpräfixes"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3033,7 +3033,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Nicht eingerichtet – Arbeitsprofil"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrator"</string>
     <string name="user_you" msgid="3070562015202859996">"Ich (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Spitzname"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Du kannst bis zu <xliff:g id="USER_COUNT">%1$d</xliff:g> Nutzer hinzufügen."</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Nur der Eigentümer des Tablets kann Nutzer verwalten."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Nur der Eigentümer des Telefons kann Nutzer verwalten."</string>
@@ -3153,9 +3152,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Zurück"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Weiter"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Fertig"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Foto aufnehmen"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Bild auswählen"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Foto auswählen"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-Karten"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-Karten"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 4bc47fa..7c63017 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Διεύθυνση MAC συσκευής"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Τυχαία διεύθυνση MAC"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Διεύθυνση IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Λεπτομέρειες δικτύου"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Μάσκα υποδικτύου"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Πληκτρολογήστε μια έγκυρη διεύθυνση πύλης."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Πληκτρολογήστε μια έγκυρη διεύθυνση DNS."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Εισαγάγετε το μήκος προθέματος δικτύου από 0 έως 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (εκτός αν παρακάμπτεται από Ιδιωτικό DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (εκτός αν παρακάμπτεται από Ιδιωτικό DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Πύλη"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Μήκος προθέματος δικτύου"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Δεν έχει ρυθμιστεί - Προφίλ εργασίας"</string>
     <string name="user_admin" msgid="4024553191395768119">"Διαχειριστής"</string>
     <string name="user_you" msgid="3070562015202859996">"Εσείς (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Ψευδώνυμο"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Μπορείτε να προσθέσετε έως και <xliff:g id="USER_COUNT">%1$d</xliff:g> χρήστες"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Μόνο ο κάτοχος του tablet μπορεί να διαχειριστεί χρήστες."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Μόνο ο κάτοχος του τηλεφώνου μπορεί να διαχειριστεί χρήστες."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Πίσω"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Επόμενο"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Τέλος"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Λήψη φωτογραφίας"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Επιλέξτε μια εικόνα"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Επιλογή φωτογραφίας"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Κάρτες SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Κάρτες SIM"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 1c99341..6ba2c2f 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Device MAC address"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Randomised MAC address"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP address"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Network details"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnet mask"</string>
@@ -3030,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Not set up – Work profile"</string>
     <string name="user_admin" msgid="4024553191395768119">"Admin"</string>
     <string name="user_you" msgid="3070562015202859996">"You (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nickname"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"You can add up to <xliff:g id="USER_COUNT">%1$d</xliff:g> users"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Only the tablet\'s owner can manage users."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Only the phone\'s owner can manage users."</string>
@@ -3150,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Back"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Next"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Finish"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Take a photo"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Choose an image"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Select photo"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM cards"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM cards"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 72c830e..5d26000 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Device MAC address"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Randomised MAC address"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP address"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Network details"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnet mask"</string>
@@ -3030,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Not set up – Work profile"</string>
     <string name="user_admin" msgid="4024553191395768119">"Admin"</string>
     <string name="user_you" msgid="3070562015202859996">"You (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nickname"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"You can add up to <xliff:g id="USER_COUNT">%1$d</xliff:g> users"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Only the tablet\'s owner can manage users."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Only the phone\'s owner can manage users."</string>
@@ -3150,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Back"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Next"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Finish"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Take a photo"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Choose an image"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Select photo"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM cards"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM cards"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 5d257b5..5efae9a 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Device MAC address"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Randomised MAC address"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP address"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Network details"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnet mask"</string>
@@ -3030,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Not set up – Work profile"</string>
     <string name="user_admin" msgid="4024553191395768119">"Admin"</string>
     <string name="user_you" msgid="3070562015202859996">"You (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nickname"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"You can add up to <xliff:g id="USER_COUNT">%1$d</xliff:g> users"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Only the tablet\'s owner can manage users."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Only the phone\'s owner can manage users."</string>
@@ -3150,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Back"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Next"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Finish"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Take a photo"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Choose an image"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Select photo"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM cards"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM cards"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 26f4c8f..6236fa6 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Device MAC address"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Randomised MAC address"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP address"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Network details"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnet mask"</string>
@@ -3030,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Not set up – Work profile"</string>
     <string name="user_admin" msgid="4024553191395768119">"Admin"</string>
     <string name="user_you" msgid="3070562015202859996">"You (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nickname"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"You can add up to <xliff:g id="USER_COUNT">%1$d</xliff:g> users"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Only the tablet\'s owner can manage users."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Only the phone\'s owner can manage users."</string>
@@ -3150,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Back"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Next"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Finish"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Take a photo"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Choose an image"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Select photo"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM cards"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM cards"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 5462a8c..6a6a233 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‏‎‏‎‏‎‏‏‎‏‎‏‎‏‏‏‎‏‎‎‎‏‎‏‎‎‎‏‏‏‏‎‏‎‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‏‎‎‏‎SSID‎‏‎‎‏‎"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‎‏‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‎‏‏‎‎‏‏‎‎‏‏‎‎‎‏‏‏‏‎‏‏‎Device MAC address‎‏‎‎‏‎"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‏‎‏‎‎‎‏‏‎‎‏‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‎‏‏‏‏‎‏‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‎‎Randomized MAC address‎‏‎‎‏‎"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‎‏‏‎‎‎‏‎‎‏‏‏‏‏‎‎‏‏‎‎‏‏‏‎‎‏‏‏‎‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎IP address‎‏‎‎‏‎"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‎‎‎‏‎‏‏‏‎‏‎‏‎‎‎‎‏‎‏‏‎‎‏‏‏‎‎‎‎‏‏‏‎‎‏‎‎‎‎‏‎‎‏‏‎‏‎‏‎‏‏‏‎‏‎‏‎Network details‎‏‎‎‏‎"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‏‎‎‏‏‏‏‎‎‎‎‏‏‎‎‎‎‏‏‏‏‏‎‏‎‎‏‎‎‏‏‏‎‏‎‎‏‎‏‎‎‎‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‎‎Subnet mask‎‏‎‎‏‎"</string>
@@ -3030,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‎‎‎‏‎‏‎‏‎‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‎‏‏‎‎‏‏‏‏‎‏‎‎Not set up - Work profile‎‏‎‎‏‎"</string>
     <string name="user_admin" msgid="4024553191395768119">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‏‏‎‏‎‎‎‎‏‎‏‎‏‏‏‎‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‎Admin‎‏‎‎‏‎"</string>
     <string name="user_you" msgid="3070562015202859996">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‎‏‎‏‎‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‏‎‏‏‏‏‎‏‏‏‎‎‎You (‎‏‎‎‏‏‎<xliff:g id="NAME">%s</xliff:g>‎‏‎‎‏‏‏‎)‎‏‎‎‏‎"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‎‎‎‏‏‏‎‏‏‎‎‎‏‏‎‎‏‏‎‏‏‏‎‎‎‏‎‏‎‎‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎‏‎Nickname‎‏‎‎‏‎"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎‎‎‏‏‎‏‎‏‏‎‏‏‏‎‏‎‎‏‏‎‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‎You can add up to ‎‏‎‎‏‏‎<xliff:g id="USER_COUNT">%1$d</xliff:g>‎‏‎‎‏‏‏‎ users‎‏‎‎‏‎"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‏‏‏‎‏‎‎‎‎‎‏‎‎‎‏‎‎‏‎‎‏‎‏‏‏‎‏‏‏‏‏‏‎‎‎‎‏‏‎‏‎‎‎‏‏‎‎‏‏‏‎‏‎‏‏‎‏‎‏‎Only the tablet’s owner can manage users.‎‏‎‎‏‎"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‏‏‎‎‏‎‎‎‎‎‏‏‏‎‎‏‎‏‏‎‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‎‎‏‎‏‎‎‎‎‎‎‏‏‎‎Only the phone’s owner can manage users.‎‏‎‎‏‎"</string>
@@ -3150,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‏‎‎‏‏‏‏‎‎‎‎‎‏‎‎‎‎‏‏‏‎‎‏‏‏‏‎‎‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‎‏‏‏‏‎Back‎‏‎‎‏‎"</string>
     <string name="wizard_next" msgid="3884832431439072471">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‎‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‏‏‎‎‏‏‎‏‎‏‏‏‎Next‎‏‎‎‏‎"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‎‎‏‎‏‎‏‏‏‏‎‏‎‏‎‏‎‎‎‎‎‎‏‏‏‎‎‎‏‏‎‎‏‎‏‏‏‏‏‎‏‎‎‏‏‎‏‏‎‏‎‎Finish‎‏‎‎‏‎"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‎‎‎‎‏‏‎‏‏‎‎‎‏‎‎‎‎‏‎‎‏‏‏‏‎‎‎‏‏‏‎‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎‏‏‎‎‎‎‏‏‎‎‎Take a photo‎‏‎‎‏‎"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‏‎‏‎‎‎‎‏‎‏‏‏‎‏‏‎‎‎‏‏‏‎‎‏‏‎‎‏‏‎‏‎‏‏‏‏‎‏‎‏‏‎‎Choose an image‎‏‎‎‏‎"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‎‎‏‎‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‎‎‏‏‎‎‏‏‎‎‎‎‎‎‎‎‏‏‏‏‎Select photo‎‏‎‎‏‎"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‎‎‎‏‎‏‎‎‏‏‎‏‏‏‎‏‏‎‏‏‎‏‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‎‎‏‏‎‏‎‏‏‏‎‏‎‏‏‎SIM cards‎‏‎‎‏‎"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‏‎‎‎‎‏‎‎‎‎‎‎‎‏‏‏‎‎‏‏‏‎‎‏‎‎‏‏‏‏‏‏‎‏‏‎SIM cards‎‏‎‎‏‎"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index d92ed2e..051aa40 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Dirección MAC del dispositivo"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Dirección MAC aleatoria"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Dirección IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detalles de la red"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Máscara de subred"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Escribe una dirección de puerta de enlace válida."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Escribe una dirección DNS válida."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Escribe una longitud de prefijo de red entre 0 y 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (a menos que lo anule un DNS privado)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (a menos que lo anule un DNS privado)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Puerta de enlace"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Longitud de prefijo de red"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi directo"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Sin configurar: perfil de trabajo"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrador"</string>
     <string name="user_you" msgid="3070562015202859996">"Tú (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Seudónimo"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Puedes agregar hasta <xliff:g id="USER_COUNT">%1$d</xliff:g> usuarios"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Solo los propietarios de la tablet pueden administrar los usuarios."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Solo los propietarios del dispositivo pueden administrar los usuarios."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Atrás"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Siguiente"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Finalizar"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Tomar una foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Elegir una imagen"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Seleccionar foto"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Tarjetas SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Tarjetas SIM"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index c9519a7..6f727a8 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Dirección MAC del dispositivo"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Dirección MAC aleatoria"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Dirección IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detalles de la red"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Máscara de subred"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Introduce una dirección de puerta de enlace válida."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Introduce una dirección DNS válida."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Introduce un prefijo de red que tenga entre 0 y 32 caracteres."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (a menos que un DNS privado lo anule)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (a menos que un DNS privado lo anule)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Puerta de enlace"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Longitud del prefijo de red"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Sin configurar: perfil de trabajo"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrador"</string>
     <string name="user_you" msgid="3070562015202859996">"Tú (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Apodo"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Puedes añadir hasta <xliff:g id="USER_COUNT">%1$d</xliff:g> usuarios"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Solo el propietario del tablet puede administrar los usuarios."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Solo el propietario del teléfono puede administrar los usuarios."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Volver"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Siguiente"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Finalizar"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Hacer una foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Seleccionar una imagen"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Seleccionar foto"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Tarjetas SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Tarjetas SIM"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index e8afea6..b5a35bd 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Seadme MAC-aadress"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Juhulikustatud MAC-aadress"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-aadress"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Võrgu üksikasjad"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Alamvõrgu mask"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Sisestage kehtiv lüüsi aadress."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Sisestage kehtiv DNS-aadress."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Sisestage võrgu eesliide pikkusega 0 kuni 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (kui privaatne DNS pole seda alistanud)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (kui privaatne DNS pole seda alistanud)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Lüüs"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Võrgu prefiksi pikkus"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"WiFi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Seadistamata – tööprofiil"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administraator"</string>
     <string name="user_you" msgid="3070562015202859996">"Teie (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Hüüdnimi"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Saate lisada kuni <xliff:g id="USER_COUNT">%1$d</xliff:g> kasutajat"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Ainult tahvelarvuti omanik saab hallata kasutajaid."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Ainult telefoni omanik saab hallata kasutajaid."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Tagasi"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Järgmine"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Lõpeta"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Pildista"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Vali pilt"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Foto valimine"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-kaardid"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-kaardid"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 3a3d050..dfc7255 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Gailuaren MAC helbidea"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Ausaz antolatutako MAC helbidea"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP helbidea"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Sarearen xehetasunak"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Azpisarearen maskara"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Idatzi baliozko atebide-helbidea."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Idatzi baliozko DNS helbidea."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Idatzi 0 eta 32 karaktere arteko sare-aurrizkia."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (DNS pribatuak ordezten ez duen kasuetan)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (DNS pribatuak ordezten ez duen kasuetan)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Atebidea"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Sare-aurrizkiaren luzera"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Konfiguratu gabe: laneko profila"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administratzailea"</string>
     <string name="user_you" msgid="3070562015202859996">"Zu (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Goitizena"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"<xliff:g id="USER_COUNT">%1$d</xliff:g> erabiltzaile gehi ditzakezu gehienez"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Tabletaren jabeak baino ezin ditu erabiltzaileak kudeatu."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Telefonoaren jabeak baino ezin ditu erabiltzaileak kudeatu."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Atzera"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Hurrengoa"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Amaitu"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Atera argazki bat"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Aukeratu irudi bat"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Hautatu argazkia"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM txartelak"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM txartelak"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 0515836..33a11d8 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"‏نشانی MAC دستگاه"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"‏نشانی MAC تصادفی"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"‏نشانی IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"جزئیات شبکه"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"پوشش زیرشبکه"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"یک آدرس دروازه معتبر را تایپ کنید."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"‏یک آدرس DNS معتبر را تایپ کنید."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"یک پیشوند شبکه با طول بین 0 تا 32 نویسه تایپ کنید."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"ساناد ۱ (مگراینکه «ساناد خصوصی» آن را ملغی کند)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"ساناد ۲ (مگراینکه «ساناد خصوصی» آن را ملغی کند)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"دروازه"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"طول پیشوند شبکه"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"‏اتصال مستقیم Wi-Fi"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"تنظیم نشده - نمایه کاری"</string>
     <string name="user_admin" msgid="4024553191395768119">"سرپرست"</string>
     <string name="user_you" msgid="3070562015202859996">"شما (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"نام مستعار"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"تا <xliff:g id="USER_COUNT">%1$d</xliff:g> کاربر می‌توانید اضافه کنید"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"فقط صاحب رایانه لوحی می‌تواند کاربران را مدیریت کند."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"فقط صاحب گوشی می‌تواند کاربران را مدیریت کند."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"برگشت"</string>
     <string name="wizard_next" msgid="3884832431439072471">"بعدی"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"پایان"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"عکس گرفتن"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"انتخاب تصویر"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"انتخاب عکس"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"سیم‌کارت‌ها"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"سیم‌کارت‌ها"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 844a3a8..7c1f359 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Laitteen MAC-osoite"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Satunnaistettu MAC-osoite"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-osoite"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Verkon tiedot"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Aliverkon peite"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Anna kelvollinen yhdyskäytävän osoite."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Anna kelvollinen nimipalvelun osoite."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Anna verkon etuliite, jonka pituus on välillä 0–32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (ellei ohitettu yksityisellä DNS:llä)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (ellei ohitettu yksityisellä DNS:llä)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Yhdyskäytävä"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Verkon etuliitteen pituus"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -1425,8 +1425,8 @@
     <string name="sd_mount_summary" product="default" msgid="2190410240845521205"></string>
     <string name="sd_format" product="nosdcard" msgid="8657427883364711513">"Tyhjennä USB-tila"</string>
     <string name="sd_format" product="default" msgid="9085302892248732329">"Tyhjennä SD-kortti"</string>
-    <string name="sd_format_summary" product="nosdcard" msgid="6179784504937189658">"Poistaa kaikki sisäisen USB-tallennustilan tiedot, kuten musiikin tai valokuvat."</string>
-    <string name="sd_format_summary" product="default" msgid="60583152211068164">"Poistaa kaikki SD-kortin tiedot, kuten musiikin ja valokuvat"</string>
+    <string name="sd_format_summary" product="nosdcard" msgid="6179784504937189658">"Poistaa kaikki sisäisen USB-tallennustilan tiedot, kuten musiikin tai kuvat."</string>
+    <string name="sd_format_summary" product="default" msgid="60583152211068164">"Poistaa kaikki SD-kortin tiedot, kuten musiikin ja kuvat"</string>
     <string name="memory_clear_cache_title" msgid="2605096903803953619">"Tyhjennetäänkö välimuistitiedot?"</string>
     <string name="memory_clear_cache_message" msgid="4759561226480906588">"Sovellusten välimuistit tyhjennetään."</string>
     <string name="mtp_ptp_mode_summary" msgid="7969656567437639239">"MTP- tai PTP-toiminto on käytössä"</string>
@@ -1486,7 +1486,7 @@
     <string name="storage_internal_unmount_details" msgid="487689543322907311"><b>"Kun tämä <xliff:g id="NAME_0">^1</xliff:g> poistetaan, siihen tallennetut sovellukset lakkaavat toimimasta eivätkä mediatiedostot ole käytettävissä ennen kuin se liitetään uudelleen."</b>" \n\n<xliff:g id="NAME_1">^1</xliff:g> on alustettu niin, että se toimii vain tämän laitteen kanssa."</string>
     <string name="storage_internal_forget_details" msgid="5606507270046186691">"Jos haluat käyttää tallennuslaitteen <xliff:g id="NAME">^1</xliff:g> sisältämiä sovelluksia, kuvia tai tietoja, liitä se uudelleen. \n\nVoit myös halutessasi unohtaa tämän tallennuslaitteen, jos se ei ole käytettävissä. \n\nJos päätät unohtaa laitteen, menetät kaikki sen sisältämät tiedot lopullisesti. \n\nVoit asentaa sovellukset uudelleen myöhemmin, mutta niiden laitteelle tallentamat tiedot menetetään."</string>
     <string name="storage_internal_forget_confirm_title" msgid="379238668153099015">"Unohdetaanko <xliff:g id="NAME">^1</xliff:g>?"</string>
-    <string name="storage_internal_forget_confirm" msgid="5752634604952674123">"Kaikki kohteen (<xliff:g id="NAME">^1</xliff:g>) sovellukset, valokuvat ja tiedot poistetaan pysyvästi."</string>
+    <string name="storage_internal_forget_confirm" msgid="5752634604952674123">"Kaikki kohteen (<xliff:g id="NAME">^1</xliff:g>) sovellukset, kuvat ja tiedot poistetaan pysyvästi."</string>
     <string name="storage_detail_apps" msgid="5055911985540355324">"Sovellukset"</string>
     <string name="storage_detail_images" msgid="6003883845718804371">"Kuvahaku"</string>
     <string name="storage_detail_videos" msgid="9079894412680404208">"Videot"</string>
@@ -1635,8 +1635,8 @@
     <string name="main_clear_desc_erase_external_storage" product="default" msgid="1498514970618215728">\n\n"Jos haluat poistaa musiikin, kuvat ja muun käyttäjädatan, tyhjennä "<b>"SD-kortti"</b>"."</string>
     <string name="erase_external_storage" product="nosdcard" msgid="2182181846128639635">"Tyhjennä USB-tallennustila"</string>
     <string name="erase_external_storage" product="default" msgid="2610056855012660451">"Tyhjennä SD-kortti"</string>
-    <string name="erase_external_storage_description" product="nosdcard" msgid="6358699244894944843">"Poista kaikki sisäisen USB-tallennustilan tiedot, kuten musiikki tai valokuvat."</string>
-    <string name="erase_external_storage_description" product="default" msgid="3367779850546310380">"Poista kaikki SD-kortin tiedot, kuten musiikki tai valokuvat."</string>
+    <string name="erase_external_storage_description" product="nosdcard" msgid="6358699244894944843">"Poista kaikki sisäisen USB-tallennustilan tiedot, kuten musiikki tai kuvat."</string>
+    <string name="erase_external_storage_description" product="default" msgid="3367779850546310380">"Poista kaikki SD-kortin tiedot, kuten musiikki tai kuvat."</string>
     <string name="main_clear_button_text" product="tablet" msgid="6246087475569640671">"Poista kaikki data"</string>
     <string name="main_clear_button_text" product="default" msgid="6246087475569640671">"Poista kaikki data"</string>
     <string name="main_clear_final_desc" msgid="5800877928569039580">"Kaikki henkilökohtaiset tietosi ja ladatut sovellukset poistetaan. Toimintoa ei voi kumota."</string>
@@ -2728,7 +2728,7 @@
     <string name="backup_erase_dialog_title" msgid="5892431263348766484"></string>
     <string name="backup_erase_dialog_message" msgid="2250872501409574331">"Haluatko lopettaa Wi-Fi-salasanojen, kirjanmerkkien, muiden asetuksien ja sovellustietojen varmuuskopioinnin ja poistaa kaikki kopiot Googlen palvelimilta?"</string>
     <string name="fullbackup_erase_dialog_message" msgid="2379053988557486162">"Lopetetaanko laitteen tietojen (kuten Wi-Fi-salasanojen ja soittohistorian) ja sovellusten tietojen (kuten asetusten ja sovellusten tallentamien tiedostojen) automaattinen varmuuskopiointi? Myös vanhat varmuuskopiot poistetaan etäpalvelimilta."</string>
-    <string name="fullbackup_data_summary" msgid="971587401251601473">"Varmuuskopioi laitteen tiedot (kuten Wi-Fi-salasanat ja soittohistoria) sekä sovellusten tiedot (kuten asetukset ja sovellusten tallentamat tiedostot) automaattisesti etäyhteyden kautta.\n\nKun otat automaattisen varmuuskopioinnin käyttöön, laitteen ja sovellusten tiedot varmuuskopioidaan säännöllisesti etäyhteyden kautta. Sovellusten tietoihin voi sisältyä mitä tahansa tietoja, joita sovellukset ovat tallentaneet (kehittäjien asetuksien perusteella). Ne saattavat sisältää myös arkaluontoisia tietoja, kuten yhteystietoja, viestejä ja valokuvia."</string>
+    <string name="fullbackup_data_summary" msgid="971587401251601473">"Varmuuskopioi laitteen tiedot (kuten Wi-Fi-salasanat ja soittohistoria) sekä sovellusten tiedot (kuten asetukset ja sovellusten tallentamat tiedostot) automaattisesti etäyhteyden kautta.\n\nKun otat automaattisen varmuuskopioinnin käyttöön, laitteen ja sovellusten tiedot varmuuskopioidaan säännöllisesti etäyhteyden kautta. Sovellusten tietoihin voi sisältyä mitä tahansa tietoja, joita sovellukset ovat tallentaneet (kehittäjien asetuksien perusteella). Ne saattavat sisältää myös arkaluontoisia tietoja, kuten yhteystietoja, viestejä ja kuvia."</string>
     <string name="device_admin_settings_title" msgid="31392408594557070">"Laitteenhallinnan asetukset"</string>
     <string name="active_device_admin_msg" msgid="7744106305636543184">"Laitteenhallintasovellus"</string>
     <string name="remove_device_admin" msgid="3143059558744287259">"Poista laitteenhallintasovellus käytöstä"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Ei määritetty – työprofiili"</string>
     <string name="user_admin" msgid="4024553191395768119">"Järjestelmänvalvoja"</string>
     <string name="user_you" msgid="3070562015202859996">"Sinä (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Lempinimi"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Voit lisätä korkeintaan <xliff:g id="USER_COUNT">%1$d</xliff:g> käyttäjää."</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Vain tablet-laitteen omistaja voi hallita käyttäjiä."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Vain puhelimen omistaja voi hallita käyttäjiä."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Takaisin"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Seuraava"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Valmis"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Ota kuva"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Valitse kuva"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Valitse valokuva"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-kortit"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-kortit"</string>
@@ -4056,7 +4052,7 @@
     <string name="usb_use_file_transfers" msgid="483915710802018503">"Tiedostonsiirto"</string>
     <string name="usb_use_file_transfers_desc" msgid="1020257823387107336">"Siirrä tiedostoja toiselle laitteelle."</string>
     <string name="usb_use_photo_transfers" msgid="4641181628966036093">"PTP"</string>
-    <string name="usb_use_photo_transfers_desc" msgid="7490250033610745765">"Siirrä valokuvia tai tiedostoja, jos MTP:tä ei tueta (PTP)."</string>
+    <string name="usb_use_photo_transfers_desc" msgid="7490250033610745765">"Siirrä kuvia tai tiedostoja, jos MTP:tä ei tueta (PTP)."</string>
     <string name="usb_use_tethering" msgid="2897063414491670531">"Internetin jakaminen USB:n kautta"</string>
     <string name="usb_use_MIDI" msgid="8621338227628859789">"MIDI"</string>
     <string name="usb_use_MIDI_desc" msgid="6464135515868405143">"Käytä tätä laitetta MIDI-tilassa."</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 37b4370..7b4a28e 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Adresse MAC de l\'appareil"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Adresse MAC aléatoire"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Adresse IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Infos sur le réseau"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Masque de sous-réseau"</string>
@@ -3030,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Non configuré : profil professionnel"</string>
     <string name="user_admin" msgid="4024553191395768119">"Admin"</string>
     <string name="user_you" msgid="3070562015202859996">"Vous (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Pseudonyme"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Vous pouvez ajouter jusqu\'à <xliff:g id="USER_COUNT">%1$d</xliff:g> utilisateurs"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Seul le propriétaire de la tablette peut gérer les utilisateurs."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Seul le propriétaire de la tablette peut gérer les utilisateurs."</string>
@@ -3150,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Précédent"</string>
     <string name="wizard_next" msgid="3884832431439072471">"SUIVANT"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Terminer"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Prendre une photo"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Sélectionner une image"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Sélectionner une photo"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Cartes SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Cartes SIM"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 843331c..1c87893 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Adresse MAC de l\'appareil"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Adresse MAC aléatoire"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Adresse IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Détails du réseau"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Masque de sous-réseau"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Saisissez une adresse de passerelle valide."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Saisissez une adresse DNS correcte."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Le préfixe réseau doit être compris entre 0 et 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (sauf si un DNS privé a la priorité)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (sauf si un DNS privé a la priorité)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Passerelle"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Longueur du préfixe réseau"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Non configuré – Profil professionnel"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrateur"</string>
     <string name="user_you" msgid="3070562015202859996">"Vous (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Pseudonyme"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Vous pouvez ajouter jusqu\'à <xliff:g id="USER_COUNT">%1$d</xliff:g> utilisateurs."</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Seul le propriétaire de la tablette peut gérer les utilisateurs."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Seul le propriétaire du téléphone peut gérer les utilisateurs."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Retour"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Suivant"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Terminer"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Prendre une photo"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Choisir une image"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Sélectionner une photo"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Cartes SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Cartes SIM"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 81d85b0..80e1f91 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Enderezo MAC do dispositivo"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Enderezo MAC aleatorio"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Enderezo IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detalles da rede"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Máscara de subrede"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Escribe un enderezo de pasarela válido."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Escribe un enderezo DNS válido."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Escribe un prefixo de rede con lonxitude de 0-32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (a menos que o anule un DNS privado)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (a menos que o anule un DNS privado)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Pasarela"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lonxitude prefixo de rede"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Non configurado: perfil de traballo"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrador"</string>
     <string name="user_you" msgid="3070562015202859996">"Ti (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Alcume"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Podes engadir ata <xliff:g id="USER_COUNT">%1$d</xliff:g> usuarios."</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Só o propietario da tableta pode xestionar usuarios."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Só o propietario do teléfono pode xestionar usuarios."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Atrás"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Seguinte"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Finalizar"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Tirar unha foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Escoller unha imaxe"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Seleccionar foto"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Tarxetas SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Tarxetas SIM"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index edfc3ad..1ed7dc6 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"ડિવાઇસનું MAC ઍડ્રેસ"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"રેન્ડમ કરેલું MAC ઍડ્રેસ"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP ઍડ્રેસ"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"નેટવર્કની વિગતો"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"સબનેટ માસ્ક"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"એક માન્ય ગેટવે સરનામું લખો."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"એક માન્ય DNS સરનામું લખો."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 અને 32 વચ્ચે એક નેટવર્ક પ્રીફિક્સ લંબાઈ લખો."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (સિવાય કે ખાનગી DNS દ્વારા ઓવરરાઇડ કર્યું હોય)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (સિવાય કે ખાનગી DNS દ્વારા ઓવરરાઇડ કર્યું હોય)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"ગેટવે"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"નેટવર્ક પ્રીફિક્સ લંબાઈ"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"વાઇ-ફાઇ ડાઇરેક્ટ"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"સેટ કરેલ નથી - કાર્યાલયની પ્રોફાઇલ"</string>
     <string name="user_admin" msgid="4024553191395768119">"એડમિન"</string>
     <string name="user_you" msgid="3070562015202859996">"તમે (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"ઉપનામ"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"તમે <xliff:g id="USER_COUNT">%1$d</xliff:g> જેટલા વપરાશકર્તાઓ ઉમેરી શકો છો"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"માત્ર ટેબ્લેટના માલિક વપરાશકર્તાને સંચાલિત કરી શકે છે."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"માત્ર ફોનના માલિક વપરાશકર્તાને સંચાલિત કરી શકે છે."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"પાછળ"</string>
     <string name="wizard_next" msgid="3884832431439072471">"આગલું"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"સમાપ્ત"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ફોટો લો"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"છબી પસંદ કરો"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ફોટો પસંદ કરો"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"સિમ કાર્ડ"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"સિમ કાર્ડ"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index faa2b85..3fc0026 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -323,7 +323,7 @@
     <string name="multi_biometric_enroll_title" msgid="3007607723604088374">"फ़िंगरप्रिंट और चेहरा पहचानने की सुविधा से, सुरक्षित तरीके से फ़ोन को अनलॉक करें"</string>
     <string name="multi_biometric_enroll_subtitle" msgid="2900786940599073108">"आप ऐप में साइन इन और पैसे चुकाने की पुष्टि भी कर सकते हैं"</string>
     <string name="multi_biometric_enroll_setup_with" msgid="421375792889910150">"इनसे अनलॉक करने की सुविधा सेट करें:"</string>
-    <string name="multi_biometric_enroll_face_unlock_title" msgid="7627564065626355692">"मालिक का चेहरा पहचानकर अनलॉक करें"</string>
+    <string name="multi_biometric_enroll_face_unlock_title" msgid="7627564065626355692">"मालिक का चेहरा पहचानकर अनलॉक"</string>
     <string name="multi_biometric_enroll_face_unlock_description" msgid="7626442550602926682">"अपने फ़ोन को अनलॉक करना आसान बनाएं"</string>
     <string name="multi_biometric_enroll_fingerprint_unlock_title" msgid="3839935495273854171">"फ़िंगरप्रिंट"</string>
     <string name="multi_biometric_enroll_fingerprint_unlock_description" msgid="116938134430420778">"फ़िंगरप्रिंट सेट अप करके फ़ोन को फटाफट अनलॉक करें"</string>
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"एसएसआईडी"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"डिवाइस का MAC पता"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"अनियमित चुना गया MAC पता"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"आईपी पता"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"नेटवर्क के बारे में जानकारी"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"सबनेट मास्क"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"कोई मान्‍य गेटवे पता लिखें."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"कोई मान्‍य DNS पता लिखें."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 और 32 के बीच की लंबाई का नेटवर्क उपसर्ग लिखें."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"डीएनएस 1 (अगर निजी डीएनएस से बदला नहीं गया हो)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"डीएनएस 2 (अगर निजी डीएनएस से बदला नहीं गया हो)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"गेटवे"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"नेटवर्क उपसर्ग लंबाई"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"वाई-फ़ाई डायरेक्ट"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"सेट नहीं की गई - वर्क प्रोफ़ाइल"</string>
     <string name="user_admin" msgid="4024553191395768119">"एडमिन"</string>
     <string name="user_you" msgid="3070562015202859996">"आप (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"प्रचलित नाम"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"आप <xliff:g id="USER_COUNT">%1$d</xliff:g> उपयोगकर्ता तक जोड़ सकते हैं"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"केवल टैबलेट का स्वामी उपयोगकर्ताओं को प्रबंधित कर सकता है."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"केवल फ़ोन का स्वामी उपयोगकर्ताओं को प्रबंधित कर सकता है."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"वापस जाएं"</string>
     <string name="wizard_next" msgid="3884832431439072471">"आगे बढ़ें"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"खत्म करें"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"फ़ोटो खींचें"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"इमेज चुनें"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"फ़ोटो चुनें"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"सिम कार्ड"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"सिम कार्ड"</string>
@@ -4835,7 +4831,7 @@
     <string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> से कनेक्ट होने पर उपलब्ध नहीं है"</string>
     <string name="see_more" msgid="7499355691042812723">"ज़्यादा देखें"</string>
     <string name="see_less" msgid="2642392725363552793">"कम देखें"</string>
-    <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> को बंद करना चाहते हैं?"</string>
+    <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"क्या आप <xliff:g id="CARRIER_NAME">%1$s</xliff:g> को बंद करना चाहते हैं?"</string>
     <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"क्या आप सिम बंद करना चाहते हैं?"</string>
     <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"सिम बंद किया जा रहा है<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
     <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"मोबाइल और इंटरनेट सेवा देने वाली कंपनी का नेटवर्क बंद नहीं किया जा सकता"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 0d596dc..48371be 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -1033,6 +1033,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC adresa uređaja"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Nasumično odabrana MAC adresa"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP adresa"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Podaci o mreži"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Maska podmreže"</string>
@@ -1050,10 +1052,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Upišite važeću adresu pristupnika."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Upišite važeću DNS adresu."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Upišite prefiks mreže duljine između 0 i 32 znaka."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (ako ga ne nadjača privatni DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (ako ga ne nadjača privatni DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Pristupnik"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Duljina mrežnog prefiksa"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3075,7 +3075,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Nije postavljen – radni profil"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrator"</string>
     <string name="user_you" msgid="3070562015202859996">"Vi (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nadimak"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Ne možete dodati više od <xliff:g id="USER_COUNT">%1$d</xliff:g> korisnika"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Samo vlasnik tabletnog računala može upravljati korisnicima."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Samo vlasnik telefona može upravljati korisnicima."</string>
@@ -3195,9 +3194,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Natrag"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Dalje"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Završi"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Snimite fotografiju"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Odaberite sliku"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Odabir slike"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM kartice"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM kartice"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index f57b930..acaec81 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Az eszköz MAC-címe"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Véletlenszerű MAC-cím"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-cím"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Hálózati információk"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Alhálózati maszk"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Írjon be érvényes átjárócímet."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Írjon be érvényes DNS-címet."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 és 32 közti hosszt adjon meg a hálózati előtagnál."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (hacsak a privát DNS felül nem írja)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (hacsak a privát DNS felül nem írja)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Átjáró"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Hálózati előtag hossza"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -1298,7 +1298,7 @@
     <string name="ambient_display_category_triggers" msgid="1216640141609270011">"Mikor jelenjen meg?"</string>
     <string name="doze_title" msgid="1523090408230862316">"Képernyő ébresztése értesítéskor"</string>
     <string name="doze_summary" msgid="8252867381522942804">"Amikor a képernyő ki van kapcsolva, bekapcsol az új értesítéseknél"</string>
-    <string name="doze_always_on_title" msgid="7326245192352868477">"Időpont és adatok mindig láthatók"</string>
+    <string name="doze_always_on_title" msgid="7326245192352868477">"Idő és adatok mindig láthatók"</string>
     <string name="doze_always_on_summary" msgid="509097829739647852">"Növeli az akkumulátorhasználatot"</string>
     <string name="title_font_size" msgid="570613010306330622">"Betűméret"</string>
     <string name="short_summary_font_size" msgid="184712645848458143">"Szöveg nagyítása és kicsinyítése"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Még nincs létrehozva – Munkaprofil"</string>
     <string name="user_admin" msgid="4024553191395768119">"Rendszergazda"</string>
     <string name="user_you" msgid="3070562015202859996">"Ön (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Becenév"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Legfeljebb <xliff:g id="USER_COUNT">%1$d</xliff:g> felhasználót adhat hozzá"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Csak a táblagép tulajdonosa kezelheti a felhasználókat."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Csak a telefon tulajdonosa kezelheti a felhasználókat."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Vissza"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Tovább"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Befejezés"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Fotó készítése"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Kép kiválasztása"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Fotó kiválasztása"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM kártyák"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM kártyák"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 8439fac..546001b 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Սարքի MAC հասցե"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Պատահական ընտրված MAC հասցե"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP հասցե"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Ցանցի տվյալներ"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Ենթացանցի դիմակ"</string>
@@ -3030,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Կարգավորված չէ - Աշխատանքային պրոֆիլ"</string>
     <string name="user_admin" msgid="4024553191395768119">"Ադմինիստրատոր"</string>
     <string name="user_you" msgid="3070562015202859996">"Դուք (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Կեղծանուն"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Մինչև <xliff:g id="USER_COUNT">%1$d</xliff:g> օգտատիրոջ ավելացում"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Միայն պլանշետի սեփականատերը կարող է կառավարել օգտատերերին:"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Միայն հեռախոսի օգտատերը կարող է կառավարել օգտատերերին:"</string>
@@ -3150,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Հետ"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Հաջորդը"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Ավարտել"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Լուսանկարել"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Ընտրել պատկեր"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Ընտրեք լուսանկարը"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM քարտեր"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM քարտեր"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 1b1ce01..1af528c 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Alamat MAC perangkat"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Alamat MAC yang diacak"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Alamat IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detail jaringan"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnet mask"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Ketikkan alamat gerbang yang valid."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Ketik alamat DNS yang valid."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Ketikkan panjang awalan jaringan antara 0 dan 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (kecuali diganti dengan DNS Pribadi)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (kecuali diganti dengan DNS Pribadi)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Panjang awalan jaringan"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Langsung"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Tidak disiapkan - Profil kerja"</string>
     <string name="user_admin" msgid="4024553191395768119">"Admin"</string>
     <string name="user_you" msgid="3070562015202859996">"Anda (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nama panggilan"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Anda dapat menambahkan maksimal <xliff:g id="USER_COUNT">%1$d</xliff:g> pengguna"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Hanya pemilik tablet yang dapat mengelola pengguna."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Hanya pemilik ponsel yang dapat mengelola pengguna."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Kembali"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Berikutnya"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Selesai"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Ambil foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Pilih gambar"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Pilih foto"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Kartu SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Kartu SIM"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 3fc74f9..053cd7b 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC-vistfang tækis"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"MAC-vistfang af handahófi"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-tala"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Upplýsingar um net"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Undirnetssía"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Sláðu inn gilt vistfang gáttar."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Sláðu inn gilt DNS-vistfang."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Sláðu inn lengd netforskeytis á bilinu 0–32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (nema því sé hnekkt með lokuðu DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (nema því sé hnekkt með lokuðu DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Gátt"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lengd netforskeytis"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Ekki uppsett – vinnusnið"</string>
     <string name="user_admin" msgid="4024553191395768119">"Stjórnandi"</string>
     <string name="user_you" msgid="3070562015202859996">"Þú (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Gælunafn"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Þú getur bætt við allt að <xliff:g id="USER_COUNT">%1$d</xliff:g> notendum"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Aðeins eigandi spjaldtölvunnar getur haft umsjón með notendum."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Aðeins eigandi símans getur haft umsjón með notendum."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Til baka"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Áfram"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Ljúka"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Taka mynd"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Velja mynd"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Velja mynd"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-kort"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-kort"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index cac54e8..8996aa4 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Indirizzo MAC del dispositivo"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Indirizzo MAC casuale"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Indirizzo IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Dettagli rete"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnet mask"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Digita l\'indirizzo di un gateway valido."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Digita un indirizzo DNS valido."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Digita un prefisso di rete di 0-32 caratteri."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (a meno che venga sostituito da DNS privato)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (a meno che venga sostituito da DNS privato)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lunghezza prefisso rete"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Non configurato - Profilo di lavoro"</string>
     <string name="user_admin" msgid="4024553191395768119">"Amministratore"</string>
     <string name="user_you" msgid="3070562015202859996">"Tu (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nickname"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Puoi aggiungere fino a <xliff:g id="USER_COUNT">%1$d</xliff:g> utenti"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Solo il proprietario del tablet può gestire gli utenti."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Solo il proprietario del telefono può gestire gli utenti."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Indietro"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Avanti"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Fine"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Scatta una foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Scegli un\'immagine"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Seleziona foto"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Schede SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Schede SIM"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 1698aed..bd34479 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -1053,6 +1053,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"‏כתובת MAC של המכשיר"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"‏כתובת MAC אקראית"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"‏כתובת IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"פרטי הרשת"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"מסכת רשת משנה"</string>
@@ -1070,10 +1072,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"הקלד כתובת שער חוקית."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"‏הקלד כתובת DNS חוקית."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"הקלד אורך לקידומת רשת בין 0 ו-32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"‏DNS 1 (אלא אם בוטל על ידי שרת DNS פרטי)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"‏DNS 2 (אלא אם בוטל על ידי שרת DNS פרטי)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"שער"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"אורך קידומת של רשת"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"‏Wi-Fi ישיר"</string>
@@ -3118,7 +3118,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"לא מוגדר - פרופיל עבודה"</string>
     <string name="user_admin" msgid="4024553191395768119">"מנהל מערכת"</string>
     <string name="user_you" msgid="3070562015202859996">"את/ה (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"כינוי"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"אפשר להוסיף עד <xliff:g id="USER_COUNT">%1$d</xliff:g> משתמשים"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"רק הבעלים של הטאבלט יכול לנהל משתמשים."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"רק הבעלים של הטלפון יכול לנהל משתמשים."</string>
@@ -3238,9 +3237,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"הקודם"</string>
     <string name="wizard_next" msgid="3884832431439072471">"הבא"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"סיום"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"צילום תמונה"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"לבחירת תמונה"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"בחירת תמונה"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"‏כרטיסי SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"‏כרטיסי SIM"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 6b3722b..1df858f 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"デバイスの MAC アドレス"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"ランダム MAC アドレス"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP アドレス"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"ネットワークの詳細"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"サブネット マスク"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"有効なゲートウェイアドレスを入力してください。"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"有効なDNSアドレスを入力してください。"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"ネットワークプレフィックス長は0～32で指定します。"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1（プライベート DNS でオーバーライドされる場合を除く）"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2（プライベート DNS でオーバーライドされる場合を除く）"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"ゲートウェイ"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"ネットワークプレフィックス長"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"セットアップしていません - 仕事用プロファイル"</string>
     <string name="user_admin" msgid="4024553191395768119">"管理者"</string>
     <string name="user_you" msgid="3070562015202859996">"自分（<xliff:g id="NAME">%s</xliff:g>）"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"ニックネーム"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"最大<xliff:g id="USER_COUNT">%1$d</xliff:g>人のユーザーを追加できます"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"ユーザーを管理できるのはタブレットの所有者のみです。"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"ユーザーを管理できるのはモバイルデバイスの所有者のみです。"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"戻る"</string>
     <string name="wizard_next" msgid="3884832431439072471">"次へ"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"終了"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"写真を撮る"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"画像を選択"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"写真を選択"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIMカード"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIMカード"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 073d256..2cdafd0 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"მოწყობილობის MAC მისამართი"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"შემთხვევითი MAC მისამართი"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP მისამართი"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"ქსელის დეტალები"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"ქვექსელის ნიღაბი"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"შეიყვანეთ გეითვეის სწორი მისამართი."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"შეიყვანეთ სწორი DNS მისამართი."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"შეიყვანეთ ქსელის პრეფიქსი, რომლის სიგრძეა 0-დან 32-მდე."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (სანამ არ არის უგულებელყოფილი პირადი DNS-ის მიერ)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (სანამ არ არის უგულებელყოფილი პირადი DNS-ის მიერ)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"გეითვეი"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"ქსელის პრეფიქსის სიგრძე"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"არ არის დაყენებული - სამუშაო პროფილი"</string>
     <string name="user_admin" msgid="4024553191395768119">"ადმინისტრატორი"</string>
     <string name="user_you" msgid="3070562015202859996">"თქვენ (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"მეტსახელი"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"შეგიძლიათ დაამატოთ <xliff:g id="USER_COUNT">%1$d</xliff:g>-მდე მომხმარებელი"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"მომხმარებლების მართვა შეუძლია მხოლოდ ტაბლეტის მფლობელს."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"მომხმარებლების მართვა შეუძლია მხოლოდ ტელეფონის მფლობელს."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"უკან"</string>
     <string name="wizard_next" msgid="3884832431439072471">"მომდევნო"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"დასრულება"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ფოტოს გადაღება"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"სურათის არჩევა"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ფოტოს არჩევა"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM ბარათები"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM ბარათები"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 84c15a5..b7d1f13 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Құрылғының MAC мекенжайы"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Кездейсоқ MAC мекенжайы"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP мекенжайы"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Желі деректері"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Қосалқы желі маскасы"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Жарамды торап мекенжайын теріңіз."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Жарамды DNS мекенжайын теріңіз."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Желі префиксінің ұзындығын 0 және 32 аралығында теріңіз"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (жеке DNS-пен ауыстырылмаса)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (жеке DNS-пен ауыстырылмаса)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Торап"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Желі префиксінің ұзындығы"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -2673,7 +2673,7 @@
     <string name="tts_sliders_title" msgid="6901146958648426181">"Сөйлеу жылдамдығы және екпін"</string>
     <string name="tts_engine_section_title" msgid="5115035218089228451">"Жүйе"</string>
     <string name="tts_install_voice_title" msgid="5133545696447933812">"Дауыс"</string>
-    <string name="tts_spoken_language" msgid="4652894245474520872">"Сөйлесу тілі"</string>
+    <string name="tts_spoken_language" msgid="4652894245474520872">"Дыбысталу тілі"</string>
     <string name="tts_install_voices_title" msgid="6505257816336165782">"Дауыстарды орнату"</string>
     <string name="tts_install_voices_text" msgid="902408506519246362">"Дауыстарды орнату үшін <xliff:g id="TTS_APP_NAME">%s</xliff:g> қолданбасына өту"</string>
     <string name="tts_install_voices_open" msgid="919034855418197668">"Қолданбаны ашу"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Орнатылмаған – жұмыс профилі"</string>
     <string name="user_admin" msgid="4024553191395768119">"Әкімші"</string>
     <string name="user_you" msgid="3070562015202859996">"Сіз (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Қысқа аты"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"<xliff:g id="USER_COUNT">%1$d</xliff:g> пайдаланушыға дейін қоса аласыз"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Планшет иесі ғана пайдаланушыларды басқара алады."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Телефон иесі ғана пайдаланушыларды басқара алады."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Артқа"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Келесі"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Аяқтау"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Суретке түсіру"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Кескін таңдау"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Фотосурет таңдау"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM карталары"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM карталары"</string>
@@ -3467,7 +3463,7 @@
     <string name="asst_capability_prioritizer_title" msgid="1181272430009156556">"Бейімделетін хабарландырулар басымдығы"</string>
     <string name="asst_capability_prioritizer_summary" msgid="954988212366568737">"Маңыздылығы төмен хабарландыруларды автоматты түрде дыбыссыз режимге орнату"</string>
     <string name="asst_capability_ranking_title" msgid="312998580233257581">"Хабарландыруларды автоматты түрде сұрыптау"</string>
-    <string name="asst_capability_ranking_summary" msgid="2293524677144599450">"Хабарландыруларды қатыстылығына қарай сұрыптау"</string>
+    <string name="asst_capability_ranking_summary" msgid="2293524677144599450">"Хабарландыруларды сәйкестігіне қарай сұрыптау"</string>
     <string name="asst_feedback_indicator_title" msgid="5169801869752395354">"Бейімделетін хабарландырулар туралы пікірлер"</string>
     <string name="asst_feedback_indicator_summary" msgid="5862082842073307900">"Хабарландыруларға жасалған түзетулерді көрсетеді және жүйеге пікір жіберуді ұсынады"</string>
     <string name="asst_capabilities_actions_replies_title" msgid="4392470465646394289">"Ұсынылған әрекеттер және жауаптар"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index d058d45..1aa0996 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"អាសយដ្ឋាន​ឧបករណ៍ MAC"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"អាសយដ្ឋាន MAC ចៃដន្យ"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"អាសយដ្ឋាន IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"ព័ត៌មាន​បណ្ដាញ"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"របាំងបណ្តាញរង"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"បញ្ចូល​អាសយដ្ឋាន​ច្រកចេញ​ចូល​ដែល​ត្រឹមត្រូវ"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"បញ្ចូល​អាសយដ្ឋាន DNS ដែល​ត្រឹមត្រូវ។"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"បញ្ចូល​ប្រវែង​បុព្វបទ​បណ្ដាញ​ចន្លោះ ០ និង ៣២។"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (ប្រសិនបើមិនលុបពីលើដោយ DNS ឯកជន)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (ប្រសិនបើមិនលុបពីលើដោយ DNS ឯកជន)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"ច្រក​"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"ប្រវែង​បុព្វបទ​បណ្ដាញ"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi ​ផ្ទាល់"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"មិន​បាន​រៀបចំ - ប្រវត្តិរូប​ការងារ"</string>
     <string name="user_admin" msgid="4024553191395768119">"អ្នកគ្រប់គ្រង"</string>
     <string name="user_you" msgid="3070562015202859996">"អ្នក (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"សម្មតិនាម"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"អ្នកអាចបន្ថែមអ្នកប្រើរហូតដល់ <xliff:g id="USER_COUNT">%1$d</xliff:g> នាក់"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"មាន​តែ​ម្ចាស់​កុំព្យូទ័រ​បន្ទះ​ប៉ុណ្ណោះ​អាច​គ្រប់គ្រង​អ្នកប្រើ"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"មាន​តែ​ម្ចាស់​ទូរស័ព្ទ​ប៉ុណ្ណោះ​អាច​គ្រប់គ្រង​អ្នកប្រើ។"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"ថយក្រោយ"</string>
     <string name="wizard_next" msgid="3884832431439072471">"បន្ទាប់​"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"បញ្ចប់"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ថតរូប"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"ជ្រើសរើស​រូបភាព"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ជ្រើស​រូបថត"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"ស៊ី​ម​កាត"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"ស៊ី​ម​កាត"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index e58fa17..c6e0f25 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"ಸಾಧನದ MAC ವಿಳಾಸ"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"ಯಾದೃಚ್ಛಿಕಗೊಳಿಸಿದ MAC ವಿಳಾಸ"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP ವಿಳಾಸ"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"ನೆಟ್‌ವರ್ಕ್‌ ವಿವರಗಳು"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"ಸಬ್‌ನೆಟ್‌ ಮಾಸ್ಕ್‌"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"ಮಾನ್ಯವಾದ ಗೇಟ್‌ವೇ ವಿಳಾಸವನ್ನು ಟೈಪ್‌ ಮಾಡಿ."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"ಮಾನ್ಯವಾದ DNS ವಿಳಾಸವನ್ನು ಟೈಪ್‌ ಮಾಡಿ."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 ಮತ್ತು 32 ನಡುವಿನ ಉದ್ದದ ನೆಟ್‌ವರ್ಕ್‌ ಪೂರ್ವಪ್ರತ್ಯಯವನ್ನು ಟೈಪ್‌ ಮಾಡಿ."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (ಖಾಸಗಿ DNS‌ ನಿಂದ ಅತಿಕ್ರಮಿಸದಿದ್ದರೆ)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (ಖಾಸಗಿ DNS‌ ನಿಂದ ಅತಿಕ್ರಮಿಸದಿದ್ದರೆ)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"ಗೇಟ್‌ವೇ"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"ನೆಟ್‌ವರ್ಕ್‌ ಪೂರ್ವಪ್ರತ್ಯಯದ ಅಳತೆ"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi ಡೈರೆಕ್ಟ್"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"ಹೊಂದಿಸಿಲ್ಲ - ಕೆಲಸದ ಪ್ರೊಫೈಲ್"</string>
     <string name="user_admin" msgid="4024553191395768119">"ನಿರ್ವಾಹಕ"</string>
     <string name="user_you" msgid="3070562015202859996">"ನೀವು (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"ಅಡ್ಡಹೆಸರು"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"ನೀವು <xliff:g id="USER_COUNT">%1$d</xliff:g> ರವರೆಗೆ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಬಹುದು"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"ಕೇವಲ ಟ್ಯಾಬ್ಲೆಟ್‌ಗಳ ಮಾಲೀಕರು ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸಬಹುದು."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"ಕೇವಲ ಫೋನ್‌ಗಳ ಮಾಲೀಕರು ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸಬಹುದು."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"ಹಿಂದೆ"</string>
     <string name="wizard_next" msgid="3884832431439072471">"ಮುಂದೆ"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"ಪೂರ್ಣಗೊಳಿಸು"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ಫೋಟೋವನ್ನು ಸೆರೆಹಿಡಿಯಿರಿ"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"ಚಿತ್ರವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ಫೋಟೋ ಆಯ್ಕೆಮಾಡಿ"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"ಸಿಮ್‌ ಕಾರ್ಡ್‌ಗಳು"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"ಸಿಮ್‌ ಕಾರ್ಡ್‌ಗಳು"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 3b194e6..0779f8a 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"기기 MAC 주소"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"무작위 MAC 주소"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP 주소"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"네트워크 세부정보"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"서브넷 마스크"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"올바른 게이트웨이 주소를 입력하세요."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"올바른 DNS 주소를 입력하세요."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0에서 32 사이의 네트워크 접두어 길이를 입력해 주세요."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1(비공개 DNS가 우선 적용되지 않는 경우)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2(비공개 DNS가 우선 적용되지 않는 경우)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"게이트웨이"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"네트워크 접두어 길이"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"설정되지 않음 - 직장 프로필"</string>
     <string name="user_admin" msgid="4024553191395768119">"관리자"</string>
     <string name="user_you" msgid="3070562015202859996">"나(<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"닉네임"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"사용자 <xliff:g id="USER_COUNT">%1$d</xliff:g>명까지 추가 가능"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"태블릿의 소유자만 사용자를 관리할 수 있습니다."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"휴대전화의 소유자만 사용자를 관리할 수 있습니다."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"뒤로"</string>
     <string name="wizard_next" msgid="3884832431439072471">"다음"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"완료"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"사진 찍기"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"이미지 선택"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"사진 선택"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM 카드"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM 카드"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 8090f50..11506f7 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Түзмөктүн MAC дареги"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Туш келди MAC дареги"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP дарек"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Тармактын чоо-жайы"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Көмөкчү тармактын маскасы"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Жарактуу шлюз дарегин териңиз."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Жарактуу DNS дарегин териңиз."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Тармактын префикси 0дөн 32ге чейин болушу керек."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (Купуя DNS тарабынан өзгөртүлбөсө)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (Купуя DNS тарабынан өзгөртүлбөсө)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Шлюз"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Тармак префиксинин узуну"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Коюлган эмес – Жумуш профили"</string>
     <string name="user_admin" msgid="4024553191395768119">"Админ"</string>
     <string name="user_you" msgid="3070562015202859996">"Сиз (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Каймана аты"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"<xliff:g id="USER_COUNT">%1$d</xliff:g> чейин колдонуучу кошсоңуз болот"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Планшеттин ээси гана колдонуучуларды башкара алат."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Телефондун ээси гана колдонуучуларды башкара алат."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Артка"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Кийинки"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Аяктоо"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Сүрөткө тартуу"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Сүрөт тандоо"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Сүрөт тандаңыз"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM карталар"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM карталар"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index e5c2e6a..262de8c 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"ທີ່ຢູ່ MAC ຂອງອຸປະກອນ"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"ທີ່ຢູ່ MAC ທີ່ສຸ່ມມາ"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"ທີ່ຢູ່ IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"ລາຍລະອຽດເຄືອຂ່າຍ"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnet Mask"</string>
@@ -3030,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"​ບໍ່​ໄດ້​ຕິດ​ຕັ້ງ - ​ໂປຣ​ໄຟລ໌​ບ່ອນ​ເຮັດ​ວຽກ"</string>
     <string name="user_admin" msgid="4024553191395768119">"ຜູ້​ຄວບ​ຄຸມ"</string>
     <string name="user_you" msgid="3070562015202859996">"ທ່ານ (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"ຊື່ຫຼິ້ນ"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"ທ່ານ​ສາ​ມາດ​ເພີ່ມ​ຜູ້​ໃຊ້​ໄດ້​ເຖິງ <xliff:g id="USER_COUNT">%1$d</xliff:g> ຄົນ"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"ສະເພາະເຈົ້າຂອງແທັບເລັດທີ່ສາມາດຈັດການຜູ່ໃຊ້ໄດ້."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"ສະເພາະເຈົ້າຂອງໂທລະສັບທີ່ສາມາດຈັດການຜູ່ໃຊ້ໄດ້."</string>
@@ -3150,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"ກັບຄືນ"</string>
     <string name="wizard_next" msgid="3884832431439072471">"ຕໍ່ໄປ"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"ແລ້ວໆ"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ຖ່າຍຮູບ"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"ເລືອກຮູບ"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ເລືອກຮູບ"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM ກາດ"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM ກາດ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 571dac6..f10813a 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -1053,6 +1053,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Įrenginio MAC adresas"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Atsitiktinis MAC adresas"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP adresas"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Išsami tinklo info."</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Potinklio kaukė"</string>
@@ -3116,7 +3118,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Nenustatytas – darbo profilis"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administratorius"</string>
     <string name="user_you" msgid="3070562015202859996">"Jūs (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Slapyvardis"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Galite pridėti iki <xliff:g id="USER_COUNT">%1$d</xliff:g> naudotoj."</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Tik planšetinio kompiuterio savininkas gali tvarkyti naudotojus."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Tik telefono savininkas gali tvarkyti naudotojus."</string>
@@ -3236,9 +3237,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Atgal"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Kitas"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Užbaigti"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Fotografuoti"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Pasirinkti vaizdą"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Pasirinkti nuotrauką"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM kortelės"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM kortelės"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 7560115..927eb84 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -1033,6 +1033,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Ierīces MAC adrese"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Nejauši atlasīta MAC adrese"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP adrese"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Dati par tīklu"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Apakštīkla maska"</string>
@@ -1050,10 +1052,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Ierakstiet derīgu vārtejas adresi."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Ierakstiet derīgu sistēmas DNS adresi."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Ierakstiet tīkla prefiksa garumu diapazonā 0–32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (ja vien to neignorē privātā DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (ja vien to neignorē privātā DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Vārteja"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Tīkla prefiksa garums"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3075,7 +3075,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Darba profils — nav iestatīts"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrators"</string>
     <string name="user_you" msgid="3070562015202859996">"Jūs (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Segvārds"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Varat pievienot līdz pat <xliff:g id="USER_COUNT">%1$d</xliff:g> lietotājiem."</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Lietotājus var pārvaldīt tikai planšetdatora īpašnieks."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Lietotājus var pārvaldīt tikai tālruņa īpašnieks."</string>
@@ -3195,9 +3194,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Atpakaļ"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Tālāk"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Pabeigt"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Uzņemt fotoattēlu"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Izvēlēties attēlu"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Atlasīt fotoattēlu"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM kartes"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM kartes"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 5c5252f2..fadeac6 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC-адреса на уредот"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Рандомизирана MAC-адреса"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-адреса"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Детали за мрежата"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Подмрежна маска"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Внеси важечка адреса на капија."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Внеси важечка адреса на DNS."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Внесете мрежен префикс со должина од 0 до 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (освен ако не се отфрли од Приватен DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (освен ако не се отфрли од Приватен DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Портал"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Должина на мрежен префикс"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Не е поставен – Работен профил"</string>
     <string name="user_admin" msgid="4024553191395768119">"Администратор"</string>
     <string name="user_you" msgid="3070562015202859996">"Вие (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Прекар"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Може да додадете најмногу <xliff:g id="USER_COUNT">%1$d</xliff:g> корисници"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Само сопственикот на таблетот може да управува со корисниците."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Само сопственикот на телефонот може да управува со корисниците."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Назад"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Следно"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Заврши"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Фотографирајте"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Изберете слика"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Избери фотографија"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-картички"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-картички"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 206344c..f5e8547 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"ഉപകരണ MAC വിലാസം"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"ക്രമരഹിതമാക്കിയ MAC വിലാസം"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP വിലാസം"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"നെറ്റ്‌വർക്ക് വിശദാംശങ്ങൾ"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"സബ്‌നെറ്റ് മാസ്‌ക്"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"സാധുവായ ഗേറ്റ്‌വേ വിലാസം ടൈപ്പുചെയ്യുക."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"സാധുവായ DNS വിലാസം ടൈപ്പുചെയ്യുക."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0, 30 എന്നിവയ്‌ക്കിടയിലുള്ള ഒരു നെറ്റ്‌വർക്ക് പ്രിഫി‌ക്സ് ദൈർഘ്യം ടൈപ്പുചെയ്യുക."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (സ്വകാര്യ DNS അസാധുവാക്കിയില്ലെങ്കിൽ)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (സ്വകാര്യ DNS അസാധുവാക്കിയില്ലെങ്കിൽ)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"ഗേറ്റ്‌വേ"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"നെറ്റ്‌വർക്ക് പ്രിഫിക്‌സ് ദൈർഘ്യം"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi ഡയറക്‌ട്"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"സജ്ജീകരിച്ചിട്ടില്ല - ഔദ്യോഗിക പ്രൊഫൈൽ"</string>
     <string name="user_admin" msgid="4024553191395768119">"അഡ്‌മിന്‍"</string>
     <string name="user_you" msgid="3070562015202859996">"നിങ്ങൾ (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"വിളിപ്പേര്"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"<xliff:g id="USER_COUNT">%1$d</xliff:g> ഉപയോക്താക്കളെ വരെ നിങ്ങൾക്ക് ചേർക്കാം"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"ടാബ്‌ലെറ്റ് ഉടമയ്‌ക്ക് മാത്രമേ ഉപയോക്താക്കളെ നിയന്ത്രിക്കാനാകൂ."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"ഫോൺ ഉടമയ്‌ക്ക് മാത്രമേ ഉപയോക്താക്കളെ നിയന്ത്രിക്കാനാകൂ."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"മടങ്ങുക"</string>
     <string name="wizard_next" msgid="3884832431439072471">"അടുത്തത്"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"പൂര്‍ത്തിയാക്കുക"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ഒരു ഫോട്ടോ എടുക്കുക"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"ഒരു ചിത്രം തിരഞ്ഞെടുക്കുക"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ഫോട്ടോ തിരഞ്ഞെടുക്കുക"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"സിം കാർഡുകൾ"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"സിം കാർഡുകൾ"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index a50ec63..5b04858 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Төхөөрөмжийн MAC хаяг"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Санамсаргүй сонгосон MAC хаяг"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP хаяг"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Сүлжээний мэдээлэл"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnet маск"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Зөв гарцын хаяг оруулна уу."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Зөв DNS хаяг оруулна уу."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 болон 32 хооронд урттай сүлжээний угтварыг бичнэ үү."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (Хувийн DNS-с дараагүй бол)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (Хувийн DNS-с дараагүй бол)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Гарц"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Сүлжээний угтварын урт"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Шууд"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Тохируулаагүй - Ажлын профайл"</string>
     <string name="user_admin" msgid="4024553191395768119">"Админ"</string>
     <string name="user_you" msgid="3070562015202859996">"Та (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Хоч"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Та <xliff:g id="USER_COUNT">%1$d</xliff:g> хүртэлх хэрэглэгч нэмж болно"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Зөвхөн таблетын эзэмшигч л хэрэглэгчдийг удирдаж болно."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Зөвхөн утасны эзэмшигч л хэрэглэгчдийг удирдаж болно."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Буцах"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Дараагийн"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Дуусгах"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Зураг авах"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Зураг сонгох"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Зураг сонгох"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"СИМ карт"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"СИМ карт"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 1f37cd8..2f82984 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"डिव्हाइसचा MAC ॲड्रेस"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"रँडमाइझ केलेला MAC पत्ता"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP पत्ता"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"नेटवर्क तपशील"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"सबनेट मास्क"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"वैध गेटवे पत्ता टाइप करा."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"वैध DNS पत्ता टाइप करा."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 आणि 32 दरम्यान नेटवर्क उपसर्ग लांबी टाइप करा."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (खाजगी DNS ओव्हरराइड करेपर्यंत)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (खाजगी DNS ओव्हरराइड करेपर्यंत)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"गेटवे"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"नेटवर्क उपसर्ग लांबी"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"वाय-फाय डिरेक्ट"</string>
@@ -3033,7 +3033,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"सेट केलेले नाही - कार्य प्रोफाईल"</string>
     <string name="user_admin" msgid="4024553191395768119">"ॲडमिन"</string>
     <string name="user_you" msgid="3070562015202859996">"तुम्ही (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"टोपणनाव"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"तुम्ही सुमारे <xliff:g id="USER_COUNT">%1$d</xliff:g> वापरकर्ते जोडू शकता"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"केवळ टॅब्लेटचा मालक वापरकर्त्यांना व्यवस्थापित करु शकतो."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"केवळ फोनचा मालक वापरकर्त्यांना व्यवस्थापित करु शकतो."</string>
@@ -3153,9 +3152,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"परत"</string>
     <string name="wizard_next" msgid="3884832431439072471">"पुढील"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"समाप्‍त"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"फोटो काढा"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"इमेज निवडा"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"फोटो निवडा"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"सिम कार्ड"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"सिम कार्ड"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 1d83369..563e8ae 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Alamat MAC peranti"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Alamat MAC terawak"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Alamat IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Butiran rangkaian"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Tapisan subrangkaian"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Taipkan alamat gerbang yang sah."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Taipkan alamat DNS yang sah."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Sila taip awalan rgkaian yg pjgnya antara 0 &amp; 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (melainkan dibatalkan oleh DNS Peribadi)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (melainkan dibatalkan oleh DNS Peribadi)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Get laluan"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Panjang awalan rangkaian"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Tidak disediakan - Profil kerja"</string>
     <string name="user_admin" msgid="4024553191395768119">"Pentadbir"</string>
     <string name="user_you" msgid="3070562015202859996">"Anda (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nama samaran"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Anda boleh menambahkan sehingga <xliff:g id="USER_COUNT">%1$d</xliff:g> pengguna"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Hanya pemilik tablet boleh menguruskan pengguna."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Hanya pemilik telefon boleh menguruskan pengguna."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Kembali"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Seterusnya"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Selesai"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Ambil foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Pilih imej"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Pilih foto"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Kad SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Kad SIM"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index ebcf951..e4b58d3 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"စက်ပစ္စည်း MAC လိပ်စာ"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"ကျပန်းလုပ်ထားသည့် MAC လိပ်စာ"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"အိုင်ပီလိပ်စာ"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"ကွန်ရက် အသေးစိတ်များ"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnet ကွင်းဆက်နံပါတ်"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"ခိုင်လုံသောဝင်ပေါက် (gateway)လိပ်စာကို ရိုက်ထည့်ပါ"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"ခိုင်လုံသော DNS လိပ်စာကို ရိုက်ထည့်ပါ"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"၀နှင့်၃၂အရှည်ရှိသော ကွန်ယက်အစပြုနံပတ်ကိုထည့်ပါ"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (သီးသန့် DNS အစားထိုးခြင်း မရှိပါက)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (သီးသန့် DNS အစားထိုးခြင်း မရှိပါက)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"ဝင်ပေါက် (gateway)"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"ကွန်ရက် အစပြုဂဏန်း၏အရှည်"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"တိုက်ရိုက် Wi-Fi"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"အလုပ် ပရိုဖိုင် - မသတ်မှတ်ရသေး"</string>
     <string name="user_admin" msgid="4024553191395768119">"စီမံခန့်ခွဲသူ"</string>
     <string name="user_you" msgid="3070562015202859996">"သင် (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"နာမည်ဝှက်"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"သင် အသုံးပြုသူ <xliff:g id="USER_COUNT">%1$d</xliff:g> ယောက်အထိ ပေါင်းထည့်နိုင်သည်။"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"တက်ဘလက်၏ ပိုင်ရှင်သာ သုံးစွဲသူများကို စီမံခန့်ခွဲနိုင်သည်"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"ဖုန်း၏ ပိုင်ရှင်သာ သုံးစွဲသူများကို စီမံခန့်ခွဲနိုင်သည်"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"နောက်သို့"</string>
     <string name="wizard_next" msgid="3884832431439072471">"ရှေ့သို့"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"ပြီးပြီ"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ဓာတ်ပုံရိုက်ရန်"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"ပုံရွေးရန်"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ဓာတ်ပုံ ရွေးရန်"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"ဆင်းမ် ကဒ်များ"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"ဆင်းမ် ကဒ်များ"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 9c0e5ca..739d4a0 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Enhetens MAC-adresse"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Tilfeldig valgt MAC-adresse"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-adresse"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Nettverksdetaljer"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Nettverksmaske"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Angi en gyldig gateway-adresse."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Angi en gyldig DNS-adresse."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Angi lengde for nettverksprefiks mellom 0 og 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (med mindre det overstyres av privat DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (med mindre det overstyres av privat DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Nettverksprefiks-lengde"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Ikke konfigurert – arbeidsprofil"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrator"</string>
     <string name="user_you" msgid="3070562015202859996">"Du (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Kallenavn"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Du kan legge til opptil <xliff:g id="USER_COUNT">%1$d</xliff:g> brukere"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Bare eieren av nettbrettet kan administrere brukere."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Bare eieren av telefonen kan administrere brukere."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Tilbake"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Neste"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Fullfør"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Ta et bilde"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Velg et bilde"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Velg bildet"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-kort"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-kort"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index c39d799..a0ed0c5 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"यन्त्रको MAC ठेगाना"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"अनियमित बनाइएको MAC ठेगाना"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP ठेगाना"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"नेटवर्कको विवरण"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"सबनेट मास्क"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"एउटा मान्य गेटवे ठेगाना टाइप गर्नुहोस्।"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"एउटा मान्य DNS ठेगाना टाइप गर्नुहोस्।"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"नेटवर्क प्रेफिक्सको लम्बाइ ० देखि ३२का बीच टाइप गर्नुहोस्।"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (निजी DNS ले ओभरराइड नगरुन्जेल)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (निजी DNS ले ओभरराइड नगरुन्जेल))"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"गेटवे"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"नेटवर्क उपसर्ग लम्बाइ"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"सेट भएको छैन - कार्य प्रोफाइल"</string>
     <string name="user_admin" msgid="4024553191395768119">"प्रशासक"</string>
     <string name="user_you" msgid="3070562015202859996">"तपाईं (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"उपनाम"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"तपाईँले <xliff:g id="USER_COUNT">%1$d</xliff:g> जना प्रयोगकर्ता सम्म थप्न सक्नुहुनेछ"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"ट्याब्लेटको मालिकले मात्र प्रयोगकर्ताहरूलाई व्यवस्थापन गर्न सक्छ।"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"केवल फोनको धनीले मात्र प्रयोगकर्ता व्यवस्थापन गर्न सक्छ"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"पछाडि जानुहोस्"</string>
     <string name="wizard_next" msgid="3884832431439072471">"अर्को"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"समाप्त गर्नुहोस्"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"फोटो खिच्नुहोस्"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"कुनै फोटो छनौट गर्नुहोस्"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"फोटो छान्नुहोस्"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"सिम कार्ड"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM कार्डहरू"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index e65e280..b804e10 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC-adres van apparaat"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Willekeurig MAC-adres"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-adres"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Netwerkgegevens"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnetmasker"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Voer een geldig gateway-adres in."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Voer een geldig DNS-adres in."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Typ een netwerkprefix van 0-32 tekens."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (tenzij overschreven door privé-DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (tenzij overschreven door privé-DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lengte van netwerkprefix"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wifi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Niet ingesteld - Werkprofiel"</string>
     <string name="user_admin" msgid="4024553191395768119">"Beheerder"</string>
     <string name="user_you" msgid="3070562015202859996">"Jij (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Bijnaam"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Je kunt maximaal <xliff:g id="USER_COUNT">%1$d</xliff:g> gebruikers toevoegen"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Alleen de eigenaar van de tablet kan gebruikers beheren."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Alleen de eigenaar van de telefoon kan gebruikers beheren."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Terug"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Volgende"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Voltooien"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Een foto maken"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Een afbeelding kiezen"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Foto selecteren"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Simkaarten"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Simkaarten"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index aaf49d7..78ad73f 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"ଡିଭାଇସ୍‌ର MAC ଠିକଣା"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"ରେଣ୍ଡମାଇଜ୍ ହୋଇଥିବା MAC ଠିକଣା"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP ଠିକଣା"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"ନେଟୱାର୍କ୍ ବିବରଣୀ"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"ସବ୍‌ନେଟ୍‌ ମାସ୍କ"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"ଏକ ମାନ୍ୟ ଗେଟ୍‌ୱେ ଠିକଣା ଟାଇପ୍‌ କରନ୍ତୁ"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"ଏକ ବୈଧ DNS ଠିକଣା ଟାଇପ୍‌ କରନ୍ତୁ।"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 ଓ 32 ମଧ୍ୟରେ ଏକ ନେଟୱାର୍କ ପ୍ରିଫିକ୍ସ ଦୌର୍ଘ୍ୟ ଟାଇପ୍‌ କରନ୍ତୁ।"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (ବ୍ୟକ୍ତିଗତ DNS ଦ୍ୱାରା ଓଭରରିଡେନ୍ ହୋଇନଥିଲେ)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (ବ୍ୟକ୍ତିଗତ DNS ଦ୍ୱାରା ଓଭରରିଡେନ୍ ହୋଇନଥିଲେ)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"ଗେଟ୍‌ୱେ"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"ନେଟୱାର୍କ ପ୍ରିଫିକ୍ସ ଦୈର୍ଘ୍ୟ"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"ୱାଇ-ଫାଇ ଡାଇରେକ୍ଟ"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"ସେଟ୍‌ ଅପ୍‌ ହୋଇନାହିଁ - କାର୍ଯ୍ୟ ପ୍ରୋଫାଇଲ୍‌"</string>
     <string name="user_admin" msgid="4024553191395768119">"ଆଡ୍‌ମିନ୍‌"</string>
     <string name="user_you" msgid="3070562015202859996">"ଆପଣ (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"ଡାକନାମ"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"ଆପଣ <xliff:g id="USER_COUNT">%1$d</xliff:g> ଜଣ ପର୍ଯ୍ୟନ୍ତ ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ଯୋଡ଼ିପାରିବେ"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"କେବଳ ଟାବ୍‌ଲେଟ୍‌ର ମାଲିକ ହିଁ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ପରିଚାଳନା କରିପାରିବେ।"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"କେବଳ ଫୋନ୍‌ର ମାଲିକ ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ପରିଚାଳନା କରିପାରିବେ।"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"ପଶ୍ଚାତ୍"</string>
     <string name="wizard_next" msgid="3884832431439072471">"ପରବର୍ତ୍ତୀ"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"ସମାପ୍ତ"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ଗୋଟିଏ ଫଟୋ ଉଠାନ୍ତୁ"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"ଗୋଟିଏ ଛବି ବାଛନ୍ତୁ"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ଫଟୋ ବାଛନ୍ତୁ:"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM କାର୍ଡ"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"ସିମ୍‌ କାର୍ଡଗୁଡ଼ିକ"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 284e768..a385f49 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"ਡੀਵਾਈਸ MAC ਪਤਾ"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"ਬੇਤਰਤੀਬਵਾਰ MAC ਪਤਾ"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP ਪਤਾ"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"ਨੈੱਟਵਰਕ ਵੇਰਵੇ"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"ਸਬਨੈੱਟ ਮਾਸਕ"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"ਇੱਕ ਪ੍ਰਮਾਣਿਕ ਗੇਟਵੇ ਪਤਾ ਟਾਈਪ ਕਰੋ।"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"ਇੱਕ ਪ੍ਰਮਾਣਿਕ DNS ਪਤਾ ਟਾਈਪ ਕਰੋ।"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 ਅਤੇ 32 ਦੇ ਵਿਚਕਾਰ ਇੱਕ ਨੈੱਟਵਰਕ ਅਗੇਤਰ ਲੰਮਾਈ ਟਾਈਪ ਕਰੋ।"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (ਜਦੋਂ ਤੱਕ ਨਿੱਜੀ DNS ਵੱਲੋਂ ਓਵਰਰਾਈਡ ਨਾ ਕੀਤਾ ਗਿਆ ਹੋਵੇ)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (ਜਦੋਂ ਤੱਕ ਨਿੱਜੀ DNS ਵੱਲੋਂ ਓਵਰਰਾਈਡ ਨਾ ਕੀਤਾ ਗਿਆ ਹੋਵੇ)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"ਗੇਟਵੇ"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"ਨੈੱਟਵਰਕ ਅਗੇਤਰ ਲੰਮਾਈ"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"ਵਾਈ‑ਫਾਈ ਡਾਇਰੈਕਟ"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"ਸੈੱਟ ਅੱਪ ਨਹੀਂ ਕੀਤਾ - ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ"</string>
     <string name="user_admin" msgid="4024553191395768119">"ਪ੍ਰਸ਼ਾਸਕ"</string>
     <string name="user_you" msgid="3070562015202859996">"ਤੁਸੀਂ (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"ਉਪਨਾਮ"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"ਤੁਸੀਂ <xliff:g id="USER_COUNT">%1$d</xliff:g> ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹੋ"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"ਕੇਵਲ ਟੈਬਲੈੱਟ ਦਾ ਮਾਲਕ ਹੀ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਕਰ ਸਕਦਾ ਹੈ।"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"ਕੇਵਲ ਫ਼ੋਨ ਦਾ ਮਾਲਕ ਹੀ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰ ਸਕਦਾ ਹੈ।"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"ਪਿੱਛੇ"</string>
     <string name="wizard_next" msgid="3884832431439072471">"ਅੱਗੇ"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"ਸਮਾਪਤ ਕਰੋ"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ਫ਼ੋਟੋ ਖਿੱਚੋ"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"ਚਿੱਤਰ ਚੁਣੋ"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ਫ਼ੋਟੋ ਚੁਣੋ"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM ਕਾਰਡ"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM ਕਾਰਡ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 2a9d9b4..22de5cd 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -1053,6 +1053,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Adres MAC urządzenia"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Randomizowany adres MAC"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Adres IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Szczegóły sieci"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Maska podsieci"</string>
@@ -1070,10 +1072,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Wpisz prawidłowy adres bramy."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Wpisz prawidłowy adres DNS."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Wpisz długość przedrostka sieci z zakresu 0-32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (chyba że zastąpiony przez prywatny DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (chyba że zastąpiony przez prywatny DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Brama"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Długość przedrostka sieci"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3118,7 +3118,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Nieskonfigurowany – profil służbowy"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrator"</string>
     <string name="user_you" msgid="3070562015202859996">"Ty (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Pseudonim"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Możesz dodać maksymalnie <xliff:g id="USER_COUNT">%1$d</xliff:g> użytkowników"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Użytkownikami może zarządzać tylko właściciel tabletu."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Użytkownikami może zarządzać tylko właściciel telefonu."</string>
@@ -3238,9 +3237,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Wróć"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Dalej"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Zakończ"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Zrób zdjęcie"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Wybierz obraz"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Wybierz zdjęcie"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Karty SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Karty SIM"</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index d67de1e..96f13a4 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Endereço MAC do dispositivo"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Endereço MAC randomizado"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Endereço IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detalhes da rede"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Máscara de sub-rede"</string>
@@ -3030,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Não configurado - perfil de trabalho"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrador"</string>
     <string name="user_you" msgid="3070562015202859996">"Você (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Apelido"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"É possível adicionar até <xliff:g id="USER_COUNT">%1$d</xliff:g> usuários"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Somente o proprietário do tablet pode gerenciar os usuários."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Somente o proprietário do telefone pode gerenciar os usuários."</string>
@@ -3150,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Voltar"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Próxima"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Concluir"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Tirar uma foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Escolher uma imagem"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Selecionar foto"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Chips"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Chips"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 3b98612..cc2ebdd 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Endereço MAC do dispositivo"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Endereço MAC aleatório"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Endereço IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detalhes da rede"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Máscara de sub-rede"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Introduza um endereço de gateway válido."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Introduza um endereço DNS válido."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Introduza um prefixo de rede com 0-32 caracteres."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (exceto se substituído por DNS privado)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (exceto se substituído por DNS privado)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Compr. do prefixo de rede"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Não configurado – Perfil de trabalho"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrador"</string>
     <string name="user_you" msgid="3070562015202859996">"O utilizador (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Pseudónimo"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"É possível adicionar até <xliff:g id="USER_COUNT">%1$d</xliff:g> utilizadores"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"A gestão dos utilizadores só pode ser feita pelo proprietário do tablet."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"A gestão dos utilizadores só pode ser feita pelo proprietário do telemóvel."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Anterior"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Seguinte"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Terminar"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Tirar uma foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Escolher uma imagem"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Selecionar foto"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Cartões SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Cartões SIM"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index d67de1e..96f13a4 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Endereço MAC do dispositivo"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Endereço MAC randomizado"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Endereço IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detalhes da rede"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Máscara de sub-rede"</string>
@@ -3030,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Não configurado - perfil de trabalho"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrador"</string>
     <string name="user_you" msgid="3070562015202859996">"Você (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Apelido"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"É possível adicionar até <xliff:g id="USER_COUNT">%1$d</xliff:g> usuários"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Somente o proprietário do tablet pode gerenciar os usuários."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Somente o proprietário do telefone pode gerenciar os usuários."</string>
@@ -3150,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Voltar"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Próxima"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Concluir"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Tirar uma foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Escolher uma imagem"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Selecionar foto"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Chips"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Chips"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 47d01a1..7d71169 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -1033,6 +1033,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Adresa MAC a dispozitivului"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Adresă MAC aleatorie"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Adresă IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detalii rețea"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Mască de subrețea"</string>
@@ -1050,10 +1052,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Introduceți o adresă gateway validă."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Introduceți o adresă DNS validă."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Introduceți prefix rețea din 0 – 32 caractere."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (dacă nu este înlocuit de un DNS privat)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (dacă nu este înlocuit de un DNS privat)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lungime prefix rețea"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3075,7 +3075,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Neconfigurat – Profil de serviciu"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrator"</string>
     <string name="user_you" msgid="3070562015202859996">"Dvs. (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Pseudonim"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Puteți adăuga până la <xliff:g id="USER_COUNT">%1$d</xliff:g>   utilizatori"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Numai proprietarul tabletei poate gestiona utilizatorii."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Numai proprietarul telefonului poate gestiona utilizatorii."</string>
@@ -3195,9 +3194,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Înapoi"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Înainte"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Finalizați"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Faceți o fotografie"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Alegeți o imagine"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Selectați o fotografie"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Carduri SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Carduri SIM"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 7b35b62..a7fc29e 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -1053,6 +1053,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC-адрес устройства"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Случайный MAC-адрес"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-адрес"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Сведения о сети"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Маска подсети"</string>
@@ -1070,10 +1072,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Введите действительный адрес шлюза."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Введите действительный DNS-адрес."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Укажите длину префикса сети (от 0 до 32)."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (если не переопределен частным DNS-сервером)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (если не переопределен частным DNS-сервером)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Шлюз"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Длина префикса сети"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3118,7 +3118,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Рабочий профиль не настроен"</string>
     <string name="user_admin" msgid="4024553191395768119">"Администратор"</string>
     <string name="user_you" msgid="3070562015202859996">"Вы (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Псевдоним"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Вы можете добавить до <xliff:g id="USER_COUNT">%1$d</xliff:g> пользователей"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Только владелец может настроить устройство для других пользователей."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Только владелец может настроить устройство для других пользователей."</string>
@@ -3238,9 +3237,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Назад"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Далее"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Готово"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Сделать снимок"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Выбрать фото"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Выбрать фото."</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-карты"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-карты"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 14d7c1a..a9b4279 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"උපාංග MAC ලිපිනය"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"සසම්භාවී MAC ලිපිනය"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP ලිපිනය"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"ජාල විස්තර"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"සබ්නෙට් මාස්ක්"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"වලංගු වාහල ලිපිනයක් ටයිප් කරන්න."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"වලංගු DNS ලිපිනයක් ටයිප් කරන්න."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 ත් 32 අතර දිගින් යුත් ජාල උපසර්ගයක් ටයිප් කරන්න."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (පුද්ගලික DNS මගින් ප්‍රතික්ෂේප කරන්නේ නම් මිස)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (පුද්ගලික DNS මගින් ප්‍රතික්ෂේප කරන්නේ නම් මිස)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"වාහල"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"ජාල උපසර්ගයේ දිග"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"සකස් කර නොමැත - වැඩකරන පැතිකඩ"</string>
     <string name="user_admin" msgid="4024553191395768119">"පරිපාලක"</string>
     <string name="user_you" msgid="3070562015202859996">"ඔබ (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"අපනාමය"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"ඔබට පරිශීලකයන් <xliff:g id="USER_COUNT">%1$d</xliff:g> ක් දක්වා එක් කළ හැකිය"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"ටැබ්ලටයේ හිමිකරුට පමණක් පරිශීලකයින් කළමනාකරණය කළ හැක."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"දුරකථනයේ හිමිකරුට පමණක් පරිශීලකයින් කළමනාකරණය කළ හැක."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"ආපසු"</string>
     <string name="wizard_next" msgid="3884832431439072471">"මීලඟ"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"අවසන් කරන්න"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ඡායාරූපයක් ගන්න"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"රූපයක් තෝරන්න"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ඡායාරූපය තෝරන්න"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM කාඩ් පත්"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM කාඩ් පත්"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 0d77bb6..49bbde4 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -1053,6 +1053,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Adresa MAC zariadenia"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Randomizovaná adresa MAC"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Adresa IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Podrobnosti siete"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Maska podsiete"</string>
@@ -1070,10 +1072,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Zadajte platnú adresu brány."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Zadajte platnú adresu DNS."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Zadajte dĺžku sieťovej predpony v rozsahu 0 až 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"1. systém DNS (pokiaľ nie je prepísaný súkromným)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"2. systém DNS (pokiaľ nie je prepísaný súkromným)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Brána"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Dĺžka sieťovej predpony"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3118,7 +3118,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Pracovný profil (nie je nastavený)"</string>
     <string name="user_admin" msgid="4024553191395768119">"Správca"</string>
     <string name="user_you" msgid="3070562015202859996">"Vy (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Prezývka"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Môžete pridať až <xliff:g id="USER_COUNT">%1$d</xliff:g> používateľov"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Používateľov môže spravovať iba vlastník tabletu."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Používateľov môže spravovať iba vlastník telefónu."</string>
@@ -3238,9 +3237,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Späť"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Ďalej"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Dokončiť"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Odfotiť"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Vybrať obrázok"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Vybrať fotku"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM karty"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM karty"</string>
@@ -3982,7 +3978,7 @@
     <string name="screen_pinning_unlock_pin" msgid="8716638956097417023">"Pred odopnutím požiadať o PIN"</string>
     <string name="screen_pinning_unlock_password" msgid="4957969621904790573">"Pred uvoľnením požiadať o heslo"</string>
     <string name="screen_pinning_unlock_none" msgid="2474959642431856316">"Pri odopnutí zamknúť zariadenie"</string>
-    <string name="confirm_sim_deletion_title" msgid="9199369003530237871">"Potvrdenie odstránenia SIM karty"</string>
+    <string name="confirm_sim_deletion_title" msgid="9199369003530237871">"Potvrdiť odstránenie SIM karty"</string>
     <string name="confirm_sim_deletion_description" msgid="8937609409607338516">"Pred vymazaním stiahnutej SIM karty overiť, že ste to vy"</string>
     <string name="opening_paragraph_delete_profile_unknown_company" msgid="2951348192319498135">"Tento pracovný profil spravuje aplikácia:"</string>
     <string name="managing_admin" msgid="2633920317425356619">"Spravované aplikáciou <xliff:g id="ADMIN_APP_LABEL">%s</xliff:g>"</string>
@@ -4963,7 +4959,7 @@
     <string name="mobile_network_sim_name_label" msgid="1452440641628369625">"Názov"</string>
     <string name="mobile_network_sim_color_label" msgid="5293944087609632340">"Farba (používajú kompatibilné aplikácie)"</string>
     <string name="mobile_network_sim_name_rename" msgid="5967588549571582924">"Uložiť"</string>
-    <string name="mobile_network_use_sim_on" msgid="7298332437547707908">"Použiť SIM"</string>
+    <string name="mobile_network_use_sim_on" msgid="7298332437547707908">"Používať SIM kartu"</string>
     <string name="mobile_network_use_sim_off" msgid="6303281166199670639">"Vypnuté"</string>
     <string name="mobile_network_disable_sim_explanation" msgid="2851862257846773796">"Ak chcete túto SIM kartu deaktivovať, odstráňte ju"</string>
     <string name="mobile_network_tap_to_activate" msgid="4139979375717958102">"Klepnutím aktivujete operátora <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 3d6da40..7b29526 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -1053,6 +1053,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Naslov MAC naprave"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Naključno izbran naslov MAC"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Naslov IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"O omrežju"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Maska podomrežja"</string>
@@ -1070,10 +1072,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Vnesite veljaven naslov prehoda."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Vnesite veljaven naslov DNS."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Vnesite predpono omrežja, dolgo med 0 in 32 znaki."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (razen v primeru preglasitve z zasebnim strežnikom DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (razen v primeru preglasitve z zasebnim strežnikom DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Prehod"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Dolžina predpone omrežja"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3118,7 +3118,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Ni nastavljeno – delovni profil"</string>
     <string name="user_admin" msgid="4024553191395768119">"Skrbnik"</string>
     <string name="user_you" msgid="3070562015202859996">"Vi (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Vzdevek"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Dodate lahko do toliko uporabnikov: <xliff:g id="USER_COUNT">%1$d</xliff:g>"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Uporabnike lahko upravlja samo lastnik tabličnega računalnika."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Uporabnike lahko upravlja samo lastnik telefona."</string>
@@ -3238,9 +3237,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Nazaj"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Naprej"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Dokončaj"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Fotografiranje"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Izbira slike"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Izberite fotografijo"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Kartici SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Kartice SIM"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index d919858..db9f1a8 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Adresa MAC e pajisjes"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Adresa MAC e rastësishme"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Adresa e IP-së"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Detajet e rrjetit"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Maska e nënrrjetit"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Shkruaj një adresë të vlefshme porte kalimi."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Shkruaj një adresë të vlefshme DNS-je."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Shkruaj një gjatësi prefiksi rrjeti mes 0 dhe 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (përveçse nëse është anuluar nga DNS-ja private)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (përveçse nëse është anuluar nga DNS-ja private)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Porta e kalimit"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Gjatësia e prefiksit të rrjetit"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Nuk është konfiguruar - profili i punës"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrator"</string>
     <string name="user_you" msgid="3070562015202859996">"Ti (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Pseudonimi"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Mund të shtosh deri në <xliff:g id="USER_COUNT">%1$d</xliff:g> përdorues"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Vetëm zotëruesi i tabletit mund t\'i menaxhojë përdoruesit."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Vetëm zotëruesi i telefonit mund t\'i menaxhojë përdoruesit."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Prapa"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Përpara"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Përfundo"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Bëj një fotografi"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Zgjidh një imazh"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Zgjidh një fotografi"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Kartat SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Kartat SIM"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 68871c2..df90e34 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -1033,6 +1033,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC адреса уређаја"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Насумична MAC адреса"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP адреса"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Детаљи о мрежи"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Маска подмреже"</string>
@@ -1050,10 +1052,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Унесите важећу адресу мрежног пролаза."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Унесите важећу DNS адресу."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Унесите префикс мреже дужине између 0 и 32 знака."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (осим ако га не замени приватни DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (осим ако га не замени приватни DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Мрежни пролаз"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Дужина префикса мреже"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3075,7 +3075,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Није подешено – пословни профил"</string>
     <string name="user_admin" msgid="4024553191395768119">"Администратор"</string>
     <string name="user_you" msgid="3070562015202859996">"Ви (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Надимак"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Можете да додате највише <xliff:g id="USER_COUNT">%1$d</xliff:g> корисника"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Само власник таблета може да управља корисницима."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Само власник телефона може да управља корисницима."</string>
@@ -3195,9 +3194,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Назад"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Даље"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Заврши"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Сликајте"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Одаберите слику"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Изаберите слику"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM картице"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM картице"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 888b62f..e7867c1 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Enhetens MAC-adress"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Slumpgenererad MAC-adress"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP-adress"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Nätverksinformation"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Nätmask"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Ange en giltig gateway-adress."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Ange en giltig DNS-adress."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Ange en nätverksprefixlängd mellan 0 och 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (om det inte åsidosätts av Privat DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (om det inte åsidosätts av Privat DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Nätverksprefixets längd"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Inte konfigurerad – jobbprofil"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administratör"</string>
     <string name="user_you" msgid="3070562015202859996">"Du (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Smeknamn"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Du kan lägga till upp till <xliff:g id="USER_COUNT">%1$d</xliff:g> användare"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Det är bara surfplattans ägare som kan hantera användare."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Det är bara mobilens ägare som kan hantera användare."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Föregående"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Nästa"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Slutför"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Ta ett foto"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Välj en bild"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Välj en bild"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-kort"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-kort"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 63f5f93..41bccec 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Anwani ya MAC ya kifaa"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Anwani ya MAC kwa nasibu"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Anwani ya IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Maelezo ya mtandao"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Mfano wa kijimtandao"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Tafadhali charaza anwani halali ya lango."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Tafadhali charaza anwani halali ya DNS."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Andika urefu wa kiambishi awali cha mtandao kati ya 0 na 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS ya kwanza (isipokuwa ikibatilishwa na DNS ya Faragha)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS ya pili (isipokuwa ikibatilishwa na DNS ya Faragha)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Lango"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Urefu wa kiambishi awali cha mtandao"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Moja kwa moja"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Haujasanidiwa - Wasifu wa kazini"</string>
     <string name="user_admin" msgid="4024553191395768119">"Msimamizi"</string>
     <string name="user_you" msgid="3070562015202859996">"Wewe (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Jina la utani"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Unaweza kuongeza hadi watumiaji <xliff:g id="USER_COUNT">%1$d</xliff:g>"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Mmiliki wa kompyuta kibao pekee ndiye anayeweza kudhibiti watumiaji."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Mmiliki wa simu pekee ndiye anayeweza kudhibiti watumiaji."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Nyuma"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Endelea"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Kamilisha"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Piga picha"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Chagua picha"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Chagua picha"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM kadi"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM kadi"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index f94f133..ff0d0cf 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"சாதனத்தின் MAC முகவரி"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"ரேண்டம் ஆக்கப்பட்ட MAC முகவரி"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP முகவரி"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"நெட்வொர்க் விவரங்கள்"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"சப்நெட் மாஸ்க்"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"சரியான கேட்வே முகவரியை உள்ளிடவும்."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"சரியான DNS முகவரியை உள்ளிடவும்."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 மற்றும் 32 க்கு இடையிலான நெட்வொர்க் முன் நீளத்தை உள்ளிடவும்."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (தனிப்பட்ட DNS மீறிச் செயல்படாத வரை)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (தனிப்பட்ட DNS மீறிச் செயல்படாத வரை)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"கேட்வே"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"நெட்வொர்க் முன்னொட்டு நீளம்"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"வைஃபை டைரக்ட்"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"பணிக் கணக்கு அமைக்கப்படவில்லை"</string>
     <string name="user_admin" msgid="4024553191395768119">"நிர்வாகி"</string>
     <string name="user_you" msgid="3070562015202859996">"நீங்கள் (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"செல்லப்பெயர்"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"<xliff:g id="USER_COUNT">%1$d</xliff:g> பயனர்கள் வரை சேர்க்கலாம்"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"டேப்லெட்டின் உரிமையாளர் மட்டுமே பயனர்களை நிர்வகிக்க முடியும்."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"தொலைபேசியின் உரிமையாளர் மட்டுமே பயனர்களை நிர்வகிக்க முடியும்."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"பின் செல்"</string>
     <string name="wizard_next" msgid="3884832431439072471">"அடுத்து"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"முடி"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"படமெடு"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"படத்தைத் தேர்வுசெய்க"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"படத்தைத் தேர்வுசெய்க"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"சிம் கார்டுகள்"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"சிம் கார்டுகள்"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index b0553b1..4aad039 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"డివైజ్ యొక్క MAC చిరునామా"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"ర్యాండ‌మ్‌గా రూపొందించిన MAC అడ్రస్‌"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP చిరునామా"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"నెట్‌వర్క్ వివరాలు"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"సబ్‌నెట్ మాస్క్"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"చెల్లుబాటు అయ్యే గేట్‌వే చిరునామాను టైప్ చేయండి."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"చెల్లుబాటు అయ్యే DNS చిరునామాను టైప్ చేయండి."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"నెట్‌వర్క్ ఆదిప్రత్యయ పొడవు 0 మరియు 32 మధ్య ఉండేలా టైప్ చేయండి."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (ప్రైవేట్ DNS ద్వారా ఓవర్‌రైడ్ చేయబడనంతవరకు)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (ప్రైవేట్ DNS ద్వారా ఓవర్‌రైడ్ చేయబడనంతవరకు)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"గేట్‌వే"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"నెట్‌వర్క్ ప్రిఫిక్స్ పొడవు"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"సెటప్ చేయలేదు - కార్యాలయ ప్రొఫైల్"</string>
     <string name="user_admin" msgid="4024553191395768119">"నిర్వాహకుడు"</string>
     <string name="user_you" msgid="3070562015202859996">"మీరు (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"మారుపేరు"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"మీరు గరిష్టంగా <xliff:g id="USER_COUNT">%1$d</xliff:g> మంది వినియోగదారులను జోడించవచ్చు"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"టాబ్లెట్ యజమాని మాత్రమే వినియోగదారులను నిర్వహించగలరు."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"ఫోన్ యజమాని మాత్రమే వినియోగదారులను నిర్వహించగలరు."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"వెనుకకు"</string>
     <string name="wizard_next" msgid="3884832431439072471">"తర్వాత"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"ముగించు"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ఫోటోను తీయి"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"చిత్రాన్ని ఎంచుకోండి"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"ఫోటోను ఎంచుకోండి"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"సిమ్ కార్డులు"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"సిమ్ కార్డులు"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 9956acd..e126d54 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"ที่อยู่ MAC ของอุปกรณ์"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"ที่อยู่ MAC แบบสุ่ม"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"ที่อยู่ IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"รายละเอียดเครือข่าย"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"ซับเน็ตมาสก์"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"พิมพ์ที่อยู่เกตเวย์ที่ถูกต้อง"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"พิมพ์ที่อยู่ DNS ที่ถูกต้อง"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"พิมพ์รหัสนำหน้าเครือข่ายซึ่งยาว 0 ถึง 32 อักขระ"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (หาก DNS ส่วนตัวไม่ลบล้าง)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (หาก DNS ส่วนตัวไม่ลบล้าง)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"เกตเวย์"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"ความยาวรหัสนำเครือข่าย"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"ไม่ได้ตั้งค่า - โปรไฟล์งาน"</string>
     <string name="user_admin" msgid="4024553191395768119">"ผู้ดูแลระบบ"</string>
     <string name="user_you" msgid="3070562015202859996">"คุณ (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"ชื่อเล่น"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"คุณสามารถเพิ่มผู้ใช้ได้สูงสุดถึง <xliff:g id="USER_COUNT">%1$d</xliff:g> คน"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"เฉพาะเจ้าของแท็บเล็ตเท่านั้นที่สามารถจัดการผู้ใช้ได้"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"เฉพาะเจ้าของโทรศัพท์เท่านั้นที่สามารถจัดการผู้ใช้ได้"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"ย้อนกลับ"</string>
     <string name="wizard_next" msgid="3884832431439072471">"ถัดไป"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"เสร็จสิ้น"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ถ่ายรูป"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"เลือกรูปภาพ"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"เลือกรูปภาพ"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"ซิมการ์ด"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"ซิมการ์ด"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index c9fa4d6..e27070d 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Device MAC address"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Naka-randomize na MAC address"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP address"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Mga detalye ng network"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Subnet mask"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Mag-type ng isang wastong gateway address."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Mag-type ng wastong DNS address."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Mag-type haba ng network prefix pagitan 0 at 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (maliban na lang kung mao-override ng Pribadong DNS)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (maliban na lang kung mao-override ng Pribadong DNS)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Haba ng prefix ng network"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Hindi naka-set up - Profile sa trabaho"</string>
     <string name="user_admin" msgid="4024553191395768119">"Admin"</string>
     <string name="user_you" msgid="3070562015202859996">"Ikaw (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Palayaw"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Maaari kang magdagdag ng hanggang <xliff:g id="USER_COUNT">%1$d</xliff:g> (na) user"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Ang may-ari lang ng tablet ang maaaring mamahala ng mga user."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Ang may-ari lang ng telepono ang maaaring mamahala ng mga user."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Bumalik"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Susunod"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Tapusin"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Kumuha ng larawan"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Pumili ng larawan"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Pumili ng larawan"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Mga SIM card"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Mga SIM card"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 145d92c..1068b79 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Cihaz MAC adresi"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Rastgele MAC adresi"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP adresi"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Ağ ayrıntıları"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Alt ağ maskesi"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Geçerli bir ağ geçidi adresi yazın."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Geçerli bir DNS adresi yazın."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 ile 32 arasında bir ağ önek uzunluğu yazın."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (Gizli DNS tarafından geçersiz kılınmadığı sürece)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (Gizli DNS tarafından geçersiz kılınmadığı sürece)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Ağ geçidi"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Ağ önek uzunluğu"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Kablosuz Doğrudan Bağlantı"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Yapılandrılmadı - İş profili"</string>
     <string name="user_admin" msgid="4024553191395768119">"Yönetici"</string>
     <string name="user_you" msgid="3070562015202859996">"Siz (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Takma Ad"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"<xliff:g id="USER_COUNT">%1$d</xliff:g> kişiye kadar kullanıcı ekleyebilirsiniz"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Yalnızca tabletin sahibi kullanıcıları yönetebilir."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Yalnızca telefonun sahibi kullanıcıları yönetebilir."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Geri"</string>
     <string name="wizard_next" msgid="3884832431439072471">"İleri"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Son"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Fotoğraf çek"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Resim seç"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Fotoğraf seçin"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM kartlar"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM kartlar"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 04b9b7c..66aea51 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -1053,6 +1053,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"MAC-адреса пристрою"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Довільна MAC-адреса"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"ІР-адреса"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Деталі мережі"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Маска підмережі"</string>
@@ -1070,10 +1072,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Введіть дійсну адресу шлюзу."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Введіть дійсну DNS-адресу."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Введіть довжину префікса мережі від 0 до 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (якщо не замінено приватним DNS-сервером)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (якщо не замінено приватним DNS-сервером)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Шлюз"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Довжина префіксу мережі"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3118,7 +3118,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Робочий профіль не налаштовано"</string>
     <string name="user_admin" msgid="4024553191395768119">"Адміністратор"</string>
     <string name="user_you" msgid="3070562015202859996">"Ви (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Псевдонім"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Можна додати максимум стільки користувачів: <xliff:g id="USER_COUNT">%1$d</xliff:g>"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Лише власник планшетного ПК може керувати користувачами."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Лише власник телефону може керувати користувачами."</string>
@@ -3238,9 +3237,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Назад"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Далі"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Завершити"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Зробити фото"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Вибрати зображення"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Вибрати фото"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM-карти"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM-карти"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 94d2362..e2f6070 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"‏آلہ کا MAC پتہ"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"‏بے ترتیب MAC پتہ"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"‏IP پتہ"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"نیٹ ورک کی تفصیلات"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"سب نیٹ ماسک"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"ایک درست گیٹ وے پتہ ٹائپ کریں۔"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"‏ایک درست DNS پتہ ٹائپ کریں۔"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 اور 32 کے طوالت کے درمیان ایک نیٹ ورک سابقہ ٹائپ کریں۔"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"‏DNS ‫1 (جب تک نجی DNS نے اوور رائیڈ نہ کیا ہو)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"‏DNS ‫2 (جب تک نجی DNS نے اوور رائیڈ نہ کیا ہو)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"گیٹ وے"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"نیٹ ورک کے سابقہ کی لمبائی"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"‏Wi-Fi ڈائریکٹ"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"ترتیب نہیں دیا گیا - دفتری پروفائل"</string>
     <string name="user_admin" msgid="4024553191395768119">"منتظم"</string>
     <string name="user_you" msgid="3070562015202859996">"آپ (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"عرفی نام"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"آپ <xliff:g id="USER_COUNT">%1$d</xliff:g> تک صارفین شامل کر سکتے ہیں"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"صرف ٹیبلٹ کا مالک صارفین کا نظم کر سکتا ہے۔"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"صرف فون کا مالک صارفین کا نظم کر سکتا ہے۔"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"واپس جائیں"</string>
     <string name="wizard_next" msgid="3884832431439072471">"اگلا"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"مکمل کریں"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"ایک تصویر لیں"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"ایک تصویر منتخب کریں"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"تصویر منتخب کریں"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"‏SIM کارڈز"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"‏SIM کارڈز"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 02428a8..7c85449 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"Tarmoq nomi (SSID)"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Qurilmaning MAC manzili"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Tasodifiy MAC manzil"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP manzil"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Tarmoq tafsilotlari"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Quyi tarmoq niqobi"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Shlyuz manzilini to‘g‘ri kiriting."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"DNS manzilini to‘g‘ri kiriting."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Tarmoq raqamlari sig‘imini 0 va 32 oralig‘ida tering."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (shaxsiy DNS server bilan almashtirilmasa)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (shaxsiy DNS server bilan almashtirilmasa)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Shlyuz"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Tarmoq prefiksi uzunligi"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Ish profili – sozlanmagan"</string>
     <string name="user_admin" msgid="4024553191395768119">"Administrator"</string>
     <string name="user_you" msgid="3070562015202859996">"Siz (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Nik nomi"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"<xliff:g id="USER_COUNT">%1$d</xliff:g> tagacha foydalanuvchi qo‘shish mumkin"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Faqat planshetning egasi foydalanuvchilarni boshqara oladi."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Faqat telefonning egasi foydalanuvchilarni boshqara oladi."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Orqaga"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Keyingisi"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Yakunlash"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Suratga olish"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Rasm tanlash"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Surat tanlash"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM kartalar"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM kartalar"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index d3be4ed..947a5be 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Địa chỉ MAC của thiết bị"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Địa chỉ MAC ngẫu nhiên"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Địa chỉ IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Chi tiết mạng"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Mặt nạ mạng con"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Hãy nhập địa chỉ cổng hợp lệ."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Hãy nhập địa chỉ DNS hợp lệ."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Hãy nhập độ dài tiền tố mạng từ 0 đến 32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (nếu không bị DNS riêng ghi đè)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (nếu không bị DNS riêng ghi đè)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Cổng"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Độ dài tiền tố mạng"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -2608,7 +2608,7 @@
     <string name="battery_saver_auto_title" msgid="6789753787070176144">"Tự động bật"</string>
     <string name="battery_saver_auto_no_schedule" msgid="5123639867350138893">"Chưa có lịch biểu nào"</string>
     <string name="battery_saver_auto_routine" msgid="4656495097900848608">"Dựa trên thói quen của bạn"</string>
-    <string name="battery_saver_auto_percentage" msgid="558533724806281980">"Dựa trên số phần trăm pin"</string>
+    <string name="battery_saver_auto_percentage" msgid="558533724806281980">"Dựa trên mức phần trăm pin"</string>
     <string name="battery_saver_auto_routine_summary" msgid="3913145448299472628">"Nếu pin có khả năng hết trước lần sạc thông thường tiếp theo, hệ thống sẽ bật Trình tiết kiệm pin."</string>
     <string name="battery_saver_auto_percentage_summary" msgid="6190884450723824287">"Sẽ bật khi pin ở mức <xliff:g id="PERCENT">%1$s</xliff:g>"</string>
     <string name="battery_saver_schedule_settings_title" msgid="3688019979950082237">"Đặt lịch biểu"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Chưa thiết lập - Hồ sơ công việc"</string>
     <string name="user_admin" msgid="4024553191395768119">"Quản trị viên"</string>
     <string name="user_you" msgid="3070562015202859996">"Bạn (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Biệt hiệu"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Bạn có thể thêm tối đa <xliff:g id="USER_COUNT">%1$d</xliff:g> người dùng"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Chỉ chủ sở hữu máy tính bảng mới có thể quản lý người dùng."</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Chỉ chủ sở hữu điện thoại mới có thể quản lý người dùng."</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Quay lại"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Tiếp theo"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Hoàn tất"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Chụp ảnh"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Chọn hình ảnh"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Chọn ảnh"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Thẻ SIM"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Thẻ SIM"</string>
@@ -4776,7 +4772,7 @@
     <string name="mobile_data_settings_summary_auto_switch" msgid="7851549787645698945">"Điện thoại sẽ tự động chuyển sang nhà mạng này khi nằm trong vùng phủ sóng"</string>
     <string name="mobile_data_settings_summary_unavailable" msgid="3309106501029928951">"Không có thẻ SIM nào"</string>
     <string name="calls_preference" msgid="2166481296066890129">"Tùy chọn cuộc gọi"</string>
-    <string name="sms_preference" msgid="7742964962568219351">"Tùy chọn SMS"</string>
+    <string name="sms_preference" msgid="7742964962568219351">"Tùy chọn cho SMS"</string>
     <string name="calls_and_sms_ask_every_time" msgid="3178743088737726677">"Luôn hỏi"</string>
     <string name="mobile_network_summary_add_a_network" msgid="9079866102827526779">"Thêm mạng"</string>
     <plurals name="mobile_network_summary_count" formatted="false" msgid="5173633860800230925">
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index bd296d1..0d04ede 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"设备 MAC 地址"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"随机生成的 MAC 地址"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP 地址"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"网络详情"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"子网掩码"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"请键入有效的网关地址。"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"请输入有效的DNS地址。"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"键入长度在 0 到 32 之间的网络前缀。"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1（除非已被专用 DNS 替换）"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2（除非已被专用 DNS 替换）"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"网关"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"网络前缀长度"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"WLAN 直连"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"未设置 - 工作资料"</string>
     <string name="user_admin" msgid="4024553191395768119">"管理员"</string>
     <string name="user_you" msgid="3070562015202859996">"您（<xliff:g id="NAME">%s</xliff:g>）"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"昵称"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"您最多可添加 <xliff:g id="USER_COUNT">%1$d</xliff:g> 位用户"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"只有平板电脑的机主可以管理用户。"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"只有手机的机主可以管理用户。"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"返回"</string>
     <string name="wizard_next" msgid="3884832431439072471">"下一步"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"完成"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"拍照"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"选择图片"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"选择照片"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM 卡"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM 卡"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 7ed7ae2..b008879 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"裝置 MAC 位址"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"隨機 MAC 位址"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP 位址"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"網絡詳細資料"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"子網絡遮罩"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"請輸入有效的閘道位址。"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"請輸入有效的 DNS 位址。"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"請輸入介乎 0 至 32 之間的網絡首碼長度。"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (除非由私人 DNS 覆寫)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (除非由私人 DNS 覆寫)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"閘道"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"網絡前置字元長度"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3033,7 +3033,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"尚未設定 - 公司檔案"</string>
     <string name="user_admin" msgid="4024553191395768119">"管理員"</string>
     <string name="user_you" msgid="3070562015202859996">"您 (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"暱稱"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"您可以加入多達 <xliff:g id="USER_COUNT">%1$d</xliff:g> 個用戶"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"只有平板電腦的擁有者可以管理使用者。"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"只有手機的擁有者可以管理使用者。"</string>
@@ -3153,9 +3152,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"返回"</string>
     <string name="wizard_next" msgid="3884832431439072471">"下一步"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"完成"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"拍攝相片"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"選擇圖片"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"選取相片"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM 卡"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM 卡"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 8e8c56a..491eae5 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"裝置的 MAC 位址"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"隨機化 MAC 位址"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"IP 位址"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"網路詳細資料"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"子網路遮罩"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"輸入有效的閘道位址。"</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"請輸入有效的 DNS 位址。"</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"輸入長度介於 0 到 32 之間的網路前置碼。"</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (除非由私人 DNS 覆寫)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (除非由私人 DNS 覆寫)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"閘道"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"網路前置碼長度"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -3032,7 +3032,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"尚未設定 - 工作設定檔"</string>
     <string name="user_admin" msgid="4024553191395768119">"管理員"</string>
     <string name="user_you" msgid="3070562015202859996">"你 (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"暱稱"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"你最多可新增 <xliff:g id="USER_COUNT">%1$d</xliff:g> 位使用者"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"只有平板電腦的擁有者可以管理使用者。"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"只有手機的擁有者可以管理使用者。"</string>
@@ -3152,9 +3151,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"返回"</string>
     <string name="wizard_next" msgid="3884832431439072471">"下一步"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"完成"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"拍照"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"選擇圖片"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"選取相片"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"SIM 卡"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"SIM 卡"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index b7a5d11..427492c 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -1013,6 +1013,8 @@
     <string name="wifi_advanced_ssid_title" msgid="1561437650193980185">"I-SSID"</string>
     <string name="wifi_advanced_device_mac_address_title" msgid="6155800851233164411">"Ikheli le-MAC ledivayisi"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="3930671320234553088">"Ikheli le-MAC elingahleliwe"</string>
+    <!-- no translation found for wifi_advanced_randomized_mac_address_disconnected_title (2755843130417523727) -->
+    <skip />
     <string name="wifi_advanced_ip_address_title" msgid="4265355419782184514">"Ikheli le-IP"</string>
     <string name="wifi_details_title" msgid="222735438574597493">"Imininingwane yenethiwekhi"</string>
     <string name="wifi_details_subnet_mask" msgid="1619151769276260512">"Imaski ye-subnet"</string>
@@ -1030,10 +1032,8 @@
     <string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Sicela uthayiphe ikheli le-IP elilungile."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Sicela uthayiphe ikheli le-IP elilungile."</string>
     <string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Sicela uthayiphe ubude bephrifiksi yenethiwekhi phakathi kuka-0 no-32."</string>
-    <!-- no translation found for wifi_dns1 (6764769531843748514) -->
-    <skip />
-    <!-- no translation found for wifi_dns2 (7273133202625326148) -->
-    <skip />
+    <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (ngaphandle kwalapho uma ikhishwe yi-DNS Eyimfihlo)"</string>
+    <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (ngaphandle kwalapho uma ikhishwe yi-DNS Eyimfihlo)"</string>
     <string name="wifi_gateway" msgid="3699227808616416759">"Indlela yokuphuma"</string>
     <string name="wifi_network_prefix_length" msgid="1003365439352276622">"Ubude begama eliqalayo lenethiwekhi"</string>
     <string name="wifi_p2p_settings_title" msgid="1689918226469221870">"I-Wi-Fi eqondile"</string>
@@ -3033,7 +3033,6 @@
     <string name="user_summary_managed_profile_not_set_up" msgid="5739207307082458746">"Ayisethiwe - Iphrofayela yomsebenzi"</string>
     <string name="user_admin" msgid="4024553191395768119">"Mqondisi"</string>
     <string name="user_you" msgid="3070562015202859996">"Wena (<xliff:g id="NAME">%s</xliff:g>)"</string>
-    <string name="user_nickname" msgid="3763630194459958977">"Isidlaliso"</string>
     <string name="user_add_max_count" msgid="5739771048517070983">"Ungangeza kufikela kubasebenzisi abangu-<xliff:g id="USER_COUNT">%1$d</xliff:g>"</string>
     <string name="user_cannot_manage_message" product="tablet" msgid="3405022988077682357">"Umnikazi wethebhulethi kuphela ongaphatha abasebenzisi"</string>
     <string name="user_cannot_manage_message" product="default" msgid="6434662649769855494">"Umnikazi wefoni kuphela ongaphatha abasebenzisi."</string>
@@ -3153,9 +3152,6 @@
     <string name="wizard_back" msgid="8257697435061870191">"Phindela emuva"</string>
     <string name="wizard_next" msgid="3884832431439072471">"Okulandelayo"</string>
     <string name="wizard_finish" msgid="4220258401946825946">"Qeda"</string>
-    <string name="user_image_take_photo" msgid="2601691481533190924">"Thatha isithombe"</string>
-    <string name="user_image_choose_photo" msgid="5904586923236027350">"Khetha isithombe"</string>
-    <string name="user_image_photo_selector" msgid="7727851029781491727">"Khetha isithombe"</string>
     <string name="regulatory_info_text" msgid="1154461023369976667"></string>
     <string name="sim_setup_wizard_title" msgid="3945520353564138219">"Imodi yokuthula"</string>
     <string name="sim_settings_title" msgid="8392862852842113531">"Amakhadi we-SIM"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f6c69d3..8bd7907 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2268,6 +2268,8 @@
     <string name="wifi_advanced_device_mac_address_title">Device MAC address</string>
     <!-- Wi-Fi settings screen, advanced, title of the item to show the randomized Wi-Fi MAC address. [CHAR LIMIT=50] -->
     <string name="wifi_advanced_randomized_mac_address_title">Randomized MAC address</string>
+    <!-- Wi-Fi settings screen, advanced, title of the item to show the randomized Wi-Fi MAC address when disconnected. [CHAR LIMIT=50] -->
+    <string name="wifi_advanced_randomized_mac_address_disconnected_title">Randomized MAC address (last used)</string>
     <!-- Title of the screen to adjust IP settings -->
     <!-- Wi-Fi settings screen, advanced, title of the item to show the Wi-Fi device's current IP address. -->
     <string name="wifi_advanced_ip_address_title">IP address</string>
@@ -11929,6 +11931,20 @@
     <!-- Body text of error message indicating the device could not disable the mobile network, due to an unknown issue. [CHAR LIMIT=NONE] -->
     <string name="privileged_action_disable_fail_text">Something went wrong and your carrier could not be disabled.</string>
 
+    <!-- Strings for deleting eUICC subscriptions dialog activity -->
+    <!-- Title on confirmation dialog asking the user if they want to erase the downloaded SIM from the device. [CHAR_LIMIT=NONE] -->
+    <string name="erase_sim_dialog_title">Erase this downloaded SIM?</string>
+    <!-- Body text in confirmation dialog indicating what erasing a SIM entails. [CHAR_LIMIT=NONE] -->
+    <string name="erase_sim_dialog_text">Erasing this SIM removes <xliff:g id="carrier_name_a" example="Google Fi">%1$s</xliff:g> service from this device.\n\nService for <xliff:g id="carrier_name_b" example="Google Fi">%1$s</xliff:g> won\'t be canceled.</string>
+    <!-- Button label to erase the eSIM [CHAR_LIMIT=20] -->
+    <string name="erase_sim_confirm_button">Erase</string>
+    <!-- Status message indicating the device is in the process of erasing the SIM. [CHAR_LIMIT=NONE] -->
+    <string name="erasing_sim">Erasing SIM&#8230;</string>
+    <!-- Title of error message indicating the device could not erase the SIM. [CHAR_LIMIT=NONE] -->
+    <string name="erase_sim_fail_title">Can\'t erase SIM</string>
+    <!-- Body text of error message indicating the device could not erase the SIM due to an error. [CHAR_LIMIT=NONE] -->
+    <string name="erase_sim_fail_text">This SIM can\'t be erased due to an error.\n\nRestart your device and try again.</string>
+
     <!-- Title for Network connection request Dialog [CHAR LIMIT=60] -->
     <string name="network_connection_request_dialog_title">Connect to device</string>
     <!-- Summary for Network connection request Dialog [CHAR LIMIT=NONE] -->
diff --git a/res/xml/top_level_settings_grouped.xml b/res/xml/top_level_settings_grouped.xml
new file mode 100644
index 0000000..964c198
--- /dev/null
+++ b/res/xml/top_level_settings_grouped.xml
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2020 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:key="top_level_settings_grouped">
+
+    <PreferenceCategory
+        android:key="connectivity"
+        android:order="-120"
+        settings:allowDividerAbove="false">
+        <Preference
+            android:fragment="com.android.settings.network.NetworkDashboardFragment"
+            android:icon="@drawable/ic_homepage_network"
+            android:key="top_level_network"
+            android:order="-120"
+            android:summary="@string/summary_placeholder"
+            android:title="@string/network_dashboard_title"
+            settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/>
+
+        <Preference
+            android:fragment="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment"
+            android:icon="@drawable/ic_homepage_connected_device"
+            android:key="top_level_connected_devices"
+            android:order="-110"
+            android:summary="@string/summary_placeholder"
+            android:title="@string/connected_devices_dashboard_title"
+            settings:controller="com.android.settings.connecteddevice.TopLevelConnectedDevicesPreferenceController"/>
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="apps"
+        android:order="-100"
+        settings:allowDividerAbove="false">
+        <Preference
+            android:fragment="com.android.settings.applications.AppAndNotificationDashboardFragment"
+            android:icon="@drawable/ic_homepage_apps"
+            android:key="top_level_apps_and_notifs"
+            android:order="-100"
+            android:summary="@string/app_and_notification_dashboard_summary"
+            android:title="@string/app_and_notification_dashboard_title"/>
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="phone_essential"
+        android:order="-90"
+        settings:allowDividerAbove="false">
+        <Preference
+            android:fragment="com.android.settings.fuelgauge.PowerUsageSummary"
+            android:icon="@drawable/ic_homepage_battery"
+            android:key="top_level_battery"
+            android:order="-90"
+            android:summary="@string/summary_placeholder"
+            android:title="@string/power_usage_summary_title"
+            settings:controller="com.android.settings.fuelgauge.TopLevelBatteryPreferenceController"/>
+
+        <Preference
+            android:fragment="com.android.settings.deviceinfo.StorageSettings"
+            android:icon="@drawable/ic_homepage_storage"
+            android:key="top_level_storage"
+            android:order="-80"
+            android:summary="@string/summary_placeholder"
+            android:title="@string/storage_settings"
+            settings:controller="com.android.settings.deviceinfo.TopLevelStoragePreferenceController"/>
+
+        <Preference
+            android:fragment="com.android.settings.notification.SoundSettings"
+            android:icon="@drawable/ic_homepage_sound"
+            android:key="top_level_sound"
+            android:order="-70"
+            android:summary="@string/sound_dashboard_summary"
+            android:title="@string/sound_settings"/>
+
+        <Preference
+            android:fragment="com.android.settings.DisplaySettings"
+            android:icon="@drawable/ic_homepage_display"
+            android:key="top_level_display"
+            android:order="-60"
+            android:summary="@string/summary_placeholder"
+            android:title="@string/display_settings"
+            settings:controller="com.android.settings.display.TopLevelDisplayPreferenceController"/>
+
+        <Preference
+            android:fragment="com.android.settings.accessibility.AccessibilitySettings"
+            android:icon="@drawable/ic_homepage_accessibility"
+            android:key="top_level_accessibility"
+            android:order="-50"
+            android:summary="@string/accessibility_settings_summary"
+            android:title="@string/accessibility_settings"
+            settings:controller="com.android.settings.accessibility.TopLevelAccessibilityPreferenceController"/>
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="privacy_and_security"
+        android:order="-40"
+        settings:allowDividerAbove="false">
+        <Preference
+            android:fragment="com.android.settings.privacy.PrivacyDashboardFragment"
+            android:icon="@drawable/ic_homepage_privacy"
+            android:key="top_level_privacy"
+            android:order="-40"
+            android:summary="@string/privacy_dashboard_summary"
+            android:title="@string/privacy_dashboard_title"/>
+
+        <Preference
+            android:fragment="com.android.settings.location.LocationSettings"
+            android:icon="@drawable/ic_homepage_location"
+            android:key="top_level_location"
+            android:order="-30"
+            android:summary="@string/location_settings_loading_app_permission_stats"
+            android:title="@string/location_settings_title"
+            settings:controller="com.android.settings.location.TopLevelLocationPreferenceController"/>
+
+        <Preference
+            android:fragment="com.android.settings.security.SecuritySettings"
+            android:icon="@drawable/ic_homepage_security"
+            android:key="top_level_security"
+            android:order="-20"
+            android:summary="@string/summary_placeholder"
+            android:title="@string/security_settings_title"
+            settings:controller="com.android.settings.security.TopLevelSecurityEntryPreferenceController"/>
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="accounts"
+        android:order="-10"
+        settings:allowDividerAbove="false">
+        <Preference
+            android:fragment="com.android.settings.accounts.AccountDashboardFragment"
+            android:icon="@drawable/ic_homepage_accounts"
+            android:key="top_level_accounts"
+            android:order="-10"
+            android:summary="@string/summary_placeholder"
+            android:title="@string/account_dashboard_title"
+            settings:controller="com.android.settings.accounts.TopLevelAccountEntryPreferenceController"/>
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="system"
+        android:order="10"
+        settings:allowDividerAbove="false">
+        <Preference
+            android:fragment="com.android.settings.system.SystemDashboardFragment"
+            android:icon="@drawable/ic_homepage_system_dashboard"
+            android:key="top_level_system"
+            android:order="10"
+            android:summary="@string/system_dashboard_summary"
+            android:title="@string/header_category_system"/>
+
+        <Preference
+            android:fragment="com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment"
+            android:icon="@drawable/ic_homepage_about"
+            android:key="top_level_about_device"
+            android:order="20"
+            android:summary="@string/summary_placeholder"
+            android:title="@string/about_settings"
+            settings:controller="com.android.settings.deviceinfo.aboutphone.TopLevelAboutDevicePreferenceController"/>
+
+        <Preference
+            android:icon="@drawable/ic_homepage_support"
+            android:key="top_level_support"
+            android:order="100"
+            android:summary="@string/support_summary"
+            android:title="@string/page_tab_title_support"
+            settings:controller="com.android.settings.support.SupportPreferenceController"/>
+    </PreferenceCategory>
+
+</PreferenceScreen>
diff --git a/src/com/android/settings/accounts/AddAccountSettings.java b/src/com/android/settings/accounts/AddAccountSettings.java
index 81db4df..64bb201 100644
--- a/src/com/android/settings/accounts/AddAccountSettings.java
+++ b/src/com/android/settings/accounts/AddAccountSettings.java
@@ -247,8 +247,7 @@
         identityIntent.setAction(SHOULD_NOT_RESOLVE);
         identityIntent.addCategory(SHOULD_NOT_RESOLVE);
 
-        mPendingIntent = PendingIntent.getBroadcast(this, 0, identityIntent,
-                PendingIntent.FLAG_IMMUTABLE);
+        mPendingIntent = PendingIntent.getBroadcast(this, 0, identityIntent, 0);
         addAccountOptions.putParcelable(KEY_CALLER_IDENTITY, mPendingIntent);
         addAccountOptions.putBoolean(EXTRA_HAS_MULTIPLE_USERS, Utils.hasMultipleUsers(this));
         AccountManager.get(this).addAccountAsUser(
diff --git a/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java b/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
index 67c3650..5a4ee1f 100644
--- a/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
+++ b/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
@@ -129,13 +129,13 @@
     private static PendingIntent getPrimaryAction(Context context) {
         final Intent intent = getIntent(context);
         return PendingIntent.getActivity(context, 0 /* requestCode */,
-                intent, PendingIntent.FLAG_IMMUTABLE);
+                intent, 0 /* flags */);
     }
 
     private static PendingIntent getBroadcastIntent(Context context) {
         final Intent intent = new Intent(ACTION_BLUETOOTH_SLICE_CHANGED)
                 .setClass(context, SliceBroadcastReceiver.class);
         return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
+                PendingIntent.FLAG_UPDATE_CURRENT);
     }
 }
diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java
index 8a7f4bd..47a46f2 100644
--- a/src/com/android/settings/homepage/TopLevelSettings.java
+++ b/src/com/android/settings/homepage/TopLevelSettings.java
@@ -22,12 +22,15 @@
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.os.Bundle;
+import android.provider.SearchIndexableResource;
+import android.util.FeatureFlagUtils;
 
 import androidx.fragment.app.Fragment;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceFragmentCompat;
 
 import com.android.settings.R;
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
@@ -35,6 +38,9 @@
 import com.android.settingslib.core.instrumentation.Instrumentable;
 import com.android.settingslib.search.SearchIndexable;
 
+import java.util.Arrays;
+import java.util.List;
+
 @SearchIndexable(forTarget = MOBILE)
 public class TopLevelSettings extends DashboardFragment implements
         PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
@@ -50,6 +56,9 @@
 
     @Override
     protected int getPreferenceScreenResId() {
+        if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
+            return R.xml.top_level_settings_grouped;
+        }
         return R.xml.top_level_settings;
     }
 
@@ -100,7 +109,16 @@
     }
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider(R.xml.top_level_settings) {
+            new BaseSearchIndexProvider() {
+
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(
+                        Context context, boolean enabled) {
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = FeatureFlagUtils.isEnabled(context, FeatureFlags.SILKY_HOME)
+                            ? R.xml.top_level_settings_grouped : R.xml.top_level_settings;
+                    return Arrays.asList(sir);
+                }
 
                 @Override
                 protected boolean isPageSearchEnabled(Context context) {
diff --git a/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java b/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
index 6a5b300..d99d01e 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
@@ -163,8 +163,7 @@
 
     private PendingIntent getPrimaryAction() {
         final Intent intent = getIntent();
-        return PendingIntent.getActivity(mContext, 0  /* requestCode */, intent,
-                PendingIntent.FLAG_IMMUTABLE);
+        return PendingIntent.getActivity(mContext, 0  /* requestCode */, intent, 0  /* flags */);
     }
 
     private Slice buildBatteryGoodSlice(ListBuilder sliceBuilder, boolean isError) {
diff --git a/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java b/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java
index 576b435..2bc09e9 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java
@@ -116,8 +116,8 @@
 
     private RowBuilder buildRowBuilder(CharSequence title, String summary, IconCompat icon) {
         final SliceAction primarySliceAction = SliceAction.createDeeplink(
-                PendingIntent.getActivity(mContext, 0, getIntent(), PendingIntent.FLAG_IMMUTABLE),
-                icon, ListBuilder.ICON_IMAGE, title);
+                PendingIntent.getActivity(mContext, 0, getIntent(), 0), icon,
+                ListBuilder.ICON_IMAGE, title);
 
         return new RowBuilder()
                 .setTitleItem(icon, ListBuilder.ICON_IMAGE)
diff --git a/src/com/android/settings/location/LocationSlice.java b/src/com/android/settings/location/LocationSlice.java
index f8add12..2759690 100644
--- a/src/com/android/settings/location/LocationSlice.java
+++ b/src/com/android/settings/location/LocationSlice.java
@@ -96,6 +96,6 @@
     private PendingIntent getPrimaryAction() {
         final Intent intent = getIntent();
         return PendingIntent.getActivity(mContext, 0 /* requestCode */,
-                intent, PendingIntent.FLAG_IMMUTABLE);
+                intent, 0 /* flags */);
     }
 }
diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java
index ac21e12..e2c8997 100644
--- a/src/com/android/settings/network/SubscriptionUtil.java
+++ b/src/com/android/settings/network/SubscriptionUtil.java
@@ -31,12 +31,15 @@
 
 import androidx.annotation.VisibleForTesting;
 
+import com.android.settings.network.telephony.DeleteEuiccSubscriptionDialogActivity;
 import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 public class SubscriptionUtil {
     private static final String TAG = "SubscriptionUtil";
@@ -287,6 +290,11 @@
         context.startActivity(ToggleSubscriptionDialogActivity.getIntent(context, subId, enable));
     }
 
+    /** Starts a dialog activity to handle eSIM deletion. */
+    public static void startDeleteEuiccSubscriptionDialogActivity(Context context, int subId) {
+        context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId));
+    }
+
     /**
      * Finds and returns a subscription with a specific subscription ID.
      * @param subscriptionManager The ProxySubscriptionManager for accessing subscription
@@ -332,4 +340,33 @@
                 || subscriptionManager.canManageSubscription(info);
         return hasCarrierPrivilegePermission;
     }
+
+    /**
+     * Finds all the available subscriptions having the same group uuid as {@code subscriptionInfo}.
+     * @param subscriptionManager The SubscriptionManager for accessing subscription information
+     * @param subId The id of subscription
+     * @return a list of {@code SubscriptionInfo} which have the same group UUID.
+     */
+    public static List<SubscriptionInfo> findAllSubscriptionsInGroup(
+            SubscriptionManager subscriptionManager, int subId) {
+
+        SubscriptionInfo subscription = getSubById(subscriptionManager, subId);
+        if (subscription == null) {
+            return Collections.emptyList();
+        }
+        ParcelUuid groupUuid = subscription.getGroupUuid();
+        List<SubscriptionInfo> availableSubscriptions =
+                subscriptionManager.getAvailableSubscriptionInfoList();
+
+        if (availableSubscriptions == null
+                || availableSubscriptions.isEmpty()
+                || groupUuid == null) {
+            return Collections.singletonList(subscription);
+        }
+
+        return availableSubscriptions
+                .stream()
+                .filter(sub -> sub.isEmbedded() && groupUuid.equals(sub.getGroupUuid()))
+                .collect(Collectors.toList());
+    }
 }
diff --git a/src/com/android/settings/network/telephony/AlertDialogFragment.java b/src/com/android/settings/network/telephony/AlertDialogFragment.java
new file mode 100644
index 0000000..5940789
--- /dev/null
+++ b/src/com/android/settings/network/telephony/AlertDialogFragment.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2020 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 android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.text.TextUtils;
+
+/** Fragment to show an alert dialog which only has the positive button. */
+public class AlertDialogFragment extends BaseDialogFragment
+        implements DialogInterface.OnClickListener {
+    private static final String TAG = "AlertDialogFragment";
+
+    // Arguments
+    private static final String ARG_TITLE = "title";
+    private static final String ARG_MSG = "msg";
+
+    /**
+     * @param activity
+     * @param title
+     * @param msg
+     */
+    public static void show(Activity activity, String title, String msg) {
+        AlertDialogFragment fragment = new AlertDialogFragment();
+        Bundle arguments = new Bundle();
+        arguments.putString(ARG_TITLE, title);
+        arguments.putString(ARG_MSG, msg);
+        fragment.setArguments(arguments);
+        fragment.show(activity.getFragmentManager(), TAG);
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        AlertDialog.Builder builder =
+                new AlertDialog.Builder(getContext())
+                        .setTitle(getArguments().getString(ARG_TITLE))
+                        .setPositiveButton(android.R.string.ok, this);
+        if (!TextUtils.isEmpty(getArguments().getString(ARG_MSG))) {
+            builder.setMessage(getArguments().getString(ARG_MSG));
+        }
+        return builder.show();
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        if (getActivity() != null) {
+            getActivity().finish();
+        }
+        super.dismiss();
+    }
+}
diff --git a/src/com/android/settings/network/telephony/BaseDialogFragment.java b/src/com/android/settings/network/telephony/BaseDialogFragment.java
new file mode 100644
index 0000000..7da3259
--- /dev/null
+++ b/src/com/android/settings/network/telephony/BaseDialogFragment.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2020 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 android.app.Activity;
+import android.app.DialogFragment;
+import android.app.Fragment;
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+
+/**
+ * Base dialog fragment class with the functionality to make a fragment or an activity as a listener
+ * which can survive through the activity restarts.
+ */
+public abstract class BaseDialogFragment extends DialogFragment {
+    // Tags for the listener which receives event callbacks.
+    private static final String ARG_LISTENER_TAG = "listener_tag";
+    private static final String ARG_IN_CALLER_TAG = "in_caller_tag";
+
+    /**
+     * @param activity The caller activity or the activity attached with the fragment.
+     * @param listener The original caller, that is, the listener. The listener can be the fragment
+     *     to receive event callbacks. If it is null, will use the activity to handle the event
+     *     callback instead.
+     * @param callbackInterfaceClass The interface that the listener should implements.
+     * @param arguments The arguments bundle of the dispatcher fragment used to store the listener's
+     *     info.
+     * @param tagInCaller An integer given by the listener to distinguish the action when calling
+     *     the listener's callback function.
+     */
+    protected static <T> void setListener(
+            Activity activity,
+            @Nullable Fragment listener,
+            Class<T> callbackInterfaceClass,
+            int tagInCaller,
+            Bundle arguments) {
+        checkValidity(activity, listener, callbackInterfaceClass);
+
+        if (listener != null && listener.getParentFragment() != null) {
+            throw new IllegalArgumentException("The listener must be attached to an activity.");
+        }
+        arguments.putInt(ARG_IN_CALLER_TAG, tagInCaller);
+        if (listener != null) {
+            arguments.putString(ARG_LISTENER_TAG, listener.getTag());
+        }
+    }
+
+    /**
+     * @param callbackInterfaceClass The interface that the listener should implements.
+     * @param <T> Template type.
+     * @return The listener class.
+     */
+    @SuppressWarnings("unchecked")
+    protected <T> T getListener(Class<T> callbackInterfaceClass) {
+        Object listener;
+        String listenerTag = getArguments().getString(ARG_LISTENER_TAG);
+        if (listenerTag == null) {
+            listener = getActivity();
+        } else {
+            listener = getActivity().getFragmentManager().findFragmentByTag(listenerTag);
+        }
+        if (callbackInterfaceClass.isInstance(listener)) {
+            return (T) listener;
+        }
+        throw new IllegalArgumentException("The caller should implement the callback function.");
+    }
+
+    /** @return The tag set in the listener. */
+    protected int getTagInCaller() {
+        return getArguments().getInt(ARG_IN_CALLER_TAG);
+    }
+
+    private static <T> void checkValidity(
+            Activity activity, @Nullable Fragment listener, Class<T> callbackInterfaceClass) {
+        if (listener != null) {
+            if (!callbackInterfaceClass.isInstance(listener)) {
+                throw new IllegalArgumentException(
+                        "The listener fragment should implement the callback function.");
+            }
+        } else {
+            if (!callbackInterfaceClass.isInstance(activity)) {
+                throw new IllegalArgumentException(
+                        "The caller activity should implement the callback function.");
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/network/telephony/ConfirmDialogFragment.java b/src/com/android/settings/network/telephony/ConfirmDialogFragment.java
new file mode 100644
index 0000000..1ba99c5
--- /dev/null
+++ b/src/com/android/settings/network/telephony/ConfirmDialogFragment.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2020 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 android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+
+/** Fragment to show a confirm dialog. The caller should implement onConfirmListener. */
+public class ConfirmDialogFragment extends BaseDialogFragment
+        implements DialogInterface.OnClickListener {
+    private static final String TAG = "ConfirmDialogFragment";
+    private static final String ARG_TITLE = "title";
+    private static final String ARG_MSG = "msg";
+    private static final String ARG_POS_BUTTON_STRING = "pos_button_string";
+    private static final String ARG_NEG_BUTTON_STRING = "neg_button_string";
+
+    /**
+     * Interface defining the method that will be invoked when the user has done with the dialog.
+     */
+    public interface OnConfirmListener {
+        /**
+         * @param tag The tag in the caller.
+         * @param confirmed True if the user has clicked the positive button. False if the user has
+         *     clicked the negative button or cancel the dialog.
+         */
+        void onConfirm(int tag, boolean confirmed);
+    }
+
+    /** Displays a confirmation dialog which has confirm and cancel buttons. */
+    public static <T> void show(
+            Activity activity,
+            Class<T> callbackInterfaceClass,
+            int tagInCaller,
+            String title,
+            String msg,
+            String posButtonString,
+            String negButtonString) {
+        ConfirmDialogFragment fragment = new ConfirmDialogFragment();
+        Bundle arguments = new Bundle();
+        arguments.putString(ARG_TITLE, title);
+        arguments.putCharSequence(ARG_MSG, msg);
+        arguments.putString(ARG_POS_BUTTON_STRING, posButtonString);
+        arguments.putString(ARG_NEG_BUTTON_STRING, negButtonString);
+        setListener(activity, null, callbackInterfaceClass, tagInCaller, arguments);
+        fragment.setArguments(arguments);
+        fragment.show(activity.getFragmentManager(), TAG);
+    }
+
+    @Override
+    public final Dialog onCreateDialog(Bundle savedInstanceState) {
+        String title = getArguments().getString(ARG_TITLE);
+        String message = getArguments().getString(ARG_MSG);
+        String posBtnString = getArguments().getString(ARG_POS_BUTTON_STRING);
+        String negBtnString = getArguments().getString(ARG_NEG_BUTTON_STRING);
+
+        Log.i("Showing dialog with title = %s", title);
+        AlertDialog.Builder builder =
+                new AlertDialog.Builder(getContext())
+                        .setTitle(title)
+                        .setPositiveButton(posBtnString, this)
+                        .setNegativeButton(negBtnString, this);
+
+        if (!TextUtils.isEmpty(message)) {
+            builder.setMessage(message);
+        }
+        AlertDialog dialog = builder.show();
+        dialog.setCanceledOnTouchOutside(false);
+        return dialog;
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        informCaller(which == DialogInterface.BUTTON_POSITIVE);
+    }
+
+    @Override
+    public void onCancel(DialogInterface dialog) {
+        informCaller(false);
+    }
+
+    private void informCaller(boolean confirmed) {
+        OnConfirmListener listener = getListener(OnConfirmListener.class);
+        if (listener == null) {
+            return;
+        }
+        listener.onConfirm(getTagInCaller(), confirmed);
+    }
+}
diff --git a/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java b/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java
index 625f863..1cd0e8e 100644
--- a/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java
+++ b/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java
@@ -90,12 +90,15 @@
 
     @Override
     public boolean isChecked() {
-        return mManager.isDataAllowedInVoiceCall();
+        return mManager.isMobileDataPolicyEnabled(
+                TelephonyManager.MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL);
     }
 
     @Override
     public boolean setChecked(boolean isChecked) {
-        mManager.setDataAllowedDuringVoiceCall(isChecked);
+        mManager.setMobileDataPolicyEnabledStatus(
+                TelephonyManager.MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL,
+                isChecked);
         return true;
     }
 
diff --git a/src/com/android/settings/network/telephony/DeleteEuiccSubscriptionDialogActivity.java b/src/com/android/settings/network/telephony/DeleteEuiccSubscriptionDialogActivity.java
new file mode 100644
index 0000000..6186de3
--- /dev/null
+++ b/src/com/android/settings/network/telephony/DeleteEuiccSubscriptionDialogActivity.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2020 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 android.app.AlertDialog;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.util.Log;
+
+import com.android.settings.R;
+import com.android.settings.SidecarFragment;
+import com.android.settings.network.SubscriptionUtil;
+
+import java.util.List;
+
+/** This dialog activity handles deleting eSIM profiles. */
+public class DeleteEuiccSubscriptionDialogActivity extends SubscriptionActionDialogActivity
+        implements SidecarFragment.Listener, ConfirmDialogFragment.OnConfirmListener {
+
+    private static final String TAG = "DeleteEuiccSubscriptionDialogActivity";
+    // Dialog tags
+    private static final int DIALOG_TAG_DELETE_SIM_CONFIRMATION = 1;
+
+    /**
+     * Returns an intent of DeleteEuiccSubscriptionDialogActivity.
+     *
+     * @param context The context used to start the DeleteEuiccSubscriptionDialogActivity.
+     * @param subId The subscription ID of the subscription needs to be deleted. If the subscription
+     *     belongs to a group of subscriptions, all subscriptions from the group will be deleted.
+     */
+    public static Intent getIntent(Context context, int subId) {
+        Intent intent = new Intent(context, DeleteEuiccSubscriptionDialogActivity.class);
+        intent.putExtra(ARG_SUB_ID, subId);
+        return intent;
+    }
+
+    private DeleteEuiccSubscriptionSidecar mDeleteEuiccSubscriptionSidecar;
+    private List<SubscriptionInfo> mSubscriptionsToBeDeleted;
+    private SubscriptionInfo mSubscriptionToBeDeleted;
+    private AlertDialog mDeleteSimConfirmDialog;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        Intent intent = getIntent();
+        int subId = intent.getIntExtra(ARG_SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+        mSubscriptionToBeDeleted = SubscriptionUtil.getSubById(mSubscriptionManager, subId);
+        mSubscriptionsToBeDeleted =
+                SubscriptionUtil.findAllSubscriptionsInGroup(mSubscriptionManager, subId);
+        mDeleteEuiccSubscriptionSidecar = DeleteEuiccSubscriptionSidecar.get(getFragmentManager());
+
+        if (mSubscriptionToBeDeleted == null || mDeleteEuiccSubscriptionSidecar == null) {
+            Log.e(TAG, "Cannot find subscription with sub ID: " + subId);
+            finish();
+            return;
+        }
+
+        if (savedInstanceState == null) {
+            showDeleteSimConfirmDialog();
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mDeleteEuiccSubscriptionSidecar.addListener(this);
+    }
+
+    @Override
+    protected void onPause() {
+        mDeleteEuiccSubscriptionSidecar.removeListener(this);
+        super.onPause();
+    }
+
+    @Override
+    public void onStateChange(SidecarFragment fragment) {
+        if (fragment == mDeleteEuiccSubscriptionSidecar) {
+            handleDeleteEuiccSubscriptionSidecarStateChange();
+        }
+    }
+
+    @Override
+    public void onConfirm(int tag, boolean confirmed) {
+        if (!confirmed) {
+            finish();
+            return;
+        }
+
+        switch (tag) {
+            case DIALOG_TAG_DELETE_SIM_CONFIRMATION:
+                Log.i(TAG, "Subscription deletion confirmed");
+                showProgressDialog(getString(R.string.erasing_sim));
+                mDeleteEuiccSubscriptionSidecar.run(mSubscriptionsToBeDeleted);
+                break;
+            default:
+                Log.e(TAG, "Unrecognized confirmation dialog tag: " + tag);
+                break;
+        }
+    }
+
+    private void handleDeleteEuiccSubscriptionSidecarStateChange() {
+        switch (mDeleteEuiccSubscriptionSidecar.getState()) {
+            case SidecarFragment.State.SUCCESS:
+                Log.i(TAG, "Successfully delete the subscription.");
+                mDeleteEuiccSubscriptionSidecar.reset();
+                dismissProgressDialog();
+                finish();
+                break;
+            case SidecarFragment.State.ERROR:
+                Log.e(TAG, "Failed to delete the subscription.");
+                mDeleteEuiccSubscriptionSidecar.reset();
+                showErrorDialog(
+                        getString(R.string.erase_sim_fail_title),
+                        getString(R.string.erase_sim_fail_text));
+                break;
+        }
+    }
+
+    /* Displays the eSIM deleting confirmation dialog. */
+    private void showDeleteSimConfirmDialog() {
+        ConfirmDialogFragment.show(
+                this,
+                ConfirmDialogFragment.OnConfirmListener.class,
+                DIALOG_TAG_DELETE_SIM_CONFIRMATION,
+                getString(R.string.erase_sim_dialog_title),
+                getString(
+                        R.string.erase_sim_dialog_text, mSubscriptionToBeDeleted.getDisplayName()),
+                getString(R.string.erase_sim_confirm_button),
+                getString(R.string.cancel));
+    }
+}
diff --git a/src/com/android/settings/network/telephony/DeleteEuiccSubscriptionSidecar.java b/src/com/android/settings/network/telephony/DeleteEuiccSubscriptionSidecar.java
new file mode 100644
index 0000000..f03f33f
--- /dev/null
+++ b/src/com/android/settings/network/telephony/DeleteEuiccSubscriptionSidecar.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2020 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 android.app.FragmentManager;
+import android.app.PendingIntent;
+import android.telephony.SubscriptionInfo;
+import android.telephony.euicc.EuiccManager;
+import android.util.Log;
+
+import com.android.settings.SidecarFragment;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** A headless fragment encapsulating long-running eSIM erasing operations. */
+public class DeleteEuiccSubscriptionSidecar extends EuiccOperationSidecar {
+    private static final String TAG = "DeleteEuiccSubscriptionSidecar";
+    private static final String ACTION_DELETE_SUBSCRIPTION =
+            "com.android.settings.network.delete_subscription";
+
+    private List<SubscriptionInfo> mSubscriptions;
+
+    @Override
+    public String getReceiverAction() {
+        return ACTION_DELETE_SUBSCRIPTION;
+    }
+
+    /** Returns a DeleteEuiccSubscriptionSidecar sidecar instance. */
+    public static DeleteEuiccSubscriptionSidecar get(FragmentManager fm) {
+        return SidecarFragment.get(fm, TAG, DeleteEuiccSubscriptionSidecar.class, null /* args */);
+    }
+
+    /** Starts calling EuiccManager#deleteSubscription to delete the eSIM profile. */
+    public void run(List<SubscriptionInfo> subscriptions) {
+        if (subscriptions == null || subscriptions.isEmpty()) {
+            throw new IllegalArgumentException("Subscriptions cannot be empty.");
+        }
+
+        setState(State.RUNNING, Substate.UNUSED);
+
+        mSubscriptions = new ArrayList<>(subscriptions);
+        deleteSubscription();
+    }
+
+    @Override
+    protected void onActionReceived() {
+        if (getResultCode() == EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_OK
+                && !mSubscriptions.isEmpty()) {
+            // Continue to delete remaining subscriptions.
+            deleteSubscription();
+        } else {
+            super.onActionReceived();
+        }
+    }
+
+    private void deleteSubscription() {
+        SubscriptionInfo subscription = mSubscriptions.remove(0);
+        PendingIntent intent = createCallbackIntent();
+        Log.i(TAG, "Deleting subscription ID: " + subscription.getSubscriptionId());
+        mEuiccManager.deleteSubscription(subscription.getSubscriptionId(), intent);
+    }
+}
diff --git a/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.java b/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.java
index 44187e4..3035a9f 100644
--- a/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.java
+++ b/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceController.java
@@ -81,9 +81,8 @@
     }
 
     private void deleteSim() {
-        final Intent intent = new Intent(EuiccManager.ACTION_DELETE_SUBSCRIPTION_PRIVILEGED);
-        intent.putExtra(EuiccManager.EXTRA_SUBSCRIPTION_ID, mSubscriptionInfo.getSubscriptionId());
-        mParentFragment.startActivityForResult(intent, mRequestCode);
+        SubscriptionUtil.startDeleteEuiccSubscriptionDialogActivity(
+                mContext, mSubscriptionInfo.getSubscriptionId());
         // result handled in MobileNetworkSettings
     }
 
diff --git a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.java b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.java
index 07b808f..e3db5eb 100644
--- a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.java
+++ b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.java
@@ -88,7 +88,10 @@
 
     @Override
     public boolean setChecked(boolean isChecked) {
-        return mTelephonyManager.setAlwaysAllowMmsData(isChecked);
+        mTelephonyManager.setMobileDataPolicyEnabledStatus(
+                TelephonyManager.MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED, isChecked);
+        return isChecked == mTelephonyManager.isMobileDataPolicyEnabled(
+                TelephonyManager.MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED);
     }
 
     @Override
diff --git a/src/com/android/settings/network/telephony/ProgressDialogFragment.java b/src/com/android/settings/network/telephony/ProgressDialogFragment.java
new file mode 100644
index 0000000..0d1b657
--- /dev/null
+++ b/src/com/android/settings/network/telephony/ProgressDialogFragment.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2020 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 android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.FragmentManager;
+import android.app.FragmentTransaction;
+import android.app.ProgressDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+
+/** Fragment to show a progress dialog. */
+public class ProgressDialogFragment extends DialogFragment {
+    private static final String ARG_TITLE = "title";
+
+    private static final String TAG = "ProgressDialogFragment";
+
+    private OnDismissCallback mDismissCallback;
+
+    // Host fragment is optional to implement this interface.
+    public interface OnDismissCallback {
+        // Action performed when the progress dialog is dismissed.
+        void onProgressDialogDismiss();
+    }
+
+    /**
+     * Check whether there is already a showing progress dialog. If yes and the title of the showing
+     * one is the same with the new coming one, just return and do nothing. If the title of the
+     * showing one is different from the new one, remove the showing one and create a new dialog for
+     * the new one. If there is no progress dialog right now, just create a new one.
+     */
+    public static void show(FragmentManager fm, String title, OnDismissCallback dismissCallback) {
+        ProgressDialogFragment fragment = (ProgressDialogFragment) fm.findFragmentByTag(TAG);
+        if (fragment != null
+                && TextUtils.equals(fragment.getArguments().getString(ARG_TITLE), title)) {
+            return;
+        }
+
+        FragmentTransaction ft = fm.beginTransaction();
+        if (fragment != null) {
+            ft.remove(fragment);
+        }
+
+        fragment = new ProgressDialogFragment();
+        fragment.setDismissCallback(dismissCallback);
+
+        Bundle arguments = new Bundle();
+        arguments.putString(ARG_TITLE, title);
+        fragment.setArguments(arguments);
+        fragment.show(ft, TAG);
+    }
+
+    /**
+     * Called by the caller activity or fragment when the progress is finished.
+     *
+     * @param fm The fragment manager.
+     */
+    public static void dismiss(FragmentManager fm) {
+        DialogFragment fragment = (DialogFragment) fm.findFragmentByTag(TAG);
+        if (fragment != null) {
+            fragment.dismiss();
+        }
+    }
+
+    @Override
+    @SuppressWarnings("deprecation") // ProgressDialog is deprecated but is intended UX for now
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        ProgressDialog dialog = new ProgressDialog(getActivity());
+        dialog.setCancelable(false);
+        dialog.setCanceledOnTouchOutside(false);
+        dialog.setMessage(getArguments().getString(ARG_TITLE));
+        dialog.setOnKeyListener(
+                (progressDialog, keyCode, event) -> KeyEvent.KEYCODE_BACK == keyCode);
+
+        return dialog;
+    }
+
+    @Override
+    public void onDismiss(DialogInterface dialog) {
+        super.onDismiss(dialog);
+        if (mDismissCallback != null) {
+            mDismissCallback.onProgressDialogDismiss();
+        }
+    }
+
+    private void setDismissCallback(OnDismissCallback dismissCallback) {
+        mDismissCallback = dismissCallback;
+    }
+}
diff --git a/src/com/android/settings/network/telephony/SubscriptionActionDialogActivity.java b/src/com/android/settings/network/telephony/SubscriptionActionDialogActivity.java
index 491a776..7ff0d9a 100644
--- a/src/com/android/settings/network/telephony/SubscriptionActionDialogActivity.java
+++ b/src/com/android/settings/network/telephony/SubscriptionActionDialogActivity.java
@@ -16,25 +16,24 @@
 
 package com.android.settings.network.telephony;
 
-import android.R;
 import android.app.Activity;
-import android.app.ProgressDialog;
-import android.content.DialogInterface;
 import android.os.Bundle;
-
-import androidx.appcompat.app.AlertDialog;
+import android.telephony.SubscriptionManager;
 
 /** The base class for subscription action dialogs */
 public class SubscriptionActionDialogActivity extends Activity {
 
     private static final String TAG = "SubscriptionActionDialogActivity";
+    // Arguments
+    protected static final String ARG_SUB_ID = "sub_id";
 
-    private ProgressDialog mProgressDialog;
-    private AlertDialog mErrorDialog;
+    protected SubscriptionManager mSubscriptionManager;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+
+        mSubscriptionManager = getSystemService(SubscriptionManager.class);
     }
 
     /**
@@ -43,20 +42,12 @@
      * @param message The string content should be displayed in the progress dialog.
      */
     protected void showProgressDialog(String message) {
-        if (mProgressDialog == null) {
-            mProgressDialog = ProgressDialog.show(this, null, message);
-            mProgressDialog.setCanceledOnTouchOutside(false);
-            mProgressDialog.setCancelable(false);
-        }
-        mProgressDialog.setMessage(message);
-        mProgressDialog.show();
+        ProgressDialogFragment.show(getFragmentManager(), message, null);
     }
 
     /** Dismisses the loading dialog. */
     protected void dismissProgressDialog() {
-        if (mProgressDialog != null) {
-            mProgressDialog.dismiss();
-        }
+        ProgressDialogFragment.dismiss(getFragmentManager());
     }
 
     /**
@@ -64,31 +55,8 @@
      *
      * @param title The title of the error dialog.
      * @param message The body text of the error dialog.
-     * @param positiveOnClickListener The callback function after users confirm with the error.
      */
-    protected void showErrorDialog(
-            String title, String message, DialogInterface.OnClickListener positiveOnClickListener) {
-        if (mErrorDialog == null) {
-            mErrorDialog =
-                    new AlertDialog.Builder(this)
-                            .setTitle(title)
-                            .setMessage(message)
-                            .setPositiveButton(
-                                    R.string.ok,
-                                    (dialog, which) -> {
-                                        positiveOnClickListener.onClick(dialog, which);
-                                        dismissErrorDialog();
-                                    })
-                            .create();
-        }
-        mErrorDialog.setMessage(message);
-        mErrorDialog.show();
-    }
-
-    /** Dismisses the error dialog. */
-    protected void dismissErrorDialog() {
-        if (mErrorDialog != null) {
-            mErrorDialog.dismiss();
-        }
+    protected void showErrorDialog(String title, String message) {
+        AlertDialogFragment.show(this, title, message);
     }
 }
diff --git a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java
index 062c984..905ead0 100644
--- a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java
+++ b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java
@@ -17,7 +17,6 @@
 package com.android.settings.network.telephony;
 
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.UserManager;
@@ -35,15 +34,17 @@
 
 /** This dialog activity handles both eSIM and pSIM subscriptions enabling and disabling. */
 public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogActivity
-        implements SidecarFragment.Listener {
+        implements SidecarFragment.Listener, ConfirmDialogFragment.OnConfirmListener {
 
     private static final String TAG = "ToggleSubscriptionDialogActivity";
-
-    private static final String ARG_SUB_ID = "sub_id";
+    // Arguments
     private static final String ARG_enable = "enable";
+    // Dialog tags
+    private static final int DIALOG_TAG_DISABLE_SIM_CONFIRMATION = 1;
 
     /**
      * Returns an intent of ToggleSubscriptionDialogActivity.
+     *
      * @param context The context used to start the ToggleSubscriptionDialogActivity.
      * @param subId The subscription ID of the subscription needs to be toggled.
      * @param enable Whether the activity should enable or disable the subscription.
@@ -55,7 +56,6 @@
         return intent;
     }
 
-    private SubscriptionManager mSubscriptionManager;
     private SubscriptionInfo mSubInfo;
     private SwitchToEuiccSubscriptionSidecar mSwitchToEuiccSubscriptionSidecar;
     private AlertDialog mToggleSimConfirmDialog;
@@ -67,7 +67,6 @@
 
         Intent intent = getIntent();
         int subId = intent.getIntExtra(ARG_SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-        mSubscriptionManager = getSystemService(SubscriptionManager.class);
 
         UserManager userManager = getSystemService(UserManager.class);
         if (!userManager.isAdminUser()) {
@@ -87,10 +86,12 @@
                 SwitchToEuiccSubscriptionSidecar.get(getFragmentManager());
         mEnable = intent.getBooleanExtra(ARG_enable, true);
 
-        if (mEnable) {
-            handleEnablingSubAction();
-        } else {
-            handleDisablingSubAction();
+        if (savedInstanceState == null) {
+            if (mEnable) {
+                handleEnablingSubAction();
+            } else {
+                showDisableSimConfirmDialog();
+            }
         }
     }
 
@@ -113,6 +114,31 @@
         }
     }
 
+    @Override
+    public void onConfirm(int tag, boolean confirmed) {
+        if (!confirmed) {
+            finish();
+            return;
+        }
+
+        switch (tag) {
+            case DIALOG_TAG_DISABLE_SIM_CONFIRMATION:
+                if (mSubInfo.isEmbedded()) {
+                    Log.i(TAG, "Disabling the eSIM profile.");
+                    showProgressDialog(
+                            getString(R.string.privileged_action_disable_sub_dialog_progress));
+                    mSwitchToEuiccSubscriptionSidecar.run(
+                            SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+                    return;
+                }
+                Log.i(TAG, "Disabling the pSIM profile.");
+                break;
+            default:
+                Log.e(TAG, "Unrecognized confirmation dialog tag: " + tag);
+                break;
+        }
+    }
+
     private void handleSwitchToEuiccSubscriptionSidecarStateChange() {
         switch (mSwitchToEuiccSubscriptionSidecar.getState()) {
             case SidecarFragment.State.SUCCESS:
@@ -134,8 +160,7 @@
                 dismissProgressDialog();
                 showErrorDialog(
                         getString(R.string.privileged_action_disable_fail_title),
-                        getString(R.string.privileged_action_disable_fail_text),
-                        (dialog, which) -> finish());
+                        getString(R.string.privileged_action_disable_fail_text));
                 break;
         }
     }
@@ -146,45 +171,24 @@
         // TODO(b/160819390): Implement enabling eSIM/pSIM profile.
     }
 
-    /* Handles the disabling SIM action. */
-    private void handleDisablingSubAction() {
-        showToggleSimConfirmDialog(
-                (dialog, which) -> {
-                    if (mSubInfo.isEmbedded()) {
-                        Log.i(TAG, "Disabling the eSIM profile.");
-                        showProgressDialog(
-                                getString(R.string.privileged_action_disable_sub_dialog_progress));
-                        mSwitchToEuiccSubscriptionSidecar.run(
-                                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-                        return;
-                    }
-                    Log.i(TAG, "Disabling the pSIM profile.");
-                    // TODO(b/160819390): Implement disabling pSIM profile.
-                });
-    }
-
     /* Displays the SIM toggling confirmation dialog. */
-    private void showToggleSimConfirmDialog(
-            DialogInterface.OnClickListener positiveOnClickListener) {
-        if (mToggleSimConfirmDialog == null) {
-            mToggleSimConfirmDialog =
-                    new AlertDialog.Builder(this)
-                            .setTitle(getToggleSimConfirmDialogTitle())
-                            .setPositiveButton(
-                                    R.string.yes,
-                                    (dialog, which) -> {
-                                        positiveOnClickListener.onClick(dialog, which);
-                                        dismissToggleSimConfirmDialog();
-                                    })
-                            .setNegativeButton(
-                                    R.string.cancel,
-                                    (dialog, which) -> {
-                                        dismissToggleSimConfirmDialog();
-                                        finish();
-                                    })
-                            .create();
-        }
-        mToggleSimConfirmDialog.show();
+    private void showDisableSimConfirmDialog() {
+        String title =
+                mSubInfo == null || TextUtils.isEmpty(mSubInfo.getDisplayName())
+                        ? getString(
+                                R.string.privileged_action_disable_sub_dialog_title_without_carrier)
+                        : getString(
+                                R.string.privileged_action_disable_sub_dialog_title,
+                                mSubInfo.getDisplayName());
+
+        ConfirmDialogFragment.show(
+                this,
+                ConfirmDialogFragment.OnConfirmListener.class,
+                DIALOG_TAG_DISABLE_SIM_CONFIRMATION,
+                title,
+                null,
+                getString(R.string.yes),
+                getString(R.string.cancel));
     }
 
     /* Dismisses the SIM toggling confirmation dialog. */
@@ -193,17 +197,4 @@
             mToggleSimConfirmDialog.dismiss();
         }
     }
-
-    /* Returns the title of toggling SIM confirmation dialog. */
-    private String getToggleSimConfirmDialogTitle() {
-        if (mEnable) {
-            // TODO(b/160819390): Handle the case for enabling SIM.
-            return null;
-        }
-        return mSubInfo == null || TextUtils.isEmpty(mSubInfo.getDisplayName())
-                ? getString(R.string.privileged_action_disable_sub_dialog_title_without_carrier)
-                : getString(
-                        R.string.privileged_action_disable_sub_dialog_title,
-                        mSubInfo.getDisplayName());
-    }
 }
diff --git a/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java b/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
index 14c9117..c9a203e 100644
--- a/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
+++ b/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
@@ -142,14 +142,13 @@
 
     private static PendingIntent getPrimaryAction(Context context) {
         final Intent intent = getIntent(context);
-        return PendingIntent.getActivity(context, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_IMMUTABLE);
+        return PendingIntent.getActivity(context, 0 /* requestCode */, intent, 0 /* flags */);
     }
 
     private static PendingIntent getBroadcastIntent(Context context) {
         final Intent intent = new Intent(ACTION_ZEN_MODE_SLICE_CHANGED)
                 .setClass(context, SliceBroadcastReceiver.class);
         return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
+                PendingIntent.FLAG_CANCEL_CURRENT);
     }
 }
diff --git a/src/com/android/settings/slices/CustomSliceable.java b/src/com/android/settings/slices/CustomSliceable.java
index 57475a9..92c604e 100644
--- a/src/com/android/settings/slices/CustomSliceable.java
+++ b/src/com/android/settings/slices/CustomSliceable.java
@@ -95,7 +95,7 @@
                 .setData(getUri())
                 .setClass(context, SliceBroadcastReceiver.class);
         return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
+                PendingIntent.FLAG_UPDATE_CURRENT);
     }
 
     @Override
diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java
index 6e14a3f..552927e 100644
--- a/src/com/android/settings/slices/SliceBuilderUtils.java
+++ b/src/com/android/settings/slices/SliceBuilderUtils.java
@@ -159,7 +159,7 @@
                 .setClass(context, SliceBroadcastReceiver.class)
                 .putExtra(EXTRA_SLICE_KEY, data.getKey());
         return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
+                PendingIntent.FLAG_UPDATE_CURRENT);
     }
 
     /**
@@ -167,8 +167,7 @@
      */
     public static PendingIntent getContentPendingIntent(Context context, SliceData sliceData) {
         final Intent intent = getContentIntent(context, sliceData);
-        return PendingIntent.getActivity(context, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_IMMUTABLE);
+        return PendingIntent.getActivity(context, 0 /* requestCode */, intent, 0 /* flags */);
     }
 
     /**
diff --git a/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java b/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java
index 9676f58..a2b143e 100644
--- a/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java
+++ b/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java
@@ -738,10 +738,7 @@
         }
 
         mMacAddressPref.setVisible(true);
-
-        mMacAddressPref.setTitle((mWifiEntry.getPrivacy() == WifiEntry.PRIVACY_RANDOMIZED_MAC)
-                ? R.string.wifi_advanced_randomized_mac_address_title
-                : R.string.wifi_advanced_device_mac_address_title);
+        mMacAddressPref.setTitle(getMacAddressTitle());
 
         if (macAddress.equals(WifiInfo.DEFAULT_MAC_ADDRESS)) {
             mMacAddressPref.setSummary(R.string.device_info_not_available);
@@ -750,6 +747,15 @@
         }
     }
 
+    private int getMacAddressTitle() {
+        if (mWifiEntry.getPrivacy() == WifiEntry.PRIVACY_RANDOMIZED_MAC) {
+            return mWifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED
+                    ? R.string.wifi_advanced_randomized_mac_address_title
+                    : R.string.wifi_advanced_randomized_mac_address_disconnected_title;
+        }
+        return R.string.wifi_advanced_device_mac_address_title;
+    }
+
     private void updatePreference(Preference pref, String detailText) {
         if (!TextUtils.isEmpty(detailText)) {
             pref.setSummary(detailText);
diff --git a/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java b/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java
index 5a6ca86..0cc6b43 100644
--- a/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java
@@ -22,6 +22,10 @@
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
+import android.util.FeatureFlagUtils;
+
+import com.android.settings.R;
+import com.android.settings.core.FeatureFlags;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -45,4 +49,17 @@
     public void shouldForceRoundedIcon_true() {
         assertThat(mSettings.shouldForceRoundedIcon()).isTrue();
     }
+
+    @Test
+    public void getPreferenceScreenResId_silkyHomeDisabled_defaultSettings() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+        assertThat(mSettings.getPreferenceScreenResId()).isEqualTo(R.xml.top_level_settings);
+    }
+
+    @Test
+    public void getPreferenceScreenResId_silkyHomeEnabled_groupedSettings() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+        assertThat(mSettings.getPreferenceScreenResId()).isEqualTo(
+                R.xml.top_level_settings_grouped);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceControllerTest.java
index 401a92e..502e3fe 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/DeleteSimProfilePreferenceControllerTest.java
@@ -39,6 +39,7 @@
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -117,6 +118,7 @@
     }
 
     @Test
+    @Ignore
     public void onPreferenceClick_startsIntent() {
         mController.init(SUB_ID, mFragment, REQUEST_CODE);
         mController.displayPreference(mScreen);
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.java
index a612657..c28c28c 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.java
@@ -115,9 +115,11 @@
     @Test
     public void setChecked_setDataIntoSubscriptionManager() {
         mController.setChecked(true);
-        verify(mTelephonyManager).setAlwaysAllowMmsData(true);
+        verify(mTelephonyManager).setMobileDataPolicyEnabledStatus(
+                TelephonyManager.MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED, true);
 
         mController.setChecked(false);
-        verify(mTelephonyManager).setAlwaysAllowMmsData(false);
+        verify(mTelephonyManager).setMobileDataPolicyEnabledStatus(
+                TelephonyManager.MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED, false);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java b/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java
index 1f4254e..c5f2a7f 100644
--- a/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java
@@ -815,6 +815,22 @@
     }
 
     @Test
+    public void macAddressPref_shouldVisibleAsRandomizedForConnectedNetwork() {
+        setUpForConnectedNetwork();
+        setUpSpyController();
+        when(mMockWifiEntry.isSaved()).thenReturn(true);
+        when(mMockWifiEntry.getPrivacy()).thenReturn(WifiEntry.PRIVACY_RANDOMIZED_MAC);
+        when(mMockWifiEntry.getMacAddress()).thenReturn(RANDOMIZED_MAC_ADDRESS);
+
+        displayAndResume();
+
+        verify(mMockMacAddressPref).setVisible(true);
+        verify(mMockMacAddressPref).setSummary(RANDOMIZED_MAC_ADDRESS);
+        verify(mMockMacAddressPref).setTitle(
+                R.string.wifi_advanced_randomized_mac_address_title);
+    }
+
+    @Test
     public void macAddressPref_shouldVisibleAsRandomizedForDisconnectedNetwork() {
         setUpForDisconnectedNetwork();
         when(mMockWifiEntry.isSaved()).thenReturn(true);
@@ -825,7 +841,8 @@
 
         verify(mMockMacAddressPref).setVisible(true);
         verify(mMockMacAddressPref).setSummary(RANDOMIZED_MAC_ADDRESS);
-        verify(mMockMacAddressPref).setTitle(R.string.wifi_advanced_randomized_mac_address_title);
+        verify(mMockMacAddressPref).setTitle(
+                R.string.wifi_advanced_randomized_mac_address_disconnected_title);
     }
 
     @Test
diff --git a/tests/unit/src/com/android/settings/applications/AppOpsSettingsTest.java b/tests/unit/src/com/android/settings/applications/AppOpsSettingsTest.java
deleted file mode 100644
index fbbc01a..0000000
--- a/tests/unit/src/com/android/settings/applications/AppOpsSettingsTest.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.settings.applications;
-
-import static android.app.AppOpsManager.MODE_ALLOWED;
-import static android.app.AppOpsManager.MODE_DEFAULT;
-import static android.app.AppOpsManager.MODE_ERRORED;
-import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
-import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import android.app.AppOpsManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.UserInfo;
-import android.net.Uri;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.BySelector;
-import android.support.test.uiautomator.Direction;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-import android.widget.Switch;
-import android.widget.TextView;
-
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.test.InstrumentationRegistry;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.List;
-
-/**
- * An abstract parent for testing settings activities that manage an AppOps permission.
- */
-abstract public class AppOpsSettingsTest {
-    private static final String WM_DISMISS_KEYGUARD_COMMAND = "wm dismiss-keyguard";
-    private static final long START_ACTIVITY_TIMEOUT = 5000;
-
-    private Context mContext;
-    private UiDevice mUiDevice;
-    private PackageManager mPackageManager;
-    private AppOpsManager mAppOpsManager;
-    private List<UserInfo> mProfiles;
-    private String mPackageName;
-
-    // These depend on which app op's settings UI is being tested.
-    private final String mActivityAction;
-    private final int mAppOpCode;
-
-    protected AppOpsSettingsTest(String activityAction, int appOpCode) {
-        mActivityAction = activityAction;
-        mAppOpCode = appOpCode;
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        mContext = InstrumentationRegistry.getTargetContext();
-        mPackageName = InstrumentationRegistry.getContext().getPackageName();
-        mPackageManager = mContext.getPackageManager();
-        mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
-        mProfiles = mContext.getSystemService(UserManager.class).getProfiles(UserHandle.myUserId());
-        resetAppOpModeForAllProfiles();
-        mUiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-        mUiDevice.wakeUp();
-        mUiDevice.executeShellCommand(WM_DISMISS_KEYGUARD_COMMAND);
-    }
-
-    private void resetAppOpModeForAllProfiles() throws Exception {
-        for (UserInfo user : mProfiles) {
-            final int uid = mPackageManager.getPackageUidAsUser(mPackageName, user.id);
-            mAppOpsManager.setMode(mAppOpCode, uid, mPackageName, MODE_DEFAULT);
-        }
-    }
-
-    /**
-     * Creates an intent for showing the permission settings for all apps.
-     */
-    private Intent createManageAllAppsIntent() {
-        final Intent intent = new Intent(mActivityAction);
-        intent.addFlags(FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK);
-        return intent;
-    }
-
-    /**
-     * Creates an intent for showing the permission setting for a single app.
-     */
-    private Intent createManageSingleAppIntent(String packageName) {
-        final Intent intent = createManageAllAppsIntent();
-        intent.setData(Uri.parse("package:" + packageName));
-        return intent;
-    }
-
-    private String getApplicationLabel(String packageName) throws Exception {
-        final ApplicationInfo info = mPackageManager.getApplicationInfo(packageName, 0);
-        return mPackageManager.getApplicationLabel(info).toString();
-    }
-
-    private UiObject2 findAndVerifySwitchState(boolean checked) {
-        final BySelector switchSelector = By.clazz(Switch.class).res("android:id/switch_widget");
-        final UiObject2 switchPref = mUiDevice.wait(Until.findObject(switchSelector),
-                START_ACTIVITY_TIMEOUT);
-        assertNotNull("Switch not shown", switchPref);
-        assertTrue("Switch in invalid state", switchPref.isChecked() == checked);
-        return switchPref;
-    }
-
-    @Test
-    public void testAppList() throws Exception {
-        final String testAppLabel = getApplicationLabel(mPackageName);
-
-        mContext.startActivity(createManageAllAppsIntent());
-        final BySelector preferenceListSelector =
-                By.clazz(RecyclerView.class).res("com.android.settings:id/apps_list");
-        final UiObject2 preferenceList = mUiDevice.wait(Until.findObject(preferenceListSelector),
-                START_ACTIVITY_TIMEOUT);
-        assertNotNull("App list not shown", preferenceList);
-
-        final BySelector appLabelTextViewSelector = By.clazz(TextView.class)
-                .res("android:id/title")
-                .text(testAppLabel);
-        List<UiObject2> listOfMatchingTextViews;
-        do {
-            listOfMatchingTextViews = preferenceList.findObjects(appLabelTextViewSelector);
-            // assuming the number of profiles will be sufficiently small so that all the entries
-            // for the same package will fit in one screen at some time during the scroll.
-        } while (listOfMatchingTextViews.size() != mProfiles.size() &&
-                preferenceList.scroll(Direction.DOWN, 0.2f));
-        assertEquals("Test app not listed for each profile", mProfiles.size(),
-                listOfMatchingTextViews.size());
-
-        for (UiObject2 matchingObject : listOfMatchingTextViews) {
-            matchingObject.click();
-            findAndVerifySwitchState(true);
-            mUiDevice.pressBack();
-        }
-    }
-
-    private void testAppDetailScreenForAppOp(int appOpMode, int userId) throws Exception {
-        final String testAppLabel = getApplicationLabel(mPackageName);
-        final BySelector appDetailTitleSelector = By.clazz(TextView.class)
-                .res("com.android.settings:id/app_detail_title")
-                .text(testAppLabel);
-
-        mAppOpsManager.setMode(mAppOpCode,
-                mPackageManager.getPackageUidAsUser(mPackageName, userId), mPackageName, appOpMode);
-        mContext.startActivityAsUser(createManageSingleAppIntent(mPackageName),
-                UserHandle.of(userId));
-        mUiDevice.wait(Until.findObject(appDetailTitleSelector), START_ACTIVITY_TIMEOUT);
-        findAndVerifySwitchState(appOpMode == MODE_ALLOWED || appOpMode == MODE_DEFAULT);
-        mUiDevice.pressBack();
-    }
-
-    @Test
-    public void testSingleApp() throws Exception {
-        // App op MODE_DEFAULT is already tested in #testAppList
-        for (UserInfo user : mProfiles) {
-            testAppDetailScreenForAppOp(MODE_ALLOWED, user.id);
-            testAppDetailScreenForAppOp(MODE_ERRORED, user.id);
-        }
-    }
-
-    private void testSwitchToggle(int fromAppOp, int toAppOp) throws Exception {
-        final int packageUid = mPackageManager.getPackageUid(mPackageName, 0);
-        final boolean initialState = (fromAppOp == MODE_ALLOWED || fromAppOp == MODE_DEFAULT);
-
-        mAppOpsManager.setMode(mAppOpCode, packageUid, mPackageName, fromAppOp);
-        mContext.startActivity(createManageSingleAppIntent(mPackageName));
-        final UiObject2 switchPref = findAndVerifySwitchState(initialState);
-        switchPref.click();
-        Thread.sleep(1000);
-        assertEquals("Toggling switch did not change app op", toAppOp,
-                mAppOpsManager.checkOpNoThrow(mAppOpCode, packageUid,
-                        mPackageName));
-        mUiDevice.pressBack();
-    }
-
-    @Test
-    public void testIfSwitchTogglesAppOp() throws Exception {
-        testSwitchToggle(MODE_ALLOWED, MODE_ERRORED);
-        testSwitchToggle(MODE_ERRORED, MODE_ALLOWED);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        mUiDevice.pressHome();
-        resetAppOpModeForAllProfiles();
-    }
-}
diff --git a/tests/unit/src/com/android/settings/applications/DrawOverlaySettingsTest.java b/tests/unit/src/com/android/settings/applications/DrawOverlaySettingsTest.java
deleted file mode 100644
index b6d51ff..0000000
--- a/tests/unit/src/com/android/settings/applications/DrawOverlaySettingsTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.applications;
-
-import android.app.AppOpsManager;
-import android.provider.Settings;
-
-import androidx.test.filters.LargeTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@LargeTest
-public class DrawOverlaySettingsTest extends AppOpsSettingsTest {
-
-    public DrawOverlaySettingsTest() {
-        super(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, AppOpsManager.OP_SYSTEM_ALERT_WINDOW);
-    }
-
-    // Test cases are in the superclass.
-}
\ No newline at end of file
diff --git a/tests/unit/src/com/android/settings/applications/ExternalSourcesSettingsTest.java b/tests/unit/src/com/android/settings/applications/ExternalSourcesSettingsTest.java
deleted file mode 100644
index b35d6cb..0000000
--- a/tests/unit/src/com/android/settings/applications/ExternalSourcesSettingsTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.applications;
-
-import android.app.AppOpsManager;
-import android.provider.Settings;
-
-import androidx.test.filters.LargeTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@LargeTest
-public class ExternalSourcesSettingsTest extends AppOpsSettingsTest {
-
-    public ExternalSourcesSettingsTest() {
-        super(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,
-                AppOpsManager.OP_REQUEST_INSTALL_PACKAGES);
-    }
-
-    // Test cases are in the superclass.
-}
diff --git a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinishTest.java b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinishTest.java
deleted file mode 100644
index 589680d..0000000
--- a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinishTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2017 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.biometrics.fingerprint;
-
-import static androidx.test.InstrumentationRegistry.getTargetContext;
-import static androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.action.ViewActions.click;
-import static androidx.test.espresso.intent.Intents.intended;
-import static androidx.test.espresso.intent.Intents.intending;
-import static androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent;
-import static androidx.test.espresso.matcher.ViewMatchers.withId;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import android.app.Activity;
-import android.app.Instrumentation.ActivityResult;
-import android.content.ComponentName;
-
-import androidx.test.espresso.intent.rule.IntentsTestRule;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.R;
-
-import com.google.android.setupcompat.PartnerCustomizationLayout;
-import com.google.android.setupcompat.template.FooterBarMixin;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class FingerprintEnrollFinishTest {
-
-    @Rule
-    public IntentsTestRule<FingerprintEnrollFinish> mActivityRule =
-            new IntentsTestRule<>(FingerprintEnrollFinish.class);
-
-    @Test
-    public void clickAddAnother_shouldLaunchEnrolling() {
-        final ComponentName enrollingComponent = new ComponentName(
-                getTargetContext(),
-                FingerprintEnrollEnrolling.class);
-
-        intending(hasComponent(enrollingComponent))
-                .respondWith(new ActivityResult(Activity.RESULT_CANCELED, null));
-
-        PartnerCustomizationLayout layout =
-                mActivityRule.getActivity().findViewById(R.id.setup_wizard_layout);
-        layout.getMixin(FooterBarMixin.class).getPrimaryButtonView().performClick();
-
-        intended(hasComponent(enrollingComponent));
-        assertFalse(mActivityRule.getActivity().isFinishing());
-    }
-
-    @Test
-    public void clickAddAnother_shouldPropagateResults() {
-        final ComponentName enrollingComponent = new ComponentName(
-                getTargetContext(),
-                FingerprintEnrollEnrolling.class);
-
-        intending(hasComponent(enrollingComponent))
-                .respondWith(new ActivityResult(Activity.RESULT_OK, null));
-
-        PartnerCustomizationLayout layout =
-                mActivityRule.getActivity().findViewById(R.id.setup_wizard_layout);
-        layout.getMixin(FooterBarMixin.class).getPrimaryButtonView().performClick();
-
-        intended(hasComponent(enrollingComponent));
-        assertTrue(mActivityRule.getActivity().isFinishing());
-    }
-
-    @Test
-    public void clickNext_shouldFinish() {
-        onView(withId(R.id.next_button)).perform(click());
-        assertTrue(mActivityRule.getActivity().isFinishing());
-    }
-}
\ No newline at end of file
diff --git a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java
deleted file mode 100644
index 454de3d..0000000
--- a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2016 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.biometrics.fingerprint;
-
-
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Mockito.doReturn;
-
-import android.content.Context;
-import android.content.ContextWrapper;
-import android.content.Intent;
-import android.hardware.fingerprint.Fingerprint;
-import android.hardware.fingerprint.FingerprintManager;
-import android.test.ActivityUnitTestCase;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.android.settings.R;
-
-import com.google.android.setupcompat.PartnerCustomizationLayout;
-import com.google.android.setupcompat.template.FooterBarMixin;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class FingerprintEnrollIntroductionTest
-        extends ActivityUnitTestCase<FingerprintEnrollIntroduction> {
-
-    private TestContext mContext;
-
-    @Mock
-    private FingerprintManager mFingerprintManager;
-
-    private FingerprintEnrollIntroduction mActivity;
-
-    public FingerprintEnrollIntroductionTest() {
-        super(FingerprintEnrollIntroduction.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        MockitoAnnotations.initMocks(this);
-        mContext = new TestContext(getInstrumentation().getTargetContext());
-        setActivityContext(mContext);
-
-        getInstrumentation().runOnMainSync(() -> {
-            final Intent intent = new Intent();
-            mActivity = startActivity(intent,
-                    null /* savedInstanceState */, null /* lastNonConfigurationInstance */);
-        });
-    }
-
-    public void testMaxFingerprint_shouldShowErrorMessage() {
-        final int max = mContext.getResources().getInteger(
-                com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
-        doReturn(generateFingerprintList(max)).when(mFingerprintManager)
-                .getEnrolledFingerprints(anyInt());
-
-        getInstrumentation().runOnMainSync(() -> {
-            getInstrumentation().callActivityOnCreate(mActivity, null);
-            getInstrumentation().callActivityOnResume(mActivity);
-        });
-
-        final TextView errorTextView = (TextView) mActivity.findViewById(R.id.error_text);
-        assertNotNull(errorTextView.getText().toString());
-
-        PartnerCustomizationLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
-        final Button nextButton = layout.getMixin(FooterBarMixin.class).getPrimaryButtonView();
-        assertEquals(View.GONE, nextButton.getVisibility());
-    }
-
-    private List<Fingerprint> generateFingerprintList(int num) {
-        ArrayList<Fingerprint> list = new ArrayList<>();
-        for (int i = 0; i < num; i++) {
-            list.add(new Fingerprint("Fingerprint " + i, 0, i, 0));
-        }
-        return list;
-    }
-
-    public class TestContext extends ContextWrapper {
-
-        public TestContext(Context base) {
-            super(base);
-        }
-
-        @Override
-        public Object getSystemService(String name) {
-            if (Context.FINGERPRINT_SERVICE.equals(name)) {
-                return mFingerprintManager;
-            }
-            return super.getSystemService(name);
-        }
-    }
-}
diff --git a/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java b/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java
deleted file mode 100644
index 2d083f0..0000000
--- a/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2017 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.core;
-
-import static junit.framework.Assert.fail;
-
-import android.content.Context;
-import android.os.Looper;
-import android.platform.test.annotations.Presubmit;
-import android.util.ArraySet;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.search.SearchIndexableData;
-import com.android.settingslib.search.SearchIndexableResources;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.List;
-import java.util.Set;
-
-@RunWith(AndroidJUnit4.class)
-@MediumTest
-public class PreferenceControllerContractTest {
-
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        mContext = InstrumentationRegistry.getTargetContext();
-    }
-
-    @Test
-    @Presubmit
-    public void controllersInSearchShouldImplementPreferenceControllerMixin() {
-        Looper.prepare(); // Required by AutofillLoggingLevelPreferenceController
-        final Set<String> errorClasses = new ArraySet<>();
-
-        final SearchIndexableResources resources =
-                FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
-                        .getSearchIndexableResources();
-        for (SearchIndexableData bundle : resources.getProviderValues()) {
-
-            final BaseSearchIndexProvider provider =
-                    (BaseSearchIndexProvider) bundle.getSearchIndexProvider();
-            if (provider == null) {
-                continue;
-            }
-
-            final List<AbstractPreferenceController> controllers =
-                    provider.getPreferenceControllers(mContext);
-            if (controllers == null) {
-                continue;
-            }
-            for (AbstractPreferenceController controller : controllers) {
-                if (!(controller instanceof PreferenceControllerMixin)
-                        && !(controller instanceof BasePreferenceController)) {
-                    errorClasses.add(controller.getClass().getName());
-                }
-            }
-        }
-
-        if (!errorClasses.isEmpty()) {
-            final StringBuilder errorMessage = new StringBuilder()
-                    .append("Each preference must implement PreferenceControllerMixin ")
-                    .append("or extend BasePreferenceController, ")
-                    .append("the following classes don't:\n");
-            for (String c : errorClasses) {
-                errorMessage.append(c).append("\n");
-            }
-            fail(errorMessage.toString());
-        }
-    }
-}
diff --git a/tests/unit/src/com/android/settings/core/SettingsGatewayTest.java b/tests/unit/src/com/android/settings/core/SettingsGatewayTest.java
deleted file mode 100644
index f879876..0000000
--- a/tests/unit/src/com/android/settings/core/SettingsGatewayTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2017 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.core;
-
-import static android.content.pm.PackageManager.GET_ACTIVITIES;
-import static android.content.pm.PackageManager.GET_META_DATA;
-import static android.content.pm.PackageManager.MATCH_DISABLED_COMPONENTS;
-
-import static com.android.settings.SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static junit.framework.Assert.fail;
-
-import static org.junit.Assert.assertFalse;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.Bundle;
-import android.platform.test.annotations.Presubmit;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.core.gateway.SettingsGateway;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public class SettingsGatewayTest {
-
-    private static final String TAG = "SettingsGatewayTest";
-
-    private Context mContext;
-    private PackageManager mPackageManager;
-    private String mPackageName;
-
-    @Before
-    public void setUp() {
-        mContext = InstrumentationRegistry.getTargetContext();
-        mPackageManager = mContext.getPackageManager();
-        mPackageName = mContext.getPackageName();
-    }
-
-    @Test
-    @Presubmit
-    public void allRestrictedActivityMustBeDefinedInManifest() {
-        for (String className : SettingsGateway.SETTINGS_FOR_RESTRICTED) {
-            final Intent intent = new Intent();
-            intent.setComponent(new ComponentName(mPackageName, className));
-            List<ResolveInfo> resolveInfos = mPackageManager.queryIntentActivities(intent,
-                    MATCH_DISABLED_COMPONENTS);
-            Log.d(TAG, mPackageName + "/" + className + "; resolveInfo size: "
-                    + resolveInfos.size());
-            assertFalse(className + " is not-defined in manifest", resolveInfos.isEmpty());
-        }
-    }
-
-    @Test
-    @Presubmit
-    public void publicFragmentMustAppearInSettingsGateway()
-            throws PackageManager.NameNotFoundException {
-        final List<String> allowlistedFragment = new ArrayList<>();
-        final StringBuilder error = new StringBuilder();
-
-        for (String fragment : SettingsGateway.ENTRY_FRAGMENTS) {
-            allowlistedFragment.add(fragment);
-        }
-        final PackageInfo pi = mPackageManager.getPackageInfo(mPackageName,
-                GET_META_DATA | MATCH_DISABLED_COMPONENTS | GET_ACTIVITIES);
-        final List<ActivityInfo> activities = Arrays.asList(pi.activities);
-
-        for (ActivityInfo activity : activities) {
-            final Bundle metaData = activity.metaData;
-            if (metaData == null || !metaData.containsKey(META_DATA_KEY_FRAGMENT_CLASS)) {
-                continue;
-            }
-            final String fragmentName = metaData.getString(META_DATA_KEY_FRAGMENT_CLASS);
-
-            assertThat(fragmentName).isNotNull();
-            if (!allowlistedFragment.contains(fragmentName)) {
-                error.append("SettingsGateway.ENTRY_FRAGMENTS must contain " + fragmentName
-                        + " because this fragment is used in manifest for " + activity.name)
-                        .append("\n");
-            }
-        }
-        final String message = error.toString();
-        if (!TextUtils.isEmpty(message)) {
-            fail(message);
-        }
-    }
-}
diff --git a/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java b/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java
deleted file mode 100644
index ddd00a2..0000000
--- a/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Copyright (C) 2017 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.core;
-
-import static junit.framework.Assert.fail;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.os.Bundle;
-import android.platform.test.annotations.Presubmit;
-import android.provider.SearchIndexableResource;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag;
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settingslib.search.Indexable;
-import com.android.settingslib.search.SearchIndexableData;
-import com.android.settingslib.search.SearchIndexableRaw;
-import com.android.settingslib.search.SearchIndexableResources;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-@RunWith(AndroidJUnit4.class)
-@MediumTest
-public class UniquePreferenceTest {
-
-    private static final String TAG = "UniquePreferenceTest";
-    private static final List<String> IGNORE_PREF_TYPES = Arrays.asList(
-            "com.android.settingslib.widget.FooterPreference");
-
-    private static final List<String> ALLOWLISTED_DUPLICATE_KEYS = Arrays.asList(
-            "owner_info_settings",          // Lock screen message in security - multiple xml files
-                                            // contain this because security page is constructed by
-                                            // combining small xml chunks. Eventually the page
-                                            // should be formed as one single xml and this entry
-                                            // should be removed.
-
-            "dashboard_tile_placeholder",   // This is the placeholder pref for injecting dynamic
-                                            // tiles.
-            // Dup keys from About Phone v2 experiment.
-            "ims_reg_state",
-            "bt_address",
-            "device_model",
-            "firmware_version",
-            "regulatory_info",
-            "manual",
-            "legal_container",
-            "device_feedback",
-            "fcc_equipment_id",
-            "sim_status",
-            "build_number",
-            "phone_number",
-            "imei_info",
-            "wifi_ip_address",
-            "wifi_mac_address",
-            "safety_info",
-            // Dupe keys from data usage v2.
-            "data_usage_screen",
-            "cellular_data_usage",
-            "data_usage_wifi_screen",
-            "status_header",
-            "billing_preference",
-            "data_usage_cellular_screen",
-            "wifi_data_usage",
-            "data_usage_enable"
-    );
-
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        mContext = InstrumentationRegistry.getTargetContext();
-    }
-
-    /**
-     * All preferences should have their unique key. It's especially important for many parts of
-     * Settings to work properly: we assume pref keys are unique in displaying, search ranking,\
-     * search result suppression, and many other areas.
-     * <p/>
-     * So in this test we are checking preferences participating in search.
-     * <p/>
-     * Note: Preference is not limited to just <Preference/> object. Everything in preference xml
-     * should have a key.
-     */
-    @Test
-    @Presubmit
-    public void allPreferencesShouldHaveUniqueKey()
-            throws IOException, XmlPullParserException, Resources.NotFoundException {
-        final Set<String> uniqueKeys = new HashSet<>();
-        final Set<String> nullKeyClasses = new HashSet<>();
-        final Set<String> duplicatedKeys = new HashSet<>();
-        final SearchIndexableResources resources =
-                FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
-                        .getSearchIndexableResources();
-        for (SearchIndexableData SearchIndexableData : resources.getProviderValues()) {
-            verifyPreferenceKeys(uniqueKeys, duplicatedKeys, nullKeyClasses, SearchIndexableData);
-        }
-
-        if (!nullKeyClasses.isEmpty()) {
-            final StringBuilder nullKeyErrors = new StringBuilder()
-                    .append("Each preference/SearchIndexableData must have a key, ")
-                    .append("the following classes have null keys:\n");
-            for (String c : nullKeyClasses) {
-                nullKeyErrors.append(c).append("\n");
-            }
-            fail(nullKeyErrors.toString());
-        }
-
-        if (!duplicatedKeys.isEmpty()) {
-            final StringBuilder dupeKeysError = new StringBuilder(
-                    "The following keys are not unique\n");
-            for (String c : duplicatedKeys) {
-                dupeKeysError.append(c).append("\n");
-            }
-            fail(dupeKeysError.toString());
-        }
-    }
-
-    private void verifyPreferenceKeys(Set<String> uniqueKeys, Set<String> duplicatedKeys,
-            Set<String> nullKeyClasses, SearchIndexableData searchIndexableData)
-            throws IOException, XmlPullParserException, Resources.NotFoundException {
-
-        final String className = searchIndexableData.getTargetClass().getName();
-        final Indexable.SearchIndexProvider provider =
-                searchIndexableData.getSearchIndexProvider();
-        final List<SearchIndexableRaw> rawsToIndex = provider.getRawDataToIndex(mContext, true);
-        final List<SearchIndexableResource> resourcesToIndex =
-                provider.getXmlResourcesToIndex(mContext, true);
-        verifyResources(className, resourcesToIndex, uniqueKeys, duplicatedKeys, nullKeyClasses);
-        verifyRaws(className, rawsToIndex, uniqueKeys, duplicatedKeys, nullKeyClasses);
-    }
-
-    private void verifyResources(String className, List<SearchIndexableResource> resourcesToIndex,
-            Set<String> uniqueKeys, Set<String> duplicatedKeys, Set<String> nullKeyClasses)
-            throws IOException, XmlPullParserException, Resources.NotFoundException {
-        if (resourcesToIndex == null) {
-            Log.d(TAG, className + "is not providing SearchIndexableResource, skipping");
-            return;
-        }
-
-        for (SearchIndexableResource sir : resourcesToIndex) {
-            final List<Bundle> metadata = PreferenceXmlParserUtils.extractMetadata(mContext,
-                    sir.xmlResId,
-                    MetadataFlag.FLAG_INCLUDE_PREF_SCREEN
-                            | MetadataFlag.FLAG_NEED_KEY
-                            | MetadataFlag.FLAG_NEED_PREF_TYPE);
-
-            for (Bundle bundle : metadata) {
-                final String type = bundle.getString(PreferenceXmlParserUtils.METADATA_PREF_TYPE);
-                if (IGNORE_PREF_TYPES.contains(type)) {
-                    continue;
-                }
-                final String key = bundle.getString(PreferenceXmlParserUtils.METADATA_KEY);
-                if (TextUtils.isEmpty(key)) {
-                    Log.e(TAG, "Every preference must have an key; found null key"
-                            + " in " + className);
-                    nullKeyClasses.add(className);
-                    continue;
-                }
-                if (uniqueKeys.contains(key) && !ALLOWLISTED_DUPLICATE_KEYS.contains(key)) {
-                    Log.e(TAG, "Every preference key must unique; found "
-                            + " in " + className
-                            + " / " + key);
-                    duplicatedKeys.add(key);
-                }
-                uniqueKeys.add(key);
-            }
-        }
-    }
-
-    private void verifyRaws(String className, List<SearchIndexableRaw> rawsToIndex,
-            Set<String> uniqueKeys, Set<String> duplicatedKeys, Set<String> nullKeyClasses) {
-        if (rawsToIndex == null) {
-            Log.d(TAG, className + "is not providing SearchIndexableRaw, skipping");
-            return;
-        }
-        for (SearchIndexableRaw raw : rawsToIndex) {
-            if (TextUtils.isEmpty(raw.key)) {
-                Log.e(TAG, "Every SearchIndexableRaw must have an key; found null key"
-                        + " in " + className);
-                nullKeyClasses.add(className);
-                continue;
-            }
-            if (uniqueKeys.contains(raw.key) && !ALLOWLISTED_DUPLICATE_KEYS.contains(raw.key)) {
-                Log.e(TAG, "Every SearchIndexableRaw key must unique; found " + raw.key
-                        + " in " + className);
-                duplicatedKeys.add(raw.key);
-            }
-        }
-    }
-}
diff --git a/tests/unit/src/com/android/settings/core/UserRestrictionTest.java b/tests/unit/src/com/android/settings/core/UserRestrictionTest.java
deleted file mode 100644
index e8e4927..0000000
--- a/tests/unit/src/com/android/settings/core/UserRestrictionTest.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (C) 2017 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.core;
-
-import static junit.framework.Assert.fail;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.content.res.XmlResourceParser;
-import android.os.UserManager;
-import android.provider.SearchIndexableResource;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.util.Xml;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settingslib.search.Indexable;
-import com.android.settingslib.search.SearchIndexableData;
-import com.android.settingslib.search.SearchIndexableResources;
-
-import com.google.android.collect.Sets;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Set;
-
-@RunWith(AndroidJUnit4.class)
-@MediumTest
-public class UserRestrictionTest {
-
-    private static final String TAG = "UserRestrictionTest";
-
-    private Context mContext;
-
-    private static final Set<String> USER_RESTRICTIONS = Sets.newHashSet(
-            UserManager.DISALLOW_CONFIG_DATE_TIME,
-            UserManager.DISALLOW_CONFIG_CREDENTIALS,
-            UserManager.DISALLOW_NETWORK_RESET,
-            UserManager.DISALLOW_FACTORY_RESET,
-            UserManager.DISALLOW_CONFIG_TETHERING,
-            UserManager.DISALLOW_CONFIG_VPN,
-            UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS,
-            UserManager.DISALLOW_AIRPLANE_MODE,
-            UserManager.DISALLOW_CONFIG_BRIGHTNESS,
-            UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT
-    );
-
-    @Before
-    public void setUp() {
-        mContext = InstrumentationRegistry.getTargetContext();
-    }
-
-    /**
-     * Verity that userRestriction attributes are entered and parsed successfully.
-     */
-    @Test
-    public void userRestrictionAttributeShouldBeValid()
-            throws IOException, XmlPullParserException, Resources.NotFoundException {
-        final SearchIndexableResources resources =
-                FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
-                        .getSearchIndexableResources();
-        for (SearchIndexableData bundle : resources.getProviderValues()) {
-            verifyUserRestriction(bundle);
-        }
-    }
-
-    private void verifyUserRestriction(SearchIndexableData searchIndexableData)
-            throws IOException, XmlPullParserException, Resources.NotFoundException {
-
-        final Indexable.SearchIndexProvider provider =
-                searchIndexableData.getSearchIndexProvider();
-        final List<SearchIndexableResource> resourcesToIndex =
-                provider.getXmlResourcesToIndex(mContext, true);
-
-        final String className = searchIndexableData.getTargetClass().getName();
-
-        if (resourcesToIndex == null) {
-            Log.d(TAG, className + "is not providing SearchIndexableResource, skipping");
-            return;
-        }
-
-        for (SearchIndexableResource sir : resourcesToIndex) {
-            if (sir.xmlResId <= 0) {
-                Log.d(TAG, className + " doesn't have a valid xml to index.");
-                continue;
-            }
-            final XmlResourceParser parser = mContext.getResources().getXml(sir.xmlResId);
-
-            int type;
-            while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
-                    && type != XmlPullParser.START_TAG) {
-                // Parse next until start tag is found
-            }
-            final int outerDepth = parser.getDepth();
-
-            do {
-                if (type != XmlPullParser.START_TAG) {
-                    continue;
-                }
-                final String nodeName = parser.getName();
-                if (!nodeName.endsWith("Preference")) {
-                    continue;
-                }
-                final AttributeSet attrs = Xml.asAttributeSet(parser);
-                final String userRestriction = getDataUserRestrictions(mContext, attrs);
-                if (userRestriction != null) {
-                    if(!isValidRestriction(userRestriction)) {
-                        fail("userRestriction in " + className + " not valid.");
-                    }
-                }
-            } while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
-                    && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth));
-        }
-    }
-
-    boolean isValidRestriction(String userRestriction) {
-        return USER_RESTRICTIONS.contains(userRestriction);
-    }
-
-    private String getDataUserRestrictions(Context context, AttributeSet attrs) {
-        return getData(context, attrs,
-                com.android.settingslib.R.styleable.RestrictedPreference,
-                com.android.settingslib.R.styleable.RestrictedPreference_userRestriction);
-    }
-
-    private String getData(Context context, AttributeSet set, int[] attrs, int resId) {
-        final TypedArray ta = context.obtainStyledAttributes(set, attrs);
-        String data = ta.getString(resId);
-        ta.recycle();
-        return data;
-    }
-}
diff --git a/tests/unit/src/com/android/settings/development/BluetoothMaxConnectedAudioDevicesPreferenceControllerInstrumentationTest.java b/tests/unit/src/com/android/settings/development/BluetoothMaxConnectedAudioDevicesPreferenceControllerInstrumentationTest.java
deleted file mode 100644
index dbb73c0..0000000
--- a/tests/unit/src/com/android/settings/development/BluetoothMaxConnectedAudioDevicesPreferenceControllerInstrumentationTest.java
+++ /dev/null
@@ -1,65 +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.development;
-
-import android.content.Context;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.R;
-
-import org.hamcrest.CoreMatchers;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.Arrays;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class BluetoothMaxConnectedAudioDevicesPreferenceControllerInstrumentationTest {
-
-    private Context mTargetContext;
-    private String[] mListValues;
-    private String[] mListEntries;
-    private String mDefaultMaxConnectedAudioDevices;
-
-    @Before
-    public void setUp() throws Exception {
-        mTargetContext = InstrumentationRegistry.getTargetContext();
-        // Get XML values without mock
-        mListValues = mTargetContext.getResources()
-                .getStringArray(R.array.bluetooth_max_connected_audio_devices_values);
-        mListEntries = mTargetContext.getResources()
-                .getStringArray(R.array.bluetooth_max_connected_audio_devices);
-        mDefaultMaxConnectedAudioDevices = String.valueOf(mTargetContext.getResources()
-                .getInteger(
-                        com.android.internal.R.integer
-                                .config_bluetooth_max_connected_audio_devices));
-    }
-
-    @Test
-    public void verifyResource() {
-        // Verify normal list entries and default preference entries have the same size
-        Assert.assertEquals(mListEntries.length, mListValues.length);
-        Assert.assertThat(Arrays.asList(mListValues),
-                CoreMatchers.hasItem(mDefaultMaxConnectedAudioDevices));
-    }
-}
diff --git a/tests/unit/src/com/android/settings/fuelgauge/batterytip/RestrictAppTest.java b/tests/unit/src/com/android/settings/fuelgauge/batterytip/RestrictAppTest.java
deleted file mode 100644
index 355a7e4..0000000
--- a/tests/unit/src/com/android/settings/fuelgauge/batterytip/RestrictAppTest.java
+++ /dev/null
@@ -1,126 +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.fuelgauge.batterytip;
-
-import static androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
-import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static androidx.test.espresso.matcher.ViewMatchers.withText;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.Instrumentation;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.support.test.uiautomator.UiDevice;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class RestrictAppTest {
-    private static final String WM_DISMISS_KEYGUARD_COMMAND = "wm dismiss-keyguard";
-    private static final String BATTERY_INTENT = "android.intent.action.POWER_USAGE_SUMMARY";
-    private static final String PACKAGE_SETTINGS = "com.android.settings";
-    private static final String PACKAGE_SYSTEM_UI = "com.android.systemui";
-    private static final int ANOMALY_TYPE =
-            StatsManagerConfig.AnomalyType.EXCESSIVE_WAKELOCK_ALL_SCREEN_OFF;
-
-    private BatteryDatabaseManager mBatteryDatabaseManager;
-    private PackageManager mPackageManager;
-    private UiDevice mUiDevice;
-
-    @Before
-    public void setUp() throws Exception {
-        final Context context = InstrumentationRegistry.getTargetContext();
-
-        mUiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-        mUiDevice.wakeUp();
-        mUiDevice.executeShellCommand(WM_DISMISS_KEYGUARD_COMMAND);
-
-        mPackageManager = context.getPackageManager();
-        mBatteryDatabaseManager = BatteryDatabaseManager.getInstance(context);
-        mBatteryDatabaseManager.deleteAllAnomaliesBeforeTimeStamp(System.currentTimeMillis() +
-                TimeUnit.DAYS.toMillis(1));
-    }
-
-    @Test
-    public void batterySettings_hasOneAnomaly_showAnomaly() throws
-            PackageManager.NameNotFoundException {
-        mBatteryDatabaseManager.insertAnomaly(mPackageManager.getPackageUid(PACKAGE_SETTINGS, 0),
-                PACKAGE_SETTINGS, ANOMALY_TYPE,
-                AnomalyDatabaseHelper.State.NEW, System.currentTimeMillis());
-
-        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
-        instrumentation.startActivitySync(createBatteryIntent());
-        onView(withText("Restrict 1 app")).check(matches(isDisplayed()));
-    }
-
-    @Test
-    public void batterySettings_hasTwoAnomalies_showAnomalies() throws
-            PackageManager.NameNotFoundException {
-        mBatteryDatabaseManager.insertAnomaly(mPackageManager.getPackageUid(PACKAGE_SETTINGS, 0),
-                PACKAGE_SETTINGS, ANOMALY_TYPE,
-                AnomalyDatabaseHelper.State.NEW, System.currentTimeMillis());
-        mBatteryDatabaseManager.insertAnomaly(mPackageManager.getPackageUid(PACKAGE_SYSTEM_UI, 0),
-                PACKAGE_SYSTEM_UI, ANOMALY_TYPE,
-                AnomalyDatabaseHelper.State.NEW, System.currentTimeMillis());
-
-        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
-        instrumentation.startActivitySync(createBatteryIntent());
-        onView(withText("Restrict 2 apps")).check(matches(isDisplayed()));
-    }
-
-    @Test
-    public void insertDuplicateAnomalies_onlyInsertOnce() throws
-            PackageManager.NameNotFoundException {
-        final int uid = mPackageManager.getPackageUid(PACKAGE_SETTINGS, 0);
-        final long now = System.currentTimeMillis();
-
-        // Insert same anomaly twice, it fails at the second time.
-        assertThat(mBatteryDatabaseManager.insertAnomaly(uid, PACKAGE_SETTINGS, ANOMALY_TYPE,
-                AnomalyDatabaseHelper.State.NEW, now)).isTrue();
-        assertThat(mBatteryDatabaseManager.insertAnomaly(uid, PACKAGE_SETTINGS, ANOMALY_TYPE,
-                AnomalyDatabaseHelper.State.NEW, now)).isFalse();
-
-        // In database, only contains one row
-        List<AppInfo> newAppInfos = mBatteryDatabaseManager.queryAllAnomalies(0,
-                AnomalyDatabaseHelper.State.NEW);
-        assertThat(newAppInfos).containsExactly(new AppInfo.Builder()
-                .setUid(uid)
-                .setPackageName(PACKAGE_SETTINGS)
-                .addAnomalyType(ANOMALY_TYPE)
-                .build());
-    }
-
-    private Intent createBatteryIntent() {
-        final Intent intent = new Intent(BATTERY_INTENT);
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
-        return intent;
-    }
-}
diff --git a/tests/unit/src/com/android/settings/network/MobileDataEnabledListenerTest.java b/tests/unit/src/com/android/settings/network/MobileDataEnabledListenerTest.java
deleted file mode 100644
index 190dc3d..0000000
--- a/tests/unit/src/com/android/settings/network/MobileDataEnabledListenerTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2020 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;
-
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.net.Uri;
-import android.provider.Settings;
-
-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.Mock;
-import org.mockito.MockitoAnnotations;
-
-@RunWith(AndroidJUnit4.class)
-public class MobileDataEnabledListenerTest {
-    private static final int SUB_ID_ONE = 111;
-    private static final int SUB_ID_TWO = 222;
-
-    @Mock
-    private MobileDataEnabledListener.Client mClient;
-
-    private Context mContext;
-    private MobileDataEnabledListener mListener;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = ApplicationProvider.getApplicationContext();
-        mListener = new MobileDataEnabledListener(mContext, mClient);
-    }
-
-    @Test
-    public void onMobileDataEnabledChange_firesCorrectly() {
-        mListener.start(SUB_ID_ONE);
-        final Uri uri = Settings.Global.getUriFor(Settings.Global.MOBILE_DATA + SUB_ID_ONE);
-
-        mContext.getContentResolver().notifyChange(uri, null);
-
-        verify(mClient).onMobileDataEnabledChange();
-    }
-
-    @Test
-    public void onMobileDataEnabledChange_doesNotFireAfterStop() {
-        mListener.start(SUB_ID_ONE);
-        mListener.stop();
-        final Uri uri = Settings.Global.getUriFor(Settings.Global.MOBILE_DATA + SUB_ID_ONE);
-
-        mContext.getContentResolver().notifyChange(uri, null);
-
-        verify(mClient, never()).onMobileDataEnabledChange();
-    }
-
-    @Test
-    public void onMobileDataEnabledChange_changedToDifferentId_firesCorrectly() {
-        mListener.start(SUB_ID_ONE);
-        mListener.stop();
-        mListener.start(SUB_ID_TWO);
-        final Uri uri = Settings.Global.getUriFor(Settings.Global.MOBILE_DATA + SUB_ID_TWO);
-
-        mContext.getContentResolver().notifyChange(uri, null);
-
-        verify(mClient).onMobileDataEnabledChange();
-    }
-}
diff --git a/tests/unit/src/com/android/settings/network/TetherProvisioningActivityTest.java b/tests/unit/src/com/android/settings/network/TetherProvisioningActivityTest.java
deleted file mode 100644
index af29dcc..0000000
--- a/tests/unit/src/com/android/settings/network/TetherProvisioningActivityTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2020 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;
-
-import static android.net.TetheringConstants.EXTRA_ADD_TETHER_TYPE;
-import static android.net.TetheringConstants.EXTRA_PROVISION_CALLBACK;
-import static android.net.TetheringManager.TETHERING_WIFI;
-
-import static com.android.settings.network.TetherProvisioningActivity.EXTRA_TETHER_SUBID;
-import static com.android.settings.network.TetherProvisioningActivity.EXTRA_TETHER_UI_PROVISIONING_APP_NAME;
-import static com.android.settings.network.TetherProvisioningActivity.PROVISION_REQUEST;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.net.TetheringManager;
-import android.os.Bundle;
-import android.os.ResultReceiver;
-import android.provider.Settings;
-import android.telephony.SubscriptionManager;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.test.core.app.ActivityScenario;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-@RunWith(AndroidJUnit4.class)
-public class TetherProvisioningActivityTest {
-    private static class WrappedReceiver extends ResultReceiver {
-        private final CompletableFuture<Integer> mFuture = new CompletableFuture<>();
-
-        WrappedReceiver() {
-            super(null /* handler */);
-        }
-
-        @Override
-        protected void onReceiveResult(int resultCode, Bundle resultData) {
-            mFuture.complete(resultCode);
-        }
-
-        public int get() throws Exception {
-            return mFuture.get(10_000L, TimeUnit.MILLISECONDS);
-        }
-    }
-
-    @Test
-    public void testOnCreate_FinishWithNonActiveDataSubId() throws Exception {
-        final WrappedReceiver receiver = new WrappedReceiver();
-        try (ActivityScenario<TetherProvisioningActivity> scenario = ActivityScenario.launch(
-                new Intent(Settings.ACTION_TETHER_PROVISIONING_UI)
-                        .putExtra(EXTRA_ADD_TETHER_TYPE, TETHERING_WIFI)
-                        .putExtra(EXTRA_PROVISION_CALLBACK, receiver)
-                        .putExtra(TetherProvisioningActivity.EXTRA_TETHER_SUBID, 10000))) {
-            assertEquals(TetheringManager.TETHER_ERROR_PROVISIONING_FAILED, receiver.get());
-            assertEquals(Lifecycle.State.DESTROYED, scenario.getState());
-        }
-    }
-
-    @Test
-    public void testOnCreate_FinishWithUnavailableProvisioningApp() throws Exception {
-        final WrappedReceiver receiver = new WrappedReceiver();
-        final int subId = SubscriptionManager.getActiveDataSubscriptionId();
-        final String[] emptyProvisioningApp = { "", "" };
-        try (ActivityScenario<TetherProvisioningActivity> scenario = ActivityScenario.launch(
-                new Intent(Settings.ACTION_TETHER_PROVISIONING_UI)
-                        .putExtra(EXTRA_ADD_TETHER_TYPE, TETHERING_WIFI)
-                        .putExtra(EXTRA_PROVISION_CALLBACK, receiver)
-                        .putExtra(EXTRA_TETHER_SUBID, subId)
-                        .putExtra(EXTRA_TETHER_UI_PROVISIONING_APP_NAME, emptyProvisioningApp))) {
-            assertEquals(TetheringManager.TETHER_ERROR_PROVISIONING_FAILED, receiver.get());
-            assertEquals(Lifecycle.State.DESTROYED, scenario.getState());
-        }
-    }
-
-    @Test
-    public void testOnCreate_startActivityForResult() {
-        final WrappedReceiver receiver = new WrappedReceiver();
-        final int subId = SubscriptionManager.getActiveDataSubscriptionId();
-        final String[] provisionApp = new String[] {
-                "android.test.entitlement",
-                "android.test.entitlement.InstrumentedEntitlementActivity"
-        };
-        try (ActivityScenario<TetherProvisioningActivity> scenario = ActivityScenario.launch(
-                new Intent(Settings.ACTION_TETHER_PROVISIONING_UI)
-                        .putExtra(EXTRA_ADD_TETHER_TYPE, TETHERING_WIFI)
-                        .putExtra(EXTRA_PROVISION_CALLBACK, receiver)
-                        .putExtra(EXTRA_TETHER_SUBID, subId)
-                        .putExtra(EXTRA_TETHER_UI_PROVISIONING_APP_NAME, provisionApp))) {
-            scenario.onActivity(activity -> {
-                assertFalse(activity.isFinishing());
-                activity.onActivityResult(PROVISION_REQUEST, Activity.RESULT_OK, null /* intent */);
-                try {
-                    assertEquals(TetheringManager.TETHER_ERROR_NO_ERROR, receiver.get());
-                } catch (Exception e) {
-                    // ActivityAction#perform() doesn't throw the exception. Just catch the
-                    // exception and call fail() here.
-                    fail("Can not get result after 10s.");
-                }
-                assertTrue(activity.isFinishing());
-            });
-        }
-    }
-}
diff --git a/tests/unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.java
index 6036ec7..67f5f1a 100644
--- a/tests/unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.java
@@ -111,9 +111,11 @@
     @Test
     public void setChecked_setDataIntoSubscriptionManager() {
         mController.setChecked(true);
-        verify(mTelephonyManager).setAlwaysAllowMmsData(true);
+        verify(mTelephonyManager).setMobileDataPolicyEnabledStatus(
+                TelephonyManager.MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED, true);
 
         mController.setChecked(false);
-        verify(mTelephonyManager).setAlwaysAllowMmsData(false);
+        verify(mTelephonyManager).setMobileDataPolicyEnabledStatus(
+                TelephonyManager.MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED, false);
     }
 }
diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
deleted file mode 100644
index 3256aba..0000000
--- a/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2020 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 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.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.Arrays;
-
-@RunWith(AndroidJUnit4.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 PreferenceManager mPreferenceManager;
-    @Mock
-    private SharedPreferences mSharedPreferences;
-
-    private CellInfoWcdma mCellInfo1 = new CellInfoWcdma();
-    private CellIdentityWcdma mCellId1 = new CellIdentityWcdma();
-    private CellInfoLte mCellInfo2 = new CellInfoLte();
-    private CellIdentityLte mCellId2 = new CellIdentityLte();
-
-    private Context mContext;
-
-    private PreferenceCategory mPreferenceCategory;
-
-    private NetworkSelectSettings mNetworkSelectSettings;
-
-    @Before
-    @UiThreadTest
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(ApplicationProvider.getApplicationContext());
-        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
-        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
-        when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
-
-        mCellInfo1.setRegistered(true);
-        mCellInfo1.setCellIdentity(mCellId1);
-        mCellId1.setOperatorAlphaLong(CARRIER_NAME1);
-        mCellInfo2.setRegistered(false);
-        mCellInfo2.setCellIdentity(mCellId2);
-        mCellId2.setOperatorAlphaLong(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/unit/src/com/android/settings/notification/AppNotificationSettingsTest.java b/tests/unit/src/com/android/settings/notification/AppNotificationSettingsTest.java
deleted file mode 100644
index 19b1360..0000000
--- a/tests/unit/src/com/android/settings/notification/AppNotificationSettingsTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2017 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.notification;
-
-import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
-
-import static androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.action.ViewActions.click;
-import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
-import static androidx.test.espresso.intent.Intents.intended;
-import static androidx.test.espresso.intent.matcher.IntentMatchers.hasExtra;
-import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
-import static androidx.test.espresso.matcher.ViewMatchers.withId;
-import static androidx.test.espresso.matcher.ViewMatchers.withText;
-
-import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT;
-
-import static org.hamcrest.Matchers.allOf;
-import static org.junit.Assert.fail;
-
-import android.app.Instrumentation;
-import android.app.NotificationChannel;
-import android.app.NotificationChannelGroup;
-import android.app.NotificationManager;
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-import android.support.test.uiautomator.UiDevice;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.espresso.intent.Intents;
-import androidx.test.espresso.matcher.ViewMatchers;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class AppNotificationSettingsTest {
-    private static final String WM_DISMISS_KEYGUARD_COMMAND = "wm dismiss-keyguard";
-
-    private UiDevice mUiDevice;
-    private Context mTargetContext;
-    private Instrumentation mInstrumentation;
-
-    NotificationManager mNm;
-    private NotificationChannelGroup mGroup1;
-    private NotificationChannel mGroup1Channel1;
-    private NotificationChannel mGroup1Channel2;
-    private NotificationChannelGroup mGroup2;
-    private NotificationChannel mGroup2Channel1;
-    private NotificationChannel mUngroupedChannel;
-
-    @Before
-    public void setUp() throws Exception {
-        mInstrumentation = InstrumentationRegistry.getInstrumentation();
-        mTargetContext = mInstrumentation.getTargetContext();
-
-        mUiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-        mUiDevice.wakeUp();
-        mUiDevice.executeShellCommand(WM_DISMISS_KEYGUARD_COMMAND);
-
-        mNm  = (NotificationManager) mTargetContext.getSystemService(Context.NOTIFICATION_SERVICE);
-
-        mGroup1 = new NotificationChannelGroup(this.getClass().getName() + "1", "group1");
-        mGroup2 = new NotificationChannelGroup(this.getClass().getName() + "2", "group2");
-        mNm.createNotificationChannelGroup(mGroup1);
-        mNm.createNotificationChannelGroup(mGroup2);
-
-        mGroup1Channel1 = createChannel(mGroup1, this.getClass().getName()+ "c1-1");
-        mGroup1Channel2 = createChannel(mGroup1, this.getClass().getName()+ "c1-2");
-        mGroup2Channel1 = createChannel(mGroup2, this.getClass().getName()+ "c2-1");
-        mUngroupedChannel = createChannel(null, this.getClass().getName()+ "c");
-    }
-
-    @Test
-    public void launchNotificationSetting_shouldNotHaveAppInfoLink() {
-        final Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
-                .putExtra(Settings.EXTRA_APP_PACKAGE, mTargetContext.getPackageName())
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
-        mInstrumentation.startActivitySync(intent);
-
-        onView(allOf(withId(android.R.id.button1),
-                withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
-                .check(doesNotExist());
-    }
-
-    @Test
-    public void launchNotificationSetting_showGroupsWithMultipleChannels() {
-        final Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
-                .putExtra(Settings.EXTRA_APP_PACKAGE, mTargetContext.getPackageName())
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mInstrumentation.startActivitySync(intent);
-        onView(allOf(withText(mGroup1.getName().toString()))).check(
-                matches(isDisplayed()));
-        onView(allOf(withText(mGroup1Channel1.getName().toString()))).check(
-                matches(isDisplayed()));
-        onView(allOf(withText(mGroup1Channel2.getName().toString()))).check(
-                matches(isDisplayed()));
-    }
-
-    @Test
-    public void launchNotificationSetting_showUngroupedChannels() {
-        final Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
-                .putExtra(Settings.EXTRA_APP_PACKAGE, mTargetContext.getPackageName())
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mInstrumentation.startActivitySync(intent);
-        onView(allOf(withText(mUngroupedChannel.getName().toString())))
-                .check(matches(isDisplayed()));
-    }
-
-    @Test
-    public void launchNotificationSetting_showGroupsWithOneChannel() {
-        final Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
-                .putExtra(Settings.EXTRA_APP_PACKAGE, mTargetContext.getPackageName())
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mInstrumentation.startActivitySync(intent);
-
-        onView(allOf(withText(mGroup2.getName().toString())))
-                .check(matches(isDisplayed()));
-        onView(allOf(withText(mGroup2Channel1.getName().toString())))
-                .check(matches(isDisplayed()));
-    }
-
-    private NotificationChannel createChannel(NotificationChannelGroup group,
-            String id) {
-        NotificationChannel channel = new NotificationChannel(id, id, IMPORTANCE_DEFAULT);
-        if (group != null) {
-            channel.setGroup(group.getId());
-        }
-        mNm.createNotificationChannel(channel);
-        return channel;
-    }
-}
diff --git a/tests/unit/src/com/android/settings/notification/ZenModeSettingsIntegrationTest.java b/tests/unit/src/com/android/settings/notification/ZenModeSettingsIntegrationTest.java
deleted file mode 100644
index 4120a07..0000000
--- a/tests/unit/src/com/android/settings/notification/ZenModeSettingsIntegrationTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.android.settings;
-
-import static androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
-import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static androidx.test.espresso.matcher.ViewMatchers.withText;
-
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-import android.support.test.uiautomator.UiDevice;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.LargeTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@LargeTest
-public class ZenModeSettingsIntegrationTest {
-    private static final String WM_DISMISS_KEYGUARD_COMMAND = "wm dismiss-keyguard";
-
-    private Context mContext;
-    private UiDevice mUiDevice;
-
-    @Before
-    public void setUp() throws Exception {
-        mContext = InstrumentationRegistry.getTargetContext();
-        mUiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-        mUiDevice.wakeUp();
-        mUiDevice.executeShellCommand(WM_DISMISS_KEYGUARD_COMMAND);
-    }
-
-    @Test
-    public void testZenModeSettingsPreferences() {
-        launchZenSettings();
-        onView(withText("Calls")).check(matches(isDisplayed()));
-        onView(withText("SMS, MMS, and messaging apps")).check(matches(isDisplayed()));
-        onView(withText("Restrict notifications")).check(matches(isDisplayed()));
-        onView(withText("Duration")).check(matches(isDisplayed()));
-        onView(withText("Schedules")).check(matches(isDisplayed()));
-    }
-
-    @Test
-    public void testZenModeBehaviorPreferences() {
-        launchZenBehaviorSettings();
-        onView(withText("Calls")).check(matches(isDisplayed()));
-        onView(withText("SMS, MMS, and messaging apps")).check(matches(isDisplayed()));
-        onView(withText("Restrict notifications")).check(matches(isDisplayed()));
-        onView(withText("Duration")).check(matches(isDisplayed()));
-        onView(withText("Schedules")).check(matches(isDisplayed()));
-    }
-
-    @Test
-    public void testZenModeAutomationPreferences() {
-        launchZenAutomationSettings();
-        onView(withText("Sleeping")).check(matches(isDisplayed()));
-        onView(withText("Event")).check(matches(isDisplayed()));
-        onView(withText("Add more")).check(matches(isDisplayed()));
-    }
-
-    private void launchZenSettings() {
-        Intent settingsIntent = new Intent(Settings.ACTION_ZEN_MODE_SETTINGS)
-                .setPackage(mContext.getPackageName())
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mContext.startActivity(settingsIntent);
-    }
-
-    private void launchZenAutomationSettings() {
-        Intent settingsIntent = new Intent(Settings.ACTION_ZEN_MODE_AUTOMATION_SETTINGS)
-                .setPackage(mContext.getPackageName())
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mContext.startActivity(settingsIntent);
-    }
-
-    private void launchZenBehaviorSettings() {
-        Intent settingsIntent = new Intent(Settings.ACTION_ZEN_MODE_PRIORITY_SETTINGS)
-                .setPackage(mContext.getPackageName())
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mContext.startActivity(settingsIntent);
-    }
-}
\ No newline at end of file
diff --git a/tests/unit/src/com/android/settings/password/ChooseLockGenericTest.java b/tests/unit/src/com/android/settings/password/ChooseLockGenericTest.java
deleted file mode 100644
index 4b539cc..0000000
--- a/tests/unit/src/com/android/settings/password/ChooseLockGenericTest.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright (C) 2017 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.password;
-
-import static androidx.test.InstrumentationRegistry.getInstrumentation;
-import static androidx.test.InstrumentationRegistry.getTargetContext;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.junit.Assert.assertTrue;
-
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.app.ActivityManager.AppTask;
-import android.app.KeyguardManager;
-import android.app.admin.DevicePolicyManager;
-import android.content.Context;
-import android.content.Intent;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject;
-import android.support.test.uiautomator.UiSelector;
-import android.text.format.DateUtils;
-import android.view.WindowManager;
-
-import androidx.test.filters.MediumTest;
-import androidx.test.rule.ActivityTestRule;
-import androidx.test.runner.AndroidJUnit4;
-import androidx.test.runner.lifecycle.ActivityLifecycleMonitorRegistry;
-import androidx.test.runner.lifecycle.Stage;
-
-import com.android.internal.widget.LockPatternUtils;
-import com.android.internal.widget.LockscreenCredential;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Tests for {@link ChooseLockGenericTest}
- *
- * m SettingsTests &&
- * adb install \
- * -r -g  ${ANDROID_PRODUCT_OUT}/data/app/SettingsTests/SettingsTests.apk &&
- * adb shell am instrument -e class com.android.settings.password.ChooseLockGenericTest \
- * -w com.android.settings.tests/androidx.test.runner.AndroidJUnitRunner
- */
-@RunWith(AndroidJUnit4.class)
-@MediumTest
-public class ChooseLockGenericTest {
-    private static final long TIMEOUT = 5 * DateUtils.SECOND_IN_MILLIS;
-    private static final Intent PHISHING_ATTACK_INTENT = new Intent()
-            .putExtra("confirm_credentials", false)
-            .putExtra("password_confirmed", true);
-
-    private UiDevice mDevice;
-    private Context mTargetContext;
-    private String mSettingPackage;
-
-    @Rule
-    public ActivityTestRule<ChooseLockGeneric> mChooseLockGenericActivityRule =
-            new ActivityTestRule<>(
-                    ChooseLockGeneric.class,
-                    true /* enable touch at launch */,
-                    false /* don't launch at every test */);
-
-    @Before
-    public void setUp() throws Exception {
-        mDevice = UiDevice.getInstance(getInstrumentation());
-        mTargetContext = getInstrumentation().getTargetContext();
-        mSettingPackage = mTargetContext.getPackageName();
-    }
-
-    @Test
-    public void testConfirmLockPasswordShown_deviceWithPassword() throws Throwable {
-        setPassword();
-        try {
-            // GIVEN a PIN password is set on this device at set up.
-            // WHEN ChooseLockGeneric is launched with no extras.
-            mChooseLockGenericActivityRule.launchActivity(null /* No extras */);
-            // THEN ConfirmLockPassword.InternalActivity is shown.
-            final Activity activity = getCurrentActivity();
-            assertThat(isSecureWindow(activity)).isTrue();
-            assertThat(activity)
-                    .isInstanceOf(ConfirmLockPassword.InternalActivity.class);
-        } finally {
-            finishAllAppTasks();
-            mDevice.waitForIdle();
-            clearPassword();
-        }
-    }
-
-    @Test
-    public void testConfirmLockPasswordShown_deviceWithPassword_phishingAttack() throws Throwable {
-        setPassword();
-        try {
-            // GIVEN a PIN password is set on this device at set up.
-            // WHEN ChooseLockGeneric is launched with extras to by-pass lock password confirmation.
-            mChooseLockGenericActivityRule.launchActivity(PHISHING_ATTACK_INTENT);
-            // THEN ConfirmLockPassword.InternalActivity is still shown.
-            final Activity activity = getCurrentActivity();
-            assertThat(isSecureWindow(activity)).isTrue();
-            assertThat(activity)
-                    .isInstanceOf(ConfirmLockPassword.InternalActivity.class);
-        } finally {
-            finishAllAppTasks();
-            mDevice.waitForIdle();
-            clearPassword();
-        }
-    }
-
-    @Test
-    public void testForFingerprint_inflateLayout() {
-        mChooseLockGenericActivityRule.launchActivity(new Intent()
-                .putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, true));
-
-        assertThat(mChooseLockGenericActivityRule.getActivity().isResumed()).isTrue();
-    }
-
-    private Activity getCurrentActivity() throws Throwable {
-        getInstrumentation().waitForIdleSync();
-        final Activity[] activity = new Activity[1];
-        getInstrumentation().runOnMainSync(() -> {
-            Collection<Activity> activities = ActivityLifecycleMonitorRegistry.getInstance()
-                    .getActivitiesInStage(Stage.RESUMED);
-            activity[0] = activities.iterator().next();
-        });
-        return activity[0];
-    }
-
-    /** Sets a PIN password, 12345, for testing. */
-    private void setPassword() throws Exception {
-        Intent newPasswordIntent = new Intent(getTargetContext(), ChooseLockGeneric.class)
-                .putExtra(LockPatternUtils.PASSWORD_TYPE_KEY,
-                        DevicePolicyManager.PASSWORD_QUALITY_NUMERIC)
-                .putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD,
-                        LockscreenCredential.createPin("12345"))
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        getInstrumentation().getContext().startActivity(newPasswordIntent);
-        mDevice.waitForIdle();
-
-
-        // Ignore any interstitial options
-        UiObject view = new UiObject(new UiSelector()
-                .resourceId(mSettingPackage + ":id/encrypt_dont_require_password"));
-        if (view.waitForExists(TIMEOUT)) {
-            view.click();
-            mDevice.waitForIdle();
-        }
-
-        // Set our PIN
-        view = new UiObject(new UiSelector()
-                .resourceId(mSettingPackage + ":id/password_entry"));
-        assertTrue("password_entry", view.waitForExists(TIMEOUT));
-
-        // Enter it twice to confirm
-        enterTestPin(view);
-        enterTestPin(view);
-
-        // Dismiss notifications setting
-        view = new UiObject(new UiSelector()
-                .resourceId(mSettingPackage + ":id/redaction_done_button"));
-        if (view.waitForExists(TIMEOUT)) {
-            view.click();
-            mDevice.waitForIdle();
-        }
-
-        mDevice.pressBack();
-
-        assertThat(getTargetContext().getSystemService(KeyguardManager.class).isDeviceSecure())
-                .isTrue();
-    }
-
-    /** Clears the previous set PIN password. */
-    private void clearPassword() throws Exception {
-        Intent newPasswordIntent = new Intent(getTargetContext(), ChooseLockGeneric.class)
-                .putExtra(LockPatternUtils.PASSWORD_TYPE_KEY,
-                        DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED)
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
-                        | Intent.FLAG_ACTIVITY_CLEAR_TASK);
-        getInstrumentation().getContext().startActivity(newPasswordIntent);
-        mDevice.waitForIdle();
-
-        // Enter current PIN
-        UiObject view = new UiObject(
-                new UiSelector().resourceId(mSettingPackage + ":id/password_entry"));
-        if (!view.waitForExists(TIMEOUT)) {
-            // Odd, maybe there is a crash dialog showing; try dismissing it
-            mDevice.pressBack();
-            mDevice.waitForIdle();
-
-            assertTrue("password_entry", view.waitForExists(TIMEOUT));
-        }
-
-        enterTestPin(view);
-
-        mDevice.pressBack();
-
-        assertThat(getTargetContext().getSystemService(KeyguardManager.class).isDeviceSecure())
-                .isFalse();
-    }
-
-    private void finishAllAppTasks() {
-        final ActivityManager activityManager =
-                getTargetContext().getSystemService(ActivityManager.class);
-        final List<AppTask> appTasks = activityManager.getAppTasks();
-        for (ActivityManager.AppTask task : appTasks) {
-            task.finishAndRemoveTask();
-        }
-    }
-
-    private void enterTestPin(UiObject view) throws Exception {
-        mDevice.waitForIdle();
-        view.setText("12345");
-        mDevice.pressEnter();
-        mDevice.waitForIdle();
-    }
-
-    private boolean isSecureWindow(Activity activity) {
-        return (activity.getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_SECURE)
-                != 0;
-    }
-}
diff --git a/tests/unit/src/com/android/settings/password/ChooseLockPasswordTest.java b/tests/unit/src/com/android/settings/password/ChooseLockPasswordTest.java
deleted file mode 100644
index e12390c..0000000
--- a/tests/unit/src/com/android/settings/password/ChooseLockPasswordTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2017 Google Inc.
- *
- * 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.password;
-
-import static androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.action.ViewActions.pressKey;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
-import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static androidx.test.espresso.matcher.ViewMatchers.isEnabled;
-import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
-import static androidx.test.espresso.matcher.ViewMatchers.withId;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.hamcrest.CoreMatchers.not;
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.content.Context;
-import android.content.Intent;
-import android.view.KeyEvent;
-import android.view.View;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.espresso.action.ViewActions;
-import androidx.test.espresso.matcher.ViewMatchers;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.R;
-
-import com.google.android.setupcompat.PartnerCustomizationLayout;
-import com.google.android.setupcompat.template.FooterBarMixin;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class ChooseLockPasswordTest {
-    private Instrumentation mInstrumentation;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        mInstrumentation = InstrumentationRegistry.getInstrumentation();
-        mContext = mInstrumentation.getTargetContext();
-    }
-
-    @Test
-    public void clearIsNotShown_when_activityLaunchedInitially() {
-        final Activity activity =
-                mInstrumentation.startActivitySync(new Intent(mContext, ChooseLockPassword.class)
-                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
-        final PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
-        assertThat(
-                layout.getMixin(FooterBarMixin.class).getSecondaryButtonView().getVisibility())
-                        .isEqualTo(View.GONE);
-    }
-
-    @Test
-    public void clearIsNotShown_when_nothingEntered() {
-        final Activity activity =
-                mInstrumentation.startActivitySync(new Intent(mContext, ChooseLockPassword.class));
-        final PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
-        onView(withId(R.id.password_entry)).perform(ViewActions.typeText("1234"))
-                .perform(pressKey(KeyEvent.KEYCODE_ENTER));
-        assertThat(
-                layout.getMixin(FooterBarMixin.class).getSecondaryButtonView().getVisibility())
-                        .isEqualTo(View.GONE);
-    }
-
-    @Test
-    public void clearIsShown_when_somethingEnteredToConfirm() {
-        final Activity activity =
-                mInstrumentation.startActivitySync(new Intent(mContext, ChooseLockPassword.class));
-        final PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
-        onView(withId(R.id.password_entry)).perform(ViewActions.typeText("1234"))
-                .perform(pressKey(KeyEvent.KEYCODE_ENTER))
-                .perform(ViewActions.typeText("1"));
-        // clear should be present if text field contains content
-        assertThat(layout.getMixin(FooterBarMixin.class).getSecondaryButtonView().getText())
-                .isEqualTo(mContext.getString(R.string.lockpassword_clear_label));
-        assertThat(
-                layout.getMixin(FooterBarMixin.class).getSecondaryButtonView().getVisibility())
-                        .isEqualTo(View.VISIBLE);
-    }
-}
diff --git a/tests/unit/src/com/android/settings/password/ConfirmLockPasswordTest.java b/tests/unit/src/com/android/settings/password/ConfirmLockPasswordTest.java
deleted file mode 100644
index 321284f..0000000
--- a/tests/unit/src/com/android/settings/password/ConfirmLockPasswordTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2017 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.password;
-
-import static androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.action.ViewActions.pressKey;
-import static androidx.test.espresso.action.ViewActions.typeText;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
-import static androidx.test.espresso.matcher.ViewMatchers.withId;
-import static androidx.test.espresso.matcher.ViewMatchers.withText;
-
-import android.app.Instrumentation;
-import android.content.Context;
-import android.content.Intent;
-import android.view.KeyEvent;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.R;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class ConfirmLockPasswordTest {
-
-    private Instrumentation mInstrumentation;
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        mInstrumentation = InstrumentationRegistry.getInstrumentation();
-        mContext = mInstrumentation.getTargetContext();
-    }
-
-    @Test
-    public void enterWrongPin_shouldShowErrorMessage() {
-        mInstrumentation.startActivitySync(
-                new Intent(mContext, ConfirmLockPassword.class));
-        onView(withId(R.id.password_entry)).perform(typeText("1234"))
-                .perform(pressKey(KeyEvent.KEYCODE_ENTER));
-        onView(withId(R.id.errorText)).check(matches(withText(R.string.lockpassword_invalid_pin)));
-    }
-
-    @Test
-    public void enterWrongPin_darkTheme_shouldShowErrorMessage() {
-        mInstrumentation.startActivitySync(
-                new Intent(mContext, ConfirmLockPassword.class)
-                        .putExtra(ConfirmDeviceCredentialBaseFragment.DARK_THEME, true));
-        onView(withId(R.id.password_entry)).perform(typeText("1234"))
-                .perform(pressKey(KeyEvent.KEYCODE_ENTER));
-        onView(withId(R.id.errorText)).check(matches(withText(R.string.lockpassword_invalid_pin)));
-    }
-}
diff --git a/tests/unit/src/com/android/settings/password/SetupChooseLockGenericTest.java b/tests/unit/src/com/android/settings/password/SetupChooseLockGenericTest.java
deleted file mode 100644
index b0ca636..0000000
--- a/tests/unit/src/com/android/settings/password/SetupChooseLockGenericTest.java
+++ /dev/null
@@ -1,98 +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.password;
-
-import static android.app.admin.DevicePolicyManager.ACTION_SET_NEW_PASSWORD;
-
-import static androidx.test.InstrumentationRegistry.getInstrumentation;
-import static androidx.test.InstrumentationRegistry.getTargetContext;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiSelector;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-import androidx.test.runner.lifecycle.ActivityLifecycleMonitorRegistry;
-import androidx.test.runner.lifecycle.Stage;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.Collection;
-
-/**
- * Tests for {@link SetupChooseLockGenericTest}
- *
- */
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class SetupChooseLockGenericTest {
-
-    private UiDevice mDevice;
-    private Context mContext;
-
-    @Before
-    public void setUp() throws Exception {
-        mDevice = UiDevice.getInstance(getInstrumentation());
-        mContext = getInstrumentation().getTargetContext();
-        Settings.Global.putInt(
-            mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0);
-    }
-
-    @After
-    public void tearDown() {
-        Settings.Global.putInt(
-            mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);
-    }
-
-    @Test
-    public void clickSkipFigerprintPreference_deviceNotProvisioned_shouldBeAbleToProceed()
-            throws Throwable {
-        final Intent newPasswordIntent =
-            new Intent(getTargetContext(), SetupChooseLockGeneric.class)
-            .putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, true)
-            .setAction(ACTION_SET_NEW_PASSWORD)
-            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
-
-        getInstrumentation().getContext().startActivity(newPasswordIntent);
-        mDevice.waitForIdle();
-        mDevice.findObject(new UiSelector().textContains("Continue without ")).click();
-
-        final Activity activity = getCurrentActivity();
-        assertThat(activity).isInstanceOf(SetupChooseLockGeneric.InternalActivity.class);
-    }
-
-    private Activity getCurrentActivity() throws Throwable {
-        getInstrumentation().waitForIdleSync();
-        final Activity[] activity = new Activity[1];
-        getInstrumentation().runOnMainSync(() -> {
-            Collection<Activity> activities = ActivityLifecycleMonitorRegistry.getInstance()
-                    .getActivitiesInStage(Stage.RESUMED);
-            activity[0] = activities.iterator().next();
-        });
-        return activity[0];
-    }
-
-}
diff --git a/tests/unit/src/com/android/settings/slices/SliceDataContractTest.java b/tests/unit/src/com/android/settings/slices/SliceDataContractTest.java
deleted file mode 100644
index 61629e9..0000000
--- a/tests/unit/src/com/android/settings/slices/SliceDataContractTest.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.slices;
-
-import static junit.framework.Assert.fail;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.platform.test.annotations.Presubmit;
-import android.provider.SearchIndexableResource;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.core.PreferenceXmlParserUtils;
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settingslib.search.Indexable;
-import com.android.settingslib.search.SearchIndexableData;
-import com.android.settingslib.search.SearchIndexableResources;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-@RunWith(AndroidJUnit4.class)
-@MediumTest
-public class SliceDataContractTest {
-
-    private static final String TAG = "SliceDataContractTest";
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        mContext = InstrumentationRegistry.getTargetContext();
-    }
-
-    @Test
-    @Presubmit
-    public void preferenceWithControllerMustHaveNonEmptyTitle()
-            throws IOException, XmlPullParserException {
-        final Set<String> nullTitleFragments = new HashSet<>();
-
-        final SearchIndexableResources resources =
-                FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
-                        .getSearchIndexableResources();
-
-        for (SearchIndexableData SearchIndexableData : resources.getProviderValues()) {
-            verifyPreferenceTitle(nullTitleFragments, SearchIndexableData);
-        }
-
-        if (!nullTitleFragments.isEmpty()) {
-            final StringBuilder error = new StringBuilder(
-                    "All preferences with a controller must have a non-empty title by default, "
-                            + "found empty title in the following fragments\n");
-            for (String c : nullTitleFragments) {
-                error.append(c).append("\n");
-            }
-            fail(error.toString());
-        }
-    }
-
-    private void verifyPreferenceTitle(Set<String> nullTitleFragments,
-            SearchIndexableData searchIndexableData)
-            throws IOException, XmlPullParserException {
-
-        final String className = searchIndexableData.getTargetClass().getName();
-        final Indexable.SearchIndexProvider provider =
-                searchIndexableData.getSearchIndexProvider();
-
-        final List<SearchIndexableResource> resourcesToIndex =
-                provider.getXmlResourcesToIndex(mContext, true);
-
-        if (resourcesToIndex == null) {
-            Log.d(TAG, className + "is not providing SearchIndexableResource, skipping");
-            return;
-        }
-
-        for (SearchIndexableResource sir : resourcesToIndex) {
-            final List<Bundle> metadata = PreferenceXmlParserUtils.extractMetadata(mContext,
-                    sir.xmlResId,
-                    PreferenceXmlParserUtils.MetadataFlag.FLAG_INCLUDE_PREF_SCREEN
-                            | PreferenceXmlParserUtils.MetadataFlag.FLAG_NEED_PREF_TITLE
-                            | PreferenceXmlParserUtils.MetadataFlag.FLAG_NEED_PREF_CONTROLLER);
-
-            for (Bundle bundle : metadata) {
-                final String controller = bundle.getString(
-                        PreferenceXmlParserUtils.METADATA_CONTROLLER);
-                if (TextUtils.isEmpty(controller)) {
-                    continue;
-                }
-                final String title = bundle.getString(PreferenceXmlParserUtils.METADATA_TITLE);
-                if (TextUtils.isEmpty(title)) {
-                    nullTitleFragments.add(className);
-                }
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/tests/unit/src/com/android/settings/wifi/SavedNetworkSettingsTest.java b/tests/unit/src/com/android/settings/wifi/SavedNetworkSettingsTest.java
deleted file mode 100644
index 1a5f923..0000000
--- a/tests/unit/src/com/android/settings/wifi/SavedNetworkSettingsTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2017 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 androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.action.ViewActions.click;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
-import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static androidx.test.espresso.matcher.ViewMatchers.withText;
-
-import android.content.Context;
-import android.content.Intent;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.rule.ActivityTestRule;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.Settings;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class SavedNetworkSettingsTest {
-
-    // Keys used to lookup resources by name (see the resourceId helper method).
-    private static final String STRING = "string";
-    private static final String WIFI_ADD_NETWORK = "wifi_add_network";
-    private static final String WIFI_NETWORK_LABEL = "wifi_ssid";
-
-    private Context mContext;
-
-    @Rule
-    public ActivityTestRule<Settings.SavedAccessPointsSettingsActivity> mActivityRule =
-            new ActivityTestRule<>(Settings.SavedAccessPointsSettingsActivity.class, true);
-
-    private int resourceId(String type, String name) {
-        return mContext.getResources().getIdentifier(name, type, mContext.getPackageName());
-    }
-
-    @Before
-    public void setUp() {
-        mContext = InstrumentationRegistry.getTargetContext();
-    }
-
-    private void launchSavedNetworksSettings() {
-        Intent intent = new Intent()
-                .setClassName(mContext.getPackageName(),
-                        Settings.SavedAccessPointsSettingsActivity.class.getName())
-                .setPackage(mContext.getPackageName());
-        mActivityRule.launchActivity(intent);
-    }
-
-    @Test
-    public void launchSavedNetworkSettings_shouldHaveAddNetworkField() {
-        launchSavedNetworksSettings();
-        onView(withText(resourceId(STRING, WIFI_ADD_NETWORK))).check(matches(isDisplayed()))
-                .perform(click());
-        onView(withText(resourceId(STRING, WIFI_NETWORK_LABEL))).check(matches(isDisplayed()));
-    }
-}
diff --git a/tests/unit/src/com/android/settings/wifi/WifiCallingSettingUiTest.java b/tests/unit/src/com/android/settings/wifi/WifiCallingSettingUiTest.java
deleted file mode 100644
index e913e2c..0000000
--- a/tests/unit/src/com/android/settings/wifi/WifiCallingSettingUiTest.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/**
- * Copyright (C) 2017 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 androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.action.ViewActions.click;
-import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
-import static androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed;
-import static androidx.test.espresso.matcher.ViewMatchers.isSelected;
-import static androidx.test.espresso.matcher.ViewMatchers.withResourceName;
-import static androidx.test.espresso.matcher.ViewMatchers.withText;
-
-import static org.hamcrest.CoreMatchers.allOf;
-import static org.hamcrest.CoreMatchers.anything;
-import static org.junit.Assert.assertEquals;
-import static org.junit.matchers.JUnitMatchers.containsString;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.Mockito.doReturn;
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.content.Context;
-import android.content.Intent;
-import android.support.test.uiautomator.UiDevice;
-import android.telephony.SubscriptionInfo;
-import android.telephony.ims.ImsMmTelManager;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.espresso.NoMatchingViewException;
-import androidx.test.espresso.ViewInteraction;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.ims.ImsManager;
-import com.android.internal.telephony.SubscriptionController;
-import com.android.settings.testutils.MockedServiceManager;
-
-import junit.framework.Assert;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-public class WifiCallingSettingUiTest {
-    private static final String SUBSCRIPTION0_NAME = "SUB0";
-    private static final String SUBSCRIPTION1_NAME = "SUB1";
-    private static final String WFC_MODE_TITLE = "Calling preference";
-    private static final String WFC_MODE_WIFI_ONLY = "Wi-Fi only";
-    private static final String WFC_MODE_WIFI_PREFERRED = "Wi-Fi preferred";
-    private static final String WFC_MODE_CELLULAR_PREFERRED = "Mobile preferred";
-
-    private Instrumentation mInstrumentation;
-    private Context mContext;
-    private UiDevice mDevice;
-    @Mock
-    SubscriptionController mSubscriptionController;
-    MockedServiceManager mMockedServiceManager;
-    protected HashMap<Integer, ImsManager> mImsManagerInstances = new HashMap<>();
-    List<SubscriptionInfo> mSils = new ArrayList();
-    @Mock
-    SubscriptionInfo mSubscriptionInfo0;
-    @Mock
-    SubscriptionInfo mSubscriptionInfo1;
-    @Mock
-    ImsManager mImsManager0;
-    @Mock
-    ImsManager mImsManager1;
-    @Mock
-    ImsMmTelManager mImsMmTelManager0;
-    @Mock
-    ImsMmTelManager mImsMmTelManager1;
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        mInstrumentation = InstrumentationRegistry.getInstrumentation();
-        mContext = mInstrumentation.getTargetContext();
-        mDevice = UiDevice.getInstance(mInstrumentation);
-
-        mMockedServiceManager = new MockedServiceManager();
-        mMockedServiceManager.replaceService("isub", mSubscriptionController);
-
-        mMockedServiceManager.replaceInstance(
-                ImsManager.class, "sImsManagerInstances", null, mImsManagerInstances);
-        mMockedServiceManager.replaceInstance(
-                SubscriptionController.class, "sInstance", null, mSubscriptionController);
-        doReturn(mSubscriptionController)
-                .when(mSubscriptionController).queryLocalInterface(anyString());
-        mImsManagerInstances.put(0, mImsManager0);
-        mImsManagerInstances.put(1, mImsManager1);
-        doReturn(mSils).when(mSubscriptionController).getActiveSubscriptionInfoList(anyString(),
-                nullable(String.class));
-        doReturn(0).when(mSubscriptionController).getPhoneId(0);
-        doReturn(1).when(mSubscriptionController).getPhoneId(1);
-        doReturn(0).when(mSubscriptionInfo0).getSubscriptionId();
-        doReturn(1).when(mSubscriptionInfo1).getSubscriptionId();
-        doReturn(0).when(mSubscriptionInfo0).getSimSlotIndex();
-        doReturn(1).when(mSubscriptionInfo1).getSimSlotIndex();
-        doReturn(SUBSCRIPTION0_NAME).when(mSubscriptionInfo0).getDisplayName();
-        doReturn(SUBSCRIPTION1_NAME).when(mSubscriptionInfo1).getDisplayName();
-
-        doReturn(true).when(mImsManager0).isWfcEnabledByPlatform();
-        doReturn(true).when(mImsManager0).isNonTtyOrTtyOnVolteEnabled();
-        doReturn(true).when(mImsManager1).isWfcEnabledByPlatform();
-        doReturn(true).when(mImsManager1).isNonTtyOrTtyOnVolteEnabled();
-
-        mDevice.wakeUp();
-        mDevice.pressMenu();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        mMockedServiceManager.restoreAllServices();
-    }
-
-    @Test
-    public void testSingleSimUi() throws InterruptedException {
-        configureSingleSim();
-        doReturn(true).when(mImsManager0).isWfcEnabledByUser();
-        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
-                .when(mImsMmTelManager0).getVoWiFiModeSetting();
-        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
-                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
-
-        mInstrumentation.startActivitySync(createActivityIntent());
-
-        checkSingleSimUi();
-
-        try {
-            mDevice.setOrientationLeft();
-        } catch (Exception e) {
-            Assert.fail("Exception " + e);
-        }
-
-        // Re-check after rotation. Fragment should be recreated properly.
-        checkSingleSimUi();
-
-        try {
-            mDevice.setOrientationNatural();
-        } catch (Exception e) {
-            Assert.fail("Exception " + e);
-        }
-
-        // Re-check after rotation. Fragment should be resumed properly.
-        checkSingleSimUi();
-    }
-
-    private void checkSingleSimUi() {
-        assertEquals(false, checkExists(onView(withText(SUBSCRIPTION0_NAME))));
-        assertEquals(false, checkExists(onView(withText(SUBSCRIPTION1_NAME))));
-        assertEquals(true, checkExists(onView(withText(WFC_MODE_TITLE))));
-        assertEquals(true, checkExists(onView(withText(WFC_MODE_WIFI_PREFERRED))));
-        checkSwitchBarStatus(true, true);
-        checkEmptyViewStatus(false);
-    }
-
-    @Test
-    public void testNoValidSub() throws InterruptedException {
-        configureDualSim();
-        doReturn(false).when(mImsManager0).isWfcEnabledByPlatform();
-        doReturn(false).when(mImsManager0).isNonTtyOrTtyOnVolteEnabled();
-        doReturn(false).when(mImsManager1).isWfcEnabledByPlatform();
-        doReturn(false).when(mImsManager1).isNonTtyOrTtyOnVolteEnabled();
-        doReturn(false).when(mImsManager0).isWfcEnabledByUser();
-        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
-                .when(mImsMmTelManager0).getVoWiFiModeSetting();
-        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
-                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
-
-        Activity activity = mInstrumentation.startActivitySync(createActivityIntent());
-
-        assertEquals(false, checkExists(onView(withText(SUBSCRIPTION0_NAME))));
-        assertEquals(false, checkExists(onView(withText(SUBSCRIPTION1_NAME))));
-        assertEquals(false, checkExists(onView(withText(WFC_MODE_TITLE))));
-
-        checkSwitchBarStatus(false, false);
-        checkEmptyViewStatus(false);
-    }
-
-    @Test
-    public void testWfcDisabled() throws InterruptedException {
-        configureSingleSim();
-        doReturn(false).when(mImsManager0).isWfcEnabledByUser();
-        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
-                .when(mImsMmTelManager0).getVoWiFiModeSetting();
-        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
-                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
-
-        Activity activity = mInstrumentation.startActivitySync(createActivityIntent());
-
-        assertEquals(false, checkExists(onView(withText(SUBSCRIPTION0_NAME))));
-        assertEquals(false, checkExists(onView(withText(SUBSCRIPTION1_NAME))));
-        assertEquals(false, checkExists(onView(withText(WFC_MODE_TITLE))));
-
-        checkSwitchBarStatus(true, false);
-        checkEmptyViewStatus(true);
-    }
-
-    @Test
-    public void testDualSimUi() throws InterruptedException {
-        configureDualSim();
-        doReturn(true).when(mImsManager0).isWfcEnabledByUser();
-        doReturn(false).when(mImsManager1).isWfcEnabledByUser();
-        doReturn(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED)
-                .when(mImsMmTelManager0).getVoWiFiModeSetting();
-        doReturn(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED)
-                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
-
-        mInstrumentation.startActivitySync(createActivityIntent());
-
-        assertEquals(true, checkExists(onView(withText(SUBSCRIPTION0_NAME))));
-        assertEquals(true, checkExists(onView(withText(SUBSCRIPTION1_NAME))));
-        assertEquals(true, checkExists(onView(withText(WFC_MODE_TITLE))));
-        assertEquals(true, checkExists(onView(withText(WFC_MODE_CELLULAR_PREFERRED))));
-
-        onView(withText(SUBSCRIPTION0_NAME)).check(matches(isSelected()));
-        checkSwitchBarStatus(true, true);
-        checkEmptyViewStatus(false);
-
-        // Switch to SUB1.
-        onView(withText(SUBSCRIPTION1_NAME)).perform(click());
-
-        checkSwitchBarStatus(true, false);
-        checkEmptyViewStatus(true);
-        onView(withText(SUBSCRIPTION1_NAME)).check(matches(isSelected()));
-    }
-
-    private boolean checkExists(ViewInteraction v) {
-        try {
-            v.check(matches(isCompletelyDisplayed()));
-            return true;
-        } catch (NoMatchingViewException e) {
-            return false;
-        }
-    }
-
-    private Intent createActivityIntent() {
-        Intent intent = new Intent(mContext,
-                com.android.settings.Settings.WifiCallingSettingsActivity.class);
-        intent.setPackage("com.android.settings");
-        intent.setAction("android.intent.action.MAIN");
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        return intent;
-    }
-
-    private void configureSingleSim() {
-        mSils.clear();
-        mSils.add(mSubscriptionInfo0);
-    }
-
-    private void configureDualSim() {
-        mSils.clear();
-        mSils.add(mSubscriptionInfo0);
-        mSils.add(mSubscriptionInfo1);
-    }
-
-    private void checkSwitchBarStatus(boolean shouldDisplay, boolean statusOn) {
-        if (shouldDisplay) {
-            try {
-                onView(allOf(withResourceName("switch_text"), isCompletelyDisplayed()))
-                        .check(matches(withText(containsString(statusOn ? "On" : "Off"))));
-            } catch (Exception e) {
-                Assert.fail("Exception " + e);
-            }
-        } else {
-            onView(allOf(withResourceName("switch_text"), isCompletelyDisplayed()))
-                    .check(doesNotExist());
-        }
-    }
-
-    private void checkEmptyViewStatus(boolean shouldDisplay) {
-        try {
-            if (!shouldDisplay) {
-                onView(allOf(withResourceName("empty"), isCompletelyDisplayed()))
-                        .check(doesNotExist());
-            } else {
-                onView(allOf(withResourceName("empty"), isCompletelyDisplayed()))
-                        .check(matches(anything()));
-            }
-        } catch (Exception e) {
-            Assert.fail("Exception " + e);
-        }
-    }
-}
diff --git a/tests/unit/src/com/android/settings/wifi/WifiSettingsUiTest.java b/tests/unit/src/com/android/settings/wifi/WifiSettingsUiTest.java
deleted file mode 100644
index 4c9b3c5..0000000
--- a/tests/unit/src/com/android/settings/wifi/WifiSettingsUiTest.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright (C) 2017 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 androidx.test.InstrumentationRegistry.getInstrumentation;
-import static androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
-import static androidx.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE;
-import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
-import static androidx.test.espresso.matcher.ViewMatchers.withText;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.hamcrest.Matchers.allOf;
-import static org.hamcrest.Matchers.startsWith;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.Intent;
-import android.net.wifi.WifiManager;
-import android.provider.Settings;
-import android.support.test.uiautomator.UiDevice;
-
-import androidx.fragment.app.Fragment;
-import androidx.test.InstrumentationRegistry;
-import androidx.test.rule.ActivityTestRule;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.Settings.WifiSettingsActivity;
-import com.android.settingslib.utils.ThreadUtils;
-import com.android.wifitrackerlib.WifiEntry;
-import com.android.wifitrackerlib.WifiPickerTracker;
-
-import com.google.common.collect.Lists;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-public class WifiSettingsUiTest {
-    private static final String TEST_SSID = "Test Ssid";
-    private static final String TEST_KEY = "Test Key";
-
-    // Keys used to lookup resources by name (see the resourceId/resourceString helper methods).
-    private static final String STRING = "string";
-    private static final String WIFI_CONFIGURE_SETTINGS_PREFERENCE_TITLE =
-            "wifi_configure_settings_preference_title";
-    private static final String WIFI_SAVED_ACCESS_POINTS_LABEL = "wifi_saved_access_points_label";
-    private static final String WIFI_EMPTY_LIST_WIFI_OFF = "wifi_empty_list_wifi_off";
-    private static final String WIFI_DISPLAY_STATUS_CONNECTED = "wifi_display_status_connected";
-
-    @Mock
-    private WifiPickerTracker mWifiTracker;
-    @Mock
-    private WifiPickerTracker.WifiPickerTrackerCallback mWifiListener;
-
-    private Context mContext;
-    private UiDevice mDevice;
-
-    @Rule
-    public ActivityTestRule<WifiSettingsActivity> mActivityRule =
-            new ActivityTestRule<>(WifiSettingsActivity.class, true);
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = InstrumentationRegistry.getTargetContext();
-        mDevice = UiDevice.getInstance(getInstrumentation());
-    }
-
-    /**
-     * Helper to get around the problem that directly accessing settings resource id's from
-     * com.android.settings.R via R.(type).(name) (eg R.id.password or
-     * R.string.wifi_configure_settings_preference_title) may not work due to mismatched resource
-     * ids. See b/37714546 and b/63546650.
-     */
-    private int resourceId(String type, String name) {
-        return mContext.getResources().getIdentifier(name, type, mContext.getPackageName());
-    }
-
-    /** Similar to {@link #resourceId}, but for accessing R.string.<name> values. */
-    private String resourceString(String name) {
-        return mContext.getResources().getString(resourceId(STRING, name));
-    }
-
-    /** Launch the activity via an Intent with a String extra. */
-    private void launchActivity(String extraName, String extraValue) {
-        Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
-        if (extraName != null && extraValue != null) {
-            intent.putExtra(extraName, extraValue);
-        }
-        mActivityRule.launchActivity(intent);
-
-        List<Fragment> fragments =
-                mActivityRule.getActivity().getSupportFragmentManager().getFragments();
-        assertThat(fragments.size()).isEqualTo(1);
-        ((WifiSettings) fragments.get(0)).mWifiPickerTracker = mWifiTracker;
-        mWifiListener = (WifiSettings) fragments.get(0);
-        assertThat(mWifiListener).isNotNull();
-    }
-
-    /** Helper to launch the activity with no extra. */
-    private void launchActivity() {
-        launchActivity(null, null);
-    }
-
-    private void setWifiState(int wifiState) {
-        when(mWifiTracker.getWifiState()).thenReturn(wifiState);
-    }
-
-    @Test
-    public void launchActivityShouldSucceed() {
-        launchActivity();
-    }
-
-    @Test
-    public void shouldShowWifiPreferences() {
-        launchActivity();
-
-        onView(withText(resourceId(STRING, WIFI_CONFIGURE_SETTINGS_PREFERENCE_TITLE))).check(
-                matches(isDisplayed()));
-    }
-
-    @Test
-    public void noSavedNetworks_wifiDisabled_shouldNotShowSavedNetworksButton() {
-        setWifiState(WifiManager.WIFI_STATE_DISABLED);
-        when(mWifiTracker.getNumSavedNetworks()).thenReturn(0);
-
-        launchActivity();
-
-        onView(withText(resourceId(STRING, WIFI_SAVED_ACCESS_POINTS_LABEL))).check(
-                doesNotExist());
-    }
-
-    @Test
-    public void savedNetworksExist_shouldShowSavedNetworksButton() {
-        setWifiState(WifiManager.WIFI_STATE_ENABLED);
-        when(mWifiTracker.getNumSavedNetworks()).thenReturn(1);
-
-        launchActivity();
-        mActivityRule.getActivity().getMainThreadHandler()
-                .post(() -> mWifiListener.onNumSavedNetworksChanged());
-
-        onView(allOf(withText(resourceId(STRING, WIFI_SAVED_ACCESS_POINTS_LABEL)),
-                withEffectiveVisibility(VISIBLE))).check(matches(isDisplayed()));
-    }
-
-    @Test
-    public void onWifiStateChanged_wifiDisabled_seeOffMessage() {
-        setWifiState(WifiManager.WIFI_STATE_DISABLED);
-
-        launchActivity();
-        mActivityRule.getActivity().getMainThreadHandler()
-                .post(() -> mWifiListener.onWifiStateChanged());
-
-        onView(withText(startsWith(resourceString(WIFI_EMPTY_LIST_WIFI_OFF)))).check(
-                matches(isDisplayed()));
-    }
-
-    @Test
-    public void onWifiStateChanged_wifiEnabled_shouldNotSeeOffMessage() {
-        setWifiState(WifiManager.WIFI_STATE_ENABLED);
-
-        launchActivity();
-        mActivityRule.getActivity().getMainThreadHandler()
-                .post(() -> mWifiListener.onWifiStateChanged());
-
-        onView(withText(startsWith(resourceString(WIFI_EMPTY_LIST_WIFI_OFF)))).check(
-                doesNotExist());
-    }
-
-    @Test
-    public void onConnected_shouldSeeConnectedMessage() {
-        setWifiState(WifiManager.WIFI_STATE_ENABLED);
-        final WifiEntry wifiEntry = mock(WifiEntry.class);
-        when(wifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
-        when(wifiEntry.getSummary(false /* concise */))
-                .thenReturn(resourceString(WIFI_DISPLAY_STATUS_CONNECTED));
-        when(wifiEntry.getKey()).thenReturn(TEST_KEY);
-        when(mWifiTracker.getConnectedWifiEntry()).thenReturn(wifiEntry);
-
-        launchActivity();
-        ThreadUtils.postOnMainThread(() -> mWifiListener.onWifiEntriesChanged());
-        mDevice.waitForIdle();
-
-        onView(withText(resourceString(WIFI_DISPLAY_STATUS_CONNECTED))).check(
-                matches(isDisplayed()));
-    }
-
-    @Test
-    public void changingSecurityStateOnAp_ShouldNotCauseMultipleListItems() {
-        setWifiState(WifiManager.WIFI_STATE_ENABLED);
-
-        final WifiEntry openWifiEntry = mock(WifiEntry.class);
-        when(openWifiEntry.getTitle()).thenReturn(TEST_SSID);
-        when(openWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_NONE);
-
-        final WifiEntry eapWifiEntry = mock(WifiEntry.class);
-        when(eapWifiEntry.getTitle()).thenReturn(TEST_SSID);
-        when(eapWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_EAP);
-
-        final WifiEntry wepWifiEntry = mock(WifiEntry.class);
-        when(wepWifiEntry.getTitle()).thenReturn(TEST_SSID);
-        when(wepWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_WEP);
-
-        // Return a different security state each time getWifiEntries is invoked
-        when(mWifiTracker.getWifiEntries())
-                .thenReturn(Lists.newArrayList(openWifiEntry))
-                .thenReturn(Lists.newArrayList(eapWifiEntry))
-                .thenReturn(Lists.newArrayList(wepWifiEntry));
-
-        launchActivity();
-
-        ThreadUtils.postOnMainThread(() -> mWifiListener.onWifiEntriesChanged());
-        mDevice.waitForIdle();
-        onView(withText(TEST_SSID)).check(matches(isDisplayed()));
-
-        ThreadUtils.postOnMainThread(() -> mWifiListener.onWifiEntriesChanged());
-        mDevice.waitForIdle();
-        onView(withText(TEST_SSID)).check(matches(isDisplayed()));
-
-        ThreadUtils.postOnMainThread(() -> mWifiListener.onWifiEntriesChanged());
-        mDevice.waitForIdle();
-        onView(withText(TEST_SSID)).check(matches(isDisplayed()));
-    }
-}
diff --git a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppChooseSavedWifiNetworkFragmentTest.java b/tests/unit/src/com/android/settings/wifi/dpp/WifiDppChooseSavedWifiNetworkFragmentTest.java
deleted file mode 100644
index 33491b6..0000000
--- a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppChooseSavedWifiNetworkFragmentTest.java
+++ /dev/null
@@ -1,110 +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.wifi.dpp;
-
-import static androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.action.ViewActions.click;
-import static androidx.test.espresso.matcher.ViewMatchers.withText;
-
-import static com.android.settings.wifi.dpp.WifiDppUtils.TAG_FRAGMENT_ADD_DEVICE;
-import static com.android.settings.wifi.dpp.WifiDppUtils.TAG_FRAGMENT_CHOOSE_SAVED_WIFI_NETWORK;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-
-import android.provider.Settings;
-import androidx.fragment.app.FragmentManager;
-import androidx.test.InstrumentationRegistry;
-import androidx.test.rule.ActivityTestRule;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class WifiDppChooseSavedWifiNetworkFragmentTest {
-    // Valid Wi-Fi DPP QR code
-    private static final String VALID_WIFI_DPP_QR_CODE = "DPP:I:SN=4774LH2b4044;M:010203040506;K:"
-            + "MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;";
-
-    // Keys used to lookup resources by name (see the resourceId/resourceString helper methods).
-    private static final String STRING = "string";
-    private static final String WIFI_DPP_CHOOSE_DIFFERENT_NETWORK =
-            "wifi_dpp_choose_different_network";
-    private static final String CANCEL = "cancel";
-
-    @Rule
-    public final ActivityTestRule<WifiDppConfiguratorActivity> mActivityRule =
-            new ActivityTestRule<>(WifiDppConfiguratorActivity.class, /* initialTouchMode */true,
-            /* launchActivity */ false);
-
-    private Context mContext;
-
-    @Before
-    public void setUp() {
-        mContext = InstrumentationRegistry.getTargetContext();
-    }
-
-    @Test
-    public void clickCancelButton_configuratorQrCodeScannerIntent_shouldPopBackStack() {
-        final Intent intent =
-                new Intent(WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_SCANNER);
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WEP");
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest");
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "password");
-        final WifiDppConfiguratorActivity hostActivity = mActivityRule.launchActivity(intent);
-
-        // Go to WifiDppChooseSavedWifiNetworkFragment and click the cancel button
-        final FragmentManager fragmentManager = hostActivity.getSupportFragmentManager();
-        final WifiQrCode wifiQrCode = new WifiQrCode(VALID_WIFI_DPP_QR_CODE);
-        hostActivity.runOnUiThread(() ->
-            ((WifiDppConfiguratorActivity)hostActivity).onScanWifiDppSuccess(wifiQrCode)
-        );
-        onView(withText(resourceString(WIFI_DPP_CHOOSE_DIFFERENT_NETWORK))).perform(click());
-        onView(withText(resourceString(CANCEL))).perform(click());
-
-        assertThat(fragmentManager.findFragmentByTag(TAG_FRAGMENT_ADD_DEVICE)).isNotNull();
-        assertThat(fragmentManager.findFragmentByTag(TAG_FRAGMENT_CHOOSE_SAVED_WIFI_NETWORK))
-                .isNull();
-    }
-
-    @Test
-    public void clickCancelButton_processWifiDppQrCodeIntent_shouldFinish() {
-        final Intent intent = new Intent(Settings.ACTION_PROCESS_WIFI_EASY_CONNECT_URI);
-        intent.setData(Uri.parse(VALID_WIFI_DPP_QR_CODE));
-        final WifiDppConfiguratorActivity hostActivity = mActivityRule.launchActivity(intent);
-
-        onView(withText(resourceString(CANCEL))).perform(click());
-
-        assertThat(hostActivity.isFinishing()).isEqualTo(true);
-    }
-
-    private int resourceId(String type, String name) {
-        return mContext.getResources().getIdentifier(name, type, mContext.getPackageName());
-    }
-
-    /** Similar to {@link #resourceId}, but for accessing R.string.<name> values. */
-    private String resourceString(String name) {
-        return mContext.getResources().getString(resourceId(STRING, name));
-    }
-}
diff --git a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java b/tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java
deleted file mode 100644
index 7c87e7d..0000000
--- a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java
+++ /dev/null
@@ -1,183 +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.wifi.dpp;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.Instrumentation;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.net.Uri;
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.support.test.uiautomator.UiDevice;
-
-import androidx.fragment.app.FragmentManager;
-import androidx.test.InstrumentationRegistry;
-import androidx.test.rule.ActivityTestRule;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.google.android.setupdesign.GlifLayout;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class WifiDppConfiguratorActivityTest {
-    // Valid Wi-Fi DPP QR code & it's parameters
-    private static final String VALID_WIFI_DPP_QR_CODE = "DPP:I:SN=4774LH2b4044;M:010203040506;K:"
-            + "MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;";
-
-    @Rule
-    public final ActivityTestRule<WifiDppConfiguratorActivity> mActivityRule =
-            new ActivityTestRule<>(WifiDppConfiguratorActivity.class);
-
-    private UiDevice mDevice;
-
-    @Before
-    public void setUp() {
-        mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-    }
-
-    @Test
-    public void launchActivity_qrCodeScanner_shouldNotAutoFinish() {
-        Intent intent = new Intent(WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_SCANNER);
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WEP");
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest");
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "password");
-
-        mActivityRule.launchActivity(intent);
-        FragmentManager fragmentManager = mActivityRule.getActivity().getSupportFragmentManager();
-        WifiDppQrCodeScannerFragment fragment =
-                (WifiDppQrCodeScannerFragment) fragmentManager.findFragmentByTag(
-                        WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
-
-        assertThat(fragment.getView() instanceof GlifLayout).isTrue();
-        assertThat(mActivityRule.getActivity().isFinishing()).isFalse();
-    }
-
-    @Test
-    public void launchActivity_qrCodeGenerator_shouldNotAutoFinish() {
-        Intent intent = new Intent(
-                WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_GENERATOR);
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WEP");
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest");
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "password");
-
-        mActivityRule.launchActivity(intent);
-        FragmentManager fragmentManager = mActivityRule.getActivity().getSupportFragmentManager();
-        WifiDppQrCodeGeneratorFragment fragment =
-                (WifiDppQrCodeGeneratorFragment) fragmentManager.findFragmentByTag(
-                        WifiDppUtils.TAG_FRAGMENT_QR_CODE_GENERATOR);
-
-        assertThat(fragment.getView() instanceof GlifLayout).isTrue();
-        assertThat(mActivityRule.getActivity().isFinishing()).isFalse();
-    }
-
-    @Test
-    public void launchActivity_chooseSavedWifiNetwork_shouldNotAutoFinish() {
-        final Intent intent = new Intent(Settings.ACTION_PROCESS_WIFI_EASY_CONNECT_URI);
-        intent.setData(Uri.parse(VALID_WIFI_DPP_QR_CODE));
-
-        mActivityRule.launchActivity(intent);
-
-        assertThat(mActivityRule.getActivity().isFinishing()).isFalse();
-    }
-
-    @Test
-    public void testActivity_shouldImplementsWifiNetworkConfigRetriever() {
-        WifiDppConfiguratorActivity activity = mActivityRule.getActivity();
-
-        assertThat(activity instanceof WifiNetworkConfig.Retriever).isTrue();
-    }
-
-    @Test
-    public void testActivity_shouldImplementsOnScanWifiDppSuccessCallback() {
-        WifiDppConfiguratorActivity activity = mActivityRule.getActivity();
-
-        assertThat(activity instanceof WifiDppQrCodeScannerFragment
-                .OnScanWifiDppSuccessListener).isTrue();
-    }
-
-    @Test
-    public void testActivity_shouldImplementsOnClickChooseDifferentNetworkCallback() {
-        WifiDppConfiguratorActivity activity = mActivityRule.getActivity();
-
-        assertThat(activity instanceof WifiDppAddDeviceFragment
-                .OnClickChooseDifferentNetworkListener).isTrue();
-    }
-
-    @Test
-    public void rotateScreen_shouldGetCorrectWifiDppQrCode() {
-        WifiQrCode wifiQrCode = new WifiQrCode(VALID_WIFI_DPP_QR_CODE);
-        Intent intent = new Intent(WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_SCANNER);
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WEP");
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest");
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "password");
-
-        // setWifiDppQrCode and check if getWifiDppQrCode correctly after rotation
-        mActivityRule.launchActivity(intent);
-        mActivityRule.getActivity().setWifiDppQrCode(wifiQrCode);
-
-        try {
-            mDevice.setOrientationLeft();
-            mDevice.setOrientationNatural();
-            mDevice.setOrientationRight();
-            mDevice.setOrientationNatural();
-        } catch (RemoteException e) {
-            throw new RuntimeException(e);
-        }
-
-        WifiQrCode restoredWifiDppQrCode = mActivityRule.getActivity().getWifiDppQrCode();
-        assertThat(restoredWifiDppQrCode).isNotNull();
-        assertThat(restoredWifiDppQrCode.getQrCode()).isEqualTo(VALID_WIFI_DPP_QR_CODE);
-    }
-
-    @Test
-    public void rotateScreen_shouldGetCorrectWifiNetworkConfig() {
-        final WifiNetworkConfig wifiNetworkConfig = new WifiNetworkConfig("WPA", "WifiSsid",
-                "password", /* hiddenSsid */ false, /* networkId */ 0, /* isHotspot */ true);
-        final Intent intent = new Intent(Settings.ACTION_PROCESS_WIFI_EASY_CONNECT_URI);
-        intent.setData(Uri.parse(VALID_WIFI_DPP_QR_CODE));
-
-        // setWifiNetworkConfig and check if getWifiNetworkConfig correctly after rotation
-        mActivityRule.launchActivity(intent);
-        mActivityRule.getActivity().setWifiNetworkConfig(wifiNetworkConfig);
-
-        try {
-            mDevice.setOrientationLeft();
-            mDevice.setOrientationNatural();
-            mDevice.setOrientationRight();
-            mDevice.setOrientationNatural();
-        } catch (RemoteException e) {
-            throw new RuntimeException(e);
-        }
-
-        WifiNetworkConfig restoredWifiNetworkConfig =
-                mActivityRule.getActivity().getWifiNetworkConfig();
-
-        assertThat(restoredWifiNetworkConfig).isNotNull();
-        assertThat(restoredWifiNetworkConfig.getSecurity()).isEqualTo("WPA");
-        assertThat(restoredWifiNetworkConfig.getSsid()).isEqualTo("WifiSsid");
-        assertThat(restoredWifiNetworkConfig.getPreSharedKey()).isEqualTo("password");
-        assertThat(restoredWifiNetworkConfig.getHiddenSsid()).isFalse();
-        assertThat(restoredWifiNetworkConfig.getNetworkId()).isEqualTo(0);
-        assertThat(restoredWifiNetworkConfig.isHotspot()).isTrue();
-    }
-}
diff --git a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivityTest.java b/tests/unit/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivityTest.java
deleted file mode 100644
index aef4767..0000000
--- a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivityTest.java
+++ /dev/null
@@ -1,41 +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.wifi.dpp;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import androidx.test.rule.ActivityTestRule;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class WifiDppEnrolleeActivityTest {
-    @Rule
-    public final ActivityTestRule<WifiDppEnrolleeActivity> mActivityRule =
-            new ActivityTestRule<>(WifiDppEnrolleeActivity.class);
-
-    @Test
-    public void testActivity_shouldImplementsOnScanWifiDppSuccessCallback() {
-        WifiDppEnrolleeActivity activity = mActivityRule.getActivity();
-
-        assertThat(activity instanceof WifiDppQrCodeScannerFragment
-                .OnScanWifiDppSuccessListener).isEqualTo(true);
-    }
-}
diff --git a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragmentTest.java b/tests/unit/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragmentTest.java
deleted file mode 100644
index 239f525..0000000
--- a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragmentTest.java
+++ /dev/null
@@ -1,52 +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.wifi.dpp;
-
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-
-import androidx.test.rule.ActivityTestRule;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class WifiDppQrCodeGeneratorFragmentTest {
-    @Rule
-    public final ActivityTestRule<WifiDppConfiguratorActivity> mActivityRule =
-            new ActivityTestRule<>(WifiDppConfiguratorActivity.class, true);
-
-    @Before
-    public void setUp() {
-        Intent intent =
-                new Intent(WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_GENERATOR);
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WEP");
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest");
-        mActivityRule.launchActivity(intent);
-    }
-
-    @Test
-    public void rotateScreen_shouldNotCrash() {
-        mActivityRule.getActivity().setRequestedOrientation(
-                ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
-        mActivityRule.getActivity().setRequestedOrientation(
-                ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
-    }
-}
diff --git a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragmentTest.java b/tests/unit/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragmentTest.java
deleted file mode 100644
index d633689..0000000
--- a/tests/unit/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragmentTest.java
+++ /dev/null
@@ -1,76 +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.wifi.dpp;
-
-import static com.android.settings.wifi.dpp.WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.Instrumentation;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-
-import androidx.fragment.app.FragmentManager;
-import androidx.test.InstrumentationRegistry;
-import androidx.test.rule.ActivityTestRule;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class WifiDppQrCodeScannerFragmentTest {
-    @Rule
-    public final ActivityTestRule<WifiDppConfiguratorActivity> mActivityRule =
-            new ActivityTestRule<>(WifiDppConfiguratorActivity.class, true);
-
-    @Before
-    public void setUp() {
-        Intent intent = new Intent(WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_SCANNER);
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WEP");
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest");
-        intent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "password");
-        mActivityRule.launchActivity(intent);
-    }
-
-    @Test
-    public void rotateScreen_shouldNotCrash() {
-        mActivityRule.getActivity().setRequestedOrientation(
-                ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
-        mActivityRule.getActivity().setRequestedOrientation(
-                ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
-    }
-
-    @Test
-    public void onPause_shouldNotDecodeQrCode() {
-        final WifiDppConfiguratorActivity hostActivity =
-                (WifiDppConfiguratorActivity) mActivityRule.getActivity();
-        final FragmentManager fragmentManager = hostActivity.getSupportFragmentManager();
-        final WifiDppQrCodeScannerFragment scannerFragment =
-                (WifiDppQrCodeScannerFragment) fragmentManager
-                .findFragmentByTag(TAG_FRAGMENT_QR_CODE_SCANNER);
-        final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
-
-        instrumentation.runOnMainSync(() -> {
-            instrumentation.callActivityOnPause(hostActivity);
-
-            assertThat(scannerFragment.isDecodeTaskAlive()).isEqualTo(false);
-        });
-    }
-}
diff --git a/tests/unit/src/com/android/settings/wifi/dpp/WifiQrCodeTest.java b/tests/unit/src/com/android/settings/wifi/dpp/WifiQrCodeTest.java
deleted file mode 100644
index e4d3a7b..0000000
--- a/tests/unit/src/com/android/settings/wifi/dpp/WifiQrCodeTest.java
+++ /dev/null
@@ -1,254 +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.wifi.dpp;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public class WifiQrCodeTest {
-    // Valid Wi-Fi DPP QR code & it's parameters
-    private static final String VALID_WIFI_DPP_QR_CODE = "DPP:I:SN=4774LH2b4044;M:010203040506;K:"
-            + "MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=;;";
-
-    private static final String PUBLIC_KEY_OF_VALID_WIFI_DPP_QR_CODE =
-            "MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADURzxmttZoIRIPWGoQMV00XHWCAQIhXruVWOz0NjlkIA=";
-
-    private static final String INFORMATION_OF_VALID_WIFI_DPP_QR_CODE =
-            "SN=4774LH2b4044";
-
-    // Valid ZXing reader library's Wi-Fi Network config format & it's parameters
-    private static final String VALID_ZXING_WIFI_QR_CODE_WPA =
-            "WIFI:T:WPA;S:mynetwork;P:mypass;H:true;;";
-
-     // Valid ZXing reader library's Wi-Fi Network config format - security type SAE
-    private static final String VALID_ZXING_WIFI_QR_CODE_SAE =
-            "WIFI:T:SAE;S:mynetwork;P:mypass;H:true;;";
-
-    // Valid ZXing reader library's Wi-Fi Network config format - security type nopass and no password
-    private static final String VALID_ZXING_WIFI_QR_CODE_NOPASS_AND_NO_PASSWORD =
-            "WIFI:T:nopass;S:mynetwork;;";
-
-    // Valid ZXing reader library's Wi-Fi Network config format - no security and no password
-    private static final String VALID_ZXING_WIFI_QR_CODE_NO_SECURITY_AND_NO_PASSWORD =
-            "WIFI:T:;S:mynetwork;P:;H:false;;";
-
-    private static final String SECURITY_OF_VALID_ZXING_WIFI_QR_CODE_WPA = "WPA";
-    private static final String SECURITY_OF_VALID_ZXING_WIFI_QR_CODE_SAE = "SAE";
-    private static final String SECURITY_OF_VALID_ZXING_WIFI_QR_CODE_NOPASS = "nopass";
-    private static final String SSID_OF_VALID_ZXING_WIFI_QR_CODE = "mynetwork";
-    private static final String PASSWORD_OF_VALID_ZXING_WIFI_QR_CODE = "mypass";
-
-    // Valid ZXing reader library's Wi-Fi Network config format - escaped characters
-    private static final String VALID_ZXING_WIFI_QR_CODE_SPECIAL_CHARACTERS =
-            "WIFI:T:WPA;S:mynetwork;P:m\\;y\\:p\\\\a\\,ss;H:true;;";
-
-    private static final String PASSWORD_OF_VALID_ZXING_WIFI_QR_CODE_SPECIAL_CHARACTERS =
-            "m;y:p\\a,ss";
-
-    // Invalid scheme QR code
-    private static final String INVALID_SCHEME_QR_CODE = "BT:T:WPA;S:mynetwork;P:mypass;H:true;;";
-
-    // Invalid Wi-Fi DPP QR code - no public key - case 1
-    private static final String INVALID_WIFI_DPP_QR_CODE_NO_PUBLIC_KEY_1 =
-            "DPP:I:SN=4774LH2b4044;M:010203040506;K:;;";
-
-    // Invalid Wi-Fi DPP QR code - no public key - case 2
-    private static final String INVALID_WIFI_DPP_QR_CODE_NO_PUBLIC_KEY_2 =
-            "DPP:I:SN=4774LH2b4044;M:010203040506;;";
-
-    // Invalid ZXing reader library's Wi-Fi Network config format - no password
-    private static final String INVALID_ZXING_WIFI_QR_CODE_NO_PASSWORD =
-            "WIFI:T:WPA;S:mynetwork;P:;;";
-
-    // Invalid ZXing reader library's Wi-Fi Network config format - no SSID
-    private static final String INVALID_ZXING_WIFI_QR_CODE_NO_SSID =
-            "WIFI:T:WPA;P:mypass;;";
-
-    @Test
-    public void parseValidWifiDppQrCode() {
-        WifiQrCode wifiQrCode = new WifiQrCode(VALID_WIFI_DPP_QR_CODE);
-
-        assertEquals(WifiQrCode.SCHEME_DPP, wifiQrCode.getScheme());
-        assertEquals(PUBLIC_KEY_OF_VALID_WIFI_DPP_QR_CODE, wifiQrCode.getPublicKey());
-        assertEquals(INFORMATION_OF_VALID_WIFI_DPP_QR_CODE, wifiQrCode.getInformation());
-    }
-
-    @Test
-    public void parseValidZxingWifiQrCode() {
-        WifiQrCode wifiQrCode = new WifiQrCode(VALID_ZXING_WIFI_QR_CODE_WPA);
-        WifiNetworkConfig config = wifiQrCode.getWifiNetworkConfig();
-
-        assertEquals(WifiQrCode.SCHEME_ZXING_WIFI_NETWORK_CONFIG, wifiQrCode.getScheme());
-        assertNotNull(config);
-        assertEquals(SECURITY_OF_VALID_ZXING_WIFI_QR_CODE_WPA, config.getSecurity());
-        assertEquals(SSID_OF_VALID_ZXING_WIFI_QR_CODE, config.getSsid());
-        assertEquals(PASSWORD_OF_VALID_ZXING_WIFI_QR_CODE, config.getPreSharedKey());
-        assertEquals(true, config.getHiddenSsid());
-    }
-
-    @Test
-    public void parseValidZxingWifiQrCodeSae() {
-        WifiQrCode wifiQrCode = new WifiQrCode(VALID_ZXING_WIFI_QR_CODE_SAE);
-        WifiNetworkConfig config = wifiQrCode.getWifiNetworkConfig();
-
-        assertEquals(WifiQrCode.SCHEME_ZXING_WIFI_NETWORK_CONFIG, wifiQrCode.getScheme());
-        assertNotNull(config);
-        assertEquals(SECURITY_OF_VALID_ZXING_WIFI_QR_CODE_SAE, config.getSecurity());
-        assertEquals(SSID_OF_VALID_ZXING_WIFI_QR_CODE, config.getSsid());
-        assertEquals(PASSWORD_OF_VALID_ZXING_WIFI_QR_CODE, config.getPreSharedKey());
-        assertEquals(true, config.getHiddenSsid());
-    }
-
-    @Test
-    public void parseValidZxingWifiQrCode_noPass_and_no_password() {
-        WifiQrCode wifiQrCode = new WifiQrCode(VALID_ZXING_WIFI_QR_CODE_NOPASS_AND_NO_PASSWORD);
-        WifiNetworkConfig config = wifiQrCode.getWifiNetworkConfig();
-
-        assertEquals(WifiQrCode.SCHEME_ZXING_WIFI_NETWORK_CONFIG, wifiQrCode.getScheme());
-        assertNotNull(config);
-        assertEquals(SECURITY_OF_VALID_ZXING_WIFI_QR_CODE_NOPASS, config.getSecurity());
-        assertEquals(SSID_OF_VALID_ZXING_WIFI_QR_CODE, config.getSsid());
-        assertNull(config.getPreSharedKey());
-        assertEquals(false, config.getHiddenSsid());
-    }
-
-    @Test
-    public void parseValidZxingWifiQrCode_no_security_and_no_password() {
-        WifiQrCode wifiQrCode = new WifiQrCode(VALID_ZXING_WIFI_QR_CODE_NO_SECURITY_AND_NO_PASSWORD);
-        WifiNetworkConfig config = wifiQrCode.getWifiNetworkConfig();
-
-        assertEquals(WifiQrCode.SCHEME_ZXING_WIFI_NETWORK_CONFIG, wifiQrCode.getScheme());
-        assertNotNull(config);
-        assertEquals("", config.getSecurity());
-        assertEquals(SSID_OF_VALID_ZXING_WIFI_QR_CODE, config.getSsid());
-        assertEquals("", config.getPreSharedKey());
-        assertEquals(false, config.getHiddenSsid());
-    }
-
-    @Test
-    public void parseValidZxingWifiQrCode_specialCharacters() {
-        WifiQrCode wifiQrCode = new WifiQrCode(VALID_ZXING_WIFI_QR_CODE_SPECIAL_CHARACTERS);
-        WifiNetworkConfig config = wifiQrCode.getWifiNetworkConfig();
-
-        assertEquals(WifiQrCode.SCHEME_ZXING_WIFI_NETWORK_CONFIG, wifiQrCode.getScheme());
-        assertNotNull(config);
-        assertEquals(SECURITY_OF_VALID_ZXING_WIFI_QR_CODE_WPA, config.getSecurity());
-        assertEquals(SSID_OF_VALID_ZXING_WIFI_QR_CODE, config.getSsid());
-        assertEquals(PASSWORD_OF_VALID_ZXING_WIFI_QR_CODE_SPECIAL_CHARACTERS,
-                config.getPreSharedKey());
-        assertEquals(true, config.getHiddenSsid());
-    }
-
-    @Test
-    public void testRemoveBackSlash() {
-        WifiQrCode wifiQrCode = new WifiQrCode(VALID_WIFI_DPP_QR_CODE);
-
-        assertEquals("\\", wifiQrCode.removeBackSlash("\\\\"));
-        assertEquals("ab", wifiQrCode.removeBackSlash("a\\b"));
-        assertEquals("a", wifiQrCode.removeBackSlash("\\a"));
-        assertEquals("\\b", wifiQrCode.removeBackSlash("\\\\b"));
-        assertEquals("c\\", wifiQrCode.removeBackSlash("c\\\\"));
-    }
-
-    @Test
-    public void parseEmptyQrCode_shouldThrowIllegalArgumentException() {
-        try {
-            new WifiQrCode(null);
-            fail("Null QR code");
-        } catch (IllegalArgumentException e) {
-            // Do nothing
-        }
-
-        try {
-            new WifiQrCode("");
-            fail("Empty string QR code");
-        } catch (IllegalArgumentException e) {
-            // Do nothing
-        }
-
-        try {
-            new WifiQrCode("DPP:;");
-            fail("Empty content WIFI DPP QR code");
-        } catch (IllegalArgumentException e) {
-            // Do nothing
-        }
-
-        try {
-            new WifiQrCode("WIFI:;");
-            fail("Empty content ZXing WIFI QR code");
-        } catch (IllegalArgumentException e) {
-            // Do nothing
-        }
-    }
-
-    @Test
-    public void parseInvalidSchemeQrCode_shouldThrowIllegalArgumentException() {
-        try {
-            new WifiQrCode(INVALID_SCHEME_QR_CODE);
-            fail("Invalid scheme");
-        } catch (IllegalArgumentException e) {
-            // Do nothing
-        }
-    }
-
-    @Test
-    public void parseInvalidWifiDppQrCode_noPublicKey_shouldThrowIllegalArgumentException() {
-        try {
-            new WifiQrCode(INVALID_WIFI_DPP_QR_CODE_NO_PUBLIC_KEY_1);
-            fail("No public key case 1");
-        } catch (IllegalArgumentException e) {
-            // Do nothing
-        }
-
-        try {
-            new WifiQrCode(INVALID_WIFI_DPP_QR_CODE_NO_PUBLIC_KEY_2);
-            fail("No public key case 2");
-        } catch (IllegalArgumentException e) {
-            // Do nothing
-        }
-    }
-
-    @Test
-    public void parseInvalidZxingWifiQrCode_noPassword_shouldThrowIllegalArgumentException() {
-        try {
-            new WifiQrCode(INVALID_ZXING_WIFI_QR_CODE_NO_PASSWORD);
-            fail("No password");
-        } catch (IllegalArgumentException e) {
-            // Do nothing
-        }
-    }
-
-    @Test
-    public void parseInvalidZxingWifiQrCode_noSsid_shouldThrowIllegalArgumentException() {
-        try {
-            new WifiQrCode(INVALID_ZXING_WIFI_QR_CODE_NO_SSID);
-            fail("No SSID");
-        } catch (IllegalArgumentException e) {
-            // Do nothing
-        }
-    }
-}
diff --git a/tests/unit/src/com/android/settings/wifi/tether/TetherServiceTest.java b/tests/unit/src/com/android/settings/wifi/tether/TetherServiceTest.java
deleted file mode 100644
index 9d9cc34..0000000
--- a/tests/unit/src/com/android/settings/wifi/tether/TetherServiceTest.java
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- * Copyright (C) 2016 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.tether;
-
-import static android.net.TetheringConstants.EXTRA_ADD_TETHER_TYPE;
-import static android.net.TetheringConstants.EXTRA_PROVISION_CALLBACK;
-import static android.net.TetheringConstants.EXTRA_RUN_PROVISION;
-import static android.net.TetheringManager.TETHERING_BLUETOOTH;
-import static android.net.TetheringManager.TETHERING_INVALID;
-import static android.net.TetheringManager.TETHERING_USB;
-import static android.net.TetheringManager.TETHERING_WIFI;
-import static android.net.TetheringManager.TETHER_ERROR_NO_ERROR;
-import static android.net.TetheringManager.TETHER_ERROR_PROVISIONING_FAILED;
-import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-
-import static com.android.settings.wifi.tether.TetherService.EXTRA_TETHER_PROVISIONING_RESPONSE;
-import static com.android.settings.wifi.tether.TetherService.EXTRA_TETHER_SILENT_PROVISIONING_ACTION;
-import static com.android.settings.wifi.tether.TetherService.EXTRA_TETHER_SUBID;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.Activity;
-import android.app.PendingIntent;
-import android.app.usage.UsageStatsManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.ContextWrapper;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.net.TetheringManager;
-import android.net.wifi.WifiManager;
-import android.os.Bundle;
-import android.os.ResultReceiver;
-import android.os.SystemClock;
-import android.test.ServiceTestCase;
-import android.util.Log;
-
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-public class TetherServiceTest extends ServiceTestCase<TetherService> {
-
-    private static final String TAG = "TetherServiceTest";
-    private static final String FAKE_PACKAGE_NAME = "com.some.package.name";
-    private static final String ENTITLEMENT_PACKAGE_NAME = "com.some.entitlement.name";
-    private static final String TEST_RESPONSE_ACTION = "testProvisioningResponseAction";
-    private static final String TEST_NO_UI_ACTION = "testNoUiProvisioningRequestAction";
-    private static final int BOGUS_RECEIVER_RESULT = -5;
-    private static final int MS_PER_HOUR = 60 * 60 * 1000;
-    private static final int SHORT_TIMEOUT = 100;
-    private static final int PROVISION_TIMEOUT = 1000;
-
-    private TetherService mService;
-    private MockTetherServiceWrapper mWrapper;
-    int mLastReceiverResultCode = BOGUS_RECEIVER_RESULT;
-    private int mLastTetherRequestType = TETHERING_INVALID;
-    private int mProvisionResponse = BOGUS_RECEIVER_RESULT;
-    private ProvisionReceiver mProvisionReceiver;
-    private Receiver mResultReceiver;
-
-    @Mock private TetheringManager mTetheringManager;
-    @Mock private PackageManager mPackageManager;
-    @Mock private WifiManager mWifiManager;
-    @Mock private SharedPreferences mPrefs;
-    @Mock private Editor mPrefEditor;
-    @Captor private ArgumentCaptor<PendingIntent> mPiCaptor;
-    @Captor private ArgumentCaptor<String> mStoredTypes;
-
-    public TetherServiceTest() {
-        super(TetherService.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        MockitoAnnotations.initMocks(this);
-
-        mContext = new TestContextWrapper(getContext());
-        setContext(mContext);
-
-        mResultReceiver = new Receiver(this);
-        mLastReceiverResultCode = BOGUS_RECEIVER_RESULT;
-        mProvisionResponse = Activity.RESULT_OK;
-        mProvisionReceiver = new ProvisionReceiver();
-        IntentFilter filter = new IntentFilter(TEST_NO_UI_ACTION);
-        filter.addCategory(Intent.CATEGORY_DEFAULT);
-        mContext.registerReceiver(mProvisionReceiver, filter);
-
-        final String CURRENT_TYPES = "currentTethers";
-        when(mPrefs.getString(CURRENT_TYPES, "")).thenReturn("");
-        when(mPrefs.edit()).thenReturn(mPrefEditor);
-        when(mPrefEditor.putString(eq(CURRENT_TYPES), mStoredTypes.capture())).thenReturn(
-                mPrefEditor);
-        mWrapper = new MockTetherServiceWrapper(mContext);
-
-        ResolveInfo systemAppResolveInfo = new ResolveInfo();
-        ActivityInfo systemActivityInfo = new ActivityInfo();
-        systemActivityInfo.packageName = ENTITLEMENT_PACKAGE_NAME;
-        ApplicationInfo systemAppInfo = new ApplicationInfo();
-        systemAppInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
-        systemActivityInfo.applicationInfo = systemAppInfo;
-        systemAppResolveInfo.activityInfo = systemActivityInfo;
-
-        ResolveInfo nonSystemResolveInfo = new ResolveInfo();
-        ActivityInfo nonSystemActivityInfo = new ActivityInfo();
-        nonSystemActivityInfo.packageName = FAKE_PACKAGE_NAME;
-        nonSystemActivityInfo.applicationInfo = new ApplicationInfo();
-        nonSystemResolveInfo.activityInfo = nonSystemActivityInfo;
-
-        List<ResolveInfo> resolvers = new ArrayList();
-        resolvers.add(nonSystemResolveInfo);
-        resolvers.add(systemAppResolveInfo);
-        when(mPackageManager.queryBroadcastReceivers(
-                any(Intent.class), eq(PackageManager.MATCH_ALL))).thenReturn(resolvers);
-        setupService();
-        getService().setTetherServiceWrapper(mWrapper);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        mContext.unregisterReceiver(mProvisionReceiver);
-        super.tearDown();
-    }
-
-    public void testStartForProvision() {
-        runProvisioningForType(TETHERING_WIFI);
-
-        assertTrue(waitForProvisionRequest(TETHERING_WIFI));
-        assertTrue(waitForProvisionResponse(TETHER_ERROR_NO_ERROR));
-    }
-
-    public void testStartKeepsProvisionAppActive() {
-        runProvisioningForType(TETHERING_WIFI);
-
-        assertTrue(waitForProvisionRequest(TETHERING_WIFI));
-        assertTrue(waitForProvisionResponse(TETHER_ERROR_NO_ERROR));
-        assertFalse(mWrapper.isAppInactive(ENTITLEMENT_PACKAGE_NAME));
-        // Non-system handler of the intent action should stay idle.
-        assertTrue(mWrapper.isAppInactive(FAKE_PACKAGE_NAME));
-    }
-
-    public void testStartMultiple() {
-        runProvisioningForType(TETHERING_WIFI);
-
-        assertTrue(waitForProvisionRequest(TETHERING_WIFI));
-        assertTrue(waitForProvisionResponse(TETHER_ERROR_NO_ERROR));
-
-        runProvisioningForType(TETHERING_USB);
-
-        assertTrue(waitForProvisionRequest(TETHERING_USB));
-        assertTrue(waitForProvisionResponse(TETHER_ERROR_NO_ERROR));
-
-        runProvisioningForType(TETHERING_BLUETOOTH);
-
-        assertTrue(waitForProvisionRequest(TETHERING_BLUETOOTH));
-        assertTrue(waitForProvisionResponse(TETHER_ERROR_NO_ERROR));
-    }
-
-    public void testPersistTypes() {
-        runProvisioningForType(TETHERING_WIFI);
-
-        waitForProvisionRequest(TETHERING_WIFI);
-        waitForProvisionResponse(TETHER_ERROR_NO_ERROR);
-
-        runProvisioningForType(TETHERING_BLUETOOTH);
-
-        waitForProvisionRequest(TETHERING_BLUETOOTH);
-        waitForProvisionResponse(TETHER_ERROR_NO_ERROR);
-
-        shutdownService();
-        assertEquals(TETHERING_WIFI + "," + TETHERING_BLUETOOTH, mStoredTypes.getValue());
-    }
-
-    public void testFailureStopsTethering_Wifi() {
-        mProvisionResponse = Activity.RESULT_CANCELED;
-
-        runProvisioningForType(TETHERING_WIFI);
-
-        assertTrue(waitForProvisionRequest(TETHERING_WIFI));
-        assertTrue(waitForProvisionResponse(TETHER_ERROR_PROVISIONING_FAILED));
-
-        verify(mTetheringManager).stopTethering(TETHERING_WIFI);
-    }
-
-    public void testFailureStopsTethering_Usb() {
-        mProvisionResponse = Activity.RESULT_CANCELED;
-
-        runProvisioningForType(TETHERING_USB);
-
-        assertTrue(waitForProvisionRequest(TETHERING_USB));
-        assertTrue(waitForProvisionResponse(TETHER_ERROR_PROVISIONING_FAILED));
-
-        verify(mTetheringManager).stopTethering(TETHERING_USB);
-    }
-
-    public void testIgnoreOutdatedRequest() {
-        Intent intent = new Intent();
-        intent.putExtra(EXTRA_ADD_TETHER_TYPE, TETHERING_WIFI);
-        intent.putExtra(EXTRA_RUN_PROVISION, true);
-        intent.putExtra(EXTRA_TETHER_SILENT_PROVISIONING_ACTION, TEST_NO_UI_ACTION);
-        intent.putExtra(EXTRA_PROVISION_CALLBACK, mResultReceiver);
-        intent.putExtra(EXTRA_TETHER_SUBID, 1 /* Tested subId number */);
-        intent.putExtra(EXTRA_TETHER_PROVISIONING_RESPONSE, TEST_RESPONSE_ACTION);
-        startService(intent);
-
-        SystemClock.sleep(PROVISION_TIMEOUT);
-        assertEquals(TETHERING_INVALID, mLastTetherRequestType);
-        assertTrue(mWrapper.isAppInactive(ENTITLEMENT_PACKAGE_NAME));
-        assertTrue(mWrapper.isAppInactive(FAKE_PACKAGE_NAME));
-    }
-
-    private void runProvisioningForType(int type) {
-        Intent intent = new Intent();
-        intent.putExtra(EXTRA_ADD_TETHER_TYPE, type);
-        intent.putExtra(EXTRA_RUN_PROVISION, true);
-        intent.putExtra(EXTRA_TETHER_SILENT_PROVISIONING_ACTION, TEST_NO_UI_ACTION);
-        intent.putExtra(EXTRA_PROVISION_CALLBACK, mResultReceiver);
-        intent.putExtra(EXTRA_TETHER_SUBID, INVALID_SUBSCRIPTION_ID);
-        intent.putExtra(EXTRA_TETHER_PROVISIONING_RESPONSE, TEST_RESPONSE_ACTION);
-        startService(intent);
-    }
-
-    private boolean waitForAppInactive(UsageStatsManager usageStatsManager, String packageName) {
-        long startTime = SystemClock.uptimeMillis();
-        while (true) {
-            if (usageStatsManager.isAppInactive(packageName)) {
-                return true;
-            }
-            if ((SystemClock.uptimeMillis() - startTime) > PROVISION_TIMEOUT) {
-                return false;
-            }
-            SystemClock.sleep(SHORT_TIMEOUT);
-        }
-    }
-
-    private boolean waitForProvisionRequest(int expectedType) {
-        long startTime = SystemClock.uptimeMillis();
-        while (true) {
-            if (mLastTetherRequestType == expectedType) {
-                mLastTetherRequestType = TETHERING_INVALID;
-                return true;
-            }
-            if ((SystemClock.uptimeMillis() - startTime) > PROVISION_TIMEOUT) {
-                Log.v(TAG, String.format(
-                        "waitForProvisionRequest timeout: expected=%d, actual=%d",
-                        expectedType, mLastTetherRequestType));
-                return false;
-            }
-            SystemClock.sleep(SHORT_TIMEOUT);
-        }
-    }
-
-    private boolean waitForProvisionResponse(int expectedValue) {
-        long startTime = SystemClock.uptimeMillis();
-        while (true) {
-            if (mLastReceiverResultCode == expectedValue) {
-                mLastReceiverResultCode = BOGUS_RECEIVER_RESULT;
-                return true;
-            }
-            if ((SystemClock.uptimeMillis() - startTime) > PROVISION_TIMEOUT) {
-                Log.v(TAG, String.format(
-                        "waitForProvisionResponse timeout: expected=%d, actual=%d",
-                        expectedValue, mLastReceiverResultCode));
-                return false;
-            }
-            SystemClock.sleep(SHORT_TIMEOUT);
-        }
-    }
-
-    private class TestContextWrapper extends ContextWrapper {
-
-        public TestContextWrapper(Context base) {
-            super(base);
-        }
-
-        @Override
-        public SharedPreferences getSharedPreferences(String name, int mode) {
-            // Stub out prefs to control the persisted tether type list.
-            if (name == "tetherPrefs") {
-                return mPrefs;
-            }
-            return super.getSharedPreferences(name, mode);
-        }
-
-        @Override
-        public PackageManager getPackageManager() {
-            return mPackageManager;
-        }
-
-        @Override
-        public Object getSystemService(String name) {
-            if (TETHERING_SERVICE.equals(name)) {
-                return mTetheringManager;
-            } else if (WIFI_SERVICE.equals(name)) {
-                return mWifiManager;
-            }
-
-            return super.getSystemService(name);
-        }
-    }
-
-    private static final class Receiver extends ResultReceiver {
-        final WeakReference<TetherServiceTest> mTest;
-
-        Receiver(TetherServiceTest test) {
-            super(null);
-            mTest = new WeakReference<TetherServiceTest>(test);
-        }
-
-        @Override
-        protected void onReceiveResult(int resultCode, Bundle resultData) {
-            TetherServiceTest test = mTest.get();
-            if (test != null) {
-                test.mLastReceiverResultCode = resultCode;
-            }
-        }
-    };
-
-    /**
-     * Stubs out the provisioning app receiver.
-     */
-    private class ProvisionReceiver extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            mLastTetherRequestType = intent.getIntExtra("TETHER_TYPE", TETHERING_INVALID);
-            sendResponse(mProvisionResponse, context);
-        }
-
-        private void sendResponse(int response, Context context) {
-            Intent responseIntent = new Intent(TEST_RESPONSE_ACTION);
-            responseIntent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
-            responseIntent.putExtra(TetherService.EXTRA_RESULT, response);
-            context.sendBroadcast(
-                    responseIntent, android.Manifest.permission.TETHER_PRIVILEGED);
-        }
-    }
-
-    private static class MockTetherServiceWrapper
-            extends TetherService.TetherServiceWrapper {
-        private final Set<String> mActivePackages;
-
-        MockTetherServiceWrapper(Context context) {
-            super(context);
-            mActivePackages = new HashSet<>();
-        }
-
-        @Override
-        void setAppInactive(String packageName, boolean isInactive) {
-            if (!isInactive) {
-                mActivePackages.add(packageName);
-            } else {
-                mActivePackages.remove(packageName);
-            }
-        }
-
-        boolean isAppInactive(String packageName) {
-            return !mActivePackages.contains(packageName);
-        }
-
-        @Override
-        int getActiveDataSubscriptionId() {
-            return INVALID_SUBSCRIPTION_ID;
-        }
-    }
-}
diff --git a/tests/unit/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java b/tests/unit/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java
deleted file mode 100644
index 2de6611..0000000
--- a/tests/unit/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2017 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.tether;
-
-import static androidx.test.espresso.Espresso.onView;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
-import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static androidx.test.espresso.matcher.ViewMatchers.withText;
-
-import android.app.Instrumentation;
-import android.content.Intent;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.settings.Settings;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class WifiTetherSettingsTest {
-
-    private static final long TIMEOUT = 2000L;
-
-    private Instrumentation mInstrumentation;
-    private Intent mTetherActivityIntent;
-    private UiDevice mDevice;
-
-    @Before
-    public void setUp() {
-        mInstrumentation = InstrumentationRegistry.getInstrumentation();
-        mDevice = UiDevice.getInstance(mInstrumentation);
-        mTetherActivityIntent = new Intent()
-                .setClassName(mInstrumentation.getTargetContext().getPackageName(),
-                        Settings.TetherSettingsActivity.class.getName())
-                .setPackage(mInstrumentation.getTargetContext().getPackageName())
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-    }
-
-    @After
-    public void tearDown() {
-        mDevice.pressHome();
-    }
-
-    @Test
-    public void launchTetherSettings_shouldHaveAllFields() {
-        launchWifiTetherActivity();
-        onView(withText("Hotspot name")).check(matches(isDisplayed()));
-        onView(withText("Hotspot password")).check(matches(isDisplayed()));
-    }
-
-    private void launchWifiTetherActivity() {
-        mInstrumentation.startActivitySync(mTetherActivityIntent);
-        onView(withText("Wi‑Fi hotspot")).perform();
-        UiObject2 item = mDevice.wait(Until.findObject(By.text("Wi‑Fi hotspot")), TIMEOUT);
-        item.click();
-    }
-}
