Merge e56ed120e22945949c2d794c62de57c591de70d0 on remote branch

Change-Id: I390ba74d3a27831da9ead26cf979a89553027e99
diff --git a/src/com/android/mms/data/WorkingMessage.java b/src/com/android/mms/data/WorkingMessage.java
index 629ccdc..00f5c5d 100755
--- a/src/com/android/mms/data/WorkingMessage.java
+++ b/src/com/android/mms/data/WorkingMessage.java
@@ -891,6 +891,12 @@
         return recipients.serialize();
     }
 
+    public ContactList getWorkingContactLists() {
+        if (mWorkingRecipients == null) {
+            return null;
+        }
+        return ContactList.getByNumbers(mWorkingRecipients, false);
+    }
     // Call when we've returned from adding an attachment. We're no longer forcing the message
     // into a Mms message. At this point we either have the goods to make the message a Mms
     // or we don't. No longer fake it.
diff --git a/src/com/android/mms/ui/ComposeMessageActivity.java b/src/com/android/mms/ui/ComposeMessageActivity.java
index c7af5a9..99d4f19 100755
--- a/src/com/android/mms/ui/ComposeMessageActivity.java
+++ b/src/com/android/mms/ui/ComposeMessageActivity.java
@@ -1783,6 +1783,14 @@
             }
 
             editSmsMessageItem(msgItem);
+            boolean inEcm = TelephonyProperties.in_ecm_mode().orElse(false);
+            Log.d(TAG,"ecm mode: " + inEcm);
+            if (inEcm && !isEmergencySmsSupport()) {
+                if (mWorkingMessage.getText() != null) {
+                    mTextEditor.setTextKeepState(mWorkingMessage.getText());
+                    mTextEditor.setSelection(mTextEditor.length());
+                }
+            }
         }
 
         sendMessage(true);
@@ -5549,14 +5557,24 @@
         return (size + KILOBYTE -1) / KILOBYTE + 1;
     }
 
+    private ContactList getRecipientForEmergency() {
+        ContactList contactList;
+        if (isRecipientsEditorVisible()) {
+            contactList = mWorkingMessage.getWorkingContactLists();
+        } else {
+            contactList = mConversation.getRecipients();
+        }
+        return contactList;
+    }
     public boolean isEmergencySmsSupport() {
         PersistableBundle b;
         boolean eSmsCarrierSupport = false;
-        ContactList recipients = getRecipients();
-        int subId = mWorkingMessage.mCurrentConvSubId;
+        ContactList recipients = getRecipientForEmergency();
         if (recipients == null || recipients.size() != 1) {
+            Log.d(TAG, "recipient is invalid");
             return false;
         }
+        int subId = mWorkingMessage.mCurrentConvSubId;
         Log.d(TAG, "isEmergencySmsSupport subId: " + subId);
         if (!PhoneNumberUtils.isLocalEmergencyNumber(getApplicationContext(),
                 subId, recipients.get(0).getNumber())) {