Merge "[People Service] Catch possible SQLiteException when querying CP2" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d6fac7a487
@@ -21,6 +21,7 @@ import android.annotation.Nullable;
|
|||||||
import android.annotation.WorkerThread;
|
import android.annotation.WorkerThread;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
|
import android.database.sqlite.SQLiteException;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.provider.ContactsContract;
|
import android.provider.ContactsContract;
|
||||||
import android.provider.ContactsContract.Contacts;
|
import android.provider.ContactsContract.Contacts;
|
||||||
@@ -149,6 +150,8 @@ class ContactsQueryHelper {
|
|||||||
|
|
||||||
found = true;
|
found = true;
|
||||||
}
|
}
|
||||||
|
} catch (SQLiteException exception) {
|
||||||
|
Slog.w("SQLite exception when querying contacts.", exception);
|
||||||
}
|
}
|
||||||
if (found && lookupKey != null && hasPhoneNumber) {
|
if (found && lookupKey != null && hasPhoneNumber) {
|
||||||
return queryPhoneNumber(lookupKey);
|
return queryPhoneNumber(lookupKey);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.when;
|
|||||||
|
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.database.MatrixCursor;
|
import android.database.MatrixCursor;
|
||||||
|
import android.database.sqlite.SQLiteException;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.provider.ContactsContract;
|
import android.provider.ContactsContract;
|
||||||
import android.provider.ContactsContract.Contacts;
|
import android.provider.ContactsContract.Contacts;
|
||||||
@@ -63,6 +64,7 @@ public final class ContactsQueryHelperTest {
|
|||||||
private MatrixCursor mContactsLookupCursor;
|
private MatrixCursor mContactsLookupCursor;
|
||||||
private MatrixCursor mPhoneCursor;
|
private MatrixCursor mPhoneCursor;
|
||||||
private ContactsQueryHelper mHelper;
|
private ContactsQueryHelper mHelper;
|
||||||
|
private ContactsContentProvider contentProvider;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
@@ -73,7 +75,7 @@ public final class ContactsQueryHelperTest {
|
|||||||
mPhoneCursor = new MatrixCursor(PHONE_COLUMNS);
|
mPhoneCursor = new MatrixCursor(PHONE_COLUMNS);
|
||||||
|
|
||||||
MockContentResolver contentResolver = new MockContentResolver();
|
MockContentResolver contentResolver = new MockContentResolver();
|
||||||
ContactsContentProvider contentProvider = new ContactsContentProvider();
|
contentProvider = new ContactsContentProvider();
|
||||||
contentProvider.registerCursor(Contacts.CONTENT_URI, mContactsCursor);
|
contentProvider.registerCursor(Contacts.CONTENT_URI, mContactsCursor);
|
||||||
contentProvider.registerCursor(
|
contentProvider.registerCursor(
|
||||||
ContactsContract.PhoneLookup.CONTENT_FILTER_URI, mContactsLookupCursor);
|
ContactsContract.PhoneLookup.CONTENT_FILTER_URI, mContactsLookupCursor);
|
||||||
@@ -88,6 +90,14 @@ public final class ContactsQueryHelperTest {
|
|||||||
mHelper = new ContactsQueryHelper(mContext);
|
mHelper = new ContactsQueryHelper(mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testQueryException_returnsFalse() {
|
||||||
|
contentProvider.setThrowException(true);
|
||||||
|
|
||||||
|
Uri contactUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, CONTACT_LOOKUP_KEY);
|
||||||
|
assertFalse(mHelper.query(contactUri.toString()));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testQueryWithUri() {
|
public void testQueryWithUri() {
|
||||||
mContactsCursor.addRow(new Object[] {
|
mContactsCursor.addRow(new Object[] {
|
||||||
@@ -168,10 +178,15 @@ public final class ContactsQueryHelperTest {
|
|||||||
private class ContactsContentProvider extends MockContentProvider {
|
private class ContactsContentProvider extends MockContentProvider {
|
||||||
|
|
||||||
private Map<Uri, Cursor> mUriPrefixToCursorMap = new ArrayMap<>();
|
private Map<Uri, Cursor> mUriPrefixToCursorMap = new ArrayMap<>();
|
||||||
|
private boolean throwException = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
|
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
|
||||||
String sortOrder) {
|
String sortOrder) {
|
||||||
|
if (throwException) {
|
||||||
|
throw new SQLiteException();
|
||||||
|
}
|
||||||
|
|
||||||
for (Uri prefixUri : mUriPrefixToCursorMap.keySet()) {
|
for (Uri prefixUri : mUriPrefixToCursorMap.keySet()) {
|
||||||
if (uri.isPathPrefixMatch(prefixUri)) {
|
if (uri.isPathPrefixMatch(prefixUri)) {
|
||||||
return mUriPrefixToCursorMap.get(prefixUri);
|
return mUriPrefixToCursorMap.get(prefixUri);
|
||||||
@@ -180,6 +195,10 @@ public final class ContactsQueryHelperTest {
|
|||||||
return mUriPrefixToCursorMap.get(uri);
|
return mUriPrefixToCursorMap.get(uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setThrowException(boolean throwException) {
|
||||||
|
this.throwException = throwException;
|
||||||
|
}
|
||||||
|
|
||||||
private void registerCursor(Uri uriPrefix, Cursor cursor) {
|
private void registerCursor(Uri uriPrefix, Cursor cursor) {
|
||||||
mUriPrefixToCursorMap.put(uriPrefix, cursor);
|
mUriPrefixToCursorMap.put(uriPrefix, cursor);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user