summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Jastrzebski <haaawk@google.com>2012-09-28 12:11:38 +0100
committerPiotr Jastrzebski <haaawk@google.com>2012-10-01 14:23:40 +0100
commitbdf112f12eafe116bbf931a0c4158a6fb5713b3f (patch)
tree810b61ea630a69cbf10f2c92c62d4e0a6577d4cb
parent4a904bddf16e7500a00f1f54eaa32fc452ca3827 (diff)
downloadpackages_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
-rw-r--r--src/com/android/providers/contacts/ContactsProvider2.java4
-rw-r--r--src/com/android/providers/contacts/GlobalSearchSupport.java17
-rw-r--r--src/com/android/providers/contacts/LegacyApiSupport.java4
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: