Don't wait for read access latch in provider.getType()
until really necessary.
Bug 6434853
Change-Id: I8f1d898f866b3b8016d720b80f8ffb8caac5048b
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index a328bb2..5d96b97 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -7524,9 +7524,6 @@
@Override
public String getType(Uri uri) {
-
- waitForAccess(mReadAccessLatch);
-
final int match = sUriMatcher.match(uri);
switch (match) {
case CONTACTS:
@@ -7559,6 +7556,9 @@
case PROFILE_DATA:
return Data.CONTENT_TYPE;
case DATA_ID:
+ // We need db access for this.
+ waitForAccess(mReadAccessLatch);
+
long id = ContentUris.parseId(uri);
if (ContactsContract.isProfileId(id)) {
return mProfileHelper.getDataMimeType(id);
@@ -7606,6 +7606,7 @@
case STREAM_ITEMS_PHOTOS:
throw new UnsupportedOperationException("Not supported for write-only URI " + uri);
default:
+ waitForAccess(mReadAccessLatch);
return mLegacyApiSupport.getType(uri);
}
}