summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Howard <showard@google.com>2010-08-18 09:05:12 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-08-18 09:05:12 -0700
commit7bdfb134c6c1c4e3d4c5da61327e62bc38407c95 (patch)
tree5c998b1ece8a293c55962d17fb61be8c7693cbd1
parent0937e177818843f24a9d6b17c06fadb21886d005 (diff)
parenta89321ea04ced76d06f60f5909be203cb654a830 (diff)
downloadandroid_packages_providers_DownloadProvider-7bdfb134c6c1c4e3d4c5da61327e62bc38407c95.tar.gz
android_packages_providers_DownloadProvider-7bdfb134c6c1c4e3d4c5da61327e62bc38407c95.tar.bz2
android_packages_providers_DownloadProvider-7bdfb134c6c1c4e3d4c5da61327e62bc38407c95.zip
Merge "Fix and test handling of null/empty download fields." into gingerbread
-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));