diff options
-rw-r--r-- | src/com/android/mail/compose/ComposeActivity.java | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/com/android/mail/compose/ComposeActivity.java b/src/com/android/mail/compose/ComposeActivity.java index b120c2e7b..b1bed47ee 100644 --- a/src/com/android/mail/compose/ComposeActivity.java +++ b/src/com/android/mail/compose/ComposeActivity.java @@ -466,6 +466,11 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi launcher.startActivity(intent); } + /** Returns true if activity is started from an intent from an external application. */ + public boolean isExternal() { + return false; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -475,6 +480,16 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi checkValidAccounts(); } + /** Used for escaping plaintext. If the input is null, then it will return an empty String. */ + private static String escapeAndReplaceHtml(CharSequence text) { + if (text == null) { + return ""; + } + String body = Html.escapeHtml(text); + // Replace \r\n and \n with <br> tags + return body.replaceAll("( | )", "<br>"); + } + private void finishCreate() { final Bundle savedState = mInnerSavedState; findViews(); @@ -503,6 +518,9 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi message = (Message) intent.getParcelableExtra(ORIGINAL_DRAFT_MESSAGE); previews = intent.getParcelableArrayListExtra(EXTRA_ATTACHMENT_PREVIEWS); mRefMessage = (Message) intent.getParcelableExtra(EXTRA_IN_REFERENCE_TO_MESSAGE); + if (isExternal() && mRefMessage != null && !TextUtils.isEmpty(mRefMessage.bodyHtml)) { + mRefMessage.bodyHtml = escapeAndReplaceHtml(mRefMessage.bodyHtml); + } mRefMessageUri = (Uri) intent.getParcelableExtra(EXTRA_IN_REFERENCE_TO_MESSAGE_URI); if (Analytics.isLoggable()) { @@ -1310,6 +1328,9 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi } String body = intent.getStringExtra(EXTRA_BODY); if (body != null) { + if (isExternal()) { + body = escapeAndReplaceHtml(body); + } setBody(body, false /* withSignature */); } } @@ -1455,7 +1476,10 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi } else if (EXTRA_BODY.equals(extra)) { setBody(value, true /* with signature */); } else if (EXTRA_QUOTED_TEXT.equals(extra)) { - initQuotedText(value, true /* shouldQuoteText */); + if (isExternal()) { + value = escapeAndReplaceHtml(value); + } + initQuotedText(value, true /* shouldQuoteText */); } } } |