diff --git a/mozilla/content/base/src/nsHTMLContentSerializer.cpp b/mozilla/content/base/src/nsHTMLContentSerializer.cpp
index 17990eeda95..f6bf436f86a 100644
--- a/mozilla/content/base/src/nsHTMLContentSerializer.cpp
+++ b/mozilla/content/base/src/nsHTMLContentSerializer.cpp
@@ -654,6 +654,16 @@ nsHTMLContentSerializer::AppendElementStart(nsIDOMElement *aElement,
nsIAtom *name = content->Tag();
+ if (name == nsGkAtoms::meta) {
+ // We need too skip any meta tags that set the content type
+ // becase we set our own later.
+ nsAutoString header;
+ content->GetAttr(kNameSpaceID_None, nsGkAtoms::httpEquiv, header);
+ if (header.LowerCaseEqualsLiteral("content-type")) {
+ return NS_OK;
+ }
+ }
+
if (name == nsGkAtoms::br && mPreLevel > 0
&& (mFlags & nsIDocumentEncoder::OutputNoFormattingInPre)) {
AppendToString(mLineBreak, aStr);
@@ -748,6 +758,18 @@ nsHTMLContentSerializer::AppendElementStart(nsIDOMElement *aElement,
mInCDATA = PR_TRUE;
}
+ if (name == nsGkAtoms::head) {
+ // We should also obey the line break rules set for a normal meta tag here.
+ // We add a line break before and after the tag's opening.
+ AppendToString(mLineBreak, aStr);
+ AppendToString(NS_LITERAL_STRING(""), aStr);
+ AppendToString(mLineBreak, aStr);
+ }
+
return NS_OK;
}