Merge "Interface support for custom HTTP headers in DL manager" into gingerbread

This commit is contained in:
Steve Howard
2010-07-15 12:24:14 -07:00
committed by Android (Google) Code Review
2 changed files with 31 additions and 2 deletions

View File

@@ -350,8 +350,7 @@ public class DownloadManager {
}
if (!mRequestHeaders.isEmpty()) {
// TODO request headers support
throw new UnsupportedOperationException();
encodeHttpHeaders(values);
}
putIfNonNull(values, Downloads.COLUMN_TITLE, mTitle);
@@ -367,6 +366,15 @@ public class DownloadManager {
return values;
}
private void encodeHttpHeaders(ContentValues values) {
int index = 0;
for (Map.Entry<String, String> entry : mRequestHeaders.entrySet()) {
String headerString = entry.getKey() + ": " + entry.getValue();
values.put(Downloads.Impl.RequestHeaders.INSERT_KEY_PREFIX + index, headerString);
index++;
}
}
private void putIfNonNull(ContentValues contentValues, String key, String value) {
if (value != null) {
contentValues.put(key, value);

View File

@@ -1115,5 +1115,26 @@ public final class Downloads {
* This download doesn't show in the UI or in the notifications.
*/
public static final int VISIBILITY_HIDDEN = 2;
/**
* Constants related to HTTP request headers associated with each download.
*/
public static class RequestHeaders {
public static final String HEADERS_DB_TABLE = "request_headers";
public static final String COLUMN_DOWNLOAD_ID = "download_id";
public static final String COLUMN_HEADER = "header";
public static final String COLUMN_VALUE = "value";
/**
* Path segment to add to a download URI to retrieve request headers
*/
public static final String URI_SEGMENT = "headers";
/**
* Prefix for ContentValues keys that contain HTTP header lines, to be passed to
* DownloadProvider.insert().
*/
public static final String INSERT_KEY_PREFIX = "http_header_";
}
}
}