• Home
  • History
  • Annotate
  • only in /frameworks/base/packages/DocumentsUI/src/com/android/documentsui/model/
History log of /frameworks/base/packages/DocumentsUI/src/com/android/documentsui/model/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
ad913ed551accedc07edf802480edb426653a587 11-Apr-2016 Tomasz Mikolajewski <mtomasz@google.com> Remove the toolbar icon from DocumentsUI.

Bug: 27565928
Change-Id: I5181466a770e11716f173cf8cc66f62ba71ac710
ootInfo.java
dcc68fdd0ca1f0d2d2dfb979dd837ac2dd2e16f3 12-Apr-2016 Steve McKay <smckay@google.com> Daeal with null cursors more leniently.

Since modelId may not in fact result in a cursor.
Bug: 28074284

Change-Id: I8632c9c7d5e3da32080c07033089173105c03646
ocumentInfo.java
1719b3555dc9bff5394045585051e7d5684bceb1 21-Mar-2016 Aga Wronska <agawronska@google.com> Add config flag to show/hide internal storage.
Hide internal storage by default.

Revert "Always show intern storage."

This reverts commit 7c4395804e450533afb553ab992c47f737da8a9b.

Bug: 27683276

Change-Id: I04ea8b9a307babcea003f9bec200d41265a42c7f
ootInfo.java
168e464812341fdc64c3b85659b60114bee3b86e 14-Mar-2016 Steve McKay <smckay@google.com> Add FLAG_PARTIAL. Partial files can't be copied.

This allows us to exclude in-progress downloads from copy.
Will update Downloads in a followup CL to flag active downloads.

Bug: 27526321
Change-Id: I50d1db5cfb69bc6b47e10cc0f520a51e3d3cb43e
ocumentInfo.java
8731408b11a24e3a92188653548f2c90bf866a32 12-Mar-2016 Jeff Sharkey <jsharkey@android.com> Offer to cache ContentResolver-related Bundles.

There are a handful of core system services that collect data from
third-party ContentProviders by spinning them up and then caching the
results locally in memory. However, if those apps are killed due to
low-memory pressure, they lose that cached data and have to collect
it again from scratch. It's impossible for those apps to maintain a
correct cache when not running, since they'll miss out on Uri change
notifications.

To work around this, this change introducing a narrowly-scoped
caching mechanism that maps from Uris to Bundles. The cache is
isolated per-user and per-calling-package, and internally it's
optimized to keep the Uri notification flow as fast as possible.
Each Bundle is invalidated whenever a notification event for a Uri
key is sent, or when the package hosting the provider is changed.

This change also wires up DocumentsUI to use this new mechanism,
which improves cold-start performance from 3300ms to 1800ms. The
more DocumentsProviders a system has, the more pronounced this
benefit is. Use BOOT_COMPLETED to build the cache at boot.

Add more permission docs, send a missing extra in DATA_CLEARED
broadcast.

Bug: 18406595
Change-Id: If3eae14bb3c69a8b83a65f530e081efc3b34d4bc
ootInfo.java
09c07bdf3772d919c5910cccae7806c583fb82a3 10-Mar-2016 Aga Wronska <agawronska@google.com> Display file names in Media libraries in grid mode

Bug: 26829518
Change-Id: If9e2f331df0233ef114c4147ffbc16214558b5ce
ocumentInfo.java
ba23e54d263fefaac96b3ce6b068e70ec6f06128 03-Mar-2016 Steve McKay <smckay@google.com> Show proper icons for SD and USB attached storage.

Use USB icon for MTP devices.

Bug: 26883880
Change-Id: I8ce85ffc915a012dca79a5de1cc7c74361776792
ootInfo.java
7c4395804e450533afb553ab992c47f737da8a9b 02-Mar-2016 Steve McKay <smckay@google.com> Always show intern storage.

Only show debug root when devel mode is enabled.
Remove all traces of "advanced".

Bug: 27297398

Change-Id: Ie7e8be282531bd245351d56ababa8ca625c10fd2
ootInfo.java
27d20a3024d477bc23055825e0f05203982539c3 23-Feb-2016 Steve McKay <smckay@google.com> Don't enable move to for non deletable selections.

Bug: 27135562
Change-Id: Id09b4c9d4f9836a4e5b2f66b8cbad63be9bb62b3
ocumentInfo.java
008e948c3eac913ae3321bd690e3913e468e7fb1 19-Feb-2016 Steve McKay <smckay@google.com> Undo generalization isDownloads > supportsChildren.

Move root comparison logic into RootInfo.
Move shared string comparison code to Shared.

Change-Id: I3267b496a165ad3cae773783db0e79df2eb118e8
ocumentInfo.java
ootInfo.java
e2af078488d724b43fb9d423e98c1410c22f670f 18-Feb-2016 Steve McKay <smckay@google.com> UX cleanups.

Visually separate directory background from sidebar.
Lower shadows so the "real" effect isn't so prominent.

Hitchhikders:
Consolidate bool values in config.xml files (were in dimens.xml).
Add missing supportsRecents & supportsSearch methods
to RootInfo.
Rename RecentLoader to RecentsLoader so it doesn't defy
searching for "Recents" string.
Move Downloads below the divider.

Change-Id: I06c76e26ec6df6541860a1448865c67ed953ed43
ootInfo.java
4a1ca86f4757647b62995eede2a45d06273503bf 18-Feb-2016 Steve McKay <smckay@google.com> Don't show recents as copy/move destination.

Revoke "SUPPORTS_CREATE" from the Recents faux-Root.
Don't allow copy to roots that don't support children.
Add friendly access methods to Root info for checking flags.
Only show spacer between roots sections when both non-empty.
Add docs explaining the "apps" section in roots.
Improve logic in the "canCopy" method.

Bug: 27232639
Change-Id: If78ee0ff73f0788de863345b560aecd41b23dfb9
ootInfo.java
a3b936aa55126173302a29c55b89ffc329083979 17-Feb-2016 Steve McKay <smckay@google.com> Merge "Guard against NPE in equals checks." into nyc-dev
30551a257ca39f716a1d83c5cfd64d9c20efa6ad 16-Feb-2016 Steve McKay <smckay@google.com> Guard against NPE in equals checks.

Update State test to cover different conditions separately.
Update DirectoryInfo test to best practices.
Update RootInfo to follow DirectoryInfo equals pattern.
Also, allow null cursors from Model...since they happen...I seen it mahself.

Bug: 27118725
Change-Id: Id0a0be053b91c887a745bfca5416e64f0edba995
ocumentInfo.java
ootInfo.java
ab3b8936dc1f4a24cffea422baf9ef51f0de05e7 16-Feb-2016 Steve McKay <smckay@google.com> Remove "HOME" directory. Use "Documents" instead.

Use "Folder" as home icon for now.

Bug:27148009
Change-Id: I9f57bba1c8e51ae7887861923f5baa8f69ec2e6e
ootInfo.java
efa1761776160376278fa467ea31d8e3f621a286 30-Jan-2016 Steve McKay <smckay@google.com> Decouple SD card from ADVANCED storage toggle.

A variety of related fixes:
- don't force size enable when browsing from device mounted notifications.
- don't show settings menu item as action (put in overflow).
- add sd card icon (not quite yet used, need to suss that out).

Bug:26880985,26883578,26771127
Change-Id: I36f153c42217f8092f157ded2a756c02525593ab
ootInfo.java
3b327ef9f9dec19612202b4b0b450966870a077f 21-Jan-2016 Aga Wronska <agawronska@google.com> Add support for renaming documents

- Add rename dialog
- Add rename menu option
- Enable rename menu option only when renaming supported
- Rename files and directories
- Present error message if renaming fails

Bug: 20493815
Change-Id: Ic7386d14e3876655fb19245b9a90b4c67a4febb4
ocumentInfo.java
4b6ac4a359cb1724bbb0f98c7a425f9fb5fd2a58 07-Jan-2016 Tomasz Mikolajewski <mtomasz@google.com> Merge "Revert "Revert "Remove the flag and make openTypedDocument throw FileNotFoundException."""
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
ocumentInfo.java
97dd67cc3494f4cd4749a42a79f2e4422ffeb398 07-Jan-2016 Tomasz Mikolajewski <mtomasz@google.com> Merge "Revert "Remove the flag and make openTypedDocument throw FileNotFoundException.""
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
ocumentInfo.java
5a22e1a19d9a5ecc80461c6884f2f20ef46dcd4a 07-Jan-2016 Tomasz Mikolajewski <mtomasz@google.com> Merge "Remove the flag and make openTypedDocument throw FileNotFoundException."
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
ocumentInfo.java
7587fd0094ef20d5c7c8bd92c2a6eb100516aef3 04-Jan-2016 Aga Wronska <agawronska@google.com> Change Internal Storage icon from sdcard to smartphone

Bug:26143658
Change-Id: I7663a477c8e90e89f8f5dbed1b6f2c1f83e929d1
ootInfo.java
470a3dbc5d9c299803ba407497458acefd34f546 14-Dec-2015 Tomasz Mikolajewski <mtomasz@google.com> Add support for copying virtual files in DocumentsUI.

Bug: 26147488
Change-Id: I09cf010de7267fbdba6e3fcd0f300b0ecce19d10
ocumentInfo.java
39acff5a36ab0540981cdae3027ea1a45fe040e5 25-Nov-2015 Tomasz Mikolajewski <mtomasz@google.com> Wire support for archives to DocumentsUI.

Bug: 20176812
Change-Id: I8220afa2f53b07aa842bf6ac24fcc62afd4e2617
ocumentInfo.java
dbdaa49be4958b25beca85cfcd14adf00058701a 02-Dec-2015 Steve McKay <smckay@google.com> Add DownloadsActivity functional test.

Bug: 25809806
Change-Id: I43ceaf3a99715a57e3d349bee60f2edf7f6666bd
ootInfo.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
ocumentInfo.java
c6a4cd8c0f35a7e9d126ab09924f8f1f8422182a 18-Nov-2015 Steve McKay <smckay@google.com> Add "Home" directory support.

Update FilesActivityUiTests to verify Home is present
and that clicking a root sets the title accordingly.
Guard addition of WRITABLE flag with a volume test.

Bug: 25147243
Change-Id: Ic20372737cae08a82af0aade0c0dbbd8c22d5f34
ootInfo.java
9094585eb484f0d6fa9e1943dc4dc3943eb33126 06-Nov-2015 Ben Kwa <kenobi@google.com> Adjust grid item layouts to match mocks.

BUG=24326989

Change-Id: I8a4133890036a2ef9173f20828f062a7e991525d
ootInfo.java
abf397458dca89fd3df4234d547a94bf0487033d 23-Oct-2015 Daichi Hirono <hirono@google.com> Show MTP roots at the bottom of root list.

MTP is removable device, so we should show it at the buttom of volume
list.

BUG=24813611

Change-Id: I0b78405ec169d576de4c709bbe21b5bb9b856b87
ootInfo.java
0c64308240a7e9d3a78d4dedba2a419da63b5afd 09-Oct-2015 Ben Kwa <kenobi@google.com> Reorganize DocumentsUI roots fragment to match mocks.

BUG=24329078

Change-Id: I80fe7b939772d929236aa9e0e6fa44cdb606a038
ootInfo.java
58efce36cd1b26006e08ddd696292bf06fc34c81 20-Aug-2015 Steve McKay <smckay@google.com> Use type inference where possible.

Normalize use of Annotations like VisibleForTesting, Nullable and so on.
Also, fix a small issue where we were not doubling the marging on cells when calculating columns for grid view.

Change-Id: Ia02f683c2682fa8d0963d13f253a359911d27965
ocumentInfo.java
urableUtils.java
77797400ec103b1691e1c3fa602c329b49ac18ca 30-May-2015 Ben Kwa <kenobi@google.com> Enable apps to exclude their own roots from the DocumentsUI roots list.

- Add DocumentsContract.EXTRA_EXCLUDE_SELF (boolean extra)
- Add code to DocumentsActivity to cache the providers of the calling
app if EXTRA_EXCLUDE_SELF is set on incoming Intents.
- Add code to RootsCache to exclude roots from the calling app.
- Add code to allow only system apps to use EXTRA_PACKAGE_NAME.

Change-Id: Ia7cc2a1a297676c7b26f6e583042a4607d8c9a4e
ootInfo.java
e1a03f8eec2719279037ab348df306764dc45a70 10-Apr-2015 Tomasz Mikolajewski <mtomasz@google.com> Show copy destination when clicking on the copy notification in Documents UI.

Change-Id: I3d955595bc46903c134c0633a6d32663cc2d0c05
ocumentInfo.java
ocumentStack.java
cbce47001e15be85b084c36a64c20039a0c4a667 30-Aug-2014 Jeff Sharkey <jsharkey@android.com> Final pass at Material DocumentsUI.

Now with treatment for disabled and selected grid items. Inverts
text and icons in selected drawer items. Follows upstream color
changes to accent color. Disables some verbose logging.

Bug: 15836082, 17281688
Change-Id: I97a1c055a2f1a537388a8f5669147618e9698870
ootInfo.java
03d30a573b8bc8e169e153a0fffa053ffedcd5ee 14-Aug-2014 Alan Viverette <alanv@google.com> Make sure we're obtaining themed drawables correctly

Change-Id: I446a3492f7bf5a897c5d698e61327af4b7840d85
ootInfo.java
c29dd61cbfc9f073239bdce3f4fe397deae2c623 08-Aug-2014 Jeff Sharkey <jsharkey@android.com> More material updates to DocumentsUI.

All assets cut as alpha variants so we apply desired tinting at
runtime. Small script to automatically generate XML resources.

Bug: 15836082, 16658537
Change-Id: I803b3f0bf6f121194a5445fd1c6600fabaf28f60
ootInfo.java
fa5ec770ec9278b471670969ca56e1bdec3d050e 06-Aug-2014 Jeff Sharkey <jsharkey@android.com> Use system collator for display names.

Continue sorting directory names first, but use system collator in
case-insensitive ordering.

Bug: 13545569
Change-Id: I24b314c9ef42f397bc96f474d9593bdefc0061d1
ocumentInfo.java
a847d79310320ae8adbedb281123a0f879c2fc6e 30-Jul-2014 Jeff Sharkey <jsharkey@android.com> Light icons for DocumentsUI.

In some cases we want to show light variants. Also tweak drawer
sizes and grid padding.

Bug: 15836082
Change-Id: Ic6459ff0533a7d346c03db5d7deb3d6da42e7649
ootInfo.java
6963148e226dfadc48c36da7db14ee4587a62f6a 28-Jul-2014 Jeff Sharkey <jsharkey@android.com> First pass at Materializing DocumentsUI!

Initial Material asset drop, which still needs some tweaking. Moved
back to framework list item selectors, giving us ripples. Using
accent color overlay for activated items. Align all items to new
Material grid, including insetting list divider and resizing list
items on wide screens.

Fix obscure RTL drawing bug.

Still lots of work left.

Bug: 15836082
Change-Id: I729cc7dcb0271ee62b55d1e036fc28427fc0dd3d
ootInfo.java
7aa7601c09ab5d87cc15a0ed9a8f511d494a4cbc 30-Sep-2013 Jeff Sharkey <jsharkey@android.com> Detect wedged ContentProviders, treat as ANR.

All ContentProvider calls are currently blocking, making it hard for
an app to recover when a remote provider is wedged. This change adds
hidden support to ContentProviderClient to timeout remote calls,
treating them as ANRs. This behavior is disabled by default.

Update DocumentsUI to use a 20 second timeout whenever interacting
with a storage provider.

Bug: 10993301, 10819461, 10852518
Change-Id: I10fa3c425c6a7225fff9cb7a0a07659028230cd3
ocumentInfo.java
6efba22ce510352bb84910d6efc42fecafd31ed7 28-Sep-2013 Jeff Sharkey <jsharkey@android.com> New roots UX, async, performance, docs.

Yet another iteration from UX on how roots should be ordered. Since
we no longer categorize by type, remove from public API. Updated
asset drop with new dividers.

Update public API docs to be explicit about required columns. Hide
flags and columns that aren't required for third-party apps.

Move remainder of potentially blocking work to AsyncTasks, including
creating directories, picked root resolution, and creation of new
documents once picked.

Improve performance of layouts by removing baseline alignment and
reduce hierarchy depth. Set alpha on ImageViews directly to avoid
offscreen rendering hit.

Limit returned recents to 45 days. Show load in recents when still
waiting for backends. Show empty message when no recents stacks to
create from. Use unique key when saving recent stacks.

Bug: 10941423, 10819454, 10964412, 10960718
Change-Id: I08cf589dcda7e203acf67928f4d30322ae36ee94
ocumentStack.java
ootInfo.java
6a20e574116af1072782c1e87cb03eb33f05ec50 25-Sep-2013 Jeff Sharkey <jsharkey@android.com> Handle null stacks gracefully.

Bug: 10928395
Change-Id: Ie7c3f7e0eb068ece0cf678a5d6346f18a413856b
urableUtils.java
deffadeb7485e8660ecce12822e259d96fa06dce 24-Sep-2013 Jeff Sharkey <jsharkey@android.com> Freshen restored stacks, more UX bug fixes.

When restoring a persisted stack, such as last location or a location
where save occurred, freshen the DocumentStack to get the latest
details from backend, and ensure the path is still valid.

Filter Recent directories in create mode based on roots allowed by
incoming request.

Remember when user last picked an external app, and open drawer next
time user launches for GET_CONTENT.

Fix state list drawable ordering, and avoid clobbering Drawable
callback when wrapping in InsetDrawable; tricksy hobbitses!

Make grid items smaller to always fit two columns on phones. Draw
grid items all the way to screen edge; don't clip to padding. Better
error message when folder creation failed. Show Recents in grid mode
when picking any visual content, not just images.

Bug: 10846100, 10903211, 10898993, 10892808, 10892058, 10892009, 10885012
Change-Id: Ia0f88d911abc6ea03645d6fd3e04271c21d5936a
ocumentInfo.java
ocumentStack.java
5545f56f7561810187545a1817b6001dd1f9931b 21-Sep-2013 Jeff Sharkey <jsharkey@android.com> Create unique files, root ordering, UI bugs.

When a file already exists on disk, try adding a counter suffix to
make a unique name. Move services near top of roots list, just below
recents. Remove "Documents" root.

Increase number of recents allowed from single provider, and add more
logging to diagnose wedged loaders.

When launching GET_CONTENT apps, wait for successful result before
relaying result; canceled requests now return to DocumentsUI.

Add CloseGuard to ContentProviderClients, since leaked instances can
keep the remote process alive.

Fix UI bug around trailing breadcrumbs. Fix bug that dropped Recents
from roots list. Add up action to Settings activity. Give our
activity a default icon while waiting for async roots to load.

Bug: 10818683, 10819461, 10819461, 10819196, 10860199
Change-Id: I7b9e26b1cf8353dd3175458b23da2b4bda6c5831
ocumentInfo.java
ootInfo.java
a9ce049db87259e302e2368d2a4a1c11a94fd831 20-Sep-2013 Jeff Sharkey <jsharkey@android.com> Load RootInfo in background, invalidation.

Move all RootInfo queries to background threads to avoid janking
the UI. Update passes happen on spawed task, which swaps out updated
cache results when finished. Support partial updates when only a
single package/authority has changed. Watch for change notifications
for roots, since flags can change over time.

Ignore stopped packages when in background, but query them for roots
when launching any picker UI.

Optimize management launches by treating as one-shot requests that
don't need to wait for all RootInfo.

Bug: 10600454, 10745490
Change-Id: Ibc7b15688ef6b41bd7e9dd0d7564b501e60e49a9
ootInfo.java
f6db154975ef575479ba4ab59d80bcf592288252 13-Sep-2013 Jeff Sharkey <jsharkey@android.com> More UX updates around picking images.

When picking images or videos, hide the titles in recents, since the
thumbnails should speak for themselves. Also respect new flag that
allows a directory to request their titles be hidden.

Show directory icon hint in grid mode when showing a thumbnail, to
remind user it's a directory.

Filter directories out of recents. Hide most action bar icons on
phones, even when room. Only show drawer on first launch. Hide most
drawer headers to match spec.

Bug: 10710331
Change-Id: I0ef1973ddd62750f57345336388366eda1449720
ocumentInfo.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
ocumentInfo.java
ootInfo.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
ootInfo.java
d182bb641f228b2d28527a6aa86075f6358ab838 07-Sep-2013 Jeff Sharkey <jsharkey@android.com> Remember mode and sort on per-directory basis.

Persist the last user-selected list/grid mode and sort order for
each directory. Remembered user choice always overrides provider
hinting.

Filter out recent documents that don't match requested MIME type, and
show recents in grid mode when picking images. Hide mode and sort
order in recents.

Add hinting flag for backend to indicate a directory would like to be
sorted by last modified. Include explicit root in DocumentStack and
clearly mark derived fields.

Bug: 10392047, 10608506
Change-Id: I2dd3a0e4112852ebf87e7dbb08b3781c86587dcf
ocumentInfo.java
ocumentStack.java
ootInfo.java
6d97d3c1a2ebac4e3f32c7e5bc134864ace1c17f 06-Sep-2013 Jeff Sharkey <jsharkey@android.com> Another asset drop, provider icons, tests.

Latest asset update, including provider icons which are treated as
special cases for now instead of checking into separate apps. Add
tests for MIME type matching of roots. Remove unused XML.

Bug: 10510022
Change-Id: Id567a9e06ba241f60ac011823e550253c6c797fb
ootInfo.java
923396b7720367ec99c889725fddfa556e703971 05-Sep-2013 Jeff Sharkey <jsharkey@android.com> Filter roots based on supported MIME types.

Using flags to indicate supported types isn't very extensible, so
use newline-separated MIME types instead.

Bug: 10514613
Change-Id: I45641fc20b423b2a0bb2df7457c274f42aa6861a
ootInfo.java
0b14db3cf5eac43736462999337c9a3efdc1ac81 05-Sep-2013 Jeff Sharkey <jsharkey@android.com> Asset drop, icons for common MIME types.

Bring in latest assets from UX. Map common MIME types to specific
icons.

Bug: 10510022
Change-Id: I01ea8749ca5515a04efcbc15eb0c8cbb43e5e7ad
ocumentInfo.java
ootInfo.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
ootInfo.java
ded77187ef53341765fcab8e29cda94810fc2ca5 03-Sep-2013 Jeff Sharkey <jsharkey@android.com> Updated documents UX around action bar.

Change action bar to match current design; drawer is always available
and navigation dropdown is used to interact with current traversal
path in hierarchy. On first launch, show recents with drawer
expanded. On subsequent launches, resume from last location with
drawer closed. If last location root isn't applicable, then behave
like initial launch. Move sort order into action bar submenu.

Delete documents using contract. Use unstable provider when
inflating DocumentInfo from Uri.

Bug: 10330219, 10510851
Change-Id: I6e94637d70ebca156a6c5d50272e878156d0dd62
ocumentInfo.java
ocumentStack.java
251097b3789632000ccdaf7fb7d66a82ff37d882 03-Sep-2013 Jeff Sharkey <jsharkey@android.com> New recents behavior to match spec.

Updated behavior queries each documents root for recently modified
documents. It uses a new variant of DirectoryLoader which limits the
maximum number of parallel queries to relieve memory pressure. When
first started, it waits up to 500ms for everyone to finish, then
publishes whatever results are ready, and then refreshes results as
each straggler finishes.

New RootCursorWrapper that always blends in authority and rootId
columns, which are used for binding root details from blended cursors.

Bug: 10593596, 10329994
Change-Id: Icc0d4a2f1b6166edc72f78a4c88f444eeba6f2f0
ocumentInfo.java
ootInfo.java
b51331116eb2ebbc41aaf69142916f9af6dffdd5 02-Sep-2013 Jeff Sharkey <jsharkey@android.com> Instance state, fix sharing, Durable objects.

Remember instance state across configuration changes, and enable
rotation. This remembers current modes and in-progress traversals.

Always finish action modes after launching an action. Fix sharing
by always putting Uris in extras, and always wrap in a chooser. Find
common MIME types when sharing multiple documents. Fix downloads
launching by following directory MIME type change.

Introduce "Durable" which is like Parcelable, but can be used for
both byte[] storage and Parcel transport. Make both DocumentInfo
and DocumentStack durable.

Disable recents until new behavior is implemented.

Bug: 10460236, 10446265, 10533674, 10456344, 10456702
Change-Id: I4eaf2b0b4cde611c69a1e7b5f1586f6b02019b27
ocumentInfo.java
ocumentStack.java
urable.java
urableUtils.java
5dfb345df7cb17b3a7e534a80a270b4afe7934da 01-Sep-2013 Jeff Sharkey <jsharkey@android.com> Use Cursors directly when binding documents.

Instead of creating a DocumentInfo for every list item, bind the
adapter against Cursor directly.

Create new SortingCursorWrapper which performs sorting at query time
and keeps a O(1) mapping from sorted to unsorted positions in the
underlying Cursor.

Suppress extra loader passes that had been kicked off. Use unstable
provider when querying to guard against broken providers.

Bug: 10567506, 10510851
Change-Id: I535814da6b17c38de04a1175e0afcc78c6b966ce
ocumentInfo.java
ootInfo.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
ocument.java
ocumentInfo.java
ocumentStack.java
ootInfo.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
ocument.java
ocumentStack.java
ocumentsProviderInfo.java
oot.java
4eb407a832b7d6a2d62a535e5cab70b00a0bc8ed 19-Aug-2013 Jeff Sharkey <jsharkey@android.com> Management actions, invalidate caches.

In manage mode, touching launches a VIEW intent for the file. Also
adds actions for sharing and deleting.

Move roots and thumbnail caches into Application object, and flush
cache when thumbnail size changes. Listen for package changes and
broadcasts that should invalidate our roots cache.

Pick default grid/list mode based on provider hint.

Bug: 10329983, 10330210, 10378834, 10330069
Change-Id: I75afb1c58ab71bb9d55852b1059da7257a376248
ocument.java
a5599ef636e37cb0b6474349936999be1afe6987 16-Aug-2013 Jeff Sharkey <jsharkey@android.com> Documents management mode; API adjustment.

Create documents manage mode to support Downloads and transient
storage devices. Locks user into requested backend root, and forces
file sizes on and sorting by last modified.

Separate API constants for Documents versus Roots, and give concrete
MIME types for roots.

Treat null sizes as unknown. Documents are always enabled in list
so that divider is drawn. Mark external storage file as writable.

Bug: 10329983, 10332993, 10332952
Change-Id: I05f4fdf5b04041a38e1ba7fb30202a3b0c615bf6
ocument.java
oot.java
0c2d31bfa113c2848620ac05c916802410b71da1 08-Aug-2013 Jeff Sharkey <jsharkey@android.com> Better handling of broken storage providers.

Begin throwing FNFE when storage provider doesn't know about document
or when it's having trouble. Treat all provider errors as FNFE and
avoid crashing our UI.

Change-Id: I946f1ae4125791999464dc4ce494853d5d1c0629
ocument.java
ocumentStack.java
9fb567b59112f99e64e0bff6f343188331bad28d 08-Aug-2013 Jeff Sharkey <jsharkey@android.com> Settings, replace files, sorting by size, tweaks.

Add settings to show file sizes and advanced storage devices, both
disabled by default. Add sorting by size when enabled in settings.

Always show all documents, but only allow selection when they match
MIME filter. When creating, select entire filename on focus. When
creating, treat selected documents as replacement targets using that
exact Uri unless display name is changed.

Show available bytes for device roots. Show empty text label in
empty directories. Split grid backend and details into two separate
lines. Fix path label ordering when rendering recent directories.

Change-Id: I44c62e8adb8ca7d4355510a13d1ba975196a2d29
ocument.java
ocumentStack.java
oot.java
b156f4bf8cdfe475a7116b627d84a281e1a281b7 07-Aug-2013 Jeff Sharkey <jsharkey@android.com> Recents in create, uniform item layouts.

Show recent directories in a separate fragment, and save as serialized
versions of new DirectoryStack. Cleaner behavior around recents and
search, instead of treating them as pseudo-Documents.

More uniform item layouts between list and grid, including both date
and size information, and originating storage root in recents. Avoid
clashing directory loaders by assigning unique numbers. Promote
list/grid switching up into activity.

Change-Id: I9a93460b896067ca036d7e772eeabde31face2e1
ocument.java
ocumentStack.java
oot.java
66516697a29cf00d93893a1011d3befc7c1ee37f 06-Aug-2013 Jeff Sharkey <jsharkey@android.com> Storage roots in fragment, sectioned.

Move storage roots into a fragment, since it's not a drawer on
tablets. Cluster and sort roots when displaying. SectionedListAdapter
to make clustered roots easier to manage. Add docs for root types.

Move roots cache into separate class to make it easier to share.

Change-Id: Ia0b92eade059e816324641f600c08026c0e268c9
ocument.java
oot.java
ef7184a1aa0be5d496a5cb495a0f9e11f342af44 06-Aug-2013 Jeff Sharkey <jsharkey@android.com> More recents work; filtering and sorting.

Update DirectoryFragment to render List<Document>, making it more
general purpose. Feed it documents either from a backend Cursor or
after resolving fields from a recents Cursor. Start in recents when
no persisted stack available. Synthesize a root for recents.

Local directory filtering and sorting using predicates and
comparators, all performed on background thread. Introduce
UriDerivativeLoader which handles ContentObserver updates while
producing a derivative work of a Cursor.

Split data model classes into separate files.

Change-Id: Idb88b4ee22c58c8e508328e678877f7e4c978533
ocument.java
ocumentsProviderInfo.java
oot.java