History log of /frameworks/base/core/java/android/content/ContentResolver.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
e14159d2c5919e2eb34e62e6ce1c56459342c716 29-Apr-2017 Jeff Sharkey <jsharkey@google.com> Merge "Revert "Treat Telephony as legacy app for now."" into oc-dev
4b2e87f928ccee2ba3cc6e189678a94fcfa0b71b 26-Apr-2017 Jeff Sharkey <jsharkey@google.com> Revert "Treat Telephony as legacy app for now."

This reverts commit 2afae796de74064e67a6039616e0ed49efcdc9b7.

Reason for revert: b/35792675 now fixed

Change-Id: Ie559fc7ebe209c45bb598daba781ef5e6e1f839e
/frameworks/base/core/java/android/content/ContentResolver.java
76b2770214aaa6868c476273337263f45fa4dc9d 24-Apr-2017 Steve McKay <smckay@google.com> Address API Council feedback.

Bug: 37422306, 37419881
Test: Build and read docs.
Change-Id: Id6c8bad6ad6b311017094ce5dbd66cfd72c477ad
(cherry picked from commit d74a3bd7d1d3175856f450a9e77dabb89f2e5060)
/frameworks/base/core/java/android/content/ContentResolver.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/content/ContentResolver.java
2c66f192ca3f43b35db84c13af687a847b10301d 03-Mar-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Add extra indicating honored query arguments."
415f41ba206a9d0e299a081cc1ff6cd473f4bef0 01-Feb-2017 Steve McKay <smckay@google.com> Add extra indicating honored query arguments.

Rename QUERY_RESULT_SIZE to EXTRA_TOTAL_SIZE.

Change-Id: I18f1e0b77362c6f898bc4d5846e21dfb205be19a
Test: Manual
Bug: 30927484
/frameworks/base/core/java/android/content/ContentResolver.java
fb64de06cd1f6cd0346e481f13d6cb886dff1bfb 01-Mar-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Use context's userId in ContentResolver class."
b4e2ddde4f08ba25f57c97a4fe7c339cbe805559 04-Feb-2017 Sudheer Shanka <sudheersai@google.com> Use context's userId in ContentResolver class.

- When registering and notifying observers, we should use the user in the
context as opposed to current user.
- Relax the permission check while registering and notifying content observers
to use INTERACT_ACROSS_USERS instead of INTERACT_ACROSS_USERS_FULL permission.

Change-Id: I973936903d4a2272c5722f3b98a057a40c0402be
Fixes: 32955100
Test: Created managed profile and verified that there are not failures.
runtest -x core/tests/coretests/src/android/content/SecondaryUserContentResolverTest.java
runtest -x core/tests/coretests/src/android/content/ManagedUserContentResolverTest.java
/frameworks/base/core/java/android/content/ContentResolver.java
2afae796de74064e67a6039616e0ed49efcdc9b7 27-Feb-2017 Jeff Sharkey <jsharkey@android.com> Treat Telephony as legacy app for now.

Telephony stack is relying on non-existant ContentProviders for
sending Uri change notifications; it'll eventually need to move over
to using real ContentProviders, but apply this band-aid for now.

Test: builds, boots, SMS send/receive works
Bug: 35792675
Change-Id: Ice66278f876f1c754852300da7eb045a7c778d14
/frameworks/base/core/java/android/content/ContentResolver.java
912e80d3450943ac2bbca03f33c31c042799a0a1 24-Feb-2017 Jeff Sharkey <jsharkey@android.com> Require valid authorities for Uri notifications.

Content changed notifications are really only valid for content://
Uris, which are really only valid when we have a valid ContentProvider
backing them. This has been implicit for a long time, but we actually
need to start enforcing it based on target API.

We also now tell developers about why their notification requests
are being denied, instead of silently logging.

Test: builds, boots, common operations work
Bug: 34049049
Change-Id: Ie8ab8d8674cff13e3e9269ffddc4ad998cb848c4
/frameworks/base/core/java/android/content/ContentResolver.java
da2006a0bd169f8ac22d3c626eeb5616c907fed3 15-Feb-2017 Esteban Talavera <etalavera@google.com> Revert "Use context's userId in ContentResolver class."

This reverts commit 2b44387f5d706e477418795c2d57d0909dc7ed22.

Bug: 35374151
Change-Id: Ifdde7a3b4e9141d7e283478aff49971c6a5dcaa2
/frameworks/base/core/java/android/content/ContentResolver.java
2b44387f5d706e477418795c2d57d0909dc7ed22 04-Feb-2017 Sudheer Shanka <sudheersai@google.com> Use context's userId in ContentResolver class.

When registering and notifying observers, we should use the user in the
context as opposed to current user.

Fixes: 32955100
Test: runtest -x core/tests/coretests/src/android/content/CrossUserContentResolverTest.java
Change-Id: Idc169d6cc1ec0cea40a736b87c12d4609f1de9c7
/frameworks/base/core/java/android/content/ContentResolver.java
d7ece9f78d6c91aeb4c5401852c8548b3ed62587 13-Jan-2017 Steve McKay <smckay@google.com> Add OFFSET and LENGTH args for paged queries.

Also update docs according to parting comments on ag/1726256.

Bug: 30927484
Test: Build and update api.
Change-Id: Ie0dd3ae06f6a7a20001571beec10a4d5bca63970
/frameworks/base/core/java/android/content/ContentResolver.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/content/ContentResolver.java
836f9249b7b34fa1655a3e0720bff32480a7dc03 21-Dec-2016 Ben Lin <linben@google.com> Unihiding REFRESH_SUPPORTED and ContentProviderClient#refresh.

Test: Only unhiding previously hidden methods.
Change-Id: Id1731b64b86760d3249855d685d8cb83721596fc
/frameworks/base/core/java/android/content/ContentResolver.java
ea93fe75396465b26429cfe1c1dcfadf7351354f 02-Dec-2016 Steve McKay <smckay@google.com> Replace ContentProvider SQL args w/ Bundle & Constants.

Test: cts-tradefed run cts-dev -m CtsContentTestCases
Bug: 30927484
Change-Id: Idb9dbc2b80896e9f8474a0db71353b7a3810d597
/frameworks/base/core/java/android/content/ContentResolver.java
c67b49af3fdb3582d07aa533d9cf063ba9aabc2c 15-Nov-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Javadoc and un@hide ContentResolver#refresh and ContentProvider#refresh."
2b64a88274f0af2c19aeacc81735605e7300cf3c 12-Nov-2016 Ben Lin <linben@google.com> Javadoc and un@hide ContentResolver#refresh and ContentProvider#refresh.

Test: CTS Tests part of same topic.

Bug: 31647485
Change-Id: Iad7f19b6b54f72736fbb7e477f67cf541d838903
/frameworks/base/core/java/android/content/ContentResolver.java
dc589ac82b5fe2063f4cfd94c8ae26d43d5420a0 11-Nov-2016 Sudheer Shanka <sudheersai@google.com> Update usage of ActivityManagerNative.

- Remove references to ActivityManagerProxy.
- Add isSystemReady to ActivityManager.

Bug: 30977067
Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test android.server.cts
adb shell am instrument -e class com.android.server.am.ActivityManagerTest,com.android.server.am.TaskStackChangedListenerTest \
-w com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner
Change-Id: I07390b6124fb1515821f5c0b37baf6ae74adc8fa
/frameworks/base/core/java/android/content/ContentResolver.java
1cf454fcb69f63cfb2c5576aab310679df502516 10-Nov-2016 Ben Lin <linben@google.com> Adding ContentProvider#refresh and ContentResolver#refresh.

Original CL is from ag/1568530.

Bug: 31647485
Change-Id: Ib45fc995a361b8c75cd3600f638910b18a263d51
/frameworks/base/core/java/android/content/ContentResolver.java
f6d424f133563fb3fc75d8fd260e6e7ed4608ef6 21-Sep-2016 Svet Ganov <svetoslavganov@google.com> While-list apps to access account if already saw it

Sync adapters without an account access cannot run until the
user approves the account access (for the case the account
access is not allowed by other policy such as being singed
with the same cert as the authenticator). However, if the
sync adapter package already got the account from another
app which means it already saw the account we white-list
the sync adapter app to access the account as it already
saw it - the bird is out of the cage.

bug:31162498

Change-Id: I2b72f3b0d6307561ed68db2f2e9c900b15e8d098
/frameworks/base/core/java/android/content/ContentResolver.java
c29d2b04927b9d28089d79cbaa63a6a91db1bb5a 30-Jun-2016 Daniel Nishi <dhnishi@google.com> Move the MIME type icon detection into the platform.

This allows the MIME type icons to be used in other system apps.
In this instance, the StorageManager app needs to show file icons
for a given file. By moving the icon mapping into a static library,
we can avoid duplicating the mapping and resources.

Bug: 29826961
Change-Id: Ic2dc7970cc5a5ca430e33425eb9f1ecbd733fe9a
/frameworks/base/core/java/android/content/ContentResolver.java
9bbaacf845f6f387cd6e16834da50f7c1a0b451f 20-Jun-2016 Fyodor Kupolov <fkupolov@google.com> Use granted userId to look up provider info

In getPersistedUriPermissions, use granted userId instead of the calling
userId to look up provider info.

Bug: 29058113
Change-Id: Ia637be414f9ef3b8e9bce13bb56bd335cfb28ac7
/frameworks/base/core/java/android/content/ContentResolver.java
e761777323444e900ab683137a1e4d6abecdc728 28-Apr-2016 Dianne Hackborn <hackbod@google.com> Fix issue #28431297: Crash in system process

Don't allow null URIs to get put into the notification path.

Change-Id: I4f68f438960c8a90c7b417feaa2e19968a3a200a
/frameworks/base/core/java/android/content/ContentResolver.java
141f11c82a2dbf042833f75aeae6f028e8ae2084 06-Apr-2016 Dianne Hackborn <hackbod@google.com> More work on issue #26390151: Add new JobScheduler API...

...for monitoring content providers

- Improve media provider change reporting so that observers can
avoid spurious reports of the top-level content directory changing.
- Fix a bug where collected content changes while a job was running
were not being properly propagated to the next job.

Change-Id: I29e3c2960e6fec75b16ee3ee6588d47342bf8c75
/frameworks/base/core/java/android/content/ContentResolver.java
a04c7a7c6442b8c6f87f5dd11fc5659cdb92decc 18-Mar-2016 Jeff Sharkey <jsharkey@android.com> Mark more Bundles as being defusable.

They're destined for the system, so they're okay to look inside.

Bug: 27726127
Change-Id: Ic85c308a8efe6f9b8652952717c72b3c663d328a
/frameworks/base/core/java/android/content/ContentResolver.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
/frameworks/base/core/java/android/content/ContentResolver.java
40a11e525c3888613361a555d71ff13e5ef834e4 01-Feb-2016 Shreyas Basarge <snb@google.com> Merge "Updated Javadoc to reflect min period"
e96c3b7eff5290f2a6c5e572babbfa8a3897be96 29-Jan-2016 Shreyas Basarge <snb@google.com> Updated Javadoc to reflect min period

Javadoc updated and logging added for
min period and min flex enforcements
in JobScheduler and SyncManager.

Bug: 26874152
Change-Id: Ifdd248b776a1bd04df21b7b9f0ac96bdef0f8bb6
/frameworks/base/core/java/android/content/ContentResolver.java
8c834c07675052c984728cbf79f7c2e0d8246e43 07-Jan-2016 Shreyas Basarge <snb@google.com> SyncManager on JobScheduler

SyncManager now uses JobScheduler for scheduling
and persistence purposes.

Change-Id: I38c92aedbf4d891ca297644d0b706835aaedfcd6
/frameworks/base/core/java/android/content/ContentResolver.java
1a30bd9b13fd127d9bbfdc5fd4cb2f80ab7ece21 11-Jan-2016 Dianne Hackborn <hackbod@google.com> Add and implement JobScheduler content observer APIs.

Allows one to schedule jobs to run when content URIs
change, and find out what changed when the job executes.

This required adding a new API to StateController to
tell it when we are about to start executing a job, so
we can transfer the currently collected changes out of
its internal state to fill it in to the JobParameters.

Also some additional dumpsys debug output to help
understand what is going on in the job scheduler.

Change-Id: I91f51b226ff4add7a271a8333beffa5e86c7bf18
/frameworks/base/core/java/android/content/ContentResolver.java
8588bc1ef1f020bbe4a24d46874f675708149a57 07-Jan-2016 Jeff Sharkey <jsharkey@android.com> Add flags to requests for package UID/GIDs.

This gives callers the ability to request details for missing
packages. Also add annotations for userId and appId variables and
start tagging their usage.

Change-Id: I63d5d7f870ac4b7ebae501e0ba4f40e08b14f3f6
/frameworks/base/core/java/android/content/ContentResolver.java
a73b8fd1f4faaad00d8a49d6e496aaf249fa7003 07-Jan-2016 Jeff Sharkey <jsharkey@android.com> Add some TestApis to fix build.

Change-Id: Icf0d8d63f3a41d99e46ebe96003863bae637bd9d
/frameworks/base/core/java/android/content/ContentResolver.java
60cfad80bdf61db436643927337c2fb30186e99d 06-Jan-2016 Jeff Sharkey <jsharkey@android.com> Discourage use of "_data" column.

Moving forward, all client file access really needs to be going
through explicit APIs like openFileDescriptor(), since that allows
the provider to better protect its underlying files.

This change also changes several classes to use the AutoClosable
pattern, which enables try-with-resources usage. Older release()
methods are deprecated in favor of close().

Uniformly apply CloseGuard across several classes, using
AtomicBoolean to avoid double-freeing, and fix several resource
leaks and bugs related to MediaScanner allocation. Switch
MediaScanner and friends to use public API instead of raw AIDL calls.

Bug: 22958127
Change-Id: Id722379f72c9e4b80d8b72550d7ce90e5e2bc786
/frameworks/base/core/java/android/content/ContentResolver.java
23d188873a5d54b5508d0f4679579e2faf7c0336 03-Dec-2015 Jeff Sharkey <jsharkey@android.com> Merge "Avoid a double decrease of reference counter for unstable provider" am: e8651aed4b am: aae0a49c16
am: a9c2218940

* commit 'a9c22189404b5cb1f4e66ca3ff99ed8e04403f1e':
Avoid a double decrease of reference counter for unstable provider
f783c02c61850cad5ecac59261d70ff967c9b898 07-Feb-2014 Koji Fukui <koji.fukui@sonymobile.com> Avoid a double decrease of reference counter for unstable provider

In some APIs unstable provider is released twice.
Unexpected release of unstable provider makes the reference counter
for unstable provider invalid state and it causes application crash.

This change avoids unexpected double decrease of reference counter
for unstable provider by setting null to prevent extra release
in finally block.

Change-Id: Ie2985c316ffcb6a9db7570c46347035c24d226af
/frameworks/base/core/java/android/content/ContentResolver.java
788fc2b904add1c8b02ac62663b61ae8fd7aed5a 06-Jul-2015 Tor Norbye <tnorbye@google.com> Annotate Intent and ContentResolver params with @RequiresPermission

Change-Id: I831cd55da9c840be0f39b77a8ae868146f089326
/frameworks/base/core/java/android/content/ContentResolver.java
adea1918bef942b6214cf549b1316affd2b10280 19-Jun-2015 Benjamin Franz <bfranz@google.com> Make ContentObservers work across profiles

Currently registering for changes to a cross-user Uri does not work, as
the calling user id is used to identify the Uri. Change this to use the
userId the Uri is associated with. In order to protect Uris across
users, we only allow registration for a Uri when the caller has read
permission. We also only allow notify calls from across users when the
caller has write permission to the Uri.

Bug: 19312280
Change-Id: Ide216b09980ed5ebefe9b37c946dd8160167809f
/frameworks/base/core/java/android/content/ContentResolver.java
37a40c24deb02bca3868a8085069afae112f22e4 17-Jun-2015 Amith Yamasani <yamasani@google.com> App Standby : Association between content providers and their sync adapter

Set sync adapters to active if the associated content providers are used
at foreground process state.

Minimize how frequently published content providers are reported by
keeping track of last reported time.

Also cache sync adapters associated with an authority in SyncManager.

Bug: 21785111
Change-Id: Ic2c8cb6a27f005d1a1d0aad21d36b1510160753a
/frameworks/base/core/java/android/content/ContentResolver.java
34796bd07f871bc762d8ebd55cfbb80fcff4aeca 12-Jun-2015 Jeff Sharkey <jsharkey@android.com> Sigh, some apps are sending null ContentValues.

Bug: 21560515
Change-Id: Id5a62611781a2d9da47ad3e522d3d43f860b1f70
/frameworks/base/core/java/android/content/ContentResolver.java
673db44fb3da4558059ef9746a496a63157f10bc 12-Jun-2015 Jeff Sharkey <jsharkey@android.com> Annotate ContentResolver/Provider arguments.

Explicitly mark if they're @Nullable or @NonNull.

Bug: 21560515
Change-Id: I5f671c241dfe65e5ab8bc06b2382fbf5a82bdb20
/frameworks/base/core/java/android/content/ContentResolver.java
143739cb6b0468804f83f2398b3666eb21280de6 02-Jun-2015 Jeff Brown <jeffbrown@google.com> Clarify docs on registerContentObserver.

Bug: 19343752
Change-Id: If241e329f73925964f5589ee72d63a1fae54ef1b
/frameworks/base/core/java/android/content/ContentResolver.java
9f78f6528f1afad260be51d2058c37717851e3a2 02-Mar-2015 Scott Kennedy <skennedy@google.com> Mark arg and extras @Nullable in ContentProvider#call()

Change-Id: I431b01323fe76c744520c72661d30f6b9cb6b7f1
/frameworks/base/core/java/android/content/ContentResolver.java
03e1e836976f44ed729fa0a41898d7ce4df34788 10-Sep-2014 Alexandra Gherghina <alexgherghina@google.com> Bugfix: use the correct user for ContentResolver calls

Bug: 16860604
Change-Id: I2de228442b7bd824a115f56a24d682d346737976
/frameworks/base/core/java/android/content/ContentResolver.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/content/ContentResolver.java
ec4bb45a8c6ca4504483ce57577d8adc31cd0966 06-Aug-2014 Nicolas Prevot <nprevot@google.com> When notify uri changes, changing the way we retrieve the userId.

Changing from UserHandle.getCallingUserId() to UserHandle.myUserId().
This makes the DocumentProvider work across users.

BUG: 16126891

Change-Id: I8ede64f2087894bb85eff5286803cdebd57e7137
/frameworks/base/core/java/android/content/ContentResolver.java
1dddc7fc790f14208516b4551ff12b2db8528864 07-Jul-2014 Nicolas Prevot <nprevot@google.com> Making getProviderMimeType work across users.

For apps with cross-user uri grants, but without INTERACT_ACROSS_USERS.

BUG: 16128346

Change-Id: I0136cd274eaf457804d196c09f746f66c1fe599f
/frameworks/base/core/java/android/content/ContentResolver.java
0e9ac20d7e0c9aca8cd342d97465adfac4c7e6e1 16-Jul-2014 Alexandra Gherghina <alexgherghina@google.com> Do Not Merge Per-user API for master sync

Change-Id: I6a8088eb3bfddae4c8e38904dd26baf3c7c09c9e
(cherry picked from commit 222aea8bd997807784dc99ca53f63280d384fdf0)
/frameworks/base/core/java/android/content/ContentResolver.java
cb22807ffcf79db1b62162842d0a90251a463ea7 01-Jul-2014 Alexandra Gherghina <alexgherghina@google.com> Adds per-user APIs required by the Settings app

Bug: 15466880
Change-Id: Ic99fbf074564901b04d32b08f3a7a38555f330b3
/frameworks/base/core/java/android/content/ContentResolver.java
0363c3eb089afd4474bfd6ae6ee8a500d6e97614 23-Jun-2014 Alexandra Gherghina <alexgherghina@google.com> Expose per-user APIs for content services.

Bug: 15466880
Change-Id: Ib5a030e78559307627fe0d2e80ce6f1a7825109d
/frameworks/base/core/java/android/content/ContentResolver.java
5a9decd589f3f6a512168fd669ee2c5d8daa238b 04-Jun-2014 Matthew Williams <mjwilliams@google.com> Redact SyncService stuff from master

This changes the API surface area, deleting things we aren't releasing.
I'll do the internal clean-up at the same time I do the SyncManager
refactor to sit on top of the TaskManager.
Bug: 14997851
Change-Id: Ibefbb246f0e98d3159399151744279902468a23c
/frameworks/base/core/java/android/content/ContentResolver.java
d85fc72fb810858f7502e7e7f1bad53e1bf03edd 16-Apr-2014 Nicolas Prevot <nprevot@google.com> Resolving resources across users.

When an intent is sent to another profile:
For content uris contained in this intent:
The userId of the source user is added to the userInfo part.
The ActivityManagerService has been modified to resolve resources in the user specified by the uri.
The user id to which the uri belongs to is stored in the UriPermission.

Change-Id: I43dc76895aba692bf148d276253aeaf9c75fce34
/frameworks/base/core/java/android/content/ContentResolver.java
846318a3250fa95f47a9decfbffb05a31dbd0006 04-Apr-2014 Jeff Sharkey <jsharkey@android.com> Allow prefix-based Uri permission grants.

Define new FLAG_GRANT_PREFIX_URI_PERMISSION which indicates that a
Uri permission grant should also apply to any other Uris that have
matching scheme, authority, and path segments. For example, a prefix
grant for /foo/ would allow /foo/bar/ but not /foo2/.

Allow persistable and prefix grants to be issued directly through
grantUriPermission(). Relaxing persistable is fine, since it still
requires the receiver to actively take the permission.

Since exact- and prefix-match grants for the same Uri can coexist,
we track them separately using a new UriGrant key. (Consider the
case where an app separately extends READ|PREFIX and WRITE for
the same Uri: we can't let that become READ|WRITE|PREFIX.)

Fix revoke to always take away persisted permissions. Move prefix
matching logic to Uri and add tests. Add new flags to "am" tool, and
various internal uses around Intent and Context. Switch some lagging
users to ArraySet.

Bug: 10607375
Change-Id: Ia8ce2b88421ff9f2fe5a979a27a026fc445d46f1
/frameworks/base/core/java/android/content/ContentResolver.java
9abfa111a37689f6b0374286513ffd2a995d82eb 03-Mar-2014 John Spurlock <jspurlock@google.com> am 388eece1: am d708b2f1: am e3a6a7b4: am 841aa8db: am 5237a792: am 8c44c394: Doc fixups to ContentResolver, MediaRouter.

* commit '388eece1eae65d460d1cd29afe1ac9df79bf2885':
Doc fixups to ContentResolver, MediaRouter.
8c44c394bf82a9a8b30bef32ddf46aeed31d8ae4 03-Mar-2014 John Spurlock <jspurlock@google.com> Doc fixups to ContentResolver, MediaRouter.

Change-Id: Ie821f971adf8fbbbbb6347713ae658e421d81cb8
/frameworks/base/core/java/android/content/ContentResolver.java
bd7bcf0fba1a991e80ea279b090aa584707fdabf 06-Feb-2014 Matt Casey <mrcasey@google.com> Add more MediaStore constants for playback intents

Constants are derived from this doc:
https://docs.google.com/a/google.com/document/d/1lmlFcTeefLDRp_bpMrXk3yK9nKxoTVfpcShanpLxiMg/edit#heading=h.b16863tyyjzv

That doc contains the full explanation of these changes.

I'm making this change on behalf of {elmas,pengr} who don't have
android source access but designed this in collaboration with
rharagutchi on the play music team. I'll probably have to route any
significant questions through them.

Bug: 12874557
Change-Id: I85a4bee57a2bde519da0dc6de2cad9d036da225c
/frameworks/base/core/java/android/content/ContentResolver.java
88926a5482552ddf2f4906df581bbbf1cc9d03aa 14-Jan-2014 John Spurlock <jspurlock@google.com> am 4b67b88e: am cce06eda: am b3436359: am e05190ea: am 85f98508: Merge "Docfixes: three typos and escape */*." into klp-docs

* commit '4b67b88e344a147317fc6b32e5364d4cfabf1e1d':
Docfixes: three typos and escape */*.
3390018c6b45acffa6edf97a4174ca49f1e8c76d 02-Jan-2014 John Spurlock <jspurlock@google.com> Docfixes: three typos and escape */*.

Change-Id: I418d855b5d08a1a20eaca3d8e4d2e5d0fca23dd5
/frameworks/base/core/java/android/content/ContentResolver.java
69002ae2a2afd0f759c22ea47d669ddc33b3255a 19-Oct-2013 Nick Kralevich <nnk@google.com> Fix build.

Change-Id: Icf14e63d759b021b5f9f79f09efa1d101764b9b7
/frameworks/base/core/java/android/content/ContentResolver.java
0e4655800b96caa297d2dc55e064ee061c8c0f89 16-Oct-2013 Jeff Sharkey <jsharkey@android.com> am f53c1a68: am f82a387c: am e3924ca4: Merge "Improve OPEN/CREATE_DOC docs." into klp-dev

* commit 'f53c1a6841b4c6a1541e9548f425e54c486031d1':
Improve OPEN/CREATE_DOC docs.
adef88a0a9d65e7f5ae812594e8c039747388cdd 15-Oct-2013 Jeff Sharkey <jsharkey@android.com> Improve OPEN/CREATE_DOC docs.

Bug: 10936473
Change-Id: I4378aaaf927f114982191efd4f9887dad075390d
/frameworks/base/core/java/android/content/ContentResolver.java
d08d6686c5e16cedc23cd9bc836a28d629b8622c 14-Oct-2013 Matthew Williams <mjwilliams@google.com> resolved conflicts for merge of 94b51810 to master

Change-Id: Ida818f066b66c356a84c80e5eab0a4e2cf4ebd49
632515b9d0960749ddb1636677d7f12f196d73f7 11-Oct-2013 Matthew Williams <mjwilliams@google.com> Fix infinite boot-loop bug in SM.

Bug:11064918
If the ContentResolver sync API is used with the empty ("")
string as a provider, the ContentService will throw an RTE.
This cl addresses all the entry points of the API that could
allow this, as well as adds an ifEmpty check at the point of
failure.
Also removed RTE throws from public functions(no point in
crashing the phone).

Change-Id: I57427d12a6cafb3e6d7a32ca0c10b05315b20580
/frameworks/base/core/java/android/content/ContentResolver.java
c64ff3782c71ce7b5a92b7d91199a922ea0a37d9 10-Oct-2013 Jeff Brown <jeffbrown@google.com> Minor code cleanup in loaders.

Change-Id: I38147eb9e494b53d41ca3cad042d804631916941
/frameworks/base/core/java/android/content/ContentResolver.java
6699ae2b76fabaf179738c853f29ac21d5caf1be 10-Oct-2013 Jeff Sharkey <jsharkey@android.com> am 45d23585: am 11591b73: am b3da3db3: Merge "Surface outgoing Uri permission grants." into klp-dev

* commit '45d2358510f9670ddf25cc49ee2639e3d41708f7':
Surface outgoing Uri permission grants.
bcaac0adecc8f9d7e66548df39e0f5c9f759e38c 09-Oct-2013 Jeff Sharkey <jsharkey@android.com> Surface outgoing Uri permission grants.

This enables apps to discover and clean up persisted Uri grants when
the underlying Uri becomes invalid, such as when an account is
removed.

Bug: 11142566
Change-Id: Ieeb36cb1155acf226327ebe91cdd30b822d69d1b
/frameworks/base/core/java/android/content/ContentResolver.java
b6ab3b982b98a34e6af59adbfb7e85db7da7392c 02-Oct-2013 Jeff Sharkey <jsharkey@android.com> am 7f60e70e: am 666b998b: am 364fc14f: Merge "Detect wedged ContentProviders, treat as ANR." into klp-dev

* commit '7f60e70e815d381035b141843395830407c198d9':
Detect wedged ContentProviders, treat as ANR.
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
/frameworks/base/core/java/android/content/ContentResolver.java
5023a4df732693fdaff64da551f6b088e7ba4456 26-Sep-2013 Jeff Sharkey <jsharkey@android.com> resolved conflicts for merge of 687c6221 to master

Change-Id: I9e8a24d9151f31bc3284ad7f8686fa7f3c25c0d9
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/content/ContentResolver.java
5fc67f98b92ac1542eda7739ea9604cf69e18dc5 21-Sep-2013 Adam Lesinski <adamlesinski@google.com> am a35ff661: am d473ebb7: Merge "Surfaces ParcelFileDescriptor#parseMode() as API" into klp-dev

* commit 'a35ff66127d07117e93268482d7e9719abfd58c3':
Surfaces ParcelFileDescriptor#parseMode() as API
eb8c3f93edc826413ff4143284dec01c1061d5cc 20-Sep-2013 Adam Lesinski <adamlesinski@google.com> Surfaces ParcelFileDescriptor#parseMode() as API

Moves ContentResolver#modeToMode() to ParcelFileDescriptor#parseMode()

bug:10711271
Change-Id: I28a5de4ca70adfbec4caf739863b77f0fd7fd9a4
/frameworks/base/core/java/android/content/ContentResolver.java
dc7e0464b8f304a10293328ca83365b381c79b24 18-Sep-2013 Amith Yamasani <yamasani@google.com> am a8b4da87: am 840b3bd6: Merge "Fix provider leak in PFD" into klp-dev

* commit 'a8b4da872a1824408b52fb1730699fde780cad04':
Fix provider leak in PFD
487c11a3101c6cd9fc18758b3032383666f55e46 18-Sep-2013 Amith Yamasani <yamasani@google.com> Fix provider leak in PFD

Code path to release content provider associated with the PFD was
inadvertently bypassed by a previous change. Reinstate that code
when closing the PFD.

Bug: 10767447
Change-Id: I23306cfb3c28c99e587892b17ca85efd3f7a8a07
/frameworks/base/core/java/android/content/ContentResolver.java
7c3c23114b08f656b08c86d1c4ea8e1b366f5207 12-Sep-2013 Dianne Hackborn <hackbod@google.com> am 33f92b6f: am c1cf491d: Merge "More on issue #10130785: Restore silence and vibrate settings..." into klp-dev

* commit '33f92b6fe249db2ae822c6702955c7b987ff87f9':
More on issue #10130785: Restore silence and vibrate settings...
8d717b917cfe0b7d47743e2c80fd22131048ef3a 12-Sep-2013 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 03422d26 to master

Change-Id: I5d012fb122224c949a0039450bf0a9a475dc8e82
c1cf491d160f8feb74b24d4ebb4e39324850cf61 11-Sep-2013 Dianne Hackborn <hackbod@google.com> Merge "More on issue #10130785: Restore silence and vibrate settings..." into klp-dev
b3ac67a0ece71bcf484dd92914dc3599dadffb05 11-Sep-2013 Dianne Hackborn <hackbod@google.com> More on issue #10130785: Restore silence and vibrate settings...

...in settings > sound

ContentResolver.uncanonicalize needs to be able to fail.

Change-Id: I347ef60fc3619aae203b87079579597c60be8b90
/frameworks/base/core/java/android/content/ContentResolver.java
95d785346b4dae808a2d8f77356175e55a572d96 11-Sep-2013 Dianne Hackborn <hackbod@google.com> Fix issue #10688644: Java crash in com.android.phone:

java.lang.SecurityException: Operation not allowed

There was a situation I wasn't taking into account -- components
declared by the system has a special ability to run in the processes
of other uids. This means that if that code loaded into another
process tries to do anything needing an app op verification, it will
fail, because it will say it is calling as the system package name but
it is not actually coming from the system uid.

To fix this, we add a new Context.getOpPackageName() to go along-side
getBasePackageName(). This is a special call for use by all app ops
verification, which will be initialized with either the base package
name, the actual package name, or now the default package name of the
process if we are creating a context for system code being loaded into
a non-system process.

I had to update all of the code doing app ops checks to switch to this
method to get the calling package name.

Also improve the security exception throw to have a more descriptive
error message.

Change-Id: Ic04f77b3938585b02fccabbc12d2f0dc62b9ef25
/frameworks/base/core/java/android/content/ContentResolver.java
43afbe5842d88602b8da9868dfa778d669e6462f 10-Sep-2013 Matthew Williams <mjwilliams@google.com> am 22902f54: am bec23ea9: Merge "Preserve CTS fail behaviour on null bundle for old API" into klp-dev

* commit '22902f541e61bf9a1030fd87683102fe125ec135':
Preserve CTS fail behaviour on null bundle for old API
d8abd6a163f8ab4332b88035e77080c48b4b71b9 09-Sep-2013 Matthew Williams <mjwilliams@google.com> Preserve CTS fail behaviour on null bundle for old API

For ContentResolver.requestSync() a null bundle should not be
allowed. However we don't want to enforce this for the new API,
so we remove this check from the SyncRequest.Builder#build()

Change-Id: I69353d24edbd686da6ded2856c0920315cb76e85
/frameworks/base/core/java/android/content/ContentResolver.java
0033539a4338055734bab1c3f265f2d2b3af7787 09-Sep-2013 Narayan Kamath <narayan@google.com> resolved conflicts for merge of ab98aec6 to master

Change-Id: I773bce338ebc42f7428d9942d22ed140bcfbf3d9
38ed2a471a2291383821fb187bfa18450f0581c2 07-Sep-2013 Dianne Hackborn <hackbod@google.com> Work on issue #10130785: Restore silence and vibrate settings...

...in settings > sound

Add a new ContentProvider API to canonicalize URIs, so they can
be transported across backup/restore.

Change-Id: Ie5af3662f6822a32310e49c7f1e1ff084986c56e
/frameworks/base/core/java/android/content/ContentResolver.java
56dbf8f23677d28615e61ef2fbb0e738cca02528 26-Jul-2013 Matthew Williams <mjwilliams@google.com> Fix broken javadocs

Change-Id: Ibf7f2ed92919efd36fffa963447b1a443c0bb9db
/frameworks/base/core/java/android/content/ContentResolver.java
6222288bfbae46550b4914ef1eb12c69dc1f716c 21-Aug-2013 Matthew Williams <mjwilliams@google.com> DO NOT MERGE. Remove service component for KLP.

1) As discussed, lack of internal clients -> remove SyncService
component from KLP. This CL reverts that addition.
2) Also includes javadoc cleanup of existing API.
3) Fix naming of allowMetered() -> disallowMetered() in API
4) Removed one-off sync in the future, as it doesn't make sense
for sync adapters.

Change-Id: I1b17094e6edafb2955cdfb99f39b44274fbe86f9
/frameworks/base/core/java/android/content/ContentResolver.java
94366313331a789440a3c077173aafcb85cabe78 24-Aug-2013 Ying Wang <wangying@google.com> Fix docs build.

Change-Id: I3299e59fd90141fee324129ff3b251bdf8f60f10
/frameworks/base/core/java/android/content/ContentResolver.java
bd3b902567b09379e1b62c60b3319ad82102efad 21-Aug-2013 Jeff Sharkey <jsharkey@android.com> Add CancellationSignal support to file operations.

Since ContentProvider file operations can end up doing substantial
network I/O before returning the file, allow clients to cancel their
file requests with CancellationSignal.

Ideally this would only be needed for openFile(), but ContentResolver
heavily relies on openAssetFile() and openTypedAssetFile() for common
cases.

Also improve documentation to mention reliable ParcelFileDescriptors
and encourage developers to move away from "rw" combination modes,
since they restrict provider flexibility. Mention more about places
where pipes or socket pairs could be returned.

Improve DocumentsContract documentation.

Bug: 10329944
Change-Id: I49b2825ea433eb051624c4da3b77612fe3ffc99c
/frameworks/base/core/java/android/content/ContentResolver.java
da5a3e12f4f8f965c57d6f93c74190f43ea233f3 11-Aug-2013 Jeff Sharkey <jsharkey@android.com> Richer ParcelFileDescriptor close events.

When reading from the end of a pipe or socket, there is no way to
tell if the other end has finished successfully, encountered an error,
or outright crashed. To solve this, we create a second socketpair()
as a communication channel between the two ends of a pipe or
socket pair, sending a status code with details about why the
ParcelFileDescriptor was closed.

The writer end of a pipe or socket can closeWithError() to send a
message to the reader end. When the reader encounters EOF, they
call checkError() to detect if any error occured. This also detects
the case where the remote process died without sending a success
message.

This design is also extended to support regular files on disk, using
the communication channel above to detect various remote close events
or crashes, and delivering that event to a supplied OnCloseListener.

Replaces JNI with best-practice Libcore.os calls, and deprecates
some flags to match Context.

Bug: 10330121
Change-Id: I8cfa1e4fb6f57397667c7f785106193e0faccad3
/frameworks/base/core/java/android/content/ContentResolver.java
08da7a1143b0c9cfb703971d882e0886bbd7d9de 12-Aug-2013 Jeff Sharkey <jsharkey@android.com> API to discover granted Uri permissions.

Now that granted Uri permissions can be persisted across reboots,
offer APIs to discover them. Returns incoming or outgoing grants
matching the requested flags and mask. Add helper method to discover
"open" documents using this new API and filtering for non-documents.

Require that callers own at least of the filtering packages to avoid
exposing all grants. Switch internal grant tracking to use ArrayMap.

Change-Id: I0a755f221d0d160b411f8d3cfc48279b64345733
/frameworks/base/core/java/android/content/ContentResolver.java
fa77418134c6f1f80af225a78819f069e9c974fb 19-Jun-2013 Matthew Williams <mjwilliams@google.com> AnonymousSyncService & SyncRequest.

Changes to the way bundles are parcelled broke SM,
this update writes out the bundle as xml. This circumvents
the need for parcel, and makes it easier to debug whats
happening.
Change-Id: I6cd5d3a2eb80bfa5b3ae0c7f2d2ff91a65daaa34
/frameworks/base/core/java/android/content/ContentResolver.java
b3395575a3441d9339423a4e624cb9806dd07a49 19-Jun-2013 Georgi Nikolov <geonik@google.com> Add javadoc comments explaining SYNC_EXTRAS that did not have documentation

Change-Id: I3500f03076694fe5981fd5ec82e7f29062dfec53
/frameworks/base/core/java/android/content/ContentResolver.java
2b4d22cda3c44f5d731c15306b85045417071408 26-Apr-2013 Jeff Sharkey <jsharkey@android.com> Disable various sampling event logs.

They're unused at the moment.

Change-Id: Ib629b405e7b6666d38fcd0ebaa16490bfb0e95f0
/frameworks/base/core/java/android/content/ContentResolver.java
5c113faba6b644d1851c9281614aa0edd175fc48 07-Feb-2013 Alon Albert <aalbert@google.com> COnvert sync error to int

Bug: 8152259
Change-Id: I99fc99f70796c70ec0566c40ba350e10c36b90b7
/frameworks/base/core/java/android/content/ContentResolver.java
35e832730c87144b9d8ccb1774ee45ff54d6a3d6 05-Feb-2013 Kenny Root <kroot@android.com> am 3789b2fb: am ace72f6a: Merge "Function uri.getAuthority is called twice. Minor doc corrections."

# By Yury Zhauniarovich
# Via Gerrit Code Review (2) and Android Git Automerger (1)
* commit '3789b2fb823b7632e410c0191ddf77dc1e875196':
Function uri.getAuthority is called twice. Minor doc corrections.
f9c5176a51a49fea18712338429b4d125e550a4a 12-May-2012 Yury Zhauniarovich <y.zhalnerovich@gmail.com> Function uri.getAuthority is called twice. Minor doc corrections.

Function uri.getAuthority was called twice in methods acquireProvider
and acquireExistingProvider was called twice although a parameter
representing the value had existed. The second call to the function is
changed to the parameter. The parameter's modifier changed to final.
Minor corrections in function descriptions in the file.

Signed-off-by: Yury Zhauniarovich <y.zhalnerovich@gmail.com>
Change-Id: Id003aa38c17d644357873c41a8f5ec455e46a4b7
/frameworks/base/core/java/android/content/ContentResolver.java
e564a325bec501fd66a163d32312e93981f3fe91 29-Jan-2013 Jeff Sharkey <jsharkey@android.com> Use the resolved Context in ContentResolver.

Change-Id: If62b34a9f6d6305657a02d3f807a24eee63aecf6
/frameworks/base/core/java/android/content/ContentResolver.java
d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaac 18-Jan-2013 Dianne Hackborn <hackbod@google.com> Rework ParceledListSlice to be much easier to use.

Take advantage of this to return better information about
packages filtered by permissions -- include the permissions
they have in the requested array.

Also fix issue #8026793 (Contact picture shows default pic
while searching for a contact in qsb) by using the base
package name of the Context when reporting the app name
of an operation. Otherwise you could make a resource-only
context for another application and do calls through that
and get reported as the wrong app.

Change-Id: I5e0488bf773acea5a3d22f245641828e1a106fb8
/frameworks/base/core/java/android/content/ContentResolver.java
66a017b63461a22842b3678c9520f803d5ddadfc 18-Jan-2013 Jeff Sharkey <jsharkey@android.com> Always give ContentResolver a valid Context.

Also add MockContentResolver constructor to provide a Context, and
move to singleton ActivityThread, since there is only one inside
each process. This makes ActivityThread accessible from threads like
InstrumentationThread.

Change-Id: Ib8b18f1b9bba8820ff412d782a43511066eabf24
/frameworks/base/core/java/android/content/ContentResolver.java
35654b61e8fe7bc85afcb076ddbb590d51c5865f 15-Jan-2013 Dianne Hackborn <hackbod@google.com> More work on App Ops service.

Implemented reading and writing state to retain information
across boots, API to retrieve state from it, improved location
manager interaction to monitor both coarse and fine access
and only note operations when location data is being delivered
back to app (not when it is just registering to get the data at
some time in the future).

Also implement tracking of read/write ops on contacts and the
call log. This involved tweaking the content provider protocol
to pass over the name of the calling package, and some
infrastructure in the ContentProvider transport to note incoming
calls with the app ops service. The contacts provider and call
log provider turn this on for themselves.

This also implements some of the mechanics of being able to ignore
incoming provider calls... all that is left are some new APIs for
the real content provider implementation to be involved with
providing the correct behavior for query() (return an empty
cursor with the right columns) and insert() (need to figure out
what URI to return).

Change-Id: I36ebbcd63dee58264a480f3d3786891ca7cbdb4c
/frameworks/base/core/java/android/content/ContentResolver.java
c21b5a019c1da00b6d861cd2859e3c349a44b3a7 08-Jan-2013 Jeff Brown <jeffbrown@google.com> Fix cursor window leak when query execution fails.

Ensure that the Cursor object is closed if a query on a
content provider fails due to an error or is canceled during
execution. There are several places in the code where
similar problems can occur.

To further reduce the likelihood of leaks, close the cursor
window immediately when a query fails.

Bug: 7278577
Change-Id: I8c686c259de80a162b9086628a817d57f09fdd13
/frameworks/base/core/java/android/content/ContentResolver.java
7a96c39c510923ef73bbb06ab20109f0168b8eb1 15-Nov-2012 Jeff Sharkey <jsharkey@android.com> Move lingering services to services.jar.

This helps reduce the pressure on framework.jar, and makes it clear
that it should only be used by the system_server.

Bug: 7333397
Change-Id: I0858904239535380fbf30562b793e277d8c3f054
/frameworks/base/core/java/android/content/ContentResolver.java
57286f970641493b315b0b42aba7ac6b672cc8b8 09-Oct-2012 Alon Albert <aalbert@google.com> Add sync reason to dumpsys

Also:
* add a second history section that logs
* log mesg as text instead of number
* dump Sync Status as a table

Sample log:
Recent Sync History
#1 : 2012-10-11 15:06:11 USER 0.4s aagmtest1@gmail.com/com.google u0 com.android.calendar com.google.android.calendar
#2 : 2012-10-11 15:06:11 USER 0.1s aagmtest1@gmail.com/com.google u0 subscribedfeeds android.uid.system:1000
mesg=parse-error
#3 : 2012-10-11 15:06:11 USER 0.0s aagmtest1@gmail.com/com.google u0 com.google.android.apps.uploader.PicasaUploadProvider android.uid.system:1000
#4 : 2012-10-11 15:06:10 USER 0.1s aagmtest1@gmail.com/com.google u0 com.google.android.gms.plus.action android.uid.system:1000

Recent Sync History Extras
#1 : 2012-10-11 15:06:11 USER aagmtest1@gmail.com/com.google u0 com.android.calendar Bundle[{feed=aagmtest1@gmail.com, force=true, ignore_settings=true, ignore_backoff=true}]
#2 : 2012-10-11 15:06:11 USER aagmtest1@gmail.com/com.google u0 subscribedfeeds Bundle[{ignore_backoff=true, force=true, ignore_settings=true}]
#3 : 2012-10-11 15:06:11 USER aagmtest1@gmail.com/com.google u0 com.google.android.apps.uploader.PicasaUploadProvider Bundle[{ignore_backoff=true, force=true, ignore_settings=true}]
#4 : 2012-10-11 15:06:10 USER aagmtest1@gmail.com/com.google u0 com.google.android.gms.plus.action Bundle[{ignore_backoff=true, force=true, ignore_settings=true}]

Sync Status
Account aagmtest1@gmail.com u0 com.google
=======================================================================
Authority Syncable Enabled Delay Loc Poll Per Serv User Tot Time Last Sync Periodic
-------------------------------------------------------------------------------------------------------------------------------------------------------------
com.google.android.apps.currents 1 true 0 2 1 2 1 6 0:35 PERIODIC SUCCESS 86400
2012-10-12 14:59:40 2012-10-13 14:58:13
com.google.android.music.MusicContent 1 true 0 0 1 2 1 4 0:09 PERIODIC SUCCESS 86400
2012-10-12 14:59:18 2012-10-13 14:58:13
com.google.android.gms.plus.action 1 true 0 0 1 1 1 3 0:00 PERIODIC SUCCESS 86400
2012-10-12 14:59:15 2012-10-13 14:58:13
com.google.android.apps.magazines 1 true 0 1 1 2 1 5 0:14 PERIODIC SUCCESS 86400
2012-10-12 14:59:00 2012-10-13 14:58:13

Change-Id: Iffeb825e4b4f6217940a39b0dd71e06856f08f3f
/frameworks/base/core/java/android/content/ContentResolver.java
afccaa84c8d1b9aa45040ddeb0edd42ba80e80d6 04-Oct-2012 Christopher Tate <ctate@google.com> Use myUserId() only in registerContentObserver()

The reason for this is a bit subtle: we want to guarantee that
when a content observer is registered using the public API, it
is *always* bound to the host user's view of the data behind the
observed Uri, never the calling user's. Now, the reason it was
the calling user in the first place is that the Settings provider
(and potentially any singleton provider) needs the observers
underlying Cursors returned from query() to be tied to the caller's
user, not the provider's host user.

In order to accomplish that now that the public-facing behavior is
always tied to the host user, the concrete class that implements
the Cursor type handled by the Settings provider has been extended
with a new hidden API for setting a notification observer tied to
an arbitrary user; and then the provider explicitly downcasts the
query result's Cursor to that class in order to register the
notification observer. We can do this safely because this is platform
code; if we change the way that these underlying cursors are constructed,
we can just fix this point of call to follow along. If they get out
of sync in the future, the Settings provider will scream bloody
murder in the log and throw a crashing exception.

Bug 7231549

Change-Id: I0aaceebb8b4108c56f8b9964ca7f9e698ddd91c8
/frameworks/base/core/java/android/content/ContentResolver.java
b7564454297ba1706670ccab0562cac6676d0a77 20-Sep-2012 Christopher Tate <ctate@google.com> Multiuser awareness in content observer infrastructure

Content observers are registered under the calling user's identity,
not under the provider host's identity (unless the caller is using
the new permissioned entry points that allow observers to be
registered for a different user's view of the data). The most important
implication of this is that when the settings provider is directly
queried, the Cursor returned to the app is wired for change notifications
based on that calling app's user.

Note that it is not possible to use query() / insert() to read/write
data for different users. All such manipulations should use the
standard get* / put* methods in Settings.*.

Bug 7122169

Change-Id: If5d9ec44927e5e56e4e7635438f4ef48a5430986
/frameworks/base/core/java/android/content/ContentResolver.java
16aa9736175f5bbe924a6e5587a2ca47c2dd702b 18-Sep-2012 Christopher Tate <ctate@google.com> Per-user content observer APIs

Callers with INTERACT_ACROSS_USERS_FULL permission can now observe content
for a given user's view (and can notify content uri changes targeted to a
specific user). An observer watching for UserHandle.USER_ALL will see all
notifications for the given uri across all users; similarly, a notifier
who specifies USER_ALL will broadcast the change to all observers across
all users.

The API handles both USER_ALL or USER_CURRENT, and explicitly forbids
any other "pseudouser" designations.

This CL also revs the Settings provider to notify with USER_ALL for
changes to global settings, and with only the affected user's handle
for all other changes.

Bug 7122169

Change-Id: I94248b11aa91d1beb0a36432e82fe5725bb1264f
/frameworks/base/core/java/android/content/ContentResolver.java
5e03e2ca7d25b899b129baad2dd5eca6bf99d88a 06-Sep-2012 Dianne Hackborn <hackbod@google.com> More multi-user stuff:

- New (hidden) isUserRunning() API.
- Maintain LRU list of visited users.
- New FLAG_IS_DATA_ONLY for ApplicationInfo.
- Clean up pending intent records when force-stopping a user (or package).
(Also fixes bug #6880627: PendingIntent.getService() returns stale
intent of force stopped app)
- Fix force-stopping when installing an app to do the force-stop across
all users for that app.
- When selecting which processes to kill during a force stop, do this
based on the actual packages loaded in the process, not just process
name matching.
- You can now use --user option in am when starting activities, services,
and instrumentation.
- The am --user option accepts "current" and "all" as arguments.
- The pm uninstall command now uninstalls for all users, so it matches
the semantics of the install command.
- PhoneWindowManager now explicitly says to start home in the current
user.
- Activity manager call to retrieve the MIME type from a content provider
now takes a user argument, so it will direct this to the proper user.
- The package manager uninstall paths are now implemented around
PackageSetting, not PackageParser.Package. This allows them to work
even if the application's apk has been removed (in which case it only
exists as a PackageSetting, not the PackageParser.Package parsed from
the apk).

Change-Id: I3522f6fcf32603090bd6e01cc90ce70b6c5aae40
/frameworks/base/core/java/android/content/ContentResolver.java
9530e3a22d5ffa2019d1a5177b6a441d4d6d048b 19-Jun-2012 Nicolas Falliere <nicof@google.com> Added or fixed doctrings for required permissions.

Bug: 6591338
Change-Id: Ia2092f9994854701b5fa1425c371817367ae07ec
/frameworks/base/core/java/android/content/ContentResolver.java
6ae8d1821822296df0606c9cd1c46708cc21cb58 23-May-2012 Dianne Hackborn <hackbod@google.com> Fix (mostly) issue #5109947: Race condition between retrieving a...

...content provider and updating its oom adj

This introduces the concept of an "unstable" reference on a content
provider. When holding such a reference (and no normal stable ref),
the content provider dying will not cause the client process to be
killed.

This is used in ContentResolver.query(), .openAssetFileDescriptor(),
and .openTypedAssetFileDescriptor() to first access the provider
with an unstable reference, and if at the point of calling into the
provider we find it is dead then acquiring a new stable reference
and doing the operation again. Thus if the provider process dies
at any point until we get the result back, our own process will not
be killed and we can safely retry the operation.

Arguably there is still the potential for a race -- if somehow the
provider is killed way late by the OOM killer after the query or
open has returned -- but this should now be *extremely* unlikely.
We also continue to have the issue with the other calls, but these
are much less critical, and the same model can't be used there (we
wouldn't want to execute two insert operations for example).

The implementation of this required some significant changes to the
underlying plumbing of content providers, now keeping track of the
two different reference counts, and managing them appropriately. To
facilitate this, the activity manager now has a formal connection
object for a client reference on a content provider, which hands to
the application when opening the provider.

These changes have allowed a lot of the code to be cleaned up and
subtle issues closed. For example, when a process is crashing, we
now have a much better idea of the state of content provider clients
(olding a stable ref, unstable ref, or waiting for it to launch), so
that we can correctly handle each of these.

The client side code is also a fair amount cleaner, though in the
future there is more than should be done. In particular, the two
ProviderClientRecord and ProviderRefCount classes should be combined
into one, part of which is exposed to the ContentResolver internal
API as a reference on a content provider with methods for updating
reference counts and such. Some day we'll do that.

Change-Id: I87b10d1b67573ab899e09ca428f1b556fd669c8c
/frameworks/base/core/java/android/content/ContentResolver.java
652b6d1e591f6684cda4b93d4712920f287991b4 10-May-2012 Dianne Hackborn <hackbod@google.com> Add infrastructure for accessing "unstable" content providers.

We have an API and some stuff that purports to this, but no real
implementation yet.

Change-Id: I93555440014a50fdf79fa3f65318d90fb82265b4
/frameworks/base/core/java/android/content/ContentResolver.java
a7771df3696954f0e279407e8894a916a7cb26cc 08-May-2012 Jeff Brown <jeffbrown@google.com> Move CancellationSignal to android.os package.

Bug: 6427830
Change-Id: I39451bb1e1d4a8d976ed1c671234f0c8c61658dd
/frameworks/base/core/java/android/content/ContentResolver.java
acb69bb909d098cea284df47d794c17171d84c91 14-Apr-2012 Dianne Hackborn <hackbod@google.com> Add direct support for HTML formatted text in ClipData etc.

When using the clipboard, ACTION_SEND, etc., you can now supply
HTML formatted text as one of the representations. This is exposed
as a set of methods on ClipData for building items with HTML
formatted text, and retrieving and coercing to HTML (and styled)
text. In addtion, there is a new EXTRA_HTML_TEXT for interoperating
with the old ACTION_SEND protocol.

Change-Id: I8846520a480c8a5f829ec1e693aeebd425ac170d
/frameworks/base/core/java/android/content/ContentResolver.java
f76a50ce8fdc6aea22cabc77b2977a1a15a79630 09-Mar-2012 Ken Wakasa <kwakasa@google.com> Fix obvious typos under frameworks/base/core

Change-Id: Ia5fc3db1bb51824e7523885553be926bcc42d736
/frameworks/base/core/java/android/content/ContentResolver.java
ab38500d9c0b8188dcb1045a24ce91cab1ca39ce 02-Mar-2012 Jean-Baptiste Queru <jbq@google.com> am dbc591e2: am c69d6134: am 6ae4fe94: am 9303919d: Merge "Adds documentation for ContentResolver notifyChange()"

* commit 'dbc591e27686486c732fca2f94fde645e3487b7a':
Adds documentation for ContentResolver notifyChange()
4c1241df8f8b7fd5ec3dff6c7e0f66271248e76e 03-Feb-2012 Jeff Brown <jeffbrown@google.com> Rename CancellationSignal using preferred spelling.

Bug: 5943637
Change-Id: I12a339f285f4db58e79acb5fd8ec2fc1acda5265
/frameworks/base/core/java/android/content/ContentResolver.java
75ea64fc54f328d37b115cfb1ded1e45c30380ed 26-Jan-2012 Jeff Brown <jeffbrown@google.com> Implement a cancelation mechanism for queries.

Added new API to enable cancelation of SQLite and content provider
queries by means of a CancelationSignal object. The application
creates a CancelationSignal object and passes it as an argument
to the query. The cancelation signal can then be used to cancel
the query while it is executing.

If the cancelation signal is raised before the query is executed,
then it is immediately terminated.

Change-Id: If2c76e9a7e56ea5e98768b6d4f225f0a1ca61c61
/frameworks/base/core/java/android/content/ContentResolver.java
86de0590b94bcce27e3038c27464bed510bb564a 23-Jan-2012 Jeff Brown <jeffbrown@google.com> Clean up content observer code.

Improved the documentation a little bit.

Fixed a bug in ContentService wherein if a ContentObserver was
passed as an argument and its deliverSelfNotifications() method
returned true, then notifyChange would tell all observers that
the change was a self-change even though it was only a self-change
from the perspective of the provided observer.

Deprecated ContentObservable.notifyChange since it is never
used and in general it shouldn't be because we want the notification
to be posted to the handler.

Change-Id: Idde49eb40777e011a068f2adae8a32f779dfb923
/frameworks/base/core/java/android/content/ContentResolver.java
d7a1aada2d1245eaeef973bc3e37619ce8e6d593 18-Jan-2012 Steve Pomeroy <steve@staticfree.info> Adds documentation for ContentResolver notifyChange()

Adds clarifying documentation to ContentResolver#notifyChange() to
explain interaction with the sync framework.

Change-Id: Ia1a1ed173e230bc11aa778268749323536ca434f
Signed-off-by: Steve Pomeroy <steve@staticfree.info>
/frameworks/base/core/java/android/content/ContentResolver.java
aac01f699f9f6ccf285bdec7e89ff864f180409d 15-Oct-2011 Jeff Brown <jeffbrown@google.com> Merge "Add a CrossProcessCursorWrapper. Bug: 5220669"
558459fe85f56f29a6ed6a4d0adb4a0bd6665884 14-Oct-2011 Joe Fernandez <joefernandez@google.com> docs: add developer guide cross-references, Project ACRE, Round 2

Change-Id: I39a534ae3a2a34b4dabc333a09961012ef911d3e
/frameworks/base/core/java/android/content/ContentResolver.java
825c5132bff21e72c1448241f4c6868563c8d624 13-Oct-2011 Jeff Brown <jeffbrown@google.com> Add a CrossProcessCursorWrapper.
Bug: 5220669

The CrossProcessCursorWrapper is a useful building block
for wrapping cursors that will be sent to processes remotely.
It can also transform normal Cursors into CrossProcessCursors
transparently.

The new class fixes common performance problems and bugs
that applications have encountered when implementing
ContentProviders.

Change-Id: Icc59fec10add3f7d8cfbd0495447860c1872c752
/frameworks/base/core/java/android/content/ContentResolver.java
baaf8c3f55d9d95b9d2cd9279e2ce1725da0dc52 09-Oct-2011 Jeff Brown <jeffbrown@google.com> Implement CloseGuard in ContentResolver.

Also, don't try to close the cursor from the finalizer,
it just won't work because quite probably the Binder underneath
it has already been finalized or is about to be.

Change-Id: I6363cd30f32abe15412948d126e0bcc5f62943c5
/frameworks/base/core/java/android/content/ContentResolver.java
f40216f98aa63df4a4ff1f26692502cd9078a6fa 28-Jul-2011 Jean Chalard <jchalard@google.com> Fix a bug where a provider could be never released.

Bug: 5034192
Change-Id: I5d4adf27ea933687d4a0bc5ee76d57b74e708eec
/frameworks/base/core/java/android/content/ContentResolver.java
43a17654cf4bfe7f1ec22bd8b7b32daccdf27c09 07-Apr-2011 Joe Onorato <joeo@google.com> Remove the deprecated things from Config.java. These haven't been working since before 1.0.

Change-Id: Ic2e8fa68797ea9d486f4117f3d82c98233cdab1e
/frameworks/base/core/java/android/content/ContentResolver.java
ef5864f1bb1418307c40fc8ed4cae7545d8a44dd 13-Jan-2011 Brad Fitzpatrick <bradfitz@android.com> am 2e390809: Merge "Unhide Content{Resolver,Provider}.call()" into honeycomb

* commit '2e3908097b1c86004d50c0a070ca6b76a4d0d7c5':
Unhide Content{Resolver,Provider}.call()
534c84c1ce19ae20ded249315c3c0558577eca6c 12-Jan-2011 Brad Fitzpatrick <bradfitz@android.com> Unhide Content{Resolver,Provider}.call()

Change-Id: Ic7833b921f5a8e70ef7d565bfdf461e6e135ff1b
/frameworks/base/core/java/android/content/ContentResolver.java
43194ce05eef26665572fb248a108fd24d247a8f 12-Jan-2011 Brad Fitzpatrick <bradfitz@android.com> am 52d70722: am cb842753: Merge "Closing cursor in finalizer to avoid GREF and fd leak in acore"

* commit '52d70722654548d156bd7a1cb8c1f05b94b09f06':
Closing cursor in finalizer to avoid GREF and fd leak in acore
872a52c6b637faf75262b83fe68ff4e0d9fe044c 20-Dec-2010 Johannes Carlsson <johannes.carlsson.x@sonyericsson.com> Closing cursor in finalizer to avoid GREF and fd leak in acore

The finalize() call did not clean up completely, this eventually
caused the android.process.acore to crash since it ran out of fds
and GREF to increased above 2000 if an application forgot to close
its cursor objects. A warning was also added when this happens so
that application developers can correct their mistake. The
included test case tries to verify that the finalizer works as
expected by creating a bunch of Cursor objects without closing
them (without this fix the acore process crashes after about 400
iterations and the test case ends with "Process crashed").

Change-Id: I11e485cef1ac02e718b2742108aa88793666c31d
/frameworks/base/core/java/android/content/ContentResolver.java
03ee779b28227e75f16cb6240c5c667d097e59d1 28-Dec-2010 Jean-Baptiste Queru <jbq@google.com> am e90a1b16: am 752942ec: Merge "The phone is crashing when unknown mime content is transferred."

* commit 'e90a1b16a3d6c559cb7fc47ad967a1810d88e923':
The phone is crashing when unknown mime content is transferred.
145e6c4975536d927e506634514a06c43313df17 20-Dec-2010 Ola Olsson <ola1.olsson@sonyericsson.com> The phone is crashing when unknown mime content is transferred.

The content resolver does not take care of the IllegalStateException
that is thrown in getType and that needs to be fixed.

Change-Id: I3e66f1aa259ab91fb9233e1ba07faa1ab6c3f2dd
/frameworks/base/core/java/android/content/ContentResolver.java
c6a69559cb62bd20166c0c9684e64c60d779da38 28-Sep-2010 Fred Quintana <fredq@google.com> Add getCurrentSyncs() to the SDK, which replaces the deprecated
getCurrentSync().

Change-Id: I1112df41e48ed93ff4c0c5af4825dbdce0c4cccc
/frameworks/base/core/java/android/content/ContentResolver.java
64bbbb471ed78ae06f411224849a4556a30fd362 28-Sep-2010 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of a8bce7c8 to master

Change-Id: I34526a3aed6591639e1a1bff8f42e0c5d8e328cc
cca1f0e3476edd09cdd81b075a6b7780a2959b46 27-Sep-2010 Dianne Hackborn <hackbod@google.com> Allow all apps to call ContentResolver.getType().

I can't find the bug number for this, but it is needed for some things
we are doing where the app building an intent may not have access to the
URI in the data field. This is for HC, but doing in GB to avoid introducing
integration issues.

Change-Id: I0cac971854198b18775d2a73deb80f23431bfbe2
/frameworks/base/core/java/android/content/ContentResolver.java
8313fc7e94e46e5cc09f457a15a771a325b9f74f 27-Sep-2010 Dianne Hackborn <hackbod@google.com> Allow all apps to call ContentResolver.getType().

I can't find the bug number for this, but it is needed for some things
we are doing where the app building an intent may not have access to the
URI in the data field. This is for HC, but doing in GB to avoid introducing
integration issues.

Change-Id: I0cac971854198b18775d2a73deb80f23431bfbe2
/frameworks/base/core/java/android/content/ContentResolver.java
23fdaf6fb62a9b5154b2508916a21c678462c5d0 06-Aug-2010 Dianne Hackborn <hackbod@google.com> Add new ContentProvider for doing conversions to data streams.

This introduces basic infrastructure that should allow content
providers holding complex data to perform on-demand conversion
of their data to streams of various types. It is achieved through
two new content provider APIs, one to interrogate the possible
stream MIME types the provider can return, and the other to
request a stream of data in a particular MIME type.

Because implementations of this will often need to do on-demand
data conversion, there is also a utility intoduced in ContentProvider
for subclasses to easily run a function to write data into a
pipe that is read by the client.

This feature is mostly intended for cut and paste and drag and
drop, as the complex data interchange allowing the source and
destination to negotiate data types and copy (possible large)
data between them. However because it is fundamental facility
of ContentProvider, it can be used in other places, such as for
more advanced GET_CONTENT data exchanges.

An example implementation of this would be in ContactsProvider,
which can now provider a data stream when a client opens certain
pieces of it data, to return data as flat text, a vcard, or other
format.

Change-Id: I58627ea4ed359aa7cf2c66274adb18306c209cb2
/frameworks/base/core/java/android/content/ContentResolver.java
36e5f667bc889a7b1bc17f9a5bd44f33b2d47020 25-Jun-2010 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 2eb12a47 to master

Change-Id: I79eb9d9f083e51ec1b99145d81632683669e7a99
01e4cfc47d0a2c7e7ab383d2fb23224ec52c0301 25-Jun-2010 Dianne Hackborn <hackbod@google.com> Some ActivityThread/ActivityManager cleanup.

- Move PackageInfo out of ActivityThread, renaming to LoadedApk.
- Rename some of the other PacakgeInfo inner classes to better
represent what they are.
- Rename HistoryRecord to ActivityRecord.
- Introduce AppGlobals, to eventually let ActivityThread become
package scoped.

Change-Id: Ib714c54ceb3cdbb525dce3db9505f31042e88cf0
/frameworks/base/core/java/android/content/ContentResolver.java
03f0292744094ec107ffce71301c394503a31ded 09-Jun-2010 Gilles Debunne <debunne@google.com> New XmlDocumentProvider class.

Minor changes in the Adapters.java helper class.

Extracts data out of a XML document using an XPath-like syntax.

Change-Id: I0617b0783f11c86118b42cd8485d54440810c805
/frameworks/base/core/java/android/content/ContentResolver.java
020e5345795a157d7829ebbe4d7864595dafc576 28-Apr-2010 Vasu Nori <vnori@google.com> bug:2622719 move 'forcing of cursor execution' to ContentProvider

revert part of the CL: Ia561135e974a44ad3e3774ecb23c6a3d0fc38176
and add it to ContentProvider.query() to force query execution
in worker thread, instead of having the main thread incur the cost
of query execution and potentially get ANR

Change-Id: I0ea8a170bd954a421f4ad825f8090319a83a5b2b
/frameworks/base/core/java/android/content/ContentResolver.java
a8fbedbf5e274581ba0cbb20da34ade286fc1cfc 08-Apr-2010 Brad Fitzpatrick <bradfitz@android.com> Missed these ones in the previous rename.

BUG=2581935

Change-Id: I12e7fc924d7164ab4a5ff7bd6ee52a10f7551ad4
/frameworks/base/core/java/android/content/ContentResolver.java
d5e4fdc8a4743abc0d9fe3cb952a78f9ad078c6b 31-Mar-2010 Fred Quintana <fredq@google.com> some changes due to an API review
- make EntityIterator extend Iterator and thus not throw a
RemoteException, instead converting it into a RuntimeException.
- rename ActiveSyncInfo to SyncInfo
- change getActiveSync to getCurrentSync
- remove the accessors in SyncInfo and instead make the final
fields publicly accessible
- made AbstractThreadedSyncAdapter.cancelSync not take a thread

Change-Id: I99fde5585bc5f1e95f4873ffbba189074a8d6372
http://b/issue?id=2553539
http://b/issue?id=2553541
http://b/issue?id=2553550
/frameworks/base/core/java/android/content/ContentResolver.java
d2a2daaa89865d19e881ab9af133ce0f3902c820 11-Mar-2010 Omari Stephens <xsdg@android.com> Fix small typo in javadoc: "deleting" -> "updating"

Change-Id: Ie0464aa92d33eb5b076a8122f5bd6317fd44a7b2
/frameworks/base/core/java/android/content/ContentResolver.java
1877d0158b529663b8315482e7346a7bcaa96166 05-Mar-2010 Brad Fitzpatrick <bradfitz@android.com> Add "call" method on ContentProvider.

This permits implementing interfaces which are faster than using
remote Cursors. It then uses it for Settings & SettingProvider, which
together account for ~50% of total ContentProvider event loop stalls
across Froyo dogfooders.

For fetching Settings this looks like it should reduce average
Settings lookup from 10 ms to 0.4 ms on Sholes, once the
SettingsProvider serves most gets from in-memory cache. Currently it
brings the Sholes average down from 10ms to 2.5 ms while still using
SQLite queries on each get.
/frameworks/base/core/java/android/content/ContentResolver.java
1b487ec44b6b5594914d52fa427bec4f29a60541 26-Feb-2010 Fred Quintana <fredq@google.com> expose some sync control methods
- ActiveSyncInfo
- ContentResolver.addStatusChangeListener
- SYNC_OBSERVER_TYPE_SETTINGS
- SYNC_OBSERVER_TYPE_PENDING
- SYNC_OBSERVER_TYPE_ACTIVE
- make the ContentService resilient to nulls passed in to the
status change listener registration and unregistration calls

bug http://b/issue?id=2337197
/frameworks/base/core/java/android/content/ContentResolver.java
25880968cbde25c9edb162c0d70d45dc75239456 23-Feb-2010 Brad Fitzpatrick <bradfitz@android.com> Reduce SQLiteDatabase and ContentResolver EventLog logging thresholds.

Turns out the database is used a ton, and not particularly quickly, so
these were spamming the logs at their prior 100ms thresholds. Setting
it to 500ms now. (still sub-sampled, so should be ~5x less spammy...)
/frameworks/base/core/java/android/content/ContentResolver.java
d72f718c9cc4bd5e4701f4c5cdab51b4d8cf6435 12-Feb-2010 Brad Fitzpatrick <bradfitz@android.com> Measure walltime in ContentResolver and SQLiteDatabase operations logging.

Previously, SQLiteDatabase was using Debug.threadCpuTimeNanos(), which
doesn't include I/O time (user-perceived latency), and ContentResolver
was using System.currentTimeMillis(), which didn't account for deep
sleeps.

Now both are consistently using SystemClock.uptimeMillis().
/frameworks/base/core/java/android/content/ContentResolver.java
a63730d1f103f78589faef461d2af7351fc49f42 08-Feb-2010 Brad Fitzpatrick <bradfitz@android.com> Log ContentProvider operations to the EventLog.

Just like with db_operation, operations over 100ms are always logged,
while operations under that are subsampled.

This will help with performance analysis, getting real-world
performance numbers from dogfooders.
/frameworks/base/core/java/android/content/ContentResolver.java
53bd2522ca7767f46646606123b6e2689b811850 06-Feb-2010 Fred Quintana <fredq@google.com> - change the SyncManager to retry MANUAL syncs that encounter a soft error
- make the sync dump handle the case where there are no accounts
- fix a bug that caused the SyncManager to burn up CPU in the system process

The following was implemented:

scheduler offers:
- settings to disable sync
- retries of certain errors
- backoffs

want a way to control these when scheduling a sync
- "ignore_settings"
- "ignore initial backoff"
- "manual" : ignore settings, ignore initial backoff
- "do not retry"

- need to change the default behavior of not retrying manual syncs to retry regardless
/frameworks/base/core/java/android/content/ContentResolver.java
c5d1c6db61f208b206b260f897bb5bbc64be4d97 27-Jan-2010 Fred Quintana <fredq@google.com> add sync polling

- added the ability to specify that a sync (of account/authority/extras)
should occur at a given frequency
- the existing daily poll code was replaced with seeding each
account/authority with a 24 hour periodic sync
- enhanced the "adb shell dumpsys content" output to show the
periodic syncs and when they will next run
/frameworks/base/core/java/android/content/ContentResolver.java
0ba1cb06c6a0332b76c469bd54dcf6f98128ac82 08-Jan-2010 Tom O'Neill <tomo@google.com> ContentResolver.query() includes performance considerations

Mention the desirability of using "?"-substitution in the where clause,
and reemphasize the importance of using an explicit projection.

Change-Id: Iaa489d50db409f34e78bcd55253e5a4e53445cf2
/frameworks/base/core/java/android/content/ContentResolver.java
2ec6c5699181316e5a5c2cd293c006ac4a8bb101 10-Dec-2009 Fred Quintana <fredq@google.com> am 328c0e79: - removed the concept of Entity from the ContentProvider APIs - removed the parcelling ability from Entity and EntityIterator and made them public - added an EntityIterator abstract implementation that allow easy wrapping of a Cursor - changed the VCard c

Merge commit '328c0e7986aa6bb7752ec6de3da9c999920bb55f' into eclair-mr2-plus-aosp

* commit '328c0e7986aa6bb7752ec6de3da9c999920bb55f':
- removed the concept of Entity from the ContentProvider APIs
/frameworks/base/core/java/android/content/ContentResolver.java
5bba632d877c2878384ff21566c8eb6a1a22f37b 05-Oct-2009 Fred Quintana <fredq@google.com> - hide Entity and all its references
- remove updateEntity and insertEntity, since they are not
used
- add the RawContacts.Entity class, which is used in lieu of the
android.content.Entity
/frameworks/base/core/java/android/content/ContentResolver.java
3348f14b3d46b172a5b557f81aac526b7e8bf5fb 30-Sep-2009 Costin Manolache <costin@google.com> Remove GAIA string
/frameworks/base/core/java/android/content/ContentResolver.java
4c87a3f26a7c0c75fa371024a8726b59a108fd0f 16-Sep-2009 Bjorn Bringert <bringert@android.com> Use Resources to load search icons with android.resource URIs

Before, all icon URIs were opened with
ContentResolver.openInputStream(Uri), but that does not
include the density information from the source
application.

Now, if the URI uses the android.resource scheme,
we resolve the URI to a Resources and a resource ID,
and load it with Resources.getDrawable(int).
This requires making OpenResourceIdResult and getResourceId()
in ContentResolver public (but hidden).

This change also caches icons that were specified using just a
resource ID.

Since loading a Drawable from a URI is a generally useful operation,
it would be good to make it easy for apps to do it in the proper
density-independent way. We could add a getDrawable(Uri)
method to the framework. The question is where.

It would be easiest to add it to ContentResolver, but that may be a
bit odd since there is no other code for dealing with Drawables in
ContentResolver. Another alternative is in Resources, since
getDrawable(int) is there, but that class deals with the resources
for a single app, whereas getDrawable(Uri) can open a drawable
from any app. Putting it in Context may be the best choice,
since that's in android.content, and can thus access package
private members in ContentResolver, and since it's already
a dumping place for random useful high-level methods.
Opinions?

Fixes http://b/issue?id=2034526
"Icons on search do not scale for wide VGA"

Change-Id: I44de0b74826e5560141a3174bcbba991ba6264ac
/frameworks/base/core/java/android/content/ContentResolver.java
4a51c20ce607c74914f90fd897f04080121ac13b 22-Aug-2009 Dianne Hackborn <hackbod@google.com> I am getting tired of the java doc warnings, so fix them.

Change-Id: I2205eebae419eaf4a0992c9f5b7cd807eb843fe1
/frameworks/base/core/java/android/content/ContentResolver.java
77709755b74bcc852cd511ff833c2827c0f0e1aa 21-Aug-2009 Fred Quintana <fredq@google.com> - add a reset to EntityIterator to allow it to go back to the beginning
- clean up the debug printing of SyncResult
/frameworks/base/core/java/android/content/ContentResolver.java
4a6679b97e0285c5b65ec5c0d9080ff90d3e9e81 17-Aug-2009 Fred Quintana <fredq@google.com> make syncadapter set whether the account is syncable
/frameworks/base/core/java/android/content/ContentResolver.java
20ea6ce0e8a758cc5c33eb2577495bf9f4dce16e 18-Aug-2009 Jim Miller <jaggies@google.com> Change get/set IsSyncable() methods to static. Add isUserFacing flag to SyncAdapterType. Update api file.
/frameworks/base/core/java/android/content/ContentResolver.java
718671b441c6318276e6d954a41a95db0d7e6c49 17-Aug-2009 Fred Quintana <fredq@google.com> fix build breakage
/frameworks/base/core/java/android/content/ContentResolver.java
5e787c42f2a6b3afc8ec8320a08d51b2d44b8614 17-Aug-2009 Fred Quintana <fredq@google.com> - add a "isSyncable" flag to a given account/authority pair that
indicates whether or not syncs should be attempted for it.
- add public methods to get and set this parameter
/frameworks/base/core/java/android/content/ContentResolver.java
ac9385ef3105fb7464e1f46049c62755a8b7f0e9 23-Jun-2009 Fred Quintana <fredq@google.com> - clean up the sync settings names to:
(get|set)SyncAutomatically
(get|set)MasterSyncAutomatically
- change SYNC_EXTRAS_FORCE to SYNC_EXTRAS_MANUAL to mace clear that
this overrides the .*SyncAutomatically settings
- make ContentResolver methods that call the sync controls methods
in IContentService so that SDK users can use them
- rename startSync to requestSync to reinforce the fact that a sync
is not immediately or always started when this method is called
- add an Account parameter to all the sync settings and control methods
- change the sync control methods to take a String authority rather than a Uri uri
/frameworks/base/core/java/android/content/ContentResolver.java
03d9490758c9318cee6d14d3cc5007556dce92d0 22-May-2009 Fred Quintana <fredq@google.com> - create a new generic ISyncAdapter implementation, SyncAdapterNew
- change the applyBatch to take an ArrayList rather than an []
- change Entity to be a final flass that contains ContentValues
- remove the ability to update/insert Entities by a ContentProviderOperation
/frameworks/base/core/java/android/content/ContentResolver.java
8943737692169f564cd34a9c8d471f3a5d438712 16-May-2009 Fred Quintana <fredq@google.com> add ipc support to batching
/frameworks/base/core/java/android/content/ContentResolver.java
6a8d5332f00bdfade6674b312e7166940aa28348 08-May-2009 Fred Quintana <fredq@google.com> content provider entities
/frameworks/base/core/java/android/content/ContentResolver.java
7a1355950172b7a549820e9a2cd4a9b2099ec32f 06-May-2009 Dianne Hackborn <hackbod@google.com> merged 231cc608d06ffc31c24bf8aa8c8275bdd2636581
231cc608d06ffc31c24bf8aa8c8275bdd2636581 28-Apr-2009 Dianne Hackborn <hackbod@google.com> Rewrite SyncStorageEngine to use flat files and in-memory data structures.

The previous implementation used a database for storing all of its state, which could cause
a significant amount of IO activity as its tables were updated through the stages of a sync.
This new implementation replaces that in-memory data structures, with hand-written code
for writing them to persistent storage.

There are now 4 files associated with this class, holding various pieces of its state that
should be consistent. These are everything from a main XML file of account information that
must always be retained, to a binary file of per-day statistics that can be thrown away at
any time. Writes of these files as scheduled at various times based on their importance of
the frequency at which they change.

Because the database no longer exists, there needs to be a new explicit interface for
interacting with the sync manager database. This is provided by new APIs on IContentService,
with a hidden method on ContentResolver to retrieve the IContentService so that various
system entities can use it. Other changes in other projects are required to update to the
new API.

The goal here is to have as little an impact on the code and functionality outside of
SyncStorageEngine, though due to the necessary change in API it is still somewhat extensive.
/frameworks/base/core/java/android/content/ContentResolver.java
718d8a2d7ff3e864a73879eb646f46c14ab74d07 30-Apr-2009 Fred Quintana <fredq@google.com> decouple SyncAdapter from ContentProvider
/frameworks/base/core/java/android/content/ContentResolver.java
d9d2f1140b52fd0c014e9deac59f6000564b7e84 23-Apr-2009 Fred Quintana <fredq@google.com> change the sync framework and users to understand Account
/frameworks/base/core/java/android/content/ContentResolver.java
b0c6dbd53b26b172fe8eb7d117550e4edf7a0c9c 22-Apr-2009 Jeff Hamilton <> AI 147255: am: CL 147253 am: CL 147250 Fix a nasty typo in the docs for ContentResolver.update(). No code changes.
Original author: jham
Merged from: //branches/cupcake/...
Original author: android-build

Automated import of CL 147255
/frameworks/base/core/java/android/content/ContentResolver.java
348c1796d460e43e45e582739956c02c5bc8f602 22-Apr-2009 Jeff Hamilton <> AI 147253: am: CL 147250 Fix a nasty typo in the docs for ContentResolver.update(). No code changes.
Original author: jham
Merged from: //branches/cupcake/...

Automated import of CL 147253
/frameworks/base/core/java/android/content/ContentResolver.java
9066cfe9886ac131c34d59ed0e2d287b0e3c0087 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/core/java/android/content/ContentResolver.java
d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/core/java/android/content/ContentResolver.java
076357b8567458d4b6dfdcf839ef751634cd2bfb 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@132589
/frameworks/base/core/java/android/content/ContentResolver.java
3dec7d563a2f3e1eb967ce2054a00b6620e3558c 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@137055
/frameworks/base/core/java/android/content/ContentResolver.java
54b6cfa9a9e5b861a9930af873580d6dc20f773c 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
/frameworks/base/core/java/android/content/ContentResolver.java