Bug 1824121 - Implement the <search> element r=hsivonen,Jamie,emilio

Implemented the new <search> HTML element.
All WPT tests for it now pass (except one for iso-8859-8, not done generally).

A11y role uses just landmark as recommended instead of a new search role (for now).

Co-authored-by: Henri Sivonen <hsivonen@mozilla.com>

Differential Revision: https://phabricator.services.mozilla.com/D176967
This commit is contained in:
CanadaHonk 2023-08-07 22:11:05 +00:00
parent 7bf8670769
commit a117230132
19 changed files with 689 additions and 675 deletions

View File

@ -425,3 +425,5 @@ MARKUPMAP(
return new HTMLMeterAccessible(aElement, aContext->Document());
},
roles::METER)
MARKUPMAP(search, New_HyperText, roles::LANDMARK)

View File

@ -554,6 +554,10 @@ nsStaticAtom* Accessible::LandmarkRole() const {
}
}
if (tagName == nsGkAtoms::search) {
return nsGkAtoms::search;
}
const nsRoleMapEntry* roleMapEntry = ARIARoleMap();
return roleMapEntry && roleMapEntry->IsOfType(eLandmark)
? roleMapEntry->roleAtom

View File

@ -1328,6 +1328,16 @@
};
testElm("samp_container", obj);
// ////////////////////////////////////////////////////////////////////////
// HTML:search
obj = {
role: ROLE_LANDMARK,
attributes: { "xml-roles": "search" },
interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
};
testElm("search", obj);
// ////////////////////////////////////////////////////////////////////////
// HTML:section without an accessible name
@ -1991,6 +2001,7 @@
<p id="s_container">normal<s>Removed</s></p>
<p id="samp_container">normal<samp>sample</samp></p>
<search id="search">search</search>
<section id="section">section</section>
<section id="named_section" aria-label="foo">named section</section>
<p id="small_container">normal<small>small</small></p>

View File

@ -1201,7 +1201,7 @@ bool Element::CanAttachShadowDOM() const {
* If context object's local name is not
* a valid custom element name, "article", "aside", "blockquote",
* "body", "div", "footer", "h1", "h2", "h3", "h4", "h5", "h6",
* "header", "main" "nav", "p", "section", or "span",
* "header", "main" "nav", "p", "section", "search", or "span",
* return false.
*/
nsAtom* nameAtom = NodeInfo()->NameAtom();
@ -1215,7 +1215,8 @@ bool Element::CanAttachShadowDOM() const {
nameAtom == nsGkAtoms::h5 || nameAtom == nsGkAtoms::h6 ||
nameAtom == nsGkAtoms::header || nameAtom == nsGkAtoms::main ||
nameAtom == nsGkAtoms::nav || nameAtom == nsGkAtoms::p ||
nameAtom == nsGkAtoms::section || nameAtom == nsGkAtoms::span)) {
nameAtom == nsGkAtoms::section || nameAtom == nsGkAtoms::search ||
nameAtom == nsGkAtoms::span)) {
return false;
}

View File

@ -954,7 +954,7 @@ bool HTMLEditUtils::ShouldInsertLinefeedCharacter(
// address, applet, article, aside, blockquote, button, center, del, details,
// dialog, dir, div, dl, fieldset, figure, footer, form, h1, h2, h3, h4, h5,
// h6, header, hgroup, hr, iframe, ins, main, map, menu, nav, noframes,
// noscript, object, ol, p, pre, table, section, summary, ul
// noscript, object, ol, p, pre, table, search, section, summary, ul
#define GROUP_BLOCK (1 << 7)
// frame, frameset
@ -1155,6 +1155,7 @@ static const ElementInfo kElements[eHTMLTag_userdefined] = {
ELEM(s, true, true, GROUP_FONTSTYLE, GROUP_INLINE_ELEMENT),
ELEM(samp, true, true, GROUP_PHRASE, GROUP_INLINE_ELEMENT),
ELEM(script, true, false, GROUP_HEAD_CONTENT | GROUP_SPECIAL, GROUP_LEAF),
ELEM(search, true, true, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
ELEM(section, true, true, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
ELEM(select, true, false, GROUP_FORMCONTROL, GROUP_SELECT_CONTENT),
ELEM(small, true, true, GROUP_FONTSTYLE, GROUP_INLINE_ELEMENT),

View File

@ -82,6 +82,7 @@ ol,
p,
plaintext,
pre,
search,
section,
summary,
table,
@ -124,6 +125,7 @@ hgroup,
html,
main,
nav,
search,
section,
summary {
display: block;

File diff suppressed because it is too large Load Diff

View File

@ -697,6 +697,15 @@ public class Tokenizer implements Locator, Locator2 {
return null;
}
/**
* Gets the errorProfile.
*
* @param errorProfile
*/
public HashMap getErrorProfile() {
return null;
}
/**
* Sets the commentPolicy.
*

View File

@ -168,7 +168,7 @@ public abstract class TreeBuilder<T> implements TokenHandler,
final static int DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU = 50;
final static int ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY = 51;
final static int ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY = 51;
final static int RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR = 52;
@ -1949,7 +1949,7 @@ public abstract class TreeBuilder<T> implements TokenHandler,
case P:
case DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU:
case UL_OR_OL_OR_DL:
case ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY:
case ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY:
implicitlyCloseP();
appendToCurrentNodeAndPushElementMayFoster(
elementName,
@ -3460,7 +3460,7 @@ public abstract class TreeBuilder<T> implements TokenHandler,
case PRE_OR_LISTING:
case FIELDSET:
case BUTTON:
case ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY:
case ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY:
eltPos = findLastInScope(name);
if (eltPos == TreeBuilder.NOT_FOUND_ON_STACK) {
errStrayEndTag(name);

View File

@ -180,6 +180,7 @@ nsHtml5ElementName* nsHtml5ElementName::ELT_MATH = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_MPATH = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_PATH = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_TH = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_SEARCH = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_SWITCH = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_TEXTPATH = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_LI = nullptr;
@ -287,24 +288,24 @@ nsHtml5ElementName* nsHtml5ElementName::ELT_SUMMARY = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_TBODY = nullptr;
nsHtml5ElementName** nsHtml5ElementName::ELEMENT_NAMES = 0;
static int32_t const ELEMENT_HASHES_DATA[] = {
1902641154, 1748359220, 2001349720, 876609538, 1798686984, 1971465813,
2007781534, 59768833, 1730965751, 1756474198, 1868312196, 1939219752,
1900845386, 1748359220, 2001349720, 876609538, 1798686984, 1971465813,
2007781534, 59768833, 1730965751, 1756474198, 1864368130, 1938817026,
1988763672, 2005324101, 2060065124, 52490899, 62390273, 1682547543,
1740181637, 1749905526, 1766992520, 1818230786, 1881613047, 1907959605,
1967760215, 1982935782, 1999397992, 2001392798, 2006329158, 2008851557,
1740181637, 1749905526, 1766992520, 1807599880, 1881498736, 1907661127,
1967128578, 1982935782, 1999397992, 2001392798, 2006329158, 2008851557,
2085266636, 51961587, 57206291, 60352339, 67108865, 943718402,
1699324759, 1733890180, 1747814436, 1749715159, 1752979652, 1757146773,
1783388498, 1805502724, 1854228698, 1874053333, 1898223949, 1906087319,
1932928296, 1965115924, 1968053806, 1973420034, 1983633431, 1998585858,
1783388498, 1805502724, 1854228692, 1873281026, 1889085973, 1905563974,
1925844629, 1963982850, 1967795958, 1973420034, 1983633431, 1998585858,
2001309869, 2001392795, 2003183333, 2005925890, 2006974466, 2008325940,
2021937364, 2068523856, 2092255447, 51435587, 52486755, 55110883,
58773795, 60345171, 61395251, 62973651, 68681729, 910163970,
1679960596, 1686491348, 1715310660, 1733054663, 1737099991, 1747176599,
1748100148, 1749656156, 1749801286, 1751288021, 1755076808, 1756625221,
1757268168, 1783210839, 1790207270, 1803929812, 1806806678, 1853642948,
1857653029, 1870268949, 1881288348, 1884120164, 1899272519, 1904412884,
1907435316, 1919418370, 1935549734, 1941221172, 1966223078, 1967795910,
1971461414, 1971938532, 1982173479, 1983533124, 1986527234, 1990037800,
1757268168, 1783210839, 1790207270, 1803929812, 1806805526, 1818755074,
1854245076, 1870135298, 1874102998, 1881669634, 1898753862, 1903302038,
1906135367, 1914900309, 1934172497, 1941178676, 1965334268, 1967788867,
1968836118, 1971938532, 1982173479, 1983533124, 1986527234, 1990037800,
1998724870, 2000525512, 2001349704, 2001349736, 2001392796, 2001495140,
2004635806, 2005719336, 2006028454, 2006896969, 2007601444, 2008125638,
2008340774, 2008994116, 2051837468, 2068523853, 2083120164, 2091479332,
@ -316,12 +317,12 @@ static int32_t const ELEMENT_HASHES_DATA[] = {
1747306711, 1747838298, 1748225318, 1749395095, 1749673195, 1749723735,
1749813541, 1749932347, 1751386406, 1753362711, 1755148615, 1756600614,
1757137429, 1757157700, 1763839627, 1782357526, 1783388497, 1786534215,
1797585096, 1803876550, 1803929861, 1805647874, 1807599880, 1818755074,
1854228692, 1854245076, 1864368130, 1870135298, 1873281026, 1874102998,
1881498736, 1881669634, 1889085973, 1898753862, 1900845386, 1903302038,
1905563974, 1906135367, 1907661127, 1914900309, 1925844629, 1934172497,
1938817026, 1941178676, 1963982850, 1965334268, 1967128578, 1967788867,
1967795958, 1968836118};
1797585096, 1803876550, 1803929861, 1805647874, 1806806678, 1818230786,
1853642948, 1854228698, 1857653029, 1868312196, 1870268949, 1874053333,
1881288348, 1881613047, 1884120164, 1898223949, 1899272519, 1902641154,
1904412884, 1906087319, 1907435316, 1907959605, 1919418370, 1932928296,
1935549734, 1939219752, 1941221172, 1965115924, 1966223078, 1967760215,
1967795910, 1968053806, 1971461414};
staticJArray<int32_t, int32_t> nsHtml5ElementName::ELEMENT_HASHES = {
ELEMENT_HASHES_DATA, MOZ_ARRAY_LENGTH(ELEMENT_HASHES_DATA)};
void nsHtml5ElementName::initializeStatics() {
@ -353,7 +354,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::dir, nsGkAtoms::dir, NS_NewHTMLSharedElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_DIV = new nsHtml5ElementName(
nsGkAtoms::div, nsGkAtoms::div, NS_NewHTMLDivElement,
@ -375,7 +376,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::nav, nsGkAtoms::nav, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_PRE = new nsHtml5ElementName(
nsGkAtoms::pre, nsGkAtoms::pre, NS_NewHTMLPreElement,
@ -531,13 +532,13 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::aside, nsGkAtoms::aside, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_ARTICLE = new nsHtml5ElementName(
nsGkAtoms::article, nsGkAtoms::article, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_ANIMATE = new nsHtml5ElementName(
nsGkAtoms::animate, nsGkAtoms::animate, NS_NewHTMLUnknownElement,
@ -586,7 +587,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::figure, nsGkAtoms::figure, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_FECOMPOSITE = new nsHtml5ElementName(
nsGkAtoms::fecomposite, nsGkAtoms::feComposite, NS_NewHTMLUnknownElement,
@ -646,7 +647,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::dialog, nsGkAtoms::dialog, NS_NewHTMLDialogElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_FEFUNCG = new nsHtml5ElementName(
nsGkAtoms::fefuncg, nsGkAtoms::feFuncG, NS_NewHTMLUnknownElement,
@ -689,6 +690,12 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::th, nsGkAtoms::th, NS_NewHTMLTableCellElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG);
ELT_SEARCH = new nsHtml5ElementName(
nsGkAtoms::search, nsGkAtoms::search, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_SWITCH = new nsHtml5ElementName(
nsGkAtoms::svgSwitch, nsGkAtoms::svgSwitch, NS_NewHTMLUnknownElement,
NS_NewSVGSwitchElement, nsHtml5TreeBuilder::OTHER);
@ -780,7 +787,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::figcaption, nsGkAtoms::figcaption, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_MN = new nsHtml5ElementName(
nsGkAtoms::mn_, nsGkAtoms::mn_, NS_NewHTMLUnknownElement,
@ -793,7 +800,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::main, nsGkAtoms::main, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_OPTION = new nsHtml5ElementName(
nsGkAtoms::option, nsGkAtoms::option, NS_NewHTMLOptionElement,
@ -812,7 +819,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::section, nsGkAtoms::section, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_TSPAN = new nsHtml5ElementName(
nsGkAtoms::tspan, nsGkAtoms::tspan, NS_NewHTMLUnknownElement,
@ -839,7 +846,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::hgroup, nsGkAtoms::hgroup, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_RP = new nsHtml5ElementName(
nsGkAtoms::rp, nsGkAtoms::rp, NS_NewHTMLElement, NS_NewSVGUnknownElement,
@ -884,7 +891,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::footer, nsGkAtoms::footer, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_FEGAUSSIANBLUR = new nsHtml5ElementName(
nsGkAtoms::fegaussianblur, nsGkAtoms::feGaussianBlur,
@ -894,7 +901,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::header, nsGkAtoms::header, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_MARKER = new nsHtml5ElementName(
nsGkAtoms::marker, nsGkAtoms::marker, NS_NewHTMLUnknownElement,
@ -913,7 +920,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::address, nsGkAtoms::address, NS_NewHTMLElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_CANVAS = new nsHtml5ElementName(
nsGkAtoms::canvas, nsGkAtoms::canvas, NS_NewHTMLCanvasElement,
@ -925,7 +932,7 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::details, nsGkAtoms::details, NS_NewHTMLDetailsElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_MS = new nsHtml5ElementName(
nsGkAtoms::ms_, nsGkAtoms::ms_, NS_NewHTMLUnknownElement,
@ -1067,15 +1074,15 @@ void nsHtml5ElementName::initializeStatics() {
nsGkAtoms::summary, nsGkAtoms::summary, NS_NewHTMLSummaryElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY |
SPECIAL);
ELT_TBODY = new nsHtml5ElementName(
nsGkAtoms::tbody, nsGkAtoms::tbody, NS_NewHTMLTableSectionElement,
NS_NewSVGUnknownElement,
nsHtml5TreeBuilder::TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING |
OPTIONAL_END_TAG);
ELEMENT_NAMES = new nsHtml5ElementName*[206];
ELEMENT_NAMES[0] = ELT_MN;
ELEMENT_NAMES = new nsHtml5ElementName*[207];
ELEMENT_NAMES[0] = ELT_FIGCAPTION;
ELEMENT_NAMES[1] = ELT_CITE;
ELEMENT_NAMES[2] = ELT_FRAMESET;
ELEMENT_NAMES[3] = ELT_H1;
@ -1085,8 +1092,8 @@ void nsHtml5ElementName::initializeStatics() {
ELEMENT_NAMES[7] = ELT_B;
ELEMENT_NAMES[8] = ELT_BGSOUND;
ELEMENT_NAMES[9] = ELT_SOURCE;
ELEMENT_NAMES[10] = ELT_HTML;
ELEMENT_NAMES[11] = ELT_OPTGROUP;
ELEMENT_NAMES[10] = ELT_DL;
ELEMENT_NAMES[11] = ELT_RP;
ELEMENT_NAMES[12] = ELT_NOFRAMES;
ELEMENT_NAMES[13] = ELT_MTEXT;
ELEMENT_NAMES[14] = ELT_VIEW;
@ -1096,10 +1103,10 @@ void nsHtml5ElementName::initializeStatics() {
ELEMENT_NAMES[18] = ELT_THEAD;
ELEMENT_NAMES[19] = ELT_FIGURE;
ELEMENT_NAMES[20] = ELT_GLYPHREF;
ELEMENT_NAMES[21] = ELT_LI;
ELEMENT_NAMES[22] = ELT_ACRONYM;
ELEMENT_NAMES[23] = ELT_TSPAN;
ELEMENT_NAMES[24] = ELT_FEFUNCR;
ELEMENT_NAMES[21] = ELT_TEXTPATH;
ELEMENT_NAMES[22] = ELT_ANIMATETRANSFORM;
ELEMENT_NAMES[23] = ELT_SECTION;
ELEMENT_NAMES[24] = ELT_HR;
ELEMENT_NAMES[25] = ELT_CANVAS;
ELEMENT_NAMES[26] = ELT_BASEFONT;
ELEMENT_NAMES[27] = ELT_FEDISTANTLIGHT;
@ -1119,13 +1126,13 @@ void nsHtml5ElementName::initializeStatics() {
ELEMENT_NAMES[41] = ELT_TITLE;
ELEMENT_NAMES[42] = ELT_FESPECULARLIGHTING;
ELEMENT_NAMES[43] = ELT_PATH;
ELEMENT_NAMES[44] = ELT_MALIGNMARK;
ELEMENT_NAMES[45] = ELT_SMALL;
ELEMENT_NAMES[46] = ELT_ANIMATEMOTION;
ELEMENT_NAMES[47] = ELT_POLYGON;
ELEMENT_NAMES[48] = ELT_COLGROUP;
ELEMENT_NAMES[49] = ELT_ABBR;
ELEMENT_NAMES[50] = ELT_FEGAUSSIANBLUR;
ELEMENT_NAMES[44] = ELT_MARK;
ELEMENT_NAMES[45] = ELT_UL;
ELEMENT_NAMES[46] = ELT_PARAM;
ELEMENT_NAMES[47] = ELT_OPTION;
ELEMENT_NAMES[48] = ELT_VIDEO;
ELEMENT_NAMES[49] = ELT_BR;
ELEMENT_NAMES[50] = ELT_FOOTER;
ELEMENT_NAMES[51] = ELT_TR;
ELEMENT_NAMES[52] = ELT_DETAILS;
ELEMENT_NAMES[53] = ELT_DT;
@ -1163,21 +1170,21 @@ void nsHtml5ElementName::initializeStatics() {
ELEMENT_NAMES[85] = ELT_FEFUNCG;
ELEMENT_NAMES[86] = ELT_STRONG;
ELEMENT_NAMES[87] = ELT_MATH;
ELEMENT_NAMES[88] = ELT_SWITCH;
ELEMENT_NAMES[89] = ELT_LINK;
ELEMENT_NAMES[90] = ELT_TRACK;
ELEMENT_NAMES[91] = ELT_LABEL;
ELEMENT_NAMES[92] = ELT_ALTGLYPHITEM;
ELEMENT_NAMES[93] = ELT_FORM;
ELEMENT_NAMES[94] = ELT_CAPTION;
ELEMENT_NAMES[95] = ELT_MAIN;
ELEMENT_NAMES[96] = ELT_SPAN;
ELEMENT_NAMES[97] = ELT_MO;
ELEMENT_NAMES[98] = ELT_HGROUP;
ELEMENT_NAMES[99] = ELT_STOP;
ELEMENT_NAMES[100] = ELT_CENTER;
ELEMENT_NAMES[101] = ELT_FILTER;
ELEMENT_NAMES[102] = ELT_MARKER;
ELEMENT_NAMES[88] = ELT_SEARCH;
ELEMENT_NAMES[89] = ELT_MI;
ELEMENT_NAMES[90] = ELT_MASK;
ELEMENT_NAMES[91] = ELT_OL;
ELEMENT_NAMES[92] = ELT_SYMBOL;
ELEMENT_NAMES[93] = ELT_EM;
ELEMENT_NAMES[94] = ELT_BUTTON;
ELEMENT_NAMES[95] = ELT_KEYGEN;
ELEMENT_NAMES[96] = ELT_PATTERN;
ELEMENT_NAMES[97] = ELT_AUDIO;
ELEMENT_NAMES[98] = ELT_FEDISPLACEMENTMAP;
ELEMENT_NAMES[99] = ELT_SAMP;
ELEMENT_NAMES[100] = ELT_ANIMATECOLOR;
ELEMENT_NAMES[101] = ELT_FECOMPONENTTRANSFER;
ELEMENT_NAMES[102] = ELT_HEADER;
ELEMENT_NAMES[103] = ELT_NOBR;
ELEMENT_NAMES[104] = ELT_ADDRESS;
ELEMENT_NAMES[105] = ELT_DEFS;
@ -1253,34 +1260,35 @@ void nsHtml5ElementName::initializeStatics() {
ELEMENT_NAMES[175] = ELT_MGLYPH;
ELEMENT_NAMES[176] = ELT_MPATH;
ELEMENT_NAMES[177] = ELT_TH;
ELEMENT_NAMES[178] = ELT_TEXTPATH;
ELEMENT_NAMES[179] = ELT_MI;
ELEMENT_NAMES[180] = ELT_MARK;
ELEMENT_NAMES[181] = ELT_MASK;
ELEMENT_NAMES[182] = ELT_DL;
ELEMENT_NAMES[183] = ELT_OL;
ELEMENT_NAMES[184] = ELT_UL;
ELEMENT_NAMES[185] = ELT_SYMBOL;
ELEMENT_NAMES[186] = ELT_ANIMATETRANSFORM;
ELEMENT_NAMES[187] = ELT_EM;
ELEMENT_NAMES[188] = ELT_PARAM;
ELEMENT_NAMES[189] = ELT_BUTTON;
ELEMENT_NAMES[190] = ELT_FIGCAPTION;
ELEMENT_NAMES[191] = ELT_KEYGEN;
ELEMENT_NAMES[192] = ELT_OPTION;
ELEMENT_NAMES[193] = ELT_PATTERN;
ELEMENT_NAMES[194] = ELT_SECTION;
ELEMENT_NAMES[195] = ELT_AUDIO;
ELEMENT_NAMES[196] = ELT_VIDEO;
ELEMENT_NAMES[197] = ELT_FEDISPLACEMENTMAP;
ELEMENT_NAMES[198] = ELT_RP;
ELEMENT_NAMES[199] = ELT_SAMP;
ELEMENT_NAMES[200] = ELT_BR;
ELEMENT_NAMES[201] = ELT_ANIMATECOLOR;
ELEMENT_NAMES[202] = ELT_HR;
ELEMENT_NAMES[203] = ELT_FECOMPONENTTRANSFER;
ELEMENT_NAMES[204] = ELT_FOOTER;
ELEMENT_NAMES[205] = ELT_HEADER;
ELEMENT_NAMES[178] = ELT_SWITCH;
ELEMENT_NAMES[179] = ELT_LI;
ELEMENT_NAMES[180] = ELT_LINK;
ELEMENT_NAMES[181] = ELT_MALIGNMARK;
ELEMENT_NAMES[182] = ELT_TRACK;
ELEMENT_NAMES[183] = ELT_HTML;
ELEMENT_NAMES[184] = ELT_LABEL;
ELEMENT_NAMES[185] = ELT_SMALL;
ELEMENT_NAMES[186] = ELT_ALTGLYPHITEM;
ELEMENT_NAMES[187] = ELT_ACRONYM;
ELEMENT_NAMES[188] = ELT_FORM;
ELEMENT_NAMES[189] = ELT_ANIMATEMOTION;
ELEMENT_NAMES[190] = ELT_CAPTION;
ELEMENT_NAMES[191] = ELT_MN;
ELEMENT_NAMES[192] = ELT_MAIN;
ELEMENT_NAMES[193] = ELT_POLYGON;
ELEMENT_NAMES[194] = ELT_SPAN;
ELEMENT_NAMES[195] = ELT_TSPAN;
ELEMENT_NAMES[196] = ELT_MO;
ELEMENT_NAMES[197] = ELT_COLGROUP;
ELEMENT_NAMES[198] = ELT_HGROUP;
ELEMENT_NAMES[199] = ELT_OPTGROUP;
ELEMENT_NAMES[200] = ELT_STOP;
ELEMENT_NAMES[201] = ELT_ABBR;
ELEMENT_NAMES[202] = ELT_CENTER;
ELEMENT_NAMES[203] = ELT_FEFUNCR;
ELEMENT_NAMES[204] = ELT_FILTER;
ELEMENT_NAMES[205] = ELT_FEGAUSSIANBLUR;
ELEMENT_NAMES[206] = ELT_MARKER;
}
void nsHtml5ElementName::releaseStatics() {
@ -1386,6 +1394,7 @@ void nsHtml5ElementName::releaseStatics() {
delete ELT_MPATH;
delete ELT_PATH;
delete ELT_TH;
delete ELT_SEARCH;
delete ELT_SWITCH;
delete ELT_TEXTPATH;
delete ELT_LI;

View File

@ -290,6 +290,7 @@ class nsHtml5ElementName {
static nsHtml5ElementName* ELT_MPATH;
static nsHtml5ElementName* ELT_PATH;
static nsHtml5ElementName* ELT_TH;
static nsHtml5ElementName* ELT_SEARCH;
static nsHtml5ElementName* ELT_SWITCH;
static nsHtml5ElementName* ELT_TEXTPATH;
static nsHtml5ElementName* ELT_LI;

View File

@ -1165,7 +1165,7 @@ starttagloop:
case P:
case DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU:
case UL_OR_OL_OR_DL:
case ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY: {
case ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY: {
implicitlyCloseP();
appendToCurrentNodeAndPushElementMayFoster(elementName,
attributes);
@ -2680,7 +2680,7 @@ void nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) {
case PRE_OR_LISTING:
case FIELDSET:
case BUTTON:
case ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY: {
case ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY: {
eltPos = findLastInScope(name);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
errStrayEndTag(name);

View File

@ -174,7 +174,7 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState {
static const int32_t DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU = 50;
static const int32_t
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY =
ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SEARCH_OR_SECTION_OR_SUMMARY =
51;
static const int32_t RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR = 52;

View File

@ -140,6 +140,7 @@ static const HTMLElement gHTMLElements[] = {
ELEM(s, ____, true)
ELEM(samp, ____, true)
ELEM(script, ____, true)
ELEM(search, true, true)
ELEM(section, true, true)
ELEM(select, ____, true)
ELEM(small, ____, true)

View File

@ -151,6 +151,7 @@ HTML_HTMLELEMENT_TAG(ruby)
HTML_HTMLELEMENT_TAG(s)
HTML_HTMLELEMENT_TAG(samp)
HTML_TAG(script, Script, Script)
HTML_HTMLELEMENT_TAG(search)
HTML_HTMLELEMENT_TAG(section)
HTML_TAG(select, Select, Select)
HTML_HTMLELEMENT_TAG(small)

View File

@ -17,9 +17,6 @@
[el-a-no-href]
expected: PASS
[el-search]
expected: FAIL
[el-u]
expected: FAIL

View File

@ -1,6 +1,3 @@
[search-styles-iso-8859-8.html]
[<search> - display]
expected: FAIL
[<search> - unicode-bidi]
expected: FAIL

View File

@ -1,6 +0,0 @@
[search-styles.html]
[<search> - display]
expected: FAIL
[<search> - unicode-bidi]
expected: FAIL

View File

@ -1,22 +0,0 @@
[html5lib_search-element.html?run_type=write_single]
[html5lib_search-element.html 114b9f3c8147c0ed8ef3ed1811a9da3f10d74402]
expected: FAIL
[html5lib_search-element.html 2204afb9037ec886f428ab5dcead5ee9f87c65cb]
expected: FAIL
[html5lib_search-element.html?run_type=write]
[html5lib_search-element.html 114b9f3c8147c0ed8ef3ed1811a9da3f10d74402]
expected: FAIL
[html5lib_search-element.html 2204afb9037ec886f428ab5dcead5ee9f87c65cb]
expected: FAIL
[html5lib_search-element.html?run_type=uri]
[html5lib_search-element.html 114b9f3c8147c0ed8ef3ed1811a9da3f10d74402]
expected: FAIL
[html5lib_search-element.html 2204afb9037ec886f428ab5dcead5ee9f87c65cb]
expected: FAIL