diff options
author | Piotr Jastrzebski <haaawk@google.com> | 2012-09-28 12:11:38 +0100 |
---|---|---|
committer | Piotr Jastrzebski <haaawk@google.com> | 2012-10-01 14:23:40 +0100 |
commit | bdf112f12eafe116bbf931a0c4158a6fb5713b3f (patch) | |
tree | 810b61ea630a69cbf10f2c92c62d4e0a6577d4cb | |
parent | 4a904bddf16e7500a00f1f54eaa32fc452ca3827 (diff) | |
download | packages_providers_ContactsProvider-bdf112f12eafe116bbf931a0c4158a6fb5713b3f.zip packages_providers_ContactsProvider-bdf112f12eafe116bbf931a0c4158a6fb5713b3f.tar.gz packages_providers_ContactsProvider-bdf112f12eafe116bbf931a0c4158a6fb5713b3f.tar.bz2 |
Cancellation of queries for search suggestions.
Passing CancellableSignal from ContactsProvider2.queryLocal to
GlobalSearchSupport.handleSearchSuggestionsQuery,
GlobalSearchSupport.addSearchSuggestionsBasedOnFilter and
SQLiteDatabase.rawQuery.
Search App needs this change to cancel queries for search suggestions which are
no longer valid due to some user action.
Change-Id: Ie019afff31bf49ba96a88899e829813075ab141e
3 files changed, 14 insertions, 11 deletions
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java index a225b4d..c73682e 100644 --- a/src/com/android/providers/contacts/ContactsProvider2.java +++ b/src/com/android/providers/contacts/ContactsProvider2.java @@ -5931,7 +5931,7 @@ public class ContactsProvider2 extends AbstractContactsProvider case SEARCH_SUGGESTIONS: { return mGlobalSearchSupport.handleSearchSuggestionsQuery( - db, uri, projection, limit); + db, uri, projection, limit, cancellationSignal); } case SEARCH_SHORTCUT: { @@ -5939,7 +5939,7 @@ public class ContactsProvider2 extends AbstractContactsProvider String filter = getQueryParameter( uri, SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA); return mGlobalSearchSupport.handleSearchShortcutRefresh( - db, projection, lookupKey, filter); + db, projection, lookupKey, filter, cancellationSignal); } case RAW_CONTACT_ENTITIES: diff --git a/src/com/android/providers/contacts/GlobalSearchSupport.java b/src/com/android/providers/contacts/GlobalSearchSupport.java index d4cddee..0febf56 100644 --- a/src/com/android/providers/contacts/GlobalSearchSupport.java +++ b/src/com/android/providers/contacts/GlobalSearchSupport.java @@ -22,6 +22,7 @@ import android.database.Cursor; import android.database.MatrixCursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; +import android.os.CancellationSignal; import android.provider.ContactsContract.CommonDataKinds.Email; import android.provider.ContactsContract.CommonDataKinds.Organization; import android.provider.ContactsContract.CommonDataKinds.Phone; @@ -178,8 +179,8 @@ public class GlobalSearchSupport { } } - public Cursor handleSearchSuggestionsQuery( - SQLiteDatabase db, Uri uri, String[] projection, String limit) { + public Cursor handleSearchSuggestionsQuery(SQLiteDatabase db, Uri uri, String[] projection, + String limit, CancellationSignal cancellationSignal) { final MatrixCursor cursor = new MatrixCursor( projection == null ? SEARCH_SUGGESTIONS_COLUMNS : projection); @@ -189,7 +190,7 @@ public class GlobalSearchSupport { String selection = null; String searchClause = uri.getLastPathSegment(); addSearchSuggestionsBasedOnFilter( - cursor, db, projection, selection, searchClause, limit); + cursor, db, projection, selection, searchClause, limit, cancellationSignal); } return cursor; @@ -206,7 +207,7 @@ public class GlobalSearchSupport { * instead of the lookup key. */ public Cursor handleSearchShortcutRefresh(SQLiteDatabase db, String[] projection, - String lookupKey, String filter) { + String lookupKey, String filter, CancellationSignal cancellationSignal) { long contactId; try { contactId = mContactsProvider.lookupContactIdByLookupKey(db, lookupKey); @@ -216,11 +217,13 @@ public class GlobalSearchSupport { MatrixCursor cursor = new MatrixCursor( projection == null ? SEARCH_SUGGESTIONS_COLUMNS : projection); return addSearchSuggestionsBasedOnFilter(cursor, - db, projection, ContactsColumns.CONCRETE_ID + "=" + contactId, filter, null); + db, projection, ContactsColumns.CONCRETE_ID + "=" + contactId, filter, null, + cancellationSignal); } private Cursor addSearchSuggestionsBasedOnFilter(MatrixCursor cursor, SQLiteDatabase db, - String[] projection, String selection, String filter, String limit) { + String[] projection, String selection, String filter, String limit, + CancellationSignal cancellationSignal) { StringBuilder sb = new StringBuilder(); final boolean haveFilter = !TextUtils.isEmpty(filter); sb.append("SELECT " @@ -247,7 +250,7 @@ public class GlobalSearchSupport { if (limit != null) { sb.append(" LIMIT " + limit); } - Cursor c = db.rawQuery(sb.toString(), null); + Cursor c = db.rawQuery(sb.toString(), null, cancellationSignal); SearchSuggestion suggestion = new SearchSuggestion(); suggestion.filter = filter; try { diff --git a/src/com/android/providers/contacts/LegacyApiSupport.java b/src/com/android/providers/contacts/LegacyApiSupport.java index 9859d11..1ed7488 100644 --- a/src/com/android/providers/contacts/LegacyApiSupport.java +++ b/src/com/android/providers/contacts/LegacyApiSupport.java @@ -1877,13 +1877,13 @@ public class LegacyApiSupport { case SEARCH_SUGGESTIONS: return mGlobalSearchSupport.handleSearchSuggestionsQuery( - db, uri, projection, limit); + db, uri, projection, limit, null); case SEARCH_SHORTCUT: { String lookupKey = uri.getLastPathSegment(); String filter = ContactsProvider2.getQueryParameter(uri, "filter"); return mGlobalSearchSupport.handleSearchShortcutRefresh( - db, projection, lookupKey, filter); + db, projection, lookupKey, filter, null); } case LIVE_FOLDERS_PEOPLE: |