diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index da88f76..781e816 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -902,23 +902,13 @@
                 android:icon="@drawable/ic_settings_night_display"
                 android:taskAffinity="">
             <intent-filter android:priority="1">
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="com.android.settings.suggested.category.SETTINGS_ONLY" />
-            </intent-filter>
-            <intent-filter android:priority="1">
                 <action android:name="android.settings.NIGHT_DISPLAY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
-                android:value="true" />
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                 android:value="com.android.settings.display.NightDisplaySettings" />
-            <meta-data android:name="com.android.settings.dismiss"
-                android:value="30" />
-            <meta-data android:name="com.android.settings.title"
-                android:resource="@string/night_display_suggestion_title" />
-            <meta-data android:name="com.android.settings.summary"
-                android:resource="@string/night_display_suggestion_summary" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                android:value="true" />
         </activity>
 
         <activity android:name="Settings$DeviceInfoSettingsActivity"
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index f8c9c51..f102ed2 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Ontleding sedert battery laas volgelaai is"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Laas volgelaai"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Oorblywende batterytyd is benaderd en kan op grond van gebruik verander"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Terwyl program gebruik word"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"In die agtergrond"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Batterygebruik"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> van totale programgebruik (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Foonberging"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Gebruik van <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"vol"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Maak program skoon"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 58be673..6101494 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"መጨረሻ ላይ ሙሉ ኃይል ከነበረበት ጊዜ ጀምሮ ያለው ትንታኔ"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"ሙሉ ኃይል የነበረበት መጨረሻ ጊዜ"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"ቀሪ የባትሪ አጠቃቀም ግምታዊ ሲሆን በአጠቃቀም መሠረት ሊቀየር ይችላል"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"መተግበሪያውን እየተጠቀሙ ሳለ"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"በጀርባ ውስጥ ሳለ"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"የባትሪ አጠቃቀም"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"ከጠቅላላው የመተግበሪያ አጠቃቀም <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g> ሚአሰ)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"የስልክ ማከማቻ"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"ከ<xliff:g id="TOTAL">%1$s</xliff:g> ጥቅም ላይ የዋለው"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"ሙሉ"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"መተግበሪያን አጽዳ"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 162cc85..f3a12d2 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -2093,7 +2093,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"تحليل الاستخدام منذ آخر شحن كامل"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"آخر شحن كامل"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"الوقت المتبقي حتى انتهاء البطارية تقريبي ويمكن أن يتغير حسب الاستخدام"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"أثناء استخدام التطبيق"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"أثناء الاستخدام في الخلفية"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"استخدام البطارية"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> من إجمالي استخدام التطبيق (<xliff:g id="POWER">%2$d</xliff:g> ملي أمبير في الساعة)"</string>
@@ -3776,7 +3777,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"سعة تخزين الهاتف"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"سعة تخزين مستخدمة من <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"ممتلئة"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"مسح التطبيق"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 1e7f015..04ec74e 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Sonuncu tam doldurmadan sonrakı istifadə problemi"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Sonuncu tam doldurma"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Qalan batareya vaxtı təxminidir və istifadəyə əsasən dəyişə bilər"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Tətbiq istifadə edərkən"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Arxa fonda olarkən"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Batareya istifadəsi"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"Ümumi tətbiq istifadəsindən <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Telefon yaddaşı"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> istifadə olunub"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"tam"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Tətbiqi silin"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index ca80237..e9c5d5a 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Разбивка след последното пълно зареждане"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Последно пълно зареждане"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Данните за оставащия живот на батерията са приблизителни и могат да се променят въз основа на използването"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"При използване на приложението"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"При работа на заден план"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Използване на батерията"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> от общия капацитет, използван от приложенията (<xliff:g id="POWER">%2$d</xliff:g> мАч)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Хранилище на телефона"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Използвано от <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"пълно"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Изчистване на приложението"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index f5b8f22..d322f66 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"শেষবার সম্পূর্ণ চার্জ দেওয়ার পর থেকে ব্যাটারি ব্যবহারের বিবরণ"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"শেষবার সম্পূর্ণ চার্জ দেওয়ার সময়"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"ব্যাটারি ব্যবহারের অবশিষ্ট সময়টি হল আনুমানিক এবং ব্যবহারের উপর ভিত্তি করে সেটি বদলে যেতে পারে"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"অ্যাপ ব্যবহার করার সময়"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"যখন এটি পটভূমিতে"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"ব্যাটারির ব্যবহার"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"মোট অ্যাপ ব্যবহার এর <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"ফোনের সঞ্চয়স্থান"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> এর মধ্যে ব্যবহার হয়েছে"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"পূর্ণ"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"অ্যাপের ডেটা সাফ করুন"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 74fc579..2ba1b65 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Desglossament des de l\'última càrrega completa"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Última càrrega completa"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"El temps restant de la bateria és aproximat i pot variar en funció de l\'ús"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Quan s\'utilitza l\'aplicació"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Quan està en segon pla"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Ús de la bateria"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> de l\'ús total de l\'aplicació (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -2418,7 +2419,7 @@
     <string name="vpn_no_vpns_added" msgid="5002741367858707244">"No s\'ha afegit cap VPN"</string>
     <string name="vpn_always_on_summary" msgid="2821344524094363617">"Mantén-te connectat a la VPN sempre"</string>
     <string name="vpn_always_on_summary_not_supported" msgid="592304911378771510">"No és compatible amb aquesta aplicació"</string>
-    <string name="vpn_always_on_summary_active" msgid="8800736191241875669">"Sempre activa"</string>
+    <string name="vpn_always_on_summary_active" msgid="8800736191241875669">"Sempre activada"</string>
     <string name="vpn_require_connection" msgid="8388183166574269666">"Bloqueja les connexions sense VPN"</string>
     <string name="vpn_require_connection_title" msgid="159053539340576331">"La connexió VPN ha de ser obligatòria?"</string>
     <string name="vpn_lockdown_summary" msgid="2200032066376720339">"Selecciona un perfil de VPN per estar-hi sempre connectat. El trànsit de la xarxa només es permetrà quan estiguis connectat a aquesta VPN."</string>
@@ -2950,7 +2951,7 @@
     <string name="switch_on_text" msgid="1124106706920572386">"Activat"</string>
     <string name="switch_off_text" msgid="1139356348100829659">"Desactivat"</string>
     <string name="screen_pinning_title" msgid="2292573232264116542">"Fixació de pantalla"</string>
-    <string name="screen_pinning_description" msgid="3360904523688769289">"Si aquesta opció està activada, pots fixar la pantalla per mantenir-la visible fins que desactivis aquesta opció.\n\nPer fer-ho:\n\n1. Assegura\'t que l\'opció per fixar la pantalla estigui activada.\n\n2. Obre la pantalla que vulguis fixar.\n\n3. Toca Visió general.\n\n4. Fes lliscar el dit cap amunt i toca la icona de fixació."</string>
+    <string name="screen_pinning_description" msgid="3360904523688769289">"Si aquesta opció està activada, pots fixar la pantalla per mantenir-la visible fins que desactivis aquesta opció.\n\nPer fer-ho:\n\n1. Assegura\'t que l\'opció per fixar la pantalla estigui activada.\n\n2. Obre la pantalla que vulguis fixar.\n\n3. Toca Aplicacions recents.\n\n4. Fes lliscar el dit cap amunt i toca la icona de fixació."</string>
     <string name="screen_pinning_unlock_pattern" msgid="8282268570060313339">"Sol·licita el patró de desbloqueig per anul·lar"</string>
     <string name="screen_pinning_unlock_pin" msgid="8757588350454795286">"Demana el codi PIN per anul·lar"</string>
     <string name="screen_pinning_unlock_password" msgid="2514079566873826434">"Demana la contrasenya per anul·lar"</string>
@@ -3116,7 +3117,7 @@
     <string name="usb_use_charging_only" msgid="2180443097365214467">"carregar aquest dispositiu"</string>
     <string name="usb_use_charging_only_desc" msgid="3066256793008540627">"Carrega només aquest dispositiu"</string>
     <string name="usb_use_power_only" msgid="6426550616883919530">"subministrar corrent"</string>
-    <string name="usb_use_power_only_desc" msgid="3461232831015575152">"Carrega el dispositiu connectat. Només funciona amb dispositius que són compatibles amb la càrrega USB."</string>
+    <string name="usb_use_power_only_desc" msgid="3461232831015575152">"Carrega el dispositiu connectat. Només funciona amb dispositius que són compatibles amb la càrrega per USB."</string>
     <string name="usb_use_file_transfers" msgid="7409600791007250137">"transferir fitxers"</string>
     <string name="usb_use_file_transfers_desc" msgid="4235764784331804488">"Transfereix fitxers a un altre dispositiu"</string>
     <string name="usb_use_photo_transfers" msgid="7794775645350330454">"Transferir fotos (PTP)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Emmagatzematge del telèfon"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Utilitzat de: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"ple"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Esborra l\'aplicació"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 03aacbe..5a43ae4 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -2051,7 +2051,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Přehled od posledního úplného nabití"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Poslední úplné nabití"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Zbývající doba výdrže baterie je přibližná a může se změnit podle způsobu používání"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Při používání aplikace"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Na pozadí"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Využití baterie"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> z celkového využití aplikacemi (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3674,7 +3675,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Úložiště telefonu"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Využito z <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"plné"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Vymazat aplikaci"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 12d1e5d..7ce0cdd 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Oversigt siden sidste fulde opladning"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Sidste fulde opladning"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Den resterende batteritid er omtrentlig og kan ændre sig afhængigt af forbrug"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Når appen er i brug"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Når den er i baggrunden"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Batteriforbrug"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> af det samlede appforbrug (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Telefonens lager"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Anvendt lagerplads ud af <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"fuld"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Ryd appen"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 3b4f730..6706064 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Aufschlüsselung des Verbrauchs seit letzter vollständiger Aufladung"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Letzte vollständige Aufladung"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Die verbleibende Akkulaufzeit ist eine Schätzung und kann sich je nach Nutzung ändern"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Beim Verwenden der App"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Im Hintergrund"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Akkunutzung"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> der gesamten App-Nutzung (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Smartphone-Speicher"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Von <xliff:g id="TOTAL">%1$s</xliff:g> verwendet"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"voll"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"App löschen"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index b50266f..0dd134f 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Ανάλυση από την τελευταία πλήρη φόρτιση"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Τελευταία πλήρης φόρτιση"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Ο χρόνος της μπαταρίας που απομένει υπολογίζεται κατά προσέγγιση και μπορεί να αλλάξει ανάλογα με τη χρήση"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Κατά τη χρήση της εφαρμογής"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Κατά την εκτέλεση στο παρασκήνιο"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Χρήση της μπαταρίας"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> της συνολικής χρήσης της εφαρμογής (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Αποθηκ. χώρος τηλεφώνου"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Σε χρήση από τα <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"πλήρης"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Διαγραφή δεδομένων εφαρμογής"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 4ffe677..78b0197 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Breakdown since last full charge"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Last full charge"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Remaining battery time is approximate and can change based on usage"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"While using app"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"While in background"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Battery usage"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> of total app usage (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Phone storage"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Used of <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"full"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Clear app"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 4ffe677..78b0197 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Breakdown since last full charge"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Last full charge"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Remaining battery time is approximate and can change based on usage"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"While using app"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"While in background"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Battery usage"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> of total app usage (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Phone storage"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Used of <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"full"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Clear app"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 4ffe677..78b0197 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Breakdown since last full charge"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Last full charge"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Remaining battery time is approximate and can change based on usage"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"While using app"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"While in background"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Battery usage"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> of total app usage (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Phone storage"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Used of <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"full"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Clear app"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 84157a6..bd3183c 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Desglose desde la última carga completa"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Última carga completa"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"El tiempo restante de batería es aproximado y puede cambiar en función del uso"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Mientras la app está en uso"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Mientras se ejecuta en segundo plano"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Uso de la batería"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> del consumo total de las apps (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3570,7 +3571,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Almacenamiento del teléf."</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"En uso de <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"lleno"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Borrar app"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 1c9d489..f3c3cbe 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Desglose desde la última carga completa"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Última carga completa"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"El tiempo de batería restante es aproximado y puede variar en función del uso"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"En uso"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"En segundo plano"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Uso de la batería"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> del total del uso de las aplicaciones (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Almacenamiento teléfono"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Utilizado de <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"completo"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Borrar aplicación"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index b367166..ce59e9b 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Üksikasjalik teave alates viimasest täislaadimisest"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Viimane täislaadimine"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Aku järelejäänud tööaeg on ligikaudne ja võib olenevalt kasutusest muutuda."</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Rakenduse kasutamise ajal"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Taustal"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Akukasutus"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> kõigi rakenduste akukasutusest (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Telefoni salvestusruum"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Kasutatud <xliff:g id="TOTAL">%1$s</xliff:g>-st"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"täis"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Tühjenda rakendus"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 3849cc0..180d436 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Guztiz kargatu zen azken aldiaz geroztik emandako erabilerari buruzko datuak"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Azkenekoz guztiz kargatu zenetik"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Gelditzen den bateriari buruzko informazioa gutxi gorabeherakoa da eta aldatu egin liteke erabileraren arabera"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Aplikazioa erabili bitartean"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Atzeko planoan dagoen bitartean"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Bateriaren erabilera"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"Aplikazio guztien erabileraren <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Telefonoko memoria"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Memoria osotik (<xliff:g id="TOTAL">%1$s</xliff:g>) erabilitakoa"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"beteta"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Garbitu aplikazioa"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 8a460b5..ffb04b7 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"تفکیک مصرف شارژ از زمان آخرین شارژ کامل"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"آخرین شارژ کامل"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"زمان باقی‌مانده از شارژ باتری تقریبی است و بسته‌ به استفاده می‌تواند تغییر کند"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"درحالت استفاده از برنامه"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"درحالت پس‌زمینه"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"مصرف باتری"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> از میزان کل مصرف برنامه (<xliff:g id="POWER">%2$d</xliff:g> میلی‌آمپرساعت)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"حافظه تلفن"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"مصرف‌شده از <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"کامل"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"پاک کردن برنامه"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 3d68908..178d264 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Erittely virrankulutuksesta edellisen täyden latauksen jälkeen"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Edellisen täyden latauksen jälkeen"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Akun jäljellä oleva varaus on arvio ja voi muuttua käytön perusteella."</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Sovelluksen käytön aikana"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Taustalla"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Akun käyttö"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> kaikesta sovellusten virrankulutuksesta (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Puhelimen tallennustila"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Tallennustilasta (<xliff:g id="TOTAL">%1$s</xliff:g>) käytössä"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"täysi"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Tyhjennä sovelluksen tiedot"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index ab269f6..6c1aa5c 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Détails de l\'utilisation depuis la dernière charge complète"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Dernière charge complète"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"L\'autonomie restante de la pile est approximative et peut changer en fonction de l\'utilisation"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Lorsque l\'application est utilisée"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Lorsqu\'elle fonctionne en arrière-plan"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Utilisation de la pile"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> de l\'utilisation totale de l\'application (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Stockage du téléphone"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Utilisé(s) sur <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"utilisé"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Effacer les données de l\'application"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 43d12be..b53d974 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Répartition depuis la dernière charge complète"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Dernière charge complète"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"La durée d\'autonomie restante est approximative et peut changer en fonction de l\'utilisation"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Lorsque l\'application est utilisée"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Lorsque l\'application s\'exécute en arrière-plan"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Utilisation de la batterie"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> de l\'utilisation totale par les applications (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Espace stockage téléphone"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Utilisés sur <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"Plein"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Effacer les données de l\'application"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 0ef276b..421bc98 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Análise detallada desde a última carga completa"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Última carga completa"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"O tempo restante da batería é aproximado e pode cambiar en función do uso"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Mentres se utiliza a aplicación"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Mentres está en segundo plano"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Uso da batería"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> do uso total da aplicación (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -2418,7 +2419,7 @@
     <string name="vpn_no_vpns_added" msgid="5002741367858707244">"Non se engadiron VPN"</string>
     <string name="vpn_always_on_summary" msgid="2821344524094363617">"Permanece conectado á VPN sempre"</string>
     <string name="vpn_always_on_summary_not_supported" msgid="592304911378771510">"Opción non admitida nesta aplicación"</string>
-    <string name="vpn_always_on_summary_active" msgid="8800736191241875669">"Opción Sempre activada habilitada"</string>
+    <string name="vpn_always_on_summary_active" msgid="8800736191241875669">"VPN sempre activada: habilitada"</string>
     <string name="vpn_require_connection" msgid="8388183166574269666">"Bloquear conexións sen VPN"</string>
     <string name="vpn_require_connection_title" msgid="159053539340576331">"Requirir conexión VPN?"</string>
     <string name="vpn_lockdown_summary" msgid="2200032066376720339">"Selecciona un perfil de VPN ao que permanecer sempre conectado. Só se permitirá tráfico de rede cando esteas conectado a esta VPN."</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Almacenamento do teléfono"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"En uso de: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"todo"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Borrar aplicación"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 6c2af4e..3a77c6b 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"છેલ્લા સંપૂર્ણ ચાર્જ પછીનું વિશ્લેષણ"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"છેલ્લા સંપૂર્ણ ચાર્જનો સમય"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"બાકી બૅટરી સમય અનુમાનિત છે અને વપરાશના આધારે બદલાય શકે છે"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"ઍપ્લિકેશનનો ઉપયોગ કરતા હોય ત્યારે"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"પૃષ્ઠભૂમિમાં હોય ત્યારે"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"બૅટરી વપરાશ"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> કુલ ઍપ્લિકેશન વપરાશ (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"ફોન સ્ટૉરેજ"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g>માંથી ઉપયોગમાં લેવાયો"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"પૂર્ણ"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"ઍપ્લિકેશન સાફ કરો"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 728edaa..b2ed5e5 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -333,7 +333,7 @@
     <string name="encryption_and_credential_settings_title" msgid="6514904533438791561">"एन्क्रिप्शन और क्रेडेंशियल"</string>
     <string name="encryption_and_credential_settings_summary" msgid="8721883002237981248">"फ़ोन एन्क्रिप्ट किया गया है"</string>
     <string name="lockscreen_settings_title" msgid="3922976395527087455">"लॉक स्क्रीन प्राथमिकताएं"</string>
-    <string name="lockscreen_settings_summary" msgid="8788089950462346171">"सभी नोटिफिकेशन सामग्री दिखाएं"</string>
+    <string name="lockscreen_settings_summary" msgid="8788089950462346171">"सभी नोटिफ़िकेशन सामग्री दिखाएं"</string>
     <string name="security_settings_summary" msgid="967393342537986570">"मेरा स्‍थान, स्‍क्रीन अनलॉक, सिम कार्ड लॉक, प्रमाणिकता मेमोरी लॉक सेट करें"</string>
     <string name="cdma_security_settings_summary" msgid="6068799952798901542">"मेरा स्‍थान, स्‍क्रीन अनलॉक, प्रमाणिकता मेमोरी लॉक सेट करें"</string>
     <string name="security_passwords_title" msgid="2881269890053568809">"निजता"</string>
@@ -451,7 +451,7 @@
     <string name="setup_lock_settings_picker_message" product="default" msgid="3692856437543730446">"डिवाइस सुरक्षा सुविधाओं को सक्रिय करके अन्य लोगों को आपकी अनुमति के बिना इस फ़ोन का उपयोग करने से रोकें. वह स्क्रीन लॉक चुनें जिसका आप उपयोग करना चाहते हैं."</string>
     <string name="lock_settings_picker_fingerprint_message" msgid="4755230324778371292">"अपनी बैकअप स्‍क्रीन लॉक विधि चुनें"</string>
     <string name="unlock_set_unlock_launch_picker_title" msgid="2084576942666016993">"स्क्रीन लॉक"</string>
-    <string name="unlock_set_unlock_launch_picker_summary_lock_immediately" msgid="5967714169972542586">"<xliff:g id="UNLOCK_METHOD">%1$s</xliff:g> / निष्क्रिय होने के तत्काल बाद"</string>
+    <string name="unlock_set_unlock_launch_picker_summary_lock_immediately" msgid="5967714169972542586">"<xliff:g id="UNLOCK_METHOD">%1$s</xliff:g> / निष्क्रिय होने के तुरंत बाद"</string>
     <string name="unlock_set_unlock_launch_picker_summary_lock_after_timeout" msgid="4696710373399258413">"<xliff:g id="UNLOCK_METHOD">%1$s</xliff:g> / <xliff:g id="TIMEOUT_STRING">%2$s</xliff:g> निष्क्रिय होने के बाद"</string>
     <string name="unlock_set_unlock_launch_picker_title_profile" msgid="124176557311393483">"कार्य प्रोफ़ाइल लॉक"</string>
     <string name="unlock_set_unlock_launch_picker_change_title" msgid="5045866882028324941">"लॉक स्‍क्रीन बदलें"</string>
@@ -690,7 +690,7 @@
     <string name="wifi_notify_open_networks" msgid="76298880708051981">"खुले नेटवर्क का नोटिफ़िकेशन"</string>
     <string name="wifi_notify_open_networks_summary" msgid="2761326999921366960">"बढ़िया इंटरनेट देने वाला सार्वजनिक नेटवर्क मिलने पर बताएं"</string>
     <string name="wifi_wakeup" msgid="8815640989361538036">"वाई-फ़ाई अपने आप चालू करें"</string>
-    <string name="wifi_wakeup_summary" msgid="2530814331062997163">"वाई-फ़ाई लगभग बढ़िया इंटरनेट देने वाले सहेजे गए नेटवर्क, जैसे कि आपके घर के इंटरनेट को अपने आप चालू कर देगा"</string>
+    <string name="wifi_wakeup_summary" msgid="2530814331062997163">"वाई-फ़ाई बढ़िया इंटरनेट देने वाले सहेजे गए नेटवर्क के पास होने पर अपने आप चालू  हो जाएगा, जैसे कि आपके घर का नेटवर्क"</string>
     <string name="wifi_poor_network_detection" msgid="4925789238170207169">"खराब कनेक्‍शन से बचें"</string>
     <string name="wifi_poor_network_detection_summary" msgid="2784135142239546291">"जब तक वाई-फ़ाई  नेटवर्क में अच्छा इंटरनेट कनेक्‍शन न हो, तब तक उसका उपयोग न करें"</string>
     <string name="wifi_avoid_poor_network_detection_summary" msgid="4674423884870027498">"उन्हीं नेटवर्क का उपयोग करें जिनमें अच्छा इंटरनेट कनेक्शन है"</string>
@@ -963,11 +963,11 @@
     <string name="auto_brightness_title" msgid="6341042882350279391">"स्क्रीन की रोशनी ठीक करें"</string>
     <string name="auto_brightness_summary" msgid="1799041158760605375">"अपने हिसाब से स्क्रीन की रोशनी ठीक करें"</string>
     <string name="auto_brightness_summary_off" msgid="2802336459335410626">"बंद"</string>
-    <string name="auto_brightness_summary_very_low" msgid="6483976609035853764">"पसंदीदा स्क्रीन की रोशनी बहुत कम है"</string>
-    <string name="auto_brightness_summary_low" msgid="5609877905833960427">"पसंदीदा स्क्रीन की रोशनी कम है"</string>
-    <string name="auto_brightness_summary_default" msgid="7225666614394726845">"पसंदीदा स्क्रीन की रोशनी डिफ़ॉल्ट है"</string>
-    <string name="auto_brightness_summary_high" msgid="7172304165631136027">"पसंदीदा स्क्रीन की रोशनी अधिक है"</string>
-    <string name="auto_brightness_summary_very_high" msgid="979277812582279078">"पसंदीदा स्क्रीन की रोशनी बहुत अधिक है"</string>
+    <string name="auto_brightness_summary_very_low" msgid="6483976609035853764">"पसंदीदा स्क्रीन रोशनी का लेवल बहुत कम है"</string>
+    <string name="auto_brightness_summary_low" msgid="5609877905833960427">"पसंदीदा स्क्रीन रोशनी का लेवल कम है"</string>
+    <string name="auto_brightness_summary_default" msgid="7225666614394726845">"पसंदीदा स्क्रीन रोशनी का लेवल डिफ़ॉल्ट है"</string>
+    <string name="auto_brightness_summary_high" msgid="7172304165631136027">"पसंदीदा स्क्रीन रोशनी का लेवल अधिक है"</string>
+    <string name="auto_brightness_summary_very_high" msgid="979277812582279078">"पसंदीदा स्क्रीन रोशनी का लेवल बहुत अधिक है"</string>
     <string name="auto_brightness_off_title" msgid="2996864829946190795">"बंद"</string>
     <string name="auto_brightness_very_low_title" msgid="8252988638614126320">"बहुत कम"</string>
     <string name="auto_brightness_low_title" msgid="1632186441514863377">"कम"</string>
@@ -1774,8 +1774,8 @@
     <string name="accessibility_preference_magnification_summary" msgid="5867883657521404509">"स्क्रीन पर ज़ूम इन करें"</string>
     <string name="accessibility_screen_magnification_short_summary" msgid="3411979839172752057">"ज़ूम करने के लिए 3 बार टैप करें"</string>
     <string name="accessibility_screen_magnification_navbar_short_summary" msgid="3693116360267980492">"ज़ूम करने के लिए किसी बटन पर टैप करें"</string>
-    <string name="accessibility_screen_magnification_summary" msgid="5258868553337478505"><b>"ज़ूम करने के लिए"</b>", स्क्रीन पर 3 बार तेज़ी से टैप करें.\n"<ul><li>"स्क्रॉल करने के लिए 2 या उससे ज़्यादा अंगुलियां खींचें"</li>\n<li>"ज़ूम एडजस्ट करने के लिए 2 या उससे ज़्यादा अंगुलियों से पिंच करें"</li></ul>\n\n<b>"थोड़ी देर तक ज़ूम करने के लिए"</b>", स्क्रीन पर 3 बार तेज़ी से टैप करें और तीसरे टैप पर अपनी अंगुली दबाए रखें.\n"<ul><li>"स्क्रीन पर यहां-वहां ले जाने के लिए खींचें"</li>\n<li>"ज़ूम आउट करने के लिए अपनी अंगुली उठा लें"</li></ul>\n\n"आप कीबोर्ड या नेविगेशन बार पर ज़ूम इन नहीं कर सकते हैं."</string>
-    <string name="accessibility_screen_magnification_navbar_summary" msgid="1996584694050087161">"आवर्धन बंद किए जाने पर, तुरंत आवर्धित करने के लिए स्क्रीन के नीचे दिए गए एक्सेस-योग्यता बटन का उपयोग करें.\n\n"<b>"ज़ूम करने के लिए"</b>", एक्सेस-योग्यता बटन पर टैप करें, फिर स्क्रीन पर कहीं भी टैप करें.\n"<ul><li>"स्क्रॉल करने के लिए 2 या उससे ज़्यादा अंगुलियां खींचें"</li>\n<li>"ज़ूम एडजस्ट करने के लिए 2 या उससे ज़्यादा अंगुलियों से पिंच करें"</li></ul>\n\n<b>"थोड़े समय तक ज़ूम करने के लिए"</b>", एक्सेस-योग्यता बटन पर टैप करें, फिर स्क्रीन पर कहीं भी स्पर्श करके रखें.\n"<ul><li>"स्क्रीन पर यहां-वहां ले जाने के लिए खींचें"</li>\n<li>"ज़ूम आउट करने के लिए अंगुली उठा लें"</li></ul>\n\n"आप कीबोर्ड या नेविगेशन बार पर ज़ूम इन नहीं कर सकते हैं."</string>
+    <string name="accessibility_screen_magnification_summary" msgid="5258868553337478505"><b>"ज़ूम करने के लिए"</b>", स्क्रीन पर 3 बार जल्दी-जल्दी टैप करें.\n"<ul><li>"स्क्रॉल करने के लिए 2 या उससे ज़्यादा अंगुलियां खींचें"</li>\n<li>"ज़ूम एडजस्ट करने के लिए 2 या उससे ज़्यादा अंगुलियों से पिंच करें"</li></ul>\n\n<b>"थोड़ी देर तक ज़ूम करने के लिए"</b>", स्क्रीन पर 3 बार जल्दी-जल्दी टैप करें और तीसरे टैप पर अपनी अंगुली दबाए रखें.\n"<ul><li>"स्क्रीन पर यहां-वहां ले जाने के लिए खींचें"</li>\n<li>"ज़ूम आउट करने के लिए अपनी अंगुली उठा लें"</li></ul>\n\n"आप कीबोर्ड या नेविगेशन बार पर ज़ूम इन नहीं कर सकते हैं."</string>
+    <string name="accessibility_screen_magnification_navbar_summary" msgid="1996584694050087161">"आवर्धन चालू किए जाने पर, तुरंत आवर्धित करने के लिए स्क्रीन के नीचे दिए गए एक्सेस-योग्यता बटन का उपयोग करें.\n\n"<b>"ज़ूम करने के लिए"</b>", एक्सेस-योग्यता बटन पर टैप करें, फिर स्क्रीन पर कहीं भी टैप करें.\n"<ul><li>"स्क्रॉल करने के लिए 2 या उससे ज़्यादा अंगुलियां खींचें"</li>\n<li>"ज़ूम एडजस्ट करने के लिए 2 या उससे ज़्यादा अंगुलियों से पिंच करें"</li></ul>\n\n<b>"थोड़े समय तक ज़ूम करने के लिए"</b>", एक्सेस-योग्यता बटन पर टैप करें, फिर स्क्रीन पर कहीं भी स्पर्श करके रखें.\n"<ul><li>"स्क्रीन पर यहां-वहां ले जाने के लिए खींचें"</li>\n<li>"ज़ूम आउट करने के लिए अंगुली उठा लें"</li></ul>\n\n"आप कीबोर्ड या नेविगेशन बार पर ज़ूम इन नहीं कर सकते हैं."</string>
     <string name="accessibility_screen_magnification_navbar_configuration_warning" msgid="70533120652758190">"एक्सेस-योग्यता बटन <xliff:g id="SERVICE">%1$s</xliff:g> पर सेट है. आवर्धन का उपयोग करने के लिए, एक्सेस-योग्यता बटन को स्पर्श करके रखें, फिर आवर्धन चुनें."</string>
     <string name="accessibility_global_gesture_preference_title" msgid="6752037184140789970">"सरल उपयोग शॉर्टकट"</string>
     <string name="accessibility_shortcut_service_title" msgid="4779360749706905640">"शॉर्टकट सेवा"</string>
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"पिछली बार पूरी तरह चार्ज होने के बाद से अब तक का विश्लेषण"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"पिछली बार पूरी तरह चार्ज होने का समय"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"बचा हुआ बैटरी समय अनुमानित है और वह उपयोग के आधार पर बदल सकता है"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"ऐप्लिकेशन का उपयोग करते समय"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"बैकग्राउंड में होने पर"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"बैटरी उपयोग"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"कुल ऐप्लिकेशन उपयोग <xliff:g id="PERCENT">%1$s</xliff:g> का (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -2385,9 +2386,9 @@
     <string name="vpn_no_ca_cert" msgid="8776029412793353361">"(सर्वर सत्‍यापित न करें)"</string>
     <string name="vpn_no_server_cert" msgid="2167487440231913330">"(सर्वर से प्राप्त)"</string>
     <string name="vpn_always_on_invalid_reason_type" msgid="7574518311224455825">"यह VPN प्रकार हमेशा कनेक्ट नहीं रह सकता"</string>
-    <string name="vpn_always_on_invalid_reason_server" msgid="477304620899799383">"हमेशा-चालू VPN सिर्फ़ सांख्यिक सर्वर पतों का समर्थन करता है"</string>
+    <string name="vpn_always_on_invalid_reason_server" msgid="477304620899799383">"हमेशा-चालू VPN सिर्फ़ संख्या वाले सर्वर पतों का समर्थन करता है"</string>
     <string name="vpn_always_on_invalid_reason_no_dns" msgid="2226648961940273294">"हमेशा-चालू VPN के लिए एक DNS सर्वर तय किया जाना चाहिए"</string>
-    <string name="vpn_always_on_invalid_reason_dns" msgid="3551394495620249972">"DNS सर्वर के पते हमेशा-चालू VPN के लिए सांख्यिक होने चाहिए"</string>
+    <string name="vpn_always_on_invalid_reason_dns" msgid="3551394495620249972">"DNS सर्वर के पते हमेशा-चालू VPN के लिए संख्या रूप में होने चाहिए"</string>
     <string name="vpn_always_on_invalid_reason_other" msgid="5959352052515258208">"जो जानकारी डाली गई है वह हमेशा-चालू VPN का समर्थन नहीं करती"</string>
     <string name="vpn_cancel" msgid="1979937976123659332">"अभी नहीं"</string>
     <string name="vpn_done" msgid="8678655203910995914">"ख़ारिज करें"</string>
@@ -2795,10 +2796,10 @@
     <string name="notification_importance_low" msgid="8881468429453766553">"कोई ध्वनि नहीं"</string>
     <string name="notification_importance_default" msgid="5958338024601957516">"ध्वनि करें"</string>
     <string name="notification_importance_high" msgid="2082429479238228527">"ध्वनि करें और स्क्रीन पर दिखाएं"</string>
-    <string name="notification_importance_min_summary" msgid="8233873580287975662">"कम: कोई ध्वनि या विजुअल रुकावट नहीं"</string>
+    <string name="notification_importance_min_summary" msgid="8233873580287975662">"कम: कोई ध्वनि या विज़ुअल रुकावट नहीं"</string>
     <string name="notification_importance_low_summary" msgid="1296192045494524565">"मध्यम: कोई ध्वनि नहीं"</string>
     <string name="notification_importance_default_summary" msgid="5730277944596984792">"उच्च: ध्वनि करें"</string>
-    <string name="notification_importance_high_summary" msgid="3248683220940159642">"तत्काल: ध्वनि करें और स्क्रीन पर पॉप करें"</string>
+    <string name="notification_importance_high_summary" msgid="3248683220940159642">"तुरंत: ध्वनि करें और स्क्रीन पर पॉप करें"</string>
     <string name="allow_sound" msgid="6585849855452076626">"ध्वनि की अनुमति दें"</string>
     <string name="show_silently_summary" msgid="7616604629123146565">"वर्तमान स्क्रीन पर इन नोटिफिकेशन के लिए ना तो ध्वनि करें, ना कंपन करें और ना ही झलक दिखाएं."</string>
     <string name="default_notification_assistant" msgid="7631945224761430146">"नोटिफिकेशन सहायक"</string>
@@ -2836,7 +2837,7 @@
     <string name="notification_channels_other" msgid="5645317113885788226">"अन्य"</string>
     <string name="no_channels" msgid="3077375508177744586">"इस ऐप्लिकेशन ने कोई भी नोटिफ़िकेशन पोस्ट नहीं किया है"</string>
     <string name="app_settings_link" msgid="8894946007543660906">"ऐप्लिकेशन में मौजूद दूसरी सेटिंग"</string>
-    <string name="app_notification_listing_summary_zero" msgid="6482582965081108108">"सभी ऐप्लिकेशन के लिए बंद किया गया"</string>
+    <string name="app_notification_listing_summary_zero" msgid="6482582965081108108">"सभी ऐप्लिकेशन के लिए चालू किया गया"</string>
     <plurals name="app_notification_listing_summary_others" formatted="false" msgid="5668835155965827890">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ऐप्लिकेशन के लिए बंद किया गया</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ऐप्लिकेशन के लिए बंद किया गया</item>
@@ -3033,7 +3034,7 @@
     <string name="filter_work_apps" msgid="24519936790795574">"कार्यस्‍थल"</string>
     <string name="filter_notif_all_apps" msgid="2299049859443680242">"ऐप्लिकेशन: सभी"</string>
     <string name="filter_notif_blocked_apps" msgid="3300375727887991342">"ऐप्लिकेशन: बंद हैं"</string>
-    <string name="filter_notif_urgent_channels" msgid="3972473613117159653">"श्रेणियां: अत्यंत महत्व"</string>
+    <string name="filter_notif_urgent_channels" msgid="3972473613117159653">"श्रेणियां: अत्यंत महत्वपूर्ण"</string>
     <string name="filter_notif_low_channels" msgid="4128487387390004604">"श्रेणियां: कम महत्व के"</string>
     <string name="filter_notif_blocked_channels" msgid="5880190882221644289">"श्रेणियां: बंद हैं"</string>
     <string name="filter_notif_dnd_channels" msgid="1817930848881696728">"श्रेणियां: परेशान न करें ओवरराइड करती हैं"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"फ़ोन की जगह"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> में से उपयोग किया गया"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"अधिकतम"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"ऐप्लिकेशन साफ़ करें"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 7eb5b77..e1e3fc2 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -2030,7 +2030,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Razrada od posljednjeg potpunog punjenja"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Posljednje potpuno punjenje"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Preostalo vrijeme trajanja baterije približno je i može se mijenjati ovisno o upotrebi"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Dok se aplikacija upotrebljava"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Dok radi u pozadini"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Potrošnja baterije"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> od ukupne potrošnje aplikacija (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3623,7 +3624,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Pohrana na telefonu"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Upotrijebljeno od <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"potpuna"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Izbriši podatke aplikacije"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index cd55d12..cb9a322 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Statisztikák az utolsó teljes feltöltés óta"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Utolsó teljes feltöltés"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"A fennmaradó akkumulátor-üzemidő becsült érték, a használattól függően módosulhat"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Alkalmazáshasználat közben"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Miközben a háttérben van"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Akkumulátorhasználat"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"A teljes alkalmazáshasználat <xliff:g id="PERCENT">%1$s</xliff:g>-a (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3574,7 +3575,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Telefontárhely"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"A(z) <xliff:g id="TOTAL">%1$s</xliff:g> tárhelyből felhasznált mennyiség"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"teljes"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Alkalmazás törlése"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 53c911a..28d3819 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Բաշխումը վերջին լրիվ լիցքավորումից հետո"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Վերջին լրիվ լիցքավորումը"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Մարտկոցի օգտագործման մնացած ժամանակը մոտավոր է և օգտագործումից կախված կարող է փոխվել"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Հավելվածն օգտագործելիս"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Ֆոնում"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Մարտկոցի օգտագործում"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"Հավելվածների ընդհանուր օգտագործման <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g> մԱժ)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Հեռախոսի հիշողություն"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Օգտագործված է <xliff:g id="TOTAL">%1$s</xliff:g>-ից"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"լցված"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Մաքրել հավելվածի տվյալները"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 52b9a1e..0482c50 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Info penggunaan sejak pengisian baterai terakhir hingga penuh"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Pengisian baterai penuh terakhir"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Sisa waktu penggunaan baterai merupakan hasil perkiraan dan dapat berubah berdasarkan penggunaan"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Saat menggunakan aplikasi"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Saat di background"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Penggunaan baterai"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> dari total penggunaan aplikasi (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Penyimpanan ponsel"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Terpakai <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"penuh"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Hapus aplikasi"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 3546439..f6ed62d 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Greining frá síðustu fullu hleðslu"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Síðasta fulla hleðsla"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Eftirstandandi rafhlöðutími er áætlaður og gæti breyst út frá notkun"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Þegar forrit er notað"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Í bakgrunni"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Rafhlöðunotkun"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> af forritsnotkun í heild (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Geymslurými símans"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Notað af <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"fullt"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Hreinsa forrit"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index e1b6d3b..181628d 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Analisi dettagliata dall\'ultima ricarica completa"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Ultima ricarica completa"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"La durata rimanente della batteria è approssimativa e può variare in base all\'utilizzo"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Con app in uso"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"In background"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Utilizzo batteria"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> dell\'utilizzo totale delle app (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -2418,7 +2419,7 @@
     <string name="vpn_no_vpns_added" msgid="5002741367858707244">"Nessuna VPN aggiunta"</string>
     <string name="vpn_always_on_summary" msgid="2821344524094363617">"Rimani sempre connesso alla VPN"</string>
     <string name="vpn_always_on_summary_not_supported" msgid="592304911378771510">"Non supportata da questa app"</string>
-    <string name="vpn_always_on_summary_active" msgid="8800736191241875669">"Always-on attiva"</string>
+    <string name="vpn_always_on_summary_active" msgid="8800736191241875669">"VPN sempre attiva abilitata"</string>
     <string name="vpn_require_connection" msgid="8388183166574269666">"Blocca connessioni senza VPN"</string>
     <string name="vpn_require_connection_title" msgid="159053539340576331">"Connessione VPN obbligatoria?"</string>
     <string name="vpn_lockdown_summary" msgid="2200032066376720339">"Seleziona un profilo VPN a cui rimanere sempre connesso. Il traffico di rete sarà consentito solo quando sei connesso a questa VPN."</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Memoria telefono"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Spazio utilizzato di <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"massima"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Cancella dati dall\'app"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 618d077..d9f1a26 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -2051,7 +2051,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"פירוט מאז הטעינה המלאה האחרונה"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"הטעינה המלאה האחרונה"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"זמן השימוש הנותר בסוללה הינו משוער ועשוי להשתנות על פי השימוש בפועל"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"בעת השימוש באפליקציה"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"בזמן שהיא ברקע"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"שימוש בסוללה"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"‏<xliff:g id="PERCENT">%1$s</xliff:g> מתוך סה\"כ השימוש באפליקציה (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3676,7 +3677,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"אחסון בטלפון"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"בשימוש מתוך <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"מלא"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"נקה אפליקציה"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index eb2abf1..f1378ab 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"前回のフル充電からの内訳"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"前回のフル充電"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"電池の残り時間は概算値であり、使用状況によって変わります"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"アプリを使用中の場合"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"バックグラウンドの場合"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"電池使用量"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"アプリ使用量全体の <xliff:g id="PERCENT">%1$s</xliff:g>（<xliff:g id="POWER">%2$d</xliff:g> mAh）"</string>
@@ -3576,8 +3577,7 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"スマートフォン ストレージ"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"/ <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <!-- String.format failed for translation -->
-    <!-- no translation found for storage_percent_full (7052264724265314100) -->
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
     <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"アプリを削除"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index c21a956..1abd899 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"დეტალები ბოლო სრული დატენვიდან"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"ბოლო სრული დატენვა"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"ბატარეის მუშაობის დარჩენილი დრო მიახლოებითია და შეიძლება შეიცვალოს მოხმარების მიხედვით"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"აპის გამოყენებისას"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"ფონურ რეჟიმში ყოფნისას"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"ბატარეის მოხმარება"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"აპების სართო მოხმარების <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>მა·სთ)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"ტელეფონის მეხსიერება"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"გამოყენებულია <xliff:g id="TOTAL">%1$s</xliff:g>-დან"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"გამოყ"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"აპის გასუფთავება"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 905f27f..c349797 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Соңғы толық зарядталғаннан кейін пайдаланылғаны"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Соңғы толық зарядталуы"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Қалған батарея зарядының уақыты шамамен көрсетілген және оның тұтынылуына қарай өзгеруі мүмкін"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Қолданбаны пайдаланғанда"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Фондық режимде болғанда"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Батарея зарядының тұтынылуы"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"Қолданбаның жалпы тұтынуының <xliff:g id="PERCENT">%1$s</xliff:g>-ы (<xliff:g id="POWER">%2$d</xliff:g>мА)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Телефон жады"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> жалпы жадтан қолданылған"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"толық"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Қолданбаны деректерін өшіру"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 58e8e85..ee7d9ff 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"លែងដំណើរការ​ចាប់​តាំងពី​សាកថ្ម​ពេញ​លើកចុងក្រោយ"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"សាកថ្មពេញលើកចុងក្រោយ"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"ម៉ោងថ្មនៅសល់គឺជាតួលេខប្រហាក់ប្រហែល ហើយវាអាចផ្លាស់ប្តូរទៅតាមការប្រើប្រាស់"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"ខណៈពេលកំពុងប្រើប្រាស់កម្មវិធី"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"ខណៈពេលនៅផ្ទៃខាងក្រោយ"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"ការប្រើប្រាស់ថ្ម"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> នៃ​ការប្រើប្រាស់​កម្មវិធី​សរុប (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"ទំហំផ្ទុក​ក្នុង​ទូរសព្ទ"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"បានប្រើអស់នៃទំហំសរុប <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"ពេញ"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"ជម្រះកម្មវិធី"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 29d1c40..78bf57b 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"ಕೊನೆಯ ಬಾರಿ ಸಂಪೂರ್ಣ ಚಾರ್ಜ್‌ ಆದ ನಂತರದ ಬಳಕೆಯ ವಿವರ"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"ಕೊನೆಯ ಬಾರಿ ಸಂಪೂರ್ಣ ಚಾರ್ಜ್ ಮಾಡಿದ್ದು"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"ಉಳಿದಿರುವ ಬ್ಯಾಟರಿ ಸಮಯವು ಅಂದಾಜು ಮಾತ್ರ. ಬಳಕೆಯನ್ನು ಆಧರಿಸಿ ಇದು ಬದಲಾಗಬಹುದು"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"ಅಪ್ಲಿಕೇಶನ್ ಬಳಸುವಾಗ"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಇರುವಾಗ"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"ಬ್ಯಾಟರಿ ಬಳಕೆ"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"ಅಪ್ಲಿಕೇಶನ್‌ನ ಒಟ್ಟು ಬಳಕೆಯ <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"ಫೋನ್ ಸಂಗ್ರಹಣೆ"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> ನಲ್ಲಿ ಬಳಸಿರುವುದು"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"ಪೂರ್ಣ"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"ಅಪ್ಲಿಕೇಶನ್ ತೆರವುಗೊಳಿಸಿ"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 176e7bd..498d583 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"마지막 충전 완료 후 사용 내역 분석"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"마지막 충전 완료 후"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"남은 배터리 사용 시간은 대략적인 수치이며, 사용량에 따라 변경될 수 있습니다."</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"앱을 사용 중일 때"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"백그라운드에 있을 때"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"배터리 사용량"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"전체 앱 사용량의 <xliff:g id="PERCENT">%1$s</xliff:g>(<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"휴대전화 저장공간"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>"<xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"/<xliff:g id="TOTAL">%1$s</xliff:g> 사용"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"사용 중"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"앱 삭제"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 3cbf708..2892133 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -2008,7 +2008,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Акыркы жолу толук кубатталгандан бери колдонулушун чагылдырган таблица"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Акыркы жолу толук кубатталгандан бери"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Батареянын иштей турган убактысы болжол менен көрсөтүлгөн жана колдонулушуна жараша өзгөрүшү мүмкүн"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Колдонмону пайдаланып жатканда"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Фондук режимде"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Батарея колдонулушу"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"Батареяны сарптаган колдонмолордун ичинен <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>мА/с.)"</string>
@@ -3571,7 +3572,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Телефондун сактагычы"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> ичинен колдонулганы"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"толук"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Колдонмонун дайындарын тазалоо"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index cec86f1..6ee7d1a 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"ວິເຄາະນັບຕັ້ງແຕ່ສາກເຕັມຫຼ້າສຸດ"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"ສາກເຕັມຫຼ້າສຸດ"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"ເວລາແບັດເຕີຣີທີ່ຍັງເຫຼືອແມ່ນເປັນການປະມານການ ແລະ ສາມາດປ່ຽນແປງໄດ້ຕາມການນຳໃຊ້"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"ໃນຂະນະນຳໃຊ້ແອັບ"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"ໃນຂະນະຢູ່ໃນພື້ນຫຼັງ"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"ການໃຊ້ແບັດເຕີຣີ"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> ຂອງການນຳໃຊ້ແອັບທັງໝົດ (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"ບ່ອນຈັດເກັບຂໍ້ມູນໂທລະສັບ"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"ໃຊ້ໄປແລ້ວຈາກ <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"ເຕັມ"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"ລຶບລ້າງແອັບ"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index d4c800c..a7a5780 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -2051,7 +2051,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Naudojimo nuo paskutinio visiško įkrovimo analizė"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Paskutinis visiškas įkrovimas"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Likęs akumuliatoriaus veikimo laikas yra apytikslis ir gali pasikeisti atsižvelgiant į naudojimą"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Kai programa naudojama"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Kai veikia fone"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Akumuliatoriaus energijos vartojimas"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> viso programos naudojimo (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3674,7 +3675,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Telefono saugykla"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Naudojama iš <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"visiškas"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Išvalyti programą"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 143ee13..868a02c 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -2030,7 +2030,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Sadalījums kopš pēdējās pilnās uzlādes"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Pēdējā pilnā uzlāde"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Atlikušais akumulatora darbības ilgums ir aptuvens un var mainīties atkarībā no lietojuma."</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Izmantojot lietotni"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Darbojoties fonā"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Akumulatora lietojums"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> no kopējā jaudas patēriņa lietotnēs (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3623,7 +3624,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Tālruņa krātuve"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Izmantoti no <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"aizņemts"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Notīrīt lietotni"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index ea01759..1fa825b 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Детали по последното целосно полнење"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Последно целосно полнење"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Преостанатото време на батеријата е приближно и може да се промени во зависност од употребата"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Употреба при користење апликации"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Употреба во заднина"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Употреба на батеријата"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> од вкупната употреба на апликациите (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Меморија на телефонот"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Искористено од <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"целосна"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Исчисти ја апликацијата"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 1399c2c..22a7323 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"അവസാനം പൂർണ്ണമായി ചാർജ്ജുചെയ്‌തതിന് ശേഷമുള്ള ഉപയോഗ വിശദാംശങ്ങൾ"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"അവസാനം പൂർണ്ണമായി ചാർജ്ജുചെയ്‌തത്"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"ശേഷിക്കുന്ന ബാറ്ററി സമയം ഏകദേശ കണക്കാണ്, ഉപയോഗത്തിനനുസരിച്ച് അത് മാറാം"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"ആപ്പ് ഉപയോഗിക്കുമ്പോൾ"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"പശ്ചാത്തലത്തിൽ ആയിരിക്കുമ്പോൾ"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"ബാറ്ററി ഉപയോഗം"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"മൊത്തം ആപ്പ് ഉപയോഗത്തിന്റെ <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"ഫോൺ സ്‌റ്റോറേജ്"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> ഉപയോഗിച്ചു"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"മുഴുവൻ"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"ആപ്പ് മായ്ക്കുക"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index c686032..7c5f849 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -2011,7 +2011,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Сүүлд бүрэн цэнэглэснээс хойших ашиглалтын мэдээлэл"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Сүүлийн бүрэн цэнэглэлт"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Батерейны хугацааг зөвхөн таамагласан бөгөөд ашиглалтаас шалтгаалан өөрчлөгдөж болно"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Аппыг ашиглаж байх үед"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Цаана байх үед"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Батерей ашиглалт"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"нийт апп ашиглалтын <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Зургийн сан"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g>-с ашигласан"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"дүүрэн"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Апп устгах"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 9018db9..9a13656 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"शेवटच्या पूर्ण चार्जपासून खंड"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"शेवटचे पूर्ण चार्ज"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"शिल्लक बॅटरी वेळ अंदाजे आहे आणि वापराच्या आधारे बदलू शकतो"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"अॅप वापरताना"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"पार्श्वभूमीत असताना"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"बॅटरी वापर"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"एकूण अॅप वापराचे <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"फोन संचय"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small></string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> पैकी वापरले"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"पूर्ण"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"अॅप साफ करा"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index fe3ea7f..ef8fdfe 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Pecahan sejak cas penuh terakhir"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Cas penuh terakhir"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Baki masa bateri adalah anggaran dan boleh berubah berdasarkan penggunaan"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Semasa menggunakan apl"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Semasa di latar belakang"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Penggunaan bateri"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> daripada jumlah penggunaan apl (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Storan telefon"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Digunakan daripada <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"penuh"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Kosongkan apl"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 30dc25f..bfb2422 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"နောက်ဆုံးအကြိမ် အားအပြည့်သွင်းခဲ့သည့် အချိန်မှစ၍ ခွဲခြမ်းစိတ်ဖြာချက်"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"နောက်ဆုံးအကြိမ် အားအပြည့် သွင်းခဲ့ချိန်"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"ကျန်ရှိနေသော ဘက်ထရီကြာချိန်သည် ခန့်မှန်းခြေသာဖြစ်ပြီး အသုံးပြုမှုအပေါ် အခြေခံ၍ ပြောင်းလဲနိုင်ပါသည်"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"အက်ပ်ကို သုံးနေစဉ်"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"နောက်ခံတွင် ဖွင့်ထားစဉ်"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"ဘက်ထရီ အသုံးပြုမှု"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"စုစုပေါင်း အက်ပ်အသုံးပြုမှု၏<xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"ဖုန်း၏ သိုလှောင်ခန်း"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> အနက်မှ အသုံးပြုပြီးပါပြီ"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"အပြည့်"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"အက်ပ်ကို ရှင်းရန်"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 7d9a79a..6b27ea2 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Oversikt siden sist batteriet var fulladet"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Sist batteriet var fulladet"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Gjenværende batteritid er omtrentlig og kan endres basert på bruk"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Mens du bruker appen"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Mens den er i bakgrunnen"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Batteribruk"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> av total appbruk (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Telefonlagring"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Brukt av <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"full"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Fjern appen"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 0d0357b..2be11bf 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"पछिल्लो पटक पूर्ण चार्ज भएदेखिको विश्लेषण"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"पछिल्लो पटकको पूर्ण चार्ज"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"बाँकी रहेको ब्याट्रीको अवधि अनुमानित हो र प्रयोग अनुसार यो मान बदलिन सक्छ"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"अनुप्रयोग प्रयोग गरिरहँदा"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"पृष्ठभूमिमा हुँदा"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"ब्याट्रीको प्रयोग"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"अनुप्रयोगको कुल प्रयोगको <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3574,7 +3575,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"फोनको भण्डारण"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> मध्ये प्रयोग भएको"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"पूर्ण"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"अनुप्रयोगको डेटा खाली गर्नुहोस्"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 43ce06a..e9f88be 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Uitsplitsing sinds laatste volledige lading"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Laatste volledige lading"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Resterende batterijtijd is een schatting en hangt af van het gebruik"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Wanneer de app wordt gebruikt"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Wanneer op de achtergrond"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Batterijgebruik"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> van het totale app-gebruik (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Telefoonopslag"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Gebruikt van <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"vol"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Gegevens van app wissen"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 1502a24..7f0093e 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"ਪਿਛਲੀ ਵਾਰ ਪੂਰਾ ਚਾਰਜ ਕਰਨ ਤੋਂ ਬਾਅਦ ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਦੇ ਵੇਰਵੇ"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"ਪਿਛਲੀ ਵਾਰ ਪੂਰਾ ਚਾਰਜ"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"ਬਾਕੀ ਰਹਿੰਦਾ ਬੈਟਰੀ ਸਮਾਂ ਅਨੁਮਾਨਿਤ ਹੈ ਅਤੇ ਵਰਤੋਂ ਦੇ ਆਧਾਰ \'ਤੇ ਬਦਲ ਸਕਦਾ ਹੈ"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"ਐਪ ਵਰਤਣ ਦੌਰਾਨ"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਹੋਣ ਦੌਰਾਨ"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"ਬੈਟਰੀ ਵਰਤੋਂ"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"ਕੁੱਲ ਐਪ ਵਰਤੋਂ ਦਾ <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"ਫ਼ੋਨ ਸਟੋਰੇਜ"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> ਵਿੱਚੋਂ ਵਰਤਿਆ"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"ਸੰਪੂਰਨ"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"ਐਪ ਕਲੀਅਰ ਕਰੋ"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index b741574..01ef29e 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -2051,7 +2051,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Zestawienie od ostatniego pełnego naładowania"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Ostatnie naładowanie"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Pozostały czas pracy na baterii jest przybliżony i może się zmienić w zależności od wykorzystania"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Podczas korzystania z aplikacji"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"W tle"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Wykorzystanie baterii"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> z łącznego wykorzystania przez aplikacje (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3674,7 +3675,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Pamięć telefonu"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Wykorzystane z <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"zajęte"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Wyczyść dane aplikacji"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index d6eeb00..09e16b1 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Detalhamento desde a última carga completa"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Última carga completa"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"O tempo restante de bateria é aproximado e pode mudar de acordo com o uso"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Enquanto o app estiver em uso"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Quando estiver em segundo plano"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Uso da bateria"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> do uso total do app (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Armazen. do smartphone"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Usados <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"máximo"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Limpar app"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 49be27d..16160fd 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Detalhes desde o último carregamento completo"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Último carregamento completo"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"O tempo restante da bateria é um valor aproximado e pode variar em função da utilização"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Ao utilizar a aplicação"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Em segundo plano"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Utilização da bateria"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> do total da utilização de aplicações (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Armazenamento telemóvel"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Utilizado de <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"cheio"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Limpar aplicação"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index d6eeb00..09e16b1 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Detalhamento desde a última carga completa"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Última carga completa"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"O tempo restante de bateria é aproximado e pode mudar de acordo com o uso"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Enquanto o app estiver em uso"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Quando estiver em segundo plano"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Uso da bateria"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> do uso total do app (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Armazen. do smartphone"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Usados <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"máximo"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Limpar app"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index d4d9fbf..d9113ea 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -2030,7 +2030,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Detaliere de la ultima încărcare completă"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Ultima încărcare completă"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Timpul de funcționare rămas pentru baterie este aproximativ și se poate modifica în funcție de utilizare"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"În timp ce utilizează aplicația"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"În timp ce se află în fundal"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Utilizarea bateriei"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> din utilizarea totală de către aplicații (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3152,7 +3153,7 @@
     <string name="usb_use_charging_only" msgid="2180443097365214467">"Încărcați acest dispozitiv"</string>
     <string name="usb_use_charging_only_desc" msgid="3066256793008540627">"Doar încărcați acest dispozitiv"</string>
     <string name="usb_use_power_only" msgid="6426550616883919530">"Alimentați cu energie"</string>
-    <string name="usb_use_power_only_desc" msgid="3461232831015575152">"Încărcați dispozitivul conectat. Acesta funcționează numai cu dispozitive care acceptă încărcarea prin USB."</string>
+    <string name="usb_use_power_only_desc" msgid="3461232831015575152">"Încărcați dispozitivul conectat. Funcționează numai cu dispozitive care acceptă încărcarea prin USB."</string>
     <string name="usb_use_file_transfers" msgid="7409600791007250137">"Transferați fișiere"</string>
     <string name="usb_use_file_transfers_desc" msgid="4235764784331804488">"Transferați fișiere pe un alt dispozitiv"</string>
     <string name="usb_use_photo_transfers" msgid="7794775645350330454">"Transferați fotografii (PTP)"</string>
@@ -3162,7 +3163,7 @@
     <string name="usb_use" msgid="3256040963685055320">"Folosiți conexiunea USB ca să"</string>
     <string name="usb_pref" msgid="1400617804525116158">"USB"</string>
     <string name="usb_summary_charging_only" msgid="7544327009143659751">"Încărcarea acestui dispozitiv"</string>
-    <string name="usb_summary_power_only" msgid="3629517713817003738">"Alimentarea cu curent"</string>
+    <string name="usb_summary_power_only" msgid="3629517713817003738">"Alimentarea altui dispozitiv"</string>
     <string name="usb_summary_file_transfers" msgid="6435943692610175111">"Transferul de fișiere"</string>
     <string name="usb_summary_photo_transfers" msgid="8440204169576585250">"Transferul de fotografii (PTP)"</string>
     <string name="usb_summary_MIDI" msgid="5687906612187885908">"Dispozitivul se folosește ca MIDI"</string>
@@ -3623,7 +3624,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Stocare pe telefon"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Folosit din <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"complet"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Ștergeți aplicația"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index bed28a5..34afe5d 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -2051,7 +2051,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Использование с момента полной зарядки"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"С момента последней полной зарядки"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Оставшееся время работы указано приблизительно и может меняться в зависимости от интенсивности использования"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"При использовании приложения"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"В фоновом режиме"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Расход заряда батареи"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> от общего расхода приложением (<xliff:g id="POWER">%2$d</xliff:g> мА·ч)"</string>
@@ -3674,7 +3675,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Хранилище телефона"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Всего: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"заполнен"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Удалить данные приложения"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 8d639a6..2e10caf 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"අවසන් පූර්ණ ආරෝපණයෙන් පසුව ප්‍රභේදනය"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"අවසන් පූර්ණ ආරෝපණය"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"ඉතිරි බැටරි කාලය දළ අගයක් වන අතර භාවිතය අනුව වෙනස් විය හැකිය"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"යෙදුම භාවිතා කරන විට"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"පසුබිමේ සිටින අතරතුර"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"බැටරි භාවිතය"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"සම්පූර්ණ යෙදුම් භාවිතයෙන් <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"දුරකථන ගබඞාව"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> න් භාවිත කළ"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"පූර්ණ"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"යෙදුම හිස් කරන්න"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 8278148..5daa68f 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -2051,7 +2051,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Prehľad od posledného úplného dobitia"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Posledné úplné dobitie"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Údaje o zostávajúcej výdrži batérie sú približné a môžu sa meniť v závislosti od využitia"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Pri používaní"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Na pozadí"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Využitie batérie"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> celkového využitia aplikáciou (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3674,7 +3675,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Úložisko telefónu"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Využité z <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"plné"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Vymazať aplikáciu"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 2a05b89..4911d12 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -2051,7 +2051,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Razčlenjen prikaz od zadnje polne napolnjenosti akumulatorja"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Zadnja polna napolnjenost akumulatorja"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Preostali čas delovanja akumulatorja je približen, ker je odvisen od uporabe in se lahko spremeni."</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Med uporabo aplikacije"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Med izvajanjem v ozadju"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Poraba akumulatorja"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> od skupne porabe aplikacij (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3674,7 +3675,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Pomnilnik telefona"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Uporabljeno od <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"polno"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Počisti aplikacijo"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 0d614fa..bdd4b24 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Analiza që nga ngarkimi i fundit i plotë"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Ngarkimi i fundit i plotë"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Koha e mbetur e baterisë është e përafërt dhe mund të ndryshojë sipas përdorimit"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Kur përdor aplikacionin"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Kur është në sfond"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Përdorimi i baterisë"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> nga përdorimi total i aplikacioneve (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Hapësira ruajtëse e telefonit"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Përdorur nga <xliff:g id="TOTAL">%1$s</xliff:g> gjithsej"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"e plotë"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Pastro aplikacionin"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 68e757a..de838b04 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -2030,7 +2030,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Преглед од последњег потпуног пуњења"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Последње потпуно пуњење"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Преостало трајање батерије је приближно и може да се мења у зависности од начина коришћења"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Током коришћења апликације"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Док је у позадини"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Потрошња батерије"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> укупне потрошње апликација (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3623,7 +3624,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Меморија телефона"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Искоришћено од укупно <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"пуна"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Обриши апликацију"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index e4a7bdf..caf5461 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Fördelning sedan senaste fulladdningen"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Sedan senaste fulladdning"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Den återstående batteritiden är ungefärlig och kan ändras beroende på användning"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"När appen används"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"I bakgrunden"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Batteriförbrukning"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> av den totala appanvändningen (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Mobilens lagringsutrymme"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"av <xliff:g id="TOTAL">%1$s</xliff:g> används"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"max"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Rensa app"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index fcebde7..049e0f0 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Uchanganuzi tangu mara ya mwisho ilipojaa chaji"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Tangu ilipojaa chaji mara ya mwisho"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Muda wa matumizi ya betri uliosalia umekadiriwa tu na unaweza kubadilika kulingana na matumizi"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Unapotumia programu"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Ikitumika chini chini"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Matumizi ya betri"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> ya jumla ya matumizi ya programu (mAh<xliff:g id="POWER">%2$d</xliff:g>)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Hifadhi ya simu"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Hifadhi iliyotumika kati ya <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"imejaa"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Futa data kwenye programu"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index d1a9e06..70d1762 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"கடைசியாக முழுவதும் சார்ஜ் ஆனதிலிருந்து பிரேக் டவுன்"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"கடைசியாக முழு சார்ஜ் செய்தது:"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"மீதமிருக்கும் பேட்டரி நேரம் தோராயமானதாகும், உபயோகத்தின் அடிப்படையில் மாறலாம்"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"பயன்பாட்டைப் பயன்படுத்தும் போது"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"பின்னணியில் இருக்கும் போது"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"பேட்டரி உபயோகம்"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"மொத்தப் பயன்பாட்டு உபயோகத்தில் <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"மொபைல் சேமிப்பகம்"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> இல் பயன்படுத்தியது:"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"முழு"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"பயன்பாட்டை அழி"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index c0f8a46..f580042 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"చివరిసారి పూర్తిగా ఛార్జ్ చేసినప్పటి నుండి వినియోగ వివరాలు"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"చివరిసారిగా పూర్తిగా ఛార్జ్ చేసిన సమయం"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"మిగిలి ఉన్న బ్యాటరీ సమయం కేవలం అంచనా సమాచారమే, వినియోగాన్ని బట్టి మారవచ్చు"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"అనువర్తనాన్ని ఉపయోగిస్తున్నప్పుడు"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"నేపథ్యంలో ఉన్నప్పుడు"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"బ్యాటరీ వినియోగం"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"మొత్తం అనువర్తన వినియోగంలో <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"ఫోన్ నిల్వ"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g>లో ఉపయోగించబడింది"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"పూర్తిగా"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"అనువర్తనం డేటాను క్లియర్ చేయి"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 96f8c40..b228fb1 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"รายละเอียดนับตั้งแต่ชาร์จจนเต็มครั้งล่าสุด"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"ชาร์จจนเต็มครั้งล่าสุด"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"เวลาแบตเตอรี่ที่เหลือเป็นเพียงการประมาณการและอาจเปลี่ยนไปตามการใช้งาน"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"ขณะกำลังใช้แอป"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"ขณะอยู่ในพื้นหลัง"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"การใช้งานแบตเตอรี่"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> ของการใช้งานแบตเตอรี่ทั้งหมด (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"พื้นที่เก็บข้อมูลโทรศัพท์"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"ที่ใช้ไปจากทั้งหมด <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"เต็ม"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"ล้างแอป"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 228364f..2f95ee7 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Breakdown mula noong huling napuno ang baterya"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Noong huling napuno ang baterya"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Hindi tumpak ang natitirang tagal ng baterya at maaari itong magbago ayon sa paggamit"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Habang ginagamit ang app"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Habang nasa background"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Paggamit ng baterya"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> ng kabuuang paggamit ng app (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Storage ng telepono"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Nagamit sa <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"puno"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"I-clear ang app"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 2ac54f3..488cee8 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Son tam şarjdan sonraki kullanım dökümü"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Son tam şarj"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Kalan pil süresi yaklaşık bir değerdir ve kullanıma dayalı olarak değişebilir"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Uygulama kullanılırken"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Arka plandayken"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Pil kullanımı"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"Toplam uygulama kullanımının <xliff:g id="PERCENT">%1$s</xliff:g> kadarı (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Telefon depolama alanı"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Toplam <xliff:g id="TOTAL">%1$s</xliff:g> alanın kullanılan kısmı"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"tam"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Uygulamayı temizle"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 1a9af9d..06936b9 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -2051,7 +2051,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Статистика використання після останнього повного заряджання"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Останнє повне заряджання"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Час роботи акумулятора приблизний і може змінитися залежно від використання пристрою"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Під час використання додатка"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"У фоновому режимі"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Використання заряду"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> від загального заряду, який використовує додаток (<xliff:g id="POWER">%2$d</xliff:g> мА/год)"</string>
@@ -3674,7 +3675,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Пам’ять телефона"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Використовується з <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"максимум"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Очистити дані додатка"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index caad328..262120e 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"پچھلے مکمل چارج کے بعد سے تجزیہ"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"پچھلا مکمل چارج"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"باقی بیٹری کا وقت تخمینی ہے اور استعمال کی بنیاد پر تبدیل ہو سکتا ہے"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"ایپ استعمال کرنے کے دوران"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"پس منظر کے دوران"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"بیٹری کا استعمال"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"‏مجموعی ایپ کے استعمال میں سے <xliff:g id="PERCENT">%1$s</xliff:g> (mAh<xliff:g id="POWER">%2$d</xliff:g>)"</string>
@@ -3123,8 +3124,8 @@
     <string name="usb_use_MIDI_desc" msgid="8473936990076693175">"‏اس آلہ کو بطور MIDI استعمال کریں"</string>
     <string name="usb_use" msgid="3256040963685055320">"‏USB کو اس لئے استعمال کریں"</string>
     <string name="usb_pref" msgid="1400617804525116158">"USB"</string>
-    <string name="usb_summary_charging_only" msgid="7544327009143659751">"یہ آلہ چارج ہو رہا ہے"</string>
-    <string name="usb_summary_power_only" msgid="3629517713817003738">"پاور سپلائی ہو رہی ہے"</string>
+    <string name="usb_summary_charging_only" msgid="7544327009143659751">"اس آلہ کو چارج کرنا"</string>
+    <string name="usb_summary_power_only" msgid="3629517713817003738">"پاور سپلائی کرنا"</string>
     <string name="usb_summary_file_transfers" msgid="6435943692610175111">"فائلیں منتقل کرنا"</string>
     <string name="usb_summary_photo_transfers" msgid="8440204169576585250">"‏تصاویر منتقل کرنا (PTP)"</string>
     <string name="usb_summary_MIDI" msgid="5687906612187885908">"‏آلے کو بطور MIDI استعمال کرنا"</string>
@@ -3570,7 +3571,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"فون اسٹوریج"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"<xliff:g id="TOTAL">%1$s</xliff:g> میں سے استعمال ہو گئی"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"مکمل"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"ایپ صاف کریں"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 7b4c49f..f372e46 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"To‘liq quvvat olganidan beri sarflangan quvvat"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Oxirgi marta to‘liq quvvat olganidan beri"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Qolgan batareya vaqti taxminiy va foydalanish intensivligiga qarab o‘zgarishi mumkin"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Ilova ishlatilayotganda"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Fon rejimida"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Batareya sarfi"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"Jami ilovalar sarfining <xliff:g id="PERCENT">%1$s</xliff:g> qismi (<xliff:g id="POWER">%2$d</xliff:g> mA*soat)"</string>
@@ -3125,7 +3126,7 @@
     <string name="usb_use_MIDI_desc" msgid="8473936990076693175">"Bu qurilmadan MIDI sifatida foydalanish"</string>
     <string name="usb_use" msgid="3256040963685055320">"USB rejimi"</string>
     <string name="usb_pref" msgid="1400617804525116158">"USB"</string>
-    <string name="usb_summary_charging_only" msgid="7544327009143659751">"Bu qurilmani quvvatlash"</string>
+    <string name="usb_summary_charging_only" msgid="7544327009143659751">"Shu qurilmani quvvatlash"</string>
     <string name="usb_summary_power_only" msgid="3629517713817003738">"Quvvat uzatish"</string>
     <string name="usb_summary_file_transfers" msgid="6435943692610175111">"Fayllarni o‘tkazish"</string>
     <string name="usb_summary_photo_transfers" msgid="8440204169576585250">"Suratlarni o‘tkazish (PTP)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Telefon xotirasi"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Jami: <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"to‘la"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Ilova ma’lumotlarini tozalash"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index ddbdc81..73a6bc7 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Chi tiết từ lần sạc đầy gần đây nhất"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Lần sạc đầy gần đây nhất"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Thời gian sử dụng pin còn lại chỉ mang tính tương đối và có thể thay đổi tùy theo mức sử dụng"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Khi sử dụng ứng dụng"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Khi ở chế độ nền"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Mức sử dụng pin"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> trong tổng số mức sử dụng ứng dụng (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Bộ nhớ điện thoại"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Đã sử dụng <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"đầy"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Xóa ứng dụng"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index c2a4883..b718d78 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"自上次充满电后的详细用量信息"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"上次充满电"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"电池的剩余使用时间为大致数据，且可能会因使用情形而变化"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"在使用应用时"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"在后台运行时"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"电池用量"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"应用总用电量的 <xliff:g id="PERCENT">%1$s</xliff:g>（<xliff:g id="POWER">%2$d</xliff:g> 毫安时）"</string>
@@ -3572,7 +3573,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"手机存储空间"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"使用量：<xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"已满"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"清除应用"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 336b945..dcf6b17 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -2010,7 +2010,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"自上次完全充電後的詳細使用情況"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"上次完全充電後"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"剩餘電池使用時間只屬約數，視乎使用情況而定"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"使用應用程式時"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"在背景中執行時"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"電池用量"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"應用程式總電池用量的 <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3575,7 +3576,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"手機儲存空間"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"使用量：<xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"已滿"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"清除應用程式"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 2f40472..8c14424 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -2009,7 +2009,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"上次充飽後的詳細用量資訊"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"上次充飽後的用量"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"電池的剩餘使用時間為約略值，且會因使用情形而有所變動"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"使用應用程式時"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"在背景執行時"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"電池用量"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"總應用程式用量的 <xliff:g id="PERCENT">%1$s</xliff:g> (<xliff:g id="POWER">%2$d</xliff:g> mAh)"</string>
@@ -3576,7 +3577,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"手機儲存空間"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"使用量：<xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"已用"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"清除應用程式"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 1fa3664..c17ec03 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -2010,7 +2010,8 @@
     <string name="battery_detail_since_full_charge" msgid="7515347842046955855">"Ukwaphuka kusuka ekushajeni okuphelele"</string>
     <string name="battery_last_full_charge" msgid="7151251641099019361">"Ukushija okuphelele kokugcina"</string>
     <string name="battery_footer_summary" msgid="4701358808575132647">"Isikhathi esisele sebhethri siyalinganiselwa futhi singashintsha ngokuya ngokusebenzisa"</string>
-    <string name="battery_detail_foreground" msgid="1956633410428316726">"Ngenkathi isebenzisa uhlelo lokusebenza"</string>
+    <!-- no translation found for battery_detail_foreground (3350401514602032183) -->
+    <skip />
     <string name="battery_detail_background" msgid="1929644393553768999">"Ngenkathi kusemuva"</string>
     <string name="battery_detail_power_usage" msgid="6485766868610469101">"Ukusetshenziswa kwebhethri"</string>
     <string name="battery_detail_power_percentage" msgid="8064814503316094497">"<xliff:g id="PERCENT">%1$s</xliff:g> kokusebenza kohlelo lokusebenza okuphelele (<xliff:g id="POWER">%2$d</xliff:g>mAh)"</string>
@@ -3573,7 +3574,8 @@
     <string name="storage_settings_2" product="default" msgid="4306047711760327031">"Isitoreji sefoni"</string>
     <string name="storage_size_large_alternate" msgid="3550744227788333060">"<xliff:g id="NUMBER">^1</xliff:g>"<small>" <xliff:g id="UNIT">^2</xliff:g>"</small>""</string>
     <string name="storage_volume_total" msgid="3499221850532701342">"Kusetshenziswe okungu-<xliff:g id="TOTAL">%1$s</xliff:g>"</string>
-    <string name="storage_percent_full" msgid="7052264724265314100">"kugcwele"</string>
+    <!-- no translation found for storage_percent_full (6095012055875077036) -->
+    <skip />
     <string name="clear_instant_app_data" msgid="2004222610585890909">"Sula uhlelo lokusebenza"</string>
     <!-- no translation found for clear_instant_app_confirmation (7451671214898856857) -->
     <skip />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2dbd222..425bd23 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -750,8 +750,6 @@
     <string name="encryption_and_credential_settings_summary">Phone encrypted</string>
     <!-- Security Settings screen setting option title for the item to take you to the lock screen preference screen [CHAR LIMIT=60] -->
     <string name="lockscreen_settings_title">Lock screen preferences</string>
-    <!-- Security Settings screen setting option summary for the item to take you to the lock screen preference screen -->
-    <string name="lockscreen_settings_summary">Show all notification content</string>
 
     <!-- Main Settings screen setting option summary text for the item tot ake you to the security and location screen -->
     <string name="security_settings_summary">Set My Location, screen unlock, SIM card lock, credential storage lock</string>
@@ -2289,7 +2287,7 @@
     <!-- Adaptive brightness settings screen, setting option summary to enable adaptive brightness when user prefers very high brightness.
          Meant to make it clear that preferring very high brightness uses more battery. [CHAR LIMIT=100] -->
     <string name="auto_brightness_very_high_summary">Increased battery usage</string>
-    <!-- Adaptive brightness settings screen, disclaimer that explains in more detail about how adaptive brightness works [CHAR LIMIT=100] -->
+    <!-- Adaptive brightness settings screen, disclaimer that explains in more detail about how adaptive brightness works [CHAR LIMIT=150] -->
     <string name="auto_brightness_disclaimer">Optimize brightness level for available light. When this feature is on, you can still adjust brightness temporarily.</string>
 
     <!-- Night display screen, setting option name to enable night display (renamed "Night Light" with title caps). [CHAR LIMIT=30] -->
@@ -4462,7 +4460,7 @@
     <!-- Summary for the background activity when it is disabled [CHAR_LIMIT=120] -->
     <string name="background_activity_summary_disabled">App not allowed to run in background</string>
 
-    <!-- Title for the screen usage in power use UI [CHAR_LIMIT=40] -->
+    <!-- Title for the screen usage in power use UI [CHAR_LIMIT=60] -->
     <string name="device_screen_usage">Screen usage since full charge</string>
     <!-- Title for the screen consumption in power use UI(i.e. Screen consumption: 30% of battery usage) [CHAR_LIMIT=40] -->
     <string name="device_screen_consumption">Screen consumption</string>
@@ -4684,7 +4682,7 @@
     <!-- Description for text in battery footer. [CHAR LIMIT=120] -->
     <string name="battery_footer_summary">Remaining battery time is approximate and can change based on usage</string>
     <!-- Title for battery usage detail in foreground. [CHAR LIMIT=80] -->
-    <string name="battery_detail_foreground">While using app</string>
+    <string name="battery_detail_foreground">While in active use</string>
     <!-- Title for battery usage detail in background. [CHAR LIMIT=80] -->
     <string name="battery_detail_background">While in background</string>
     <!-- Title for battery usage amount by this app. [CHAR LIMIT=80] -->
@@ -7873,12 +7871,6 @@
     <!-- Summary of condition that work mode is off [CHAR LIMIT=NONE] -->
     <string name="condition_work_summary">Apps, background sync, and other features related to your work profile are turned off.</string>
 
-    <!--  Night display: Title for the night display option Suggestion (renamed "Night Light" with title caps). [CHAR LIMIT=NONE] -->
-    <string name="night_display_suggestion_title">Set Night Light schedule</string>
-
-    <!--  Night display: Summary for the night display option Suggestion (renamed "Night Light" with title caps). [CHAR LIMIT=30] -->
-    <string name="night_display_suggestion_summary">Tint screen amber to help you fall asleep</string>
-
     <!-- Title of condition that night display is on (renamed "Night Light" with title caps). [CHAR LIMIT=30] -->
     <string name="condition_night_display_title">Night Light is on</string>
 
@@ -8603,7 +8595,7 @@
     <!-- Summary of a single storage volume total space. [CHAR LIMIT=48]-->
     <string name="storage_volume_total">Used of <xliff:g id="total" example="32GB">%1$s</xliff:g></string>
     <!-- Follows the percent of storage used by a storage volume. Exposed inside of a donut graph. [CHAR LIMIT=7]-->
-    <string name="storage_percent_full">full</string>
+    <string name="storage_percent_full">used</string>
 
 
     <!-- Label for button allow user to remove the instant app from the device. -->
diff --git a/res/xml/automatic_storage_management_settings.xml b/res/xml/automatic_storage_management_settings.xml
index 73d708d..1428741 100644
--- a/res/xml/automatic_storage_management_settings.xml
+++ b/res/xml/automatic_storage_management_settings.xml
@@ -18,38 +18,18 @@
         xmlns:settings="http://schemas.android.com/apk/res-auto"
         android:title="@string/automatic_storage_manager_settings" >
 
-    <PreferenceCategory
-        android:key="automatic"
-        android:title="@string/deletion_helper_automatic_title">
-
-        <SwitchPreference
-            android:key="storage_manager_active"
-            android:title="@string/automatic_storage_manager_preference_title"
-            android:summary="@string/automatic_storage_manager_text"/>
-
-        <Preference
-            android:key="freed_bytes"
-            android:persistent="false"
-            android:selectable="false" />
-
         <DropDownPreference
             android:key="days"
             android:summary="%s"
             android:title="@string/automatic_storage_manager_days_title"
             android:entries="@array/automatic_storage_management_days"
             android:entryValues="@array/automatic_storage_management_days_values"
-            settings:allowDividerAbove="true" />
-
-    </PreferenceCategory>
-
-    <PreferenceCategory
-        android:key="manual"
-        android:title="@string/deletion_helper_manual_title">
+            settings:allowDividerBelow="true" />
 
         <Preference
-            android:key="deletion_helper"
-            android:title="@string/deletion_helper_preference_title"/>
-
-    </PreferenceCategory>
+            android:key="freed_bytes"
+            android:persistent="false"
+            android:selectable="false"
+            settings:allowDividerAbove="true" />
 
 </PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml
index b486776..2866767 100644
--- a/res/xml/power_usage_summary.xml
+++ b/res/xml/power_usage_summary.xml
@@ -30,11 +30,13 @@
 
         <com.android.settings.fuelgauge.PowerGaugePreference
             android:key="last_full_charge"
-            android:title="@string/battery_last_full_charge"/>
+            android:title="@string/battery_last_full_charge"
+            android:selectable="false"/>
 
         <com.android.settings.fuelgauge.PowerGaugePreference
             android:key="screen_usage"
-            android:title="@string/device_screen_usage"/>
+            android:title="@string/device_screen_usage"
+            android:selectable="false"/>
 
     </PreferenceCategory>
 
diff --git a/res/xml/security_settings_chooser.xml b/res/xml/security_settings_chooser.xml
index dc6e727..067ebab 100644
--- a/res/xml/security_settings_chooser.xml
+++ b/res/xml/security_settings_chooser.xml
@@ -31,7 +31,6 @@
 
         <Preference android:key="lockscreen_preferences"
             android:title="@string/lockscreen_settings_title"
-            android:summary="@string/lockscreen_settings_summary"
             android:fragment="com.android.settings.security.LockscreenDashboardFragment"/>
 
     </PreferenceCategory>
diff --git a/res/xml/security_settings_misc.xml b/res/xml/security_settings_misc.xml
index c29453f..86e3b16 100644
--- a/res/xml/security_settings_misc.xml
+++ b/res/xml/security_settings_misc.xml
@@ -60,11 +60,11 @@
     <Preference
         android:key="encryption_and_credential"
         android:title="@string/encryption_and_credential_settings_title"
+        android:summary="@string/encryption_and_credential_settings_summary"/>
         android:fragment="com.android.settings.EncryptionAndCredential"/>
 
     <Preference android:key="manage_trust_agents"
         android:title="@string/manage_trust_agents"
-        android:summary="@string/manage_trust_agents_summary"
         android:persistent="false"
         android:fragment="com.android.settings.TrustAgentSettings"/>
 
diff --git a/res/xml/security_settings_password.xml b/res/xml/security_settings_password.xml
index e3a5dfd..7de65f7 100644
--- a/res/xml/security_settings_password.xml
+++ b/res/xml/security_settings_password.xml
@@ -30,7 +30,6 @@
 
         <Preference android:key="lockscreen_preferences"
             android:title="@string/lockscreen_settings_title"
-            android:summary="@string/lockscreen_settings_summary"
             android:fragment="com.android.settings.security.LockscreenDashboardFragment"/>
 
     </PreferenceCategory>
diff --git a/res/xml/security_settings_pattern.xml b/res/xml/security_settings_pattern.xml
index 295e896..1585f01 100644
--- a/res/xml/security_settings_pattern.xml
+++ b/res/xml/security_settings_pattern.xml
@@ -30,7 +30,6 @@
 
         <Preference android:key="lockscreen_preferences"
             android:title="@string/lockscreen_settings_title"
-            android:summary="@string/lockscreen_settings_summary"
             android:fragment="com.android.settings.security.LockscreenDashboardFragment"/>
 
     </PreferenceCategory>
diff --git a/res/xml/security_settings_pin.xml b/res/xml/security_settings_pin.xml
index 5613177..f7705b7 100644
--- a/res/xml/security_settings_pin.xml
+++ b/res/xml/security_settings_pin.xml
@@ -30,7 +30,6 @@
 
         <Preference android:key="lockscreen_preferences"
             android:title="@string/lockscreen_settings_title"
-            android:summary="@string/lockscreen_settings_summary"
             android:fragment="com.android.settings.security.LockscreenDashboardFragment"/>
 
     </PreferenceCategory>
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index b7d2a73..1e64b7f 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -40,7 +40,6 @@
 import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceChangeListener;
-import android.support.v7.preference.Preference.OnPreferenceClickListener;
 import android.support.v7.preference.PreferenceGroup;
 import android.support.v7.preference.PreferenceScreen;
 import android.telephony.CarrierConfigManager;
@@ -61,11 +60,11 @@
 import com.android.settings.enterprise.ManageDeviceAdminPreferenceController;
 import com.android.settings.fingerprint.FingerprintSettings;
 import com.android.settings.location.LocationPreferenceController;
+import com.android.settings.notification.LockScreenNotificationPreferenceController;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
 import com.android.settings.search.SearchIndexableRaw;
-import com.android.settings.search2.SearchFeatureProvider;
 import com.android.settings.security.OwnerInfoPreferenceController;
 import com.android.settings.security.SecurityFeatureProvider;
 import com.android.settings.trustagent.TrustAgentManager;
@@ -102,8 +101,11 @@
     private static final String KEY_UNLOCK_SET_OR_CHANGE_PROFILE = "unlock_set_or_change_profile";
     private static final String KEY_VISIBLE_PATTERN_PROFILE = "visiblepattern_profile";
     private static final String KEY_SECURITY_CATEGORY = "security_category";
-    private static final String KEY_MANAGE_TRUST_AGENTS = "manage_trust_agents";
+    @VisibleForTesting
+    static final String KEY_MANAGE_TRUST_AGENTS = "manage_trust_agents";
     private static final String KEY_UNIFICATION = "unification";
+    @VisibleForTesting
+    static final String KEY_LOCKSCREEN_PREFERENCES = "lockscreen_preferences";
 
     private static final int SET_OR_CHANGE_LOCK_METHOD_REQUEST = 123;
     private static final int CHANGE_TRUST_AGENT_SETTINGS = 126;
@@ -170,6 +172,7 @@
     private LocationPreferenceController mLocationcontroller;
     private ManageDeviceAdminPreferenceController mManageDeviceAdminPreferenceController;
     private EnterprisePrivacyPreferenceController mEnterprisePrivacyPreferenceController;
+    private LockScreenNotificationPreferenceController mLockScreenNotificationPreferenceController;
 
     @Override
     public int getMetricsCategory() {
@@ -211,6 +214,8 @@
                 = new ManageDeviceAdminPreferenceController(activity);
         mEnterprisePrivacyPreferenceController
                 = new EnterprisePrivacyPreferenceController(activity, null /* lifecycle */);
+        mLockScreenNotificationPreferenceController
+                = new LockScreenNotificationPreferenceController(activity);
     }
 
     private static int getResIdForLockUnlockScreen(Context context,
@@ -312,11 +317,13 @@
         mIsAdmin = mUm.isAdminUser();
 
         // Fingerprint and trust agents
+        int numberOfTrustAgent = 0;
         PreferenceGroup securityCategory = (PreferenceGroup)
                 root.findPreference(KEY_SECURITY_CATEGORY);
         if (securityCategory != null) {
             maybeAddFingerprintPreference(securityCategory, UserHandle.myUserId());
-            addTrustAgentSettings(securityCategory);
+            numberOfTrustAgent = addTrustAgentSettings(securityCategory);
+            setLockscreenPreferencesSummary(securityCategory);
         }
 
         mVisiblePatternProfile =
@@ -351,11 +358,7 @@
         final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
 
         // Advanced Security features
-        Preference manageAgents = root.findPreference(KEY_MANAGE_TRUST_AGENTS);
-        if (manageAgents != null && !mLockPatternUtils.isSecure(MY_USER_ID)) {
-            manageAgents.setEnabled(false);
-            manageAgents.setSummary(R.string.disabled_because_no_backup_security);
-        }
+        initTrustAgentPreference(root, numberOfTrustAgent);
 
         // The above preferences come and go based on security state, so we need to update
         // the index. This call is expected to be fairly cheap, but we may want to do something
@@ -410,6 +413,32 @@
         return root;
     }
 
+    @VisibleForTesting
+    void initTrustAgentPreference(PreferenceScreen root, int numberOfTrustAgent) {
+        Preference manageAgents = root.findPreference(KEY_MANAGE_TRUST_AGENTS);
+        if (manageAgents != null) {
+            if (!mLockPatternUtils.isSecure(MY_USER_ID)) {
+                manageAgents.setEnabled(false);
+                manageAgents.setSummary(R.string.disabled_because_no_backup_security);
+            } else if (numberOfTrustAgent > 0) {
+                manageAgents.setSummary(getActivity().getResources().getQuantityString(
+                    R.plurals.manage_trust_agents_summary_on,
+                    numberOfTrustAgent, numberOfTrustAgent));
+            } else {
+                manageAgents.setSummary(R.string.manage_trust_agents_summary);
+            }
+        }
+    }
+
+    @VisibleForTesting
+    void setLockscreenPreferencesSummary(PreferenceGroup group) {
+        final Preference lockscreenPreferences = group.findPreference(KEY_LOCKSCREEN_PREFERENCES);
+        if (lockscreenPreferences != null) {
+            lockscreenPreferences.setSummary(
+                mLockScreenNotificationPreferenceController.getSummaryResource());
+        }
+    }
+
     /*
      * Sets the preference as disabled by admin if PASSWORD_QUALITY_MANAGED is set.
      * The preference must be a RestrictedPreference.
@@ -434,7 +463,8 @@
         }
     }
 
-    private void addTrustAgentSettings(PreferenceGroup securityCategory) {
+    // Return the number of trust agents being added
+    private int addTrustAgentSettings(PreferenceGroup securityCategory) {
         final boolean hasSecurity = mLockPatternUtils.isSecure(MY_USER_ID);
         ArrayList<TrustAgentComponentInfo> agents = getActiveTrustAgents(
             getActivity(), mTrustAgentManager, mLockPatternUtils, mDPM);
@@ -459,6 +489,7 @@
                 trustAgentPreference.setSummary(R.string.disabled_because_no_backup_security);
             }
         }
+        return agents.size();
     }
 
     /* Return true if a there is a Slot that has Icc.
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 4c8fb2d..d04ae8d 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -73,7 +73,6 @@
 import android.provider.ContactsContract.Profile;
 import android.provider.ContactsContract.RawContacts;
 import android.provider.Settings;
-import android.service.persistentdata.PersistentDataBlockManager;
 import android.support.annotation.StringRes;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceGroup;
diff --git a/src/com/android/settings/accessibility/AccessibilityServiceWarning.java b/src/com/android/settings/accessibility/AccessibilityServiceWarning.java
index 71cafba..9f89bc1 100644
--- a/src/com/android/settings/accessibility/AccessibilityServiceWarning.java
+++ b/src/com/android/settings/accessibility/AccessibilityServiceWarning.java
@@ -53,7 +53,7 @@
 
         final View.OnTouchListener filterTouchListener = (View v, MotionEvent event) -> {
             // Filter obscured touches by consuming them.
-            if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0) {
+            if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) != 0) {
                 if (event.getAction() == MotionEvent.ACTION_UP) {
                     Toast.makeText(v.getContext(), R.string.touch_filtered_warning,
                             Toast.LENGTH_SHORT).show();
diff --git a/src/com/android/settings/applications/AdvancedAppSettings.java b/src/com/android/settings/applications/AdvancedAppSettings.java
index e59f94b..caa9da1 100644
--- a/src/com/android/settings/applications/AdvancedAppSettings.java
+++ b/src/com/android/settings/applications/AdvancedAppSettings.java
@@ -15,9 +15,11 @@
  */
 package com.android.settings.applications;
 
+import android.app.Activity;
 import android.content.Context;
 import android.provider.SearchIndexableResource;
 
+import android.text.TextUtils;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
@@ -29,6 +31,7 @@
 import com.android.settings.applications.defaultapps.DefaultWorkPhonePreferenceController;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
 
@@ -78,4 +81,55 @@
                     return Arrays.asList(sir);
                 }
             };
+
+    static class SummaryProvider implements SummaryLoader.SummaryProvider {
+
+        private final Context mContext;
+        private final SummaryLoader mSummaryLoader;
+        private final DefaultSmsPreferenceController mDefaultSmsPreferenceController;
+        private final DefaultBrowserPreferenceController mDefaultBrowserPreferenceController;
+        private final DefaultPhonePreferenceController mDefaultPhonePreferenceController;
+
+        public SummaryProvider(Context context, SummaryLoader summaryLoader) {
+            mContext = context;
+            mSummaryLoader = summaryLoader;
+            mDefaultSmsPreferenceController = new DefaultSmsPreferenceController(mContext);
+            mDefaultBrowserPreferenceController = new DefaultBrowserPreferenceController(mContext);
+            mDefaultPhonePreferenceController = new DefaultPhonePreferenceController(mContext);
+        }
+
+        @Override
+        public void setListening(boolean listening) {
+            if (!listening) {
+                return;
+            }
+            CharSequence summary = concatSummaryText(
+                mDefaultSmsPreferenceController.getDefaultAppLabel(),
+                mDefaultBrowserPreferenceController.getDefaultAppLabel());
+            summary = concatSummaryText(summary,
+                mDefaultPhonePreferenceController.getDefaultAppLabel());
+            if (!TextUtils.isEmpty(summary)) {
+                mSummaryLoader.setSummary(this, summary);
+            }
+        }
+
+        private CharSequence concatSummaryText(CharSequence summary1, CharSequence summary2) {
+            if (TextUtils.isEmpty(summary1)) {
+                return summary2;
+            }
+            if (TextUtils.isEmpty(summary2)) {
+                return summary1;
+            }
+            return mContext.getString(R.string.join_many_items_middle, summary1, summary2);
+        }
+    }
+
+    public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY =
+        new SummaryLoader.SummaryProviderFactory() {
+            @Override
+            public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
+                    SummaryLoader summaryLoader) {
+                return new AdvancedAppSettings.SummaryProvider(activity, summaryLoader);
+            }
+        };
 }
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index 9967918..0623562 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -91,7 +91,6 @@
 import com.android.settings.datausage.DataUsageSummary;
 import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
 import com.android.settings.fuelgauge.BatteryEntry;
-import com.android.settings.fuelgauge.PowerUsageDetail;
 import com.android.settings.notification.AppNotificationSettings;
 import com.android.settings.notification.NotificationBackend;
 import com.android.settings.notification.NotificationBackend.AppRow;
diff --git a/src/com/android/settings/applications/PackageManagerWrapper.java b/src/com/android/settings/applications/PackageManagerWrapper.java
index 8dae417..ffa8e46 100644
--- a/src/com/android/settings/applications/PackageManagerWrapper.java
+++ b/src/com/android/settings/applications/PackageManagerWrapper.java
@@ -24,6 +24,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.os.UserHandle;
+import android.os.storage.VolumeInfo;
 
 import java.util.List;
 
@@ -105,4 +106,8 @@
      */
     void deletePackageAsUser(String packageName, IPackageDeleteObserver observer, int flags,
             int userId);
+    /**
+     * Calls {@code PackageManager.getPrimaryStorageCurrentVolume}
+     */
+    VolumeInfo getPrimaryStorageCurrentVolume();
 }
diff --git a/src/com/android/settings/applications/PackageManagerWrapperImpl.java b/src/com/android/settings/applications/PackageManagerWrapperImpl.java
index a0d824f..8349702 100644
--- a/src/com/android/settings/applications/PackageManagerWrapperImpl.java
+++ b/src/com/android/settings/applications/PackageManagerWrapperImpl.java
@@ -24,6 +24,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.os.UserHandle;
+import android.os.storage.VolumeInfo;
 
 import java.util.List;
 
@@ -97,4 +98,9 @@
             int userId) {
         mPm.deletePackageAsUser(packageName, observer, flags, userId);
     }
+
+    @Override
+    public VolumeInfo getPrimaryStorageCurrentVolume() {
+        return mPm.getPrimaryStorageCurrentVolume();
+    }
 }
diff --git a/src/com/android/settings/applications/UserManagerWrapper.java b/src/com/android/settings/applications/UserManagerWrapper.java
index daefb84..5b4ed2a 100644
--- a/src/com/android/settings/applications/UserManagerWrapper.java
+++ b/src/com/android/settings/applications/UserManagerWrapper.java
@@ -17,6 +17,7 @@
 package com.android.settings.applications;
 
 import android.content.pm.UserInfo;
+
 import java.util.List;
 
 /**
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceController.java
index 93fc6a6..b53a335 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultAppPreferenceController.java
@@ -49,10 +49,7 @@
     @Override
     public void updateState(Preference preference) {
         final DefaultAppInfo app = getDefaultAppInfo();
-        CharSequence defaultAppLabel = null;
-        if (app != null) {
-            defaultAppLabel = app.loadLabel();
-        }
+        CharSequence defaultAppLabel = getDefaultAppLabel();
         if (!TextUtils.isEmpty(defaultAppLabel)) {
             preference.setSummary(defaultAppLabel);
         } else {
@@ -84,4 +81,15 @@
         //By default return null. It's up to subclasses to provide logic.
         return null;
     }
+
+    public CharSequence getDefaultAppLabel() {
+        if (!isAvailable()) {
+            return null;
+        }
+        final DefaultAppInfo app = getDefaultAppInfo();
+        if (app != null) {
+            return app.loadLabel();
+        }
+        return null;
+    }
 }
diff --git a/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java
index 661fb5b..5c0f9a3 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java
@@ -51,13 +51,9 @@
     @Override
     public void updateState(Preference preference) {
         super.updateState(preference);
-        final DefaultAppInfo defaultApp = getDefaultAppInfo();
-        final CharSequence defaultAppLabel = defaultApp != null ? defaultApp.loadLabel() : null;
-        if (TextUtils.isEmpty(defaultAppLabel)) {
-            final String onlyAppLabel = getOnlyAppLabel();
-            if (!TextUtils.isEmpty(onlyAppLabel)) {
-                preference.setSummary(onlyAppLabel);
-            }
+        final CharSequence defaultAppLabel = getDefaultAppLabel();
+        if (!TextUtils.isEmpty(defaultAppLabel)) {
+            preference.setSummary(defaultAppLabel);
         }
     }
 
@@ -72,6 +68,19 @@
         }
     }
 
+    @Override
+    public CharSequence getDefaultAppLabel() {
+        if (!isAvailable()) {
+            return null;
+        }
+        final DefaultAppInfo defaultApp = getDefaultAppInfo();
+        final CharSequence defaultAppLabel = defaultApp != null ? defaultApp.loadLabel() : null;
+        if (!TextUtils.isEmpty(defaultAppLabel)) {
+            return defaultAppLabel;
+        }
+        return getOnlyAppLabel();
+    }
+
     private List<ResolveInfo> getCandidates() {
         return mPackageManager.queryIntentActivitiesAsUser(BROWSE_PROBE, PackageManager.MATCH_ALL,
                 mUserId);
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingService.java b/src/com/android/settings/bluetooth/BluetoothPairingService.java
index 5dfd283..41a5cce 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingService.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingService.java
@@ -65,6 +65,7 @@
     return pairingIntent;
   }
 
+  private boolean mRegistered = false;
   private final BroadcastReceiver mCancelReceiver = new BroadcastReceiver() {
     @Override
     public void onReceive(Context context, Intent intent) {
@@ -130,6 +131,7 @@
     filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
     filter.addAction(BluetoothDevice.ACTION_PAIRING_CANCEL);
     registerReceiver(mCancelReceiver, filter);
+    mRegistered = true;
 
     startForeground(NOTIFICATION_ID, builder.getNotification());
     return START_REDELIVER_INTENT;
@@ -137,7 +139,10 @@
 
   @Override
   public void onDestroy() {
-    unregisterReceiver(mCancelReceiver);
+    if (mRegistered) {
+      unregisterReceiver(mCancelReceiver);
+      mRegistered = false;
+    }
     stopForeground(true);
   }
 
diff --git a/src/com/android/settings/connecteddevice/UsbModePreferenceController.java b/src/com/android/settings/connecteddevice/UsbModePreferenceController.java
index 6c1a28b..a98f068 100644
--- a/src/com/android/settings/connecteddevice/UsbModePreferenceController.java
+++ b/src/com/android/settings/connecteddevice/UsbModePreferenceController.java
@@ -20,6 +20,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.hardware.usb.UsbManager;
+import android.support.annotation.VisibleForTesting;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
 
@@ -77,34 +78,19 @@
         mUsbReceiver.register();
     }
 
-    public static int getSummary(int mode) {
+    @VisibleForTesting
+    int getSummary(int mode) {
         switch (mode) {
             case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_NONE:
-                return R.string.usb_use_charging_only_desc;
+                return R.string.usb_summary_charging_only;
             case UsbBackend.MODE_POWER_SOURCE | UsbBackend.MODE_DATA_NONE:
-                return R.string.usb_use_power_only_desc;
+                return R.string.usb_summary_power_only;
             case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MTP:
-                return R.string.usb_use_file_transfers_desc;
+                return R.string.usb_summary_file_transfers;
             case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_PTP:
-                return R.string.usb_use_photo_transfers_desc;
+                return R.string.usb_summary_photo_transfers;
             case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MIDI:
-                return R.string.usb_use_MIDI_desc;
-        }
-        return 0;
-    }
-
-    public static int getTitle(int mode) {
-        switch (mode) {
-            case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_NONE:
-                return R.string.usb_use_charging_only;
-            case UsbBackend.MODE_POWER_SOURCE | UsbBackend.MODE_DATA_NONE:
-                return R.string.usb_use_power_only;
-            case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MTP:
-                return R.string.usb_use_file_transfers;
-            case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_PTP:
-                return R.string.usb_use_photo_transfers;
-            case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MIDI:
-                return R.string.usb_use_MIDI;
+                return R.string.usb_summary_MIDI;
         }
         return 0;
     }
@@ -117,7 +103,7 @@
         if (preference != null) {
             if (mUsbReceiver.isConnected()) {
                 preference.setEnabled(true);
-                preference.setSummary(getTitle(mode));
+                preference.setSummary(getSummary(mode));
             } else {
                 preference.setSummary(R.string.disconnected);
                 preference.setEnabled(false);
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index d1bb9d6..caac95f 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -76,8 +76,8 @@
 import com.android.settings.deviceinfo.StorageSettings;
 import com.android.settings.display.NightDisplaySettings;
 import com.android.settings.enterprise.EnterprisePrivacySettings;
+import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
 import com.android.settings.fuelgauge.BatterySaverSettings;
-import com.android.settings.fuelgauge.PowerUsageDetail;
 import com.android.settings.fuelgauge.PowerUsageSummary;
 import com.android.settings.gestures.AssistGestureSettings;
 import com.android.settings.gestures.DoubleTapPowerSettings;
@@ -210,7 +210,7 @@
             ZenModeEventRuleSettings.class.getName(),
             ZenModeVisualInterruptionSettings.class.getName(),
             ProcessStatsUi.class.getName(),
-            PowerUsageDetail.class.getName(),
+            AdvancedPowerUsageDetail.class.getName(),
             ProcessStatsSummary.class.getName(),
             DrawOverlayDetails.class.getName(),
             WriteSettingsDetails.class.getName(),
diff --git a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java
index 4d4cfe8..adf2938 100644
--- a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java
+++ b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java
@@ -17,44 +17,39 @@
 package com.android.settings.deletionhelper;
 
 import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.FragmentManager;
 import android.content.ContentResolver;
-import android.content.Intent;
 import android.os.Bundle;
-import android.os.SystemProperties;
-import android.os.storage.StorageManager;
 import android.provider.Settings;
-import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.DropDownPreference;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceChangeListener;
 import android.text.format.DateUtils;
 import android.text.format.Formatter;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
+import com.android.settings.SettingsActivity;
 import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.widget.SwitchBar;
 
 /**
  * AutomaticStorageManagerSettings is the Settings screen for configuration and management of the
  * automatic storage manager.
  */
-public class AutomaticStorageManagerSettings extends SettingsPreferenceFragment implements
-        OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
-    public static final int DEFAULT_DAYS_TO_RETAIN = 90;
-
+public class AutomaticStorageManagerSettings extends SettingsPreferenceFragment
+        implements OnPreferenceChangeListener {
     private static final String KEY_DAYS = "days";
-    private static final String KEY_DELETION_HELPER = "deletion_helper";
     private static final String KEY_FREED = "freed_bytes";
-    private static final String KEY_STORAGE_MANAGER_SWITCH = "storage_manager_active";
     private static final String STORAGE_MANAGER_ENABLED_BY_DEFAULT_PROPERTY =
             "ro.storage_manager.enabled";
 
+    private AutomaticStorageManagerSwitchBarController mSwitchController;
     private DropDownPreference mDaysToRetain;
     private Preference mFreedBytes;
-    private Preference mDeletionHelper;
-    private SwitchPreference mStorageManagerSwitch;
+    private SwitchBar mSwitchBar;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -63,19 +58,21 @@
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
+    public View onCreateView(
+            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        View view = super.onCreateView(inflater, container, savedInstanceState);
+
+        initializeDaysToRetainPreference();
+        initializeFreedBytesPreference();
+        initializeSwitchBar();
+
+        return view;
+    }
+
+    private void initializeDaysToRetainPreference() {
         mDaysToRetain = (DropDownPreference) findPreference(KEY_DAYS);
         mDaysToRetain.setOnPreferenceChangeListener(this);
 
-        mFreedBytes = findPreference(KEY_FREED);
-
-        mDeletionHelper = findPreference(KEY_DELETION_HELPER);
-        mDeletionHelper.setOnPreferenceClickListener(this);
-
-        mStorageManagerSwitch = (SwitchPreference) findPreference(KEY_STORAGE_MANAGER_SWITCH);
-        mStorageManagerSwitch.setOnPreferenceChangeListener(this);
-
         ContentResolver cr = getContentResolver();
         int photosDaysToRetain = Settings.Secure.getInt(cr,
                 Settings.Secure.AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN,
@@ -83,7 +80,24 @@
         String[] stringValues =
                 getResources().getStringArray(R.array.automatic_storage_management_days_values);
         mDaysToRetain.setValue(stringValues[daysValueToIndex(photosDaysToRetain, stringValues)]);
+    }
 
+    private void initializeSwitchBar() {
+        final SettingsActivity activity = (SettingsActivity) getActivity();
+        mSwitchBar = activity.getSwitchBar();
+        mSwitchBar.show();
+        mSwitchController =
+                new AutomaticStorageManagerSwitchBarController(
+                        getContext(),
+                        mSwitchBar,
+                        mMetricsFeatureProvider,
+                        mDaysToRetain,
+                        getFragmentManager());
+    }
+
+    private void initializeFreedBytesPreference() {
+        ContentResolver cr = getContentResolver();
+        mFreedBytes = findPreference(KEY_FREED);
         long freedBytes = Settings.Secure.getLong(cr,
                 Settings.Secure.AUTOMATIC_STORAGE_MANAGER_BYTES_CLEARED,
                 0);
@@ -93,11 +107,13 @@
         if (freedBytes == 0 || lastRunMillis == 0) {
             mFreedBytes.setVisible(false);
         } else {
-            Activity activity = getActivity();
-            mFreedBytes.setSummary(activity.getString(
-                    R.string.automatic_storage_manager_freed_bytes,
-                    Formatter.formatFileSize(activity, freedBytes),
-                    DateUtils.formatDateTime(activity, lastRunMillis, DateUtils.FORMAT_SHOW_DATE)));
+            final Activity activity = getActivity();
+            mFreedBytes.setSummary(
+                    activity.getString(
+                            R.string.automatic_storage_manager_freed_bytes,
+                            Formatter.formatFileSize(activity, freedBytes),
+                            DateUtils.formatDateTime(
+                                    activity, lastRunMillis, DateUtils.FORMAT_SHOW_DATE)));
         }
     }
 
@@ -107,31 +123,27 @@
         boolean isStorageManagerChecked =
                 Settings.Secure.getInt(getContentResolver(),
                         Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED, 0) != 0;
-        mStorageManagerSwitch.setChecked(isStorageManagerChecked);
+        // Using the setCheckedInternal means the checked status won't propagate through the
+        // listeners -- this will prevent us from accidentally causing a metrics event on resume.
+        mSwitchBar.setCheckedInternal(isStorageManagerChecked);
         mDaysToRetain.setEnabled(isStorageManagerChecked);
     }
 
     @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+
+        mSwitchBar.hide();
+        mSwitchController.tearDown();
+    }
+
+    @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
-        switch (preference.getKey()) {
-            case KEY_STORAGE_MANAGER_SWITCH:
-                boolean storageManagerChecked = (boolean) newValue;
-                mMetricsFeatureProvider.action(getContext(),
-                        MetricsEvent.ACTION_TOGGLE_STORAGE_MANAGER, storageManagerChecked);
-                mDaysToRetain.setEnabled(storageManagerChecked);
-                Settings.Secure.putInt(getContentResolver(),
-                        Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED,
-                        storageManagerChecked ? 1 : 0);
-                // Only show a warning if enabling.
-                if (storageManagerChecked) {
-                    maybeShowWarning();
-                }
-                break;
-            case KEY_DAYS:
-                Settings.Secure.putInt(getContentResolver(),
-                        Settings.Secure.AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN,
-                        Integer.parseInt((String) newValue));
-                break;
+        if (KEY_DAYS.equals(preference.getKey())) {
+            Settings.Secure.putInt(
+                    getContentResolver(),
+                    Settings.Secure.AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN,
+                    Integer.parseInt((String) newValue));
         }
         return true;
     }
@@ -142,15 +154,6 @@
     }
 
     @Override
-    public boolean onPreferenceClick(Preference preference) {
-        if (KEY_DELETION_HELPER.equals(preference.getKey())) {
-            Intent intent = new Intent(StorageManager.ACTION_MANAGE_STORAGE);
-            getContext().startActivity(intent);
-        }
-        return true;
-    }
-
-    @Override
     protected int getHelpResource() {
         return R.string.help_uri_storage;
     }
@@ -164,15 +167,4 @@
         }
         return indices.length - 1;
     }
-
-    private void maybeShowWarning() {
-        // If the storage manager is on by default, we can use the normal message.
-        boolean warningUnneeded = SystemProperties.getBoolean(
-                STORAGE_MANAGER_ENABLED_BY_DEFAULT_PROPERTY, false);
-        if (warningUnneeded) {
-            return;
-        }
-        ActivationWarningFragment fragment = ActivationWarningFragment.newInstance();
-        fragment.show(getFragmentManager(), ActivationWarningFragment.TAG);
-    }
 }
diff --git a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSwitchBarController.java b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSwitchBarController.java
new file mode 100644
index 0000000..a648102
--- /dev/null
+++ b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSwitchBarController.java
@@ -0,0 +1,85 @@
+/*
+ * 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.deletionhelper;
+
+import android.app.FragmentManager;
+import android.content.Context;
+import android.os.SystemProperties;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.widget.Switch;
+
+import com.android.internal.util.Preconditions;
+import com.android.settings.core.instrumentation.MetricsFeatureProvider;
+import com.android.settings.widget.SwitchBar;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+
+/** Handles the logic for flipping the storage management toggle on a {@link SwitchBar}. */
+public class AutomaticStorageManagerSwitchBarController
+        implements SwitchBar.OnSwitchChangeListener {
+    private static final String STORAGE_MANAGER_ENABLED_BY_DEFAULT_PROPERTY =
+            "ro.storage_manager.enabled";
+
+    private Context mContext;
+    private SwitchBar mSwitchBar;
+    private MetricsFeatureProvider mMetrics;
+    private Preference mDaysToRetainPreference;
+    private FragmentManager mFragmentManager;
+
+    public AutomaticStorageManagerSwitchBarController(
+            Context context,
+            SwitchBar switchBar,
+            MetricsFeatureProvider metrics,
+            Preference daysToRetainPreference,
+            FragmentManager fragmentManager) {
+        mContext = Preconditions.checkNotNull(context);
+        mSwitchBar = Preconditions.checkNotNull(switchBar);
+        mMetrics = Preconditions.checkNotNull(metrics);
+        mDaysToRetainPreference = Preconditions.checkNotNull(daysToRetainPreference);
+        mFragmentManager = Preconditions.checkNotNull(fragmentManager);
+
+        mSwitchBar.addOnSwitchChangeListener(this);
+    }
+
+    @Override
+    public void onSwitchChanged(Switch switchView, boolean isChecked) {
+        mMetrics.action(mContext, MetricsEvent.ACTION_TOGGLE_STORAGE_MANAGER, isChecked);
+        mDaysToRetainPreference.setEnabled(isChecked);
+        Settings.Secure.putInt(
+                mContext.getContentResolver(),
+                Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED,
+                isChecked ? 1 : 0);
+        // Only show a warning if enabling.
+        if (isChecked) {
+            maybeShowWarning();
+        }
+    }
+
+    /** Unregisters the controller from listening to further events. */
+    public void tearDown() {
+        mSwitchBar.removeOnSwitchChangeListener(this);
+    }
+
+    private void maybeShowWarning() {
+        // If the storage manager is on by default, we don't need to show the additional dialog.
+        if (SystemProperties.getBoolean(STORAGE_MANAGER_ENABLED_BY_DEFAULT_PROPERTY, false)) {
+            return;
+        }
+        ActivationWarningFragment fragment = ActivationWarningFragment.newInstance();
+        fragment.show(mFragmentManager, ActivationWarningFragment.TAG);
+    }
+}
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java b/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java
new file mode 100644
index 0000000..4724c3d
--- /dev/null
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuController.java
@@ -0,0 +1,85 @@
+/*
+ * 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.deviceinfo;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.storage.VolumeInfo;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+
+import com.android.settings.R;
+import com.android.settings.applications.PackageManagerWrapper;
+import com.android.settings.core.lifecycle.Lifecycle;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnCreateOptionsMenu;
+import com.android.settings.core.lifecycle.events.OnOptionsItemSelected;
+import com.android.settings.core.lifecycle.events.OnPrepareOptionsMenu;
+
+import java.util.Objects;
+
+/**
+ * Handles the option menu on the Storage settings.
+ */
+public class PrivateVolumeOptionMenuController implements LifecycleObserver, OnCreateOptionsMenu,
+        OnPrepareOptionsMenu, OnOptionsItemSelected {
+    private static final int OPTIONS_MENU_MIGRATE_DATA = 100;
+
+    private Context mContext;
+    private VolumeInfo mVolumeInfo;
+    private PackageManagerWrapper mPm;
+
+    public PrivateVolumeOptionMenuController(
+            Context context, VolumeInfo volumeInfo, PackageManagerWrapper packageManager) {
+        mContext = context;
+        mVolumeInfo = volumeInfo;
+        mPm = packageManager;
+    }
+
+    @Override
+    public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
+        menu.add(Menu.NONE, OPTIONS_MENU_MIGRATE_DATA, 0, R.string.storage_menu_migrate);
+    }
+
+    @Override
+    public void onPrepareOptionsMenu(Menu menu) {
+        if (mVolumeInfo == null) {
+            return;
+        }
+
+        // Only offer to migrate when not current storage
+        final VolumeInfo privateVol = mPm.getPrimaryStorageCurrentVolume();
+        final MenuItem migrate = menu.findItem(OPTIONS_MENU_MIGRATE_DATA);
+        if (migrate != null) {
+            migrate.setVisible((privateVol != null)
+                    && (privateVol.getType() == VolumeInfo.TYPE_PRIVATE)
+                    && !Objects.equals(mVolumeInfo, privateVol));
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem menuItem) {
+        if (menuItem.getItemId() == OPTIONS_MENU_MIGRATE_DATA) {
+            final Intent intent = new Intent(mContext, StorageWizardMigrateConfirm.class);
+            intent.putExtra(VolumeInfo.EXTRA_VOLUME_ID, mVolumeInfo.getId());
+            mContext.startActivity(intent);
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
index 9ddf7b7..b5d7ddf 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
@@ -484,28 +484,13 @@
 
             } break;
             case R.string.storage_detail_images: {
-                intent = new Intent(Intent.ACTION_VIEW);
-                intent.setDataAndType(
-                        DocumentsContract.buildRootUri(AUTHORITY_MEDIA, "images_root"),
-                        DocumentsContract.Root.MIME_TYPE_ITEM);
-                intent.addCategory(Intent.CATEGORY_DEFAULT);
-
+                intent = getIntentForStorage(AUTHORITY_MEDIA, "images_root");
             } break;
             case R.string.storage_detail_videos: {
-                intent = new Intent(Intent.ACTION_VIEW);
-                intent.setDataAndType(
-                        DocumentsContract.buildRootUri(AUTHORITY_MEDIA, "videos_root"),
-                        DocumentsContract.Root.MIME_TYPE_ITEM);
-                intent.addCategory(Intent.CATEGORY_DEFAULT);
-
+                intent = getIntentForStorage(AUTHORITY_MEDIA, "videos_root");
             } break;
             case R.string.storage_detail_audio: {
-                intent = new Intent(DocumentsContract.Root.MIME_TYPE_ITEM);
-                intent.setDataAndType(
-                        DocumentsContract.buildRootUri(AUTHORITY_MEDIA, "audio_root"),
-                        DocumentsContract.Root.MIME_TYPE_ITEM);
-                intent.addCategory(Intent.CATEGORY_DEFAULT);
-
+                intent = getIntentForStorage(AUTHORITY_MEDIA, "audio_root");
             } break;
             case R.string.storage_detail_system: {
                 SystemInfoFragment.show(this);
@@ -546,6 +531,16 @@
         return super.onPreferenceTreeClick(pref);
     }
 
+    private Intent getIntentForStorage(String authority, String root) {
+        Intent intent = new Intent(Intent.ACTION_VIEW);
+        intent.setDataAndType(
+                DocumentsContract.buildRootUri(authority, root),
+                DocumentsContract.Root.MIME_TYPE_ITEM);
+        intent.addCategory(Intent.CATEGORY_DEFAULT);
+
+        return intent;
+    }
+
     private final MeasurementReceiver mReceiver = new MeasurementReceiver() {
         @Override
         public void onDetailsChanged(MeasurementDetails details) {
diff --git a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
index 18393ac..602e65f 100644
--- a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
+++ b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
@@ -18,18 +18,26 @@
 
 import android.app.LoaderManager;
 import android.content.Context;
+import android.content.Intent;
 import android.content.Loader;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.os.storage.StorageManager;
 import android.os.storage.VolumeInfo;
 import android.provider.SearchIndexableResource;
+import android.support.annotation.VisibleForTesting;
+import android.util.Log;
 import android.util.SparseArray;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
 
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
 import com.android.settings.Utils;
+import com.android.settings.applications.PackageManagerWrapper;
 import com.android.settings.applications.PackageManagerWrapperImpl;
 import com.android.settings.applications.UserManagerWrapper;
 import com.android.settings.applications.UserManagerWrapperImpl;
@@ -40,6 +48,7 @@
 import com.android.settings.deviceinfo.storage.StorageAsyncLoader;
 import com.android.settings.deviceinfo.storage.StorageItemPreferenceController;
 import com.android.settings.deviceinfo.storage.StorageSummaryDonutPreferenceController;
+import com.android.settings.deviceinfo.storage.UserIconLoader;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
 import com.android.settingslib.applications.StorageStatsSource;
@@ -48,47 +57,23 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
 
 public class StorageDashboardFragment extends DashboardFragment
     implements LoaderManager.LoaderCallbacks<SparseArray<StorageAsyncLoader.AppsStorageResult>> {
     private static final String TAG = "StorageDashboardFrag";
     private static final int STORAGE_JOB_ID = 0;
+    private static final int ICON_JOB_ID = 1;
+    private static final int OPTIONS_MENU_MIGRATE_DATA = 100;
 
     private VolumeInfo mVolume;
 
     private StorageSummaryDonutPreferenceController mSummaryController;
     private StorageItemPreferenceController mPreferenceController;
+    private PrivateVolumeOptionMenuController mOptionMenuController;
     private List<PreferenceController> mSecondaryUsers;
 
     @Override
-    public void onResume() {
-        super.onResume();
-        getLoaderManager().initLoader(STORAGE_JOB_ID, Bundle.EMPTY, this);
-    }
-
-    @Override
-    public Loader<SparseArray<StorageAsyncLoader.AppsStorageResult>> onCreateLoader(int id,
-            Bundle args) {
-        Context context = getContext();
-        return new StorageAsyncLoader(context,
-                new UserManagerWrapperImpl(context.getSystemService(UserManager.class)),
-                mVolume.fsUuid,
-                new StorageStatsSource(context),
-                new PackageManagerWrapperImpl(context.getPackageManager()));
-    }
-
-    @Override
-    public void onLoadFinished(Loader<SparseArray<StorageAsyncLoader.AppsStorageResult>> loader,
-            SparseArray<StorageAsyncLoader.AppsStorageResult> data) {
-        mPreferenceController.onLoadFinished(data.get(UserHandle.myUserId()));
-        updateSecondaryUserControllers(mSecondaryUsers, data);
-    }
-
-    @Override
-    public void onLoaderReset(Loader<SparseArray<StorageAsyncLoader.AppsStorageResult>> loader) {
-    }
-
-    @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
@@ -101,6 +86,9 @@
             return;
         }
 
+        mOptionMenuController = new PrivateVolumeOptionMenuController(
+                context, mVolume, new PackageManagerWrapperImpl(context.getPackageManager()));
+
         final long sharedDataSize = mVolume.getPath().getTotalSpace();
         long totalSize = sm.getPrimaryStorageSize();
         long systemSize = totalSize - sharedDataSize;
@@ -127,6 +115,13 @@
     }
 
     @Override
+    public void onResume() {
+        super.onResume();
+        getLoaderManager().initLoader(STORAGE_JOB_ID, Bundle.EMPTY, this);
+        getLoaderManager().initLoader(ICON_JOB_ID, Bundle.EMPTY, new IconLoaderCallbacks());
+    }
+
+    @Override
     public int getMetricsCategory() {
         return MetricsProto.MetricsEvent.SETTINGS_STORAGE_CATEGORY;
     }
@@ -161,10 +156,16 @@
                 new AutomaticStorageManagementSwitchPreferenceController(
                         context, mMetricsFeatureProvider, getFragmentManager());
         getLifecycle().addObserver(asmController);
+        getLifecycle().addObserver(mOptionMenuController);
         controllers.add(asmController);
         return controllers;
     }
 
+    @VisibleForTesting
+    protected void setVolume(VolumeInfo info) {
+        mVolume = info;
+    }
+
     /**
      * Updates the secondary user controller sizes.
      */
@@ -208,4 +209,55 @@
                 }
 
             };
+
+    @Override
+    public Loader<SparseArray<StorageAsyncLoader.AppsStorageResult>> onCreateLoader(int id,
+            Bundle args) {
+        Context context = getContext();
+        return new StorageAsyncLoader(context,
+                new UserManagerWrapperImpl(context.getSystemService(UserManager.class)),
+                mVolume.fsUuid,
+                new StorageStatsSource(context),
+                new PackageManagerWrapperImpl(context.getPackageManager()));
+    }
+
+    @Override
+    public void onLoadFinished(Loader<SparseArray<StorageAsyncLoader.AppsStorageResult>> loader,
+            SparseArray<StorageAsyncLoader.AppsStorageResult> data) {
+        mPreferenceController.onLoadFinished(data.get(UserHandle.myUserId()));
+        updateSecondaryUserControllers(mSecondaryUsers, data);
+    }
+
+    @Override
+    public void onLoaderReset(Loader<SparseArray<StorageAsyncLoader.AppsStorageResult>> loader) {
+    }
+
+    /**
+     * IconLoaderCallbacks exists because StorageDashboardFragment already implements
+     * LoaderCallbacks for a different type.
+     */
+    public final class IconLoaderCallbacks
+            implements LoaderManager.LoaderCallbacks<SparseArray<Drawable>> {
+        @Override
+        public Loader<SparseArray<Drawable>> onCreateLoader(int id, Bundle args) {
+            return new UserIconLoader(
+                    getContext(),
+                    () -> UserIconLoader.loadUserIconsWithContext(getContext()));
+        }
+
+        @Override
+        public void onLoadFinished(
+                Loader<SparseArray<Drawable>> loader, SparseArray<Drawable> data) {
+            mSecondaryUsers
+                    .stream()
+                    .filter(controller -> controller instanceof UserIconLoader.UserIconHandler)
+                    .forEach(
+                            controller ->
+                                    ((UserIconLoader.UserIconHandler) controller)
+                                            .handleUserIcons(data));
+        }
+
+        @Override
+        public void onLoaderReset(Loader<SparseArray<Drawable>> loader) {}
+    }
 }
diff --git a/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java b/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java
index 5ac16d4..8ba3781 100644
--- a/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java
+++ b/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java
@@ -31,6 +31,7 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.support.annotation.VisibleForTesting;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -40,7 +41,6 @@
 
 import com.android.settings.R;
 import com.android.settingslib.RestrictedLockUtils;
-import com.android.settings.connecteddevice.UsbModePreferenceController;
 
 import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
@@ -136,9 +136,9 @@
         View v = mLayoutInflater.inflate(R.layout.restricted_radio_with_summary, container, false);
 
         TextView titleView = (TextView) v.findViewById(android.R.id.title);
-        titleView.setText(UsbModePreferenceController.getTitle(mode));
+        titleView.setText(getTitle(mode));
         TextView summaryView = (TextView) v.findViewById(android.R.id.summary);
-        summaryView.setText(UsbModePreferenceController.getSummary(mode));
+        updateSummary(summaryView, mode);
 
         if (disallowedByAdmin) {
             if (mEnforcedAdmin != null) {
@@ -178,4 +178,27 @@
         }
     }
 
+    @VisibleForTesting
+    static void updateSummary(TextView summaryView, int mode) {
+        if (mode == (UsbBackend.MODE_POWER_SOURCE | UsbBackend.MODE_DATA_NONE)) {
+            summaryView.setText(R.string.usb_use_power_only_desc);
+        }
+    }
+
+    @VisibleForTesting
+    static int getTitle(int mode) {
+        switch (mode) {
+            case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_NONE:
+                return R.string.usb_use_charging_only;
+            case UsbBackend.MODE_POWER_SOURCE | UsbBackend.MODE_DATA_NONE:
+                return R.string.usb_use_power_only;
+            case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MTP:
+                return R.string.usb_use_file_transfers;
+            case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_PTP:
+                return R.string.usb_use_photo_transfers;
+            case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MIDI:
+                return R.string.usb_use_MIDI;
+        }
+        return 0;
+    }
 }
diff --git a/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java b/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java
index b3e89c6..62e946d 100644
--- a/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java
+++ b/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.content.pm.UserInfo;
+import android.graphics.drawable.Drawable;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
@@ -37,8 +38,8 @@
  * SecondaryUserController controls the preferences on the Storage screen which had to do with
  * secondary users.
  */
-public class SecondaryUserController extends PreferenceController implements
-        StorageAsyncLoader.ResultHandler {
+public class SecondaryUserController extends PreferenceController
+        implements StorageAsyncLoader.ResultHandler, UserIconLoader.UserIconHandler {
     // PreferenceGroupKey to try to add our preference onto.
     private static final String TARGET_PREFERENCE_GROUP_KEY = "pref_secondary_users";
     private static final String PREFERENCE_KEY_BASE = "pref_user_";
@@ -69,8 +70,9 @@
             }
 
             if (info == null || Utils.isProfileOf(primaryUser, info)) {
-                controllers.add(new UserProfileController(context, info,
-                        USER_PROFILE_INSERTION_LOCATION));
+                controllers.add(
+                        new UserProfileController(
+                                context, info, userManager, USER_PROFILE_INSERTION_LOCATION));
                 continue;
             }
 
@@ -109,8 +111,6 @@
                 mStoragePreference.setStorageSize(mSize, mTotalSizeBytes);
             }
 
-            // TODO(b/36252572): Set the user icon appropriately here.
-
             group.setVisible(true);
             group.addPreference(mStoragePreference);
         }
@@ -161,6 +161,14 @@
         }
     }
 
+    @Override
+    public void handleUserIcons(SparseArray<Drawable> fetchedIcons) {
+        Drawable userIcon = fetchedIcons.get(mUser.id);
+        if (userIcon != null) {
+            mStoragePreference.setIcon(userIcon);
+        }
+    }
+
     private static class NoSecondaryUserController extends PreferenceController {
         public NoSecondaryUserController(Context context) {
             super(context);
diff --git a/src/com/android/settings/deviceinfo/storage/UserIconLoader.java b/src/com/android/settings/deviceinfo/storage/UserIconLoader.java
new file mode 100644
index 0000000..4f00c3c
--- /dev/null
+++ b/src/com/android/settings/deviceinfo/storage/UserIconLoader.java
@@ -0,0 +1,75 @@
+/*
+ * 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.deviceinfo.storage;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.graphics.drawable.Drawable;
+import android.os.UserManager;
+import android.util.Log;
+import android.util.SparseArray;
+
+import com.android.internal.util.Preconditions;
+import com.android.settings.Utils;
+import com.android.settings.utils.AsyncLoader;
+
+/**
+ * Fetches a user icon as a loader using a given icon loading lambda.
+ */
+public class UserIconLoader extends AsyncLoader<SparseArray<Drawable>> {
+    private FetchUserIconTask mTask;
+
+    /**
+     * Task to load all user icons.
+     */
+    public interface FetchUserIconTask {
+        SparseArray<Drawable> getUserIcons();
+    }
+
+    /**
+     * Handle the output of this task.
+     */
+    public interface UserIconHandler {
+        void handleUserIcons(SparseArray<Drawable> fetchedIcons);
+    }
+
+    public UserIconLoader(Context context, FetchUserIconTask task) {
+        super(context);
+        mTask = Preconditions.checkNotNull(task);
+    }
+
+    @Override
+    public SparseArray<Drawable> loadInBackground() {
+        return mTask.getUserIcons();
+    }
+
+    @Override
+    protected void onDiscardResult(SparseArray<Drawable> result) {}
+
+    /**
+     * Loads the user icons using a given context. This returns a {@link SparseArray} which maps
+     * user ids to their user icons.
+     */
+    public static SparseArray<Drawable> loadUserIconsWithContext(Context context) {
+        SparseArray<Drawable> value = new SparseArray<>();
+        UserManager um = context.getSystemService(UserManager.class);
+        for (UserInfo userInfo : um.getUsers()) {
+            value.put(userInfo.id, Utils.getUserIcon(context, um, userInfo));
+        }
+        return value;
+    }
+}
diff --git a/src/com/android/settings/deviceinfo/storage/UserProfileController.java b/src/com/android/settings/deviceinfo/storage/UserProfileController.java
index 0e19740..18fa7b7 100644
--- a/src/com/android/settings/deviceinfo/storage/UserProfileController.java
+++ b/src/com/android/settings/deviceinfo/storage/UserProfileController.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.UserInfo;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.storage.VolumeInfo;
 import android.support.v7.preference.Preference;
@@ -28,25 +29,27 @@
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.internal.util.Preconditions;
 import com.android.settings.Utils;
+import com.android.settings.applications.UserManagerWrapper;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.deviceinfo.StorageItemPreference;
 import com.android.settings.deviceinfo.StorageProfileFragment;
 import com.android.settingslib.drawer.SettingsDrawerActivity;
 
-/**
- * Defines a {@link PreferenceController} which handles a single profile of the primary user.
- */
-public class UserProfileController extends PreferenceController implements
-        StorageAsyncLoader.ResultHandler {
+/** Defines a {@link PreferenceController} which handles a single profile of the primary user. */
+public class UserProfileController extends PreferenceController
+        implements StorageAsyncLoader.ResultHandler, UserIconLoader.UserIconHandler {
     private static final String PREFERENCE_KEY_BASE = "pref_profile_";
     private StorageItemPreference mStoragePreference;
+    private UserManagerWrapper mUserManager;
     private UserInfo mUser;
     private long mTotalSizeBytes;
     private final int mPreferenceOrder;
 
-    public UserProfileController(Context context, UserInfo info, int preferenceOrder) {
+    public UserProfileController(
+            Context context, UserInfo info, UserManagerWrapper userManager, int preferenceOrder) {
         super(context);
         mUser = Preconditions.checkNotNull(info);
+        mUserManager = userManager;
         mPreferenceOrder = preferenceOrder;
     }
 
@@ -66,7 +69,6 @@
         mStoragePreference.setOrder(mPreferenceOrder);
         mStoragePreference.setKey(PREFERENCE_KEY_BASE + mUser.id);
         mStoragePreference.setTitle(mUser.name);
-        // TODO(b/36252572): Set user icon here.
         screen.addPreference(mStoragePreference);
     }
 
@@ -110,4 +112,12 @@
     public void setTotalSize(long totalSize) {
         mTotalSizeBytes = totalSize;
     }
+
+    @Override
+    public void handleUserIcons(SparseArray<Drawable> fetchedIcons) {
+        Drawable userIcon = fetchedIcons.get(mUser.id);
+        if (userIcon != null) {
+            mStoragePreference.setIcon(userIcon);
+        }
+    }
 }
diff --git a/src/com/android/settings/fingerprint/FingerprintRemoveSidecar.java b/src/com/android/settings/fingerprint/FingerprintRemoveSidecar.java
new file mode 100644
index 0000000..eda4c82
--- /dev/null
+++ b/src/com/android/settings/fingerprint/FingerprintRemoveSidecar.java
@@ -0,0 +1,149 @@
+/*
+ * 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.fingerprint;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.hardware.fingerprint.Fingerprint;
+import android.hardware.fingerprint.FingerprintManager;
+import android.os.Bundle;
+import com.android.settings.core.InstrumentedPreferenceFragment;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import android.os.UserHandle;
+import java.util.Queue;
+import java.util.LinkedList;
+import android.util.Log;
+
+/**
+ * Sidecar fragment to handle the state around fingerprint removal.
+ */
+public class FingerprintRemoveSidecar extends InstrumentedPreferenceFragment {
+
+    private static final String TAG = "FingerprintRemoveSidecar";
+    private Listener mListener;
+    private Fingerprint mFingerprintRemoving;
+    private Queue<Object> mFingerprintsRemoved;
+    FingerprintManager mFingerprintManager;
+
+    private class RemovalError {
+        Fingerprint fingerprint;
+        int errMsgId;
+        CharSequence errString;
+        public RemovalError(Fingerprint fingerprint, int errMsgId, CharSequence errString) {
+            this.fingerprint = fingerprint;
+            this.errMsgId = errMsgId;
+            this.errString = errString;
+        }
+    }
+
+    private FingerprintManager.RemovalCallback
+            mRemoveCallback = new FingerprintManager.RemovalCallback() {
+        @Override
+        public void onRemovalSucceeded(Fingerprint fingerprint) {
+            if (mListener != null) {
+                mListener.onRemovalSucceeded(fingerprint);
+            } else {
+                mFingerprintsRemoved.add(fingerprint);
+            };
+            mFingerprintRemoving = null;
+        }
+
+        @Override
+        public void onRemovalError(Fingerprint fp, int errMsgId, CharSequence errString) {
+            if (mListener != null) {
+                mListener.onRemovalError(fp, errMsgId, errString);
+            } else {
+                mFingerprintsRemoved.add(new RemovalError(fp, errMsgId, errString));
+            }
+            mFingerprintRemoving = null;
+        }
+    };
+
+    public void startRemove(Fingerprint fingerprint, int userId) {
+        if (mFingerprintRemoving != null) {
+            Log.e(TAG, "Remove already in progress");
+            return;
+        }
+        if (userId != UserHandle.USER_NULL) {
+            mFingerprintManager.setActiveUser(userId);
+        }
+        mFingerprintRemoving = fingerprint;
+        mFingerprintManager.remove(fingerprint, userId, mRemoveCallback);;
+    }
+
+    public FingerprintRemoveSidecar() {
+        mFingerprintsRemoved = new LinkedList<>();
+    }
+
+    public void setFingerprintManager(FingerprintManager fingerprintManager) {
+        mFingerprintManager = fingerprintManager;
+    }
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setRetainInstance(true);
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+    }
+
+    public void setListener(Listener listener) {
+        if (mListener == null && listener != null) {
+            while (!mFingerprintsRemoved.isEmpty()) {
+                Object o = mFingerprintsRemoved.poll();
+                if (o instanceof Fingerprint) {
+                    listener.onRemovalSucceeded((Fingerprint)o);
+                } else if (o instanceof RemovalError) {
+                    RemovalError e = (RemovalError) o;
+                    listener.onRemovalError(e.fingerprint, e.errMsgId, e.errString);
+                }
+            }
+        }
+        mListener = listener;
+    }
+
+    public interface Listener {
+        void onRemovalSucceeded(Fingerprint fingerprint);
+        void onRemovalError(Fingerprint fp, int errMsgId, CharSequence errString);
+    }
+
+    final boolean isRemovingFingerprint(int fid) {
+        return inProgress() && mFingerprintRemoving.getFingerId() == fid;
+    }
+
+    final boolean inProgress() {
+        return mFingerprintRemoving != null;
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.FINGERPRINT_REMOVE_SIDECAR;
+    }
+
+}
diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java
index 0f48f8c..01670fe 100644
--- a/src/com/android/settings/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/fingerprint/FingerprintSettings.java
@@ -31,7 +31,6 @@
 import android.hardware.fingerprint.FingerprintManager;
 import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback;
 import android.hardware.fingerprint.FingerprintManager.AuthenticationResult;
-import android.hardware.fingerprint.FingerprintManager.RemovalCallback;
 import android.os.Bundle;
 import android.os.CancellationSignal;
 import android.os.Handler;
@@ -64,11 +63,11 @@
 import com.android.settings.Utils;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 import com.android.settings.widget.FooterPreference;
-import com.android.settings.widget.FooterPreferenceMixin;
 import com.android.settingslib.HelpUtils;
 import com.android.settingslib.RestrictedLockUtils;
 
 import java.util.List;
+import java.util.HashMap;
 
 import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
@@ -160,6 +159,10 @@
         private Drawable mHighlightDrawable;
         private int mUserId;
 
+        private static final String TAG_REMOVAL_SIDECAR = "removal_sidecar";
+        private FingerprintRemoveSidecar mRemovalSidecar;
+        private HashMap<Integer, String> mFingerprintsRenaming;
+
         private AuthenticationCallback mAuthCallback = new AuthenticationCallback() {
             @Override
             public void onAuthenticationSucceeded(AuthenticationResult result) {
@@ -184,22 +187,30 @@
                         .sendToTarget();
             }
         };
-        private RemovalCallback mRemoveCallback = new RemovalCallback() {
 
-            @Override
+        FingerprintRemoveSidecar.Listener mRemovalListener =
+                new FingerprintRemoveSidecar.Listener() {
             public void onRemovalSucceeded(Fingerprint fingerprint) {
                 mHandler.obtainMessage(MSG_REFRESH_FINGERPRINT_TEMPLATES,
                         fingerprint.getFingerId(), 0).sendToTarget();
+                updateDialog();
             }
-
-            @Override
             public void onRemovalError(Fingerprint fp, int errMsgId, CharSequence errString) {
                 final Activity activity = getActivity();
                 if (activity != null) {
                     Toast.makeText(activity, errString, Toast.LENGTH_SHORT);
                 }
+                updateDialog();
+            }
+            private void updateDialog() {
+                RenameDeleteDialog renameDeleteDialog = (RenameDeleteDialog)getFragmentManager().
+                        findFragmentByTag(RenameDeleteDialog.class.getName());
+                if (renameDeleteDialog != null) {
+                    renameDeleteDialog.enableDelete();
+                }
             }
         };
+
         private final Handler mHandler = new Handler() {
             @Override
             public void handleMessage(android.os.Message msg) {
@@ -263,6 +274,9 @@
         }
 
         private void retryFingerprint() {
+            if (mRemovalSidecar.inProgress()) {
+                return;
+            }
             if (!mInFingerprintLockout) {
                 mFingerprintCancel = new CancellationSignal();
                 mFingerprintManager.authenticate(null, mFingerprintCancel, 0 /* flags */,
@@ -278,7 +292,31 @@
         @Override
         public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
+
+            Activity activity = getActivity();
+            mFingerprintManager = Utils.getFingerprintManagerOrNull(activity);
+
+            mRemovalSidecar = (FingerprintRemoveSidecar)
+                    getFragmentManager().findFragmentByTag(TAG_REMOVAL_SIDECAR);
+            if (mRemovalSidecar == null) {
+                mRemovalSidecar = new FingerprintRemoveSidecar();
+                getFragmentManager().beginTransaction()
+                        .add(mRemovalSidecar, TAG_REMOVAL_SIDECAR).commit();
+            }
+            mRemovalSidecar.setFingerprintManager(mFingerprintManager);
+            mRemovalSidecar.setListener(mRemovalListener);
+
+            RenameDeleteDialog renameDeleteDialog = (RenameDeleteDialog)getFragmentManager().
+                    findFragmentByTag(RenameDeleteDialog.class.getName());
+            if (renameDeleteDialog != null) {
+               renameDeleteDialog.setDeleteInProgress(mRemovalSidecar.inProgress());
+            }
+
+            mFingerprintsRenaming = new HashMap<Integer, String>();
+
             if (savedInstanceState != null) {
+                mFingerprintsRenaming = (HashMap<Integer, String>)
+                        savedInstanceState.getSerializable("mFingerprintsRenaming");
                 mToken = savedInstanceState.getByteArray(
                         ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
                 mLaunchedConfirm = savedInstanceState.getBoolean(
@@ -287,9 +325,6 @@
             mUserId = getActivity().getIntent().getIntExtra(
                     Intent.EXTRA_USER_ID, UserHandle.myUserId());
 
-            Activity activity = getActivity();
-            mFingerprintManager = Utils.getFingerprintManagerOrNull(activity);
-
             // Need to authenticate a session token if none
             if (mToken == null && mLaunchedConfirm == false) {
                 mLaunchedConfirm = true;
@@ -347,6 +382,12 @@
                 pref.setFingerprint(item);
                 pref.setPersistent(false);
                 pref.setIcon(R.drawable.ic_fingerprint_24dp);
+                if (mRemovalSidecar.isRemovingFingerprint(item.getFingerId())) {
+                    pref.setEnabled(false);
+                }
+                if (mFingerprintsRenaming.containsKey(item.getFingerId())) {
+                    pref.setTitle(mFingerprintsRenaming.get(item.getFingerId()));
+                }
                 root.addPreference(pref);
                 pref.setOnPreferenceChangeListener(this);
             }
@@ -360,15 +401,20 @@
         }
 
         private void updateAddPreference() {
+            if (getActivity() == null) return; // Activity went away
+
             /* Disable preference if too many fingerprints added */
             final int max = getContext().getResources().getInteger(
                     com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
             boolean tooMany = mFingerprintManager.getEnrolledFingerprints(mUserId).size() >= max;
+            // retryFingerprint() will be called when remove finishes
+            // need to disable enroll or have a way to determine if enroll is in progress
+            final boolean removalInProgress = mRemovalSidecar.inProgress();
             CharSequence maxSummary = tooMany ?
                     getContext().getString(R.string.fingerprint_add_max, max) : "";
             Preference addPreference = findPreference(KEY_FINGERPRINT_ADD);
             addPreference.setSummary(maxSummary);
-            addPreference.setEnabled(!tooMany);
+            addPreference.setEnabled(!tooMany && !removalInProgress);
         }
 
         private static String genKey(int id) {
@@ -381,6 +427,9 @@
             // Make sure we reload the preference hierarchy since fingerprints may be added,
             // deleted or renamed.
             updatePreferences();
+            if (mRemovalSidecar != null) {
+                mRemovalSidecar.setListener(mRemovalListener);
+            }
         }
 
         private void updatePreferences() {
@@ -392,6 +441,9 @@
         public void onPause() {
             super.onPause();
             stopFingerprint();
+            if (mRemovalSidecar != null) {
+                mRemovalSidecar.setListener(null);
+            }
         }
 
         @Override
@@ -399,6 +451,7 @@
             outState.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN,
                     mToken);
             outState.putBoolean(KEY_LAUNCHED_CONFIRM, mLaunchedConfirm);
+            outState.putSerializable("mFingerprintsRenaming", mFingerprintsRenaming);
         }
 
         @Override
@@ -413,7 +466,7 @@
                 startActivityForResult(intent, ADD_FINGERPRINT_REQUEST);
             } else if (pref instanceof FingerprintPreference) {
                 FingerprintPreference fpref = (FingerprintPreference) pref;
-                final Fingerprint fp =fpref.getFingerprint();
+                final Fingerprint fp = fpref.getFingerprint();
                 showRenameDeleteDialog(fp);
                 return super.onPreferenceTreeClick(pref);
             }
@@ -423,7 +476,14 @@
         private void showRenameDeleteDialog(final Fingerprint fp) {
             RenameDeleteDialog renameDeleteDialog = new RenameDeleteDialog();
             Bundle args = new Bundle();
-            args.putParcelable("fingerprint", fp);
+            if (mFingerprintsRenaming.containsKey(fp.getFingerId())) {
+                final Fingerprint f = new Fingerprint(mFingerprintsRenaming.get(fp.getFingerId()),
+                        fp.getGroupId(), fp.getFingerId(), fp.getDeviceId());
+                args.putParcelable("fingerprint", f);
+            } else {
+                args.putParcelable("fingerprint", fp);
+            }
+            renameDeleteDialog.setDeleteInProgress(mRemovalSidecar.inProgress());
             renameDeleteDialog.setArguments(args);
             renameDeleteDialog.setTargetFragment(this, 0);
             renameDeleteDialog.show(getFragmentManager(), RenameDeleteDialog.class.getName());
@@ -535,11 +595,16 @@
         }
 
         private void deleteFingerPrint(Fingerprint fingerPrint) {
-            mFingerprintManager.remove(fingerPrint, mUserId, mRemoveCallback);
+            mRemovalSidecar.startRemove(fingerPrint, mUserId);
+            String name = genKey(fingerPrint.getFingerId());
+            Preference prefToRemove = findPreference(name);
+            prefToRemove.setEnabled(false);
+            updateAddPreference();
         }
 
         private void renameFingerPrint(int fingerId, String newName) {
             mFingerprintManager.rename(fingerId, mUserId, newName);
+            mFingerprintsRenaming.put(fingerId, newName);
             updatePreferences();
         }
 
@@ -559,7 +624,12 @@
             private Boolean mTextHadFocus;
             private int mTextSelectionStart;
             private int mTextSelectionEnd;
+            private AlertDialog mAlertDialog;
+            private boolean mDeleteInProgress;
 
+            public void setDeleteInProgress(boolean deleteInProgress) {
+                mDeleteInProgress = deleteInProgress;
+            }
             @Override
             public Dialog onCreateDialog(Bundle savedInstanceState) {
                 mFp = getArguments().getParcelable("fingerprint");
@@ -569,7 +639,7 @@
                     mTextSelectionStart = savedInstanceState.getInt("startSelection");
                     mTextSelectionEnd = savedInstanceState.getInt("endSelection");
                 }
-                final AlertDialog alertDialog = new AlertDialog.Builder(getActivity())
+                mAlertDialog = new AlertDialog.Builder(getActivity())
                         .setView(R.layout.fingerprint_rename_dialog)
                         .setPositiveButton(R.string.security_settings_fingerprint_enroll_dialog_ok,
                                 new DialogInterface.OnClickListener() {
@@ -603,10 +673,10 @@
                                     }
                                 })
                         .create();
-                alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
+                mAlertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
                     @Override
                     public void onShow(DialogInterface dialog) {
-                        mDialogTextField = (EditText) alertDialog.findViewById(
+                        mDialogTextField = (EditText) mAlertDialog.findViewById(
                                 R.id.fingerprint_rename_field);
                         CharSequence name = mFingerName == null ? mFp.getName() : mFingerName;
                         mDialogTextField.setText(name);
@@ -615,14 +685,24 @@
                         } else {
                             mDialogTextField.setSelection(mTextSelectionStart, mTextSelectionEnd);
                         }
+                        if (mDeleteInProgress) {
+                            mAlertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);
+                        }
                     }
                 });
                 if (mTextHadFocus == null || mTextHadFocus) {
                     // Request the IME
-                    alertDialog.getWindow().setSoftInputMode(
+                    mAlertDialog.getWindow().setSoftInputMode(
                             WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
                 }
-                return alertDialog;
+                return mAlertDialog;
+            }
+
+            public void enableDelete() {
+                mDeleteInProgress = false;
+                if (mAlertDialog != null) {
+                    mAlertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(true);
+                }
             }
 
             private void onDeleteClick(DialogInterface dialog) {
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index 8be3b14..320031e 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -58,7 +58,6 @@
  * 1. Detail battery usage information for app(i.e. usage time, usage amount)
  * 2. Battery related controls for app(i.e uninstall, force stop)
  *
- * This fragment will replace {@link PowerUsageDetail}
  */
 public class AdvancedPowerUsageDetail extends PowerUsageBase implements
         ButtonActionDialogFragment.AppButtonsDialogListener {
@@ -105,10 +104,11 @@
         final Bundle args = new Bundle();
         final BatterySipper sipper = entry.sipper;
         final BatteryStats.Uid uid = sipper.uidObj;
+        final BatteryUtils batteryUtils = BatteryUtils.getInstance(caller);
 
-        final long backgroundTimeMs = BatteryUtils.getProcessTimeMs(
+        final long backgroundTimeMs = batteryUtils.getProcessTimeMs(
                 BatteryUtils.StatusType.BACKGROUND, uid, which);
-        final long foregroundTimeMs = BatteryUtils.getProcessTimeMs(
+        final long foregroundTimeMs = batteryUtils.getProcessTimeMs(
                 BatteryUtils.StatusType.FOREGROUND, uid, which);
 
         if (ArrayUtils.isEmpty(sipper.mPackages)) {
diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java
index 85bc0fd..a3ea5cd 100644
--- a/src/com/android/settings/fuelgauge/BatteryUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryUtils.java
@@ -16,9 +16,13 @@
 package com.android.settings.fuelgauge;
 
 import android.annotation.IntDef;
+import android.content.Context;
+import android.content.pm.PackageManager;
 import android.os.BatteryStats;
 import android.os.SystemClock;
 import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
+import android.util.Log;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -38,7 +42,23 @@
         int ALL = 2;
     }
 
-    public static long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid,
+    private static final String TAG = "BatteryUtils";
+    private static BatteryUtils sInstance;
+
+    private PackageManager mPackageManager;
+
+    public static BatteryUtils getInstance(Context context) {
+        if (sInstance == null || sInstance.isDataCorrupted()) {
+            sInstance = new BatteryUtils(context);
+        }
+        return sInstance;
+    }
+
+    private BatteryUtils(Context context) {
+        mPackageManager = context.getPackageManager();
+    }
+
+    public long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid,
             int which) {
         if (uid == null) {
             return 0;
@@ -56,34 +76,46 @@
         return 0;
     }
 
-    private static long getProcessBackgroundTimeMs(BatteryStats.Uid uid, int which) {
+    private long getProcessBackgroundTimeMs(BatteryStats.Uid uid, int which) {
         final long rawRealTimeUs = convertMsToUs(SystemClock.elapsedRealtime());
         final long timeUs = uid.getProcessStateTime(
                 BatteryStats.Uid.PROCESS_STATE_BACKGROUND, rawRealTimeUs, which);
-        return  convertUsToMs(timeUs);
+
+        Log.v(TAG, "package: " + mPackageManager.getNameForUid(uid.getUid()));
+        Log.v(TAG, "background time(us): " + timeUs);
+        return convertUsToMs(timeUs);
     }
 
-    private static long getProcessForegroundTimeMs(BatteryStats.Uid uid, int which) {
+    private long getProcessForegroundTimeMs(BatteryStats.Uid uid, int which) {
         final long rawRealTimeUs = convertMsToUs(SystemClock.elapsedRealtime());
         final int foregroundTypes[] = {BatteryStats.Uid.PROCESS_STATE_TOP,
                 BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE,
                 BatteryStats.Uid.PROCESS_STATE_TOP_SLEEPING,
                 BatteryStats.Uid.PROCESS_STATE_FOREGROUND};
+        Log.v(TAG, "package: " + mPackageManager.getNameForUid(uid.getUid()));
+
         long timeUs = 0;
         for (int type : foregroundTypes) {
-            timeUs += uid.getProcessStateTime(type, rawRealTimeUs, which);
+            final long localTime = uid.getProcessStateTime(type, rawRealTimeUs, which);
+            Log.v(TAG, "type: " + type + " time(us): " + localTime);
+            timeUs += localTime;
         }
+        Log.v(TAG, "foreground time(us): " + timeUs);
 
         return convertUsToMs(timeUs);
     }
 
-    private static long convertUsToMs(long timeUs) {
+    private long convertUsToMs(long timeUs) {
         return timeUs / 1000;
     }
 
-    private static long convertMsToUs(long timeMs) {
+    private long convertMsToUs(long timeMs) {
         return timeMs * 1000;
     }
 
+    private boolean isDataCorrupted() {
+        return mPackageManager == null;
+    }
+
 }
 
diff --git a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java
index fe0cf4d..3509834 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java
@@ -66,13 +66,15 @@
             UsageType.USER,
             UsageType.IDLE,
             UsageType.APP,
-            UsageType.UNACCOUNTED};
+            UsageType.UNACCOUNTED,
+            UsageType.OVERCOUNTED};
     private BatteryHistoryPreference mHistPref;
     private PreferenceGroup mUsageListGroup;
     private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
     private PackageManager mPackageManager;
     private UserManager mUserManager;
     private Map<Integer, PowerUsageData> mBatteryDataMap;
+    private BatteryUtils mBatteryUtils;
 
     Handler mHandler = new Handler() {
 
@@ -116,6 +118,7 @@
                 .getPowerUsageFeatureProvider(context);
         mPackageManager = context.getPackageManager();
         mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
+        mBatteryUtils = BatteryUtils.getInstance(context);
     }
 
     @Override
@@ -169,6 +172,9 @@
         mUsageListGroup.removeAll();
         for (int i = 0, size = dataList.size(); i < size; i++) {
             final PowerUsageData batteryData = dataList.get(i);
+            if (shouldHide(batteryData)) {
+                continue;
+            }
             final PowerGaugePreference pref = new PowerGaugePreference(getPrefContext());
 
             pref.setKey(String.valueOf(batteryData.usageType));
@@ -199,6 +205,8 @@
             return UsageType.CELL;
         } else if (drainType == DrainType.UNACCOUNTED) {
             return UsageType.UNACCOUNTED;
+        } else if (drainType == DrainType.OVERCOUNTED) {
+            return UsageType.OVERCOUNTED;
         } else if (mPowerUsageFeatureProvider.isTypeSystem(sipper)) {
             return UsageType.SYSTEM;
         } else if (mPowerUsageFeatureProvider.isTypeService(sipper)) {
@@ -209,6 +217,16 @@
     }
 
     @VisibleForTesting
+    boolean shouldHide(PowerUsageData powerUsageData) {
+        if (powerUsageData.usageType == UsageType.UNACCOUNTED
+                || powerUsageData.usageType == UsageType.OVERCOUNTED) {
+            return true;
+        }
+
+        return false;
+    }
+
+    @VisibleForTesting
     List<PowerUsageData> parsePowerUsageData(BatteryStatsHelper statusHelper) {
         final List<BatterySipper> batterySippers = statusHelper.getUsageList();
         final Map<Integer, PowerUsageData> batteryDataMap = new HashMap<>();
@@ -223,8 +241,8 @@
             final PowerUsageData usageData = batteryDataMap.get(extractUsageType(sipper));
             usageData.totalPowerMah += sipper.totalPowerMah;
             if (sipper.drainType == DrainType.APP && sipper.usageTimeMs != 0) {
-                sipper.usageTimeMs = BatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.ALL,
-                        sipper.uidObj, STATUS_TYPE);
+                sipper.usageTimeMs = mBatteryUtils.getProcessTimeMs(
+                        BatteryUtils.StatusType.FOREGROUND, sipper.uidObj, STATUS_TYPE);
             }
             usageData.totalUsageTimeMs += sipper.usageTimeMs;
             usageData.usageList.add(sipper);
@@ -297,7 +315,8 @@
                 UsageType.BLUETOOTH,
                 UsageType.USER,
                 UsageType.IDLE,
-                UsageType.UNACCOUNTED})
+                UsageType.UNACCOUNTED,
+                UsageType.OVERCOUNTED})
         public @interface UsageType {
             int APP = 0;
             int WIFI = 1;
@@ -308,6 +327,7 @@
             int USER = 6;
             int IDLE = 7;
             int UNACCOUNTED = 8;
+            int OVERCOUNTED = 9;
         }
 
         @StringRes
@@ -353,6 +373,8 @@
                     return R.string.power_idle;
                 case UsageType.UNACCOUNTED:
                     return R.string.power_unaccounted;
+                case UsageType.OVERCOUNTED:
+                    return R.string.power_overcounted;
                 case UsageType.APP:
                 default:
                     return R.string.power_apps;
diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
deleted file mode 100644
index f0d0a10..0000000
--- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java
+++ /dev/null
@@ -1,826 +0,0 @@
-/*
- * Copyright (C) 2009 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;
-
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.app.ApplicationErrorReport;
-import android.app.admin.DevicePolicyManager;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.BatteryStats;
-import android.os.Bundle;
-import android.os.Process;
-import android.os.UserHandle;
-import android.support.v14.preference.PreferenceFragment;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.Preference.OnPreferenceClickListener;
-import android.support.v7.preference.PreferenceCategory;
-import android.support.v7.preference.PreferenceScreen;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-import com.android.internal.os.BatterySipper;
-import com.android.internal.os.BatterySipper.DrainType;
-import com.android.internal.os.BatteryStatsHelper;
-import com.android.internal.util.FastPrintWriter;
-import com.android.settings.AppHeader;
-import com.android.settings.DisplaySettings;
-import com.android.settings.R;
-import com.android.settings.SettingsActivity;
-import com.android.settings.Utils;
-import com.android.settings.applications.AppHeaderController;
-import com.android.settings.applications.InstalledAppDetails;
-import com.android.settings.applications.LayoutPreference;
-import com.android.settings.bluetooth.BluetoothSettings;
-import com.android.settings.core.PreferenceController;
-import com.android.settings.location.LocationSettings;
-import com.android.settings.network.NetworkDashboardFragment;
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.wifi.WifiSettings;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.List;
-
-// TODO(b/35810915): Delete this page once ag/1971493 is done.
-public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickListener {
-
-    // Note: Must match the sequence of the DrainType
-    private static int[] sDrainTypeDesciptions = new int[] {
-        R.string.battery_desc_standby,
-        R.string.battery_desc_radio,
-        R.string.battery_desc_voice,
-        R.string.battery_desc_wifi,
-        R.string.battery_desc_bluetooth,
-        R.string.battery_desc_flashlight,
-        R.string.battery_desc_display,
-        R.string.battery_desc_apps,
-        R.string.battery_desc_users,
-        R.string.battery_desc_unaccounted,
-        R.string.battery_desc_overcounted,
-        R.string.battery_desc_camera,
-    };
-
-    public static void startBatteryDetailPage(SettingsActivity caller,
-            PreferenceFragment fragment, BatteryStatsHelper helper, int statsType,
-            BatteryEntry entry, boolean showLocationButton, boolean includeAppInfo) {
-        // Initialize mStats if necessary.
-        helper.getStats();
-
-        final int dischargeAmount = helper.getStats().getDischargeAmount(statsType);
-        Bundle args = new Bundle();
-        args.putString(PowerUsageDetail.EXTRA_TITLE, entry.name);
-        args.putInt(PowerUsageDetail.EXTRA_PERCENT, (int)
-                ((entry.sipper.totalPowerMah * dischargeAmount / helper.getTotalPower()) + .5));
-        args.putInt(PowerUsageDetail.EXTRA_GAUGE, (int)
-                Math.ceil(entry.sipper.totalPowerMah * 100 / helper.getMaxPower()));
-        args.putLong(PowerUsageDetail.EXTRA_USAGE_DURATION, helper.getStatsPeriod());
-        args.putString(PowerUsageDetail.EXTRA_ICON_PACKAGE, entry.defaultPackageName);
-        args.putInt(PowerUsageDetail.EXTRA_ICON_ID, entry.iconId);
-        args.putDouble(PowerUsageDetail.EXTRA_NO_COVERAGE, entry.sipper.noCoveragePercent);
-        if (entry.sipper.uidObj != null) {
-            args.putInt(PowerUsageDetail.EXTRA_UID, entry.sipper.uidObj.getUid());
-        }
-        args.putSerializable(PowerUsageDetail.EXTRA_DRAIN_TYPE, entry.sipper.drainType);
-        args.putBoolean(PowerUsageDetail.EXTRA_SHOW_LOCATION_BUTTON, showLocationButton);
-        args.putBoolean(AppHeader.EXTRA_HIDE_INFO_BUTTON, !includeAppInfo);
-
-        int userId = UserHandle.myUserId();
-        int[] types;
-        double[] values;
-        switch (entry.sipper.drainType) {
-            case APP:
-            case USER:
-            {
-                BatteryStats.Uid uid = entry.sipper.uidObj;
-                types = new int[] {
-                    R.string.usage_type_cpu,
-                    R.string.usage_type_cpu_foreground,
-                    R.string.usage_type_wake_lock,
-                    R.string.usage_type_gps,
-                    R.string.usage_type_wifi_running,
-                    R.string.usage_type_data_recv,
-                    R.string.usage_type_data_send,
-                    R.string.usage_type_radio_active,
-                    R.string.usage_type_data_wifi_recv,
-                    R.string.usage_type_data_wifi_send,
-                    R.string.usage_type_audio,
-                    R.string.usage_type_video,
-                    R.string.usage_type_camera,
-                    R.string.usage_type_flashlight,
-                    R.string.usage_type_computed_power,
-                };
-                values = new double[] {
-                    entry.sipper.cpuTimeMs,
-                    entry.sipper.cpuFgTimeMs,
-                    entry.sipper.wakeLockTimeMs,
-                    entry.sipper.gpsTimeMs,
-                    entry.sipper.wifiRunningTimeMs,
-                    entry.sipper.mobileRxPackets,
-                    entry.sipper.mobileTxPackets,
-                    entry.sipper.mobileActive,
-                    entry.sipper.wifiRxPackets,
-                    entry.sipper.wifiTxPackets,
-                    0,
-                    0,
-                    entry.sipper.cameraTimeMs,
-                    entry.sipper.flashlightTimeMs,
-                    entry.sipper.totalPowerMah,
-                };
-
-                if (entry.sipper.drainType == BatterySipper.DrainType.APP) {
-                    Writer result = new StringWriter();
-                    PrintWriter printWriter = new FastPrintWriter(result, false, 1024);
-                    helper.getStats().dumpLocked(caller, printWriter, "", helper.getStatsType(),
-                            uid.getUid());
-                    printWriter.flush();
-                    args.putString(PowerUsageDetail.EXTRA_REPORT_DETAILS, result.toString());
-
-                    result = new StringWriter();
-                    printWriter = new FastPrintWriter(result, false, 1024);
-                    helper.getStats().dumpCheckinLocked(caller, printWriter, helper.getStatsType(),
-                            uid.getUid());
-                    printWriter.flush();
-                    args.putString(PowerUsageDetail.EXTRA_REPORT_CHECKIN_DETAILS,
-                            result.toString());
-                    if (uid.getUid() != 0) {
-                        userId = UserHandle.getUserId(uid.getUid());
-                    }
-                }
-            }
-            break;
-            case CELL:
-            {
-                types = new int[] {
-                    R.string.usage_type_on_time,
-                    R.string.usage_type_no_coverage,
-                    R.string.usage_type_radio_active,
-                    R.string.usage_type_computed_power,
-                };
-                values = new double[] {
-                    entry.sipper.usageTimeMs,
-                    entry.sipper.noCoveragePercent,
-                    entry.sipper.mobileActive,
-                    entry.sipper.totalPowerMah,
-                };
-            }
-            break;
-            case WIFI:
-            {
-                types = new int[] {
-                    R.string.usage_type_wifi_running,
-                    R.string.usage_type_cpu,
-                    R.string.usage_type_cpu_foreground,
-                    R.string.usage_type_wake_lock,
-                    R.string.usage_type_data_recv,
-                    R.string.usage_type_data_send,
-                    R.string.usage_type_data_wifi_recv,
-                    R.string.usage_type_data_wifi_send,
-                    R.string.usage_type_computed_power,
-                };
-                values = new double[] {
-                    entry.sipper.wifiRunningTimeMs,
-                    entry.sipper.cpuTimeMs,
-                    entry.sipper.cpuFgTimeMs,
-                    entry.sipper.wakeLockTimeMs,
-                    entry.sipper.mobileRxPackets,
-                    entry.sipper.mobileTxPackets,
-                    entry.sipper.wifiRxPackets,
-                    entry.sipper.wifiTxPackets,
-                    entry.sipper.totalPowerMah,
-                };
-            } break;
-            case BLUETOOTH:
-            {
-                types = new int[] {
-                    R.string.usage_type_on_time,
-                    R.string.usage_type_cpu,
-                    R.string.usage_type_cpu_foreground,
-                    R.string.usage_type_wake_lock,
-                    R.string.usage_type_data_recv,
-                    R.string.usage_type_data_send,
-                    R.string.usage_type_data_wifi_recv,
-                    R.string.usage_type_data_wifi_send,
-                    R.string.usage_type_computed_power,
-                };
-                values = new double[] {
-                    entry.sipper.usageTimeMs,
-                    entry.sipper.cpuTimeMs,
-                    entry.sipper.cpuFgTimeMs,
-                    entry.sipper.wakeLockTimeMs,
-                    entry.sipper.mobileRxPackets,
-                    entry.sipper.mobileTxPackets,
-                    entry.sipper.wifiRxPackets,
-                    entry.sipper.wifiTxPackets,
-                    entry.sipper.totalPowerMah,
-                };
-            } break;
-            case UNACCOUNTED:
-            {
-                types = new int[] {
-                    R.string.usage_type_total_battery_capacity,
-                    R.string.usage_type_computed_power,
-                    R.string.usage_type_actual_power,
-                };
-                values = new double[] {
-                    helper.getPowerProfile().getBatteryCapacity(),
-                    helper.getComputedPower(),
-                    helper.getMinDrainedPower(),
-                };
-            } break;
-            case OVERCOUNTED:
-            {
-                types = new int[] {
-                    R.string.usage_type_total_battery_capacity,
-                    R.string.usage_type_computed_power,
-                    R.string.usage_type_actual_power,
-                };
-                values = new double[] {
-                    helper.getPowerProfile().getBatteryCapacity(),
-                    helper.getComputedPower(),
-                    helper.getMaxDrainedPower(),
-                };
-            } break;
-            default:
-            {
-                types = new int[] {
-                    R.string.usage_type_on_time,
-                    R.string.usage_type_computed_power,
-                };
-                values = new double[] {
-                    entry.sipper.usageTimeMs,
-                    entry.sipper.totalPowerMah,
-                };
-            }
-        }
-        args.putIntArray(PowerUsageDetail.EXTRA_DETAIL_TYPES, types);
-        args.putDoubleArray(PowerUsageDetail.EXTRA_DETAIL_VALUES, values);
-
-        caller.startPreferencePanelAsUser(fragment, PowerUsageDetail.class.getName(), args,
-                R.string.details_title, null, new UserHandle(userId));
-    }
-
-    public static final int ACTION_DISPLAY_SETTINGS = 1;
-    public static final int ACTION_WIFI_SETTINGS = 2;
-    public static final int ACTION_BLUETOOTH_SETTINGS = 3;
-    public static final int ACTION_WIRELESS_SETTINGS = 4;
-    public static final int ACTION_APP_DETAILS = 5;
-    public static final int ACTION_LOCATION_SETTINGS = 6;
-    public static final int ACTION_FORCE_STOP = 7;
-    public static final int ACTION_REPORT = 8;
-
-    public static final int USAGE_SINCE_UNPLUGGED = 1;
-    public static final int USAGE_SINCE_RESET = 2;
-
-    public static final String EXTRA_TITLE = "title";
-    public static final String EXTRA_PERCENT = "percent";
-    public static final String EXTRA_GAUGE = "gauge";
-    public static final String EXTRA_UID = "uid";
-    public static final String EXTRA_USAGE_SINCE = "since";
-    public static final String EXTRA_USAGE_DURATION = "duration";
-    public static final String EXTRA_REPORT_DETAILS = "report_details";
-    public static final String EXTRA_REPORT_CHECKIN_DETAILS = "report_checkin_details";
-    public static final String EXTRA_DETAIL_TYPES = "types"; // Array of usage types (cpu, gps, etc)
-    public static final String EXTRA_DETAIL_VALUES = "values"; // Array of doubles
-    public static final String EXTRA_DRAIN_TYPE = "drainType"; // DrainType
-    public static final String EXTRA_ICON_PACKAGE = "iconPackage"; // String
-    public static final String EXTRA_NO_COVERAGE = "noCoverage";
-    public static final String EXTRA_ICON_ID = "iconId"; // Int
-    public static final String EXTRA_SHOW_LOCATION_BUTTON = "showLocationButton";  // Boolean
-
-    private static final String TAG = "PowerUsageDetail";
-
-    private static final String KEY_DETAILS_PARENT = "details_parent";
-    private static final String KEY_CONTROLS_PARENT = "controls_parent";
-    private static final String KEY_MESSAGES_PARENT = "messages_parent";
-    private static final String KEY_PACKAGES_PARENT = "packages_parent";
-    private static final String KEY_TWO_BUTTONS = "two_buttons";
-    private static final String KEY_HIGH_POWER = "high_power";
-
-    private PackageManager mPm;
-    private DevicePolicyManager mDpm;
-    private int[] mTypes;
-    private int mUid;
-    private double[] mValues;
-    private Button mForceStopButton;
-    private Button mReportButton;
-    private BatterySipper.DrainType mDrainType;
-    private double mNoCoverage; // Percentage of time that there was no coverage
-    private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
-
-    private PreferenceCategory mDetailsParent;
-    private PreferenceCategory mControlsParent;
-    private PreferenceCategory mMessagesParent;
-    private PreferenceCategory mPackagesParent;
-
-    private boolean mUsesGps;
-    private boolean mShowLocationButton;
-
-    private String[] mPackages;
-
-    ApplicationInfo mApp;
-    ComponentName mInstaller;
-    private Preference mHighPower;
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        Activity activity = getActivity();
-        mPm = activity.getPackageManager();
-        mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
-
-        mDetailsParent = (PreferenceCategory) findPreference(KEY_DETAILS_PARENT);
-        mControlsParent = (PreferenceCategory) findPreference(KEY_CONTROLS_PARENT);
-        mMessagesParent = (PreferenceCategory) findPreference(KEY_MESSAGES_PARENT);
-        mPackagesParent = (PreferenceCategory) findPreference(KEY_PACKAGES_PARENT);
-
-        mPowerUsageFeatureProvider =
-                FeatureFactory.getFactory(activity).getPowerUsageFeatureProvider(activity);
-
-        createDetails();
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return MetricsEvent.FUELGAUGE_POWER_USAGE_DETAIL;
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        checkForceStop();
-        if (mHighPower != null) {
-            mHighPower.setSummary(HighPowerDetail.getSummary(getActivity(), mApp.packageName));
-        }
-
-        setupHeader();
-    }
-
-    @Override
-    protected String getLogTag() {
-        return TAG;
-    }
-
-    @Override
-    protected int getPreferenceScreenResId() {
-        return R.xml.power_usage_details;
-    }
-
-    @Override
-    protected List<PreferenceController> getPreferenceControllers(Context context) {
-        final List<PreferenceController> controllers = new ArrayList<>();
-        final int uid = getArguments().getInt(EXTRA_UID, 0);
-        controllers.add(new BackgroundActivityPreferenceController(context, uid));
-
-        return controllers;
-    }
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (mHighPower != null) {
-            mHighPower.setSummary(HighPowerDetail.getSummary(getActivity(), mApp.packageName));
-        }
-    }
-
-    private void createDetails() {
-        final Bundle args = getArguments();
-        Context context = getActivity();
-        mUid = args.getInt(EXTRA_UID, 0);
-        mPackages = context.getPackageManager().getPackagesForUid(mUid);
-        mDrainType = (BatterySipper.DrainType) args.getSerializable(EXTRA_DRAIN_TYPE);
-        mNoCoverage = args.getDouble(EXTRA_NO_COVERAGE, 0);
-        mShowLocationButton = args.getBoolean(EXTRA_SHOW_LOCATION_BUTTON);
-
-        mTypes = args.getIntArray(EXTRA_DETAIL_TYPES);
-        mValues = args.getDoubleArray(EXTRA_DETAIL_VALUES);
-
-        LayoutPreference twoButtons = (LayoutPreference) findPreference(KEY_TWO_BUTTONS);
-        mForceStopButton = (Button) twoButtons.findViewById(R.id.left_button);
-        mReportButton = (Button) twoButtons.findViewById(R.id.right_button);
-        mForceStopButton.setEnabled(false);
-
-        if (mUid >= Process.FIRST_APPLICATION_UID) {
-            mForceStopButton.setText(R.string.force_stop);
-            mForceStopButton.setTag(ACTION_FORCE_STOP);
-            mForceStopButton.setOnClickListener(this);
-            mReportButton.setText(com.android.internal.R.string.report);
-            mReportButton.setTag(ACTION_REPORT);
-            mReportButton.setOnClickListener(this);
-
-            if (mPackages != null && mPackages.length > 0) {
-                try {
-                    mApp = context.getPackageManager().getApplicationInfo(
-                            mPackages[0], 0);
-                } catch (NameNotFoundException e) {
-                }
-            } else {
-                Log.d(TAG, "No packages!!");
-            }
-            // check if error reporting is enabled in secure settings
-            int enabled = android.provider.Settings.Global.getInt(context.getContentResolver(),
-                    android.provider.Settings.Global.SEND_ACTION_APP_ERROR, 0);
-            if (enabled != 0) {
-                if (mApp != null) {
-                    mInstaller = ApplicationErrorReport.getErrorReportReceiver(
-                            context, mPackages[0], mApp.flags);
-                }
-                mReportButton.setEnabled(mInstaller != null);
-            } else {
-                removePreference(KEY_TWO_BUTTONS);
-            }
-            if (mApp != null
-                    && PowerWhitelistBackend.getInstance().isWhitelisted(mApp.packageName)) {
-                mHighPower = findPreference(KEY_HIGH_POWER);
-                mHighPower.setOnPreferenceClickListener(new OnPreferenceClickListener() {
-                    @Override
-                    public boolean onPreferenceClick(Preference preference) {
-                        HighPowerDetail.show(PowerUsageDetail.this, mApp.packageName, 0, false);
-                        return true;
-                    }
-                });
-            } else {
-                mControlsParent.removePreference(findPreference(KEY_HIGH_POWER));
-            }
-        } else {
-            removePreference(KEY_TWO_BUTTONS);
-            mControlsParent.removePreference(findPreference(KEY_HIGH_POWER));
-        }
-
-        refreshStats();
-
-        fillDetailsSection();
-        fillPackagesSection(mUid);
-        fillControlsSection(mUid);
-        fillMessagesSection(mUid);
-    }
-
-    private void setupHeader() {
-        final Activity activity = getActivity();
-        final Bundle args = getArguments();
-        final String title = args.getString(EXTRA_TITLE);
-        final int iconId = args.getInt(EXTRA_ICON_ID, 0);
-        String pkg = args.getString(EXTRA_ICON_PACKAGE);
-        Drawable appIcon = null;
-        int uid = -1;
-        final PackageManager pm = activity.getPackageManager();
-
-        if (!TextUtils.isEmpty(pkg)) {
-            try {
-                ApplicationInfo ai = pm.getPackageInfo(pkg, 0).applicationInfo;
-                if (ai != null) {
-                    appIcon = ai.loadIcon(pm);
-                    uid = ai.uid;
-                }
-            } catch (NameNotFoundException nnfe) {
-                // Use default icon
-            }
-        } else if (iconId != 0) {
-            appIcon = activity.getDrawable(iconId);
-        }
-        if (appIcon == null) {
-            appIcon = activity.getPackageManager().getDefaultActivityIcon();
-        }
-
-        if (pkg == null && mPackages != null) {
-            pkg = mPackages[0];
-        }
-        final PreferenceScreen screen = getPreferenceScreen();
-        final Preference appHeaderPref =
-            findPreference(AppHeaderController.PREF_KEY_APP_HEADER);
-        if (appHeaderPref != null) {
-            return;
-        }
-        final Preference pref = FeatureFactory.getFactory(activity)
-            .getApplicationFeatureProvider(activity)
-            .newAppHeaderController(this, null /* appHeader */)
-            .setIcon(appIcon)
-            .setLabel(title)
-            .setPackageName(pkg)
-            .setUid(uid)
-            .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO,
-                AppHeaderController.ActionType.ACTION_NONE)
-            .done(getPrefContext());
-        screen.addPreference(pref);
-    }
-
-    @Override
-    public void onClick(View v) {
-        doAction((Integer) v.getTag());
-    }
-
-    // utility method used to start sub activity
-    private void startApplicationDetailsActivity() {
-        // start new fragment to display extended information
-        Bundle args = new Bundle();
-        args.putString(InstalledAppDetails.ARG_PACKAGE_NAME, mPackages[0]);
-
-        SettingsActivity sa = (SettingsActivity) getActivity();
-        sa.startPreferencePanel(this, InstalledAppDetails.class.getName(), args,
-                R.string.application_info_label, null, null, 0);
-    }
-
-    private void doAction(int action) {
-        SettingsActivity sa = (SettingsActivity)getActivity();
-        switch (action) {
-            case ACTION_DISPLAY_SETTINGS:
-                sa.startPreferencePanel(this, DisplaySettings.class.getName(), null,
-                        R.string.display_settings_title, null, null, 0);
-                break;
-            case ACTION_WIFI_SETTINGS:
-                sa.startPreferencePanel(this, WifiSettings.class.getName(), null,
-                        R.string.wifi_settings, null, null, 0);
-                break;
-            case ACTION_BLUETOOTH_SETTINGS:
-                sa.startPreferencePanel(this, BluetoothSettings.class.getName(), null,
-                        R.string.bluetooth_settings, null, null, 0);
-                break;
-            case ACTION_WIRELESS_SETTINGS:
-                sa.startPreferencePanel(this, NetworkDashboardFragment.class.getName(), null,
-                        R.string.radio_controls_title, null, null, 0);
-                break;
-            case ACTION_APP_DETAILS:
-                startApplicationDetailsActivity();
-                break;
-            case ACTION_LOCATION_SETTINGS:
-                sa.startPreferencePanel(this, LocationSettings.class.getName(), null,
-                        R.string.location_settings_title, null, null, 0);
-                break;
-            case ACTION_FORCE_STOP:
-                killProcesses();
-                break;
-            case ACTION_REPORT:
-                reportBatteryUse();
-                break;
-        }
-    }
-
-    private void fillDetailsSection() {
-        if (mTypes != null && mValues != null) {
-            for (int i = 0; i < mTypes.length; i++) {
-                // Only add an item if the time is greater than zero
-                if (mValues[i] <= 0) continue;
-                final String label = getString(mTypes[i]);
-                String value = null;
-                switch (mTypes[i]) {
-                    case R.string.usage_type_data_recv:
-                    case R.string.usage_type_data_send:
-                    case R.string.usage_type_data_wifi_recv:
-                    case R.string.usage_type_data_wifi_send:
-                        final long packets = (long) (mValues[i]);
-                        value = Long.toString(packets);
-                        break;
-                    case R.string.usage_type_no_coverage:
-                        final int percentage = (int) Math.floor(mValues[i]);
-                        value = Utils.formatPercentage(percentage);
-                        break;
-                    case R.string.usage_type_total_battery_capacity:
-                    case R.string.usage_type_computed_power:
-                    case R.string.usage_type_actual_power:
-                        value = getActivity().getString(R.string.mah, (long)(mValues[i]));
-                        break;
-                    case R.string.usage_type_gps:
-                        mUsesGps = true;
-                        // Fall through
-                    default:
-                        value = Utils.formatElapsedTime(getActivity(), mValues[i], true);
-                }
-                addHorizontalPreference(mDetailsParent, label, value);
-            }
-        }
-    }
-
-    private void addHorizontalPreference(PreferenceCategory parent, CharSequence title,
-            CharSequence summary) {
-        Preference pref = new Preference(getPrefContext());
-        pref.setLayoutResource(R.layout.horizontal_preference);
-        pref.setTitle(title);
-        pref.setSummary(summary);
-        pref.setSelectable(false);
-        parent.addPreference(pref);
-    }
-
-    private void fillControlsSection(int uid) {
-        PackageManager pm = getActivity().getPackageManager();
-        String[] packages = pm.getPackagesForUid(uid);
-        PackageInfo pi = null;
-        try {
-            pi = packages != null ? pm.getPackageInfo(packages[0], 0) : null;
-        } catch (NameNotFoundException nnfe) { /* Nothing */ }
-        ApplicationInfo ai = pi != null? pi.applicationInfo : null;
-
-        boolean removeHeader = true;
-        switch (mDrainType) {
-            case APP:
-                // If it is a Java application and only one package is associated with the Uid
-                if (packages != null && packages.length == 1) {
-                    addControl(R.string.battery_action_app_details,
-                            R.string.battery_sugg_apps_info, ACTION_APP_DETAILS);
-                    removeHeader = false;
-                    // If the application has a settings screen, jump to  that
-                    // TODO:
-                }
-
-                // If power usage detail page is launched from location page, suppress "Location"
-                // button to prevent circular loops.
-                if (mUsesGps && mShowLocationButton
-                        && mPowerUsageFeatureProvider.isLocationSettingEnabled(packages)) {
-                    addControl(R.string.location_settings_title,
-                            R.string.battery_sugg_apps_gps, ACTION_LOCATION_SETTINGS);
-                    removeHeader = false;
-                }
-                break;
-            case SCREEN:
-                addControl(R.string.display_settings,
-                        R.string.battery_sugg_display,
-                        ACTION_DISPLAY_SETTINGS);
-                removeHeader = false;
-                break;
-            case WIFI:
-                addControl(R.string.wifi_settings,
-                        R.string.battery_sugg_wifi,
-                        ACTION_WIFI_SETTINGS);
-                removeHeader = false;
-                break;
-            case BLUETOOTH:
-                addControl(R.string.bluetooth_settings,
-                        R.string.battery_sugg_bluetooth_basic,
-                        ACTION_BLUETOOTH_SETTINGS);
-                removeHeader = false;
-                break;
-            case CELL:
-                if (mNoCoverage > 10) {
-                    addControl(R.string.radio_controls_title,
-                            R.string.battery_sugg_radio,
-                            ACTION_WIRELESS_SETTINGS);
-                    removeHeader = false;
-                }
-                break;
-        }
-        if (removeHeader) {
-            mControlsParent.setTitle(null);
-        }
-    }
-
-    private void addControl(int pageSummary, int actionTitle, final int action) {
-        Preference pref = new Preference(getPrefContext());
-        pref.setTitle(actionTitle);
-        pref.setLayoutResource(R.layout.horizontal_preference);
-        pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
-            @Override
-            public boolean onPreferenceClick(Preference preference) {
-                doAction(action);
-                return true;
-            }
-        });
-        mControlsParent.addPreference(pref);
-    }
-
-    private void fillMessagesSection(int uid) {
-        boolean removeHeader = true;
-        switch (mDrainType) {
-            case UNACCOUNTED:
-                addMessage(R.string.battery_msg_unaccounted);
-                removeHeader = false;
-                break;
-        }
-        if (removeHeader) {
-            mMessagesParent.setTitle(null);
-        }
-    }
-
-    private void addMessage(int message) {
-        addHorizontalPreference(mMessagesParent, getString(message), null);
-    }
-
-    private void removePackagesSection() {
-        getPreferenceScreen().removePreference(mPackagesParent);
-    }
-
-    private void killProcesses() {
-        if (mPackages == null) return;
-        ActivityManager am = (ActivityManager)getActivity().getSystemService(
-                Context.ACTIVITY_SERVICE);
-        final int userId = UserHandle.getUserId(mUid);
-        for (int i = 0; i < mPackages.length; i++) {
-            am.forceStopPackageAsUser(mPackages[i], userId);
-        }
-        checkForceStop();
-    }
-
-    private final BroadcastReceiver mCheckKillProcessesReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            mForceStopButton.setEnabled(getResultCode() != Activity.RESULT_CANCELED);
-        }
-    };
-
-    private void checkForceStop() {
-        if (mPackages == null || mUid < Process.FIRST_APPLICATION_UID) {
-            mForceStopButton.setEnabled(false);
-            return;
-        }
-        for (int i = 0; i < mPackages.length; i++) {
-            if (mDpm.packageHasActiveAdmins(mPackages[i])) {
-                mForceStopButton.setEnabled(false);
-                return;
-            }
-        }
-        for (int i = 0; i < mPackages.length; i++) {
-            try {
-                ApplicationInfo info = mPm.getApplicationInfo(mPackages[i], 0);
-                if ((info.flags&ApplicationInfo.FLAG_STOPPED) == 0) {
-                    mForceStopButton.setEnabled(true);
-                    break;
-                }
-            } catch (PackageManager.NameNotFoundException e) {
-            }
-        }
-        Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
-                Uri.fromParts("package", mPackages[0], null));
-        intent.putExtra(Intent.EXTRA_PACKAGES, mPackages);
-        intent.putExtra(Intent.EXTRA_UID, mUid);
-        intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(mUid));
-        getActivity().sendOrderedBroadcast(intent, null, mCheckKillProcessesReceiver, null,
-                Activity.RESULT_CANCELED, null, null);
-    }
-
-    private void reportBatteryUse() {
-        if (mPackages == null) return;
-
-        ApplicationErrorReport report = new ApplicationErrorReport();
-        report.type = ApplicationErrorReport.TYPE_BATTERY;
-        report.packageName = mPackages[0];
-        report.installerPackageName = mInstaller.getPackageName();
-        report.processName = mPackages[0];
-        report.time = System.currentTimeMillis();
-        report.systemApp = (mApp.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
-
-        final Bundle args = getArguments();
-        ApplicationErrorReport.BatteryInfo batteryInfo = new ApplicationErrorReport.BatteryInfo();
-        batteryInfo.usagePercent = args.getInt(EXTRA_PERCENT, 1);
-        batteryInfo.durationMicros = args.getLong(EXTRA_USAGE_DURATION, 0);
-        batteryInfo.usageDetails = args.getString(EXTRA_REPORT_DETAILS);
-        batteryInfo.checkinDetails = args.getString(EXTRA_REPORT_CHECKIN_DETAILS);
-        report.batteryInfo = batteryInfo;
-
-        Intent result = new Intent(Intent.ACTION_APP_ERROR);
-        result.setComponent(mInstaller);
-        result.putExtra(Intent.EXTRA_BUG_REPORT, report);
-        result.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        startActivity(result);
-    }
-
-    private void fillPackagesSection(int uid) {
-        if (uid < 1) {
-            removePackagesSection();
-            return;
-        }
-        if (mPackages == null || mPackages.length < 2) {
-            removePackagesSection();
-            return;
-        }
-
-        PackageManager pm = getPackageManager();
-        // Convert package names to user-facing labels where possible
-        for (int i = 0; i < mPackages.length; i++) {
-            try {
-                ApplicationInfo ai = pm.getApplicationInfo(mPackages[i], 0);
-                CharSequence label = ai.loadLabel(pm);
-                if (label != null) {
-                    mPackages[i] = label.toString();
-                }
-                addHorizontalPreference(mPackagesParent, mPackages[i], null);
-            } catch (NameNotFoundException e) {
-            }
-        }
-    }
-}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 2c1fd78..b23f9e3 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -110,6 +110,8 @@
     PowerGaugePreference mLastFullChargePref;
     @VisibleForTesting
     PowerUsageFeatureProvider mPowerFeatureProvider;
+    @VisibleForTesting
+    BatteryUtils mBatteryUtils;
 
     private LayoutPreference mBatteryLayoutPref;
     private PreferenceGroup mAppListGroup;
@@ -127,6 +129,8 @@
                 KEY_TIME_SINCE_LAST_FULL_CHARGE);
         mFooterPreferenceMixin.createFooterPreference().setTitle(R.string.battery_footer_summary);
 
+        mBatteryUtils = BatteryUtils.getInstance(getContext());
+
         initFeatureProvider();
     }
 
@@ -494,7 +498,7 @@
                 pref.setOrder(i + 1);
                 pref.setPercent(percentOfTotal);
                 if (sipper.usageTimeMs == 0 && sipper.drainType == DrainType.APP) {
-                    sipper.usageTimeMs = BatteryUtils.getProcessTimeMs(
+                    sipper.usageTimeMs = mBatteryUtils.getProcessTimeMs(
                             BatteryUtils.StatusType.FOREGROUND, sipper.uidObj, mStatsType);
                 }
                 setUsageSummary(pref, usedTime, sipper.usageTimeMs);
@@ -599,6 +603,8 @@
                 || drainType == DrainType.WIFI
                 || drainType == DrainType.SCREEN
                 || drainType == DrainType.BLUETOOTH
+                || drainType == DrainType.UNACCOUNTED
+                || drainType == DrainType.OVERCOUNTED
                 || (sipper.totalPowerMah * SECONDS_IN_HOUR) < MIN_POWER_THRESHOLD_MILLI_AMP
                 || mPowerFeatureProvider.isTypeService(sipper)
                 || mPowerFeatureProvider.isTypeSystem(sipper);
@@ -625,7 +631,11 @@
             final BatterySipper sipper = sippers.get(i);
             if (shouldHideSipper(sipper)) {
                 sippers.remove(i);
-                totalPowerMah += sipper.totalPowerMah;
+                if (sipper.drainType != DrainType.OVERCOUNTED
+                        && sipper.drainType != DrainType.UNACCOUNTED) {
+                    // Don't add it if it is overcounted or unaccounted
+                    totalPowerMah += sipper.totalPowerMah;
+                }
             }
         }
 
diff --git a/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
index a7ebbe1..547ff80 100644
--- a/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
+++ b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
@@ -267,16 +267,20 @@
         }
     }
 
+    public int getSummaryResource() {
+        final boolean enabled = getLockscreenNotificationsEnabled(UserHandle.myUserId());
+        final boolean allowPrivate = !mSecure
+            || getLockscreenAllowPrivateNotifications(UserHandle.myUserId());
+        return !enabled ? R.string.lock_screen_notifications_summary_disable :
+            allowPrivate ? R.string.lock_screen_notifications_summary_show :
+                R.string.lock_screen_notifications_summary_hide;
+    }
+
     private void updateLockscreenNotifications() {
         if (mLockscreen == null) {
             return;
         }
-        final boolean enabled = getLockscreenNotificationsEnabled(UserHandle.myUserId());
-        final boolean allowPrivate = !mSecure
-                || getLockscreenAllowPrivateNotifications(UserHandle.myUserId());
-        mLockscreenSelectedValue = !enabled ? R.string.lock_screen_notifications_summary_disable :
-                allowPrivate ? R.string.lock_screen_notifications_summary_show :
-                        R.string.lock_screen_notifications_summary_hide;
+        mLockscreenSelectedValue = getSummaryResource();
         mLockscreen.setValue(Integer.toString(mLockscreenSelectedValue));
     }
 
diff --git a/src/com/android/settings/search/IndexDatabaseHelper.java b/src/com/android/settings/search/IndexDatabaseHelper.java
index 60378c2..76346ec 100644
--- a/src/com/android/settings/search/IndexDatabaseHelper.java
+++ b/src/com/android/settings/search/IndexDatabaseHelper.java
@@ -245,7 +245,7 @@
         return version;
     }
 
-    public static void clearLocalesIndexed(Context context) {
+    public static void clearCachedIndexed(Context context) {
         context.getSharedPreferences(INDEX, 0).edit().clear().commit();
     }
 
@@ -257,8 +257,16 @@
         return context.getSharedPreferences(INDEX, 0).getBoolean(locale, false);
     }
 
+    public static boolean isBuildIndexed(Context context, String buildNo) {
+        return context.getSharedPreferences(INDEX, 0).getBoolean(buildNo, false);
+    }
+
+    public static void setBuildIndexed(Context context, String buildNo) {
+        context.getSharedPreferences(INDEX, 0).edit().putBoolean(buildNo, true).commit();
+    }
+
     private void dropTables(SQLiteDatabase db) {
-        clearLocalesIndexed(mContext);
+        clearCachedIndexed(mContext);
         db.execSQL("DROP TABLE IF EXISTS " + Tables.TABLE_META_INDEX);
         db.execSQL("DROP TABLE IF EXISTS " + Tables.TABLE_PREFS_INDEX);
         db.execSQL("DROP TABLE IF EXISTS " + Tables.TABLE_SAVED_QUERIES);
diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java
index f8cedc1..f7882ae 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -50,7 +50,6 @@
 import com.android.settings.enterprise.EnterprisePrivacySettings;
 import com.android.settings.fuelgauge.BatterySaverSettings;
 import com.android.settings.fuelgauge.PowerUsageAdvanced;
-import com.android.settings.fuelgauge.PowerUsageDetail;
 import com.android.settings.fuelgauge.PowerUsageSummary;
 import com.android.settings.gestures.AssistGestureSettings;
 import com.android.settings.gestures.DoubleTapPowerSettings;
@@ -126,7 +125,6 @@
         addIndex(StorageSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage);
         addIndex(PowerUsageSummary.class,
                 R.xml.power_usage_summary, R.drawable.ic_settings_battery);
-        addIndex(PowerUsageDetail.class, NO_DATA_RES_ID, R.drawable.ic_settings_battery);
         addIndex(PowerUsageAdvanced.class, NO_DATA_RES_ID, R.drawable.ic_settings_battery);
         addIndex(BatterySaverSettings.class,
                 R.xml.battery_saver_settings, R.drawable.ic_settings_battery);
diff --git a/src/com/android/settings/search2/DatabaseIndexingManager.java b/src/com/android/settings/search2/DatabaseIndexingManager.java
index 1e664ff..533884d 100644
--- a/src/com/android/settings/search2/DatabaseIndexingManager.java
+++ b/src/com/android/settings/search2/DatabaseIndexingManager.java
@@ -29,6 +29,7 @@
 import android.database.sqlite.SQLiteException;
 import android.net.Uri;
 import android.os.AsyncTask;
+import android.os.Build;
 import android.provider.SearchIndexableData;
 import android.provider.SearchIndexableResource;
 import android.provider.SearchIndexablesContract;
@@ -170,7 +171,16 @@
         final List<ResolveInfo> list =
                 mContext.getPackageManager().queryIntentContentProviders(intent, 0);
 
-        final boolean isLocaleIndexed = isLocaleIndexed();
+        final String localeStr = Locale.getDefault().toString();
+        final String fingerprint = Build.FINGERPRINT;
+        final boolean isFullIndex = isFullIndex(localeStr, fingerprint);
+
+        // Drop the database when the locale or build has changed. This eliminates rows which are
+        // dynamically inserted in the old language, or deprecated settings.
+        if (isFullIndex) {
+            final SQLiteDatabase db = getWritableDatabase();
+            IndexDatabaseHelper.getInstance(mContext).reconstruct(db);
+        }
 
         for (final ResolveInfo info : list) {
             if (!DatabaseIndexingUtils.isWellKnownProvider(info, mContext)) {
@@ -179,22 +189,32 @@
             final String authority = info.providerInfo.authority;
             final String packageName = info.providerInfo.packageName;
 
-            if (!isLocaleIndexed) {
+            if (isFullIndex) {
                 addIndexablesFromRemoteProvider(packageName, authority);
             }
             addNonIndexablesKeysFromRemoteProvider(packageName, authority);
         }
 
-        final String localeStr = Locale.getDefault().toString();
-        updateDatabase(isLocaleIndexed, localeStr);
+        updateDatabase(isFullIndex, localeStr);
 
         IndexDatabaseHelper.setLocaleIndexed(mContext, localeStr);
+        IndexDatabaseHelper.setBuildIndexed(mContext, fingerprint);
     }
 
+    /**
+     * Perform a full index on an OTA or when the locale has changed
+     *
+     * @param locale is the default for the device
+     * @param fingerprint id for the current build.
+     * @return true when the locale or build has changed since last index.
+     */
     @VisibleForTesting
-    boolean isLocaleIndexed() {
-        final String locale = Locale.getDefault().toString();
-        return IndexDatabaseHelper.getInstance(mContext).isLocaleAlreadyIndexed(mContext, locale);
+    boolean isFullIndex(String locale, String fingerprint) {
+        final boolean isLocaleIndexed = IndexDatabaseHelper.getInstance(mContext)
+                .isLocaleAlreadyIndexed(mContext, locale);
+        final boolean isBuildIndexed = IndexDatabaseHelper.getInstance(mContext)
+                .isBuildIndexed(mContext, fingerprint);
+        return !isLocaleIndexed || !isBuildIndexed;
     }
 
     /**
@@ -204,11 +224,11 @@
      * Then search results are verified to have the correct value of enabled.
      * Finally, we record that the locale has been indexed.
      *
-     * @param isIncrementalUpdate true when the language has already been indexed.
+     * @param needsReindexing true the database needs to be rebuilt.
      * @param localeStr the default locale for the device.
      */
     @VisibleForTesting
-    void updateDatabase(boolean isIncrementalUpdate, String localeStr) {
+    void updateDatabase(boolean needsReindexing, String localeStr) {
         mIsAvailable.set(false);
         final UpdateData copy;
 
@@ -236,7 +256,7 @@
 
             // Only check for non-indexable key updates after initial index.
             // Enabled state with non-indexable keys is checked when items are first inserted.
-            if (isIncrementalUpdate) {
+            if (!needsReindexing) {
                 updateDataInDatabase(database, nonIndexableKeys);
             }
 
@@ -284,7 +304,7 @@
      * @param database The database to validate.
      * @param nonIndexableKeys A map between package name and the set of non-indexable keys for it.
      */
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    @VisibleForTesting
     void updateDataInDatabase(SQLiteDatabase database,
             Map<String, Set<String>> nonIndexableKeys) {
         final String whereEnabled = ENABLED + " = 1";
@@ -348,7 +368,6 @@
     @VisibleForTesting
     boolean addIndexablesFromRemoteProvider(String packageName, String authority) {
         try {
-
             final Context context = mBaseAuthority.equals(authority) ?
                     mContext : mContext.createPackageContext(packageName, 0);
 
diff --git a/tests/app/src/com/android/settings/DisplaySettingsTest.java b/tests/app/src/com/android/settings/DisplaySettingsTest.java
new file mode 100644
index 0000000..888b7fd
--- /dev/null
+++ b/tests/app/src/com/android/settings/DisplaySettingsTest.java
@@ -0,0 +1,57 @@
+/*
+ * 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;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.matcher.ViewMatchers.withText;
+
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+import android.support.test.uiautomator.UiDevice;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class DisplaySettingsTest {
+
+    private Instrumentation mInstrumentation;
+    private Context mContext;
+    private UiDevice mDevice;
+
+    @Before
+    public void setUp() {
+        mInstrumentation = InstrumentationRegistry.getInstrumentation();
+        mContext = mInstrumentation.getTargetContext();
+        mDevice = UiDevice.getInstance(mInstrumentation);
+    }
+
+    @Test
+    public void launchBrightnessLevel_shouldNotCrash() {
+        mInstrumentation.startActivitySync(
+                new Intent(mContext, DisplaySettings.class));
+        onView(withText(mContext.getString(R.string.brightness))).perform(click());
+        // should not crash
+        mDevice.pressBack(); // dismiss the brightness dialog
+    }
+}
diff --git a/tests/app/src/com/android/settings/fuelgauge/PowerUsageSummaryUiTest.java b/tests/app/src/com/android/settings/fuelgauge/PowerUsageSummaryUiTest.java
new file mode 100644
index 0000000..47e644a
--- /dev/null
+++ b/tests/app/src/com/android/settings/fuelgauge/PowerUsageSummaryUiTest.java
@@ -0,0 +1,71 @@
+/*
+ * 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.fuelgauge;
+
+import static android.support.test.InstrumentationRegistry.getTargetContext;
+import static android.support.test.espresso.Espresso.onData;
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.intent.Intents.intended;
+import static android.support.test.espresso.intent.Intents.intending;
+import static android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent;
+import static android.support.test.espresso.matcher.PreferenceMatchers.withKey;
+import static android.support.test.espresso.matcher.ViewMatchers.isDescendantOfA;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static android.support.test.espresso.matcher.ViewMatchers.withText;
+
+import static org.hamcrest.Matchers.allOf;
+import static org.hamcrest.core.IsAnything.anything;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import com.android.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class PowerUsageSummaryUiTest {
+    private static final String BATTERY_INTENT = "android.intent.action.POWER_USAGE_SUMMARY";
+
+    @Before
+    public void SetUp() {
+        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+        instrumentation.startActivitySync(new Intent(BATTERY_INTENT));
+    }
+
+    @Test
+    public void testClickLastFullCharge_shouldNotCrash() {
+        onView(withText(R.string.battery_last_full_charge)).perform(click());
+    }
+
+    @Test
+    public void testClickScreenUsage_shouldNotCrash() {
+        onView(withText(R.string.device_screen_usage)).perform(click());
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/SecuritySettingsTest.java b/tests/robotests/src/com/android/settings/SecuritySettingsTest.java
index 03a8f94..9bdf502 100644
--- a/tests/robotests/src/com/android/settings/SecuritySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/SecuritySettingsTest.java
@@ -16,14 +16,20 @@
 
 package com.android.settings;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.IContentProvider;
 import android.content.pm.PackageManager;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.Bundle;
 import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceGroup;
+import android.support.v7.preference.PreferenceScreen;
 
+import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.dashboard.SummaryLoader;
+import com.android.settings.notification.LockScreenNotificationPreferenceController;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowSecureSettings;
 import com.android.settingslib.drawer.DashboardCategory;
@@ -39,13 +45,18 @@
 import org.robolectric.annotation.Config;
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
+import org.robolectric.shadows.ShadowApplication;
+import org.robolectric.util.ReflectionHelpers;
 
 import java.util.Map;
+import org.robolectric.util.ReflectionHelpers;
 
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
 import static org.mockito.Matchers.isNull;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
@@ -121,7 +132,6 @@
         verify(mContext).getString(R.string.security_dashboard_summary);
     }
 
-
     @Test
     public void testGetPackageVerifierSummary_nullInput() {
         assertThat(mSummaryProvider.getPackageVerifierSummary(null)).isNull();
@@ -155,4 +165,46 @@
         assertThat(mSummaryProvider.getPackageVerifierSummary(mDashboardCategory))
                 .isEqualTo(MOCK_SUMMARY);
     }
+
+    @Test
+    public void testInitTrustAgentPreference_secure_shouldSetSummaryToNumberOfTrustAgent() {
+        final Preference preference = mock(Preference.class);
+        final PreferenceScreen screen = mock(PreferenceScreen.class);
+        when(screen.findPreference(SecuritySettings.KEY_MANAGE_TRUST_AGENTS))
+                .thenReturn(preference);
+        final LockPatternUtils utils = mock(LockPatternUtils.class);
+        when(utils.isSecure(anyInt())).thenReturn(true);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        final Activity activity = mock(Activity.class);
+        when(activity.getResources()).thenReturn(context.getResources());
+        final SecuritySettings securitySettings = spy(new SecuritySettings());
+        when(securitySettings.getActivity()).thenReturn(activity);
+
+        ReflectionHelpers.setField(securitySettings, "mLockPatternUtils", utils);
+
+        securitySettings.initTrustAgentPreference(screen, 0);
+        verify(preference).setSummary(R.string.manage_trust_agents_summary);
+
+        securitySettings.initTrustAgentPreference(screen, 2);
+        verify(preference).setSummary(context.getResources().getQuantityString(
+            R.plurals.manage_trust_agents_summary_on, 2, 2));
+    }
+
+    @Test
+    public void testSetLockscreenPreferencesSummary_shouldSetSummaryFromLockScreenNotification() {
+        final Preference preference = mock(Preference.class);
+        final PreferenceGroup group = mock(PreferenceGroup.class);
+        when(group.findPreference(SecuritySettings.KEY_LOCKSCREEN_PREFERENCES))
+            .thenReturn(preference);
+        final LockScreenNotificationPreferenceController controller =
+            mock(LockScreenNotificationPreferenceController.class);
+
+        final SecuritySettings securitySettings = new SecuritySettings();
+        ReflectionHelpers.setField(securitySettings,
+            "mLockScreenNotificationPreferenceController", controller);
+
+        when(controller.getSummaryResource()).thenReturn(1234);
+        securitySettings.setLockscreenPreferencesSummary(group);
+        verify(preference).setSummary(1234);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java b/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java
index e8440dd..4cf7e69 100644
--- a/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java
@@ -48,7 +48,7 @@
         final View view = inflater.inflate(mPreference.getLayoutResource(),
                 new LinearLayout(mContext), false);
 
-        mHolder = new PreferenceViewHolder(view);
+        mHolder = PreferenceViewHolder.createInstanceForTests(view);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
index b8f3fc4..bedb0a5 100644
--- a/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
@@ -22,22 +22,30 @@
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 
+import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
+import com.android.settings.applications.defaultapps.DefaultPhonePreferenceController;
+import com.android.settings.applications.defaultapps.DefaultSmsPreferenceController;
+import com.android.settings.dashboard.SummaryLoader;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowApplication;
+import org.robolectric.util.ReflectionHelpers;
 
 import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class AdvancedAppSettingsTest {
 
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private Context mContext;
 
     private AdvancedAppSettings mFragment;
@@ -46,8 +54,9 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
 
+        mContext = RuntimeEnvironment.application;
         mFragment = new AdvancedAppSettings();
-        mFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
+        mFragment.onAttach(mContext);
     }
 
     @Test
@@ -56,4 +65,75 @@
                 R.xml.app_default_settings);
     }
 
+    @Test
+    public void setListening_shouldUpdateSummary() {
+        final SummaryLoader summaryLoader = mock(SummaryLoader.class);
+        final AdvancedAppSettings.SummaryProvider summaryProvider =
+            new AdvancedAppSettings.SummaryProvider(mContext, summaryLoader);
+        final DefaultSmsPreferenceController defaultSms =
+            mock(DefaultSmsPreferenceController.class);
+        final DefaultBrowserPreferenceController defaultBrowser =
+            mock(DefaultBrowserPreferenceController.class);
+        final DefaultPhonePreferenceController defaultPhone =
+            mock(DefaultPhonePreferenceController.class);
+        ReflectionHelpers.setField(summaryProvider, "mDefaultSmsPreferenceController", defaultSms);
+        ReflectionHelpers.setField(
+            summaryProvider, "mDefaultBrowserPreferenceController", defaultBrowser);
+        ReflectionHelpers.setField(
+            summaryProvider, "mDefaultPhonePreferenceController", defaultPhone);
+
+        // all available
+        when(defaultSms.getDefaultAppLabel()).thenReturn("Sms1");
+        when(defaultBrowser.getDefaultAppLabel()).thenReturn("Browser1");
+        when(defaultPhone.getDefaultAppLabel()).thenReturn("Phone1");
+        summaryProvider.setListening(true);
+        verify(summaryLoader).setSummary(summaryProvider, "Sms1, Browser1, Phone1");
+
+        // 2 available
+        when(defaultSms.getDefaultAppLabel()).thenReturn(null);
+        when(defaultBrowser.getDefaultAppLabel()).thenReturn("Browser1");
+        when(defaultPhone.getDefaultAppLabel()).thenReturn("Phone1");
+        summaryProvider.setListening(true);
+        verify(summaryLoader).setSummary(summaryProvider, "Browser1, Phone1");
+
+        when(defaultSms.getDefaultAppLabel()).thenReturn("Sms1");
+        when(defaultBrowser.getDefaultAppLabel()).thenReturn(null);
+        when(defaultPhone.getDefaultAppLabel()).thenReturn("Phone1");
+        summaryProvider.setListening(true);
+        verify(summaryLoader).setSummary(summaryProvider, "Sms1, Phone1");
+
+        when(defaultSms.getDefaultAppLabel()).thenReturn("Sms1");
+        when(defaultBrowser.getDefaultAppLabel()).thenReturn("Browser1");
+        when(defaultPhone.getDefaultAppLabel()).thenReturn(null);
+        summaryProvider.setListening(true);
+        verify(summaryLoader).setSummary(summaryProvider, "Sms1, Browser1");
+
+        // 1 available
+        when(defaultSms.getDefaultAppLabel()).thenReturn(null);
+        when(defaultBrowser.getDefaultAppLabel()).thenReturn("Browser1");
+        when(defaultPhone.getDefaultAppLabel()).thenReturn(null);
+        summaryProvider.setListening(true);
+        verify(summaryLoader).setSummary(summaryProvider, "Browser1");
+
+        when(defaultSms.getDefaultAppLabel()).thenReturn("Sms1");
+        when(defaultBrowser.getDefaultAppLabel()).thenReturn(null);
+        when(defaultPhone.getDefaultAppLabel()).thenReturn(null);
+        summaryProvider.setListening(true);
+        verify(summaryLoader).setSummary(summaryProvider, "Sms1");
+
+        when(defaultSms.getDefaultAppLabel()).thenReturn(null);
+        when(defaultBrowser.getDefaultAppLabel()).thenReturn(null);
+        when(defaultPhone.getDefaultAppLabel()).thenReturn("Phone1");
+        summaryProvider.setListening(true);
+        verify(summaryLoader).setSummary(summaryProvider, "Phone1");
+
+        // None available
+        when(defaultSms.getDefaultAppLabel()).thenReturn(null);
+        when(defaultBrowser.getDefaultAppLabel()).thenReturn(null);
+        when(defaultPhone.getDefaultAppLabel()).thenReturn(null);
+        summaryProvider.setListening(true);
+        verify(summaryLoader, never()).setSummary(summaryProvider, eq(anyString()));
+
+    }
+
 }
diff --git a/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java b/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java
index a33a8c8..5b1019e 100644
--- a/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java
@@ -74,7 +74,7 @@
     ApplicationFeatureProvider mApplicationFeatureProvider;
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private UserManager mUserManager;
-    @Mock
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private SettingsActivity mActivity;
     @Mock
     private DevicePolicyManager mDevicePolicyManager;
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/UsbModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/UsbModePreferenceControllerTest.java
index 8b6e900..4b84b0f 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/UsbModePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/UsbModePreferenceControllerTest.java
@@ -48,62 +48,32 @@
 
     @Test
     public void testGetSummary_chargeDevice() {
-        assertThat(UsbModePreferenceController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[0]))
-                .isEqualTo(R.string.usb_use_charging_only_desc);
+        assertThat(mController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[0]))
+                .isEqualTo(R.string.usb_summary_charging_only);
     }
 
     @Test
     public void testGetSummary_supplyPower() {
-        assertThat(UsbModePreferenceController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[1]))
-                .isEqualTo(R.string.usb_use_power_only_desc);
+        assertThat(mController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[1]))
+                .isEqualTo(R.string.usb_summary_power_only);
     }
 
     @Test
     public void testGetSummary_TransferFiles() {
-        assertThat(UsbModePreferenceController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[2]))
-                .isEqualTo(R.string.usb_use_file_transfers_desc);
+        assertThat(mController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[2]))
+                .isEqualTo(R.string.usb_summary_file_transfers);
     }
 
     @Test
     public void testGetSummary_TransferPhoto() {
-        assertThat(UsbModePreferenceController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[3]))
-                .isEqualTo(R.string.usb_use_photo_transfers_desc);
+        assertThat(mController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[3]))
+                .isEqualTo(R.string.usb_summary_photo_transfers);
     }
 
     @Test
     public void testGetSummary_MIDI() {
-        assertThat(UsbModePreferenceController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[4]))
-                .isEqualTo(R.string.usb_use_MIDI_desc);
-    }
-
-    @Test
-    public void testGetTitle_chargeDevice() {
-        assertThat(UsbModePreferenceController.getTitle(UsbModeChooserActivity.DEFAULT_MODES[0]))
-                .isEqualTo(R.string.usb_use_charging_only);
-    }
-
-    @Test
-    public void testGetTitle_supplyPower() {
-        assertThat(UsbModePreferenceController.getTitle(UsbModeChooserActivity.DEFAULT_MODES[1]))
-                .isEqualTo(R.string.usb_use_power_only);
-    }
-
-    @Test
-    public void testGetTitle_TransferFiles() {
-        assertThat(UsbModePreferenceController.getTitle(UsbModeChooserActivity.DEFAULT_MODES[2]))
-                .isEqualTo(R.string.usb_use_file_transfers);
-    }
-
-    @Test
-    public void testGetTitle_TransferPhoto() {
-        assertThat(UsbModePreferenceController.getTitle(UsbModeChooserActivity.DEFAULT_MODES[3]))
-                .isEqualTo(R.string.usb_use_photo_transfers);
-    }
-
-    @Test
-    public void testGetTitle_MIDI() {
-        assertThat(UsbModePreferenceController.getTitle(UsbModeChooserActivity.DEFAULT_MODES[4]))
-                .isEqualTo(R.string.usb_use_MIDI);
+        assertThat(mController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[4]))
+                .isEqualTo(R.string.usb_summary_MIDI);
     }
 
     @Test
@@ -131,7 +101,7 @@
         mContext.sendStickyBroadcast(intent);
 
         assertThat(preference.getSummary()).isEqualTo(
-                mContext.getString(R.string.usb_use_charging_only));
+                mContext.getString(R.string.usb_summary_charging_only));
     }
 
 }
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/deletionhelper/AutomaticStorageManagerSwitchBarControllerTest.java b/tests/robotests/src/com/android/settings/deletionhelper/AutomaticStorageManagerSwitchBarControllerTest.java
new file mode 100644
index 0000000..b4f5f3d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/deletionhelper/AutomaticStorageManagerSwitchBarControllerTest.java
@@ -0,0 +1,124 @@
+/*
+ * 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.deletionhelper;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.content.Context;
+import android.support.v7.preference.Preference;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.core.instrumentation.MetricsFeatureProvider;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
+import com.android.settings.widget.SwitchBar;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class AutomaticStorageManagerSwitchBarControllerTest {
+    private Context mContext;
+    private SwitchBar mSwitchBar;
+    private MetricsFeatureProvider mMetricsFeatureProvider;
+    private Preference mPreference;
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private FragmentManager mFragmentManager;
+
+    private AutomaticStorageManagerSwitchBarController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = spy(RuntimeEnvironment.application);
+        mSwitchBar = new SwitchBar(mContext);
+
+        Context fakeContextForFakeProvider = mock(Context.class, RETURNS_DEEP_STUBS);
+        FeatureFactory featureFactory = FakeFeatureFactory.getFactory(fakeContextForFakeProvider);
+        mMetricsFeatureProvider = featureFactory.getMetricsFeatureProvider();
+        mPreference = new Preference(mContext);
+
+        mController =
+                new AutomaticStorageManagerSwitchBarController(
+                        mContext,
+                        mSwitchBar,
+                        mMetricsFeatureProvider,
+                        mPreference,
+                        mFragmentManager);
+    }
+
+    @Test
+    public void onSwitchChanged_false_recordsAMetric() {
+        mController.onSwitchChanged(null, false);
+
+        verify(mMetricsFeatureProvider)
+                .action(
+                        eq(mContext),
+                        eq(MetricsProto.MetricsEvent.ACTION_TOGGLE_STORAGE_MANAGER),
+                        eq(false));
+    }
+
+    @Test
+    public void onSwitchChanged_true_recordsAMetric() {
+        mController.onSwitchChanged(null, true);
+
+        verify(mMetricsFeatureProvider)
+                .action(
+                        eq(mContext),
+                        eq(MetricsProto.MetricsEvent.ACTION_TOGGLE_STORAGE_MANAGER),
+                        eq(true));
+    }
+
+    @Test
+    public void onSwitchChanged_showWarningFragmentIfNotEnabledByDefault() {
+        mController.onSwitchChanged(null, true);
+
+        verify(mFragmentManager.beginTransaction())
+                .add(any(Fragment.class), eq(ActivationWarningFragment.TAG));
+    }
+
+    @Config(shadows = {SettingsShadowSystemProperties.class})
+    @Test
+    public void onSwitchChange_doNotShowWarningFragmentIfEnabledByDefault() {
+        SettingsShadowSystemProperties.set("ro.storage_manager.enabled", "true");
+
+        mController.onSwitchChanged(null, true);
+
+        verify(mFragmentManager.beginTransaction(), never())
+                .add(any(Fragment.class), eq(ActivationWarningFragment.TAG));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuControllerTest.java
new file mode 100644
index 0000000..9ac9eb4
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeOptionMenuControllerTest.java
@@ -0,0 +1,116 @@
+/*
+ * 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.deviceinfo;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.os.storage.VolumeInfo;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.applications.PackageManagerWrapper;
+import com.android.settings.testutils.FakeFeatureFactory;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class PrivateVolumeOptionMenuControllerTest {
+    @Mock
+    private MenuItem mMigrateMenuItem;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Menu mMenu;
+    @Mock
+    private MenuInflater mMenuInflater;
+    @Mock
+    private PackageManagerWrapper mPm;
+    @Mock
+    private VolumeInfo mVolumeInfo;
+    @Mock
+    private VolumeInfo mPrimaryInfo;
+
+    private PrivateVolumeOptionMenuController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        when(mVolumeInfo.getType()).thenReturn(VolumeInfo.TYPE_PRIVATE);
+        when(mPrimaryInfo.getType()).thenReturn(VolumeInfo.TYPE_PRIVATE);
+        when(mMenu.findItem(anyInt())).thenReturn(mMigrateMenuItem);
+        when(mMigrateMenuItem.getItemId()).thenReturn(100);
+
+        mController = new PrivateVolumeOptionMenuController(
+                RuntimeEnvironment.application, mPrimaryInfo, mPm);
+    }
+
+    @Test
+    public void testMigrateDataMenuItemIsAdded() {
+        mController.onCreateOptionsMenu(mMenu, mMenuInflater);
+
+        verify(mMenu).add(Menu.NONE, 100, Menu.NONE, R.string.storage_menu_migrate);
+    }
+
+    @Test
+    public void testMigrateDataIsNotVisibleNormally() {
+        when(mPm.getPrimaryStorageCurrentVolume()).thenReturn(mPrimaryInfo);
+
+        mController.onCreateOptionsMenu(mMenu, mMenuInflater);
+        mController.onPrepareOptionsMenu(mMenu);
+
+        verify(mMigrateMenuItem).setVisible(false);
+    }
+
+    @Test
+    public void testMigrateDataIsVisibleWhenExternalVolumeIsPrimary() {
+        when(mPm.getPrimaryStorageCurrentVolume()).thenReturn(mVolumeInfo);
+
+        mController.onCreateOptionsMenu(mMenu, mMenuInflater);
+        mController.onPrepareOptionsMenu(mMenu);
+
+        verify(mMigrateMenuItem).setVisible(true);
+    }
+
+    @Test
+    public void testMigrateDataGoesToMigrateWizard() {
+        when(mPm.getPrimaryStorageCurrentVolume()).thenReturn(mVolumeInfo);
+
+        mController.onCreateOptionsMenu(mMenu, mMenuInflater);
+        mController.onPrepareOptionsMenu(mMenu);
+
+        assertThat(mController.onOptionsItemSelected(mMigrateMenuItem)).isTrue();
+        assertThat(ShadowApplication.getInstance()
+                .getNextStartedActivity().getComponent().getClassName())
+                .isEqualTo(StorageWizardMigrateConfirm.class.getName());
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java
index 9baeda3..b3253f9 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java
@@ -13,12 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License
  */
+
 package com.android.settings.deviceinfo;
 
-import android.os.Bundle;
-import android.os.storage.DiskInfo;
+import static com.google.common.truth.Truth.assertThat;
+
 import android.os.storage.StorageManager;
-import android.os.storage.VolumeInfo;
 import android.provider.SearchIndexableResource;
 
 import com.android.settings.SettingsRobolectricTestRunner;
@@ -36,15 +36,9 @@
 
 import java.util.List;
 
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.when;
-
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class StorageDashboardFragmentTest {
-
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private StorageManager mStorageManager;
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/StorageItemPreferenceTest.java b/tests/robotests/src/com/android/settings/deviceinfo/StorageItemPreferenceTest.java
index f9d26c7..969719f 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/StorageItemPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/StorageItemPreferenceTest.java
@@ -60,7 +60,7 @@
 
     @Test
     public void testProgressBarPercentageSet() {
-        final PreferenceViewHolder holder = new PreferenceViewHolder(
+        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
                 LayoutInflater.from(mContext).inflate(R.layout.storage_item, null));
         final ProgressBar progressBar =
                 (ProgressBar) holder.itemView.findViewById(android.R.id.progress);
@@ -71,4 +71,4 @@
         assertThat(progressBar.getProgress()).isEqualTo(10);
     }
 
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/UsbModeChooserActivityTest.java b/tests/robotests/src/com/android/settings/deviceinfo/UsbModeChooserActivityTest.java
new file mode 100644
index 0000000..d9c474d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/deviceinfo/UsbModeChooserActivityTest.java
@@ -0,0 +1,94 @@
+/*
+ * 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.deviceinfo;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.widget.TextView;
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class UsbModeChooserActivityTest {
+
+    @Mock
+    private TextView mTextView;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test
+    public void updateSummary_chargeDevice_shouldNotSetSummary() {
+        UsbModeChooserActivity.updateSummary(mTextView, UsbModeChooserActivity.DEFAULT_MODES[0]);
+        verify(mTextView, never()).setText(anyInt());
+    }
+
+    @Test
+    public void updateSummary_supplyPower_shouldSetSummary() {
+        UsbModeChooserActivity.updateSummary(mTextView, UsbModeChooserActivity.DEFAULT_MODES[1]);
+        verify(mTextView).setText(R.string.usb_use_power_only_desc);
+    }
+
+    @Test
+    public void updateSummary_transferFiles_shouldNotSetSummary() {
+        UsbModeChooserActivity.updateSummary(mTextView, UsbModeChooserActivity.DEFAULT_MODES[2]);
+        verify(mTextView, never()).setText(anyInt());
+    }
+
+    @Test
+    public void updateSummary_transferPhoto_shouldNotSetSummary() {
+        UsbModeChooserActivity.updateSummary(mTextView, UsbModeChooserActivity.DEFAULT_MODES[3]);
+        verify(mTextView, never()).setText(anyInt());
+    }
+
+    @Test
+    public void updateSummary_MIDI_shouldNotSetSummary() {
+        UsbModeChooserActivity.updateSummary(mTextView, UsbModeChooserActivity.DEFAULT_MODES[4]);
+        verify(mTextView, never()).setText(anyInt());
+    }
+
+    @Test
+    public void getTitle_shouldReturnCorrectTitle() {
+        assertThat(UsbModeChooserActivity.getTitle(UsbModeChooserActivity.DEFAULT_MODES[0]))
+                .isEqualTo(R.string.usb_use_charging_only);
+
+        assertThat(UsbModeChooserActivity.getTitle(UsbModeChooserActivity.DEFAULT_MODES[1]))
+                .isEqualTo(R.string.usb_use_power_only);
+
+        assertThat(UsbModeChooserActivity.getTitle(UsbModeChooserActivity.DEFAULT_MODES[2]))
+                .isEqualTo(R.string.usb_use_file_transfers);
+
+        assertThat(UsbModeChooserActivity.getTitle(UsbModeChooserActivity.DEFAULT_MODES[3]))
+                .isEqualTo(R.string.usb_use_photo_transfers);
+
+        assertThat(UsbModeChooserActivity.getTitle(UsbModeChooserActivity.DEFAULT_MODES[4]))
+                .isEqualTo(R.string.usb_use_MIDI);
+    }
+
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/SecondaryUserControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/SecondaryUserControllerTest.java
index 16bf1ae..c55ba36 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/SecondaryUserControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/SecondaryUserControllerTest.java
@@ -19,12 +19,14 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
 import android.content.pm.UserInfo;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.Drawable;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceGroup;
 import android.support.v7.preference.PreferenceScreen;
@@ -34,7 +36,9 @@
 import com.android.settings.TestConfig;
 import com.android.settings.applications.UserManagerWrapper;
 import com.android.settings.core.PreferenceController;
+import com.android.settingslib.R;
 import com.android.settingslib.applications.StorageStatsSource;
+import com.android.settingslib.drawable.UserIconDrawable;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -187,4 +191,24 @@
         // We should have the NoSecondaryUserController.
         assertThat(controllers.get(0) instanceof SecondaryUserController).isFalse();
     }
+
+    @Test
+    public void iconCallbackChangesPreferenceIcon() throws Exception {
+        SparseArray<Drawable> icons = new SparseArray<>();
+        Bitmap userBitmap =
+                BitmapFactory.decodeResource(
+                        RuntimeEnvironment.application.getResources(), R.drawable.home);
+        UserIconDrawable drawable = new UserIconDrawable(100 /* size */).setIcon(userBitmap).bake();
+        icons.put(10, drawable);
+        mPrimaryUser.name = TEST_NAME;
+        mPrimaryUser.id = 10;
+        mController.displayPreference(mScreen);
+
+        mController.handleUserIcons(icons);
+
+        final ArgumentCaptor<Preference> argumentCaptor = ArgumentCaptor.forClass(Preference.class);
+        verify(mGroup).addPreference(argumentCaptor.capture());
+        Preference preference = argumentCaptor.getValue();
+        assertThat(preference.getIcon()).isEqualTo(drawable);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreferenceControllerTest.java
index 444a0d1..6492f67 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreferenceControllerTest.java
@@ -79,7 +79,7 @@
         final View view =
                 inflater.inflate(
                         mPreference.getLayoutResource(), new LinearLayout(mContext), false);
-        mHolder = new PreferenceViewHolder(view);
+        mHolder = PreferenceViewHolder.createInstanceForTests(view);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/UserProfileControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/UserProfileControllerTest.java
index ed49da4..0c3fc47 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/UserProfileControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/UserProfileControllerTest.java
@@ -18,7 +18,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -26,6 +25,9 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.UserInfo;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.Drawable;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
 import android.util.SparseArray;
@@ -36,7 +38,9 @@
 import com.android.settings.TestConfig;
 import com.android.settings.applications.UserManagerWrapper;
 import com.android.settings.deviceinfo.StorageProfileFragment;
+import com.android.settingslib.R;
 import com.android.settingslib.applications.StorageStatsSource;
+import com.android.settingslib.drawable.UserIconDrawable;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -66,16 +70,15 @@
         MockitoAnnotations.initMocks(this);
         mContext = spy(RuntimeEnvironment.application);
         mPrimaryProfile = new UserInfo();
-        mController = new UserProfileController(mContext, mPrimaryProfile, 0);
+        mController = new UserProfileController(mContext, mPrimaryProfile, mUserManager, 0);
         when(mScreen.getContext()).thenReturn(mContext);
+        mPrimaryProfile.name = TEST_NAME;
+        mPrimaryProfile.id = 10;
+        mController.displayPreference(mScreen);
     }
 
     @Test
     public void controllerAddsPrimaryProfilePreference() throws Exception {
-        mPrimaryProfile.name = TEST_NAME;
-        mPrimaryProfile.id = 10;
-        mController.displayPreference(mScreen);
-
         final ArgumentCaptor<Preference> argumentCaptor = ArgumentCaptor.forClass(Preference.class);
         verify(mScreen).addPreference(argumentCaptor.capture());
         Preference preference = argumentCaptor.getValue();
@@ -86,9 +89,6 @@
 
     @Test
     public void tappingProfilePreferenceSendsToStorageProfileFragment() throws Exception {
-        mPrimaryProfile.name = TEST_NAME;
-        mPrimaryProfile.id = 10;
-        mController.displayPreference(mScreen);
 
         final ArgumentCaptor<Preference> argumentCaptor = ArgumentCaptor.forClass(Preference.class);
         verify(mScreen).addPreference(argumentCaptor.capture());
@@ -105,9 +105,6 @@
 
     @Test
     public void acceptingResultUpdatesPreferenceSize() throws Exception {
-        mPrimaryProfile.name = TEST_NAME;
-        mPrimaryProfile.id = 10;
-        mController.displayPreference(mScreen);
         SparseArray<StorageAsyncLoader.AppsStorageResult> result = new SparseArray<>();
         StorageAsyncLoader.AppsStorageResult userResult =
                 new StorageAsyncLoader.AppsStorageResult();
@@ -121,4 +118,21 @@
 
         assertThat(preference.getSummary()).isEqualTo("99.00B");
     }
+
+    @Test
+    public void iconCallbackChangesPreferenceIcon() throws Exception {
+        SparseArray<Drawable> icons = new SparseArray<>();
+        Bitmap userBitmap =
+                BitmapFactory.decodeResource(
+                        RuntimeEnvironment.application.getResources(), R.drawable.home);
+        UserIconDrawable drawable = new UserIconDrawable(100 /* size */).setIcon(userBitmap).bake();
+        icons.put(10, drawable);
+
+        mController.handleUserIcons(icons);
+
+        final ArgumentCaptor<Preference> argumentCaptor = ArgumentCaptor.forClass(Preference.class);
+        verify(mScreen).addPreference(argumentCaptor.capture());
+        Preference preference = argumentCaptor.getValue();
+        assertThat(preference.getIcon()).isEqualTo(drawable);
+    }
 }
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
index 8b5ce19..03892a3 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
@@ -21,6 +21,7 @@
 import android.app.Fragment;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
 import android.os.BatteryStats;
 import android.os.Bundle;
@@ -96,7 +97,8 @@
     private BatteryStatsHelper mBatteryStatsHelper;
     @Mock
     private BatteryStats.Uid mUid;
-    private Bundle mTestBundle;
+    @Mock
+    private PackageManager mPackageManager;
     private AdvancedPowerUsageDetail mFragment;
     private FakeFeatureFactory mFeatureFactory;
     private SettingsActivity mTestActivity;
@@ -141,6 +143,7 @@
         mAppEntry.info = mock(ApplicationInfo.class);
 
         mTestActivity = spy(new SettingsActivity());
+        doReturn(mPackageManager).when(mTestActivity).getPackageManager();
 
         final ArgumentCaptor<Bundle> captor = ArgumentCaptor.forClass(Bundle.class);
 
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistoryPreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistoryPreferenceTest.java
index 471f9ea..221408d 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistoryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHistoryPreferenceTest.java
@@ -73,7 +73,7 @@
 
         mBatteryHistoryPreference = new BatteryHistoryPreference(context, null);
         mBatteryHistoryPreference.mBatteryInfo = mBatteryInfo;
-        mViewHolder = spy(new PreferenceViewHolder(itemView));
+        mViewHolder = spy(PreferenceViewHolder.createInstanceForTests(itemView));
         when(mViewHolder.findViewById(R.id.battery_usage)).thenReturn(mUsageView);
         when(mViewHolder.findViewById(R.id.charge)).thenReturn(mTextView);
         when(mUsageView.findViewById(anyInt())).thenReturn(mLabelView);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
index 672cc90..3699147 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
@@ -25,6 +25,7 @@
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
 import static android.os.BatteryStats.Uid.PROCESS_STATE_BACKGROUND;
@@ -56,7 +57,8 @@
     private static final long TIME_EXPECTED_ALL = 15000;
 
     @Mock
-    BatteryStats.Uid mUid;
+    private BatteryStats.Uid mUid;
+    private BatteryUtils mBatteryUtils;
 
     @Before
     public void setUp() {
@@ -72,11 +74,13 @@
                 anyLong(), anyInt());
         doReturn(TIME_STATE_BACKGROUND).when(mUid).getProcessStateTime(eq(PROCESS_STATE_BACKGROUND),
                 anyLong(), anyInt());
+
+        mBatteryUtils = BatteryUtils.getInstance(RuntimeEnvironment.application);
     }
 
     @Test
     public void testGetProcessTimeMs_typeForeground_timeCorrect() {
-        final long time = BatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.FOREGROUND, mUid,
+        final long time = mBatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.FOREGROUND, mUid,
                 BatteryStats.STATS_SINCE_CHARGED);
 
         assertThat(time).isEqualTo(TIME_EXPECTED_FOREGROUND);
@@ -84,7 +88,7 @@
 
     @Test
     public void testGetProcessTimeMs_typeBackground_timeCorrect() {
-        final long time = BatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.BACKGROUND, mUid,
+        final long time = mBatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.BACKGROUND, mUid,
                 BatteryStats.STATS_SINCE_CHARGED);
 
         assertThat(time).isEqualTo(TIME_EXPECTED_BACKGROUND);
@@ -92,7 +96,7 @@
 
     @Test
     public void testGetProcessTimeMs_typeAll_timeCorrect() {
-        final long time = BatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.ALL, mUid,
+        final long time = mBatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.ALL, mUid,
                 BatteryStats.STATS_SINCE_CHARGED);
 
         assertThat(time).isEqualTo(TIME_EXPECTED_ALL);
@@ -100,7 +104,7 @@
 
     @Test
     public void testGetProcessTimeMs_uidNull_returnZero() {
-        final long time = BatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.ALL, null,
+        final long time = mBatteryUtils.getProcessTimeMs(BatteryUtils.StatusType.ALL, null,
                 BatteryStats.STATS_SINCE_CHARGED);
 
         assertThat(time).isEqualTo(0);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java
index 6ac6500..4216d57 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java
@@ -207,7 +207,7 @@
 
         assertThat(usageTypeSet).asList().containsExactly(UsageType.APP, UsageType.WIFI,
                 UsageType.CELL, UsageType.BLUETOOTH, UsageType.IDLE, UsageType.SERVICE,
-                UsageType.USER, UsageType.SYSTEM, UsageType.UNACCOUNTED);
+                UsageType.USER, UsageType.SYSTEM, UsageType.UNACCOUNTED, UsageType.OVERCOUNTED);
     }
 
     @Test
@@ -223,4 +223,27 @@
             assertThat(dataList.get(i - 1).totalPowerMah).isAtLeast(dataList.get(i).totalPowerMah);
         }
     }
+
+    @Test
+    public void testShouldHide_typeUnAccounted_returnTrue() {
+        mPowerUsageData.usageType = UsageType.UNACCOUNTED;
+
+        assertThat(mPowerUsageAdvanced.shouldHide(mPowerUsageData)).isTrue();
+    }
+
+
+    @Test
+    public void testShouldHide_typeOverCounted_returnTrue() {
+        mPowerUsageData.usageType = UsageType.OVERCOUNTED;
+
+        assertThat(mPowerUsageAdvanced.shouldHide(mPowerUsageData)).isTrue();
+    }
+
+
+    @Test
+    public void testShouldHide_typeNormal_returnFalse() {
+        mPowerUsageData.usageType = UsageType.APP;
+
+        assertThat(mPowerUsageAdvanced.shouldHide(mPowerUsageData)).isFalse();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
index 5f2d54f..7f59b18 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
@@ -90,6 +90,7 @@
     private static final double TOTAL_POWER = 200;
     private static final double BATTERY_SCREEN_USAGE = 300;
     private static final double BATTERY_SYSTEM_USAGE = 600;
+    private static final double BATTERY_OVERCOUNTED_USAGE = 500;
     private static final double PRECISION = 0.001;
     private static final double POWER_USAGE_PERCENTAGE = 50;
     private static final Intent ADDITIONAL_BATTERY_INFO_INTENT =
@@ -112,6 +113,8 @@
     @Mock
     private BatterySipper mScreenBatterySipper;
     @Mock
+    private BatterySipper mOvercountedBatterySipper;
+    @Mock
     private BatterySipper mSystemBatterySipper;
     @Mock
     private BatterySipper mCellBatterySipper;
@@ -188,6 +191,9 @@
         mSystemBatterySipper.totalPowerMah = BATTERY_SYSTEM_USAGE;
         when(mSystemBatterySipper.getUid()).thenReturn(Process.SYSTEM_UID);
 
+        mOvercountedBatterySipper.drainType = BatterySipper.DrainType.OVERCOUNTED;
+        mOvercountedBatterySipper.totalPowerMah = BATTERY_OVERCOUNTED_USAGE;
+
         mUsageList = new ArrayList<>();
         mUsageList.add(mNormalBatterySipper);
         mUsageList.add(mScreenBatterySipper);
@@ -303,6 +309,7 @@
         sippers.add(mNormalBatterySipper);
         sippers.add(mScreenBatterySipper);
         sippers.add(mSystemBatterySipper);
+        sippers.add(mOvercountedBatterySipper);
         when(mFeatureFactory.powerUsageFeatureProvider.isTypeSystem(mSystemBatterySipper))
                 .thenReturn(true);
 
@@ -318,6 +325,18 @@
     }
 
     @Test
+    public void testShouldHideSipper_TypeUnAccounted_ReturnTrue() {
+        mNormalBatterySipper.drainType = BatterySipper.DrainType.UNACCOUNTED;
+        assertThat(mFragment.shouldHideSipper(mNormalBatterySipper)).isTrue();
+    }
+
+    @Test
+    public void testShouldHideSipper_TypeOverCounted_ReturnTrue() {
+        mNormalBatterySipper.drainType = BatterySipper.DrainType.OVERCOUNTED;
+        assertThat(mFragment.shouldHideSipper(mNormalBatterySipper)).isTrue();
+    }
+
+    @Test
     public void testShouldHideSipper_typeWifi_returnTrue() {
         mNormalBatterySipper.drainType = BatterySipper.DrainType.WIFI;
         assertThat(mFragment.shouldHideSipper(mNormalBatterySipper)).isTrue();
diff --git a/tests/robotests/src/com/android/settings/search2/DatabaseIndexingManagerTest.java b/tests/robotests/src/com/android/settings/search2/DatabaseIndexingManagerTest.java
index 327b910..aa4e4f9 100644
--- a/tests/robotests/src/com/android/settings/search2/DatabaseIndexingManagerTest.java
+++ b/tests/robotests/src/com/android/settings/search2/DatabaseIndexingManagerTest.java
@@ -30,6 +30,8 @@
 import android.database.MatrixCursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.net.Uri;
+import android.os.Build;
+import android.provider.SearchIndexableData;
 import android.provider.SearchIndexableResource;
 import android.provider.SearchIndexablesContract;
 import android.util.ArrayMap;
@@ -74,7 +76,7 @@
 
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
-        shadows={ShadowRunnableAsyncTask.class})
+        shadows = {ShadowRunnableAsyncTask.class})
 public class DatabaseIndexingManagerTest {
     private final String localeStr = "en_US";
 
@@ -122,7 +124,7 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mContext = spy(RuntimeEnvironment.application);
-        mManager = spy(new DatabaseIndexingManager(mContext,"com.android.settings"));
+        mManager = spy(new DatabaseIndexingManager(mContext, PACKAGE_ONE));
         mDb = IndexDatabaseHelper.getInstance(mContext).getWritableDatabase();
 
         doReturn(mPackageManager).when(mContext).getPackageManager();
@@ -671,42 +673,95 @@
     // Test new public indexing flow
 
     @Test
-    @Config(shadows= {
-            ShadowDatabaseIndexingUtils.class,
-    })
+    @Config(shadows = {ShadowDatabaseIndexingUtils.class,})
     public void testPerformIndexing_fullIndex_getsDataFromProviders() {
         DummyProvider provider = new DummyProvider();
         provider.onCreate();
-        ShadowContentResolver.registerProvider(
-                AUTHORITY_ONE, provider
-        );
+        ShadowContentResolver.registerProvider(AUTHORITY_ONE, provider);
 
         // Test that Indexables are added for Full indexing
         when(mPackageManager.queryIntentContentProviders(any(Intent.class), anyInt()))
                 .thenReturn(getDummyResolveInfo());
 
         DatabaseIndexingManager manager =
-                spy(new DatabaseIndexingManager(mContext, "com.android.settings"));
-        doReturn(false).when(manager).isLocaleIndexed();
+                spy(new DatabaseIndexingManager(mContext, PACKAGE_ONE));
+        doReturn(true).when(manager).isFullIndex(anyString(), anyString());
 
         manager.performIndexing();
 
-        verify(manager).updateDatabase(false, Locale.getDefault().toString());
-
-        Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null);
-        cursor.moveToPosition(0);
-
-        // Data Title
-        assertThat(cursor.getString(2)).isEqualTo(TITLE_ONE);
+        verify(manager).addIndexablesFromRemoteProvider(PACKAGE_ONE, AUTHORITY_ONE);
+        verify(manager).updateDatabase(true /* isFullIndex */, Locale.getDefault().toString());
     }
 
     @Test
-    @Config(shadows= {
-            ShadowDatabaseIndexingUtils.class,
-    })
+    @Config(shadows = {ShadowDatabaseIndexingUtils.class,})
     public void testPerformIndexing_incrementalIndex_noDataAdded() {
         DummyProvider provider = new DummyProvider();
         provider.onCreate();
+        ShadowContentResolver.registerProvider(AUTHORITY_ONE, provider);
+
+        // Test that Indexables are added for Full indexing
+        when(mPackageManager.queryIntentContentProviders(any(Intent.class), anyInt()))
+                .thenReturn(getDummyResolveInfo());
+
+        DatabaseIndexingManager manager =
+                spy(new DatabaseIndexingManager(mContext, PACKAGE_ONE));
+        doReturn(false).when(manager).isFullIndex(anyString(), anyString());
+
+        manager.mDataToProcess.dataToUpdate.clear();
+
+        manager.performIndexing();
+
+        verify(manager, times(0)).addDataToDatabase(any(SQLiteDatabase.class), anyString(),
+                anyList(), anyMap());
+        verify(manager, times(0)).addIndexablesFromRemoteProvider(PACKAGE_ONE, AUTHORITY_ONE);
+        verify(manager).updateDataInDatabase(any(SQLiteDatabase.class), anyMap());
+    }
+
+    @Test
+    @Config(shadows = {ShadowDatabaseIndexingUtils.class,})
+    public void testPerformIndexing_localeChanged_databaseDropped() {
+        DummyProvider provider = new DummyProvider();
+        provider.onCreate();
+        ShadowContentResolver.registerProvider(AUTHORITY_ONE, provider);
+
+        // Test that Indexables are added for Full indexing
+        when(mPackageManager.queryIntentContentProviders(any(Intent.class), anyInt()))
+                .thenReturn(getDummyResolveInfo());
+
+        // Initialize the Manager
+        DatabaseIndexingManager manager =
+                spy(new DatabaseIndexingManager(mContext, PACKAGE_ONE));
+        doReturn(true).when(manager).isFullIndex(anyString(), anyString());
+
+        // Insert data point which will be dropped
+        final String oldTitle = "This is French";
+        insertSpecialCase(oldTitle, true, "key");
+
+        // Add a data point to be added by the indexing
+        SearchIndexableRaw raw = new SearchIndexableRaw(mContext);
+        final String newTitle = "This is English";
+        raw.title = newTitle;
+        manager.mDataToProcess.dataToUpdate.add(raw);
+
+        manager.performIndexing();
+
+        // Assert that the New Title is inserted
+        final Cursor newCursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE data_title = '" +
+                newTitle + "'", null);
+        assertThat(newCursor.getCount()).isEqualTo(1);
+
+        // Assert that the Old Title is no longer in the database, since it was dropped
+        final Cursor oldCursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE data_title = '" +
+                oldTitle + "'", null);
+        assertThat(oldCursor.getCount()).isEqualTo(0);
+    }
+
+    @Test
+    @Config(shadows = {ShadowDatabaseIndexingUtils.class,})
+    public void testPerformIndexing_onOta_FullIndex() {
+        DummyProvider provider = new DummyProvider();
+        provider.onCreate();
         ShadowContentResolver.registerProvider(
                 AUTHORITY_ONE, provider
         );
@@ -716,19 +771,40 @@
                 .thenReturn(getDummyResolveInfo());
 
         DatabaseIndexingManager manager =
-                spy(new DatabaseIndexingManager(mContext, "com.android.settings"));
-        doReturn(true).when(manager).isLocaleIndexed();
+                spy(new DatabaseIndexingManager(mContext, PACKAGE_ONE));
+        doReturn(true).when(manager).isFullIndex(anyString(), anyString());
 
         manager.performIndexing();
 
-        final Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null);
+        verify(manager).updateDatabase(true /* isFullIndex */, Locale.getDefault().toString());
+    }
 
-        assertThat(cursor.getCount()).isEqualTo(0);
+    @Test
+    @Config(shadows = {ShadowDatabaseIndexingUtils.class,})
+    public void testPerformIndexing_onOta_buildNumberIsCached() {
+        DummyProvider provider = new DummyProvider();
+        provider.onCreate();
+        ShadowContentResolver.registerProvider(
+                AUTHORITY_ONE, provider
+        );
+
+        // Test that Indexables are added for Full indexing
+        when(mPackageManager.queryIntentContentProviders(any(Intent.class), anyInt()))
+                .thenReturn(getDummyResolveInfo());
+
+        DatabaseIndexingManager manager =
+                spy(new DatabaseIndexingManager(mContext, PACKAGE_ONE));
+        doReturn(true).when(manager).isFullIndex(anyString(), anyString());
+
+        manager.performIndexing();
+
+        assertThat(IndexDatabaseHelper.getInstance(mContext).isBuildIndexed(mContext,
+                Build.FINGERPRINT)).isTrue();
     }
 
     @Test
     public void testFullUpdatedDatabase_noData_addDataToDatabaseNotCalled() {
-        mManager.updateDatabase(false, localeStr);
+        mManager.updateDatabase(true /* isFullIndex */, localeStr);
         mManager.mDataToProcess.dataToUpdate.clear();
         verify(mManager, times(0)).addDataToDatabase(any(SQLiteDatabase.class), anyString(),
                 anyList(), anyMap());
@@ -736,13 +812,13 @@
 
     @Test
     public void testFullUpdatedDatabase_updatedDataInDatabaseNotCalled() {
-        mManager.updateDatabase(false, localeStr);
+        mManager.updateDatabase(true /* isFullIndex */, localeStr);
         verify(mManager, times(0)).updateDataInDatabase(any(SQLiteDatabase.class), anyMap());
     }
 
     @Test
     public void testLocaleUpdated_afterIndexing_localeNotAdded() {
-        mManager.updateDatabase(false, localeStr);
+        mManager.updateDatabase(true /* isFullIndex */, localeStr);
         assertThat(IndexDatabaseHelper.getInstance(mContext)
                 .isLocaleAlreadyIndexed(mContext, localeStr)).isFalse();
     }
@@ -758,7 +834,7 @@
     public void testUpdateDatabase_newEligibleData_addedToDatabase() {
         // Test that addDataToDatabase is called when dataToUpdate is non-empty
         mManager.mDataToProcess.dataToUpdate.add(getFakeRaw());
-        mManager.updateDatabase(false, localeStr);
+        mManager.updateDatabase(true /* isFullIndex */, localeStr);
 
         Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null);
         cursor.moveToPosition(0);
diff --git a/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java b/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java
index 3780d35..ad035bd 100644
--- a/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java
+++ b/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java
@@ -54,12 +54,6 @@
   }
 
   @Test
-  public void nightDisplaySettings_isValid() {
-    assertSuggestionEquals("Settings$NightDisplaySettingsActivity",
-        R.string.night_display_suggestion_title, R.string.night_display_suggestion_summary);
-  }
-
-  @Test
   public void fingerprintSuggestion_isValid() {
     assertSuggestionEquals("com.android.settings.Settings$FingerprintSuggestionActivity",
         R.string.suggestion_additional_fingerprints,
diff --git a/tests/robotests/src/com/android/settings/widget/FooterPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/FooterPreferenceTest.java
index 8dbcc20..885ac68 100644
--- a/tests/robotests/src/com/android/settings/widget/FooterPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/widget/FooterPreferenceTest.java
@@ -56,7 +56,7 @@
     @Test
     public void bindPreference_shouldLinkifyContent() {
         final FooterPreference preference = new FooterPreference(mContext);
-        final PreferenceViewHolder holder = new PreferenceViewHolder(
+        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
                 LayoutInflater.from(mContext).inflate(R.layout.preference_footer, null));
 
         preference.onBindViewHolder(holder);
diff --git a/tests/robotests/src/com/android/settings/widget/MasterSwitchPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/MasterSwitchPreferenceTest.java
index 3936d14..e4d303c 100644
--- a/tests/robotests/src/com/android/settings/widget/MasterSwitchPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/widget/MasterSwitchPreferenceTest.java
@@ -61,8 +61,9 @@
     @Test
     public void setChecked_shouldUpdateButtonCheckedState() {
         final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
-        final PreferenceViewHolder holder = new PreferenceViewHolder(LayoutInflater.from(mContext)
-                .inflate(R.layout.preference_widget_master_switch, null));
+        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
+                LayoutInflater.from(mContext).inflate(
+                  R.layout.preference_widget_master_switch, null));
         final Switch toggle = (Switch) holder.findViewById(R.id.switchWidget);
         preference.onBindViewHolder(holder);
 
@@ -76,8 +77,9 @@
     @Test
     public void setSwitchEnabled_shouldUpdateButtonEnabledState() {
         final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
-        final PreferenceViewHolder holder = new PreferenceViewHolder(LayoutInflater.from(mContext)
-                .inflate(R.layout.preference_widget_master_switch, null));
+        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
+                LayoutInflater.from(mContext).inflate(
+                  R.layout.preference_widget_master_switch, null));
         final Switch toggle = (Switch) holder.findViewById(R.id.switchWidget);
         preference.onBindViewHolder(holder);
 
@@ -92,7 +94,7 @@
     public void clickWidgetView_shouldToggleButton() {
         final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
         final LayoutInflater inflater = LayoutInflater.from(mContext);
-        final PreferenceViewHolder holder = new PreferenceViewHolder(
+        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
                 inflater.inflate(R.layout.preference_two_target, null));
         final LinearLayout widgetView = holder.itemView.findViewById(android.R.id.widget_frame);
         inflater.inflate(R.layout.preference_widget_master_switch, widgetView, true);
@@ -109,7 +111,7 @@
     @Test
     public void clickWidgetView_shouldNotifyPreferenceChanged() {
         final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
-        final PreferenceViewHolder holder = new PreferenceViewHolder(
+        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
                 LayoutInflater.from(mContext).inflate(R.layout.preference_two_target, null));
         final View widgetView = holder.findViewById(android.R.id.widget_frame);
         final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
@@ -128,8 +130,9 @@
     @Test
     public void setDisabledByAdmin_hasEnforcedAdmin_shouldDisableButton() {
         final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
-        final PreferenceViewHolder holder = new PreferenceViewHolder(LayoutInflater.from(mContext)
-                .inflate(R.layout.preference_widget_master_switch, null));
+        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
+                LayoutInflater.from(mContext)
+                  .inflate(R.layout.preference_widget_master_switch, null));
         final Switch toggle = (Switch) holder.findViewById(R.id.switchWidget);
         toggle.setEnabled(true);
         preference.onBindViewHolder(holder);
@@ -141,8 +144,9 @@
     @Test
     public void setDisabledByAdmin_noEnforcedAdmin_shouldEnableButton() {
         final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
-        final PreferenceViewHolder holder = new PreferenceViewHolder(LayoutInflater.from(mContext)
-                .inflate(R.layout.preference_widget_master_switch, null));
+        final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
+                LayoutInflater.from(mContext)
+                  .inflate(R.layout.preference_widget_master_switch, null));
         final Switch toggle = (Switch) holder.findViewById(R.id.switchWidget);
         toggle.setEnabled(false);
         preference.onBindViewHolder(holder);
