History log of /frameworks/base/core/java/android/provider/DocumentsProvider.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
af03e5a322a35f9acd6f6f8d4f53148a9622bd92 15-May-2017 Garfield Tan <xutan@google.com> Specify behavior around DocumentsProvider#openDocument().

Add supported modes and contracts on receiving unsupported modes.
Test: Builds.
Bug: 11279339

Change-Id: I8c403f6168baadb354813d4c1e630bb8662ddb34
/frameworks/base/core/java/android/provider/DocumentsProvider.java
0e74c95c0cb2be2dc82598fc6529883c90678f99 24-Mar-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Unhide FLAG_SUPPORT_EJECT and related methods."
8787703ae057b6df3691036d667fab0859be92d9 22-Mar-2017 Garfield Tan <xutan@google.com> Unhide FLAG_SUPPORT_EJECT and related methods.

Test: Builds and CTS tests pass. Some manual tests as well.
Bug: 36483910
Change-Id: Idd9b1c9d9573222ee12127044ff11b9ab2487f0a
/frameworks/base/core/java/android/provider/DocumentsProvider.java
df6d37e50442cb453a7e0d9e383c45bba848db70 21-Mar-2017 Ben Lin <linben@google.com> Introduce AuthenticationRequiredException, and @hide
RecoverableSecurityException.

Test: CTS tests in changes in same topic.
Bug: 36482356
Bug: 36482258
Change-Id: I44b3407746006d8709e4a3f3ca2950c61fa0be95
/frameworks/base/core/java/android/provider/DocumentsProvider.java
8ea8200fedb3b0b9d508289782cb2ba5d7fe0d5f 09-Mar-2017 Ben Lin <linben@google.com> Stop DocumentsContract from consuming Exceptions if app is targetting O
or above.

Test: Builds properly.
Bug: 36023174
Change-Id: I455d358672f35fbeb5678c965b25268229ed4882
/frameworks/base/core/java/android/provider/DocumentsProvider.java
b690b4de06385a821aed3442e10058986c03badc 02-Mar-2017 Garfield Tan <xutan@google.com> Address comments from API council.

Test: Code builds and tests pass. Also some manual tests around ESP.
Bug: 35813037
Bug: 35812990
Change-Id: Ia9d3a3964e9a83d0c1c08e5db4c2e231504aa99a
/frameworks/base/core/java/android/provider/DocumentsProvider.java
0bb25299ca01561eb3a8e69b042f8f16dc440882 24-Jan-2017 Steve McKay <smckay@google.com> Don't mark query+cancellationSignal final.

Bug: 34517733
Test: None.
Change-Id: Iff281c676b928859c0e2e975d9f0cfabb36479d9
/frameworks/base/core/java/android/provider/DocumentsProvider.java
cf31656cf402844b283610e131e54124078c7799 24-Oct-2016 Tomasz Mikolajewski <mtomasz@google.com> Add Web Links API to framework.

Test: CTS in a separate CL.
Bug: 30152711
Change-Id: Ia256422d50110d6adcd1984f6481ab825dbf30b1
/frameworks/base/core/java/android/provider/DocumentsProvider.java
29c3f68cfab3dd4f7f96e54be8eabd9a4d677c5e 16-Dec-2016 Steve McKay <smckay@google.com> Add structured sort data to ContentResolver.query.

Update DocumentsProvider to override
ContentProvider#query(Uri, String[], Bundle, CancellationSignal);
Added an otherwise unneeded import to pass doc check
on DocumentsProvider.

Bug: 30927484
Change-Id: I295c21f53901d567455286f22439f21d22a8a25a
Test: Build and run. Test from DocsUi.
/frameworks/base/core/java/android/provider/DocumentsProvider.java
099f95181d5fdf905d4a77c9a364c458030064b1 09-Dec-2016 Tomasz Mikolajewski <mtomasz@google.com> Update API documentation about virtual files.

To say that virtual files must have at least one streamable type.

Test: None
Bug: 33463773
Change-Id: I9094686cb95ee0af1c01b2bf88550cd3bbfe572d
/frameworks/base/core/java/android/provider/DocumentsProvider.java
0b3cf666d01e20b4801df71a67fbfac6f4b6f713 31-Oct-2016 Garfield Tan <xutan@google.com> Unhide findPath() API. Add JavaDoc to related features.

Also remove comments that disallow folders in search results.

Test: It builds.

Bug: 30948740
Bug: 32512923
Change-Id: I72706b69163aa98ee9568939e09e5048b6e8f9f8
/frameworks/base/core/java/android/provider/DocumentsProvider.java
3f6b68a69724983095f93ea073a0a102aecc41fb 01-Nov-2016 Garfield Tan <xutan@google.com> Iteration on findDocumentPath() API.

Rename findPath() to findDocumentPath() per comment in ag/1588156.

Bug: 30948740
Change-Id: I84ef4d9c0ed1f854e0e33f3552a1805b944c2791
/frameworks/base/core/java/android/provider/DocumentsProvider.java
5f2148077ab80e5e9e1698a6033fb83b6cfe90ee 26-Oct-2016 Garfield Tan <xutan@google.com> Iteration on findPath API. Address Jeff's comment in ag/1542773.

* Add @Nullable to rootId in Path constructor.
* Erase rootId if findPath() doesn't return null rootId.
* Use Log.wtf() instead of throwing.

Bug: 30948740
Change-Id: I38354c5ac49aaa7e31a3ae56cd3379ffb19918c9
(Cherry picked from commit 04fdf6e18c97c2bf6ed58f8de9ba6723fa8c1613)
/frameworks/base/core/java/android/provider/DocumentsProvider.java
06940e1246467e96392ae2b7effcb1f9d3e4d273 08-Oct-2016 Garfield Tan <xutan@google.com> Iteration on findPath API.

* Extend this API to take tree URI
* Add toString(), equals() and hashCode() to Path
* Address Jeff's comments in ag/1513538
* Add unit tests for findPath

Bug: 30948740
Change-Id: Iaf852d0e40fae37623e9bb9ffa1c6fbe334c1b21
(cherry picked from commit d4ab7ade7171a4382ef4f61f2a5f078a17800e83)
/frameworks/base/core/java/android/provider/DocumentsProvider.java
aba97f3c37a1e2ac90a6b0ca5e5c2b773ceed36d 06-Oct-2016 Garfield Tan <xutan@google.com> Add findPath API to SAF.

Implement it in ExternalStorageProvider.

Bug: 30948740
Change-Id: I1b7717a794ae3892cd1be5ed90ca155adf9a64f4
(cherry picked from commit 51efc73f3f341393cf93f71604be791205021b69)
/frameworks/base/core/java/android/provider/DocumentsProvider.java
ab52ea019453fe31d91a5f9afc227c4caa77e884 06-Oct-2016 Garfield Tan <xutan@google.com> Revert "DO NOT MERGE ANYWHERE: Add findPath API to SAF."

This reverts commit 2f6d0d6db3af4451ae209a07c7dd7ee089cc5653.

Change-Id: I0b8581c6d5edb2a47ddfb75afaaa52c43964087b
/frameworks/base/core/java/android/provider/DocumentsProvider.java
2f6d0d6db3af4451ae209a07c7dd7ee089cc5653 23-Sep-2016 Garfield Tan <xutan@google.com> DO NOT MERGE ANYWHERE: Add findPath API to SAF.

Implement it in ExternalStorageProvider.

Bug: 30948740
Change-Id: I03241cdfa561ef2fc0a0b829c9a59ad845e8f844
(cherry picked from commit 51efc73f3f341393cf93f71604be791205021b69)
/frameworks/base/core/java/android/provider/DocumentsProvider.java
d7d1487ec8d27336ba49a300e2eed39c3835c47e 29-Jun-2016 Ben Lin <linben@google.com> Docsui-level work for implementing Eject on Roots list.

1. Added Eject Icon for Roots that support eject
2. Added Context Menu for RootsFragment (Settings and Eject)

Bug: 29584653
Change-Id: I97f582de05763e3f0327bc0d2dc6d4e2222e047c
(cherry picked from commit d96661f8b0f613b40f2bdfc178bbe06022b5f76c)
/frameworks/base/core/java/android/provider/DocumentsProvider.java
e7822fb76791e3951502e759e2b11204869d532a 25-Jun-2016 Ben Lin <linben@google.com> Provider-level changes for implementing direct eject of a root in Files app.

Several changes at different levels:
1. Introduction of ejectRoot(String) for DocumentsProvider
2. Introduction of ejectRoot(ContentResolver, Uri, String) for
DocumentsContract
4. Additional permission for MOUNT_UNMOUNT for ExternalStorageProvider
5. Implementation of ejectRoot(String) for External StorageProvider

Bug: 29584653
Change-Id: I28557af63259548784cf24d5b051eb06ad5193ca
(cherry picked from commit 2ccc18357d6741dde56edc4d5a2608f15f4b9078)
/frameworks/base/core/java/android/provider/DocumentsProvider.java
804d648138212a00bb260291e39fde0b327df709 17-Feb-2016 Tomasz Mikolajewski <mtomasz@google.com> Merge "Implement getDocumentStreamTypes() in DocumentsProvider." into nyc-dev
30714016700fd874ed96b0a8f8e4f52d9385c091 15-Feb-2016 Tomasz Mikolajewski <mtomasz@google.com> Remove unused return in DocumentsProvider.removeDocument.

It's not used anywhere. Exceptions should be thrown on an error.

Bug: 27113305
Change-Id: I9d549169e177004597f136776c6763c93101c0c4
/frameworks/base/core/java/android/provider/DocumentsProvider.java
d99964fd66dc4dabe431ff995995de508f614216 15-Feb-2016 Tomasz Mikolajewski <mtomasz@google.com> Implement getDocumentStreamTypes() in DocumentsProvider.

According to the documentation, getStreamTypes() must return all streamable
MIME types. This CL takes the MIME types from COLUMN_MIME_TYPE as long as
the document is not virtual.

If the provider implements converters, then it should override
getDocumentStreamTypes.

Bug: 27156282
Change-Id: I9ab149e097600a470fc9be8f1270f68929fdf851
/frameworks/base/core/java/android/provider/DocumentsProvider.java
7fa765a40e98ac77d79867b2109779728d9df5a7 01-Feb-2016 Tomasz Mikolajewski <mtomasz@google.com> Merge "Cleanup copyDocument and moveDocument in SAF."
cbcd39488b4bddfaa84dfe378ede2f707aedd6ca 27-Jan-2016 Tomasz Mikolajewski <mtomasz@google.com> Add DocumentsProvider::removeDocument().

Multi-parents are supported already in moveDocument(). For parity, this CL
adds removeDocument, so it's possible to delete a file from a specific
parent.

Bug: 26481380
Change-Id: Icd4213abc0c3413931902f4f8984746c84c65e52
/frameworks/base/core/java/android/provider/DocumentsProvider.java
eeb8b6052a050c687f8b73ca88373cdb6af10715 28-Jan-2016 Tomasz Mikolajewski <mtomasz@google.com> Cleanup copyDocument and moveDocument in SAF.

1. Unhide the methods in DocumentsProvider.
2. Stop revoking grants, as we shouldn't do that if the documentId doesn't
change. Note, we could have an if checking if the ID changed then revoke
in call(), but it would be racey, as another file with the same ID might
have been created in the meantime on another thread.

Change-Id: Ia99853bf11cf416e0b8c0a0e63458dcc09564da9
/frameworks/base/core/java/android/provider/DocumentsProvider.java
d46ecbcc5322cf817e64591e985f1f2a6167e9a7 25-Jan-2016 Tomasz Mikolajewski <mtomasz@google.com> Add support for multi-parents to DocumentsProvider::moveDocument.

Bug: 26481380
Change-Id: I96290268fd49072a334bde9c04c5313de8540f56
/frameworks/base/core/java/android/provider/DocumentsProvider.java
75395651c272b3df746e0e5fede0a8fedd81e44b 07-Jan-2016 Tomasz Mikolajewski <mtomasz@google.com> Revert "Revert "Remove the flag and make openTypedDocument throw FileNotFoundException.""

This reverts commit 2b931719783cda11c3bbac9928c603d0a0a06d43.

Change-Id: Ic61b874012daeada02b73643f5c58f9ec840b3e5
/frameworks/base/core/java/android/provider/DocumentsProvider.java
2b931719783cda11c3bbac9928c603d0a0a06d43 07-Jan-2016 Tomasz Mikolajewski <mtomasz@google.com> Revert "Remove the flag and make openTypedDocument throw FileNotFoundException."

This reverts commit 95149ab6a5442a05f05f448854b6ab386c87f717.

Change-Id: I218aa8059ef674400dac8531a86cd326748c26d5
/frameworks/base/core/java/android/provider/DocumentsProvider.java
95149ab6a5442a05f05f448854b6ab386c87f717 24-Dec-2015 Tomasz Mikolajewski <mtomasz@google.com> Remove the flag and make openTypedDocument throw FileNotFoundException.

To be compatible with ContentProvider, DocumentsProvider should not
require checking for a flag before calling openTypedAssetFile.

This CL removes the flag, and makes the default implementation throw
FileNotFoundException instead.

Bug: 26222645
Change-Id: I3492f05804e39583ebb8584109c7017b3082846e
/frameworks/base/core/java/android/provider/DocumentsProvider.java
d3afdeebeb9dcfbb5f24e4afac988e2e96de26de 20-Nov-2015 Steve McKay <smckay@google.com> Don't copy a directory into itself...doesn't go well.

Minimally deform CopyService such that we can listen
to the completion of operations in the test.
Add test coverage.
Add equals and hashcode to DocumentInfo...so we can compare
the heck out of 'em. + a test.
WIP: Expose (@hide style) DocumentsProvider.isChildDocument via
DocumentsContract. Use that to check for recusive copies.

Bug: 25794511

Change-Id: I05bb329eb10b43540c6806d634e5b96a753e8178
/frameworks/base/core/java/android/provider/DocumentsProvider.java
b344b894ca0844486bf009acd6e3a9f35fe9f29f 28-Oct-2015 Tomasz Mikolajewski <mtomasz@google.com> Add support for opening files in specified MIME type to DocumentsProvider.

Change-Id: I5453d6d699069ec59521917c024f173d2ae67565
Bug: 18113606
/frameworks/base/core/java/android/provider/DocumentsProvider.java
a0d9a63f1d16eba887d78a2286d8ac6f3c397909 25-Jul-2015 Jeff Sharkey <jsharkey@android.com> Follow refactoring when enforcing permissions.

Change-Id: I3fd245622a7f1183cbe21e61f7604c8195022e69
/frameworks/base/core/java/android/provider/DocumentsProvider.java
f3230a7e69869aa680ed30169892dd5c35ec931f 25-Jul-2015 Jeff Sharkey <jsharkey@google.com> am 43b379e7: am 43ff3afe: am 4c864be1: am 35f4b6a2: am 8be305dd: Merge "Also check app-ops on path-permissions." into mnc-dev

* commit '43b379e72be58fca50af64092f5c99463d76d65b':
Also check app-ops on path-permissions.
0e621c3921fc023dd13fe72739987f2a9b366c84 25-Jul-2015 Jeff Sharkey <jsharkey@android.com> Also check app-ops on path-permissions.

Any place that we check permissions we also need to check any
app-ops associated with those permissions. In the case of providers
with both <provider> and <path-permission> permissions, track and
report the strongest app-ops denial.

Bug: 22718722
Change-Id: I45e62de39b04d16d071558ad980b701667cfcb9a
/frameworks/base/core/java/android/provider/DocumentsProvider.java
a375a9988419791649ed7f42b662f1afe5953982 25-Jun-2015 Tomasz Mikolajewski <mtomasz@google.com> Add support for efficient move within a document provider.

Currently moving files even within the same document provider causes
reading and writing all of the bytes, which is very inefficient for all
network based solutions, eg. Drive where moving even huge files can be
instant.

This CL adds an optional moveDocument method to the DocumentProvider as
well as DocumentContract so providers can implement an efficient way of
moving things. If not implemented, we would fallback to moving by
streaming.

BUG=None

Change-Id: I74d6754f96cbafa749a04ca9aebf2e0e2b64b515
/frameworks/base/core/java/android/provider/DocumentsProvider.java
74fe1816e84fc097adc5af1b6e866b4a219dca91 13-Jun-2015 Tomasz Mikolajewski <mtomasz@google.com> Add support for efficient copy within a document provider.

Currently copying files even within the same document provider causes
reading and writing all of the bytes, which is very inefficient for all
network based solutions, eg. Drive where copying even huge files can be
instant.

This CL adds an optional copyDocument method to the DocumentProvider as
well as DocumentContract so providers can implement an efficient way of
copying things. If not implemented, we would fallback to copying by
streaming.

BUG=None

Change-Id: I8f2b2c0c834717f07d42f8247cd1fc025e82239a
/frameworks/base/core/java/android/provider/DocumentsProvider.java
c615c6fc9caca76cd96998f86e1f1e6393aeadbb 02-Mar-2015 Tor Norbye <tnorbye@google.com> Annotate methods to be called from overrides with @CallSuper

Change-Id: Ibc587c2aaee9f3e7f448079f72a75459fe4e15e7
/frameworks/base/core/java/android/provider/DocumentsProvider.java
377d6f00dc2ab42df501fd12b23e1dab54cea6b7 21-Nov-2014 Dianne Hackborn <hackbod@google.com> am 42fec57f: am d9968438: Merge "Fix issue with call backs from media process." into lmp-mr1-dev

* commit '42fec57f3addfb1958f814b5d6772ff81341ba20':
Fix issue with call backs from media process.
ff17024e583b170312d82089fd358d278ce16c9a 19-Nov-2014 Dianne Hackborn <hackbod@google.com> Fix issue with call backs from media process.

All but a few lines of this is for issue #16013164, which allowed
apps to do some operations as the media uid by having it call
back to them to open a file. The problem here is with the tempory
identity stuff in the activity manager, allowing us to make the open
call as the original caller... ideally we should figure out a way
to just get rid of all of that, but the solution here is actually
easier (even though it doesn't look it) -- we now hand a token over
to the openFile() call that it can use when doing permission checks
to say "yes I would like the check to be against whoever is responsible
for the open". This allows us to do the uid remapping for only this
one specific set of permission checks, and nothing else.

Also fix issue #17487348: Isolated services can access system services
they shouldn't be able to. Don't send any system service IBinder objects
down for the first initialization of an isolated process.

Change-Id: I3c70e16e0899d7eef0bae458e83958b41ed2b75e
/frameworks/base/core/java/android/provider/DocumentsProvider.java
4656e69bf36d42a35c9290ab79eeb33b4cca1d5c 08-Sep-2014 Elliott Hughes <enh@google.com> resolved conflicts for merge of 2008cff7 to lmp-dev-plus-aosp

Change-Id: I5148eda624e8504f12dbc1288cd4a7a5b7c10850
d0646dca40ff740bd49755ad60751678b0ccca52 28-Aug-2014 Mark Doliner <mark@kingant.net> Small documentation fixes across many files.

Change-Id: I3e8787ce4bc6018ea1dc9aef2a2cd4e0a8dde663
/frameworks/base/core/java/android/provider/DocumentsProvider.java
5b836f29a3f56f9d13b6004417330c41ec0c18ae 27-Aug-2014 Jeff Sharkey <jsharkey@android.com> Define EXTRA_SIZE for ContentProviders.

Also make Size and SizeF parcelable.

Bug: 17205016
Change-Id: Ide397b84864f6cad7f8d89e66b6c8697a3ad335b
/frameworks/base/core/java/android/provider/DocumentsProvider.java
b9fbb7290b02de1ce621deaa2d28a5e42f2e0937 05-Jun-2014 Jeff Sharkey <jsharkey@android.com> Refactor directory API to "opening document tree."

Cleans up API so it consistently refers to opening or working with a
subtree of documents. Also separates isChildDocument() support from
the concept of directory tree selection.

Bug: 15429194
Change-Id: Ice66a751ff4bd0cc4d34c44c5da13a0dc4186dc9
/frameworks/base/core/java/android/provider/DocumentsProvider.java
b7e1255d5c8d9e4fa8dd389afb9f5aab35434df3 22-May-2014 Jeff Sharkey <jsharkey@android.com> Support for renaming documents.

DocumentsProviders can mark documents as supporting rename, and they
have the opportunity to change the DOCUMENT_ID as a side effect of
the rename. This supports providers that embed the display name
into DOCUMENT_ID. Issues a URI permission grant to the new document,
if any.

Adds renaming support to platform ExternalStorageProvider. Also
adds directory deletion support.

Bug: 12350110
Change-Id: Ica4b1ae6769ee994f70f6b6b2402213eebd064e0
/frameworks/base/core/java/android/provider/DocumentsProvider.java
21de56a94668e0fda1b8bb4ee4f99a09b40d28fd 06-Apr-2014 Jeff Sharkey <jsharkey@android.com> Add directory selection to DocumentsProvider.

Introduce new ACTION_PICK_DIRECTORY that allows users to grant access
to an entire document subtree. Instead of requiring grants for each
individual document, this leverages new prefix URI permission grants
by defining new "via"-style URIs:

content://com.example/via/12/document/24/

This references document 24 by using a prefix grant given for
document 12. Internally, we use isChildDocument() to enforce that
24 is actually a descendant (child, grandchild, etc) of 12. Since
this is an optional API, providers indicate support with
Root.FLAG_SUPPORTS_DIR_SELECTION.

Extend DocumentsUI to support picking directories. Expose
createDocument() API to work with returned directories.

Offer to canonicalize via-style URIs into direct URIs, generating
exact permission grants along the way. Override openAssetFile()
to pass through CancellationSignal. Move testing code into ApiDemos.

Bug: 10607375
Change-Id: Ifffc1cff878870f8152eb6ca0199c5d014b9cb07
/frameworks/base/core/java/android/provider/DocumentsProvider.java
3b945405cf96eae8b882f87934222a453718a559 13-Nov-2013 Jeff Sharkey <jsharkey@android.com> Small DocumentsProvider doc improvements.

Bug: 11670294
Change-Id: I5fb91c7665fc2a4531059ef9f2de0972ebabe1ea
/frameworks/base/core/java/android/provider/DocumentsProvider.java
37ed78e504ef3666dd5fce15ff4994f151c44fcd 05-Nov-2013 Jeff Sharkey <jsharkey@android.com> Clarify DocumentsProvider recents behavior.

Bug: 11448309
Change-Id: I17e0ac757e549b251e08d58d5ce7d25fb253883f
/frameworks/base/core/java/android/provider/DocumentsProvider.java
8a2998eade93032a78d681c66ebadbfa6f802f76 31-Oct-2013 Jeff Sharkey <jsharkey@android.com> Better enforcement in DocumentsProvider.call().

Use ContentProvider.enforceWritePermissionInner() to handle all edge
cases around checking if caller has write permissions. This fixes
bug where call() would throw if caller and provider were the same app.

Bug: 11464234
Change-Id: Iace8e0e4243d56ed1cdcc9680383103975107036
/frameworks/base/core/java/android/provider/DocumentsProvider.java
9352c383e95c3e1facd8a7a2d49ff488fb7bbcaf 23-Oct-2013 Jeff Sharkey <jsharkey@android.com> Add notification docs to DocumentsProvider.

Bug: 11272209
Change-Id: I97d67c91c4f4a312cbde82afd9e27509c26517b2
/frameworks/base/core/java/android/provider/DocumentsProvider.java
e8c00d8ed477e199b7f8d1b1e2f37e9cf8593372 16-Oct-2013 Jeff Sharkey <jsharkey@android.com> Improve DocumentsProvider and contract docs.

Bug: 10567557
Change-Id: I71e7f7ad172e9986e58b9c9533b1c948c5530397
/frameworks/base/core/java/android/provider/DocumentsProvider.java
e66c1778f80f4b18e29e018eca3a338f125f23b9 20-Sep-2013 Jeff Sharkey <jsharkey@android.com> Require that persistable Uri permissions be taken.

Change our Intent flag to indicate that a Uri permission grant is
persistable, but don't actually persist it until explicitly taken by
the receiving app. This prevents apps from spamming each other if
persisted permissions aren't really required.

Remember the last time a persisted grant was taken by an app, and
use this to prune away the oldest grants when the number of grants
grows too large. Allow apps to query persisted grants they are
holding, and allow them to release previously persisted grants. Add
public UriPermission class to return grant details and timestamp.

Track various permission strengths separately, and combine together
after each mutation pass. Persistable grants are currently treated
like global grants, but they could be moved to have owners in the
future. Require that grant holders trying to extend a persistable
permission actually hold a persistable permission themselves.

Bug: 10835779
Change-Id: I95b2f797c04ce7fd2612f9a644685dbd44e03759
/frameworks/base/core/java/android/provider/DocumentsProvider.java
3e1189b3590aefb65a2af720ae2ba959bbd4188d 13-Sep-2013 Jeff Sharkey <jsharkey@android.com> Move search to roots; Documents root; hide empty.

Documents searches now happen root-wide, instead of only under a
subdirectory. Updates abstract class and flags to match. Add flag
for a root to indicate it's empty, and hide empty roots in UI unless
creating.

Define "Documents" public directory and storage backend to contain
files.

Bug: 10712057, 10710865, 10710758
Change-Id: I8716367568969f9cb1d83927b2bf5a7013809350
/frameworks/base/core/java/android/provider/DocumentsProvider.java
4ec973925fc2cd18f9ec0d0ca5af588564fded27 10-Sep-2013 Jeff Sharkey <jsharkey@android.com> More UX work for thumbnails, search, management.

Hide non-finished downloads from normal picker UI, but keep them
around in management mode. Uses a Uri query parameter and a hidden
API on DocumentsProvider.

Scale thumbnails to fit viewport, always show MIME icon while waiting
on thumbnails, and crossfade between them. Cancel thumbnail tasks
when views are recycled.

Filter directories out of search results for now. Also leave sort
ordering from backend intact, since it's custom ranking. Fix
SearchView interaction to dismiss properly and restore across
orientation and drawer state changes.

Hide most actions when drawer is open. Invalidate RootInfo cache
when locale changes. Apply sort ordering when showing recent create
directories. Hide recent summary string when icon is enough for user
to disambiguate.

Bug: 10667184, 10665663
Change-Id: I331d3272a08c497f88dc659d9e112231cb35aa69
/frameworks/base/core/java/android/provider/DocumentsProvider.java
911d7f411f36f2279aae44c89ff1d33a29140046 06-Sep-2013 Jeff Sharkey <jsharkey@android.com> Provide calling package to ContentProviders.

The calling package is important for ContentProviders that want to
grant Uri permissions as a side effect of operations, so offer it
through a new API. Validates the provided package against the
calling UID before returning.

Bug: 10626527
Change-Id: I7277880eebbd48444c024bcf5f69199133cd59e4
/frameworks/base/core/java/android/provider/DocumentsProvider.java
a61dc8e03e6e863005b3a4629ca8f3801d33d3c4 06-Sep-2013 Jeff Sharkey <jsharkey@android.com> Separate root and document management.

Two hidden intents for managing roots and documents, used to support
Downloads UI. Touching an item tries launching as MANAGE_DOCUMENT
first before falling back to VIEW. Provide MIME type for roots.

Bug: 10446265, 10531347, 10599641
Change-Id: Ia5584bd6ce3e5a9b0048e8caf1447e3053664413
/frameworks/base/core/java/android/provider/DocumentsProvider.java
e37ea6123d1aa3cd3e8804988886b1f6046d79d6 04-Sep-2013 Jeff Sharkey <jsharkey@android.com> Fix document management permission enforcement.

Allow both explicit holders of the MANAGE_DOCUMENTS permission and
those holding Uri grants to perform management tasks.

Extend grants for newly created documents when caller doesn't have
permission. Revoke grants when deleting documents.

Test now writes actual content into picked file. Workaround updated
flags for Drive app.

Bug: 10623211
Change-Id: Ia8e90b33e0fac8294b2cacb96d083c43fdf75aab
/frameworks/base/core/java/android/provider/DocumentsProvider.java
ae9b51bfa313c51a31af30875a71255d7b6d2e61 01-Sep-2013 Jeff Sharkey <jsharkey@android.com> Refactoring of DocumentsContract.

Combines related columns and constants onto the same class so they
are easier to discover. Move back to surfacing roots with columns
so they are consistent with documents.

Advanced roots are represented with a flag instead of distinct
types. Flags to indicate supporting of well-known media types,
instead of arbitrary an MIME filter. Reintroduce well-formed rootId
to support recents.

Always use the expanded version of "documents" in constants, methods,
and argument names.

Refactor DocumentProvider method names to clearly distinguish if
a single item or multiple could be returned, and of which type. Add
documentation to clearly define which methods have already been
overridden.

Bug: 10567506, 10567557
Change-Id: I981f26ab82f2b520a19aa1ce66f659de50d7fac0
/frameworks/base/core/java/android/provider/DocumentsProvider.java
aeb16e2435f9975b9fa1fc4b747796647a21292e 28-Aug-2013 Jeff Sharkey <jsharkey@android.com> 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
/frameworks/base/core/java/android/provider/DocumentsProvider.java