From 6f8abd3bdc3795f88c3e90bd4aedd0d0e2ce8df8 Mon Sep 17 00:00:00 2001 From: twyen Date: Thu, 11 Jan 2018 10:32:06 -0800 Subject: Allow preferred SIM to be fully cleared Bug: 70503524 Test: Unit tests. PiperOrigin-RevId: 181627615 Change-Id: I9e48dd3acc339509ff3805ea38cc6399858ade1d --- .../dialer/preferredsim/PreferredSimFallbackContract.java | 8 +++++--- .../dialer/preferredsim/impl/PreferredSimFallbackProvider.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'java/com/android/dialer/preferredsim') diff --git a/java/com/android/dialer/preferredsim/PreferredSimFallbackContract.java b/java/com/android/dialer/preferredsim/PreferredSimFallbackContract.java index 79e097c47..6c2f860e6 100644 --- a/java/com/android/dialer/preferredsim/PreferredSimFallbackContract.java +++ b/java/com/android/dialer/preferredsim/PreferredSimFallbackContract.java @@ -24,9 +24,11 @@ import com.android.dialer.constants.Constants; /** * Extend fields for preferred SIM that is not available in {@link - * android.provider.ContactsContract.Data} before P. Only query and update is supported for this - * provider, and the update selection must be {@link PreferredSim#UPDATE_ID_SELECTION}. Caller must - * have {@link android.Manifest.permission#READ_CONTACTS} to read or {@link + * android.provider.ContactsContract.Data} before P. Insert is not supported for this provider. The + * update selection must be "data_id = ?". Delete is only supported directly on {@link #CONTENT_URI} + * with {@code null} selection, which clears all preferences. + * + *

Caller must have {@link android.Manifest.permission#READ_CONTACTS} to read or {@link * android.Manifest.permission#WRITE_CONTACTS} to write. */ public final class PreferredSimFallbackContract { diff --git a/java/com/android/dialer/preferredsim/impl/PreferredSimFallbackProvider.java b/java/com/android/dialer/preferredsim/impl/PreferredSimFallbackProvider.java index 1b10765a5..2263e9e38 100644 --- a/java/com/android/dialer/preferredsim/impl/PreferredSimFallbackProvider.java +++ b/java/com/android/dialer/preferredsim/impl/PreferredSimFallbackProvider.java @@ -91,6 +91,16 @@ public class PreferredSimFallbackProvider extends ContentProvider { @Override public int delete( @NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) { + checkWriteContactsPermission(); + + if (PreferredSimFallbackContract.CONTENT_URI.equals(uri) + && selection == null + && selectionArgs == null) { + return databaseHelper + .getWritableDatabase() + .delete(PreferredSimDatabaseHelper.TABLE, null, null); + } + if (!TextUtils.equals(getContext().getPackageName(), getCallingPackage())) { throw new IllegalArgumentException("Unsupported operation"); } -- cgit v1.2.3