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

Commit 2a013965 authored by Dikra Prasetya's avatar Dikra Prasetya
Browse files

Add mailto contact scheme support to MAP Client.

Bug: 266796373
Bug: 271386921
Tag: #feature
Test: atest MapClientStateMachineTest
Change-Id: I7f2a3637b773c4e25d2f4033a82bc70724b70104
parent 702caaf6
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -128,6 +128,9 @@ class MceStateMachine extends StateMachine {
    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;
    private State mDisconnected;
@@ -325,6 +328,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 {
                    Log.w(TAG, "Scheme " + contact.getScheme() + " not supported.");
                    return false;
@@ -419,6 +434,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()) {
@@ -949,6 +968,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) {
@@ -956,6 +976,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
@@ -398,10 +398,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);
@@ -417,6 +417,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
     */