From b7b453777d07f475eba08313fcd0c67414c39b58 Mon Sep 17 00:00:00 2001 From: "asqueella%gmail.com" Date: Sun, 13 May 2007 16:44:06 +0000 Subject: [PATCH] Bug 331991 - Save as "Web Page, Complete" for HTML should include meta charset or encode all non-ASCII characters as entities p=Ryan Jones r=glazou, sr=peterv git-svn-id: svn://10.0.0.236/trunk@226356 18797224-902f-48f8-a5cc-f745e15eee43 --- .../base/src/nsHTMLContentSerializer.cpp | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) 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; }