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

Commit 221c2ad0 authored by Dikra Prasetya's avatar Dikra Prasetya Committed by Gerrit Code Review
Browse files

Merge "Add mailto contact scheme support to MAP Client."

parents 8d7bdf09 2a013965
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
     */