diff options
-rw-r--r-- | src/com/android/providers/downloads/DownloadProvider.java | 12 | ||||
-rw-r--r-- | tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java | 12 |
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)); |