diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
index 7498ca27ebc..fecccb8e584 100644
--- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
@@ -739,7 +739,8 @@ MakeContentObject(nsHTMLTag aNodeType,
nsIDOMHTMLFormElement* aForm,
nsIWebShell* aWebShell,
nsIHTMLContent** aResult,
- const nsString* aContent = nsnull)
+ const nsString* aContent = nsnull,
+ PRBool aInsideNoXXXTag = PR_FALSE)
{
nsresult rv = NS_OK;
switch (aNodeType) {
@@ -773,7 +774,10 @@ MakeContentObject(nsHTMLTag aNodeType,
break;
case eHTMLTag_button:
rv = NS_NewHTMLButtonElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_caption:
rv = NS_NewHTMLTableCaptionElement(aResult, aNodeInfo);
@@ -803,7 +807,10 @@ MakeContentObject(nsHTMLTag aNodeType,
break;
case eHTMLTag_fieldset:
rv = NS_NewHTMLFieldSetElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_font:
rv = NS_NewHTMLFontElement(aResult, aNodeInfo);
@@ -848,18 +855,27 @@ MakeContentObject(nsHTMLTag aNodeType,
break;
case eHTMLTag_input:
rv = NS_NewHTMLInputElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_isindex:
rv = NS_NewHTMLIsIndexElement(aResult, aNodeInfo);
break;
case eHTMLTag_label:
rv = NS_NewHTMLLabelElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_legend:
rv = NS_NewHTMLLegendElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_li:
rv = NS_NewHTMLLIElement(aResult, aNodeInfo);
@@ -905,7 +921,10 @@ MakeContentObject(nsHTMLTag aNodeType,
break;
case eHTMLTag_select:
rv = NS_NewHTMLSelectElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_spacer:
rv = NS_NewHTMLSpacerElement(aResult, aNodeInfo);
@@ -937,7 +956,11 @@ MakeContentObject(nsHTMLTag aNodeType,
NS_RELEASE(taElem);
}
}
- SetForm(*aResult, aForm);
+
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_title:
rv = NS_NewHTMLTitleElement(aResult, aNodeInfo);
@@ -1038,7 +1061,7 @@ HTMLContentSink::CreateContentObject(const nsIParserNode& aNode,
content.Assign(aNode.GetSkippedContent());
}
rv = MakeContentObject(aNodeType, nodeInfo, aForm, aWebShell,
- aResult, &content);
+ aResult, &content, !!mInsideNoXXXTag);
PRInt32 id;
mDocument->GetAndIncrementContentID(&id);
diff --git a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
index 7498ca27ebc..fecccb8e584 100644
--- a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
@@ -739,7 +739,8 @@ MakeContentObject(nsHTMLTag aNodeType,
nsIDOMHTMLFormElement* aForm,
nsIWebShell* aWebShell,
nsIHTMLContent** aResult,
- const nsString* aContent = nsnull)
+ const nsString* aContent = nsnull,
+ PRBool aInsideNoXXXTag = PR_FALSE)
{
nsresult rv = NS_OK;
switch (aNodeType) {
@@ -773,7 +774,10 @@ MakeContentObject(nsHTMLTag aNodeType,
break;
case eHTMLTag_button:
rv = NS_NewHTMLButtonElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_caption:
rv = NS_NewHTMLTableCaptionElement(aResult, aNodeInfo);
@@ -803,7 +807,10 @@ MakeContentObject(nsHTMLTag aNodeType,
break;
case eHTMLTag_fieldset:
rv = NS_NewHTMLFieldSetElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_font:
rv = NS_NewHTMLFontElement(aResult, aNodeInfo);
@@ -848,18 +855,27 @@ MakeContentObject(nsHTMLTag aNodeType,
break;
case eHTMLTag_input:
rv = NS_NewHTMLInputElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_isindex:
rv = NS_NewHTMLIsIndexElement(aResult, aNodeInfo);
break;
case eHTMLTag_label:
rv = NS_NewHTMLLabelElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_legend:
rv = NS_NewHTMLLegendElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_li:
rv = NS_NewHTMLLIElement(aResult, aNodeInfo);
@@ -905,7 +921,10 @@ MakeContentObject(nsHTMLTag aNodeType,
break;
case eHTMLTag_select:
rv = NS_NewHTMLSelectElement(aResult, aNodeInfo);
- SetForm(*aResult, aForm);
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_spacer:
rv = NS_NewHTMLSpacerElement(aResult, aNodeInfo);
@@ -937,7 +956,11 @@ MakeContentObject(nsHTMLTag aNodeType,
NS_RELEASE(taElem);
}
}
- SetForm(*aResult, aForm);
+
+ if (!aInsideNoXXXTag) {
+ SetForm(*aResult, aForm);
+ }
+
break;
case eHTMLTag_title:
rv = NS_NewHTMLTitleElement(aResult, aNodeInfo);
@@ -1038,7 +1061,7 @@ HTMLContentSink::CreateContentObject(const nsIParserNode& aNode,
content.Assign(aNode.GetSkippedContent());
}
rv = MakeContentObject(aNodeType, nodeInfo, aForm, aWebShell,
- aResult, &content);
+ aResult, &content, !!mInsideNoXXXTag);
PRInt32 id;
mDocument->GetAndIncrementContentID(&id);