diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-27 15:39:32 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-27 15:39:32 -0700 |
commit | e0114021be2a1ca49a8cba85bb88129d3a19d173 (patch) | |
tree | 8e37310aa30340464f871dbc33e5e2eba5c1f64f /src | |
parent | 977d38d21876fbc39598ff0a966a27db92ee1d59 (diff) | |
parent | 9ae5f517f7699439b673330867b26ffc5ad880cc (diff) | |
download | android_packages_providers_DownloadProvider-e0114021be2a1ca49a8cba85bb88129d3a19d173.tar.gz android_packages_providers_DownloadProvider-e0114021be2a1ca49a8cba85bb88129d3a19d173.tar.bz2 android_packages_providers_DownloadProvider-e0114021be2a1ca49a8cba85bb88129d3a19d173.zip |
Merge commit 'korg/cupcake'
Conflicts:
src/com/android/providers/downloads/DownloadThread.java
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/providers/downloads/DownloadThread.java | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java index e7872296..7703d14d 100644 --- a/src/com/android/providers/downloads/DownloadThread.java +++ b/src/com/android/providers/downloads/DownloadThread.java @@ -46,6 +46,7 @@ import java.io.InputStream; import java.io.SyncFailedException; import java.net.URI; import java.net.URISyntaxException; +import java.util.Locale; /** * Runs an actual download @@ -86,7 +87,7 @@ public class DownloadThread extends Thread { String newUri = null; boolean gotData = false; String filename = null; - String mimeType = mInfo.mMimeType; + String mimeType = sanitizeMimeType(mInfo.mMimeType); FileOutputStream stream = null; AndroidHttpClient client = null; PowerManager.WakeLock wakeLock = null; @@ -354,11 +355,7 @@ http_request_loop: if (mimeType == null) { header = response.getFirstHeader("Content-Type"); if (header != null) { - mimeType = header.getValue(); - final int semicolonIndex = mimeType.indexOf(';'); - if (semicolonIndex != -1) { - mimeType = mimeType.substring(0, semicolonIndex); - } + mimeType = sanitizeMimeType(header.getValue()); } } header = response.getFirstHeader("ETag"); @@ -740,4 +737,24 @@ http_request_loop: mInfo.sendIntentIfRequested(uri, mContext); } + /** + * Clean up a mimeType string so it can be used to dispatch an intent to + * view a downloaded asset. + * @param mimeType either null or one or more mime types (semi colon separated). + * @return null if mimeType was null. Otherwise a string which represents a + * single mimetype in lowercase and with surrounding whitespaces trimmed. + */ + private String sanitizeMimeType(String mimeType) { + try { + mimeType = mimeType.trim().toLowerCase(Locale.ENGLISH); + + final int semicolonIndex = mimeType.indexOf(';'); + if (semicolonIndex != -1) { + mimeType = mimeType.substring(0, semicolonIndex); + } + return mimeType; + } catch (NullPointerException npe) { + return null; + } + } } |