Merge tag 'android-security-11.0.0_r54' into int/11/fp3

Android security 11.0.0 release 54

* tag 'android-security-11.0.0_r54':
  Mock context for permission less app's context
  Restrict legacy apps to download files in private app dirs

Change-Id: I7657abb9acbe82ac1332f24a6798d2ce8843ad3c
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6ef1b54..43cf258 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -60,6 +60,7 @@
     <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/>
     <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
     <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"/>
 
     <application android:process="android.process.media"
                  android:label="@string/app_label"
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index d164bad..af2995e 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -33,12 +33,12 @@
     <string name="download_unknown_title" msgid="1017800350818840396">"&lt;Bez naslova&gt;"</string>
     <string name="notification_download_complete" msgid="466652037490092787">"Preuzimanje je završeno."</string>
     <string name="notification_download_failed" msgid="3932167763860605874">"Preuzimanje nije uspelo."</string>
-    <string name="notification_need_wifi_for_size" msgid="4743443900432303646">"Veličina stavke zahteva Wi-Fi."</string>
+    <string name="notification_need_wifi_for_size" msgid="4743443900432303646">"Veličina stavke zahteva WiFi."</string>
     <string name="notification_paused_in_background" msgid="6393408819031041778">"Pauzirano u pozadini."</string>
     <string name="wifi_required_title" msgid="7266700488421122218">"Preuzimanje je preveliko za mrežu operatera"</string>
-    <string name="wifi_required_body" msgid="4005023496578941958">"Morate da koristite Wi-Fi da biste dovršili ovo preuzimanje od <xliff:g id="SIZE">%1$s </xliff:g>. \n\nDodirnite <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> da biste započeli ovo preuzimanje kada se sledeći put povežete sa Wi-Fi mrežom."</string>
+    <string name="wifi_required_body" msgid="4005023496578941958">"Morate da koristite WiFi da biste dovršili ovo preuzimanje od <xliff:g id="SIZE">%1$s </xliff:g>. \n\nDodirnite <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> da biste započeli ovo preuzimanje kada se sledeći put povežete sa WiFi mrežom."</string>
     <string name="wifi_recommended_title" msgid="6488158053932133804">"Želite li da stavite u red za buduće preuzimanje?"</string>
-    <string name="wifi_recommended_body" msgid="8710820743211704403">"Ovim preuzimanjem od <xliff:g id="SIZE">%1$s </xliff:g> možete da skratite vek trajanja baterije i/ili preterano koristite mobilnu vezu za prenos podataka, što može da dovede do troškova kod mobilnog operatera shodno tarifnom paketu.\n\n Dodirnite <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> da biste započeli ovo preuzimanje kada se ponovo povežete sa Wi-Fi mrežom."</string>
+    <string name="wifi_recommended_body" msgid="8710820743211704403">"Ovim preuzimanjem od <xliff:g id="SIZE">%1$s </xliff:g> možete da skratite vek trajanja baterije i/ili preterano koristite mobilnu vezu za prenos podataka, što može da dovede do troškova kod mobilnog operatera shodno tarifnom paketu.\n\n Dodirnite <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> da biste započeli ovo preuzimanje kada se ponovo povežete sa WiFi mrežom."</string>
     <string name="button_queue_for_wifi" msgid="6650185573566994738">"Red"</string>
     <string name="button_cancel_download" msgid="4135046775536601831">"Otkaži"</string>
     <string name="button_start_now" msgid="3817100969365441730">"Započni odmah"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 96863b2..7ef014b 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -19,11 +19,11 @@
     <string name="app_label" msgid="5264040740662487684">"Deskargen kudeatzailea"</string>
     <string name="storage_description" msgid="169690279447532621">"Deskargak"</string>
     <string name="permlab_downloadManager" msgid="4241473724446132797">"Atzitu deskargen kudeatzailea."</string>
-    <string name="permdesc_downloadManager" msgid="5562734314998369030">"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="permdesc_downloadManager" msgid="5562734314998369030">"Deskargen kudeatzailea atzitzea eta fitxategiak deskargatzeko hori erabiltzeko baimena ematen die aplikazioei. Asmo txarreko aplikazioek deskargak eteteko eta informazio pribatua atzitzeko erabil dezakete hori."</string>
     <string name="permlab_downloadManagerAdvanced" msgid="2225663947531460795">"Deskargen kudeatzailearen eginbide aurreratuak."</string>
-    <string name="permdesc_downloadManagerAdvanced" msgid="3902478062563030716">"Deskargen kudeatzailearen eginbide aurreratuak atzitzeko baimena ematen die aplikazioei. Aplikazio gaiztoek deskargak eteteko eta informazio pribatua atzitzeko erabil dezakete hori."</string>
+    <string name="permdesc_downloadManagerAdvanced" msgid="3902478062563030716">"Deskargen kudeatzailearen eginbide aurreratuak atzitzeko baimena ematen die aplikazioei. Asmo txarreko aplikazioek deskargak eteteko eta informazio pribatua atzitzeko erabil dezakete hori."</string>
     <string name="permlab_downloadCompletedIntent" msgid="2674407390116052956">"Bidali deskargen jakinarazpenak."</string>
-    <string name="permdesc_downloadCompletedIntent" msgid="3384693829639860032">"Osatutako deskargei buruzko jakinarazpenak bidaltzeko baimena ematen die aplikazioei. Aplikazio gaiztoek fitxategiak deskargatzen dituzten beste aplikazioak nahasteko erabil dezakete hori."</string>
+    <string name="permdesc_downloadCompletedIntent" msgid="3384693829639860032">"Osatutako deskargei buruzko jakinarazpenak bidaltzeko baimena ematen die aplikazioei. Asmo txarreko aplikazioek fitxategiak deskargatzen dituzten beste aplikazioak nahasteko erabil dezakete hori."</string>
     <string name="permlab_downloadCacheNonPurgeable" msgid="4538031250425141333">"Erreserbatu memoria deskarga-cachean"</string>
     <string name="permdesc_downloadCacheNonPurgeable" msgid="3071381088686444674">"Fitxategiak deskarga-cachera deskargatzeko baimena ematen die aplikazioei (ezin izango dira automatikoki ezabatu deskargen kudeatzaileak tokia behar duenean)."</string>
     <string name="permlab_downloadWithoutNotification" msgid="4877101864770265405">"Deskargatu fitxategiak jakinarazi gabe"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index fbcfd32..f5bc4f1 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -25,7 +25,7 @@
     <string name="permlab_downloadCompletedIntent" msgid="2674407390116052956">"ડાઉનલોડ સૂચનાઓ મોકલો."</string>
     <string name="permdesc_downloadCompletedIntent" msgid="3384693829639860032">"એપ્લિકેશનને પૂર્ણ થયેલ ડાઉનલોડ્સ વિશે સૂચનાઓ મોકલવાની મંજૂરી આપે છે. દુર્ભાવનાપૂર્ણ ઍપ્લિકેશનો આનો ઉપયોગ ફાઇલો ડાઉનલોડ કરતી અન્ય ઍપ્લિકેશનોને મૂંઝવણમાં નાખવા માટે કરી શકે છે."</string>
     <string name="permlab_downloadCacheNonPurgeable" msgid="4538031250425141333">"ડાઉનલોડ કેશમાં જગ્યા અનામત રાખો"</string>
-    <string name="permdesc_downloadCacheNonPurgeable" msgid="3071381088686444674">"એપ્લિકેશનને ડાઉનલોડ કેશ પર તે ફાઇલો ડાઉનલોડ કરવાની મંજૂરી આપે છે, જે ડાઉનલોડ સંચાલકને વધુ જગ્યાની જરૂર પડવા પર આપમેળે કાઢી નાખી શકાતી નથી."</string>
+    <string name="permdesc_downloadCacheNonPurgeable" msgid="3071381088686444674">"ઍપને ડાઉનલોડ કૅશ પર તે ફાઇલો ડાઉનલોડ કરવાની મંજૂરી આપે છે, જે ડાઉનલોડ મેનેજરને વધુ જગ્યાની જરૂર પડવા પર ઑટોમૅટિક રીતે કાઢી નાખી શકાતી નથી."</string>
     <string name="permlab_downloadWithoutNotification" msgid="4877101864770265405">"સૂચના વગર ફાઇલો ડાઉનલોડ કરો"</string>
     <string name="permdesc_downloadWithoutNotification" msgid="7699189763226483523">"ઍપ્લિકેશનને વપરાશકર્તાને કોઈપણ સૂચના દર્શાવ્યાં વિના ડાઉનલોડ મેનેજર મારફતે ફાઇલો ડાઉનલોડ કરવાની મંજૂરી આપે છે."</string>
     <string name="permlab_accessAllDownloads" msgid="8227356876527248611">"તમામ સિસ્ટમ ડાઉનલોડ્સને ઍક્સેસ કરો"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 57763c1..37768a3 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -16,11 +16,11 @@
 
 <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="5264040740662487684">"डाउनलोड प्रबंधक"</string>
+    <string name="app_label" msgid="5264040740662487684">"डाउनलोड मैनेजर"</string>
     <string name="storage_description" msgid="169690279447532621">"डाउनलोड"</string>
     <string name="permlab_downloadManager" msgid="4241473724446132797">"डाउनलोड मैनेजर में ऐक्सेस पाएं."</string>
     <string name="permdesc_downloadManager" msgid="5562734314998369030">"ऐप को डाउनलोड मैनेजर तक पहुंचने देता है और फ़ाइलें डाउनलोड करने के लिए इसका इस्तेमाल करने देता है. धोखा देने वाले ऐप इसका इस्तेमाल डाउनलोड को रोकने और निजी जानकारी तक पहुंचने के लिए कर सकते हैं."</string>
-    <string name="permlab_downloadManagerAdvanced" msgid="2225663947531460795">"बेहतर डाउनलोड प्रबंधक फ़क्शन."</string>
+    <string name="permlab_downloadManagerAdvanced" msgid="2225663947531460795">"बेहतर डाउनलोड मैनेजर फ़क्शन."</string>
     <string name="permdesc_downloadManagerAdvanced" msgid="3902478062563030716">"ऐप्लिकेशन को डाउनलोड मैनेजर के बेहतर फ़ंक्शन के इस्तेमाल की मंज़ूरी देता है. धोखा देने वाले ऐप्लिकेशन इसका इस्तेमाल डाउनलोड को रोकने और निजी जानकारी तक पहुंचने के लिए कर सकते हैं."</string>
     <string name="permlab_downloadCompletedIntent" msgid="2674407390116052956">"डाउनलोड सूचनाएं भेजें."</string>
     <string name="permdesc_downloadCompletedIntent" msgid="3384693829639860032">"पूरे किए गए डाउनलोड के बारे में ऐप को सूचना भेजने देता है. धोखा देने वाले ऐप इसका इस्तेमाल फ़ाइलों को डाउनलोड करने वाले दूसरे ऐप को भ्रम में डालने के लिए कर सकते हैं."</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 1dbba33..c73fc07 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -38,7 +38,7 @@
     <string name="wifi_required_title" msgid="7266700488421122218">"Ներբեռնումը չափազանց մեծ է օպերատորի ցանցի համար"</string>
     <string name="wifi_required_body" msgid="4005023496578941958">"Դուք պետք է օգտագործեք Wi-Fi՝ այս <xliff:g id="SIZE">%1$s </xliff:g> ներբեռնումն ավարտելու համար: \n\nՀպեք <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>՝ սկսելու այս ներբեռնումը հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:"</string>
     <string name="wifi_recommended_title" msgid="6488158053932133804">"Հերթագրե՞լ ավելի ուշ ներբեռնելու համար:"</string>
-    <string name="wifi_recommended_body" msgid="8710820743211704403">"Այս <xliff:g id="SIZE">%1$s </xliff:g> ներբեռնումը հիմա սկսելը կարող է կարճեցնել ձեր մարտկոցի կյանքը և/կամ բերել ձեր բբջային տվյալների կապի ավելորդ օգտագործման, որը կարող է ուղեկցվել ծախսերով ձեր բջջային օպերատորի կողմից՝ կախված ձեր տվյալների փաթեթից:\n\n Հպեք <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ստորև` այս ներբեռնումը սկսելու հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:"</string>
+    <string name="wifi_recommended_body" msgid="8710820743211704403">"Այս <xliff:g id="SIZE">%1$s </xliff:g> ներբեռնումը հիմա սկսելը կարող է կարճեցնել ձեր մարտկոցի կյանքը և/կամ բերել ձեր բբջային տվյալների կապի ավելորդ օգտագործման, որը կարող է ուղեկցվել ծախսերով ձեր բջջային օպերատորի կողմից՝ կախված ձեր տվյալների փաթեթից:\n\n Հպեք <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ստորև՝ այս ներբեռնումը սկսելու հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:"</string>
     <string name="button_queue_for_wifi" msgid="6650185573566994738">"Հերթագրել"</string>
     <string name="button_cancel_download" msgid="4135046775536601831">"Չեղարկել"</string>
     <string name="button_start_now" msgid="3817100969365441730">"Սկսել հիմա"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index a675a85..1e2a420 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -54,7 +54,7 @@
     <string name="download_no_application_title" msgid="5780812573953335721">"Tidak dapat membuka file"</string>
     <string name="root_downloads" msgid="8380500940211778491">"Download"</string>
     <string name="download_queued" msgid="3383844741769045371">"Diantrekan"</string>
-    <string name="download_running" msgid="774654178925442490">"Sedang berlangsung"</string>
+    <string name="download_running" msgid="774654178925442490">"Dalam proses"</string>
     <string name="download_error" msgid="1857737890005386798">"Gagal"</string>
-    <string name="download_running_percent" msgid="3492753569359254730">"Sedang berlangsung, <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
+    <string name="download_running_percent" msgid="3492753569359254730">"Dalam proses, <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
 </resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index e9bb2c9..8997301 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -38,17 +38,17 @@
     <string name="wifi_required_title" msgid="7266700488421122218">"ऑपरेटर नेटवर्कसाठी डाउनलोड खूप मोठे आहे"</string>
     <string name="wifi_required_body" msgid="4005023496578941958">"तुम्ही हे <xliff:g id="SIZE">%1$s </xliff:g> डाउनलोड पूर्ण करण्‍यासाठी वाय-फाय चा वापर करणे आवश्‍यक आहे. पुढील वेळी तुम्ही वाय-फाय ला कनेक्‍ट होता तेव्‍हा हे डाउनलोड सुरू करण्‍यासाठी \n\n स्‍पर्श करा <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>."</string>
     <string name="wifi_recommended_title" msgid="6488158053932133804">"नंतर डाउनलोड करा साठी रांग लावायची?"</string>
-    <string name="wifi_recommended_body" msgid="8710820743211704403">"हे <xliff:g id="SIZE">%1$s </xliff:g> डाउनलोड सुरू करण्याने तुमचे बॅटरी आयुष्‍य कमी होऊ शकते आणि/किंवा त्‍याचा परिणाम तुमच्या मोबाईल डेटा कनेक्‍शनचा अत्‍याधिक वापर करण्‍यात होऊ शकतो, ज्‍यामुळे आपल्‍या मोबाईल डेटा योजनेवर आधारित आपल्‍या मोबाईल ऑपरेटरद्वारे शुल्‍क आकारले जाऊ शकते.पुढील वेळी तुम्ही वाय-फाय नेटवर्कशी कनेक्‍ट होता तेव्‍हा हे डाउनलोड सुरू करण्‍यासाठी \n\n स्‍पर्श करा <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>"</string>
+    <string name="wifi_recommended_body" msgid="8710820743211704403">"हे <xliff:g id="SIZE">%1$s </xliff:g> डाउनलोड सुरू करण्याने तुमचे बॅटरी आयुष्‍य कमी होऊ शकते आणि/किंवा त्‍याचा परिणाम तुमच्या मोबाइल डेटा कनेक्‍शनचा अत्‍याधिक वापर करण्‍यात होऊ शकतो, ज्‍यामुळे आपल्‍या मोबाइल डेटा योजनेवर आधारित आपल्‍या मोबाइल ऑपरेटरद्वारे शुल्‍क आकारले जाऊ शकते.पुढील वेळी तुम्ही वाय-फाय नेटवर्कशी कनेक्‍ट होता तेव्‍हा हे डाउनलोड सुरू करण्‍यासाठी \n\n स्‍पर्श करा <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>"</string>
     <string name="button_queue_for_wifi" msgid="6650185573566994738">"रांग"</string>
     <string name="button_cancel_download" msgid="4135046775536601831">"रद्द करा"</string>
     <string name="button_start_now" msgid="3817100969365441730">"आता सुरू करा"</string>
     <plurals name="notif_summary_active" formatted="false" msgid="8652501374845637331">
       <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g>फायली डाउनलोड होत आहेत</item>
-      <item quantity="one">1 फाईल डाउनलोड होत आहे</item>
+      <item quantity="one">1 फाइल डाउनलोड होत आहे</item>
     </plurals>
     <plurals name="notif_summary_waiting" formatted="false" msgid="1782251721955177526">
       <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> फाइल प्रतीक्षेत आहेत</item>
-      <item quantity="one">1 फाईल प्रतीक्षेत आहे</item>
+      <item quantity="one">1 फाइल प्रतीक्षेत आहे</item>
     </plurals>
     <string name="download_remaining" msgid="2313089371178695625">"<xliff:g id="DURATION">%s</xliff:g> बाकी"</string>
     <string name="download_no_application_title" msgid="5780812573953335721">"फाइल उघडू शकत नाही"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 8aeaa53..19a87b8 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -38,7 +38,7 @@
     <string name="wifi_required_title" msgid="7266700488421122218">"Download te groot voor providernetwerk"</string>
     <string name="wifi_required_body" msgid="4005023496578941958">"Je moet wifi gebruiken om deze download van <xliff:g id="SIZE">%1$s </xliff:g> te voltooien. \n\nTik <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> om deze download te starten wanneer je verbinding hebt met een wifi-netwerk."</string>
     <string name="wifi_recommended_title" msgid="6488158053932133804">"In wachtrij plaatsen voor later downloaden?"</string>
-    <string name="wifi_recommended_body" msgid="8710820743211704403">"Als je deze download van <xliff:g id="SIZE">%1$s </xliff:g> nu start, kan dit de levensduur van de batterij verkorten en/of leiden tot bovenmatig gebruik van je mobiele gegevensverbinding. Je provider kan hiervoor kosten rekenen.\n\n Raak \'<xliff:g id="QUEUE_TEXT">%2$s</xliff:g>\' aan om deze download te starten wanneer je verbinding hebt met een wifi-netwerk."</string>
+    <string name="wifi_recommended_body" msgid="8710820743211704403">"Als je deze download van <xliff:g id="SIZE">%1$s </xliff:g> nu start, kan dit de levensduur van de batterij verkorten en/of leiden tot bovenmatig gebruik van je mobiele-dataverbinding. Je provider kan hiervoor kosten rekenen.\n\n Raak \'<xliff:g id="QUEUE_TEXT">%2$s</xliff:g>\' aan om deze download te starten wanneer je verbinding hebt met een wifi-netwerk."</string>
     <string name="button_queue_for_wifi" msgid="6650185573566994738">"Wachtrij"</string>
     <string name="button_cancel_download" msgid="4135046775536601831">"Annuleren"</string>
     <string name="button_start_now" msgid="3817100969365441730">"Nu starten"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index a847b5a..3121473 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -40,7 +40,7 @@
     <string name="wifi_recommended_title" msgid="6488158053932133804">"ପରେ ଡାଉନଲୋଡ୍‌ କରିବା ପାଇଁ ଧାଡ଼ିରେ ରଖିବେ?"</string>
     <string name="wifi_recommended_body" msgid="8710820743211704403">"ଏହି <xliff:g id="SIZE">%1$s </xliff:g>ର ଡାଉନଲୋଡ୍‌ ଆରମ୍ଭ କଲେ ଆପଣଙ୍କ ବ୍ୟାଟେରୀ ଶୀଘ୍ର ସରିଯାଇପାରେ ଏବଂ/କିମ୍ୱା ମୋବାଇଲ୍‌ର ଅନେକ ଡାଟା ଖର୍ଚ୍ଚ ହୋଇପାରେ, ଯାହା ପାଇଁ ମୋବାଇଲ୍‌ ଅପରେଟର୍‌, ଆପଣଙ୍କ ଡାଟା ପ୍ଲାନ୍‌ ହିସାବରେ ଆପଣଙ୍କଠାରୁ ପଇସା ନେଇପାରେ|\n\n ଆଗାମୀ ଥର ଯେତେବେଳେ ଆପଣ ୱାଇ-ଫାଇ ନେଟୱର୍କ ସହିତ ଯୋଡ଼ିହେବେ, ଏହି ଡାଉନଲୋଡ୍‌ ଆରମ୍ଭ କରିବା ପାଇଁ <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>କୁ ସ୍ପର୍ଶ କରନ୍ତୁ|"</string>
     <string name="button_queue_for_wifi" msgid="6650185573566994738">"ଧାଡ଼ିରେ ରଖନ୍ତୁ"</string>
-    <string name="button_cancel_download" msgid="4135046775536601831">"କ୍ୟାନ୍ସଲ୍‍"</string>
+    <string name="button_cancel_download" msgid="4135046775536601831">"ବାତିଲ୍‍"</string>
     <string name="button_start_now" msgid="3817100969365441730">"ବର୍ତ୍ତମାନ ଆରମ୍ଭ କରନ୍ତୁ"</string>
     <plurals name="notif_summary_active" formatted="false" msgid="8652501374845637331">
       <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g>ଟି ଫାଇଲ୍‌ ଡାଉନଲୋଡ୍‌ ହେଉଛି</item>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 5debdfd..38e41b3 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -33,12 +33,12 @@
     <string name="download_unknown_title" msgid="1017800350818840396">"&lt;Без наслова&gt;"</string>
     <string name="notification_download_complete" msgid="466652037490092787">"Преузимање је завршено."</string>
     <string name="notification_download_failed" msgid="3932167763860605874">"Преузимање није успело."</string>
-    <string name="notification_need_wifi_for_size" msgid="4743443900432303646">"Величина ставке захтева Wi-Fi."</string>
+    <string name="notification_need_wifi_for_size" msgid="4743443900432303646">"Величина ставке захтева WiFi."</string>
     <string name="notification_paused_in_background" msgid="6393408819031041778">"Паузирано у позадини."</string>
     <string name="wifi_required_title" msgid="7266700488421122218">"Преузимање је превелико за мрежу оператера"</string>
-    <string name="wifi_required_body" msgid="4005023496578941958">"Морате да користите Wi-Fi да бисте довршили ово преузимање од <xliff:g id="SIZE">%1$s </xliff:g>. \n\nДодирните <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> да бисте започели ово преузимање када се следећи пут повежете са Wi-Fi мрежом."</string>
+    <string name="wifi_required_body" msgid="4005023496578941958">"Морате да користите WiFi да бисте довршили ово преузимање од <xliff:g id="SIZE">%1$s </xliff:g>. \n\nДодирните <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> да бисте започели ово преузимање када се следећи пут повежете са WiFi мрежом."</string>
     <string name="wifi_recommended_title" msgid="6488158053932133804">"Желите ли да ставите у ред за будуће преузимање?"</string>
-    <string name="wifi_recommended_body" msgid="8710820743211704403">"Овим преузимањем од <xliff:g id="SIZE">%1$s </xliff:g> можете да скратите век трајања батерије и/или претерано користите мобилну везу за пренос података, што може да доведе до трошкова код мобилног оператера сходно тарифном пакету.\n\n Додирните <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> да бисте започели ово преузимање када се поново повежете са Wi-Fi мрежом."</string>
+    <string name="wifi_recommended_body" msgid="8710820743211704403">"Овим преузимањем од <xliff:g id="SIZE">%1$s </xliff:g> можете да скратите век трајања батерије и/или претерано користите мобилну везу за пренос података, што може да доведе до трошкова код мобилног оператера сходно тарифном пакету.\n\n Додирните <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> да бисте започели ово преузимање када се поново повежете са WiFi мрежом."</string>
     <string name="button_queue_for_wifi" msgid="6650185573566994738">"Ред"</string>
     <string name="button_cancel_download" msgid="4135046775536601831">"Откажи"</string>
     <string name="button_start_now" msgid="3817100969365441730">"Започни одмах"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 1cf8233..b13fce7 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -23,11 +23,11 @@
     <string name="permlab_downloadManagerAdvanced" msgid="2225663947531460795">"అధునాతన డౌన్‌లోడ్ నిర్వాహికి ఫంక్షన్‌లు."</string>
     <string name="permdesc_downloadManagerAdvanced" msgid="3902478062563030716">"డౌన్‌లోడ్ మేనేజర్ యొక్క అధునాతన ఫంక్షన్‌లను యాక్సెస్ చేయడానికి యాప్‌ను అనుమతిస్తుంది. హానికరమైన యాప్‌లు డౌన్‌లోడ్‌లకు అంతరాయం కలిగించడానికి మరియు ప్రైవేట్ సమాచారాన్ని యాక్సెస్ చేయడానికి దీన్ని ఉపయోగించవచ్చు."</string>
     <string name="permlab_downloadCompletedIntent" msgid="2674407390116052956">"డౌన్‌లోడ్ నోటిఫికేషన్‌లను పంపండి."</string>
-    <string name="permdesc_downloadCompletedIntent" msgid="3384693829639860032">"పూర్తయిన డౌన్‌లోడ్‌ల గురించి నోటిఫికేషన్‌లను పంపడానికి అనువర్తనాన్ని అనుమతిస్తుంది. హానికరమైన అనువర్తనాలు ఫైల్‌లను డౌన్‌లోడ్ చేసే ఇతర అనువర్తనాలను తప్పుదారి పట్టించేందుకు దీన్ని ఉపయోగించవచ్చు."</string>
+    <string name="permdesc_downloadCompletedIntent" msgid="3384693829639860032">"పూర్తయిన డౌన్‌లోడ్‌ల గురించి నోటిఫికేషన్‌లను పంపడానికి యాప్‌ను అనుమతిస్తుంది. హానికరమైన యాప్‌లు ఫైల్‌లను డౌన్‌లోడ్ చేసే ఇతర అనువర్తనాలను తప్పుదారి పట్టించేందుకు దీన్ని ఉపయోగించవచ్చు."</string>
     <string name="permlab_downloadCacheNonPurgeable" msgid="4538031250425141333">"డౌన్‌లోడ్ కాష్‌లో స్థలాన్ని నిల్వ చేయడం"</string>
-    <string name="permdesc_downloadCacheNonPurgeable" msgid="3071381088686444674">"డౌన్‌లోడ్ కాష్‌కు ఫైల్‌లను డౌన్‌లోడ్ చేయడానికి అనువర్తనాన్ని అనుమతిస్తుంది, డౌన్‌లోడ్ నిర్వాహికికి మరింత స్థలం అవసరమైనప్పుడు అవి స్వయంచాలకంగా తొలగించబడవు."</string>
+    <string name="permdesc_downloadCacheNonPurgeable" msgid="3071381088686444674">"డౌన్‌లోడ్ కాష్‌కు ఫైల్‌లను డౌన్‌లోడ్ చేయడానికి యాప్‌ను అనుమతిస్తుంది, డౌన్‌లోడ్ నిర్వాహికికి మరింత స్థలం అవసరమైనప్పుడు అవి స్వయంచాలకంగా తొలగించబడవు."</string>
     <string name="permlab_downloadWithoutNotification" msgid="4877101864770265405">"నోటిఫికేషన్ లేకుండానే ఫైల్‌లను డౌన్‌లోడ్ చేయడం"</string>
-    <string name="permdesc_downloadWithoutNotification" msgid="7699189763226483523">"వినియోగదారుకి ఎటువంటి నోటిఫికేషన్‌ను చూపకుండానే డౌన్‌లోడ్ నిర్వాహికి ద్వారా ఫైల్‌లను డౌన్‌లోడ్ చేయడానికి అనువర్తనాన్ని అనుమతిస్తుంది."</string>
+    <string name="permdesc_downloadWithoutNotification" msgid="7699189763226483523">"వినియోగదారుకి ఎటువంటి నోటిఫికేషన్‌ను చూపకుండానే డౌన్‌లోడ్ నిర్వాహికి ద్వారా ఫైల్‌లను డౌన్‌లోడ్ చేయడానికి యాప్‌ను అనుమతిస్తుంది."</string>
     <string name="permlab_accessAllDownloads" msgid="8227356876527248611">"అన్ని సిస్టమ్ డౌన్‌లోడ్‌లను యాక్సెస్ చేయి"</string>
     <string name="permdesc_accessAllDownloads" msgid="7541731738152145079">"సిస్టమ్‌లో ఏదైనా యాప్ ద్వారా ప్రారంభించబడిన అన్ని డౌన్‌లోడ్‌లను వీక్షించడానికి మరియు సవరించడానికి యాప్‌ను అనుమతిస్తుంది."</string>
     <string name="download_unknown_title" msgid="1017800350818840396">"&lt;శీర్షిక లేనిది&gt;"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index a7b2dde..f20639d 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -38,7 +38,7 @@
     <string name="wifi_required_title" msgid="7266700488421122218">"ดาวน์โหลดมีขนาดใหญ่เกินไปสำหรับเครือข่ายผู้ให้บริการ"</string>
     <string name="wifi_required_body" msgid="4005023496578941958">"คุณต้องใช้ WiFi เพื่อดาวน์โหลดไฟล์ขนาด <xliff:g id="SIZE">%1$s </xliff:g> นี้ให้เสร็จสิ้น\n\nแตะ <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> เพื่อเริ่มการดาวน์โหลดนี้ในครั้งต่อไปที่คุณเชื่อมต่อเครือข่าย WiFi"</string>
     <string name="wifi_recommended_title" msgid="6488158053932133804">"ต่อคิวเพื่อดาวน์โหลดในภายหลังหรือไม่"</string>
-    <string name="wifi_recommended_body" msgid="8710820743211704403">"การเริ่มดาวน์โหลดรายการขนาด <xliff:g id="SIZE">%1$s </xliff:g> ตอนนี้อาจลดเวลาใช้งานแบตเตอรี่และ/หรือทำให้ใช้งานข้อมูลผ่านมือถือมากไป ซึ่งผู้ให้บริการจะเก็บค่าใช้จ่ายตามแผนการใช้งานข้อมูลของคุณ\n\nแตะ <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> เพื่อเริ่มการดาวน์โหลดนี้ในครั้งต่อไปที่เชื่อมต่อเครือข่าย WiFi"</string>
+    <string name="wifi_recommended_body" msgid="8710820743211704403">"การเริ่มดาวน์โหลดรายการขนาด <xliff:g id="SIZE">%1$s </xliff:g> ตอนนี้อาจลดเวลาใช้งานแบตเตอรี่และ/หรือทำให้ใช้งานการเชื่อมต่ออินเทอร์เน็ตมือถือมากไป ซึ่งผู้ให้บริการจะเก็บค่าใช้จ่ายตามแผนการใช้งานข้อมูลของคุณ\n\nแตะ <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> เพื่อเริ่มการดาวน์โหลดนี้ในครั้งต่อไปที่เชื่อมต่อเครือข่าย WiFi"</string>
     <string name="button_queue_for_wifi" msgid="6650185573566994738">"คิว"</string>
     <string name="button_cancel_download" msgid="4135046775536601831">"ยกเลิก"</string>
     <string name="button_start_now" msgid="3817100969365441730">"เริ่มต้นเดี๋ยวนี้"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 93ca3f9..8c4fbee 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -31,7 +31,7 @@
     <string name="permlab_accessAllDownloads" msgid="8227356876527248611">"Truy cập tất cả các bản tải xuống trong hệ thống"</string>
     <string name="permdesc_accessAllDownloads" msgid="7541731738152145079">"Cho phép ứng dụng xem và sửa đổi tất cả các bản tải xuống được khởi tạo bởi bất kỳ ứng dụng nào trên hệ thống."</string>
     <string name="download_unknown_title" msgid="1017800350818840396">"&lt;Không có tiêu đề&gt;"</string>
-    <string name="notification_download_complete" msgid="466652037490092787">"Tải xuống hoàn tất."</string>
+    <string name="notification_download_complete" msgid="466652037490092787">"Đã tải xuống xong."</string>
     <string name="notification_download_failed" msgid="3932167763860605874">"Tải xuống không thành công."</string>
     <string name="notification_need_wifi_for_size" msgid="4743443900432303646">"Yêu cầu Wi-Fi."</string>
     <string name="notification_paused_in_background" msgid="6393408819031041778">"Đã tạm dừng trong nền."</string>
diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java
index 36304aa..b6f70e3 100644
--- a/src/com/android/providers/downloads/DownloadStorageProvider.java
+++ b/src/com/android/providers/downloads/DownloadStorageProvider.java
@@ -67,6 +67,7 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Set;
 
 /**
@@ -251,7 +252,7 @@
 
             displayName = FileUtils.buildValidFatFilename(displayName);
             if (isMediaStoreDownload(docId)) {
-                renameMediaStoreDownload(docId, displayName);
+                return renameMediaStoreDownload(docId, displayName);
             } else {
                 final long id = Long.parseLong(docId);
                 if (!mDm.rename(getContext(), id, displayName)) {
@@ -769,7 +770,7 @@
         return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
     }
 
-    private void renameMediaStoreDownload(String docId, String displayName) {
+    private String renameMediaStoreDownload(String docId, String displayName) {
         final File before = getFileForMediaStoreDownload(docId);
         final File after = new File(before.getParentFile(), displayName);
 
@@ -780,21 +781,30 @@
             throw new IllegalStateException("Failed to rename from " + before + " to " + after);
         }
 
-        final long token = Binder.clearCallingIdentity();
-        try {
-            final Uri mediaStoreUri = getMediaStoreUri(docId);
-            final ContentValues values = new ContentValues();
-            values.put(DownloadColumns.DATA, after.getAbsolutePath());
-            values.put(DownloadColumns.DISPLAY_NAME, displayName);
-            final int count = getContext().getContentResolver().update(mediaStoreUri, values,
-                    null, null);
-            if (count != 1) {
-                throw new IllegalStateException("Failed to update " + mediaStoreUri
-                        + ", values=" + values);
-            }
-        } finally {
-            Binder.restoreCallingIdentity(token);
+        final String noMedia = ".nomedia";
+        // Scan the file to update the database
+        // For file, check whether the file is renamed to .nomedia. If yes, to scan the parent
+        // directory to update all files in the directory. We don't consider the case of renaming
+        // .nomedia file. We don't show .nomedia file.
+        if (!after.isDirectory() && displayName.toLowerCase(Locale.ROOT).endsWith(noMedia)) {
+            final Uri newUri = MediaStore.scanFile(getContext().getContentResolver(),
+                    after.getParentFile());
+            // the file will not show in the list, return the parent docId to avoid not finding
+            // the detail for the file.
+            return getDocIdForMediaStoreDownloadUri(newUri, true /* isDir */);
         }
+        // update the database for the old file
+        MediaStore.scanFile(getContext().getContentResolver(), before);
+        // Update tne database for the new file and get the new uri
+        final Uri newUri = MediaStore.scanFile(getContext().getContentResolver(), after);
+        return getDocIdForMediaStoreDownloadUri(newUri, after.isDirectory());
+    }
+
+    private static String getDocIdForMediaStoreDownloadUri(Uri uri, boolean isDir) {
+        if (uri != null) {
+            return getDocIdForMediaStoreDownload(Long.parseLong(uri.getLastPathSegment()), isDir);
+        }
+        return null;
     }
 
     private File getFileForMediaStoreDownload(String docId) {
diff --git a/ui/res/values-bs/strings.xml b/ui/res/values-bs/strings.xml
index 245526d..63a99f5 100644
--- a/ui/res/values-bs/strings.xml
+++ b/ui/res/values-bs/strings.xml
@@ -32,8 +32,8 @@
     <string name="dialog_title_queued_body" msgid="7481231558376227012">"Fajl je u redu čekanja"</string>
     <string name="dialog_queued_body" msgid="2374398802707010234">"Fajl je u redu čekanja za kasnije preuzimanje tako da još nije dostupan."</string>
     <string name="dialog_file_missing_body" msgid="7896653198405160564">"Nije moguće pronaći preuzetu datoteku."</string>
-    <string name="dialog_insufficient_space_on_external" msgid="1847671628253287114">"Nije moguće dovršiti preuzimanje. Nema dovoljno prostora na eksternoj pohrani."</string>
-    <string name="dialog_insufficient_space_on_cache" msgid="703074452633529558">"Nije moguće dovršiti preuzimanje. Nema dovoljno prostora na internoj pohrani za preuzimanja."</string>
+    <string name="dialog_insufficient_space_on_external" msgid="1847671628253287114">"Nije moguće dovršiti preuzimanje. Nema dovoljno prostora na vanjskoj pohrani."</string>
+    <string name="dialog_insufficient_space_on_cache" msgid="703074452633529558">"Nije moguće dovršiti preuzimanje. Nema dovoljno prostora na unutrašnjoj pohrani za preuzimanja."</string>
     <string name="dialog_cannot_resume" msgid="3101433441301206866">"Preuzimanje je prekinuto i ne može se nastaviti."</string>
     <string name="dialog_file_already_exists" msgid="6849168874901909994">"Nije moguće preuzeti. Odredišni fajl već postoji."</string>
     <string name="dialog_media_not_found" msgid="7376030905821161865">"Nije moguće preuzeti. Vanjski medij nije dostupan."</string>
diff --git a/ui/res/values-fa/strings.xml b/ui/res/values-fa/strings.xml
index 27e2501..42c7a61 100644
--- a/ui/res/values-fa/strings.xml
+++ b/ui/res/values-fa/strings.xml
@@ -21,8 +21,8 @@
     <string name="download_title_sorted_by_size" msgid="2575551670173644253">"بارگیری‌ها - مرتب شده براساس اندازه"</string>
     <string name="no_downloads" msgid="1654764193290918538">"نه بارگیری‌ها."</string>
     <string name="missing_title" msgid="3827247802608803753">"‏&lt;ناشناس&gt;"</string>
-    <string name="button_sort_by_size" msgid="7952187121189086395">"مرتب‌سازی براساس اندازه"</string>
-    <string name="button_sort_by_date" msgid="2064919145709585942">"ترتیب براساس تاریخ"</string>
+    <string name="button_sort_by_size" msgid="7952187121189086395">"به‌ترتیب اندازه"</string>
+    <string name="button_sort_by_date" msgid="2064919145709585942">"به‌ترتیب تاریخ"</string>
     <string name="download_queued" msgid="4128038702528588781">"در صف"</string>
     <string name="download_running" msgid="2046492059586594352">"در حال انجام"</string>
     <string name="download_success" msgid="3895973294927323747">"کامل"</string>
diff --git a/ui/res/values-in/strings.xml b/ui/res/values-in/strings.xml
index 709cb44..bc32e79 100644
--- a/ui/res/values-in/strings.xml
+++ b/ui/res/values-in/strings.xml
@@ -24,7 +24,7 @@
     <string name="button_sort_by_size" msgid="7952187121189086395">"Urutkan menurut ukuran"</string>
     <string name="button_sort_by_date" msgid="2064919145709585942">"Urutkan menurut tanggal"</string>
     <string name="download_queued" msgid="4128038702528588781">"Dalam antrean"</string>
-    <string name="download_running" msgid="2046492059586594352">"Sedang berlangsung"</string>
+    <string name="download_running" msgid="2046492059586594352">"Dalam proses"</string>
     <string name="download_success" msgid="3895973294927323747">"Selesai"</string>
     <string name="download_error" msgid="6652902885480887230">"Gagal"</string>
     <string name="dialog_title_not_available" msgid="7793272183758002416">"Tidak dapat mendownload"</string>
diff --git a/ui/res/values-mk/strings.xml b/ui/res/values-mk/strings.xml
index dacbb6e..07c9c47 100644
--- a/ui/res/values-mk/strings.xml
+++ b/ui/res/values-mk/strings.xml
@@ -27,7 +27,7 @@
     <string name="download_running" msgid="2046492059586594352">"Во тек е"</string>
     <string name="download_success" msgid="3895973294927323747">"Целосно"</string>
     <string name="download_error" msgid="6652902885480887230">"Неуспешно"</string>
-    <string name="dialog_title_not_available" msgid="7793272183758002416">"Не можеше да се преземе"</string>
+    <string name="dialog_title_not_available" msgid="7793272183758002416">"Не може да се преземе"</string>
     <string name="dialog_failed_body" msgid="4538779125597383173">"Сакате повторно да се обиде со преземање на датотеката подоцна или да се избрише од редот?"</string>
     <string name="dialog_title_queued_body" msgid="7481231558376227012">"Датотеката е во ред на чекање"</string>
     <string name="dialog_queued_body" msgid="2374398802707010234">"Оваа датотека е ставена во ред начекање да се преземе во иднина и сè уште не е достапна."</string>
diff --git a/ui/res/values-nl/strings.xml b/ui/res/values-nl/strings.xml
index 8f8f202..acf9af2 100644
--- a/ui/res/values-nl/strings.xml
+++ b/ui/res/values-nl/strings.xml
@@ -44,7 +44,7 @@
     <string name="cancel_running_download" msgid="8586888328847044473">"Annuleren"</string>
     <string name="retry_download" msgid="6957856437473044831">"Opnieuw proberen"</string>
     <string name="start_now_download" msgid="1518778561803897734">"Nu starten"</string>
-    <string name="deselect_all" msgid="4673983454506880405">"Alle selecties opheffen"</string>
+    <string name="deselect_all" msgid="4673983454506880405">"Alles deselecteren"</string>
     <string name="select_all" msgid="7469093306474000460">"Alles selecteren"</string>
     <string name="selected_count" msgid="5876842902167894010">"<xliff:g id="NUMBER">%1$d</xliff:g> van <xliff:g id="TOTAL">%2$d</xliff:g> geselecteerd"</string>
     <string name="download_share_dialog" msgid="5212760257251501969">"Delen via"</string>
diff --git a/ui/res/values-or/strings.xml b/ui/res/values-or/strings.xml
index ab109fe..62079ee 100644
--- a/ui/res/values-or/strings.xml
+++ b/ui/res/values-or/strings.xml
@@ -41,7 +41,7 @@
     <string name="remove_download" msgid="244394809285977300">"କାଢ଼ିଦିଅନ୍ତୁ"</string>
     <string name="delete_download" msgid="1861638125603383676">"ଡିଲିଟ୍‌ କରନ୍ତୁ"</string>
     <string name="keep_queued_download" msgid="6905870466259272973">"Keep"</string>
-    <string name="cancel_running_download" msgid="8586888328847044473">"କ୍ୟାନ୍ସଲ୍‍"</string>
+    <string name="cancel_running_download" msgid="8586888328847044473">"ବାତିଲ୍‍"</string>
     <string name="retry_download" msgid="6957856437473044831">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
     <string name="start_now_download" msgid="1518778561803897734">"ବର୍ତ୍ତମାନ ଆରମ୍ଭ କରନ୍ତୁ"</string>
     <string name="deselect_all" msgid="4673983454506880405">"କିଛି ବି ଚୟନ କରନ୍ତୁ ନାହିଁ"</string>