Turning ContactDeletionInteraction into a Fragment
Change-Id: I6edb576d0158b7082d3e2bc4d1902d34fc62cc7a
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index 8491e35..533eb85 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -114,7 +114,6 @@
private PhoneNumberInteraction mPhoneNumberCallInteraction;
private PhoneNumberInteraction mSendTextMessageInteraction;
- private ContactDeletionInteraction mContactDeletionInteraction;
private ImportExportInteraction mImportExportInteraction;
private boolean mSearchInitiated;
@@ -578,7 +577,7 @@
@Override
public void onDeleteContactAction(Uri contactUri) {
- getContactDeletionInteraction().deleteContact(contactUri);
+ ContactDeletionInteraction.start(ContactBrowserActivity.this, contactUri);
}
@Override
@@ -617,8 +616,8 @@
}
@Override
- public void onDeleteRequested(Uri contactLookupUri) {
- getContactDeletionInteraction().deleteContact(contactLookupUri);
+ public void onDeleteRequested(Uri contactUri) {
+ ContactDeletionInteraction.start(ContactBrowserActivity.this, contactUri);
}
@Override
@@ -845,10 +844,7 @@
protected Dialog onCreateDialog(int id, Bundle bundle) {
if (DialogManager.isManagedId(id)) return mDialogManager.onCreateDialog(id, bundle);
- Dialog dialog = getContactDeletionInteraction().onCreateDialog(id, bundle);
- if (dialog != null) return dialog;
-
- dialog = getPhoneNumberCallInteraction().onCreateDialog(id, bundle);
+ Dialog dialog = getPhoneNumberCallInteraction().onCreateDialog(id, bundle);
if (dialog != null) return dialog;
dialog = getSendTextMessageInteraction().onCreateDialog(id, bundle);
@@ -862,10 +858,6 @@
@Override
protected void onPrepareDialog(int id, Dialog dialog, Bundle bundle) {
- if (getContactDeletionInteraction().onPrepareDialog(id, dialog, bundle)) {
- return;
- }
-
if (getPhoneNumberCallInteraction().onPrepareDialog(id, dialog, bundle)) {
return;
}
@@ -1016,14 +1008,6 @@
return mSendTextMessageInteraction;
}
- private ContactDeletionInteraction getContactDeletionInteraction() {
- if (mContactDeletionInteraction == null) {
- mContactDeletionInteraction = new ContactDeletionInteraction();
- mContactDeletionInteraction.attachToActivity(this);
- }
- return mContactDeletionInteraction;
- }
-
private ImportExportInteraction getImportExportInteraction() {
if (mImportExportInteraction == null) {
mImportExportInteraction = new ImportExportInteraction(this);
diff --git a/src/com/android/contacts/activities/ContactDetailActivity.java b/src/com/android/contacts/activities/ContactDetailActivity.java
index b86eae4..9091328 100644
--- a/src/com/android/contacts/activities/ContactDetailActivity.java
+++ b/src/com/android/contacts/activities/ContactDetailActivity.java
@@ -24,7 +24,6 @@
import android.accounts.Account;
import android.app.Activity;
-import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.ContentValues;
import android.content.Intent;
@@ -40,7 +39,6 @@
private static final String TAG = "ContactDetailActivity";
private ContactDetailFragment mFragment;
- private ContactDeletionInteraction mContactDeletionInteraction;
@Override
public void onCreate(Bundle savedState) {
@@ -57,23 +55,6 @@
}
@Override
- protected Dialog onCreateDialog(int id, Bundle args) {
- final Dialog deletionDialog = getContactDeletionInteraction().onCreateDialog(id, args);
- if (deletionDialog != null) return deletionDialog;
-
- // Nobody knows about the Dialog
- Log.w(TAG, "Unknown dialog requested, id: " + id + ", args: " + args);
- return null;
- }
-
- @Override
- protected void onPrepareDialog(int id, Dialog dialog, Bundle args) {
- if (getContactDeletionInteraction().onPrepareDialog(id, dialog, args)) {
- return;
- }
- }
-
- @Override
public void startSearch(String initialQuery, boolean selectInitialQuery, Bundle appSearchData,
boolean globalSearch) {
if (globalSearch) {
@@ -90,14 +71,6 @@
return super.onKeyDown(keyCode, event);
}
- private ContactDeletionInteraction getContactDeletionInteraction() {
- if (mContactDeletionInteraction == null) {
- mContactDeletionInteraction = new ContactDeletionInteraction();
- mContactDeletionInteraction.attachToActivity(this);
- }
- return mContactDeletionInteraction;
- }
-
private final ContactDetailFragment.Listener mFragmentListener =
new ContactDetailFragment.Listener() {
@Override
@@ -120,8 +93,8 @@
}
@Override
- public void onDeleteRequested(Uri lookupUri) {
- getContactDeletionInteraction().deleteContact(lookupUri);
+ public void onDeleteRequested(Uri contactUri) {
+ ContactDeletionInteraction.start(ContactDetailActivity.this, contactUri);
}
@Override
diff --git a/src/com/android/contacts/activities/ContactEditorActivity.java b/src/com/android/contacts/activities/ContactEditorActivity.java
index 2b22b4b..a8df2e0 100644
--- a/src/com/android/contacts/activities/ContactEditorActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorActivity.java
@@ -41,7 +41,6 @@
private static final String TAG = "ContactEditorActivity";
private ContactEditorFragment mFragment;
- private ContactDeletionInteraction mContactDeletionInteraction;
private Button mDoneButton;
private Button mRevertButton;
@@ -90,22 +89,12 @@
protected Dialog onCreateDialog(int id, Bundle args) {
if (DialogManager.isManagedId(id)) return mDialogManager.onCreateDialog(id, args);
- Dialog dialog = getContactDeletionInteraction().onCreateDialog(id, args);
- if (dialog != null) return dialog;
-
// Nobody knows about the Dialog
Log.w(TAG, "Unknown dialog requested, id: " + id + ", args: " + args);
return null;
}
@Override
- protected void onPrepareDialog(int id, Dialog dialog, Bundle args) {
- if (getContactDeletionInteraction().onPrepareDialog(id, dialog, args)) {
- return;
- }
- }
-
- @Override
public void startSearch(String initialQuery, boolean selectInitialQuery, Bundle appSearchData,
boolean globalSearch) {
if (globalSearch) {
@@ -120,14 +109,6 @@
mFragment.save(true);
}
- private ContactDeletionInteraction getContactDeletionInteraction() {
- if (mContactDeletionInteraction == null) {
- mContactDeletionInteraction = new ContactDeletionInteraction();
- mContactDeletionInteraction.attachToActivity(this);
- }
- return mContactDeletionInteraction;
- }
-
private final ContactEditorFragment.Listener mFragmentListener =
new ContactEditorFragment.Listener() {
@Override
@@ -163,8 +144,8 @@
}
@Override
- public void onDeleteRequested(Uri lookupUri) {
- getContactDeletionInteraction().deleteContact(lookupUri);
+ public void onDeleteRequested(Uri contactUri) {
+ ContactDeletionInteraction.start(ContactEditorActivity.this, contactUri);
}
@Override
diff --git a/src/com/android/contacts/interactions/ContactDeletionInteraction.java b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
index 4022aba..ca77df3 100644
--- a/src/com/android/contacts/interactions/ContactDeletionInteraction.java
+++ b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
@@ -17,42 +17,46 @@
package com.android.contacts.interactions;
import com.android.contacts.R;
-import com.android.contacts.model.AccountTypes;
import com.android.contacts.model.AccountType;
+import com.android.contacts.model.AccountTypes;
import com.google.android.collect.Sets;
import android.app.Activity;
import android.app.AlertDialog;
-import android.app.Dialog;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
import android.content.CursorLoader;
import android.content.DialogInterface;
+import android.content.DialogInterface.OnDismissListener;
import android.content.Loader;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Contacts.Entity;
-import android.provider.ContactsContract.RawContacts;
-import android.util.Log;
import java.util.HashSet;
/**
* An interaction invoked to delete a contact.
*/
-public class ContactDeletionInteraction {
+public class ContactDeletionInteraction extends Fragment
+ implements LoaderCallbacks<Cursor>, OnDismissListener {
- private static final String TAG = "ContactDeletionInteraction";
+ private static final String FRAGMENT_TAG = "deleteContact";
- public static final String EXTRA_KEY_CONTACT_URI = "contactUri";
- public static final String EXTRA_KEY_MESSAGE_ID = "messageId";
+ private static final String KEY_ACTIVE = "active";
+ public static final String ARG_CONTACT_URI = "contactUri";
- private static final String[] RAW_CONTACTS_PROJECTION = new String[] {
- RawContacts._ID, //0
- RawContacts.ACCOUNT_TYPE, //1
- Contacts._ID, // 2
- Contacts.LOOKUP_KEY, // 3
+ private static final int LOADER_ID = 0;
+
+ private static final String[] ENTITY_PROJECTION = new String[] {
+ Entity.RAW_CONTACT_ID, //0
+ Entity.ACCOUNT_TYPE, //1
+ Entity.CONTACT_ID, // 2
+ Entity.LOOKUP_KEY, // 3
};
private static final int COLUMN_INDEX_RAW_CONTACT_ID = 0;
@@ -60,42 +64,28 @@
private static final int COLUMN_INDEX_CONTACT_ID = 2;
private static final int COLUMN_INDEX_LOOKUP_KEY = 3;
- private final class RawContactLoader extends CursorLoader {
- private final Uri mContactUri;
-
- private RawContactLoader(Context context, Uri contactUri) {
- super(context, Uri.withAppendedPath(contactUri, Entity.CONTENT_DIRECTORY),
- RAW_CONTACTS_PROJECTION, null, null, null);
- this.mContactUri = contactUri;
- }
-
- @Override
- public void deliverResult(Cursor data) {
- if (data == null || data.getCount() == 0) {
- Log.e(TAG, "No such contact: " + mContactUri);
- return;
- }
-
- showConfirmationDialog(data);
- }
- }
-
- private final class ConfirmationDialogClickListener implements DialogInterface.OnClickListener {
- private final Uri mContactUri;
-
- public ConfirmationDialogClickListener(Uri contactUri) {
- this.mContactUri = contactUri;
- }
-
- public void onClick(DialogInterface dialog, int which) {
- doDeleteContact(mContactUri);
- }
- }
-
+ private boolean mActive;
+ private Uri mContactUri;
private Context mContext;
- private CursorLoader mLoader;
- public void attachToActivity(Activity activity) {
+ private AlertDialog mDialog;
+
+ public static void start(Activity activity, Uri contactUri) {
+ FragmentManager fragmentManager = activity.getFragmentManager();
+ ContactDeletionInteraction fragment =
+ (ContactDeletionInteraction) fragmentManager.findFragmentByTag(FRAGMENT_TAG);
+ if (fragment == null) {
+ fragment = new ContactDeletionInteraction();
+ fragment.setContactUri(contactUri);
+ fragmentManager.openTransaction().add(fragment, FRAGMENT_TAG).commit();
+ } else {
+ fragment.setContactUri(contactUri);
+ }
+ }
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
setContext(activity);
}
@@ -104,15 +94,50 @@
mContext = context;
}
- public void deleteContact(Uri contactUri) {
- if (mLoader != null) {
- mLoader.destroy();
+ public void setContactUri(Uri contactUri) {
+ mContactUri = contactUri;
+ mActive = true;
+ if (isStarted()) {
+ Bundle args = new Bundle();
+ args.putParcelable(ARG_CONTACT_URI, mContactUri);
+ getLoaderManager().restartLoader(LOADER_ID, args, this);
}
- mLoader = new RawContactLoader(mContext, contactUri);
- startLoading(mLoader);
}
- protected void showConfirmationDialog(Cursor cursor) {
+ /* Visible for testing */
+ boolean isStarted() {
+ return isAdded();
+ }
+
+ @Override
+ public void onStart() {
+ if (mActive) {
+ Bundle args = new Bundle();
+ args.putParcelable(ARG_CONTACT_URI, mContactUri);
+ getLoaderManager().initLoader(LOADER_ID, args, this);
+ }
+ super.onStart();
+ }
+
+ @Override
+ public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+ Uri contactUri = args.getParcelable(ARG_CONTACT_URI);
+ return new CursorLoader(mContext,
+ Uri.withAppendedPath(contactUri, Entity.CONTENT_DIRECTORY), ENTITY_PROJECTION,
+ null, null, null);
+ }
+
+ @Override
+ public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
+ if (mDialog != null) {
+ mDialog.dismiss();
+ mDialog = null;
+ }
+
+ if (!mActive) {
+ return;
+ }
+
long contactId = 0;
String lookupKey = null;
@@ -121,23 +146,20 @@
HashSet<Long> writableRawContacts = Sets.newHashSet();
AccountTypes sources = getSources();
- try {
- while (cursor.moveToNext()) {
- final long rawContactId = cursor.getLong(COLUMN_INDEX_RAW_CONTACT_ID);
- final String accountType = cursor.getString(COLUMN_INDEX_ACCOUNT_TYPE);
- contactId = cursor.getLong(COLUMN_INDEX_CONTACT_ID);
- lookupKey = cursor.getString(COLUMN_INDEX_LOOKUP_KEY);
- AccountType contactsSource = sources.getInflatedSource(accountType,
- AccountType.LEVEL_SUMMARY);
- boolean readonly = contactsSource != null && contactsSource.readOnly;
- if (readonly) {
- readOnlyRawContacts.add(rawContactId);
- } else {
- writableRawContacts.add(rawContactId);
- }
+ cursor.moveToPosition(-1);
+ while (cursor.moveToNext()) {
+ final long rawContactId = cursor.getLong(COLUMN_INDEX_RAW_CONTACT_ID);
+ final String accountType = cursor.getString(COLUMN_INDEX_ACCOUNT_TYPE);
+ contactId = cursor.getLong(COLUMN_INDEX_CONTACT_ID);
+ lookupKey = cursor.getString(COLUMN_INDEX_LOOKUP_KEY);
+ AccountType contactsSource = sources.getInflatedSource(accountType,
+ AccountType.LEVEL_SUMMARY);
+ boolean readonly = contactsSource != null && contactsSource.readOnly;
+ if (readonly) {
+ readOnlyRawContacts.add(rawContactId);
+ } else {
+ writableRawContacts.add(rawContactId);
}
- } finally {
- cursor.close();
}
int messageId;
@@ -153,63 +175,58 @@
messageId = R.string.deleteConfirmation;
}
- Bundle bundle = new Bundle();
- bundle.putParcelable(EXTRA_KEY_CONTACT_URI, Contacts.getLookupUri(contactId, lookupKey));
- bundle.putInt(EXTRA_KEY_MESSAGE_ID, messageId);
-
- showDialog(bundle);
- }
-
- /**
- * Creates a delete confirmation dialog and returns it. Returns null if the
- * id is not for a deletion confirmation.
- */
- public Dialog onCreateDialog(int id, Bundle bundle) {
- if (id != R.id.dialog_delete_contact_confirmation) {
- return null;
- }
-
- return new AlertDialog.Builder(mContext)
- .setTitle(R.string.deleteConfirmation_title)
- .setIcon(android.R.drawable.ic_dialog_alert)
- .setMessage(R.string.deleteConfirmation)
- .setNegativeButton(android.R.string.cancel, null)
- .setPositiveButton(android.R.string.ok, null)
- .create();
- }
-
- public boolean onPrepareDialog(int id, Dialog dialog, Bundle bundle) {
- if (id != R.id.dialog_delete_contact_confirmation) {
- return false;
- }
-
- Uri contactUri = bundle.getParcelable(EXTRA_KEY_CONTACT_URI);
- int messageId = bundle.getInt(EXTRA_KEY_MESSAGE_ID, R.string.deleteConfirmation);
-
- ((AlertDialog)dialog).setMessage(mContext.getText(messageId));
- ((AlertDialog)dialog).setButton(DialogInterface.BUTTON_POSITIVE,
- mContext.getText(android.R.string.ok),
- new ConfirmationDialogClickListener(contactUri));
-
- return true;
- }
-
- protected void doDeleteContact(Uri contactUri) {
- mContext.getContentResolver().delete(contactUri, null, null);
+ final Uri contactUri = Contacts.getLookupUri(contactId, lookupKey);
+ showDialog(messageId, contactUri);
}
/* Visible for testing */
- void startLoading(Loader<Cursor> loader) {
- loader.startLoading();
+ void showDialog(int messageId, final Uri contactUri) {
+ mDialog = new AlertDialog.Builder(getActivity())
+ .setTitle(R.string.deleteConfirmation_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setMessage(messageId)
+ .setNegativeButton(android.R.string.cancel, null)
+ .setPositiveButton(android.R.string.ok,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int whichButton) {
+ doDeleteContact(contactUri);
+ }
+ }
+ )
+ .create();
+
+ mDialog.setOnDismissListener(this);
+ mDialog.show();
+ }
+
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ mActive = false;
+ mDialog = null;
+ getLoaderManager().stopLoader(LOADER_ID);
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putBoolean(KEY_ACTIVE, mActive);
+ }
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ if (savedInstanceState != null) {
+ mActive = savedInstanceState.getBoolean(KEY_ACTIVE);
+ }
+ }
+
+ protected void doDeleteContact(Uri contactUri) {
+ getActivity().getContentResolver().delete(contactUri, null, null);
}
/* Visible for testing */
AccountTypes getSources() {
- return AccountTypes.getInstance(mContext);
- }
-
- /* Visible for testing */
- void showDialog(Bundle bundle) {
- ((Activity)mContext).showDialog(R.id.dialog_delete_contact_confirmation, bundle);
+ return AccountTypes.getInstance(getActivity());
}
}
diff --git a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
index 65be32e..2ba3852 100644
--- a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
+++ b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
@@ -19,18 +19,18 @@
import com.android.contacts.R;
import com.android.contacts.model.AccountTypes;
import com.android.contacts.tests.mocks.ContactsMockContext;
+import com.android.contacts.tests.mocks.MockAccountTypes;
import com.android.contacts.tests.mocks.MockContentProvider;
import com.android.contacts.tests.mocks.MockContentProvider.Query;
-import com.android.contacts.tests.mocks.MockAccountTypes;
+import com.android.contacts.widget.TestLoaderManager;
-import android.content.AsyncTaskLoader;
+import android.app.LoaderManager;
import android.content.ContentUris;
-import android.content.Loader;
-import android.database.Cursor;
+import android.content.pm.ProviderInfo;
import android.net.Uri;
-import android.os.Bundle;
+import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.RawContacts;
+import android.provider.ContactsContract.Contacts.Entity;
import android.test.InstrumentationTestCase;
import android.test.suitebuilder.annotation.Smoke;
@@ -47,22 +47,25 @@
@Smoke
public class ContactDeletionInteractionTest extends InstrumentationTestCase {
- private final static class TestContactDeletionInteraction extends ContactDeletionInteraction {
+ private final class TestContactDeletionDialogFragment
+ extends ContactDeletionInteraction {
public Uri contactUri;
public int messageId;
@Override
- void startLoading(Loader<Cursor> loader) {
- // Execute the loader synchronously
- AsyncTaskLoader<Cursor> atLoader = (AsyncTaskLoader<Cursor>)loader;
- Cursor data = atLoader.loadInBackground();
- atLoader.deliverResult(data);
+ public LoaderManager getLoaderManager() {
+ return mLoaderManager;
}
@Override
- void showDialog(Bundle bundle) {
- contactUri = bundle.getParcelable(EXTRA_KEY_CONTACT_URI);
- messageId = bundle.getInt(EXTRA_KEY_MESSAGE_ID);
+ boolean isStarted() {
+ return true;
+ }
+
+ @Override
+ void showDialog(int messageId, Uri contactUri) {
+ this.messageId = messageId;
+ this.contactUri = contactUri;
}
@Override
@@ -73,49 +76,56 @@
private ContactsMockContext mContext;
private MockContentProvider mContactsProvider;
+ private TestLoaderManager mLoaderManager;
@Override
protected void setUp() throws Exception {
super.setUp();
mContext = new ContactsMockContext(getInstrumentation().getTargetContext());
mContactsProvider = mContext.getContactsProvider();
+ ProviderInfo info = new ProviderInfo();
+ info.authority = ContactsContract.AUTHORITY;
+ mContactsProvider.attachInfo(mContext, info);
+ mLoaderManager = new TestLoaderManager();
}
public void testSingleWritableRawContact() {
- expectQuery().returnRow(1, MockAccountTypes.WRITABLE_ACCOUNT_TYPE);
+ expectQuery().returnRow(1, MockAccountTypes.WRITABLE_ACCOUNT_TYPE, 13, "foo");
assertWithMessageId(R.string.deleteConfirmation);
}
public void testReadOnlyRawContacts() {
- expectQuery().returnRow(1, MockAccountTypes.READONLY_ACCOUNT_TYPE);
+ expectQuery().returnRow(1, MockAccountTypes.READONLY_ACCOUNT_TYPE, 13, "foo");
assertWithMessageId(R.string.readOnlyContactWarning);
}
public void testMixOfWritableAndReadOnlyRawContacts() {
expectQuery()
- .returnRow(1, MockAccountTypes.WRITABLE_ACCOUNT_TYPE)
- .returnRow(2, MockAccountTypes.READONLY_ACCOUNT_TYPE);
+ .returnRow(1, MockAccountTypes.WRITABLE_ACCOUNT_TYPE, 13, "foo")
+ .returnRow(2, MockAccountTypes.READONLY_ACCOUNT_TYPE, 13, "foo");
assertWithMessageId(R.string.readOnlyContactDeleteConfirmation);
}
public void testMultipleWritableRawContacts() {
expectQuery()
- .returnRow(1, MockAccountTypes.WRITABLE_ACCOUNT_TYPE)
- .returnRow(2, MockAccountTypes.WRITABLE_ACCOUNT_TYPE);
+ .returnRow(1, MockAccountTypes.WRITABLE_ACCOUNT_TYPE, 13, "foo")
+ .returnRow(2, MockAccountTypes.WRITABLE_ACCOUNT_TYPE, 13, "foo");
assertWithMessageId(R.string.multipleContactDeleteConfirmation);
}
private Query expectQuery() {
- return mContactsProvider.expectQuery(RawContacts.CONTENT_URI)
- .withProjection(RawContacts._ID, RawContacts.ACCOUNT_TYPE)
- .withSelection("contact_id=?", "13");
+ Uri uri = Uri.withAppendedPath(
+ ContentUris.withAppendedId(Contacts.CONTENT_URI, 13), Entity.CONTENT_DIRECTORY);
+ return mContactsProvider.expectQuery(uri).withProjection(
+ Entity.RAW_CONTACT_ID, Entity.ACCOUNT_TYPE, Entity.CONTACT_ID, Entity.LOOKUP_KEY);
}
private void assertWithMessageId(int messageId) {
- TestContactDeletionInteraction interaction = new TestContactDeletionInteraction();
+ TestContactDeletionDialogFragment interaction = new TestContactDeletionDialogFragment();
interaction.setContext(mContext);
- interaction.deleteContact(ContentUris.withAppendedId(Contacts.CONTENT_URI, 13));
- assertEquals("content://com.android.contacts/contacts/13",
+ interaction.setContactUri(ContentUris.withAppendedId(Contacts.CONTENT_URI, 13));
+ mLoaderManager.executeLoaders();
+ assertEquals("content://com.android.contacts/contacts/lookup/foo/13",
interaction.contactUri.toString());
assertEquals(messageId, interaction.messageId);
mContactsProvider.verify();