History log of /frameworks/base/core/java/android/database/AbstractCursor.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
c87c92e079b9aff771ac0810fc86def81654dbda 14-May-2013 Dianne Hackborn <hackbod@google.com> Add API to retrieve cursor notification URI.

Change-Id: I89f6c4d6ee6ef3675eff62ff6bca691b54c69f75
/frameworks/base/core/java/android/database/AbstractCursor.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/database/AbstractCursor.java
d77d17c28d6f120ceb648747c7e2ef1a50215700 08-Aug-2012 Jean-Baptiste Queru <jbq@google.com> Merge "Fix cursor memory leak"
3f824c0e72ad8cde2dc9b0f4d4d7b621b5535e62 11-Jun-2012 Catherine Liu <wlcl05@motorola.com> Fix cursor memory leak

In current code, if an application opens a cursor to access a
provider, and doesn't close that cursor, later, when this cursor
is garbage collected, it won't get closed. This will cause a memory
leak in the provider. The leaked memory can only be reclaimed when
the application with the leaked cursor was dead.

The solution is, close the cursor when it's garbage collected.

Change-Id: I786915c46d4672b6b1b37414b3bc1ff8cea2e00b
/frameworks/base/core/java/android/database/AbstractCursor.java
7873d5b3ff587ffff33dae628aaa581b099db61e 09-May-2012 Jeff Brown <jeffbrown@google.com> Deprecate certain AbstractCursor fields.

Bug: 6353797
Change-Id: I52b67f35c867378849ceb77356d0065161157ac9
/frameworks/base/core/java/android/database/AbstractCursor.java
fb5a4964b8d402b39754f406dd2255035ff2148d 15-Mar-2012 Jeff Brown <jeffbrown@google.com> Prefetch column names in bulk cursor adaptor.

If the remote end of a bulk cursor died, then it was possible
for getColumnNames() to return null, violating the invariant
that it never returns null. As a result, the application could
crash in strange ways due to an NPE.

Since we are often interested in the column names anyhow, prefetch
them when setting up the bulk cursor adaptor. This way, a
remote cursor will never return null even if the remote end died.

It is possible for an application to continue to use a remote cursor
even after the provider has died unless it needs to requery it
for some reason. Of course at that point, bad things will
happen... but usually the app is better prepared for it than
if it just randomly encounters a null array of column names.

This change also optimizes the bulk cursor adaptor to return the
initial cursor window back to the client, potentially saving
an extra RPC. Because the communication protocol between
the CursorToBulkCursorAdaptor and BulkCursorToCursorAdaptor was
getting a little hard to follow, introduced a new type called
BulkCursorDescriptor to hold all of the necessary parameters.

Deleted several unnecessary IBulkCursor methods that are never
actually called remotely.

Bug: 6168809
Change-Id: I9aaf6f067c6434a575e2fdbf678243d5ad10755f
/frameworks/base/core/java/android/database/AbstractCursor.java
655e66bceba7595a2b80e7a328433e6ed5dc28a9 24-Jan-2012 Jeff Brown <jeffbrown@google.com> Inform ContentObservers about the changed content Uri.

Added a new method ContentObserver.onChange(boolean, Uri) that
receives the changed content Uri. This can help applications make
better decisions about how to interpret a change notification.

Change-Id: I8e35378b6485fe22c5bc240ba07557d269af0836
/frameworks/base/core/java/android/database/AbstractCursor.java
bd4c9f13022e875c8b420248214482a5f5b46618 21-Jan-2012 Jeff Brown <jeffbrown@google.com> Delete dead code.

This API has never been used or exposed, time for it to go away.

Change-Id: Ie199ed0731d0a620d6608b2adbea1083f87276cd
/frameworks/base/core/java/android/database/AbstractCursor.java
80e7b80fa607e13d31d7dab68ddfd4d9f0372e38 13-Oct-2011 Jeff Brown <jeffbrown@google.com> Make default implementation of fillWindow typesafe.
Bug: 5218310

This change fixes problems calling the default fillWindow
on Cursors that contain BLOBs. It should also be more efficient
by avoiding redundant string conversions for numeric datatypes.

Change-Id: Ied515bf6299bc8d3c14e76055d85fd35e7c05952
/frameworks/base/core/java/android/database/AbstractCursor.java
d2183654e03d589b120467f4e98da1b178ceeadb 09-Oct-2011 Jeff Brown <jeffbrown@google.com> Fix ownership of CursorWindows across processes.
Bug: 5332296

Ensure that there is always an owner for each CursorWindow
and that references to each window are acquired/released
appropriately at all times.

Added synchronization to CursorToBulkCursorAdaptor to
prevent the underlying Cursor and CursorWindow from being
remotely accessed in ways that might violate invariants,
resulting in leaks or other problems.

Ensured that CursorToBulkCursorAdaptor promptly releases
its references to the Cursor and CursorWindow when closed
so they don't stick around longer than they should, even
if the remote end hangs onto the IBulkCursor for some reason.

CursorWindow respects Parcelable.FLAG_WRITE_RETURN_VALUE
as an indication that one reference to the CursorWindow is
being released. Correspondingly, CursorToBulkCursorAdaptor
acquires a reference to the CursorWindow before returning
it to the caller. This change also prevents races from
resulting in the transfer of an invalid CursorWindow over
the wire.

Ensured that BulkCursorToCursorAdaptor promptly releases
its reference to the IBulkCursor when closed and throws
on attempts to access the cursor while closed.

Modified ContentProviderNative to handle both parts of
the wrapping and unwrapping of Cursors into IBulkCursors.
This makes it a lot easier to ensure that the right
things happen on both ends. Also, it turns out that
the only caller of IContentProvider.bulkQuery was
ContentProviderNative itself so there was no need
to support bulkQuery on ContentProviderProxy and it was
just getting in the way.

Implement CloseGuard on CursorWindow.

Change-Id: Ib3c8305d3cc62322f38a06698d404a2989bb6ef9
/frameworks/base/core/java/android/database/AbstractCursor.java
7ce745248d4de0e6543a559c93423df899832100 07-Oct-2011 Jeff Brown <jeffbrown@google.com> Clean up CursorWindow lifetime.
Bug: 5332296

Removed dead code in SQLiteCursor related to the use of a background
query thread. This code could result in CursorWindows being modified
concurrently or used after free. This code is broken, unused and
is just in the way.

Added comments to explain how CursorWindow ownership is
supposed to work for AbstractWindowedCursors. (There are still cases
where cursor windows get dropped on the floor without being closed.
Those will be taken care of in a subsequent patch.)

Cleaned up SQLiteQuery.fillWindow to eliminate duplicate code and
remove bits that were only needed for background loading, like
returning -1.

Change-Id: I03e8e2e73ff0c11df76d63f57df4c5ada06ae1cb
/frameworks/base/core/java/android/database/AbstractCursor.java
630f6b1cf8a671890f7bb590f5219d8b63614cd9 31-Aug-2011 Makoto Onuki <omakoto@google.com> Add AbstractCursor.setExtras()

This allows providers to return SQLiteCursor with a bundle, without wrapping
it in a CursorWrapper, which has performance penalty on cross-process
queries.

Bug 5220669

Change-Id: I46b9dfb3d8e01e9caf080bb24acfd97551441e25
/frameworks/base/core/java/android/database/AbstractCursor.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/database/AbstractCursor.java
9480efeff7d6d7054e4d048c6088b7329376aa1d 16-Feb-2011 Dmitri Plotnikov <dplotnikov@google.com> Setting copiedSize to 0 when value is null

Bug: 3457998
Change-Id: I01f6d02e76884639600c679518c5817ce73e0f23
/frameworks/base/core/java/android/database/AbstractCursor.java
90bf7c791639fe6666fc548106f9286d47311cff 15-Sep-2010 Makoto Onuki <omakoto@google.com> Add AbstractCursor.getNotificationUri.

We'll need it for some tests.

Change-Id: I5db9f570d8ff2f58c73654fbe4a6df881894f865
/frameworks/base/core/java/android/database/AbstractCursor.java
cc08bb8884d7ab720296cc63f8098249659c48b1 02-Jul-2010 Vasu Nori <vnori@google.com> fix broken-build

Change-Id: I0f956d87c26100ddb12e1736a0ec02e1b17e166f
/frameworks/base/core/java/android/database/AbstractCursor.java
f1a4a0a5b712963b77bf019886cf73cf6bc1b7b4 30-Jun-2010 Jeff Hamilton <jham@android.com> More cleanup after removing the Cursor update logic.

Change-Id: I4f407d3205cf97260bf3c3f3df4a0e2c533acab8
/frameworks/base/core/java/android/database/AbstractCursor.java
7701041955341494c257881836daf22fe46cea25 25-Jun-2010 The Android Open Source Project <initial-contribution@android.com> am 7e343b8d: merge from froyo-plus-aosp

Merge commit '7e343b8d39309d2c9d73cc5d1ec2434e666ae48b'

* commit '7e343b8d39309d2c9d73cc5d1ec2434e666ae48b':
fillWindow's start position must be smaller than getCount value
6d3acde83958b99e769feed87a50ef74fa96f30e 06-Jun-2010 Tatsuo Nagamatsu <nagamatu@gmail.com> fillWindow's start position must be smaller than getCount value

Change-Id: I3664ae8f6172f02bf6e2472320e79e3bf8683cc0
/frameworks/base/core/java/android/database/AbstractCursor.java
8b0dd7da360d70920a37802eb455ba41500d3b45 18-May-2010 Vasu Nori <vnori@google.com> add API to Cursor to get column value type

Change-Id: I3ef1bcdb2eb1c45f68e829ccb6e3ecde28076591
/frameworks/base/core/java/android/database/AbstractCursor.java
7cd51efcbd2d083bf577696591ef1769034f7e2f 13-May-2010 Jeff Hamilton <jham@android.com> Remove the deprecated cursor methods.

Change-Id: Ie3571fea9f36996c31c327240b11086f8cc487f0
/frameworks/base/core/java/android/database/AbstractCursor.java
2589716964f99fd0ee29a9b295584c277e23f34f 29-Apr-2010 Makoto Onuki <omakoto@google.com> Make RequeryOnUiThreadException warning less spamy

- Moved the thread check from AbstractCursor to SQLiteCursor.
- Show warning only once per database

Bug 2633883

Change-Id: I915bfba8715a469c45fb68ba1282231279f2a50c
/frameworks/base/core/java/android/database/AbstractCursor.java
20f549fd2f40db524242c9038d7d63356adf95fc 15-Apr-2010 Vasu Nori <vnori@google.com> several minor bugs and things listed below

bug:1648729
print warning if a requery is attemped on main thread
bug:2459293
browser death because of NoSuchElementException. don't use iterator
to march thru the ArrayList. use old style for() loop.
bug:1609474
don't allow downgrades of databases
other stuff
use LRUcache to maintain statement-cache in SQLiteDatabase
Change-Id: I3a42022162f4dfcc75f7d0cfcad8f20f1d193249
/frameworks/base/core/java/android/database/AbstractCursor.java
935ae463d495d41155e27feb849768ad2b8b16db 14-Apr-2009 Dianne Hackborn <> AI 145994: Integrate #145778 from Donut.

Automated import of CL 145994
/frameworks/base/core/java/android/database/AbstractCursor.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/database/AbstractCursor.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/database/AbstractCursor.java
f013e1afd1e68af5e3b868c26a653bbfb39538f8 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
/frameworks/base/core/java/android/database/AbstractCursor.java
54b6cfa9a9e5b861a9930af873580d6dc20f773c 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
/frameworks/base/core/java/android/database/AbstractCursor.java