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 * adb shell am instrument \ 46d71afa85cb21bcfa379249990ba0d430bbba9545Paul Soulos * -w com.android.dialer.tests/android.test.InstrumentationTestRunner 479c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng */ 489c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng@SmallTest 499c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Chengpublic class PhoneNumberInteractionTest extends InstrumentationTestCase { 509c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 519c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng static { 529c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng // AsyncTask class needs to be initialized on the main thread. 539c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng AsyncTask.init(); 549c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 559c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 569c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private final static class TestPhoneNumberInteraction extends PhoneNumberInteraction { 579c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private ArrayList<PhoneItem> mPhoneList; 589c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 599c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public TestPhoneNumberInteraction(Context context, int interactionType, 609c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng OnDismissListener dismissListener) { 619c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng super(context, interactionType, dismissListener); 629c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 639c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 649c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng @Override 659c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng void showDisambiguationDialog(ArrayList<PhoneItem> phoneList) { 669c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng this.mPhoneList = phoneList; 679c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 689c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 699c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 709c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private ContactsMockContext mContext; 719c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private MockContentProvider mContactsProvider; 729c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 739c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng @Override 749c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng protected void setUp() throws Exception { 759c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng super.setUp(); 769c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext = new ContactsMockContext(getInstrumentation().getTargetContext()); 779c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContactsProvider = mContext.getContactsProvider(); 789c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 799c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 809c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng @Override 819c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng protected void tearDown() throws Exception { 829c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContactsProvider.verify(); 839c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng super.tearDown(); 849c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 859c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 869c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testSendSmsWhenOnlyOneNumberAvailable() { 879c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13); 889c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(contactUri) 899c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null, 903671725b58a9768016e141c77424dedb5fd2c55aYorke Lee Phone.CONTENT_ITEM_TYPE, 13); 919c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 929c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 939c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_SMS, null); 949c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 959c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(contactUri); 969c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 979c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 989c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Intent intent = mContext.getIntentForStartActivity(); 999c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(intent); 1009c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1019c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Intent.ACTION_SENDTO, intent.getAction()); 1029c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("sms:123", intent.getDataString()); 1039c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 1049c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1059c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testSendSmsWhenDataIdIsProvided() { 1069c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri dataUri = ContentUris.withAppendedId(Data.CONTENT_URI, 1); 1079c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(dataUri, true /* isDataUri */ ) 1089c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(1, "987", 0, null, null, Phone.TYPE_HOME, null, 1093671725b58a9768016e141c77424dedb5fd2c55aYorke Lee Phone.CONTENT_ITEM_TYPE, 1); 1109c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1119c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 1129c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_SMS, null); 1139c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1149c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(dataUri); 1159c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 1169c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1179c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Intent intent = mContext.getIntentForStartActivity(); 1189c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(intent); 1199c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1209c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Intent.ACTION_SENDTO, intent.getAction()); 1219c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("sms:987", intent.getDataString()); 1229c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 1239c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1249c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testSendSmsWhenThereIsPrimaryNumber() { 1259c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13); 1269c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(contactUri) 1273671725b58a9768016e141c77424dedb5fd2c55aYorke Lee .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null, 1283671725b58a9768016e141c77424dedb5fd2c55aYorke Lee Phone.CONTENT_ITEM_TYPE, 13) 1293671725b58a9768016e141c77424dedb5fd2c55aYorke Lee .returnRow(2, "456", 1, null, null, Phone.TYPE_HOME, null, 1303671725b58a9768016e141c77424dedb5fd2c55aYorke Lee Phone.CONTENT_ITEM_TYPE, 13); 1319c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1329c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 1339c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_SMS, null); 1349c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1359c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(contactUri); 1369c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 1379c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1389c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Intent intent = mContext.getIntentForStartActivity(); 1399c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(intent); 1409c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1419c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Intent.ACTION_SENDTO, intent.getAction()); 1429c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("sms:456", intent.getDataString()); 1439c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 1449c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 145d71afa85cb21bcfa379249990ba0d430bbba9545Paul Soulos public void testShouldCollapseWith() { 1469c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng PhoneNumberInteraction.PhoneItem phoneItem1 = new PhoneNumberInteraction.PhoneItem(); 1479c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng PhoneNumberInteraction.PhoneItem phoneItem2 = new PhoneNumberInteraction.PhoneItem(); 1489c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1499c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem1.phoneNumber = "123"; 1509c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem2.phoneNumber = "123"; 1519c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 152d71afa85cb21bcfa379249990ba0d430bbba9545Paul Soulos assertTrue(phoneItem1.shouldCollapseWith(phoneItem2, mContext)); 1539c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1549c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem1.phoneNumber = "123"; 1559c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem2.phoneNumber = "456"; 1569c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 157d71afa85cb21bcfa379249990ba0d430bbba9545Paul Soulos assertFalse(phoneItem1.shouldCollapseWith(phoneItem2, mContext)); 1589c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1599c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem1.phoneNumber = "123#,123"; 1609c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng phoneItem2.phoneNumber = "123#,456"; 1619c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 162d71afa85cb21bcfa379249990ba0d430bbba9545Paul Soulos assertFalse(phoneItem1.shouldCollapseWith(phoneItem2, mContext)); 163d71afa85cb21bcfa379249990ba0d430bbba9545Paul Soulos } 1649c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1659c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testCallNumberWhenThereAreDuplicates() { 1669c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13); 1679c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(contactUri) 1689c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null, 1693671725b58a9768016e141c77424dedb5fd2c55aYorke Lee Phone.CONTENT_ITEM_TYPE, 13) 1709c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(2, "123", 0, null, null, Phone.TYPE_WORK, null, 1713671725b58a9768016e141c77424dedb5fd2c55aYorke Lee Phone.CONTENT_ITEM_TYPE, 13); 1729c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1739c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 1749c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_CALL, null); 1759c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1769c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(contactUri); 1779c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 1789c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1799c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Intent intent = mContext.getIntentForStartActivity(); 1809c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(intent); 1819c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1829c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Intent.ACTION_CALL_PRIVILEGED, intent.getAction()); 1839c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("tel:123", intent.getDataString()); 1849c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 1859c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1869c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testCallWithSip() { 1879c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13); 1889c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(contactUri) 1899c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(1, "example@example.com", 0, null, null, Phone.TYPE_HOME, null, 1903671725b58a9768016e141c77424dedb5fd2c55aYorke Lee SipAddress.CONTENT_ITEM_TYPE, 13); 1919c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 1929c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_CALL, null); 1939c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1949c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(contactUri); 1959c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 1969c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 1979c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Intent intent = mContext.getIntentForStartActivity(); 1989c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(intent); 1999c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2009c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Intent.ACTION_CALL_PRIVILEGED, intent.getAction()); 2019c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("sip:example%40example.com", intent.getDataString()); 2029c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 2039c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2049c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng public void testShowDisambigDialogForCalling() { 2059c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13); 2069c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng expectQuery(contactUri) 2079c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(1, "123", 0, "account", null, Phone.TYPE_HOME, "label", 2083671725b58a9768016e141c77424dedb5fd2c55aYorke Lee Phone.CONTENT_ITEM_TYPE, 13) 2099c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .returnRow(2, "456", 0, null, null, Phone.TYPE_WORK, null, 2103671725b58a9768016e141c77424dedb5fd2c55aYorke Lee Phone.CONTENT_ITEM_TYPE, 13); 2119c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2129c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction( 2139c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng mContext, ContactDisplayUtils.INTERACTION_CALL, null); 2149c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2159c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.startInteraction(contactUri); 2169c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng interaction.getLoader().waitForLoader(); 2179c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2189c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng List<PhoneItem> items = interaction.mPhoneList; 2199c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertNotNull(items); 2209c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(2, items.size()); 2219c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2229c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng PhoneItem item = items.get(0); 2239c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(1, item.id); 2249c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("123", item.phoneNumber); 2259c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("account", item.accountType); 2269c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals(Phone.TYPE_HOME, item.type); 2279c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng assertEquals("label", item.label); 2289c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 2299c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2309c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private Query expectQuery(Uri contactUri) { 2319c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng return expectQuery(contactUri, false); 2329c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 2339c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng 2349c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng private Query expectQuery(Uri uri, boolean isDataUri) { 2359c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng final Uri dataUri; 2369c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng if (isDataUri) { 2379c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng dataUri = uri; 2389c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } else { 2399c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng dataUri = Uri.withAppendedPath(uri, Contacts.Data.CONTENT_DIRECTORY); 2409c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 2419c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng return mContactsProvider 2429c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .expectQuery(dataUri) 2439c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .withProjection( 2449c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone._ID, 2459c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.NUMBER, 2469c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.IS_SUPER_PRIMARY, 2479c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng RawContacts.ACCOUNT_TYPE, 2489c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng RawContacts.DATA_SET, 2499c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.TYPE, 2509c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng Phone.LABEL, 2513671725b58a9768016e141c77424dedb5fd2c55aYorke Lee Phone.MIMETYPE, 2523671725b58a9768016e141c77424dedb5fd2c55aYorke Lee Phone.CONTACT_ID) 2539c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng .withSelection("mimetype IN ('vnd.android.cursor.item/phone_v2'," 2549c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng + " 'vnd.android.cursor.item/sip_address') AND data1 NOT NULL"); 2559c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng } 2569c5fe4420bc1a1fe4edcac99e1f73b13bca63fa2Chiao Cheng} 257