Snap for 7316203 from 07dd9d4b0952897b4c6c079432ab5201dba86ead to rvc-platform-release

Change-Id: I836a302f59f12ba8c238d095bd815d3bd1817b58
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-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-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-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/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-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>