diff --git a/mozilla/content/html/content/src/nsGenericHTMLElement.cpp b/mozilla/content/html/content/src/nsGenericHTMLElement.cpp index ca48cf3af31..d65eeb1c02f 100644 --- a/mozilla/content/html/content/src/nsGenericHTMLElement.cpp +++ b/mozilla/content/html/content/src/nsGenericHTMLElement.cpp @@ -880,6 +880,18 @@ nsGenericHTMLElement::GetInnerHTML(nsAString& aInnerHTML) nsDependentCString(NS_DOC_ENCODER_CONTRACTID_BASE) + NS_ConvertUTF16toUTF8(contentType) ).get()); + if (!docEncoder) { + // This could be some type for which we create a synthetic document. Try + // again as HTML if the document is case-insensitive and as XML if it's + // case-sensitive + if (doc->IsCaseSensitive()) { + contentType.AssignLiteral("application/xml"); + docEncoder = do_CreateInstance(NS_DOC_ENCODER_CONTRACTID_BASE "application/xml"); + } else { + contentType.AssignLiteral("text/html"); + docEncoder = do_CreateInstance(NS_DOC_ENCODER_CONTRACTID_BASE "text/html"); + } + } NS_ENSURE_TRUE(docEncoder, NS_ERROR_FAILURE);