aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com>2024-01-27 02:44:46 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2024-01-27 02:44:46 +0000
commit367ef82aa780b8d31db739491134c6ec3e74071f (patch)
tree6252944e81370cde9f554736f5bcefe3e12bd689
parentea73aa4e88bf4f68fec5432d16f4ae6aa6ad8239 (diff)
parenta3c215a1e51bcee7087d5e676fdeaafc2ad96328 (diff)
downloadContactsProvider-367ef82aa780b8d31db739491134c6ec3e74071f.tar.gz
Merge "Make sure to close cursors" into main am: a3c215a1e5
Original change: https://android-review.googlesource.com/c/platform/packages/providers/ContactsProvider/+/2361131 Change-Id: I5479c56f3b16e3509ca50ed7e275d5235ba84b85 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--src/com/android/providers/contacts/ContactsProvider2.java28
-rw-r--r--src/com/android/providers/contacts/PhoneLookupWithStarPrefix.java26
2 files changed, 32 insertions, 22 deletions
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 56162916..7b6dce38 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -2663,6 +2663,7 @@ public class ContactsProvider2 extends AbstractContactsProvider
final long now = Clock.getInstance().currentTimeMillis();
final SQLiteDatabase db = mDbHelper.get().getWritableDatabase();
db.beginTransactionNonExclusive();
+ Cursor cursor = null;
try {
// First delete any pre-authorization URIs that are no longer valid. Unfortunately,
// this operation will grab a write lock for readonly queries. Since this only
@@ -2672,15 +2673,16 @@ public class ContactsProvider2 extends AbstractContactsProvider
new String[]{String.valueOf(now)});
// Now check to see if the pre-authorized URI map contains the URI.
- final Cursor c = db.query(Tables.PRE_AUTHORIZED_URIS, null,
+ cursor = db.query(Tables.PRE_AUTHORIZED_URIS, null,
PreAuthorizedUris.URI + "=?1",
new String[]{uri.toString()}, null, null, null);
- final boolean isValid = c.getCount() != 0;
+ final boolean isValid = cursor.getCount() != 0;
db.setTransactionSuccessful();
return isValid;
} finally {
db.endTransaction();
+ MoreCloseables.closeQuietly(cursor);
}
}
return false;
@@ -7256,7 +7258,7 @@ public class ContactsProvider2 extends AbstractContactsProvider
} finally {
if (!foundResult) {
// We'll be returning a different cursor, so close this one.
- cursor.close();
+ MoreCloseables.closeQuietly(cursor);
}
}
}
@@ -7448,11 +7450,16 @@ public class ContactsProvider2 extends AbstractContactsProvider
// This method will return either primary directory or enterprise directory
final long inputDirectoryId = ContentUris.parseId(uri);
if (Directory.isEnterpriseDirectoryId(inputDirectoryId)) {
- final Cursor cursor = queryCorpContactsProvider(
- ContentUris.withAppendedId(Directory.CONTENT_URI,
- inputDirectoryId - Directory.ENTERPRISE_DIRECTORY_ID_BASE),
- projection, selection, selectionArgs, sortOrder, cancellationSignal);
- return rewriteCorpDirectories(cursor);
+ Cursor cursor = null;
+ try {
+ cursor = queryCorpContactsProvider(
+ ContentUris.withAppendedId(Directory.CONTENT_URI,
+ inputDirectoryId - Directory.ENTERPRISE_DIRECTORY_ID_BASE),
+ projection, selection, selectionArgs, sortOrder, cancellationSignal);
+ return rewriteCorpDirectories(cursor);
+ } finally {
+ MoreCloseables.closeQuietly(cursor);
+ }
} else {
// As it is not an enterprise directory id, fall back to original API
final Uri localUri = ContentUris.withAppendedId(Directory.CONTENT_URI,
@@ -7947,11 +7954,10 @@ public class ContactsProvider2 extends AbstractContactsProvider
lookupQb.appendWhere(contactIdColumn + "=? AND " + lookupKeyColumn + "=?");
Cursor c = doQuery(db, lookupQb, projection, selection, args, sortOrder,
groupBy, null, limit, cancellationSignal);
- if (c.getCount() != 0) {
+ if (c != null && c.getCount() != 0) {
return c;
}
-
- c.close();
+ MoreCloseables.closeQuietly(c);
return null;
}
diff --git a/src/com/android/providers/contacts/PhoneLookupWithStarPrefix.java b/src/com/android/providers/contacts/PhoneLookupWithStarPrefix.java
index ca29edc6..59e213bb 100644
--- a/src/com/android/providers/contacts/PhoneLookupWithStarPrefix.java
+++ b/src/com/android/providers/contacts/PhoneLookupWithStarPrefix.java
@@ -154,7 +154,7 @@ import android.util.Log;
* Check each phone number in the given cursor to detemine if it's a match with the given phone
* number. Return the matching ones in a new cursor.
* @param number phone number to be match
- * @param cursor contains a series of number s to be match
+ * @param cursor contains a series of numbers to be matched
* @param defaultCountryIso The lowercase two letter ISO 3166-1 country code. It is recommended
* to pass in {@link TelephonyManager#getNetworkCountryIso()}.
* @return A new cursor with all matching phone numbers.
@@ -166,19 +166,23 @@ import android.util.Log;
}
final MatrixCursor matrixCursor = new MatrixCursor(cursor.getColumnNames());
-
- cursor.moveToPosition(-1);
- while (cursor.moveToNext()) {
- final int numberIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);
- final String numberToMatch = cursor.getString(numberIndex);
- if (PhoneNumberUtils.areSamePhoneNumber(number, numberToMatch, defaultCountryIso)) {
- final MatrixCursor.RowBuilder b = matrixCursor.newRow();
- for (int column = 0; column < cursor.getColumnCount(); column++) {
- b.add(cursor.getColumnName(column), cursorValue(cursor, column));
+ try {
+ cursor.moveToPosition(-1);
+ while (cursor.moveToNext()) {
+ final int numberIndex = cursor.getColumnIndex(PhoneLookup.NUMBER);
+ final String numberToMatch = cursor.getString(numberIndex);
+ if (PhoneNumberUtils.areSamePhoneNumber(number, numberToMatch, defaultCountryIso)) {
+ final MatrixCursor.RowBuilder b = matrixCursor.newRow();
+ for (int column = 0; column < cursor.getColumnCount(); column++) {
+ b.add(cursor.getColumnName(column), cursorValue(cursor, column));
+ }
}
}
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
}
-
return matrixCursor;
}
}