From 3ccaf5590a7ed2fca780f9b7fc46328d0f78a2ee Mon Sep 17 00:00:00 2001 From: fafaisland Date: Tue, 17 Jun 2014 11:37:42 -0700 Subject: Add READ_ALL_VOICEMAILS Permision to VoicemailPermissions, VoicemailContentProvider and CallLogProvider Bug:15695227 Change-Id: I244541c847c07450535a52d0bf38199b55387202 --- .../providers/contacts/VoicemailContentProvider.java | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/com/android/providers/contacts/VoicemailContentProvider.java') diff --git a/src/com/android/providers/contacts/VoicemailContentProvider.java b/src/com/android/providers/contacts/VoicemailContentProvider.java index 279ebce..79e549b 100644 --- a/src/com/android/providers/contacts/VoicemailContentProvider.java +++ b/src/com/android/providers/contacts/VoicemailContentProvider.java @@ -108,7 +108,7 @@ public class VoicemailContentProvider extends ContentProvider String sortOrder) { UriData uriData = checkPermissionsAndCreateUriDataForReadOperation(uri); SelectionBuilder selectionBuilder = new SelectionBuilder(selection); - selectionBuilder.addClause(getPackageRestrictionClause()); + selectionBuilder.addClause(getPackageRestrictionClause(true/*isQuery*/)); return getTableDelegate(uriData).query(uriData, projection, selectionBuilder.build(), selectionArgs, sortOrder); } @@ -117,7 +117,7 @@ public class VoicemailContentProvider extends ContentProvider public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { UriData uriData = checkPermissionsAndCreateUriData(uri, values); SelectionBuilder selectionBuilder = new SelectionBuilder(selection); - selectionBuilder.addClause(getPackageRestrictionClause()); + selectionBuilder.addClause(getPackageRestrictionClause(false/*isQuery*/)); return getTableDelegate(uriData).update(uriData, values, selectionBuilder.build(), selectionArgs); } @@ -126,7 +126,7 @@ public class VoicemailContentProvider extends ContentProvider public int delete(Uri uri, String selection, String[] selectionArgs) { UriData uriData = checkPermissionsAndCreateUriData(uri); SelectionBuilder selectionBuilder = new SelectionBuilder(selection); - selectionBuilder.addClause(getPackageRestrictionClause()); + selectionBuilder.addClause(getPackageRestrictionClause(false/*isQuery*/)); return getTableDelegate(uriData).delete(uriData, selectionBuilder.build(), selectionArgs); } @@ -288,6 +288,11 @@ public class VoicemailContentProvider extends ContentProvider == PackageManager.PERMISSION_GRANTED) { return UriData.createUriData(uri); } + + if (mVoicemailPermissions.callerHasFullReadAccess()) { + return UriData.createUriData(uri); + } + return checkPermissionsAndCreateUriData(uri); } @@ -330,8 +335,8 @@ public class VoicemailContentProvider extends ContentProvider } /** - * Checks that either the caller has READ_WRITE_ALL_VOICEMAIL permission, or has the - * ADD_VOICEMAIL permission and is using a URI that matches + * Checks that either the caller has READ_WRITE_ALL_VOICEMAIL permission, + * or has the ADD_VOICEMAIL permission and is using a URI that matches * /voicemail/?source_package=[source-package] where [source-package] is the same as the calling * package. * @@ -391,7 +396,10 @@ public class VoicemailContentProvider extends ContentProvider * Creates a clause to restrict the selection to the calling provider or null if the caller has * access to all data. */ - private String getPackageRestrictionClause() { + private String getPackageRestrictionClause(boolean isQuery) { + if (isQuery && mVoicemailPermissions.callerHasFullReadAccess()) { + return null; + } if (mVoicemailPermissions.callerHasFullAccess()) { return null; } -- cgit v1.1