summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/providers/contacts/VoicemailContentProvider.java16
-rw-r--r--src/com/android/providers/contacts/VoicemailUriType.java4
-rw-r--r--tests/src/com/android/providers/contacts/VoicemailProviderTest.java23
3 files changed, 19 insertions, 24 deletions
diff --git a/src/com/android/providers/contacts/VoicemailContentProvider.java b/src/com/android/providers/contacts/VoicemailContentProvider.java
index fb0957cb..e7bd32f8 100644
--- a/src/com/android/providers/contacts/VoicemailContentProvider.java
+++ b/src/com/android/providers/contacts/VoicemailContentProvider.java
@@ -116,7 +116,7 @@ public class VoicemailContentProvider extends ContentProvider {
return lookupMimeType(uriData);
}
// Not an individual voicemail - must be a directory listing type.
- return VoicemailContract.DIR_TYPE;
+ return Voicemails.DIR_TYPE;
}
/** Query the db for the MIME type of the given URI, called only from {@link #getType(Uri)}. */
@@ -222,10 +222,7 @@ public class VoicemailContentProvider extends ContentProvider {
SQLiteDatabase db = mDbHelper.getWritableDatabase();
long rowId = db.insert(VOICEMAILS_TABLE_NAME, null, copiedValues);
if (rowId > 0) {
- Uri newUri = ContentUris.withAppendedId(
- Uri.withAppendedPath(VoicemailContract.CONTENT_URI_SOURCE,
- copiedValues.getAsString(Voicemails.SOURCE_PACKAGE)), rowId);
-
+ Uri newUri = ContentUris.withAppendedId(uriData.getUri(), rowId);
if (sendProviderChangedNotification) {
notifyChange(newUri, VoicemailContract.ACTION_NEW_VOICEMAIL,
Intent.ACTION_PROVIDER_CHANGED);
@@ -501,16 +498,13 @@ public class VoicemailContentProvider extends ContentProvider {
/** Get a {@link UriData} corresponding to a given uri. */
private UriData createUriData(Uri uri) {
+ String sourcePackage = uri.getQueryParameter(VoicemailContract.PARAM_KEY_SOURCE_PACKAGE);
List<String> segments = uri.getPathSegments();
switch (createUriMatcher().match(uri)) {
case VOICEMAILS:
- return new UriData(uri, null, null);
+ return new UriData(uri, null, sourcePackage);
case VOICEMAILS_ID:
- return new UriData(uri, segments.get(1), null);
- case VOICEMAILS_SOURCE:
- return new UriData(uri, null, segments.get(2));
- case VOICEMAILS_SOURCE_ID:
- return new UriData(uri, segments.get(3), segments.get(2));
+ return new UriData(uri, segments.get(1), sourcePackage);
case NO_MATCH:
throw new IllegalArgumentException("Invalid URI: " + uri);
default:
diff --git a/src/com/android/providers/contacts/VoicemailUriType.java b/src/com/android/providers/contacts/VoicemailUriType.java
index 9e728a28..c3a33abe 100644
--- a/src/com/android/providers/contacts/VoicemailUriType.java
+++ b/src/com/android/providers/contacts/VoicemailUriType.java
@@ -23,9 +23,7 @@ import com.android.providers.contacts.util.UriType;
enum VoicemailUriType implements UriType {
NO_MATCH(null),
VOICEMAILS("voicemail"),
- VOICEMAILS_ID("voicemail/#"),
- VOICEMAILS_SOURCE("voicemail/source/*"),
- VOICEMAILS_SOURCE_ID("voicemail/source/*/#");
+ VOICEMAILS_ID("voicemail/#");
private final String path;
diff --git a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
index 90ad870e..9a3bd658 100644
--- a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
+++ b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
@@ -95,13 +95,13 @@ public class VoicemailProviderTest extends BaseContactsProvider2Test {
// Give away full permission, in case it was granted previously.
mActor.removePermissions(ALL_PERMISSION);
mActor.addPermissions(OWN_PERMISSION);
- mUseSourceUri = false;
+ mUseSourceUri = true;
}
private void setUpForFullPermission() {
mActor.addPermissions(OWN_PERMISSION);
mActor.addPermissions(ALL_PERMISSION);
- mUseSourceUri = true;
+ mUseSourceUri = false;
}
private void setUpForNoPermission() {
@@ -111,12 +111,8 @@ public class VoicemailProviderTest extends BaseContactsProvider2Test {
}
private Uri contentUri() {
- if (mUseSourceUri) {
- return VoicemailContract.CONTENT_URI;
- } else {
- return Uri.withAppendedPath(VoicemailContract.CONTENT_URI_SOURCE,
- mActor.packageName);
- }
+ return mUseSourceUri ?
+ Voicemails.buildSourceUri(mActor.packageName) : Voicemails.CONTENT_URI;
}
public void testInsert() throws Exception {
@@ -198,8 +194,9 @@ public class VoicemailProviderTest extends BaseContactsProvider2Test {
// Now give away full permission and check that we can update and delete only
// the own voicemail.
setUpForOwnPermission();
- mResolver.update(ownVoicemail, getDefaultVoicemailValues(), null, null);
- mResolver.delete(ownVoicemail, null, null);
+ mResolver.update(withSourcePackageParam(ownVoicemail),
+ getDefaultVoicemailValues(), null, null);
+ mResolver.delete(withSourcePackageParam(ownVoicemail), null, null);
// However, attempting to update or delete another-package's voicemail should fail.
EvenMoreAsserts.assertThrows(SecurityException.class, new Runnable() {
@@ -216,6 +213,12 @@ public class VoicemailProviderTest extends BaseContactsProvider2Test {
});
}
+ private Uri withSourcePackageParam(Uri uri) {
+ return uri.buildUpon()
+ .appendQueryParameter(VoicemailContract.PARAM_KEY_SOURCE_PACKAGE, mActor.packageName)
+ .build();
+ }
+
// Test to ensure that all operations fail when no voicemail permission is granted.
public void testNoPermissions() {
setUpForNoPermission();