Bug 1384361 - HTML message with align attributes must not be convertible to plaintext. r=aceman
--- a/mailnews/compose/src/nsMsgCompose.cpp
+++ b/mailnews/compose/src/nsMsgCompose.cpp
@@ -5407,17 +5407,18 @@ nsresult nsMsgCompose::TagConvertible(ns
nsAutoString element;
rv = node->GetNodeName(element);
if (NS_FAILED(rv))
return rv;
nsCOMPtr<nsIDOMNode> pItem;
- // style attribute on any element can change layout in any way, so that is not convertible.
+ // A style attribute on any element can change layout in any way,
+ // so that is not convertible.
nsAutoString attribValue;
if (NS_SUCCEEDED(node->GetAttribute(NS_LITERAL_STRING("style"), attribValue)) &&
!attribValue.IsEmpty())
{
*_retval = nsIMsgCompConvertible::No;
return NS_OK;
}
@@ -5427,24 +5428,34 @@ nsresult nsMsgCompose::TagConvertible(ns
// other context (e.g. in microformats).
if (NS_SUCCEEDED(node->GetAttribute(NS_LITERAL_STRING("class"), attribValue)) &&
!attribValue.IsEmpty() &&
!StringBeginsWith(attribValue, NS_LITERAL_STRING("moz-"), nsCaseInsensitiveStringComparator()))
{
*_retval = nsIMsgCompConvertible::No;
return NS_OK;
}
+
// ID attributes can contain attached style/context or be target of links
// so we should preserve them.
if (NS_SUCCEEDED(node->GetAttribute(NS_LITERAL_STRING("id"), attribValue)) &&
!attribValue.IsEmpty())
{
*_retval = nsIMsgCompConvertible::No;
return NS_OK;
}
+
+ // Alignment is not convertible; editor currently uses this.
+ if (NS_SUCCEEDED(node->GetAttribute(NS_LITERAL_STRING("align"), attribValue)) &&
+ !attribValue.IsEmpty())
+ {
+ *_retval = nsIMsgCompConvertible::No;
+ return NS_OK;
+ }
+
if ( // some "simple" elements without "style" attribute
element.LowerCaseEqualsLiteral("br") ||
element.LowerCaseEqualsLiteral("p") ||
element.LowerCaseEqualsLiteral("pre") ||
element.LowerCaseEqualsLiteral("tt") ||
element.LowerCaseEqualsLiteral("html") ||
element.LowerCaseEqualsLiteral("head") ||
element.LowerCaseEqualsLiteral("meta") ||