From ebb555c0687061993dd6a22d15f6aab2437ee8c5 Mon Sep 17 00:00:00 2001 From: Steve Howard Date: Wed, 22 Sep 2010 15:57:30 -0700 Subject: Support multi-valued HTTP headers, handle new API changes * backend support for multiple values for the same HTTP headers, for corresponding API changes * other minor changes in response to DownloadManager API changes Change-Id: I7c595e94a60ed7afaca6cc3fb4c05aaeeff20c2a --- .../android/providers/downloads/DownloadInfo.java | 26 ++++++++++++---------- .../providers/downloads/DownloadThread.java | 6 ++--- 2 files changed, 17 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/com/android/providers/downloads/DownloadInfo.java b/src/com/android/providers/downloads/DownloadInfo.java index 467af836..2196cfc6 100644 --- a/src/com/android/providers/downloads/DownloadInfo.java +++ b/src/com/android/providers/downloads/DownloadInfo.java @@ -30,10 +30,12 @@ import android.net.Uri; import android.provider.Downloads; import android.provider.Downloads.Impl; import android.util.Log; +import android.util.Pair; +import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; -import java.util.HashMap; -import java.util.Map; +import java.util.List; /** * Stores information about an individual download. @@ -106,21 +108,24 @@ public class DownloadInfo { int valueIndex = cursor.getColumnIndexOrThrow(Downloads.Impl.RequestHeaders.COLUMN_VALUE); for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { - info.mRequestHeaders.put( - cursor.getString(headerIndex), cursor.getString(valueIndex)); + addHeader(info, cursor.getString(headerIndex), cursor.getString(valueIndex)); } } finally { cursor.close(); } if (info.mCookies != null) { - info.mRequestHeaders.put("Cookie", info.mCookies); + addHeader(info, "Cookie", info.mCookies); } if (info.mReferer != null) { - info.mRequestHeaders.put("Referer", info.mReferer); + addHeader(info, "Referer", info.mReferer); } } + private void addHeader(DownloadInfo info, String header, String value) { + info.mRequestHeaders.add(Pair.create(header, value)); + } + /** * Returns a String that holds the current value of the column, optimizing for the case * where the value hasn't changed. @@ -228,7 +233,7 @@ public class DownloadInfo { public volatile boolean mHasActiveThread; - private Map mRequestHeaders = new HashMap(); + private List> mRequestHeaders = new ArrayList>(); private SystemFacade mSystemFacade; private Context mContext; @@ -238,8 +243,8 @@ public class DownloadInfo { mFuzz = Helpers.sRandom.nextInt(1001); } - public Map getHeaders() { - return Collections.unmodifiableMap(mRequestHeaders); + public Collection> getHeaders() { + return Collections.unmodifiableList(mRequestHeaders); } public void sendIntentIfRequested() { @@ -415,9 +420,6 @@ public class DownloadInfo { case ConnectivityManager.TYPE_WIFI: return DownloadManager.Request.NETWORK_WIFI; - case ConnectivityManager.TYPE_WIMAX: - return DownloadManager.Request.NETWORK_WIMAX; - default: return 0; } diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java index 79778b0c..12ddfa60 100644 --- a/src/com/android/providers/downloads/DownloadThread.java +++ b/src/com/android/providers/downloads/DownloadThread.java @@ -28,6 +28,7 @@ import android.provider.Downloads; import android.provider.DrmStore; import android.util.Config; import android.util.Log; +import android.util.Pair; import org.apache.http.Header; import org.apache.http.HttpResponse; @@ -42,7 +43,6 @@ import java.io.SyncFailedException; import java.net.URI; import java.net.URISyntaxException; import java.util.Locale; -import java.util.Map; /** * Runs an actual download @@ -857,8 +857,8 @@ public class DownloadThread extends Thread { * Add custom headers for this download to the HTTP request. */ private void addRequestHeaders(InnerState innerState, HttpGet request) { - for (Map.Entry header : mInfo.getHeaders().entrySet()) { - request.addHeader(header.getKey(), header.getValue()); + for (Pair header : mInfo.getHeaders()) { + request.addHeader(header.first, header.second); } if (innerState.mContinuingDownload) { -- cgit v1.2.3