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
When an app request access to a scoped directory which the user already
denied access, it will display a "Do not ask again" checkbox; if the
user checks that option, further requests will be automatically
rejected.
The history of denials is stored in the shared property file.
The UI is not polished yet, the style will be fixed in a future change.
BUG: 26750152
Change-Id: I181923adfb6a1c7c1c17e305d6838314280417fc
This CL prevents allocating new strings just due to the prefix,
which also simplifies the code.
Bug: 27286016
Change-Id: I3d0ea9e4ede68814c78404bd9ac820b8900851f5
Previously we assume the home root exists always, but while migrating
internal storage, the home root is temporary removed from Android. Since
we open donwnloads root by default now, the CL lets Files app move to
the downloads directory instead of home root when the current directory
is removed.
BUG=27570929
Change-Id: I89efb1ae32ba8ae7269b3242035d5b67114fcb54
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
This guarantees the retry/delete support in the downloads
trampoline can do its thing.
Allow APKs not in downloads to go directly to pakcage
manager via VIEW intent.
Add test coverage for retry dialog.
Bug: 27539337
Change-Id: I75c5db8915e24a7648c7990136d39ed86d407637
Delete "MANAGE_ROOT" activity.
Add intent filter for "BROWSE_DOWNLOADS".
Open by default on Downloads directory.
Bug: 27563427
Change-Id: I1f85dc17a0bc94b439a272847e4ab3bb347ead23
Sometimes providers may refuse to do a provider-side copy/move
even though the documents had the SUPPORTS_COPY/MOVE flags set.
This is because optimized copy/move may be only supported within
the same root.
Since there is no easy way to check if documents are on the same
roots from DocumentsUI, as well as whether the provider can actually
copy/move efficiently between different roots, we should tolerate the
failure and do a fallback to byte-by-byte operation.
Bug: 27436368
Change-Id: Ia1a0fbdba26c06b2151afc25d8513c01d60d31db