summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Howard <showard@google.com>2010-08-03 12:39:35 -0700
committerSteve Howard <showard@google.com>2010-08-18 09:04:11 -0700
commita89321ea04ced76d06f60f5909be203cb654a830 (patch)
treebc5dae79a256caeeab9c6b0a7d64c1b67cdb1555
parentadb6887d3270d180c94eaf90878d5b67d74a8f28 (diff)
downloadandroid_packages_providers_DownloadProvider-a89321ea04ced76d06f60f5909be203cb654a830.tar.gz
android_packages_providers_DownloadProvider-a89321ea04ced76d06f60f5909be203cb654a830.tar.bz2
android_packages_providers_DownloadProvider-a89321ea04ced76d06f60f5909be203cb654a830.zip
Fix and test handling of null/empty download fields.
Minor change to make title/description default to blank stings, and add test case covering all null/empty download fields. Change-Id: Id44344bc2e464f46589faed49c8f383a45a8d329
-rw-r--r--src/com/android/providers/downloads/DownloadProvider.java12
-rw-r--r--tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java12
2 files changed, 22 insertions, 2 deletions
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java
index 4fcae227..f6b091b1 100644
--- a/src/com/android/providers/downloads/DownloadProvider.java
+++ b/src/com/android/providers/downloads/DownloadProvider.java
@@ -415,8 +415,8 @@ public final class DownloadProvider extends ContentProvider {
if (Binder.getCallingUid() == 0) {
copyInteger(Constants.UID, values, filteredValues);
}
- copyString(Downloads.Impl.COLUMN_TITLE, values, filteredValues);
- copyString(Downloads.Impl.COLUMN_DESCRIPTION, values, filteredValues);
+ copyStringWithDefault(Downloads.Impl.COLUMN_TITLE, values, filteredValues, "");
+ copyStringWithDefault(Downloads.Impl.COLUMN_DESCRIPTION, values, filteredValues, "");
filteredValues.put(Downloads.Impl.COLUMN_TOTAL_BYTES, -1);
if (isPublicApi) {
@@ -986,6 +986,14 @@ public final class DownloadProvider extends ContentProvider {
}
}
+ private static final void copyStringWithDefault(String key, ContentValues from,
+ ContentValues to, String defaultValue) {
+ copyString(key, from, to);
+ if (!to.containsKey(key)) {
+ to.put(key, defaultValue);
+ }
+ }
+
private class ReadOnlyCursorWrapper extends CursorWrapper implements CrossProcessCursor {
public ReadOnlyCursorWrapper(Cursor cursor) {
super(cursor);
diff --git a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
index 6d604778..cf2b990c 100644
--- a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
+++ b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
@@ -482,6 +482,18 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest {
download.getLongField(DownloadManager.COLUMN_ERROR_CODE));
}
+ public void testEmptyFields() throws Exception {
+ Download download = enqueueRequest(getRequest());
+ assertNull(download.getStringField(DownloadManager.COLUMN_LOCAL_URI));
+ assertEquals("", download.getStringField(DownloadManager.COLUMN_TITLE));
+ assertEquals("", download.getStringField(DownloadManager.COLUMN_DESCRIPTION));
+ assertNull(download.getStringField(DownloadManager.COLUMN_MEDIA_TYPE));
+ assertEquals(0, download.getLongField(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
+ assertEquals(-1, download.getLongField(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
+ // just ensure no exception is thrown
+ download.getLongField(DownloadManager.COLUMN_ERROR_CODE);
+ }
+
private void checkCompleteDownload(Download download) throws Exception {
assertEquals(FILE_CONTENT.length(),
download.getLongField(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));