From 8447be28509d81baf5e51d19822218fba72e240b Mon Sep 17 00:00:00 2001 From: Henri Sivonen Date: Mon, 30 Nov 2009 17:34:51 +0200 Subject: [PATCH] Bug 502804, bug 510063 - Update the HTML5 tree builder to spec as of 2009-11-24. rs=sicking. --HG-- extra : rebase_source : 3707836f9ad9d61921bf7455d74ee0844f6a4d02 --- parser/html/nsHtml5AtomList.h | 9 +- parser/html/nsHtml5ElementName.cpp | 139 +++++++++++---------- parser/html/nsHtml5ElementName.h | 6 +- parser/html/nsHtml5TreeBuilder.cpp | 186 ++++++++++++++++++++--------- parser/html/nsHtml5TreeBuilder.h | 9 +- 5 files changed, 209 insertions(+), 140 deletions(-) diff --git a/parser/html/nsHtml5AtomList.h b/parser/html/nsHtml5AtomList.h index b6b5a7042dbe..1a4080672772 100644 --- a/parser/html/nsHtml5AtomList.h +++ b/parser/html/nsHtml5AtomList.h @@ -20,9 +20,11 @@ HTML5_ATOM(button, "button") HTML5_ATOM(input, "input") HTML5_ATOM(option, "option") HTML5_ATOM(ruby, "ruby") +HTML5_ATOM(select, "select") HTML5_ATOM(optgroup, "optgroup") HTML5_ATOM(frameset, "frameset") -HTML5_ATOM(select, "select") +HTML5_ATOM(ul, "ul") +HTML5_ATOM(ol, "ol") HTML5_ATOM(html, "html") HTML5_ATOM(td, "td") HTML5_ATOM(th, "th") @@ -711,12 +713,10 @@ HTML5_ATOM(mi, "mi") HTML5_ATOM(mn, "mn") HTML5_ATOM(mo, "mo") HTML5_ATOM(ms, "ms") -HTML5_ATOM(ol, "ol") HTML5_ATOM(or_, "or") HTML5_ATOM(pi, "pi") HTML5_ATOM(rp, "rp") HTML5_ATOM(tt, "tt") -HTML5_ATOM(ul, "ul") HTML5_ATOM(and_, "and") HTML5_ATOM(arg, "arg") HTML5_ATOM(abs, "abs") @@ -841,7 +841,6 @@ HTML5_ATOM(center, "center") HTML5_ATOM(canvas, "canvas") HTML5_ATOM(divide, "divide") HTML5_ATOM(degree, "degree") -HTML5_ATOM(dialog, "dialog") HTML5_ATOM(domain, "domain") HTML5_ATOM(exists, "exists") HTML5_ATOM(fetile, "fetile") @@ -849,6 +848,7 @@ HTML5_ATOM(feTile, "feTile") HTML5_ATOM(figure, "figure") HTML5_ATOM(forall, "forall") HTML5_ATOM(footer, "footer") +HTML5_ATOM(hgroup, "hgroup") HTML5_ATOM(header, "header") HTML5_ATOM(keygen, "keygen") HTML5_ATOM(lambda, "lambda") @@ -983,7 +983,6 @@ HTML5_ATOM(solidcolor, "solidcolor") HTML5_ATOM(altglyphdef, "altglyphdef") HTML5_ATOM(altGlyphDef, "altGlyphDef") HTML5_ATOM(determinant, "determinant") -HTML5_ATOM(eventsource, "eventsource") HTML5_ATOM(femergenode, "femergenode") HTML5_ATOM(feMergeNode, "feMergeNode") HTML5_ATOM(fecomposite, "fecomposite") diff --git a/parser/html/nsHtml5ElementName.cpp b/parser/html/nsHtml5ElementName.cpp index 04a20a34ade7..eed9a77e833b 100644 --- a/parser/html/nsHtml5ElementName.cpp +++ b/parser/html/nsHtml5ElementName.cpp @@ -131,7 +131,7 @@ nsHtml5ElementName::cloneElementName(nsHtml5AtomTable* interner) return this; } -static PRInt32 const ELEMENT_HASHES_DATA[] = { 1057, 1090, 1255, 1321, 1552, 1585, 1651, 1717, 68162, 68899, 69059, 69764, 70020, 70276, 71077, 71205, 72134, 72232, 72264, 72296, 72328, 72360, 72392, 73351, 74312, 75209, 78124, 78284, 78476, 79149, 79309, 79341, 79469, 81295, 81487, 82224, 84498, 84626, 86164, 86292, 86612, 86676, 87445, 3183041, 3186241, 3198017, 3218722, 3226754, 3247715, 3256803, 3263971, 3264995, 3289252, 3291332, 3295524, 3299620, 3326725, 3379303, 3392679, 3448233, 3460553, 3461577, 3510347, 3546604, 3552364, 3556524, 3576461, 3586349, 3588141, 3590797, 3596333, 3622062, 3625454, 3627054, 3675728, 3749042, 3771059, 3771571, 3776211, 3782323, 3782963, 3784883, 3785395, 3788979, 3815476, 3839605, 3885110, 3917911, 3948984, 3951096, 135304769, 135858241, 136498210, 136906434, 137138658, 137512995, 137531875, 137548067, 137629283, 137645539, 137646563, 137775779, 138529956, 138615076, 139040932, 140954086, 141179366, 141690439, 142738600, 143013512, 146979116, 147175724, 147475756, 147902637, 147936877, 148017645, 148131885, 148228141, 148229165, 148309165, 148395629, 148551853, 148618829, 149076462, 149490158, 149572782, 151277616, 151639440, 153268914, 153486514, 153563314, 153750706, 153763314, 153914034, 154406067, 154417459, 154600979, 154678323, 154680979, 154866835, 155366708, 155375188, 155391572, 155465780, 155869364, 158045494, 168988979, 169321621, 169652752, 173151309, 174240818, 174247297, 174669292, 175391532, 176638123, 177380397, 177879204, 177886734, 180753473, 181020073, 181503558, 181686320, 181999237, 181999311, 182048201, 182074866, 182078003, 182083764, 182920847, 184716457, 184976961, 185145071, 187281445, 187872052, 188100653, 188875944, 188919873, 188920457, 189203987, 189371817, 189414886, 189567458, 190266670, 191318187, 191337609, 202479203, 202493027, 202835587, 202843747, 203013219, 203036048, 203045987, 203177552, 203898516, 204648562, 205067918, 205078130, 205096654, 205689142, 205690439, 205766017, 205988909, 207213161, 207794484, 207800999, 208023602, 208213644, 208213647, 210310273, 210940978, 213325049, 213946445, 214055079, 215125040, 215134273, 215135028, 215237420, 215418148, 215553166, 215553394, 215563858, 215627949, 215754324, 217529652, 217713834, 217732628, 218731945, 221417045, 221424946, 221493746, 221515401, 221658189, 221844577, 221908140, 221910626, 221921586, 222659762, 225001091, 236105833, 236113965, 236194995, 236195427, 236206132, 236206387, 236211683, 236212707, 236381647, 236571826, 237124271, 238172205, 238210544, 238270764, 238435405, 238501172, 239224867, 239257644, 239710497, 240307721, 241208789, 241241557, 241318060, 241319404, 241343533, 241344069, 241405397, 241765845, 243864964, 244502085, 244946220, 245109902, 247647266, 247707956, 248648814, 248648836, 248682161, 248986932, 249058914, 249697357, 252132601, 252135604, 252317348, 255007012, 255278388, 256365156, 257566121, 269763372, 271202790, 271863856, 272049197, 272127474, 272770631, 274339449, 274939471, 275388004, 275388005, 275388006, 275977800, 278267602, 278513831, 278712622, 281613765, 281683369, 282120228, 282250732, 282508942, 283743649, 283787570, 284710386, 285391148, 285478533, 285854898, 285873762, 286931113, 288964227, 289445441, 289689648, 291671489, 303512884, 305319975, 305610036, 305764101, 308448294, 308675890, 312085683, 312264750, 315032867, 316391000, 317331042, 317902135, 318950711, 319447220, 321499182, 322538804, 323145200, 337067316, 337826293, 339905989, 340833697, 341457068, 345302593, 349554733, 349771471, 349786245, 350819405, 356072847, 370349192, 373962798, 374509141, 375558638, 375574835, 376053993, 383276530, 383373833, 383407586, 384439906, 386079012, 404133513, 404307343, 407031852, 408072233, 409112005, 409608425, 409771500, 419040932, 437730612, 439529766, 442616365, 442813037, 443157674, 443295316, 450118444, 450482697, 456789668, 459935396, 471217869, 474073645, 476230702, 476665218, 476717289, 483014825, 485083298, 489306281, 538364390, 540675748, 543819186, 543958612, 576960820, 577242548, 610515252, 642202932, 644420819 }; +static PRInt32 const ELEMENT_HASHES_DATA[] = { 1057, 1090, 1255, 1321, 1552, 1585, 1651, 1717, 68162, 68899, 69059, 69764, 70020, 70276, 71077, 71205, 72134, 72232, 72264, 72296, 72328, 72360, 72392, 73351, 74312, 75209, 78124, 78284, 78476, 79149, 79309, 79341, 79469, 81295, 81487, 82224, 84498, 84626, 86164, 86292, 86612, 86676, 87445, 3183041, 3186241, 3198017, 3218722, 3226754, 3247715, 3256803, 3263971, 3264995, 3289252, 3291332, 3295524, 3299620, 3326725, 3379303, 3392679, 3448233, 3460553, 3461577, 3510347, 3546604, 3552364, 3556524, 3576461, 3586349, 3588141, 3590797, 3596333, 3622062, 3625454, 3627054, 3675728, 3749042, 3771059, 3771571, 3776211, 3782323, 3782963, 3784883, 3785395, 3788979, 3815476, 3839605, 3885110, 3917911, 3948984, 3951096, 135304769, 135858241, 136498210, 136906434, 137138658, 137512995, 137531875, 137548067, 137629283, 137645539, 137646563, 137775779, 138529956, 138615076, 139040932, 140954086, 141179366, 141690439, 142738600, 143013512, 146979116, 147175724, 147475756, 147902637, 147936877, 148017645, 148131885, 148228141, 148229165, 148309165, 148395629, 148551853, 148618829, 149076462, 149490158, 149572782, 151277616, 151639440, 153268914, 153486514, 153563314, 153750706, 153763314, 153914034, 154406067, 154417459, 154600979, 154678323, 154680979, 154866835, 155366708, 155375188, 155391572, 155465780, 155869364, 158045494, 168988979, 169321621, 169652752, 173151309, 174240818, 174247297, 174669292, 175391532, 176638123, 177380397, 177879204, 177886734, 180753473, 181020073, 181503558, 181686320, 181999237, 181999311, 182048201, 182074866, 182078003, 182083764, 182920847, 184716457, 184976961, 185145071, 187281445, 187872052, 188100653, 188875944, 188919873, 188920457, 189203987, 189371817, 189414886, 189567458, 190266670, 191318187, 191337609, 202479203, 202493027, 202835587, 202843747, 203013219, 203036048, 203045987, 203177552, 203898516, 204648562, 205067918, 205078130, 205096654, 205689142, 205690439, 205988909, 207213161, 207794484, 207800999, 208023602, 208213644, 208213647, 210261490, 210310273, 210940978, 213325049, 213946445, 214055079, 215125040, 215134273, 215135028, 215237420, 215418148, 215553166, 215553394, 215563858, 215627949, 215754324, 217529652, 217713834, 217732628, 218731945, 221417045, 221424946, 221493746, 221515401, 221658189, 221844577, 221908140, 221910626, 221921586, 222659762, 225001091, 236105833, 236113965, 236194995, 236195427, 236206132, 236206387, 236211683, 236212707, 236381647, 236571826, 237124271, 238172205, 238210544, 238270764, 238435405, 238501172, 239224867, 239257644, 239710497, 240307721, 241208789, 241241557, 241318060, 241319404, 241343533, 241344069, 241405397, 241765845, 243864964, 244502085, 244946220, 245109902, 247647266, 247707956, 248648814, 248648836, 248682161, 248986932, 249058914, 249697357, 252132601, 252135604, 252317348, 255007012, 255278388, 256365156, 257566121, 269763372, 271202790, 271863856, 272049197, 272127474, 272770631, 274339449, 274939471, 275388004, 275388005, 275388006, 275977800, 278267602, 278513831, 278712622, 281613765, 281683369, 282120228, 282250732, 282508942, 283743649, 283787570, 284710386, 285391148, 285478533, 285854898, 285873762, 286931113, 288964227, 289445441, 289689648, 291671489, 303512884, 305319975, 305610036, 305764101, 308448294, 308675890, 312085683, 312264750, 315032867, 316391000, 317331042, 317902135, 318950711, 319447220, 321499182, 322538804, 323145200, 337067316, 337826293, 339905989, 340833697, 341457068, 345302593, 349554733, 349771471, 349786245, 350819405, 356072847, 370349192, 373962798, 375558638, 375574835, 376053993, 383276530, 383373833, 383407586, 384439906, 386079012, 404133513, 404307343, 407031852, 408072233, 409112005, 409608425, 409771500, 419040932, 437730612, 439529766, 442616365, 442813037, 443157674, 443295316, 450118444, 450482697, 456789668, 459935396, 471217869, 474073645, 476230702, 476665218, 476717289, 483014825, 485083298, 489306281, 538364390, 540675748, 543819186, 543958612, 576960820, 577242548, 610515252, 642202932, 644420819 }; void nsHtml5ElementName::initializeStatics() { @@ -190,7 +190,7 @@ nsHtml5ElementName::initializeStatics() ELT_COT = new nsHtml5ElementName(nsHtml5Atoms::cot, nsHtml5Atoms::cot, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_DEL = new nsHtml5ElementName(nsHtml5Atoms::del, nsHtml5Atoms::del, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_DFN = new nsHtml5ElementName(nsHtml5Atoms::dfn, nsHtml5Atoms::dfn, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELT_DIR = new nsHtml5ElementName(nsHtml5Atoms::dir, nsHtml5Atoms::dir, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_DIR = new nsHtml5ElementName(nsHtml5Atoms::dir, nsHtml5Atoms::dir, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); ELT_DIV = new nsHtml5ElementName(nsHtml5Atoms::div, nsHtml5Atoms::div, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, PR_TRUE, PR_FALSE, PR_FALSE); ELT_EXP = new nsHtml5ElementName(nsHtml5Atoms::exp, nsHtml5Atoms::exp, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_GCD = new nsHtml5ElementName(nsHtml5Atoms::gcd, nsHtml5Atoms::gcd, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); @@ -209,7 +209,7 @@ nsHtml5ElementName::initializeStatics() ELT_MAX = new nsHtml5ElementName(nsHtml5Atoms::max, nsHtml5Atoms::max, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_NEQ = new nsHtml5ElementName(nsHtml5Atoms::neq, nsHtml5Atoms::neq, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_NOT = new nsHtml5ElementName(nsHtml5Atoms::not_, nsHtml5Atoms::not_, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELT_NAV = new nsHtml5ElementName(nsHtml5Atoms::nav, nsHtml5Atoms::nav, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_NAV = new nsHtml5ElementName(nsHtml5Atoms::nav, nsHtml5Atoms::nav, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); ELT_PRE = new nsHtml5ElementName(nsHtml5Atoms::pre, nsHtml5Atoms::pre, NS_HTML5TREE_BUILDER_PRE_OR_LISTING, PR_TRUE, PR_FALSE, PR_FALSE); ELT_REM = new nsHtml5ElementName(nsHtml5Atoms::rem, nsHtml5Atoms::rem, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_SUB = new nsHtml5ElementName(nsHtml5Atoms::sub, nsHtml5Atoms::sub, NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, PR_FALSE, PR_FALSE, PR_FALSE); @@ -282,7 +282,7 @@ nsHtml5ElementName::initializeStatics() ELT_TANH = new nsHtml5ElementName(nsHtml5Atoms::tanh, nsHtml5Atoms::tanh, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_TEXT = new nsHtml5ElementName(nsHtml5Atoms::text, nsHtml5Atoms::text, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_VIEW = new nsHtml5ElementName(nsHtml5Atoms::view, nsHtml5Atoms::view, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELT_ASIDE = new nsHtml5ElementName(nsHtml5Atoms::aside, nsHtml5Atoms::aside, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_ASIDE = new nsHtml5ElementName(nsHtml5Atoms::aside, nsHtml5Atoms::aside, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); ELT_AUDIO = new nsHtml5ElementName(nsHtml5Atoms::audio, nsHtml5Atoms::audio, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_APPLY = new nsHtml5ElementName(nsHtml5Atoms::apply, nsHtml5Atoms::apply, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_EMBED = new nsHtml5ElementName(nsHtml5Atoms::embed, nsHtml5Atoms::embed, NS_HTML5TREE_BUILDER_EMBED_OR_IMG, PR_TRUE, PR_FALSE, PR_FALSE); @@ -336,15 +336,15 @@ nsHtml5ElementName::initializeStatics() ELT_CANVAS = new nsHtml5ElementName(nsHtml5Atoms::canvas, nsHtml5Atoms::canvas, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_DIVIDE = new nsHtml5ElementName(nsHtml5Atoms::divide, nsHtml5Atoms::divide, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_DEGREE = new nsHtml5ElementName(nsHtml5Atoms::degree, nsHtml5Atoms::degree, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELT_DIALOG = new nsHtml5ElementName(nsHtml5Atoms::dialog, nsHtml5Atoms::dialog, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); ELT_DOMAIN = new nsHtml5ElementName(nsHtml5Atoms::domain, nsHtml5Atoms::domain, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_EXISTS = new nsHtml5ElementName(nsHtml5Atoms::exists, nsHtml5Atoms::exists, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_FETILE = new nsHtml5ElementName(nsHtml5Atoms::fetile, nsHtml5Atoms::feTile, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELT_FIGURE = new nsHtml5ElementName(nsHtml5Atoms::figure, nsHtml5Atoms::figure, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_FIGURE = new nsHtml5ElementName(nsHtml5Atoms::figure, nsHtml5Atoms::figure, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); ELT_FORALL = new nsHtml5ElementName(nsHtml5Atoms::forall, nsHtml5Atoms::forall, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_FILTER = new nsHtml5ElementName(nsHtml5Atoms::filter, nsHtml5Atoms::filter, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELT_FOOTER = new nsHtml5ElementName(nsHtml5Atoms::footer, nsHtml5Atoms::footer, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); - ELT_HEADER = new nsHtml5ElementName(nsHtml5Atoms::header, nsHtml5Atoms::header, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_FOOTER = new nsHtml5ElementName(nsHtml5Atoms::footer, nsHtml5Atoms::footer, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_HGROUP = new nsHtml5ElementName(nsHtml5Atoms::hgroup, nsHtml5Atoms::hgroup, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_HEADER = new nsHtml5ElementName(nsHtml5Atoms::header, nsHtml5Atoms::header, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); ELT_IFRAME = new nsHtml5ElementName(nsHtml5Atoms::iframe, nsHtml5Atoms::iframe, NS_HTML5TREE_BUILDER_IFRAME, PR_TRUE, PR_FALSE, PR_FALSE); ELT_KEYGEN = new nsHtml5ElementName(nsHtml5Atoms::keygen, nsHtml5Atoms::keygen, NS_HTML5TREE_BUILDER_KEYGEN, PR_TRUE, PR_FALSE, PR_FALSE); ELT_LAMBDA = new nsHtml5ElementName(nsHtml5Atoms::lambda, nsHtml5Atoms::lambda, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); @@ -374,7 +374,7 @@ nsHtml5ElementName::initializeStatics() ELT_SCRIPT = new nsHtml5ElementName(nsHtml5Atoms::script, nsHtml5Atoms::script, NS_HTML5TREE_BUILDER_SCRIPT, PR_TRUE, PR_FALSE, PR_FALSE); ELT_TBREAK = new nsHtml5ElementName(nsHtml5Atoms::tbreak, nsHtml5Atoms::tbreak, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_VECTOR = new nsHtml5ElementName(nsHtml5Atoms::vector, nsHtml5Atoms::vector, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELT_ARTICLE = new nsHtml5ElementName(nsHtml5Atoms::article, nsHtml5Atoms::article, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_ARTICLE = new nsHtml5ElementName(nsHtml5Atoms::article, nsHtml5Atoms::article, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); ELT_ANIMATE = new nsHtml5ElementName(nsHtml5Atoms::animate, nsHtml5Atoms::animate, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_ARCSECH = new nsHtml5ElementName(nsHtml5Atoms::arcsech, nsHtml5Atoms::arcsech, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_ARCCSCH = new nsHtml5ElementName(nsHtml5Atoms::arccsch, nsHtml5Atoms::arccsch, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); @@ -383,16 +383,16 @@ nsHtml5ElementName::initializeStatics() ELT_ARCCOSH = new nsHtml5ElementName(nsHtml5Atoms::arccosh, nsHtml5Atoms::arccosh, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_ARCCOTH = new nsHtml5ElementName(nsHtml5Atoms::arccoth, nsHtml5Atoms::arccoth, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_ACRONYM = new nsHtml5ElementName(nsHtml5Atoms::acronym, nsHtml5Atoms::acronym, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELT_ADDRESS = new nsHtml5ElementName(nsHtml5Atoms::address, nsHtml5Atoms::address, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_ADDRESS = new nsHtml5ElementName(nsHtml5Atoms::address, nsHtml5Atoms::address, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); ELT_BGSOUND = new nsHtml5ElementName(nsHtml5Atoms::bgsound, nsHtml5Atoms::bgsound, NS_HTML5TREE_BUILDER_AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, PR_TRUE, PR_FALSE, PR_FALSE); - ELT_COMMAND = new nsHtml5ElementName(nsHtml5Atoms::command, nsHtml5Atoms::command, NS_HTML5TREE_BUILDER_COMMAND_OR_EVENT_SOURCE, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_COMMAND = new nsHtml5ElementName(nsHtml5Atoms::command, nsHtml5Atoms::command, NS_HTML5TREE_BUILDER_COMMAND, PR_TRUE, PR_FALSE, PR_FALSE); ELT_COMPOSE = new nsHtml5ElementName(nsHtml5Atoms::compose, nsHtml5Atoms::compose, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_CEILING = new nsHtml5ElementName(nsHtml5Atoms::ceiling, nsHtml5Atoms::ceiling, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_CSYMBOL = new nsHtml5ElementName(nsHtml5Atoms::csymbol, nsHtml5Atoms::csymbol, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_CAPTION = new nsHtml5ElementName(nsHtml5Atoms::caption, nsHtml5Atoms::caption, NS_HTML5TREE_BUILDER_CAPTION, PR_FALSE, PR_TRUE, PR_FALSE); ELT_DISCARD = new nsHtml5ElementName(nsHtml5Atoms::discard, nsHtml5Atoms::discard, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_DECLARE = new nsHtml5ElementName(nsHtml5Atoms::declare, nsHtml5Atoms::declare, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELT_DETAILS = new nsHtml5ElementName(nsHtml5Atoms::details, nsHtml5Atoms::details, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_DETAILS = new nsHtml5ElementName(nsHtml5Atoms::details, nsHtml5Atoms::details, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); ELT_ELLIPSE = new nsHtml5ElementName(nsHtml5Atoms::ellipse, nsHtml5Atoms::ellipse, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_FEFUNCA = new nsHtml5ElementName(nsHtml5Atoms::fefunca, nsHtml5Atoms::feFuncA, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_FEFUNCB = new nsHtml5ElementName(nsHtml5Atoms::fefuncb, nsHtml5Atoms::feFuncB, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); @@ -418,7 +418,7 @@ nsHtml5ElementName::initializeStatics() ELT_PATTERN = new nsHtml5ElementName(nsHtml5Atoms::pattern, nsHtml5Atoms::pattern, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_PRODUCT = new nsHtml5ElementName(nsHtml5Atoms::product, nsHtml5Atoms::product, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_SETDIFF = new nsHtml5ElementName(nsHtml5Atoms::setdiff, nsHtml5Atoms::setdiff, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELT_SECTION = new nsHtml5ElementName(nsHtml5Atoms::section, nsHtml5Atoms::section, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_SECTION = new nsHtml5ElementName(nsHtml5Atoms::section, nsHtml5Atoms::section, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); ELT_TENDSTO = new nsHtml5ElementName(nsHtml5Atoms::tendsto, nsHtml5Atoms::tendsto, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_UPLIMIT = new nsHtml5ElementName(nsHtml5Atoms::uplimit, nsHtml5Atoms::uplimit, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_ALTGLYPH = new nsHtml5ElementName(nsHtml5Atoms::altglyph, nsHtml5Atoms::altGlyph, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); @@ -426,7 +426,7 @@ nsHtml5ElementName::initializeStatics() ELT_CLIPPATH = new nsHtml5ElementName(nsHtml5Atoms::clippath, nsHtml5Atoms::clipPath, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_CODOMAIN = new nsHtml5ElementName(nsHtml5Atoms::codomain, nsHtml5Atoms::codomain, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_COLGROUP = new nsHtml5ElementName(nsHtml5Atoms::colgroup, nsHtml5Atoms::colgroup, NS_HTML5TREE_BUILDER_COLGROUP, PR_TRUE, PR_FALSE, PR_FALSE); - ELT_DATAGRID = new nsHtml5ElementName(nsHtml5Atoms::datagrid, nsHtml5Atoms::datagrid, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); + ELT_DATAGRID = new nsHtml5ElementName(nsHtml5Atoms::datagrid, nsHtml5Atoms::datagrid, NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, PR_TRUE, PR_FALSE, PR_FALSE); ELT_EMPTYSET = new nsHtml5ElementName(nsHtml5Atoms::emptyset, nsHtml5Atoms::emptyset, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_FACTOROF = new nsHtml5ElementName(nsHtml5Atoms::factorof, nsHtml5Atoms::factorof, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_FIELDSET = new nsHtml5ElementName(nsHtml5Atoms::fieldset, nsHtml5Atoms::fieldset, NS_HTML5TREE_BUILDER_FIELDSET, PR_TRUE, PR_FALSE, PR_FALSE); @@ -483,7 +483,6 @@ nsHtml5ElementName::initializeStatics() ELT_SOLIDCOLOR = new nsHtml5ElementName(nsHtml5Atoms::solidcolor, nsHtml5Atoms::solidcolor, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_ALTGLYPHDEF = new nsHtml5ElementName(nsHtml5Atoms::altglyphdef, nsHtml5Atoms::altGlyphDef, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_DETERMINANT = new nsHtml5ElementName(nsHtml5Atoms::determinant, nsHtml5Atoms::determinant, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELT_EVENTSOURCE = new nsHtml5ElementName(nsHtml5Atoms::eventsource, nsHtml5Atoms::eventsource, NS_HTML5TREE_BUILDER_COMMAND_OR_EVENT_SOURCE, PR_TRUE, PR_FALSE, PR_FALSE); ELT_FEMERGENODE = new nsHtml5ElementName(nsHtml5Atoms::femergenode, nsHtml5Atoms::feMergeNode, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_FECOMPOSITE = new nsHtml5ElementName(nsHtml5Atoms::fecomposite, nsHtml5Atoms::feComposite, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_FESPOTLIGHT = new nsHtml5ElementName(nsHtml5Atoms::fespotlight, nsHtml5Atoms::feSpotLight, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); @@ -527,7 +526,7 @@ nsHtml5ElementName::initializeStatics() ELT_FESPECULARLIGHTING = new nsHtml5ElementName(nsHtml5Atoms::fespecularlighting, nsHtml5Atoms::feSpecularLighting, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_DOMAINOFAPPLICATION = new nsHtml5ElementName(nsHtml5Atoms::domainofapplication, nsHtml5Atoms::domainofapplication, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); ELT_FECOMPONENTTRANSFER = new nsHtml5ElementName(nsHtml5Atoms::fecomponenttransfer, nsHtml5Atoms::feComponentTransfer, NS_HTML5TREE_BUILDER_OTHER, PR_FALSE, PR_FALSE, PR_FALSE); - ELEMENT_NAMES = new nsHtml5ElementName*[391]; + ELEMENT_NAMES = new nsHtml5ElementName*[390]; ELEMENT_NAMES[0] = ELT_A; ELEMENT_NAMES[1] = ELT_B; ELEMENT_NAMES[2] = ELT_G; @@ -728,14 +727,14 @@ nsHtml5ElementName::initializeStatics() ELEMENT_NAMES[197] = ELT_CANVAS; ELEMENT_NAMES[198] = ELT_DIVIDE; ELEMENT_NAMES[199] = ELT_DEGREE; - ELEMENT_NAMES[200] = ELT_DIALOG; - ELEMENT_NAMES[201] = ELT_DOMAIN; - ELEMENT_NAMES[202] = ELT_EXISTS; - ELEMENT_NAMES[203] = ELT_FETILE; - ELEMENT_NAMES[204] = ELT_FIGURE; - ELEMENT_NAMES[205] = ELT_FORALL; - ELEMENT_NAMES[206] = ELT_FILTER; - ELEMENT_NAMES[207] = ELT_FOOTER; + ELEMENT_NAMES[200] = ELT_DOMAIN; + ELEMENT_NAMES[201] = ELT_EXISTS; + ELEMENT_NAMES[202] = ELT_FETILE; + ELEMENT_NAMES[203] = ELT_FIGURE; + ELEMENT_NAMES[204] = ELT_FORALL; + ELEMENT_NAMES[205] = ELT_FILTER; + ELEMENT_NAMES[206] = ELT_FOOTER; + ELEMENT_NAMES[207] = ELT_HGROUP; ELEMENT_NAMES[208] = ELT_HEADER; ELEMENT_NAMES[209] = ELT_IFRAME; ELEMENT_NAMES[210] = ELT_KEYGEN; @@ -875,51 +874,50 @@ nsHtml5ElementName::initializeStatics() ELEMENT_NAMES[344] = ELT_SOLIDCOLOR; ELEMENT_NAMES[345] = ELT_ALTGLYPHDEF; ELEMENT_NAMES[346] = ELT_DETERMINANT; - ELEMENT_NAMES[347] = ELT_EVENTSOURCE; - ELEMENT_NAMES[348] = ELT_FEMERGENODE; - ELEMENT_NAMES[349] = ELT_FECOMPOSITE; - ELEMENT_NAMES[350] = ELT_FESPOTLIGHT; - ELEMENT_NAMES[351] = ELT_MALIGNGROUP; - ELEMENT_NAMES[352] = ELT_MPRESCRIPTS; - ELEMENT_NAMES[353] = ELT_MOMENTABOUT; - ELEMENT_NAMES[354] = ELT_NOTPRSUBSET; - ELEMENT_NAMES[355] = ELT_PARTIALDIFF; - ELEMENT_NAMES[356] = ELT_ALTGLYPHITEM; - ELEMENT_NAMES[357] = ELT_ANIMATECOLOR; - ELEMENT_NAMES[358] = ELT_DATATEMPLATE; - ELEMENT_NAMES[359] = ELT_EXPONENTIALE; - ELEMENT_NAMES[360] = ELT_FETURBULENCE; - ELEMENT_NAMES[361] = ELT_FEPOINTLIGHT; - ELEMENT_NAMES[362] = ELT_FEMORPHOLOGY; - ELEMENT_NAMES[363] = ELT_OUTERPRODUCT; - ELEMENT_NAMES[364] = ELT_ANIMATEMOTION; - ELEMENT_NAMES[365] = ELT_COLOR_PROFILE; - ELEMENT_NAMES[366] = ELT_FONT_FACE_SRC; - ELEMENT_NAMES[367] = ELT_FONT_FACE_URI; - ELEMENT_NAMES[368] = ELT_FOREIGNOBJECT; - ELEMENT_NAMES[369] = ELT_FECOLORMATRIX; - ELEMENT_NAMES[370] = ELT_MISSING_GLYPH; - ELEMENT_NAMES[371] = ELT_MMULTISCRIPTS; - ELEMENT_NAMES[372] = ELT_SCALARPRODUCT; - ELEMENT_NAMES[373] = ELT_VECTORPRODUCT; - ELEMENT_NAMES[374] = ELT_ANNOTATION_XML; - ELEMENT_NAMES[375] = ELT_DEFINITION_SRC; - ELEMENT_NAMES[376] = ELT_FONT_FACE_NAME; - ELEMENT_NAMES[377] = ELT_FEGAUSSIANBLUR; - ELEMENT_NAMES[378] = ELT_FEDISTANTLIGHT; - ELEMENT_NAMES[379] = ELT_LINEARGRADIENT; - ELEMENT_NAMES[380] = ELT_NATURALNUMBERS; - ELEMENT_NAMES[381] = ELT_RADIALGRADIENT; - ELEMENT_NAMES[382] = ELT_ANIMATETRANSFORM; - ELEMENT_NAMES[383] = ELT_CARTESIANPRODUCT; - ELEMENT_NAMES[384] = ELT_FONT_FACE_FORMAT; - ELEMENT_NAMES[385] = ELT_FECONVOLVEMATRIX; - ELEMENT_NAMES[386] = ELT_FEDIFFUSELIGHTING; - ELEMENT_NAMES[387] = ELT_FEDISPLACEMENTMAP; - ELEMENT_NAMES[388] = ELT_FESPECULARLIGHTING; - ELEMENT_NAMES[389] = ELT_DOMAINOFAPPLICATION; - ELEMENT_NAMES[390] = ELT_FECOMPONENTTRANSFER; - ELEMENT_HASHES = jArray((PRInt32*)ELEMENT_HASHES_DATA, 391); + ELEMENT_NAMES[347] = ELT_FEMERGENODE; + ELEMENT_NAMES[348] = ELT_FECOMPOSITE; + ELEMENT_NAMES[349] = ELT_FESPOTLIGHT; + ELEMENT_NAMES[350] = ELT_MALIGNGROUP; + ELEMENT_NAMES[351] = ELT_MPRESCRIPTS; + ELEMENT_NAMES[352] = ELT_MOMENTABOUT; + ELEMENT_NAMES[353] = ELT_NOTPRSUBSET; + ELEMENT_NAMES[354] = ELT_PARTIALDIFF; + ELEMENT_NAMES[355] = ELT_ALTGLYPHITEM; + ELEMENT_NAMES[356] = ELT_ANIMATECOLOR; + ELEMENT_NAMES[357] = ELT_DATATEMPLATE; + ELEMENT_NAMES[358] = ELT_EXPONENTIALE; + ELEMENT_NAMES[359] = ELT_FETURBULENCE; + ELEMENT_NAMES[360] = ELT_FEPOINTLIGHT; + ELEMENT_NAMES[361] = ELT_FEMORPHOLOGY; + ELEMENT_NAMES[362] = ELT_OUTERPRODUCT; + ELEMENT_NAMES[363] = ELT_ANIMATEMOTION; + ELEMENT_NAMES[364] = ELT_COLOR_PROFILE; + ELEMENT_NAMES[365] = ELT_FONT_FACE_SRC; + ELEMENT_NAMES[366] = ELT_FONT_FACE_URI; + ELEMENT_NAMES[367] = ELT_FOREIGNOBJECT; + ELEMENT_NAMES[368] = ELT_FECOLORMATRIX; + ELEMENT_NAMES[369] = ELT_MISSING_GLYPH; + ELEMENT_NAMES[370] = ELT_MMULTISCRIPTS; + ELEMENT_NAMES[371] = ELT_SCALARPRODUCT; + ELEMENT_NAMES[372] = ELT_VECTORPRODUCT; + ELEMENT_NAMES[373] = ELT_ANNOTATION_XML; + ELEMENT_NAMES[374] = ELT_DEFINITION_SRC; + ELEMENT_NAMES[375] = ELT_FONT_FACE_NAME; + ELEMENT_NAMES[376] = ELT_FEGAUSSIANBLUR; + ELEMENT_NAMES[377] = ELT_FEDISTANTLIGHT; + ELEMENT_NAMES[378] = ELT_LINEARGRADIENT; + ELEMENT_NAMES[379] = ELT_NATURALNUMBERS; + ELEMENT_NAMES[380] = ELT_RADIALGRADIENT; + ELEMENT_NAMES[381] = ELT_ANIMATETRANSFORM; + ELEMENT_NAMES[382] = ELT_CARTESIANPRODUCT; + ELEMENT_NAMES[383] = ELT_FONT_FACE_FORMAT; + ELEMENT_NAMES[384] = ELT_FECONVOLVEMATRIX; + ELEMENT_NAMES[385] = ELT_FEDIFFUSELIGHTING; + ELEMENT_NAMES[386] = ELT_FEDISPLACEMENTMAP; + ELEMENT_NAMES[387] = ELT_FESPECULARLIGHTING; + ELEMENT_NAMES[388] = ELT_DOMAINOFAPPLICATION; + ELEMENT_NAMES[389] = ELT_FECOMPONENTTRANSFER; + ELEMENT_HASHES = jArray((PRInt32*)ELEMENT_HASHES_DATA, 390); } void @@ -1126,7 +1124,6 @@ nsHtml5ElementName::releaseStatics() delete ELT_CANVAS; delete ELT_DIVIDE; delete ELT_DEGREE; - delete ELT_DIALOG; delete ELT_DOMAIN; delete ELT_EXISTS; delete ELT_FETILE; @@ -1134,6 +1131,7 @@ nsHtml5ElementName::releaseStatics() delete ELT_FORALL; delete ELT_FILTER; delete ELT_FOOTER; + delete ELT_HGROUP; delete ELT_HEADER; delete ELT_IFRAME; delete ELT_KEYGEN; @@ -1273,7 +1271,6 @@ nsHtml5ElementName::releaseStatics() delete ELT_SOLIDCOLOR; delete ELT_ALTGLYPHDEF; delete ELT_DETERMINANT; - delete ELT_EVENTSOURCE; delete ELT_FEMERGENODE; delete ELT_FECOMPOSITE; delete ELT_FESPOTLIGHT; diff --git a/parser/html/nsHtml5ElementName.h b/parser/html/nsHtml5ElementName.h index 08865a877175..bff02370f585 100644 --- a/parser/html/nsHtml5ElementName.h +++ b/parser/html/nsHtml5ElementName.h @@ -278,7 +278,6 @@ class nsHtml5ElementName static nsHtml5ElementName* ELT_CANVAS; static nsHtml5ElementName* ELT_DIVIDE; static nsHtml5ElementName* ELT_DEGREE; - static nsHtml5ElementName* ELT_DIALOG; static nsHtml5ElementName* ELT_DOMAIN; static nsHtml5ElementName* ELT_EXISTS; static nsHtml5ElementName* ELT_FETILE; @@ -286,6 +285,7 @@ class nsHtml5ElementName static nsHtml5ElementName* ELT_FORALL; static nsHtml5ElementName* ELT_FILTER; static nsHtml5ElementName* ELT_FOOTER; + static nsHtml5ElementName* ELT_HGROUP; static nsHtml5ElementName* ELT_HEADER; static nsHtml5ElementName* ELT_IFRAME; static nsHtml5ElementName* ELT_KEYGEN; @@ -425,7 +425,6 @@ class nsHtml5ElementName static nsHtml5ElementName* ELT_SOLIDCOLOR; static nsHtml5ElementName* ELT_ALTGLYPHDEF; static nsHtml5ElementName* ELT_DETERMINANT; - static nsHtml5ElementName* ELT_EVENTSOURCE; static nsHtml5ElementName* ELT_FEMERGENODE; static nsHtml5ElementName* ELT_FECOMPOSITE; static nsHtml5ElementName* ELT_FESPOTLIGHT; @@ -679,7 +678,6 @@ nsHtml5ElementName* nsHtml5ElementName::ELT_CURSOR = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_CANVAS = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_DIVIDE = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_DEGREE = nsnull; -nsHtml5ElementName* nsHtml5ElementName::ELT_DIALOG = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_DOMAIN = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_EXISTS = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_FETILE = nsnull; @@ -687,6 +685,7 @@ nsHtml5ElementName* nsHtml5ElementName::ELT_FIGURE = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_FORALL = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_FILTER = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_FOOTER = nsnull; +nsHtml5ElementName* nsHtml5ElementName::ELT_HGROUP = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_HEADER = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_IFRAME = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_KEYGEN = nsnull; @@ -826,7 +825,6 @@ nsHtml5ElementName* nsHtml5ElementName::ELT_NOTANUMBER = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_SOLIDCOLOR = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_ALTGLYPHDEF = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_DETERMINANT = nsnull; -nsHtml5ElementName* nsHtml5ElementName::ELT_EVENTSOURCE = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_FEMERGENODE = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_FECOMPOSITE = nsnull; nsHtml5ElementName* nsHtml5ElementName::ELT_FESPOTLIGHT = nsnull; diff --git a/parser/html/nsHtml5TreeBuilder.cpp b/parser/html/nsHtml5TreeBuilder.cpp index d681da78588a..fb941bb674b1 100644 --- a/parser/html/nsHtml5TreeBuilder.cpp +++ b/parser/html/nsHtml5TreeBuilder.cpp @@ -209,7 +209,7 @@ nsHtml5TreeBuilder::characters(PRUnichar* buf, PRInt32 start, PRInt32 length) case NS_HTML5TREE_BUILDER_IN_CAPTION: { reconstructTheActiveFormattingElements(); } - case NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA: { + case NS_HTML5TREE_BUILDER_TEXT: { accumulateCharacters(buf, start, length); return; } @@ -495,7 +495,7 @@ nsHtml5TreeBuilder::eof() case NS_HTML5TREE_BUILDER_IN_BODY: { goto eofloop_end; } - case NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA: { + case NS_HTML5TREE_BUILDER_TEXT: { if (originalMode == NS_HTML5TREE_BUILDER_AFTER_HEAD) { popOnEof(); @@ -769,7 +769,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_STYLE: { appendToCurrentNodeAndPushElement(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); attributes = nsnull; goto starttagloop_end; @@ -783,6 +783,12 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nsnull; goto starttagloop_end; } + case NS_HTML5TREE_BUILDER_FORM: { + + appendVoidElementToCurrent(kNameSpaceID_XHTML, name, attributes); + attributes = nsnull; + goto starttagloop_end; + } default: { goto intableloop_end; @@ -904,7 +910,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_STYLE: case NS_HTML5TREE_BUILDER_SCRIPT: case NS_HTML5TREE_BUILDER_TITLE: - case NS_HTML5TREE_BUILDER_COMMAND_OR_EVENT_SOURCE: { + case NS_HTML5TREE_BUILDER_COMMAND: { goto inbodyloop_end; } case NS_HTML5TREE_BUILDER_BODY: { @@ -916,7 +922,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_P: case NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU: case NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL: - case NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION: { + case NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION: { implicitlyCloseP(); appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, elementName, attributes); attributes = nsnull; @@ -1058,15 +1064,6 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes = nsnull; goto starttagloop_end; } - case NS_HTML5TREE_BUILDER_XMP: { - reconstructTheActiveFormattingElements(); - appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, elementName, attributes); - originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; - tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); - attributes = nsnull; - goto starttagloop_end; - } case NS_HTML5TREE_BUILDER_TABLE: { if (!quirks) { implicitlyCloseP(); @@ -1120,7 +1117,6 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } appendToCurrentNodeAndPushFormElementMayFoster(formAttrs); appendVoidElementToCurrentMayFoster(kNameSpaceID_XHTML, nsHtml5ElementName::ELT_HR, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); - appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, nsHtml5ElementName::ELT_P, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, nsHtml5ElementName::ELT_LABEL, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); PRInt32 promptIndex = attributes->getIndex(nsHtml5AttributeName::ATTR_PROMPT); if (promptIndex > -1) { @@ -1143,7 +1139,6 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu attributes->clearWithoutReleasingContents(); appendVoidElementToCurrentMayFoster(kNameSpaceID_XHTML, nsHtml5Atoms::input, inputAttributes, formPointer); pop(); - pop(); appendVoidElementToCurrentMayFoster(kNameSpaceID_XHTML, nsHtml5ElementName::ELT_HR, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES); pop(); selfClosing = PR_FALSE; @@ -1156,11 +1151,21 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, elementName, attributes, formPointer); tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_RCDATA, elementName); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; needToDropLF = PR_TRUE; attributes = nsnull; goto starttagloop_end; } + case NS_HTML5TREE_BUILDER_XMP: { + implicitlyCloseP(); + reconstructTheActiveFormattingElements(); + appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, elementName, attributes); + originalMode = mode; + mode = NS_HTML5TREE_BUILDER_TEXT; + tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); + attributes = nsnull; + goto starttagloop_end; + } case NS_HTML5TREE_BUILDER_NOSCRIPT: { if (!scriptingEnabled) { reconstructTheActiveFormattingElements(); @@ -1175,7 +1180,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_NOEMBED: { appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); attributes = nsnull; goto starttagloop_end; @@ -1310,7 +1315,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu goto starttagloop_end; } case NS_HTML5TREE_BUILDER_BASE: - case NS_HTML5TREE_BUILDER_COMMAND_OR_EVENT_SOURCE: { + case NS_HTML5TREE_BUILDER_COMMAND: { appendVoidElementToCurrentMayFoster(kNameSpaceID_XHTML, elementName, attributes); selfClosing = PR_FALSE; attributes = nsnull; @@ -1323,7 +1328,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_TITLE: { appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_RCDATA, elementName); attributes = nsnull; goto starttagloop_end; @@ -1332,7 +1337,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu if (scriptingEnabled) { appendToCurrentNodeAndPushElement(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); } else { appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, elementName, attributes); @@ -1346,7 +1351,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_NOFRAMES: { appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); attributes = nsnull; goto starttagloop_end; @@ -1389,7 +1394,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_NOFRAMES: { appendToCurrentNodeAndPushElement(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); attributes = nsnull; goto starttagloop_end; @@ -1444,7 +1449,15 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_TD_OR_TH: case NS_HTML5TREE_BUILDER_TABLE: { - endSelect(); + eltPos = findLastInTableScope(nsHtml5Atoms::select); + if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + + goto starttagloop_end; + } + while (currentPtr >= eltPos) { + pop(); + } + resetTheInsertionMode(); continue; } default: @@ -1494,15 +1507,24 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } } case NS_HTML5TREE_BUILDER_INPUT: - case NS_HTML5TREE_BUILDER_TEXTAREA: { + case NS_HTML5TREE_BUILDER_TEXTAREA: + case NS_HTML5TREE_BUILDER_KEYGEN: { - endSelect(); + eltPos = findLastInTableScope(nsHtml5Atoms::select); + if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + + goto starttagloop_end; + } + while (currentPtr >= eltPos) { + pop(); + } + resetTheInsertionMode(); continue; } case NS_HTML5TREE_BUILDER_SCRIPT: { appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); attributes = nsnull; goto starttagloop_end; @@ -1556,7 +1578,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_NOFRAMES: { appendToCurrentNodeAndPushElement(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); attributes = nsnull; goto starttagloop_end; @@ -1626,7 +1648,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu } else { appendToCurrentNodeAndPushBodyElement(attributes); } - mode = NS_HTML5TREE_BUILDER_FRAMESET_OK; + mode = NS_HTML5TREE_BUILDER_IN_BODY; attributes = nsnull; goto starttagloop_end; } @@ -1669,7 +1691,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu pushHeadPointerOntoStack(); appendToCurrentNodeAndPushElement(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); attributes = nsnull; goto starttagloop_end; @@ -1680,7 +1702,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu pushHeadPointerOntoStack(); appendToCurrentNodeAndPushElement(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); attributes = nsnull; goto starttagloop_end; @@ -1690,7 +1712,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu pushHeadPointerOntoStack(); appendToCurrentNodeAndPushElement(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_RCDATA, elementName); attributes = nsnull; goto starttagloop_end; @@ -1727,7 +1749,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_NOFRAMES: { appendToCurrentNodeAndPushElementMayFoster(kNameSpaceID_XHTML, elementName, attributes); originalMode = mode; - mode = NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA; + mode = NS_HTML5TREE_BUILDER_TEXT; tokenizer->setContentModelFlag(NS_HTML5TOKENIZER_CDATA, elementName); attributes = nsnull; goto starttagloop_end; @@ -2222,7 +2244,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) case NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL: case NS_HTML5TREE_BUILDER_PRE_OR_LISTING: case NS_HTML5TREE_BUILDER_FIELDSET: - case NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION: { + case NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION: { eltPos = findLastInScope(name); if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { @@ -2280,8 +2302,22 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } goto endtagloop_end; } - case NS_HTML5TREE_BUILDER_DD_OR_DT: case NS_HTML5TREE_BUILDER_LI: { + eltPos = findLastInListScope(name); + if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + + } else { + generateImpliedEndTagsExceptFor(name); + if (eltPos != currentPtr) { + + } + while (currentPtr >= eltPos) { + pop(); + } + } + goto endtagloop_end; + } + case NS_HTML5TREE_BUILDER_DD_OR_DT: { eltPos = findLastInScope(name); if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { @@ -2436,7 +2472,15 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) case NS_HTML5TREE_BUILDER_TD_OR_TH: { if (findLastInTableScope(name) != NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { - endSelect(); + eltPos = findLastInTableScope(nsHtml5Atoms::select); + if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + + goto endtagloop_end; + } + while (currentPtr >= eltPos) { + pop(); + } + resetTheInsertionMode(); continue; } else { goto endtagloop_end; @@ -2469,7 +2513,16 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) goto endtagloop_end; } case NS_HTML5TREE_BUILDER_SELECT: { - endSelect(); + eltPos = findLastInTableScope(nsHtml5Atoms::select); + if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { + + + goto endtagloop_end; + } + while (currentPtr >= eltPos) { + pop(); + } + resetTheInsertionMode(); goto endtagloop_end; } default: { @@ -2534,9 +2587,20 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) continue; } case NS_HTML5TREE_BUILDER_BEFORE_HTML: { - appendHtmlElementToDocumentAndPush(); - mode = NS_HTML5TREE_BUILDER_BEFORE_HEAD; - continue; + switch(group) { + case NS_HTML5TREE_BUILDER_HEAD: + case NS_HTML5TREE_BUILDER_BR: + case NS_HTML5TREE_BUILDER_HTML: + case NS_HTML5TREE_BUILDER_BODY: { + appendHtmlElementToDocumentAndPush(); + mode = NS_HTML5TREE_BUILDER_BEFORE_HEAD; + continue; + } + default: { + + goto endtagloop_end; + } + } } case NS_HTML5TREE_BUILDER_BEFORE_HEAD: { switch(group) { @@ -2618,7 +2682,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) mode = NS_HTML5TREE_BUILDER_IN_FRAMESET; continue; } - case NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA: { + case NS_HTML5TREE_BUILDER_TEXT: { if (originalMode == NS_HTML5TREE_BUILDER_AFTER_HEAD) { pop(); } @@ -2634,21 +2698,6 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) } } -void -nsHtml5TreeBuilder::endSelect() -{ - PRInt32 eltPos = findLastInTableScope(nsHtml5Atoms::select); - if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) { - - - return; - } - while (currentPtr >= eltPos) { - pop(); - } - resetTheInsertionMode(); -} - PRInt32 nsHtml5TreeBuilder::findLastInTableScopeOrRootTbodyTheadTfoot() { @@ -2697,6 +2746,19 @@ nsHtml5TreeBuilder::findLastInScope(nsIAtom* name) return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; } +PRInt32 +nsHtml5TreeBuilder::findLastInListScope(nsIAtom* name) +{ + for (PRInt32 i = currentPtr; i > 0; i--) { + if (stack[i]->name == name) { + return i; + } else if (stack[i]->scoping || stack[i]->name == nsHtml5Atoms::ul || stack[i]->name == nsHtml5Atoms::ol) { + return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; + } + } + return NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK; +} + PRInt32 nsHtml5TreeBuilder::findLastInScopeHn() { @@ -3601,6 +3663,18 @@ nsHtml5TreeBuilder::appendVoidElementToCurrent(PRInt32 ns, nsIAtom* name, nsHtml ; } +void +nsHtml5TreeBuilder::appendVoidElementToCurrent(PRInt32 ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes) +{ + flushCharacters(); + nsIContent** elt = createElement(ns, name, attributes); + nsHtml5StackNode* current = stack[currentPtr]; + appendElement(elt, current->node); + elementPushed(ns, name, elt); + elementPopped(ns, name, elt); + ; +} + void nsHtml5TreeBuilder::accumulateCharacter(PRUnichar c) { diff --git a/parser/html/nsHtml5TreeBuilder.h b/parser/html/nsHtml5TreeBuilder.h index 4799d346b20a..67c3a8f9fde8 100644 --- a/parser/html/nsHtml5TreeBuilder.h +++ b/parser/html/nsHtml5TreeBuilder.h @@ -110,11 +110,11 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState public: void endTag(nsHtml5ElementName* elementName); private: - void endSelect(); PRInt32 findLastInTableScopeOrRootTbodyTheadTfoot(); PRInt32 findLast(nsIAtom* name); PRInt32 findLastInTableScope(nsIAtom* name); PRInt32 findLastInScope(nsIAtom* name); + PRInt32 findLastInListScope(nsIAtom* name); PRInt32 findLastInScopeHn(); PRBool hasForeignInScope(); void generateImpliedEndTagsExceptFor(nsIAtom* name); @@ -177,6 +177,7 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState void appendVoidElementToCurrentMayFoster(PRInt32 ns, nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes); void appendVoidElementToCurrentMayFosterCamelCase(PRInt32 ns, nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes); void appendVoidElementToCurrent(PRInt32 ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContent** form); + void appendVoidElementToCurrent(PRInt32 ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes); protected: void accumulateCharacters(PRUnichar* buf, PRInt32 start, PRInt32 length); void accumulateCharacter(PRUnichar c); @@ -289,10 +290,10 @@ jArray nsHtml5TreeBuilder::QUIRKY_PUBLIC_IDS = nsnull; #define NS_HTML5TREE_BUILDER_EMBED_OR_IMG 48 #define NS_HTML5TREE_BUILDER_AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR 49 #define NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU 50 -#define NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION 51 +#define NS_HTML5TREE_BUILDER_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_HGROUP_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION 51 #define NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR 52 #define NS_HTML5TREE_BUILDER_RT_OR_RP 53 -#define NS_HTML5TREE_BUILDER_COMMAND_OR_EVENT_SOURCE 54 +#define NS_HTML5TREE_BUILDER_COMMAND 54 #define NS_HTML5TREE_BUILDER_PARAM_OR_SOURCE 55 #define NS_HTML5TREE_BUILDER_MGLYPH_OR_MALIGNMARK 56 #define NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT 57 @@ -324,7 +325,7 @@ jArray nsHtml5TreeBuilder::QUIRKY_PUBLIC_IDS = nsnull; #define NS_HTML5TREE_BUILDER_AFTER_FRAMESET 17 #define NS_HTML5TREE_BUILDER_AFTER_AFTER_BODY 18 #define NS_HTML5TREE_BUILDER_AFTER_AFTER_FRAMESET 19 -#define NS_HTML5TREE_BUILDER_IN_CDATA_RCDATA 20 +#define NS_HTML5TREE_BUILDER_TEXT 20 #define NS_HTML5TREE_BUILDER_FRAMESET_OK 21 #define NS_HTML5TREE_BUILDER_CHARSET_INITIAL 0 #define NS_HTML5TREE_BUILDER_CHARSET_C 1