[automerger skipped] Merge "Pass --legacy to aapt2 compile for DownloadProvider" am: eda6814cc2 am: a7c1ef78f5 -s ours am: 4e1fc23547 -s ours
am: 17b8f4f1ad -s ours
am skip reason: change_id Ib887cf802f411e7ebef119f39a7faedadc6a2f6f with SHA1 f339296414 is in history

Change-Id: Ie69fcff2caf9239acb642727e66ecfa914df9142
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 55a8b3d..80fde81 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -19,17 +19,17 @@
     <string name="app_label" msgid="3658948994665187911">"Deskargen kudeatzailea"</string>
     <string name="storage_description" msgid="7982444311558023664">"Deskargak"</string>
     <string name="permlab_downloadManager" msgid="7779544811202855500">"Atzitu deskargen kudeatzailea."</string>
-    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Deskargen kudeatzailea atzitzea eta fitxategiak deskargatzeko hori erabiltzea baimentzen die aplikazioei. Aplikazio gaiztoek deskargak eteteko eta informazio pribatua atzitzeko erabil dezakete hori."</string>
+    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Deskargen kudeatzailea atzitzea eta fitxategiak deskargatzeko hori erabiltzeko baimena ematen die aplikazioei. Aplikazio gaiztoek deskargak eteteko eta informazio pribatua atzitzeko erabil dezakete hori."</string>
     <string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"Deskargen kudeatzailearen eginbide aurreratuak."</string>
-    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Deskargen kudeatzailearen eginbide aurreratuak atzitzea baimentzen die aplikazioei. Aplikazio gaiztoek deskargak eteteko eta informazio pribatua atzitzeko erabil dezakete hori."</string>
+    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Deskargen kudeatzailearen eginbide aurreratuak atzitzeko baimena ematen die aplikazioei. Aplikazio gaiztoek deskargak eteteko eta informazio pribatua atzitzeko erabil dezakete hori."</string>
     <string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Bidali deskargen jakinarazpenak."</string>
-    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Osatutako deskargei buruzko jakinarazpenak bidaltzea baimentzen die aplikazioei. Aplikazio gaiztoek fitxategiak deskargatzen dituzten beste aplikazioak nahasteko erabil dezakete hori."</string>
+    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Osatutako deskargei buruzko jakinarazpenak bidaltzeko baimena ematen die aplikazioei. Aplikazio gaiztoek fitxategiak deskargatzen dituzten beste aplikazioak nahasteko erabil dezakete hori."</string>
     <string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Erreserbatu memoria deskarga-cachean"</string>
-    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Fitxategiak deskarga-cachera deskargatzea baimentzen die aplikazioei (ezin izango dira automatikoki ezabatu deskargen kudeatzaileak tokia behar duenean)."</string>
+    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Fitxategiak deskarga-cachera deskargatzeko baimena ematen die aplikazioei (ezin izango dira automatikoki ezabatu deskargen kudeatzaileak tokia behar duenean)."</string>
     <string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"Deskargatu fitxategiak jakinarazi gabe"</string>
-    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"Fitxategiak deskargen kudeatzailearen bidez baina erabiltzaileari jakinarazi gabe deskargatzea baimentzen die aplikazioei."</string>
+    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"Fitxategiak deskargen kudeatzailearen bidez baina erabiltzaileari jakinarazi gabe deskargatzeko baimena ematen die aplikazioei."</string>
     <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"Atzitu sistemaren deskarga guztiak"</string>
-    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"Aplikazioek sisteman hasitako deskarga guztiak ikustea eta aldatzea baimentzen die aplikazioei."</string>
+    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"Aplikazioek sisteman hasitako deskarga guztiak ikusteko eta aldatzeko baimena ematen die aplikazioei."</string>
     <string name="download_unknown_title" msgid="7015124071247271585">"&lt;Izengabea&gt;"</string>
     <string name="notification_download_complete" msgid="5443563299253103667">"Osatu da deskarga."</string>
     <string name="notification_download_failed" msgid="8612136111952014978">"Ezin izan da deskargatu."</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 9088b32..25fdef6 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -31,7 +31,7 @@
     <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"सभी सिस्‍टम डाउनलोड में पहुंच प्राप्त करें"</string>
     <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"ऐप्स  को सिस्टम पर किसी भी ऐप्स  द्वारा शुरू किए गए सभी डाउनलोड देखने और संशोधित करने देता है."</string>
     <string name="download_unknown_title" msgid="7015124071247271585">"&lt;शीर्षक-रहित&gt;"</string>
-    <string name="notification_download_complete" msgid="5443563299253103667">"डाउनलोड पूर्ण."</string>
+    <string name="notification_download_complete" msgid="5443563299253103667">"डाउनलोड पूरा हुआ."</string>
     <string name="notification_download_failed" msgid="8612136111952014978">"डाउनलोड विफल."</string>
     <string name="notification_need_wifi_for_size" msgid="2556172885154833575">"डाउनलोड आकार के लिए वाई-फ़ाई  आवश्‍यक."</string>
     <string name="notification_paused_in_background" msgid="4328508073283591772">"पृष्ठभूमि में रोका गया."</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index ba6f2f0..b3af03b 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -39,7 +39,7 @@
     <string name="wifi_required_body" msgid="3067694630143784449">"Morate upotrijebiti Wi-Fi da biste dovršili ovo preuzimanje veličine <xliff:g id="SIZE">%1$s </xliff:g>. \n\nDodirnite tekst <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> da biste pokrenuli preuzimanje sljedeći put kada se povežete s Wi-Fi mrežom."</string>
     <string name="wifi_recommended_title" msgid="7441589306734687400">"Staviti na čekanje za kasnije preuzimanje?"</string>
     <string name="wifi_recommended_body" msgid="1314735166699936073">"Pokretanje ovog preuzimanja od <xliff:g id="SIZE">%1$s </xliff:g> može skratiti vijek baterije i/ili uzrokovati pretjeranu upotrebu podatkovne veze i dodatne troškove.\n\n Dodirnite <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> da biste preuzeli pri sljedećem spajanju s Wi-Fi mrežom."</string>
-    <string name="button_queue_for_wifi" msgid="422576726189179221">"Red čekanja"</string>
+    <string name="button_queue_for_wifi" msgid="422576726189179221">"Redoslijed"</string>
     <string name="button_cancel_download" msgid="2430166148737975604">"Odustani"</string>
     <string name="button_start_now" msgid="792123674007840864">"Započni sad"</string>
     <plurals name="notif_summary_active" formatted="false" msgid="7290448463204837173">
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index e7d0731..4de5365 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="3658948994665187911">"Жүктеу менеджері"</string>
+    <string name="app_label" msgid="3658948994665187911">"Жүктеп алу менеджері"</string>
     <string name="storage_description" msgid="7982444311558023664">"Жүктеп алынғандар"</string>
     <string name="permlab_downloadManager" msgid="7779544811202855500">"Жүктеу менеджеріне кіру."</string>
     <string name="permdesc_downloadManager" msgid="4237406545998908947">"Қолданбаға жүктеу менеджеріне кіріп, оны файлдарды жүктеу үшін қолдану мүмкіндігін береді. Залалды қолданбалар бұны жүктеулерге кедергі жасау үшін және жеке ақпаратқа кіру үшін қолдануы мүмкін."</string>
@@ -52,7 +52,7 @@
     </plurals>
     <string name="download_remaining" msgid="3139295890887972718">"<xliff:g id="DURATION">%s</xliff:g> қалды"</string>
     <string name="download_no_application_title" msgid="7935659741162801699">"Файлды аша алмады"</string>
-    <string name="root_downloads" msgid="4098414876292351487">"Жүктеулер"</string>
+    <string name="root_downloads" msgid="4098414876292351487">"Жүктеп алынған"</string>
     <string name="download_queued" msgid="3302638231377947451">"Кезекте"</string>
     <string name="download_running" msgid="3925050393361158266">"Жүктелуде"</string>
     <string name="download_error" msgid="5144180777324573236">"Сәтсіз"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 60dbb10..b01ef33 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -43,12 +43,12 @@
     <string name="button_cancel_download" msgid="2430166148737975604">"रद्द करा"</string>
     <string name="button_start_now" msgid="792123674007840864">"आता सुरू करा"</string>
     <plurals name="notif_summary_active" formatted="false" msgid="7290448463204837173">
-      <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g>फाईल डाउनलोड होत आहे</item>
       <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g>फायली डाउनलोड होत आहेत</item>
+      <item quantity="one">1 फाईल डाउनलोड होत आहे</item>
     </plurals>
     <plurals name="notif_summary_waiting" formatted="false" msgid="2814217662029273005">
-      <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> फाईल प्रतीक्षेत आहे</item>
       <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> फायली प्रतीक्षेत आहेत</item>
+      <item quantity="one">1 फाईल प्रतीक्षेत आहे</item>
     </plurals>
     <string name="download_remaining" msgid="3139295890887972718">"<xliff:g id="DURATION">%s</xliff:g> बाकी"</string>
     <string name="download_no_application_title" msgid="7935659741162801699">"फाइल उघडू शकत नाही"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 02b25cd..0c1f995 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -19,9 +19,9 @@
     <string name="app_label" msgid="3658948994665187911">"Downloadbeheer"</string>
     <string name="storage_description" msgid="7982444311558023664">"Downloads"</string>
     <string name="permlab_downloadManager" msgid="7779544811202855500">"Downloadbeheer weergeven."</string>
-    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Hiermee heeft de app toegang tot downloadbeheer en kan de app via downloadbeheer bestanden downloaden. Schadelijke apps kunnen dit gebruiken om downloads te verstoren en toegang te krijgen tot persoonsgegevens."</string>
+    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Hiermee heeft de app toegang tot downloadbeheer en kan de app via downloadbeheer bestanden downloaden. Schadelijke apps kunnen dit gebruiken om downloads te verstoren en toegang te krijgen tot persoonlijke informatie."</string>
     <string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"Geavanceerde functies van de downloadbeheerder."</string>
-    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Hiermee heeft de app toegang tot de geavanceerde functies van downloadbeheer. Schadelijke apps kunnen dit gebruiken om downloads te verstoren en toegang te krijgen tot persoonsgegevens."</string>
+    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Hiermee heeft de app toegang tot de geavanceerde functies van downloadbeheer. Schadelijke apps kunnen dit gebruiken om downloads te verstoren en toegang te krijgen tot persoonlijke informatie."</string>
     <string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Downloadmeldingen verzenden."</string>
     <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Hiermee kan de app meldingen verzenden over voltooide downloads. Schadelijke apps kunnen dit gebruiken om andere apps die bestanden downloaden in verwarring te brengen."</string>
     <string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Ruimte in de downloadcache reserveren"</string>
@@ -50,7 +50,7 @@
       <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> bestanden in de wachtrij</item>
       <item quantity="one">1 bestand in de wachtrij</item>
     </plurals>
-    <string name="download_remaining" msgid="3139295890887972718">"<xliff:g id="DURATION">%s</xliff:g> resterend"</string>
+    <string name="download_remaining" msgid="3139295890887972718">"Nog <xliff:g id="DURATION">%s</xliff:g>"</string>
     <string name="download_no_application_title" msgid="7935659741162801699">"Kan bestand niet openen"</string>
     <string name="root_downloads" msgid="4098414876292351487">"Downloads"</string>
     <string name="download_queued" msgid="3302638231377947451">"In wachtrij"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 8607c46..a3c1e68 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -19,17 +19,17 @@
     <string name="app_label" msgid="3658948994665187911">"பதிவிறக்க நிர்வாகி"</string>
     <string name="storage_description" msgid="7982444311558023664">"பதிவிறக்கங்கள்"</string>
     <string name="permlab_downloadManager" msgid="7779544811202855500">"பதிவிறக்க நிர்வாகியை அணுகவும்."</string>
-    <string name="permdesc_downloadManager" msgid="4237406545998908947">"பதிவிறக்க நிர்வாகியை அணுகவும், கோப்புகளைப் பதிவிறக்குவதற்காக அதைப் பயன்படுத்தவும் பயன்பாட்டை அனுமதிக்கிறது. பதிவிறக்கங்களைத் தடைசெய்யவும், தனிப்பட்டத் தகவலை அணுகவும் தீங்கிழைக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."</string>
+    <string name="permdesc_downloadManager" msgid="4237406545998908947">"பதிவிறக்க நிர்வாகியை அணுகவும், கோப்புகளைப் பதிவிறக்குவதற்காக அதைப் பயன்படுத்தவும் ஆப்ஸை அனுமதிக்கிறது. பதிவிறக்கங்களைத் தடைசெய்யவும், தனிப்பட்டத் தகவலை அணுகவும் தீங்கிழைக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."</string>
     <string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"மேம்பட்ட பதிவிறக்க நிர்வாகி செயல்பாடுகள்."</string>
-    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"பதிவிறக்க நிர்வாகியின் மேம்பட்ட செயல்பாடுகளை அணுகுவதற்குப் பயன்பாட்டை அனுமதிக்கிறது. பதிவிறக்கங்களைத் தடைசெய்யவும், தனிப்பட்டத் தகவலை அணுகவும் தீங்கிழைக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."</string>
+    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"பதிவிறக்க நிர்வாகியின் மேம்பட்ட செயல்பாடுகளை அணுகுவதற்குப் ஆப்ஸை அனுமதிக்கிறது. பதிவிறக்கங்களைத் தடைசெய்யவும், தனிப்பட்டத் தகவலை அணுகவும் தீங்கிழைக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."</string>
     <string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"பதிவிறக்க அறிவிப்புகளை அனுப்பவும்."</string>
-    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"முடிந்த பதிவிறக்கங்கள் குறித்த அறிவிப்புகளை அனுப்புவதற்குப் பயன்பாட்டை அனுமதிக்கிறது. கோப்புகளைப் பதிவிறக்கும் பிற பயன்பாடுகளைக் குழப்புவதற்கு தீங்கிழைக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."</string>
+    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"முடிந்த பதிவிறக்கங்கள் குறித்த அறிவிப்புகளை அனுப்புவதற்குப் ஆப்ஸை அனுமதிக்கிறது. கோப்புகளைப் பதிவிறக்கும் பிற பயன்பாடுகளைக் குழப்புவதற்கு தீங்கிழைக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."</string>
     <string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"தற்காலிகச் சேமிப்பில் இடத்தை முன்பதிவு செய்தல்"</string>
-    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"பதிவிறக்க நிர்வாகிக்கு அதிகப்படியான இடம் தேவைப்படும்போது தானாகவே நீக்கப்படாத, தற்காலிகச் சேமிப்பில் கோப்புகளைப் பதிவிறக்க பயன்பாட்டை அனுமதிக்கிறது."</string>
+    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"பதிவிறக்க நிர்வாகிக்கு அதிகப்படியான இடம் தேவைப்படும்போது தானாகவே நீக்கப்படாத, தற்காலிகச் சேமிப்பில் கோப்புகளைப் பதிவிறக்க ஆப்ஸை அனுமதிக்கிறது."</string>
     <string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"அறிவிப்பு இல்லாமல் கோப்புகளைப் பதிவிறக்குதல்"</string>
-    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"எந்த அறிவிப்பையும் பயனருக்குக் காட்டாமல் பதிவிறக்க நிர்வாகியின் மூலம் கோப்புகளைப் பதிவிறக்கப் பயன்பாட்டை அனுமதிக்கிறது."</string>
+    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"எந்த அறிவிப்பையும் பயனருக்குக் காட்டாமல் பதிவிறக்க நிர்வாகியின் மூலம் கோப்புகளைப் பதிவிறக்கப் ஆப்ஸை அனுமதிக்கிறது."</string>
     <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"அமைப்பின் எல்லா பதிவிறக்கங்களையும் அணுகுதல்"</string>
-    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"அமைப்பில் உள்ள எந்தப் பயன்பாட்டினாலும் தொடங்கப்படும் எல்லா பதிவிறக்கங்களையும் கண்டு மாற்றுவதற்குப் பயன்பாட்டை அனுமதிக்கிறது."</string>
+    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"அமைப்பில் உள்ள எந்தப் பயன்பாட்டினாலும் தொடங்கப்படும் எல்லா பதிவிறக்கங்களையும் கண்டு மாற்றுவதற்குப் ஆப்ஸை அனுமதிக்கிறது."</string>
     <string name="download_unknown_title" msgid="7015124071247271585">"&lt;பெயரிடப்படாதது&gt;"</string>
     <string name="notification_download_complete" msgid="5443563299253103667">"பதிவிறக்கம் முடிந்தது."</string>
     <string name="notification_download_failed" msgid="8612136111952014978">"பதிவிறக்கம் தோல்வி."</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 670ae96..4b49a15 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -52,7 +52,7 @@
     </plurals>
     <string name="download_remaining" msgid="3139295890887972718">"Còn lại <xliff:g id="DURATION">%s</xliff:g>"</string>
     <string name="download_no_application_title" msgid="7935659741162801699">"Không thể mở tệp"</string>
-    <string name="root_downloads" msgid="4098414876292351487">"Bản tải xuống"</string>
+    <string name="root_downloads" msgid="4098414876292351487">"Tệp tải xuống"</string>
     <string name="download_queued" msgid="3302638231377947451">"Đã xếp hàng"</string>
     <string name="download_running" msgid="3925050393361158266">"Đang thực hiện"</string>
     <string name="download_error" msgid="5144180777324573236">"Không thành công"</string>
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java
index 550c8fb..5d39d56 100644
--- a/src/com/android/providers/downloads/DownloadProvider.java
+++ b/src/com/android/providers/downloads/DownloadProvider.java
@@ -22,17 +22,14 @@
 import static android.provider.Downloads.Impl.COLUMN_MEDIASTORE_URI;
 import static android.provider.Downloads.Impl.COLUMN_MEDIA_SCANNED;
 import static android.provider.Downloads.Impl.COLUMN_OTHER_UID;
-import static android.provider.Downloads.Impl.DESTINATION_EXTERNAL;
 import static android.provider.Downloads.Impl.DESTINATION_FILE_URI;
 import static android.provider.Downloads.Impl.DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD;
 import static android.provider.Downloads.Impl.MEDIA_NOT_SCANNABLE;
 import static android.provider.Downloads.Impl.MEDIA_NOT_SCANNED;
 import static android.provider.Downloads.Impl.MEDIA_SCANNED;
 import static android.provider.Downloads.Impl.PERMISSION_ACCESS_ALL;
-import static android.provider.Downloads.Impl._DATA;
 
 import android.annotation.NonNull;
-import android.annotation.Nullable;
 import android.app.AppOpsManager;
 import android.app.DownloadManager;
 import android.app.DownloadManager.Request;
@@ -50,7 +47,6 @@
 import android.database.Cursor;
 import android.database.DatabaseUtils;
 import android.database.SQLException;
-import android.database.TranslatingCursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.database.sqlite.SQLiteQueryBuilder;
@@ -59,7 +55,6 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Environment;
-import android.os.FileUtils;
 import android.os.ParcelFileDescriptor;
 import android.os.ParcelFileDescriptor.OnCloseListener;
 import android.os.Process;
@@ -71,11 +66,7 @@
 import android.provider.OpenableColumns;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
-import android.util.ArrayMap;
 import android.util.Log;
-import android.util.LongArray;
-import android.util.LongSparseArray;
-import android.util.SparseArray;
 
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.IndentingPrintWriter;
@@ -91,7 +82,6 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -565,36 +555,7 @@
     }
 
     private void reconcileRemovedUidEntries() {
-        // Grant access permissions for all known downloads to the owning apps
-        final ArrayList<Long> idsToDelete = new ArrayList<>();
-        final ArrayList<Long> idsToOrphan = new ArrayList<>();
-        final LongSparseArray<String> idsToGrantPermission = new LongSparseArray<>();
-        final SQLiteDatabase db = mOpenHelper.getReadableDatabase();
-        try (Cursor cursor = db.query(DB_TABLE,
-                new String[] { Downloads.Impl._ID, Constants.UID, COLUMN_DESTINATION, _DATA },
-                Constants.UID + " IS NOT NULL", null, null, null, null)) {
-            Helpers.handleRemovedUidEntries(getContext(), cursor,
-                    idsToDelete, idsToOrphan, idsToGrantPermission);
-        }
-        for (int i = 0; i < idsToGrantPermission.size(); ++i) {
-            final long downloadId = idsToGrantPermission.keyAt(i);
-            final String ownerPackageName = idsToGrantPermission.valueAt(i);
-            grantAllDownloadsPermission(ownerPackageName, downloadId);
-        }
-        if (idsToOrphan.size() > 0) {
-            Log.i(Constants.TAG, "Orphaning downloads with ids "
-                    + Arrays.toString(idsToOrphan.toArray()) + " as owner package is missing");
-            final ContentValues values = new ContentValues();
-            values.putNull(Constants.UID);
-            update(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, values,
-                    Helpers.buildQueryWithIds(idsToOrphan), null);
-        }
-        if (idsToDelete.size() > 0) {
-            Log.i(Constants.TAG, "Deleting downloads with ids "
-                    + Arrays.toString(idsToDelete.toArray()) + " as owner package is missing");
-            delete(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI,
-                    Helpers.buildQueryWithIds(idsToDelete), null);
-        }
+        Helpers.handleRemovedUidEntries(getContext(), this, -1, this::grantAllDownloadsPermission);
     }
 
     /**
diff --git a/src/com/android/providers/downloads/DownloadReceiver.java b/src/com/android/providers/downloads/DownloadReceiver.java
index 40b5e09..27b5d99 100644
--- a/src/com/android/providers/downloads/DownloadReceiver.java
+++ b/src/com/android/providers/downloads/DownloadReceiver.java
@@ -18,8 +18,7 @@
 
 import static android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED;
 import static android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION;
-import static android.provider.Downloads.Impl.COLUMN_DESTINATION;
-import static android.provider.Downloads.Impl._DATA;
+import static android.provider.Downloads.Impl.AUTHORITY;
 
 import static com.android.providers.downloads.Constants.TAG;
 import static com.android.providers.downloads.Helpers.getAsyncHandler;
@@ -32,6 +31,7 @@
 import android.app.DownloadManager;
 import android.app.NotificationManager;
 import android.content.BroadcastReceiver;
+import android.content.ContentProviderClient;
 import android.content.ContentResolver;
 import android.content.ContentUris;
 import android.content.ContentValues;
@@ -40,16 +40,10 @@
 import android.database.Cursor;
 import android.net.Uri;
 import android.provider.Downloads;
-import android.provider.MediaStore;
 import android.text.TextUtils;
 import android.util.Log;
-import android.util.Slog;
 import android.widget.Toast;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.regex.Pattern;
-
 /**
  * Receives system broadcasts (boot, network connectivity)
  */
@@ -146,30 +140,14 @@
     }
 
     private void handleUidRemoved(Context context, Intent intent) {
-        final ContentResolver resolver = context.getContentResolver();
         final int uid = intent.getIntExtra(Intent.EXTRA_UID, -1);
-
-        final ArrayList<Long> idsToDelete = new ArrayList<>();
-        final ArrayList<Long> idsToOrphan = new ArrayList<>();
-        try (Cursor cursor = resolver.query(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI,
-                new String[] { Downloads.Impl._ID, Constants.UID, COLUMN_DESTINATION, _DATA },
-                Constants.UID + "=" + uid, null, null)) {
-            Helpers.handleRemovedUidEntries(context, cursor, idsToDelete, idsToOrphan, null);
+        if (uid == -1) {
+            return;
         }
 
-        if (idsToOrphan.size() > 0) {
-            Log.i(Constants.TAG, "Orphaning downloads with ids "
-                    + Arrays.toString(idsToOrphan.toArray()) + " as owner package is removed");
-            final ContentValues values = new ContentValues();
-            values.putNull(Constants.UID);
-            resolver.update(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, values,
-                    Helpers.buildQueryWithIds(idsToOrphan), null);
-        }
-        if (idsToDelete.size() > 0) {
-            Log.i(Constants.TAG, "Deleting downloads with ids "
-                    + Arrays.toString(idsToDelete.toArray()) + " as owner package is removed");
-            resolver.delete(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI,
-                    Helpers.buildQueryWithIds(idsToDelete), null);
+        try (ContentProviderClient cpc = context.getContentResolver()
+                .acquireContentProviderClient(AUTHORITY)) {
+            Helpers.handleRemovedUidEntries(context, cpc.getLocalContentProvider(), uid, null);
         }
     }
 
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index 7b4cb4e..5481905 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -20,11 +20,13 @@
 import static android.os.Environment.buildExternalStorageAppMediaDirs;
 import static android.os.Environment.buildExternalStorageAppObbDirs;
 import static android.os.Environment.buildExternalStoragePublicDirs;
+import static android.provider.Downloads.Impl.COLUMN_DESTINATION;
 import static android.provider.Downloads.Impl.DESTINATION_EXTERNAL;
 import static android.provider.Downloads.Impl.DESTINATION_FILE_URI;
 import static android.provider.Downloads.Impl.DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD;
 import static android.provider.Downloads.Impl.FLAG_REQUIRES_CHARGING;
 import static android.provider.Downloads.Impl.FLAG_REQUIRES_DEVICE_IDLE;
+import static android.provider.Downloads.Impl._DATA;
 
 import static com.android.providers.downloads.Constants.TAG;
 
@@ -33,6 +35,8 @@
 import android.app.job.JobInfo;
 import android.app.job.JobScheduler;
 import android.content.ComponentName;
+import android.content.ContentProvider;
+import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
 import android.net.Uri;
@@ -48,20 +52,19 @@
 import android.provider.Downloads;
 import android.text.TextUtils;
 import android.util.Log;
-import android.util.LongSparseArray;
 import android.util.SparseArray;
-import android.util.SparseBooleanArray;
 import android.webkit.MimeTypeMap;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.ArrayUtils;
 
-import com.google.common.annotations.VisibleForTesting;
-
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Random;
 import java.util.Set;
+import java.util.function.BiConsumer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -187,9 +190,10 @@
             if (info.mCurrentBytes > 0 && !TextUtils.isEmpty(info.mETag)) {
                 // If we're resuming an in-progress download, we only need to
                 // download the remaining bytes.
-                builder.setEstimatedNetworkBytes(info.mTotalBytes - info.mCurrentBytes);
+                builder.setEstimatedNetworkBytes(info.mTotalBytes - info.mCurrentBytes,
+                        JobInfo.NETWORK_BYTES_UNKNOWN);
             } else {
-                builder.setEstimatedNetworkBytes(info.mTotalBytes);
+                builder.setEstimatedNetworkBytes(info.mTotalBytes, JobInfo.NETWORK_BYTES_UNKNOWN);
             }
         }
 
@@ -626,39 +630,63 @@
         }
     }
 
-    public static void handleRemovedUidEntries(@NonNull Context context, @NonNull Cursor cursor,
-            @NonNull ArrayList<Long> idsToDelete, @NonNull ArrayList<Long> idsToOrphan,
-            @Nullable LongSparseArray<String> idsToGrantPermission) {
+    @VisibleForTesting
+    public static void handleRemovedUidEntries(@NonNull Context context,
+            @NonNull ContentProvider downloadProvider, int removedUid,
+            @Nullable BiConsumer<String, Long> validEntryConsumer) {
         final SparseArray<String> knownUids = new SparseArray<>();
-        while (cursor.moveToNext()) {
-            final long downloadId = cursor.getLong(0);
-            final int uid = cursor.getInt(1);
+        final ArrayList<Long> idsToDelete = new ArrayList<>();
+        final ArrayList<Long> idsToOrphan = new ArrayList<>();
+        final String selection = removedUid == -1 ? Constants.UID + " IS NOT NULL"
+                : Constants.UID + "=" + removedUid;
+        try (Cursor cursor = downloadProvider.query(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI,
+                new String[] { Downloads.Impl._ID, Constants.UID, COLUMN_DESTINATION, _DATA },
+                selection, null, null)) {
+            while (cursor.moveToNext()) {
+                final long downloadId = cursor.getLong(0);
+                final int uid = cursor.getInt(1);
 
-            final String ownerPackageName;
-            final int index = knownUids.indexOfKey(uid);
-            if (index >= 0) {
-                ownerPackageName = knownUids.valueAt(index);
-            } else {
-                ownerPackageName = getPackageForUid(context, uid);
-                knownUids.put(uid, ownerPackageName);
-            }
-
-            if (ownerPackageName == null) {
-                final int destination = cursor.getInt(2);
-                final String filePath = cursor.getString(3);
-
-                if ((destination == DESTINATION_EXTERNAL
-                        || destination == DESTINATION_FILE_URI
-                        || destination == DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD)
-                        && isFilenameValidInKnownPublicDir(filePath)) {
-                    idsToOrphan.add(downloadId);
+                final String ownerPackageName;
+                final int index = knownUids.indexOfKey(uid);
+                if (index >= 0) {
+                    ownerPackageName = knownUids.valueAt(index);
                 } else {
-                    idsToDelete.add(downloadId);
+                    ownerPackageName = getPackageForUid(context, uid);
+                    knownUids.put(uid, ownerPackageName);
                 }
-            } else if (idsToGrantPermission != null) {
-                idsToGrantPermission.put(downloadId, ownerPackageName);
+
+                if (ownerPackageName == null) {
+                    final int destination = cursor.getInt(2);
+                    final String filePath = cursor.getString(3);
+
+                    if ((destination == DESTINATION_EXTERNAL
+                            || destination == DESTINATION_FILE_URI
+                            || destination == DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD)
+                            && isFilenameValidInKnownPublicDir(filePath)) {
+                        idsToOrphan.add(downloadId);
+                    } else {
+                        idsToDelete.add(downloadId);
+                    }
+                } else if (validEntryConsumer != null) {
+                    validEntryConsumer.accept(ownerPackageName, downloadId);
+                }
             }
         }
+
+        if (idsToOrphan.size() > 0) {
+            Log.i(Constants.TAG, "Orphaning downloads with ids "
+                    + Arrays.toString(idsToOrphan.toArray()) + " as owner package is removed");
+            final ContentValues values = new ContentValues();
+            values.putNull(Constants.UID);
+            downloadProvider.update(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, values,
+                    Helpers.buildQueryWithIds(idsToOrphan), null);
+        }
+        if (idsToDelete.size() > 0) {
+            Log.i(Constants.TAG, "Deleting downloads with ids "
+                    + Arrays.toString(idsToDelete.toArray()) + " as owner package is removed");
+            downloadProvider.delete(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI,
+                    Helpers.buildQueryWithIds(idsToDelete), null);
+        }
     }
 
     public static String buildQueryWithIds(ArrayList<Long> downloadIds) {
diff --git a/tests/src/com/android/providers/downloads/HelpersTest.java b/tests/src/com/android/providers/downloads/HelpersTest.java
index 65c5d36..9cb99ba 100644
--- a/tests/src/com/android/providers/downloads/HelpersTest.java
+++ b/tests/src/com/android/providers/downloads/HelpersTest.java
@@ -16,14 +16,45 @@
 
 package com.android.providers.downloads;
 
+import static android.provider.Downloads.Impl.COLUMN_DESTINATION;
+import static android.provider.Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE;
+import static android.provider.Downloads.Impl.DESTINATION_EXTERNAL;
+import static android.provider.Downloads.Impl.DESTINATION_FILE_URI;
+import static android.provider.Downloads.Impl.DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD;
+import static android.provider.Downloads.Impl._DATA;
+import static android.provider.Downloads.Impl._ID;
+
+import static com.android.internal.util.ArrayUtils.contains;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.ContentProvider;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.database.MatrixCursor;
 import android.net.Uri;
+import android.os.Environment;
 import android.provider.Downloads;
+
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
+import android.util.LongArray;
+import android.util.LongSparseArray;
 
 import libcore.io.IoUtils;
 
 import java.io.File;
+import java.util.Arrays;
+import java.util.function.BiConsumer;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * This test exercises methods in the {@Helpers} utility class.
@@ -31,8 +62,22 @@
 @SmallTest
 public class HelpersTest extends AndroidTestCase {
 
+    private final static int TEST_UID1 = 11111;
+    private final static int TEST_UID2 = 11112;
+    private final static int TEST_UID3 = 11113;
+
+    private final MockitoHelper mMockitoHelper = new MockitoHelper();
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        mMockitoHelper.setUp(getClass());
+    }
+
     @Override
     protected void tearDown() throws Exception {
+        mMockitoHelper.tearDown();
         IoUtils.deleteContents(getContext().getFilesDir());
         IoUtils.deleteContents(getContext().getCacheDir());
 
@@ -117,4 +162,164 @@
         assertFalse(Helpers.isFilenameValidInKnownPublicDir(
                 "/storage/emulated/0/Android/data/com.example/bar.jpg"));
     }
+
+    public void testHandleRemovedUidEntries() throws Exception {
+        // Prepare
+        final int[] testUids = {
+                TEST_UID1, TEST_UID2, TEST_UID3
+        };
+        final int[] unknownUids = {
+                TEST_UID1, TEST_UID2
+        };
+        final Context context = mock(Context.class);
+        final PackageManager packageManager = mock(PackageManager.class);
+        when(context.getPackageManager()).thenReturn(packageManager);
+        for (int uid : testUids) {
+            when(packageManager.getPackagesForUid(uid)).thenReturn(
+                    contains(unknownUids, uid) ? null : new String[] {"com.example" + uid}
+            );
+        }
+
+        final LongArray idsToRemove = new LongArray();
+        final LongArray idsToOrphan = new LongArray();
+        final LongSparseArray<String> validEntries = new LongSparseArray<>();
+        final MatrixCursor cursor = prepareData(testUids, unknownUids,
+                idsToOrphan, idsToRemove, validEntries);
+
+        final ContentProvider downloadProvider = mock(ContentProvider.class);
+        when(downloadProvider.query(eq(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI),
+                any(String[].class), any(String.class),isNull(), isNull())).thenReturn(cursor);
+        final BiConsumer<String, Long> validEntryConsumer = mock(BiConsumer.class);
+
+        // Call
+        Helpers.handleRemovedUidEntries(context, downloadProvider, -1, validEntryConsumer);
+
+        // Verify
+        verify(downloadProvider).update(eq(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI),
+                argThat(values -> values.get(Constants.UID) == null),
+                argThat(selection -> Arrays.equals(
+                        idsToOrphan.toArray(), extractIdsFromSelection(selection))),
+                isNull());
+        verify(downloadProvider).delete(eq(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI),
+                argThat(selection -> Arrays.equals(
+                        idsToRemove.toArray(), extractIdsFromSelection(selection))),
+                isNull());
+        for (int i = 0; i < validEntries.size(); ++i) {
+            verify(validEntryConsumer).accept(validEntries.valueAt(i), validEntries.keyAt(i));
+        }
+
+
+        // Reset
+        idsToOrphan.clear();
+        idsToRemove.clear();
+        validEntries.clear();
+        reset(downloadProvider);
+
+        // Prepare
+        final MatrixCursor cursor2 = prepareData(new int[] {TEST_UID2}, unknownUids,
+                idsToOrphan, idsToRemove, validEntries);
+        when(downloadProvider.query(eq(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI),
+                any(String[].class), any(String.class),isNull(), isNull())).thenReturn(cursor2);
+
+        // Call
+        Helpers.handleRemovedUidEntries(context, downloadProvider, TEST_UID2, null);
+
+        // Verify
+        verify(downloadProvider).update(eq(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI),
+                argThat(values -> values.get(Constants.UID) == null),
+                argThat(selection -> Arrays.equals(
+                        idsToOrphan.toArray(), extractIdsFromSelection(selection))),
+                isNull());
+        verify(downloadProvider).delete(eq(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI),
+                argThat(selection -> Arrays.equals(
+                        idsToRemove.toArray(), extractIdsFromSelection(selection))),
+                isNull());
+    }
+
+    private MatrixCursor prepareData(int[] uids, int[] unknownUids,
+            final LongArray idsToOrphan, final LongArray idsToRemove,
+            LongSparseArray<String> validEntries) {
+        final MatrixCursor cursor = new MatrixCursor(
+                new String[] {_ID, Constants.UID, COLUMN_DESTINATION, _DATA});
+        final int[] destinations = {
+                DESTINATION_EXTERNAL,
+                DESTINATION_FILE_URI,
+                DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD,
+                DESTINATION_CACHE_PARTITION_PURGEABLE
+        };
+        long counter = 0;
+        for (int uid : uids) {
+            for (int destination : destinations) {
+                final String fileName = uid + "_" + destination + ".txt";
+                switch (destination) {
+                    case DESTINATION_EXTERNAL: {
+                        final File file = new File(Environment.getExternalStoragePublicDirectory(
+                                Environment.DIRECTORY_DOWNLOADS), fileName);
+                        cursor.addRow(new Object[]{++counter, uid, destination, file.getPath()});
+                        if (contains(unknownUids, uid)) {
+                            idsToOrphan.add(counter);
+                        } else {
+                            validEntries.put(counter, "com.example" + uid);
+                        }
+                    } break;
+                    case DESTINATION_FILE_URI: {
+                        final File file1 = new File(Environment.getExternalStoragePublicDirectory(
+                                Environment.DIRECTORY_DOCUMENTS), fileName);
+                        cursor.addRow(new Object[]{++counter, uid, destination, file1.getPath()});
+                        if (contains(unknownUids, uid)) {
+                            idsToOrphan.add(counter);
+                        } else {
+                            validEntries.put(counter, "com.example" + uid);
+                        }
+                        final File file2 = new File(getContext().getExternalFilesDir(null),
+                                fileName);
+                        cursor.addRow(new Object[]{++counter, uid, destination, file2.getPath()});
+                        if (contains(unknownUids, uid)) {
+                            idsToRemove.add(counter);
+                        } else {
+                            validEntries.put(counter, "com.example" + uid);
+                        }
+                    } break;
+                    case DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD: {
+                        final File file1 = new File(Environment.getExternalStoragePublicDirectory(
+                                Environment.DIRECTORY_DOCUMENTS), fileName);
+                        cursor.addRow(new Object[]{++counter, uid, destination, file1.getPath()});
+                        if (contains(unknownUids, uid)) {
+                            idsToOrphan.add(counter);
+                        } else {
+                            validEntries.put(counter, "com.example" + uid);
+                        }
+                        final File file2 = new File(getContext().getExternalFilesDir(null),
+                                fileName);
+                        cursor.addRow(new Object[]{++counter, uid, destination, file2.getPath()});
+                        if (contains(unknownUids, uid)) {
+                            idsToRemove.add(counter);
+                        } else {
+                            validEntries.put(counter, "com.example" + uid);
+                        }
+                    } break;
+                    case DESTINATION_CACHE_PARTITION_PURGEABLE: {
+                        final File file = new File(getContext().getCacheDir(), fileName);
+                        final String filePath = file.getPath().replace(
+                                getContext().getPackageName(), "com.android.providers.downloads");
+                        cursor.addRow(new Object[]{++counter, uid, destination, filePath});
+                        if (contains(unknownUids, uid)) {
+                            idsToRemove.add(counter);
+                        } else {
+                            validEntries.put(counter, "com.example" + uid);
+                        }
+                    } break;
+                }
+            }
+        }
+        return cursor;
+    }
+
+    private long[] extractIdsFromSelection(String selection) {
+        final Pattern uidsListPattern = Pattern.compile(".*\\((.+)\\)");
+        final Matcher matcher = uidsListPattern.matcher(selection);
+        assertTrue(matcher.matches());
+        return Arrays.stream(matcher.group(1).split(","))
+                .mapToLong(Long::valueOf).sorted().toArray();
+    }
 }
diff --git a/ui/res/values-da/strings.xml b/ui/res/values-da/strings.xml
index 9bb52af..be58a78 100644
--- a/ui/res/values-da/strings.xml
+++ b/ui/res/values-da/strings.xml
@@ -21,7 +21,7 @@
     <string name="download_title_sorted_by_size" msgid="1417193166677094813">"Downloads – sorter efter størrelse"</string>
     <string name="no_downloads" msgid="1029667411186146836">"Ingen downloads."</string>
     <string name="missing_title" msgid="830115697868833773">"&lt;Ukendt&gt;"</string>
-    <string name="button_sort_by_size" msgid="7331549713691146251">"Sorter efter størrelse"</string>
+    <string name="button_sort_by_size" msgid="7331549713691146251">"Sortér efter størrelse"</string>
     <string name="button_sort_by_date" msgid="8800842892684101528">"Sorter efter dato"</string>
     <string name="download_queued" msgid="104973307780629904">"I kø"</string>
     <string name="download_running" msgid="4656462962155580641">"I gang"</string>
diff --git a/ui/res/values-fa/strings.xml b/ui/res/values-fa/strings.xml
index e78f900..cc1373b 100644
--- a/ui/res/values-fa/strings.xml
+++ b/ui/res/values-fa/strings.xml
@@ -21,7 +21,7 @@
     <string name="download_title_sorted_by_size" msgid="1417193166677094813">"بارگیری‌ها - مرتب شده براساس اندازه"</string>
     <string name="no_downloads" msgid="1029667411186146836">"نه بارگیری‌ها."</string>
     <string name="missing_title" msgid="830115697868833773">"‏&lt;ناشناس&gt;"</string>
-    <string name="button_sort_by_size" msgid="7331549713691146251">"براساس اندازه مرتب شود"</string>
+    <string name="button_sort_by_size" msgid="7331549713691146251">"مرتب‌سازی براساس اندازه"</string>
     <string name="button_sort_by_date" msgid="8800842892684101528">"ترتیب براساس تاریخ"</string>
     <string name="download_queued" msgid="104973307780629904">"در صف"</string>
     <string name="download_running" msgid="4656462962155580641">"در حال انجام"</string>
diff --git a/ui/res/values-hi/strings.xml b/ui/res/values-hi/strings.xml
index 04a8d00..f5ba36d 100644
--- a/ui/res/values-hi/strings.xml
+++ b/ui/res/values-hi/strings.xml
@@ -17,15 +17,15 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_label" msgid="3070921713463294774">"डाउनलोड"</string>
-    <string name="download_title_sorted_by_date" msgid="5898014492155434221">"डाउनलोड - दिनांक द्वारा क्रमित"</string>
+    <string name="download_title_sorted_by_date" msgid="5898014492155434221">"डाउनलोड - तारीख द्वारा क्रमित"</string>
     <string name="download_title_sorted_by_size" msgid="1417193166677094813">"डाउनलोड - आकार द्वारा क्रमित"</string>
     <string name="no_downloads" msgid="1029667411186146836">"कोई डाउनलोड नहीं."</string>
     <string name="missing_title" msgid="830115697868833773">"&lt;अज्ञात&gt;"</string>
     <string name="button_sort_by_size" msgid="7331549713691146251">"आकार द्वारा क्रमित करें"</string>
-    <string name="button_sort_by_date" msgid="8800842892684101528">"दिनांक द्वारा क्रमित करें"</string>
+    <string name="button_sort_by_date" msgid="8800842892684101528">"तारीख द्वारा क्रमित करें"</string>
     <string name="download_queued" msgid="104973307780629904">"कतार में"</string>
     <string name="download_running" msgid="4656462962155580641">"जारी"</string>
-    <string name="download_success" msgid="7006048006543495236">"पूर्ण"</string>
+    <string name="download_success" msgid="7006048006543495236">"पूरा हुआ"</string>
     <string name="download_error" msgid="8081329546008568251">"विफल"</string>
     <string name="dialog_title_not_available" msgid="5746317632356158515">"डाउनलोड नहीं किया जा सका"</string>
     <string name="dialog_failed_body" msgid="587545111677064427">"क्‍या आप बाद में फ़ाइल डाउनलोड करने का फिर से प्रयास करना चाहते हैं या उसे कतार से हटाना चाहते हैं?"</string>
@@ -42,7 +42,7 @@
     <string name="delete_download" msgid="76629022653866471">"मिटाएं"</string>
     <string name="keep_queued_download" msgid="5144882786014818569">"रखें"</string>
     <string name="cancel_running_download" msgid="5232704030969221112">"रद्द करें"</string>
-    <string name="retry_download" msgid="7617100787922717912">"पुन: प्रयास करें"</string>
+    <string name="retry_download" msgid="7617100787922717912">"फिर से प्रयास करें"</string>
     <string name="start_now_download" msgid="1564642872809509681">"अभी शुरू करें"</string>
     <string name="deselect_all" msgid="6348198946254776764">"कुछ भी ना चुनें"</string>
     <string name="select_all" msgid="634074918366265804">"सभी चुनें"</string>
diff --git a/ui/res/values-kk/strings.xml b/ui/res/values-kk/strings.xml
index 1b49bf7..e410ed6 100644
--- a/ui/res/values-kk/strings.xml
+++ b/ui/res/values-kk/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="3070921713463294774">"Жүктеулер"</string>
+    <string name="app_label" msgid="3070921713463294774">"Жүктеп алынған"</string>
     <string name="download_title_sorted_by_date" msgid="5898014492155434221">"Жүктеулер - Мерзім бойынша сұрыпталған"</string>
     <string name="download_title_sorted_by_size" msgid="1417193166677094813">"Жүктеулер - Өлшем бойынша сұрыпталған"</string>
     <string name="no_downloads" msgid="1029667411186146836">"Жүктеулер жоқ."</string>
diff --git a/ui/res/values-ky/strings.xml b/ui/res/values-ky/strings.xml
index 7b153c6..701149a 100644
--- a/ui/res/values-ky/strings.xml
+++ b/ui/res/values-ky/strings.xml
@@ -45,7 +45,7 @@
     <string name="retry_download" msgid="7617100787922717912">"Кайра аракеттенүү"</string>
     <string name="start_now_download" msgid="1564642872809509681">"Азыр баштоо"</string>
     <string name="deselect_all" msgid="6348198946254776764">"Баарын бошотуу"</string>
-    <string name="select_all" msgid="634074918366265804">"Бардыгын тандоо"</string>
+    <string name="select_all" msgid="634074918366265804">"Баарын тандоо"</string>
     <string name="selected_count" msgid="2101564570019753277">"<xliff:g id="TOTAL">%2$d</xliff:g> ичинен <xliff:g id="NUMBER">%1$d</xliff:g> тандалды"</string>
     <string name="download_share_dialog" msgid="3355867339806448955">"Бул аркылуу бөлүшүү:"</string>
 </resources>
diff --git a/ui/res/values-my/strings.xml b/ui/res/values-my/strings.xml
index 7ed8931..af465d0 100644
--- a/ui/res/values-my/strings.xml
+++ b/ui/res/values-my/strings.xml
@@ -20,7 +20,7 @@
     <string name="download_title_sorted_by_date" msgid="5898014492155434221">"ဒေါင်းလုဒ်များ -နေ့စွဲအလိုက် စီထားသည်"</string>
     <string name="download_title_sorted_by_size" msgid="1417193166677094813">"ဒေါင်းလုဒ်များ -အရွယ်အစားအလိုက် စီထားသည်"</string>
     <string name="no_downloads" msgid="1029667411186146836">"ဒေါင်းလုပ်မရှိပါ"</string>
-    <string name="missing_title" msgid="830115697868833773">"မသိပါ"</string>
+    <string name="missing_title" msgid="830115697868833773">"မသိ"</string>
     <string name="button_sort_by_size" msgid="7331549713691146251">"အရွယ်အစားအလိုက် စီရန်"</string>
     <string name="button_sort_by_date" msgid="8800842892684101528">"နေ့စွဲအလိုက် စီရန်"</string>
     <string name="download_queued" msgid="104973307780629904">"တန်းစီထားပြီး"</string>
diff --git a/ui/res/values-nb/strings.xml b/ui/res/values-nb/strings.xml
index 143fa76..acd92b3 100644
--- a/ui/res/values-nb/strings.xml
+++ b/ui/res/values-nb/strings.xml
@@ -21,7 +21,7 @@
     <string name="download_title_sorted_by_size" msgid="1417193166677094813">"Nedlastinger – etter størrelse"</string>
     <string name="no_downloads" msgid="1029667411186146836">"Ingen nedlastinger."</string>
     <string name="missing_title" msgid="830115697868833773">"&lt;Ukjent&gt;"</string>
-    <string name="button_sort_by_size" msgid="7331549713691146251">"Sorter etter størrelse"</string>
+    <string name="button_sort_by_size" msgid="7331549713691146251">"Sortér etter størrelse"</string>
     <string name="button_sort_by_date" msgid="8800842892684101528">"Sorter etter dato"</string>
     <string name="download_queued" msgid="104973307780629904">"I kø"</string>
     <string name="download_running" msgid="4656462962155580641">"Arbeider"</string>
diff --git a/ui/res/values-or/strings.xml b/ui/res/values-or/strings.xml
index a9e6fdb..c7a0965 100644
--- a/ui/res/values-or/strings.xml
+++ b/ui/res/values-or/strings.xml
@@ -47,5 +47,5 @@
     <string name="deselect_all" msgid="6348198946254776764">"କିଛି ବି ଚୟନ କରନ୍ତୁ ନାହିଁ"</string>
     <string name="select_all" msgid="634074918366265804">"ସବୁ ଚୟନ କରନ୍ତୁ"</string>
     <string name="selected_count" msgid="2101564570019753277">"<xliff:g id="TOTAL">%2$d</xliff:g> ମଧ୍ୟରୁ <xliff:g id="NUMBER">%1$d</xliff:g> ଚୟନିତ"</string>
-    <string name="download_share_dialog" msgid="3355867339806448955">"ଏହା ମାଧ୍ୟମରେ ଶେୟାର୍‌ କରନ୍ତୁ"</string>
+    <string name="download_share_dialog" msgid="3355867339806448955">"ଏହା ମାଧ୍ୟମରେ ସେୟାର୍‌ କରନ୍ତୁ"</string>
 </resources>
diff --git a/ui/res/values-te/strings.xml b/ui/res/values-te/strings.xml
index 737a7c8..d16805b 100644
--- a/ui/res/values-te/strings.xml
+++ b/ui/res/values-te/strings.xml
@@ -21,7 +21,7 @@
     <string name="download_title_sorted_by_size" msgid="1417193166677094813">"డౌన్‌లోడ్‌లు - పరిమాణం ద్వారా క్రమబద్ధీకరించబడినవి"</string>
     <string name="no_downloads" msgid="1029667411186146836">"డౌన్‌లోడ్‌లు ఏవీ లేవు."</string>
     <string name="missing_title" msgid="830115697868833773">"&lt;తెలియదు&gt;"</string>
-    <string name="button_sort_by_size" msgid="7331549713691146251">"పరిమాణం ద్వారా క్రమబద్ధీకరించు"</string>
+    <string name="button_sort_by_size" msgid="7331549713691146251">"ప‌రిమాణం ద్వారా వ‌ర్గీక‌రించు"</string>
     <string name="button_sort_by_date" msgid="8800842892684101528">"తేదీ ద్వారా క్రమబద్ధీకరించు"</string>
     <string name="download_queued" msgid="104973307780629904">"క్రమవరుసలో ఉంచబడింది"</string>
     <string name="download_running" msgid="4656462962155580641">"ప్రోగ్రెస్‌లో ఉంది"</string>
diff --git a/ui/res/values-tl/strings.xml b/ui/res/values-tl/strings.xml
index 259b792..da65f48 100644
--- a/ui/res/values-tl/strings.xml
+++ b/ui/res/values-tl/strings.xml
@@ -21,8 +21,8 @@
     <string name="download_title_sorted_by_size" msgid="1417193166677094813">"Mga download - Inuri-uri ayon sa laki"</string>
     <string name="no_downloads" msgid="1029667411186146836">"Walang mga pag-download."</string>
     <string name="missing_title" msgid="830115697868833773">"&lt;Hindi Kilala&gt;"</string>
-    <string name="button_sort_by_size" msgid="7331549713691146251">"Uriin ayon sa laki"</string>
-    <string name="button_sort_by_date" msgid="8800842892684101528">"Uriin ayon sa petsa"</string>
+    <string name="button_sort_by_size" msgid="7331549713691146251">"Isaayos ayon sa laki"</string>
+    <string name="button_sort_by_date" msgid="8800842892684101528">"Isaayos ayon sa petsa"</string>
     <string name="download_queued" msgid="104973307780629904">"Naka-queue"</string>
     <string name="download_running" msgid="4656462962155580641">"Isinasagawa"</string>
     <string name="download_success" msgid="7006048006543495236">"Kumpleto"</string>
diff --git a/ui/res/values-uz/strings.xml b/ui/res/values-uz/strings.xml
index b83943a..7b7438c 100644
--- a/ui/res/values-uz/strings.xml
+++ b/ui/res/values-uz/strings.xml
@@ -21,7 +21,7 @@
     <string name="download_title_sorted_by_size" msgid="1417193166677094813">"Yuklanmalar – hajmi bo‘yicha"</string>
     <string name="no_downloads" msgid="1029667411186146836">"Yuklanmalar yo‘q."</string>
     <string name="missing_title" msgid="830115697868833773">"&lt;Noma’lum&gt;"</string>
-    <string name="button_sort_by_size" msgid="7331549713691146251">"Hajmi bo‘yicha saralash"</string>
+    <string name="button_sort_by_size" msgid="7331549713691146251">"Hajmi asosida saralash"</string>
     <string name="button_sort_by_date" msgid="8800842892684101528">"Sanasi bo‘yicha saralash"</string>
     <string name="download_queued" msgid="104973307780629904">"Navbatda"</string>
     <string name="download_running" msgid="4656462962155580641">"Yuk. amalda"</string>