Make DownloadProvider accessible for public API usage.
authorSteve Howard <showard@google.com>
Thu, 22 Jul 2010 18:33:50 +0000 (11:33 -0700)
committerSteve Howard <showard@google.com>
Fri, 23 Jul 2010 01:38:51 +0000 (18:38 -0700)
commitb06b739b078ce4b00600487cfec31659647bf31f
tree9cfe924b01710eb1c7a6ad7b553fdabb05106843
parent0d8d89105c00edbad95a268aaae65f2ff94ed5a1
Make DownloadProvider accessible for public API usage.

This change removes the requirement that apps have the
ACCESS_DOWNLOAD_MANAGER permission in order to access
DownloadProvider.  This enables the public API to work.  Instead,
DownloadProvider enforces the new permissions model for the public
API:
* insert() requires INTERNET permission
* insert() checks that input fits within the restricted input allowed
  for the public API
* insert() also strictly checks the file URI provided with
  DESTINATION_FILE_URI (and still requires WRITE_EXTERNAL_STORAGE
  permission if that is supplied)

Note that if an app has the ACCESS_DOWNLOAD_MANAGER permission, legacy
behavior is retained.

I've added a test to cover this new access, and updated the existing
permissions tests.

I also fixed a bug in WHERE clause construction in update() and
delete(), and refactored the code to eliminate duplication.

Change-Id: I53a08df137b35c2788c36350276c9dff24858af1
AndroidManifest.xml
src/com/android/providers/downloads/DownloadProvider.java
src/com/android/providers/downloads/Helpers.java
tests/permission/src/com/android/providers/downloads/permission/tests/DownloadProviderPermissionsTest.java
tests/public_api_access/Android.mk [new file with mode: 0644]
tests/public_api_access/AndroidManifest.xml [new file with mode: 0644]
tests/public_api_access/src/com/android/providers/downloads/public_api_access_tests/PublicApiAccessTest.java [new file with mode: 0644]