diff options
author | Dmitri Plotnikov <dplotnikov@google.com> | 2011-01-05 14:10:14 -0800 |
---|---|---|
committer | Dmitri Plotnikov <dplotnikov@google.com> | 2011-01-05 14:10:14 -0800 |
commit | e2adda196b19047bc5243d2bffe9e5650e17e39d (patch) | |
tree | 1d97d10d6e7e237b479a700a62032cda5c0fe65f /src | |
parent | d9ec58265ae59a549880ef63cdfb5d0d977cdaba (diff) | |
download | packages_providers_ContactsProvider-e2adda196b19047bc5243d2bffe9e5650e17e39d.zip packages_providers_ContactsProvider-e2adda196b19047bc5243d2bffe9e5650e17e39d.tar.gz packages_providers_ContactsProvider-e2adda196b19047bc5243d2bffe9e5650e17e39d.tar.bz2 |
Making address book cursor cross-process
Bug: 3324678
Change-Id: Ic071fa034d8926930e70807b1b45b696446e58df
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/providers/contacts/ContactsProvider2.java | 46 |
1 files changed, 36 insertions, 10 deletions
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java index 98da167..6ecc03e 100644 --- a/src/com/android/providers/contacts/ContactsProvider2.java +++ b/src/com/android/providers/contacts/ContactsProvider2.java @@ -63,7 +63,9 @@ import android.content.SharedPreferences; import android.content.SyncAdapterType; import android.content.UriMatcher; import android.content.res.AssetFileDescriptor; +import android.database.CrossProcessCursor; import android.database.Cursor; +import android.database.CursorWindow; import android.database.CursorWrapper; import android.database.DatabaseUtils; import android.database.MatrixCursor; @@ -291,6 +293,39 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun "SELECT " + RawContacts.STARRED + " FROM " + Tables.RAW_CONTACTS + " WHERE " + RawContacts._ID + "=?"; + public class AddressBookCursor extends CursorWrapper implements CrossProcessCursor { + private final CrossProcessCursor mCursor; + private final Bundle mBundle; + + public AddressBookCursor(CrossProcessCursor cursor, String[] titles, int[] counts) { + super(cursor); + mCursor = cursor; + mBundle = new Bundle(); + mBundle.putStringArray(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_TITLES, titles); + mBundle.putIntArray(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS, counts); + } + + @Override + public Bundle getExtras() { + return mBundle; + } + + @Override + public void fillWindow(int pos, CursorWindow window) { + mCursor.fillWindow(pos, window); + } + + @Override + public CursorWindow getWindow() { + return mCursor.getWindow(); + } + + @Override + public boolean onMove(int oldPosition, int newPosition) { + return mCursor.onMove(oldPosition, newPosition); + } + } + private interface DataContactsQuery { public static final String TABLE = "data " + "JOIN raw_contacts ON (data.raw_contact_id = raw_contacts._id) " @@ -3935,16 +3970,7 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun counts = newCounts; } - final Bundle bundle = new Bundle(); - bundle.putStringArray(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_TITLES, titles); - bundle.putIntArray(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS, counts); - return new CursorWrapper(cursor) { - - @Override - public Bundle getExtras() { - return bundle; - } - }; + return new AddressBookCursor((CrossProcessCursor) cursor, titles, counts); } finally { indexCursor.close(); } |