19c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng/* 29c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * Copyright (C) 2010 The Android Open Source Project 39c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * 49c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * Licensed under the Apache License, Version 2.0 (the "License"); 59c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * you may not use this file except in compliance with the License. 69c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * You may obtain a copy of the License at 79c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * 89c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * http://www.apache.org/licenses/LICENSE-2.0 99c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * 109c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * Unless required by applicable law or agreed to in writing, software 119c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * distributed under the License is distributed on an "AS IS" BASIS, 129c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * See the License for the specific language governing permissions and 149c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * limitations under the License. 159c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng */ 169c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 179c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengpackage com.android.dialer.interactions; 189c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 199c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.content.ContentUris; 209c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.content.Context; 219c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.content.DialogInterface.OnDismissListener; 229c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.content.Intent; 239c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.net.Uri; 249c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.os.AsyncTask; 259c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Phone; 269c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.SipAddress; 279c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.provider.ContactsContract.Contacts; 289c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.provider.ContactsContract.Data; 299c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.provider.ContactsContract.RawContacts; 309c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.test.InstrumentationTestCase; 319c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport android.test.suitebuilder.annotation.SmallTest; 329c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 339c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport com.android.contacts.common.test.mocks.ContactsMockContext; 349c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport com.android.contacts.common.test.mocks.MockContentProvider; 359c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport com.android.contacts.common.test.mocks.MockContentProvider.Query; 369c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport com.android.contacts.common.util.ContactDisplayUtils; 379c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport com.android.dialer.interactions.PhoneNumberInteraction.PhoneItem; 389c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 399c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport java.util.ArrayList; 409c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengimport java.util.List; 419c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 429c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng/** 439c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * Tests for {@link com.android.contacts.common.interactions.PhoneNumberInteraction}. 449c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * 459c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * Running all tests: 469c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * 479c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * runtest contacts 489c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * or 499c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * adb shell am instrument \ 509c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng * -w com.android.contacts.tests/android.test.InstrumentationTestRunner 519c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng */ 529c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng@SmallTest 539c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengpublic class PhoneNumberInteractionTest extends InstrumentationTestCase { 549c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 559c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng static { 569c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng // AsyncTask class needs to be initialized on the main thread. 579c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng AsyncTask.init(); 589c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 599c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 609c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private final static class TestPhoneNumberInteraction extends PhoneNumberInteraction { 619c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private ArrayList<PhoneItem> mPhoneList; 629c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 639c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public TestPhoneNumberInteraction(Context context, int interactionType, 649c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng OnDismissListener dismissListener) { 659c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng super(context, interactionType, dismissListener); 669c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 679c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 689c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng @Override 699c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng void showDisambiguationDialog(ArrayList<PhoneItem> phoneList) { 709c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng this.mPhoneList = phoneList; 719c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 729c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 739c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 749c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private ContactsMockContext mContext; 759c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private MockContentProvider mContactsProvider; 769c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 779c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng @Override 789c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng protected void setUp() throws Exception { 799c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng super.setUp(); 809c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext = new ContactsMockContext(getInstrumentation().getTargetContext()); 819c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContactsProvider = mContext.getContactsProvider(); 829c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 839c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 849c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng @Override 859c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng protected void tearDown() throws Exception { 869c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContactsProvider.verify(); 879c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng super.tearDown(); 889c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 899c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 909c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testSendSmsWhenOnlyOneNumberAvailable() { 919c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13); 929c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(contactUri) 939c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null, 949c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.CONTENT_ITEM_TYPE); 959c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 969c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 979c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_SMS, null); 989c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 999c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(contactUri); 1009c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 1019c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1029c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Intent intent = mContext.getIntentForStartActivity(); 1039c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(intent); 1049c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1059c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Intent.ACTION_SENDTO, intent.getAction()); 1069c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("sms:123", intent.getDataString()); 1079c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 1089c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1099c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testSendSmsWhenDataIdIsProvided() { 1109c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri dataUri = ContentUris.withAppendedId(Data.CONTENT_URI, 1); 1119c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(dataUri, true /* isDataUri */ ) 1129c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(1, "987", 0, null, null, Phone.TYPE_HOME, null, 1139c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.CONTENT_ITEM_TYPE); 1149c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1159c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 1169c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_SMS, null); 1179c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1189c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(dataUri); 1199c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 1209c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1219c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Intent intent = mContext.getIntentForStartActivity(); 1229c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(intent); 1239c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1249c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Intent.ACTION_SENDTO, intent.getAction()); 1259c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("sms:987", intent.getDataString()); 1269c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 1279c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1289c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testSendSmsWhenThereIsPrimaryNumber() { 1299c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13); 1309c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(contactUri) 1319c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow( 1329c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1, "123", 0, null, null, Phone.TYPE_HOME, null, Phone.CONTENT_ITEM_TYPE) 1339c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow( 1349c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2, "456", 1, null, null, Phone.TYPE_HOME, null, Phone.CONTENT_ITEM_TYPE); 1359c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1369c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 1379c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_SMS, null); 1389c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1399c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(contactUri); 1409c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 1419c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1429c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Intent intent = mContext.getIntentForStartActivity(); 1439c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(intent); 1449c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1459c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Intent.ACTION_SENDTO, intent.getAction()); 1469c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("sms:456", intent.getDataString()); 1479c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 1489c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1499c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testShouldCollapseWith() { 1509c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng PhoneNumberInteraction.PhoneItem phoneItem1 = new PhoneNumberInteraction.PhoneItem(); 1519c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng PhoneNumberInteraction.PhoneItem phoneItem2 = new PhoneNumberInteraction.PhoneItem(); 1529c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1539c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem1.phoneNumber = "123"; 1549c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem2.phoneNumber = "123"; 1559c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1569c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertTrue(phoneItem1.shouldCollapseWith(phoneItem2)); 1579c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1589c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem1.phoneNumber = "123"; 1599c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem2.phoneNumber = "456"; 1609c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1619c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertFalse(phoneItem1.shouldCollapseWith(phoneItem2)); 1629c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1639c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem1.phoneNumber = "123#,123"; 1649c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem2.phoneNumber = "123#,456"; 1659c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1669c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertFalse(phoneItem1.shouldCollapseWith(phoneItem2)); 1679c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 1689c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1699c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testCallNumberWhenThereAreDuplicates() { 1709c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13); 1719c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(contactUri) 1729c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null, 1739c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.CONTENT_ITEM_TYPE) 1749c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(2, "123", 0, null, null, Phone.TYPE_WORK, null, 1759c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.CONTENT_ITEM_TYPE); 1769c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1779c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 1789c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_CALL, null); 1799c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1809c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(contactUri); 1819c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 1829c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1839c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Intent intent = mContext.getIntentForStartActivity(); 1849c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(intent); 1859c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1869c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Intent.ACTION_CALL_PRIVILEGED, intent.getAction()); 1879c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("tel:123", intent.getDataString()); 1889c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 1899c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1909c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testCallWithSip() { 1919c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13); 1929c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(contactUri) 1939c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(1, "example@example.com", 0, null, null, Phone.TYPE_HOME, null, 1949c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng SipAddress.CONTENT_ITEM_TYPE); 1959c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 1969c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_CALL, null); 1979c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1989c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(contactUri); 1999c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 2009c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2019c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Intent intent = mContext.getIntentForStartActivity(); 2029c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(intent); 2039c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2049c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Intent.ACTION_CALL_PRIVILEGED, intent.getAction()); 2059c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("sip:example%40example.com", intent.getDataString()); 2069c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 2079c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2089c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testShowDisambigDialogForCalling() { 2099c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13); 2109c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(contactUri) 2119c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(1, "123", 0, "account", null, Phone.TYPE_HOME, "label", 2129c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.CONTENT_ITEM_TYPE) 2139c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(2, "456", 0, null, null, Phone.TYPE_WORK, null, 2149c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.CONTENT_ITEM_TYPE); 2159c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2169c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 2179c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_CALL, null); 2189c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2199c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(contactUri); 2209c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 2219c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2229c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng List<PhoneItem> items = interaction.mPhoneList; 2239c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(items); 2249c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(2, items.size()); 2259c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2269c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng PhoneItem item = items.get(0); 2279c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(1, item.id); 2289c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("123", item.phoneNumber); 2299c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("account", item.accountType); 2309c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Phone.TYPE_HOME, item.type); 2319c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("label", item.label); 2329c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 2339c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2349c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private Query expectQuery(Uri contactUri) { 2359c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng return expectQuery(contactUri, false); 2369c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 2379c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2389c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private Query expectQuery(Uri uri, boolean isDataUri) { 2399c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng final Uri dataUri; 2409c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng if (isDataUri) { 2419c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng dataUri = uri; 2429c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } else { 2439c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng dataUri = Uri.withAppendedPath(uri, Contacts.Data.CONTENT_DIRECTORY); 2449c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 2459c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng return mContactsProvider 2469c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .expectQuery(dataUri) 2479c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .withProjection( 2489c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone._ID, 2499c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.NUMBER, 2509c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.IS_SUPER_PRIMARY, 2519c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng RawContacts.ACCOUNT_TYPE, 2529c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng RawContacts.DATA_SET, 2539c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.TYPE, 2549c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.LABEL, 2559c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.MIMETYPE) 2569c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .withSelection("mimetype IN ('vnd.android.cursor.item/phone_v2'," 2579c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng + " 'vnd.android.cursor.item/sip_address') AND data1 NOT NULL"); 2589c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 2599c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng} 260