summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJeff Davidson <jpd@google.com>2011-08-30 12:48:57 -0700
committerJeff Davidson <jpd@google.com>2011-08-30 12:48:57 -0700
commitc21507f025f7422429975442792a6c7e279378da (patch)
tree4634ca9708bced47fa5f818b025ceaa79dec7486 /src
parentce3f6100a62a184d01125f3f4c5ece66c611bacc (diff)
downloadandroid_packages_providers_DownloadProvider-c21507f025f7422429975442792a6c7e279378da.tar.gz
android_packages_providers_DownloadProvider-c21507f025f7422429975442792a6c7e279378da.tar.bz2
android_packages_providers_DownloadProvider-c21507f025f7422429975442792a6c7e279378da.zip
Don't change extensions for explicitly set download locations.
This regression from GB was introduced by 38f1711910715538d6b64e505fe8fb9a0cd40475, which was intended to allow duplicate downloads of the same file, adding -<n> to the end of file names. As a side effect, this also activated extension validation logic, which adds/changes an extension to match the Mimetype. This change keeps the unique filename logic but prevents extension changes when an explicit filename is set. Thus, it is still possible for the actual download location to differ from the requested one, but only if the file already exists. Bug: 5196436 Change-Id: I198dc2a819c5d839a05b72c25e0830d889a9c5a3
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/downloads/Helpers.java26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index cc7311de..359f6fa4 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -97,18 +97,28 @@ public class Helpers {
return path;
}
- static String getFullPath(String filename, String mimeType, int destination,
- File base) throws StopRequestException {
- // Split filename between base and extension
- // Add an extension if filename does not have one
+ static String getFullPath(String filename, String mimeType, int destination, File base)
+ throws StopRequestException {
String extension = null;
int dotIndex = filename.lastIndexOf('.');
boolean missingExtension = dotIndex < 0 || dotIndex < filename.lastIndexOf('/');
- if (missingExtension) {
- extension = chooseExtensionFromMimeType(mimeType, true);
+ if (destination == Downloads.Impl.DESTINATION_FILE_URI) {
+ // Destination is explicitly set - do not change the extension
+ if (missingExtension) {
+ extension = "";
+ } else {
+ extension = filename.substring(dotIndex);
+ filename = filename.substring(0, dotIndex);
+ }
} else {
- extension = chooseExtensionFromFilename(mimeType, destination, filename, dotIndex);
- filename = filename.substring(0, dotIndex);
+ // Split filename between base and extension
+ // Add an extension if filename does not have one
+ if (missingExtension) {
+ extension = chooseExtensionFromMimeType(mimeType, true);
+ } else {
+ extension = chooseExtensionFromFilename(mimeType, destination, filename, dotIndex);
+ filename = filename.substring(0, dotIndex);
+ }
}
boolean recoveryDir = Constants.RECOVERY_DIRECTORY.equalsIgnoreCase(filename + extension);