summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDmitri Plotnikov <dplotnikov@google.com>2011-01-05 14:10:14 -0800
committerDmitri Plotnikov <dplotnikov@google.com>2011-01-05 14:10:14 -0800
commite2adda196b19047bc5243d2bffe9e5650e17e39d (patch)
tree1d97d10d6e7e237b479a700a62032cda5c0fe65f /src
parentd9ec58265ae59a549880ef63cdfb5d0d977cdaba (diff)
downloadpackages_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.java46
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();
}