OSDN Git Service

Stronger DocumentsProvider contract.
authorJeff Sharkey <jsharkey@android.com>
Wed, 28 Aug 2013 01:26:48 +0000 (18:26 -0700)
committerJeff Sharkey <jsharkey@android.com>
Thu, 29 Aug 2013 03:49:42 +0000 (20:49 -0700)
commitaeb16e2435f9975b9fa1fc4b747796647a21292e
tree2e228b0ca25799bf59472d5df08d71e068498b2b
parent61f0f9ada51a6718075acfe7fafbb9954f38e980
Stronger DocumentsProvider contract.

Using a contract class requires that a provider implement it exactly
with little help. This change introduces a DocumentsProvider abstract
class that provides a client-side implementation of the contract that
greatly reduces developer burden, and improves correctness.

This also moves to first-class DocumentRoot objects, and moves calls
with complex side effects to be ContentProvider.call() invocations,
offering more granular permission control over Uri operations that
shouldn't be available through Uri grants.

This new design also relaxes the requirement that root information be
burned into every Uri.  Migrate ExternalDocumentsProvider and
DocumentsUI to adopt new API.

Bug: 10497206
Change-Id: I6f2b3f519bfd62a9d693223ea5628a971ce2e743
23 files changed:
api/current.txt
core/java/android/content/ContentProviderClient.java
core/java/android/content/Intent.java
core/java/android/os/Bundle.java
core/java/android/provider/DocumentsContract.java
core/java/android/provider/DocumentsProvider.java [new file with mode: 0644]
packages/DocumentsUI/AndroidManifest.xml
packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java
packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
packages/DocumentsUI/src/com/android/documentsui/DirectoryLoader.java
packages/DocumentsUI/src/com/android/documentsui/DocumentChangedReceiver.java
packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java
packages/DocumentsUI/src/com/android/documentsui/RootsCache.java
packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
packages/DocumentsUI/src/com/android/documentsui/model/Document.java
packages/DocumentsUI/src/com/android/documentsui/model/DocumentStack.java
packages/DocumentsUI/src/com/android/documentsui/model/DocumentsProviderInfo.java [deleted file]
packages/DocumentsUI/src/com/android/documentsui/model/Root.java [deleted file]
packages/ExternalStorageProvider/AndroidManifest.xml
packages/ExternalStorageProvider/src/com/android/externalstorage/CloudTestDocumentsProvider.java [deleted file]
packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java