diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
index 6f57cdb88ff..e4dbd9c2d1e 100644
--- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
@@ -53,6 +53,10 @@
// XXX Go through a factory for this one
#include "nsICSSParser.h"
+#include "nsIDOMHTMLTitleElement.h"
+
+static NS_DEFINE_IID(kIDOMHTMLTitleElementIID, NS_IDOMHTMLTITLEELEMENT_IID);
+
#define XXX_ART_HACK 1
static NS_DEFINE_IID(kIContentIID, NS_ICONTENT_IID);
@@ -432,6 +436,7 @@ AddAttributes(const nsIParserNode& aNode,
return NS_OK;
}
+// XXX compare switch statement against nsHTMLTags.h's list
static nsresult
MakeContentObject(nsHTMLTag aNodeType,
nsIAtom* aAtom,
@@ -441,6 +446,10 @@ MakeContentObject(nsHTMLTag aNodeType,
{
nsresult rv = NS_OK;
switch (aNodeType) {
+ default:
+ rv = NS_NewHTMLSpanElement(aResult, aAtom);
+ break;
+
case eHTMLTag_a:
rv = NS_NewHTMLAnchorElement(aResult, aAtom);
break;
@@ -456,32 +465,55 @@ MakeContentObject(nsHTMLTag aNodeType,
case eHTMLTag_basefont:
rv = NS_NewHTMLBaseFontElement(aResult, aAtom);
break;
+ case eHTMLTag_blockquote:/* XXX need a real object??? how does type=cite work? */
+ rv = NS_NewHTMLSpanElement(aResult, aAtom);
+ break;
case eHTMLTag_body:
- rv = NS_NewBodyPart(aResult, aAtom);
+ rv = NS_NewHTMLBodyElement(aResult, aAtom);
break;
case eHTMLTag_br:
rv = NS_NewHTMLBRElement(aResult, aAtom);
break;
case eHTMLTag_caption:
- rv = NS_NewTableCaptionPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableCaptionPart(aResult, aAtom);/* XXX old style */
break;
case eHTMLTag_col:
- rv = NS_NewTableColPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableColPart(aResult, aAtom);/* XXX old style */
break;
case eHTMLTag_colgroup:
- rv = NS_NewTableColGroupPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableColGroupPart(aResult, aAtom);/* XXX old style */
+ break;
+ case eHTMLTag_dir:
+ rv = NS_NewHTMLDirectoryElement(aResult, aAtom);
+ break;
+ case eHTMLTag_div:
+ rv = NS_NewHTMLDivElement(aResult, aAtom);
+ break;
+ case eHTMLTag_dl:
+ rv = NS_NewHTMLDListElement(aResult, aAtom);
break;
case eHTMLTag_embed:
rv = NS_NewHTMLEmbedElement(aResult, aAtom);
break;
+ case eHTMLTag_font:
+ rv = NS_NewHTMLFontElement(aResult, aAtom);
+ break;
case eHTMLTag_form:
rv = NS_NewHTMLFormElement(aResult, aAtom);
break;
case eHTMLTag_frame:
- rv = NS_NewHTMLFrame(aResult, aAtom, aWebShell);
+ rv = NS_NewHTMLFrame(aResult, aAtom, aWebShell);/* XXX old style */
break;
case eHTMLTag_frameset:
- rv = NS_NewHTMLFrameset(aResult, aAtom, aWebShell);
+ rv = NS_NewHTMLFrameset(aResult, aAtom, aWebShell);/* XXX old style */
+ break;
+ case eHTMLTag_h1:
+ case eHTMLTag_h2:
+ case eHTMLTag_h3:
+ case eHTMLTag_h4:
+ case eHTMLTag_h5:
+ case eHTMLTag_h6:
+ rv = NS_NewHTMLHeadingElement(aResult, aAtom);
break;
case eHTMLTag_head:
rv = NS_NewHTMLHeadElement(aResult, aAtom);
@@ -490,62 +522,100 @@ MakeContentObject(nsHTMLTag aNodeType,
rv = NS_NewHTMLHRElement(aResult, aAtom);
break;
case eHTMLTag_iframe:
- rv = NS_NewHTMLIFrame(aResult, aAtom, aWebShell);
+ rv = NS_NewHTMLIFrame(aResult, aAtom, aWebShell);/* XXX old style */
+ break;
+ case eHTMLTag_img:
+ rv = NS_NewHTMLImageElement(aResult, aAtom);
break;
case eHTMLTag_input:
rv = NS_NewHTMLInputElement(aResult, aAtom);
break;
+ case eHTMLTag_isindex:
+ rv = NS_NewHTMLIsIndexElement(aResult, aAtom);
+ break;
+ case eHTMLTag_label:
+ rv = NS_NewHTMLLabelElement(aResult, aAtom);
+ break;
+ case eHTMLTag_legend:
+ rv = NS_NewHTMLLegendElement(aResult, aAtom);
+ break;
+ case eHTMLTag_li:
+ rv = NS_NewHTMLLIElement(aResult, aAtom);
+ break;
case eHTMLTag_link:
rv = NS_NewHTMLLinkElement(aResult, aAtom);
break;
+ case eHTMLTag_map:
+ rv = NS_NewHTMLMapElement(aResult, aAtom);
+ break;
+ case eHTMLTag_menu:
+ rv = NS_NewHTMLMenuElement(aResult, aAtom);
+ break;
case eHTMLTag_meta:
rv = NS_NewHTMLMetaElement(aResult, aAtom);
break;
case eHTMLTag_object:
rv = NS_NewHTMLObjectElement(aResult, aAtom);
break;
+ case eHTMLTag_ol:
+ rv = NS_NewHTMLOListElement(aResult, aAtom);
+ break;
+ case eHTMLTag_optgroup:
+ rv = NS_NewHTMLOptGroupElement(aResult, aAtom);
+ break;
case eHTMLTag_option:
- rv = NS_NewHTMLOption(aResult, aAtom);
+ rv = NS_NewHTMLOption(aResult, aAtom);/* XXX old style */
+ break;
+ case eHTMLTag_p:
+ rv = NS_NewHTMLParagraphElement(aResult, aAtom);
+ break;
+ case eHTMLTag_pre:
+ rv = NS_NewHTMLPreElement(aResult, aAtom);
break;
case eHTMLTag_param:
rv = NS_NewHTMLParamElement(aResult, aAtom);
break;
+ case eHTMLTag_q:
+ rv = NS_NewHTMLQuoteElement(aResult, aAtom);
+ break;
case eHTMLTag_script:
rv = NS_NewHTMLScriptElement(aResult, aAtom);
break;
case eHTMLTag_select:
- rv = NS_NewHTMLSelect(aResult, aAtom, aForm);
+ rv = NS_NewHTMLSelect(aResult, aAtom, aForm);/* XXX old style */
break;
case eHTMLTag_spacer:
- rv = NS_NewHTMLSpacer(aResult, aAtom);
+ rv = NS_NewHTMLSpacer(aResult, aAtom);/* XXX old style */
break;
case eHTMLTag_style:
rv = NS_NewHTMLStyleElement(aResult, aAtom);
break;
case eHTMLTag_table:
- rv = NS_NewTablePart(aResult, aAtom);/* XXX */
+ rv = NS_NewTablePart(aResult, aAtom);/* XXX old style */
break;
case eHTMLTag_tbody:
case eHTMLTag_thead:
case eHTMLTag_tfoot:
- rv = NS_NewTableRowGroupPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableRowGroupPart(aResult, aAtom);/* XXX old style */
break;
case eHTMLTag_td:
case eHTMLTag_th:
- rv = NS_NewTableCellPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableCellPart(aResult, aAtom);/* XXX old style */
+ break;
+ case eHTMLTag_textarea:
+ rv = NS_NewHTMLTextAreaElement(aResult, aAtom);
+ break;
+ case eHTMLTag_title:
+ rv = NS_NewHTMLTitleElement(aResult, aAtom);
break;
case eHTMLTag_tr:
- rv = NS_NewTableRowPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableRowPart(aResult, aAtom);/* XXX old style */
+ break;
+ case eHTMLTag_ul:
+ rv = NS_NewHTMLUListElement(aResult, aAtom);
break;
case eHTMLTag_wbr:
- rv = NS_NewHTMLWordBreak(aResult, aAtom);/* XXX */
- break;
- default:
- rv = NS_NewHTMLContainer(aResult, aAtom);
- break;
-
- case eHTMLTag_title:
- NS_NOTREACHED("illegal MakeContentObject call");
+ rv = NS_NewHTMLWordBreak(aResult, aAtom);/* XXX old style */
break;
}
return rv;
@@ -1396,8 +1466,14 @@ HTMLContentSink::SetTitle(const nsString& aValue)
nsIAtom* atom = NS_NewAtom("TITLE");
nsIHTMLContent* it = nsnull;
- nsresult rv = NS_NewHTMLTitle(&it, atom, aValue);
+ nsresult rv = NS_NewHTMLTitleElement(&it, atom);
if (NS_OK == rv) {
+ nsIDOMHTMLTitleElement* domtitle = nsnull;
+ it->QueryInterface(kIDOMHTMLTitleElementIID, (void**) &domtitle);
+ if (nsnull != domtitle) {
+ domtitle->SetText(aValue);
+ NS_RELEASE(domtitle);
+ }
mHead->AppendChildTo(it, PR_FALSE);
NS_RELEASE(it);
}
diff --git a/mozilla/content/html/document/src/nsImageDocument.cpp b/mozilla/content/html/document/src/nsImageDocument.cpp
index 3edc31b6949..74203a06140 100644
--- a/mozilla/content/html/document/src/nsImageDocument.cpp
+++ b/mozilla/content/html/document/src/nsImageDocument.cpp
@@ -203,7 +203,7 @@ nsImageDocument::CreateSyntheticDocument()
}
nsIHTMLContent* body;
- rv = NS_NewBodyPart(&body, nsHTMLAtoms::body);
+ rv = NS_NewHTMLBodyElement(&body, nsHTMLAtoms::body);
if (NS_OK != rv) {
return rv;
}
@@ -211,7 +211,7 @@ nsImageDocument::CreateSyntheticDocument()
nsIHTMLContent* center;
nsIAtom* centerAtom = NS_NewAtom("P");
- rv = NS_NewHTMLContainer(¢er, centerAtom);
+ rv = NS_NewHTMLParagraphElement(¢er, centerAtom);
NS_RELEASE(centerAtom);
if (NS_OK != rv) {
return rv;
@@ -220,7 +220,7 @@ nsImageDocument::CreateSyntheticDocument()
nsIHTMLContent* image;
nsIAtom* imgAtom = NS_NewAtom("IMG");
- rv = NS_NewHTMLImage(&image, imgAtom);
+ rv = NS_NewHTMLImageElement(&image, imgAtom);
NS_RELEASE(imgAtom);
if (NS_OK != rv) {
return rv;
diff --git a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
index 6f57cdb88ff..e4dbd9c2d1e 100644
--- a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
@@ -53,6 +53,10 @@
// XXX Go through a factory for this one
#include "nsICSSParser.h"
+#include "nsIDOMHTMLTitleElement.h"
+
+static NS_DEFINE_IID(kIDOMHTMLTitleElementIID, NS_IDOMHTMLTITLEELEMENT_IID);
+
#define XXX_ART_HACK 1
static NS_DEFINE_IID(kIContentIID, NS_ICONTENT_IID);
@@ -432,6 +436,7 @@ AddAttributes(const nsIParserNode& aNode,
return NS_OK;
}
+// XXX compare switch statement against nsHTMLTags.h's list
static nsresult
MakeContentObject(nsHTMLTag aNodeType,
nsIAtom* aAtom,
@@ -441,6 +446,10 @@ MakeContentObject(nsHTMLTag aNodeType,
{
nsresult rv = NS_OK;
switch (aNodeType) {
+ default:
+ rv = NS_NewHTMLSpanElement(aResult, aAtom);
+ break;
+
case eHTMLTag_a:
rv = NS_NewHTMLAnchorElement(aResult, aAtom);
break;
@@ -456,32 +465,55 @@ MakeContentObject(nsHTMLTag aNodeType,
case eHTMLTag_basefont:
rv = NS_NewHTMLBaseFontElement(aResult, aAtom);
break;
+ case eHTMLTag_blockquote:/* XXX need a real object??? how does type=cite work? */
+ rv = NS_NewHTMLSpanElement(aResult, aAtom);
+ break;
case eHTMLTag_body:
- rv = NS_NewBodyPart(aResult, aAtom);
+ rv = NS_NewHTMLBodyElement(aResult, aAtom);
break;
case eHTMLTag_br:
rv = NS_NewHTMLBRElement(aResult, aAtom);
break;
case eHTMLTag_caption:
- rv = NS_NewTableCaptionPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableCaptionPart(aResult, aAtom);/* XXX old style */
break;
case eHTMLTag_col:
- rv = NS_NewTableColPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableColPart(aResult, aAtom);/* XXX old style */
break;
case eHTMLTag_colgroup:
- rv = NS_NewTableColGroupPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableColGroupPart(aResult, aAtom);/* XXX old style */
+ break;
+ case eHTMLTag_dir:
+ rv = NS_NewHTMLDirectoryElement(aResult, aAtom);
+ break;
+ case eHTMLTag_div:
+ rv = NS_NewHTMLDivElement(aResult, aAtom);
+ break;
+ case eHTMLTag_dl:
+ rv = NS_NewHTMLDListElement(aResult, aAtom);
break;
case eHTMLTag_embed:
rv = NS_NewHTMLEmbedElement(aResult, aAtom);
break;
+ case eHTMLTag_font:
+ rv = NS_NewHTMLFontElement(aResult, aAtom);
+ break;
case eHTMLTag_form:
rv = NS_NewHTMLFormElement(aResult, aAtom);
break;
case eHTMLTag_frame:
- rv = NS_NewHTMLFrame(aResult, aAtom, aWebShell);
+ rv = NS_NewHTMLFrame(aResult, aAtom, aWebShell);/* XXX old style */
break;
case eHTMLTag_frameset:
- rv = NS_NewHTMLFrameset(aResult, aAtom, aWebShell);
+ rv = NS_NewHTMLFrameset(aResult, aAtom, aWebShell);/* XXX old style */
+ break;
+ case eHTMLTag_h1:
+ case eHTMLTag_h2:
+ case eHTMLTag_h3:
+ case eHTMLTag_h4:
+ case eHTMLTag_h5:
+ case eHTMLTag_h6:
+ rv = NS_NewHTMLHeadingElement(aResult, aAtom);
break;
case eHTMLTag_head:
rv = NS_NewHTMLHeadElement(aResult, aAtom);
@@ -490,62 +522,100 @@ MakeContentObject(nsHTMLTag aNodeType,
rv = NS_NewHTMLHRElement(aResult, aAtom);
break;
case eHTMLTag_iframe:
- rv = NS_NewHTMLIFrame(aResult, aAtom, aWebShell);
+ rv = NS_NewHTMLIFrame(aResult, aAtom, aWebShell);/* XXX old style */
+ break;
+ case eHTMLTag_img:
+ rv = NS_NewHTMLImageElement(aResult, aAtom);
break;
case eHTMLTag_input:
rv = NS_NewHTMLInputElement(aResult, aAtom);
break;
+ case eHTMLTag_isindex:
+ rv = NS_NewHTMLIsIndexElement(aResult, aAtom);
+ break;
+ case eHTMLTag_label:
+ rv = NS_NewHTMLLabelElement(aResult, aAtom);
+ break;
+ case eHTMLTag_legend:
+ rv = NS_NewHTMLLegendElement(aResult, aAtom);
+ break;
+ case eHTMLTag_li:
+ rv = NS_NewHTMLLIElement(aResult, aAtom);
+ break;
case eHTMLTag_link:
rv = NS_NewHTMLLinkElement(aResult, aAtom);
break;
+ case eHTMLTag_map:
+ rv = NS_NewHTMLMapElement(aResult, aAtom);
+ break;
+ case eHTMLTag_menu:
+ rv = NS_NewHTMLMenuElement(aResult, aAtom);
+ break;
case eHTMLTag_meta:
rv = NS_NewHTMLMetaElement(aResult, aAtom);
break;
case eHTMLTag_object:
rv = NS_NewHTMLObjectElement(aResult, aAtom);
break;
+ case eHTMLTag_ol:
+ rv = NS_NewHTMLOListElement(aResult, aAtom);
+ break;
+ case eHTMLTag_optgroup:
+ rv = NS_NewHTMLOptGroupElement(aResult, aAtom);
+ break;
case eHTMLTag_option:
- rv = NS_NewHTMLOption(aResult, aAtom);
+ rv = NS_NewHTMLOption(aResult, aAtom);/* XXX old style */
+ break;
+ case eHTMLTag_p:
+ rv = NS_NewHTMLParagraphElement(aResult, aAtom);
+ break;
+ case eHTMLTag_pre:
+ rv = NS_NewHTMLPreElement(aResult, aAtom);
break;
case eHTMLTag_param:
rv = NS_NewHTMLParamElement(aResult, aAtom);
break;
+ case eHTMLTag_q:
+ rv = NS_NewHTMLQuoteElement(aResult, aAtom);
+ break;
case eHTMLTag_script:
rv = NS_NewHTMLScriptElement(aResult, aAtom);
break;
case eHTMLTag_select:
- rv = NS_NewHTMLSelect(aResult, aAtom, aForm);
+ rv = NS_NewHTMLSelect(aResult, aAtom, aForm);/* XXX old style */
break;
case eHTMLTag_spacer:
- rv = NS_NewHTMLSpacer(aResult, aAtom);
+ rv = NS_NewHTMLSpacer(aResult, aAtom);/* XXX old style */
break;
case eHTMLTag_style:
rv = NS_NewHTMLStyleElement(aResult, aAtom);
break;
case eHTMLTag_table:
- rv = NS_NewTablePart(aResult, aAtom);/* XXX */
+ rv = NS_NewTablePart(aResult, aAtom);/* XXX old style */
break;
case eHTMLTag_tbody:
case eHTMLTag_thead:
case eHTMLTag_tfoot:
- rv = NS_NewTableRowGroupPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableRowGroupPart(aResult, aAtom);/* XXX old style */
break;
case eHTMLTag_td:
case eHTMLTag_th:
- rv = NS_NewTableCellPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableCellPart(aResult, aAtom);/* XXX old style */
+ break;
+ case eHTMLTag_textarea:
+ rv = NS_NewHTMLTextAreaElement(aResult, aAtom);
+ break;
+ case eHTMLTag_title:
+ rv = NS_NewHTMLTitleElement(aResult, aAtom);
break;
case eHTMLTag_tr:
- rv = NS_NewTableRowPart(aResult, aAtom);/* XXX */
+ rv = NS_NewTableRowPart(aResult, aAtom);/* XXX old style */
+ break;
+ case eHTMLTag_ul:
+ rv = NS_NewHTMLUListElement(aResult, aAtom);
break;
case eHTMLTag_wbr:
- rv = NS_NewHTMLWordBreak(aResult, aAtom);/* XXX */
- break;
- default:
- rv = NS_NewHTMLContainer(aResult, aAtom);
- break;
-
- case eHTMLTag_title:
- NS_NOTREACHED("illegal MakeContentObject call");
+ rv = NS_NewHTMLWordBreak(aResult, aAtom);/* XXX old style */
break;
}
return rv;
@@ -1396,8 +1466,14 @@ HTMLContentSink::SetTitle(const nsString& aValue)
nsIAtom* atom = NS_NewAtom("TITLE");
nsIHTMLContent* it = nsnull;
- nsresult rv = NS_NewHTMLTitle(&it, atom, aValue);
+ nsresult rv = NS_NewHTMLTitleElement(&it, atom);
if (NS_OK == rv) {
+ nsIDOMHTMLTitleElement* domtitle = nsnull;
+ it->QueryInterface(kIDOMHTMLTitleElementIID, (void**) &domtitle);
+ if (nsnull != domtitle) {
+ domtitle->SetText(aValue);
+ NS_RELEASE(domtitle);
+ }
mHead->AppendChildTo(it, PR_FALSE);
NS_RELEASE(it);
}
diff --git a/mozilla/layout/html/document/src/nsImageDocument.cpp b/mozilla/layout/html/document/src/nsImageDocument.cpp
index 3edc31b6949..74203a06140 100644
--- a/mozilla/layout/html/document/src/nsImageDocument.cpp
+++ b/mozilla/layout/html/document/src/nsImageDocument.cpp
@@ -203,7 +203,7 @@ nsImageDocument::CreateSyntheticDocument()
}
nsIHTMLContent* body;
- rv = NS_NewBodyPart(&body, nsHTMLAtoms::body);
+ rv = NS_NewHTMLBodyElement(&body, nsHTMLAtoms::body);
if (NS_OK != rv) {
return rv;
}
@@ -211,7 +211,7 @@ nsImageDocument::CreateSyntheticDocument()
nsIHTMLContent* center;
nsIAtom* centerAtom = NS_NewAtom("P");
- rv = NS_NewHTMLContainer(¢er, centerAtom);
+ rv = NS_NewHTMLParagraphElement(¢er, centerAtom);
NS_RELEASE(centerAtom);
if (NS_OK != rv) {
return rv;
@@ -220,7 +220,7 @@ nsImageDocument::CreateSyntheticDocument()
nsIHTMLContent* image;
nsIAtom* imgAtom = NS_NewAtom("IMG");
- rv = NS_NewHTMLImage(&image, imgAtom);
+ rv = NS_NewHTMLImageElement(&image, imgAtom);
NS_RELEASE(imgAtom);
if (NS_OK != rv) {
return rv;