Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a577e6b authored by David Duarte's avatar David Duarte Committed by Android (Google) Code Review
Browse files

Merge "Add mailto contact scheme support to MAP Client." into tm-mainline-prod

parents 8d41e8da 909f1fb1
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -122,6 +122,8 @@ class MceStateMachine extends StateMachine {
    private static final String FOLDER_SENT = "sent";
    private static final String INBOX_PATH = "telecom/msg/inbox";

    // URI Scheme for messages with email contact
    private static final String SCHEME_MAILTO = "mailto";

    // Connectivity States
    private int mPreviousState = BluetoothProfile.STATE_DISCONNECTED;
@@ -304,6 +306,18 @@ class MceStateMachine extends StateMachine {
                            Log.d(TAG, "Sending to phone numbers " + destEntryPhone.getValueList());
                        }
                    }
                } else if (SCHEME_MAILTO.equals(contact.getScheme())) {
                    VCardEntry destEntry = new VCardEntry();
                    VCardProperty destEntryContact = new VCardProperty();
                    destEntryContact.setName(VCardConstants.PROPERTY_EMAIL);
                    destEntryContact.addValues(contact.getSchemeSpecificPart());
                    destEntry.addProperty(destEntryContact);
                    bmsg.addRecipient(destEntry);
                    Log.d(TAG, "SPECIFIC: " + contact.getSchemeSpecificPart());
                    if (DBG) {
                        Log.d(TAG, "Sending to emails "
                                + destEntryContact.getValueList());
                    }
                } else {
                    if (DBG) {
                        Log.w(TAG, "Scheme " + contact.getScheme() + " not supported.");
@@ -400,6 +414,10 @@ class MceStateMachine extends StateMachine {
        return PhoneAccount.SCHEME_TEL + ":" + number;
    }

    private String getContactURIFromEmail(String email) {
        return SCHEME_MAILTO + "://" + email;
    }

    Bmessage.Type getDefaultMessageType() {
        synchronized (mDefaultMessageType) {
            if (Utils.isPtsTestMode()) {
@@ -837,6 +855,7 @@ class MceStateMachine extends StateMachine {
                            Log.d(TAG, originator.toString());
                        }
                        List<VCardEntry.PhoneData> phoneData = originator.getPhoneList();
                        List<VCardEntry.EmailData> emailData = originator.getEmailList();
                        if (phoneData != null && phoneData.size() > 0) {
                            String phoneNumber = phoneData.get(0).getNumber();
                            if (DBG) {
@@ -844,6 +863,13 @@ class MceStateMachine extends StateMachine {
                            }
                            intent.putExtra(BluetoothMapClient.EXTRA_SENDER_CONTACT_URI,
                                    getContactURIFromPhone(phoneNumber));
                        } else if (emailData != null && emailData.size() > 0) {
                            String email = emailData.get(0).getAddress();
                            if (DBG) {
                                Log.d(TAG, "Originator email: " + email);
                            }
                            intent.putExtra(BluetoothMapClient.EXTRA_SENDER_CONTACT_URI,
                                    getContactURIFromEmail(email));
                        }
                        intent.putExtra(BluetoothMapClient.EXTRA_SENDER_CONTACT_NAME,
                                originator.getDisplayName());
+22 −2
Original line number Diff line number Diff line
@@ -345,10 +345,10 @@ public class MapClientStateMachineTest {
    }

    /**
     * Test sending a message
     * Test sending a message to a phone
     */
    @Test
    public void testSendSMSMessage() {
    public void testSendSMSMessageToPhone() {
        setupSdpRecordReceipt();
        Message msg = Message.obtain(mHandler, MceStateMachine.MSG_MAS_CONNECTED);
        mMceStateMachine.sendMessage(msg);
@@ -364,6 +364,26 @@ public class MapClientStateMachineTest {
                .makeRequest(any(RequestPushMessage.class));
    }

    /**
     * Test sending a message to an email
     */
    @Test
    public void testSendSMSMessageToEmail() {
        setupSdpRecordReceipt();
        Message msg = Message.obtain(mHandler, MceStateMachine.MSG_MAS_CONNECTED);
        mMceStateMachine.sendMessage(msg);
        TestUtils.waitForLooperToFinishScheduledTask(mMceStateMachine.getHandler().getLooper());
        Assert.assertEquals(BluetoothProfile.STATE_CONNECTED, mMceStateMachine.getState());

        String testMessage = "Hello World!";
        Uri[] contacts = new Uri[] {Uri.parse("mailto://sms-test@google.com")};

        verify(mMockMasClient, times(0)).makeRequest(any(RequestPushMessage.class));
        mMceStateMachine.sendMapMessage(contacts, testMessage, null, null);
        verify(mMockMasClient, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(1))
                .makeRequest(any(RequestPushMessage.class));
    }

    /**
     * Test message sent successfully
     */