Bug 1322938 - Make the HTML tree builder aware of <dialog>. r=wchen draft
authorHenri Sivonen <hsivonen@hsivonen.fi>
Thu, 22 Dec 2016 11:30:41 +0200
changeset 453436 04531215ad08fb4d7c4f073dd32be5a0d1aae5dc
parent 453435 a9e9d8a54cfac6be1a55a067db9aed1ce29e1bb2
child 540466 a3776a31a1468b0890eedef5d1f6b4207b2ef8bf
push id39672
push userbmo:ntim.bugs@gmail.com
push dateFri, 23 Dec 2016 12:49:39 +0000
reviewerswchen
bugs1322938
milestone53.0a1
Bug 1322938 - Make the HTML tree builder aware of <dialog>. r=wchen Original patch by :hsivonen MozReview-Commit-ID: 9AenVibKIGV
parser/html/javasrc/ElementName.java
parser/html/javasrc/TreeBuilder.java
parser/html/nsHtml5AtomList.h
parser/html/nsHtml5ElementName.cpp
parser/html/nsHtml5ElementName.h
parser/html/nsHtml5TreeBuilder.cpp
parser/html/nsHtml5TreeBuilder.h
--- a/parser/html/javasrc/ElementName.java
+++ b/parser/html/javasrc/ElementName.java
@@ -1,27 +1,27 @@
 /*
- * Copyright (c) 2008-2014 Mozilla Foundation
+ * Copyright (c) 2008-2016 Mozilla Foundation
  *
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
  * Software is furnished to do so, subject to the following conditions:
  *
- * The above copyright notice and this permission notice shall be included in 
+ * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
  *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  */
 
 package nu.validator.htmlparser.impl;
 
 import java.util.Arrays;
 
 import nu.validator.htmlparser.annotation.Inline;
@@ -36,17 +36,17 @@ public final class ElementName
 {
 
     /**
      * The mask for extracting the dispatch group.
      */
     public static final int GROUP_MASK = 127;
 
     /**
-     * Indicates that the element is not a pre-interned element. Forbidden 
+     * Indicates that the element is not a pre-interned element. Forbidden
      * on preinterned elements.
      */
     public static final int CUSTOM = (1 << 30);
 
     /**
      * Indicates that the element is in the "special" category. This bit
      * should not be pre-set on MathML or SVG specials--only on HTML specials.
      */
@@ -93,21 +93,21 @@ public final class ElementName
     /**
      * The lowest 7 bits are the dispatch group. The high bits are flags.
      */
     public final int flags;
 
     @Inline public int getFlags() {
         return flags;
     }
-    
+
     public int getGroup() {
         return flags & GROUP_MASK;
     }
-    
+
     public boolean isCustom() {
         return (flags & CUSTOM) != 0;
     }
 
     static ElementName elementNameByBuffer(@NoLength char[] buf, int offset, int length, Interner interner) {
         int hash = ElementName.bufToHash(buf, length);
         int index = Arrays.binarySearch(ElementName.ELEMENT_HASHES, hash);
         if (index < 0) {
@@ -121,17 +121,17 @@ public final class ElementName
             }
             return elementName;
         }
     }
 
     /**
      * This method has to return a unique integer for each well-known
      * lower-cased element name.
-     * 
+     *
      * @param buf
      * @param len
      * @return
      */
     private static int bufToHash(@NoLength char[] buf, int len) {
         int hash = len;
         hash <<= 5;
         hash += buf[0] - 0x60;
@@ -151,30 +151,30 @@ public final class ElementName
         this.flags = flags;
     }
 
     protected ElementName(@Local String name) {
         this.name = name;
         this.camelCaseName = name;
         this.flags = TreeBuilder.OTHER | CUSTOM;
     }
-    
+
     @Virtual void release() {
-        // No-op in Java. 
+        // No-op in Java.
         // Implement as delete this in subclass.
         // Be sure to release the local name
     }
-    
+
     @SuppressWarnings("unused") @Virtual private void destructor() {
     }
 
     @Virtual public ElementName cloneElementName(Interner interner) {
         return this;
     }
-    
+
     // START CODE ONLY USED FOR GENERATING CODE uncomment and run to regenerate
 
 //    /**
 //     * @see java.lang.Object#toString()
 //     */
 //    @Override public String toString() {
 //        return "(\"" + name + "\", \"" + camelCaseName + "\", " + decomposedFlags() + ")";
 //    }
@@ -347,18 +347,18 @@ public final class ElementName
 //            case TreeBuilder.IMG:
 //                return "IMG";
 //            case TreeBuilder.AREA_OR_WBR:
 //                return "AREA_OR_WBR";
 //            case TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU:
 //                return "DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU";
 //            case TreeBuilder.FIELDSET:
 //                return "FIELDSET";
-//            case TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY:
-//                return "ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY";
+//            case TreeBuilder.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:
+//                return "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 TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR:
 //                return "RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR";
 //            case TreeBuilder.RB_OR_RTC:
 //                return "RB_OR_RTC";
 //            case TreeBuilder.RT_OR_RP:
 //                return "RT_OR_RP";
 //            case TreeBuilder.PARAM_OR_SOURCE_OR_TRACK:
 //                return "PARAM_OR_SOURCE_OR_TRACK";
@@ -461,17 +461,17 @@ public final class ElementName
     public static final ElementName BIG = new ElementName("big", "big", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
     public static final ElementName BDO = new ElementName("bdo", "bdo", TreeBuilder.OTHER);
     public static final ElementName CSC = new ElementName("csc", "csc", TreeBuilder.OTHER);
     public static final ElementName COL = new ElementName("col", "col", TreeBuilder.COL | SPECIAL);
     public static final ElementName COS = new ElementName("cos", "cos", TreeBuilder.OTHER);
     public static final ElementName COT = new ElementName("cot", "cot", TreeBuilder.OTHER);
     public static final ElementName DEL = new ElementName("del", "del", TreeBuilder.OTHER);
     public static final ElementName DFN = new ElementName("dfn", "dfn", TreeBuilder.OTHER);
-    public static final ElementName DIR = new ElementName("dir", "dir", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
+    public static final ElementName DIR = new ElementName("dir", "dir", TreeBuilder.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 | SPECIAL);
     public static final ElementName DIV = new ElementName("div", "div", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
     public static final ElementName EXP = new ElementName("exp", "exp", TreeBuilder.OTHER);
     public static final ElementName GCD = new ElementName("gcd", "gcd", TreeBuilder.OTHER);
     public static final ElementName GEQ = new ElementName("geq", "geq", TreeBuilder.OTHER);
     public static final ElementName IMG = new ElementName("img", "img", TreeBuilder.IMG | SPECIAL);
     public static final ElementName INS = new ElementName("ins", "ins", TreeBuilder.OTHER);
     public static final ElementName INT = new ElementName("int", "int", TreeBuilder.OTHER);
     public static final ElementName KBD = new ElementName("kbd", "kbd", TreeBuilder.OTHER);
@@ -480,17 +480,17 @@ public final class ElementName
     public static final ElementName LEQ = new ElementName("leq", "leq", TreeBuilder.OTHER);
     public static final ElementName MTD = new ElementName("mtd", "mtd", TreeBuilder.OTHER);
     public static final ElementName MIN = new ElementName("min", "min", TreeBuilder.OTHER);
     public static final ElementName MAP = new ElementName("map", "map", TreeBuilder.OTHER);
     public static final ElementName MTR = new ElementName("mtr", "mtr", TreeBuilder.OTHER);
     public static final ElementName MAX = new ElementName("max", "max", TreeBuilder.OTHER);
     public static final ElementName NEQ = new ElementName("neq", "neq", TreeBuilder.OTHER);
     public static final ElementName NOT = new ElementName("not", "not", TreeBuilder.OTHER);
-    public static final ElementName NAV = new ElementName("nav", "nav", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
+    public static final ElementName NAV = new ElementName("nav", "nav", TreeBuilder.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 | SPECIAL);
     public static final ElementName PRE = new ElementName("pre", "pre", TreeBuilder.PRE_OR_LISTING | SPECIAL);
     public static final ElementName RTC = new ElementName("rtc", "rtc", TreeBuilder.RB_OR_RTC | OPTIONAL_END_TAG);
     public static final ElementName REM = new ElementName("rem", "rem", TreeBuilder.OTHER);
     public static final ElementName SUB = new ElementName("sub", "sub", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
     public static final ElementName SEC = new ElementName("sec", "sec", TreeBuilder.OTHER);
     public static final ElementName SVG = new ElementName("svg", "svg", TreeBuilder.SVG);
     public static final ElementName SUM = new ElementName("sum", "sum", TreeBuilder.OTHER);
     public static final ElementName SIN = new ElementName("sin", "sin", TreeBuilder.OTHER);
@@ -528,17 +528,17 @@ public final class ElementName
     public static final ElementName LIST = new ElementName("list", "list", TreeBuilder.OTHER);
     public static final ElementName META = new ElementName("meta", "meta", TreeBuilder.META | SPECIAL);
     public static final ElementName MSUB = new ElementName("msub", "msub", TreeBuilder.OTHER);
     public static final ElementName MODE = new ElementName("mode", "mode", TreeBuilder.OTHER);
     public static final ElementName MATH = new ElementName("math", "math", TreeBuilder.MATH);
     public static final ElementName MARK = new ElementName("mark", "mark", TreeBuilder.OTHER);
     public static final ElementName MASK = new ElementName("mask", "mask", TreeBuilder.OTHER);
     public static final ElementName MEAN = new ElementName("mean", "mean", TreeBuilder.OTHER);
-    public static final ElementName MAIN = new ElementName("main", "main", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
+    public static final ElementName MAIN = new ElementName("main", "main", TreeBuilder.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 | SPECIAL);
     public static final ElementName MSUP = new ElementName("msup", "msup", TreeBuilder.OTHER);
     public static final ElementName MENU = new ElementName("menu", "menu", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
     public static final ElementName MROW = new ElementName("mrow", "mrow", TreeBuilder.OTHER);
     public static final ElementName NONE = new ElementName("none", "none", TreeBuilder.OTHER);
     public static final ElementName NOBR = new ElementName("nobr", "nobr", TreeBuilder.NOBR);
     public static final ElementName NEST = new ElementName("nest", "nest", TreeBuilder.OTHER);
     public static final ElementName PATH = new ElementName("path", "path", TreeBuilder.OTHER);
     public static final ElementName PLUS = new ElementName("plus", "plus", TreeBuilder.OTHER);
@@ -555,17 +555,17 @@ public final class ElementName
     public static final ElementName STOP = new ElementName("stop", "stop", TreeBuilder.OTHER);
     public static final ElementName SDEV = new ElementName("sdev", "sdev", TreeBuilder.OTHER);
     public static final ElementName TIME = new ElementName("time", "time", TreeBuilder.OTHER);
     public static final ElementName TRUE = new ElementName("true", "true", TreeBuilder.OTHER);
     public static final ElementName TREF = new ElementName("tref", "tref", TreeBuilder.OTHER);
     public static final ElementName TANH = new ElementName("tanh", "tanh", TreeBuilder.OTHER);
     public static final ElementName TEXT = new ElementName("text", "text", TreeBuilder.OTHER);
     public static final ElementName VIEW = new ElementName("view", "view", TreeBuilder.OTHER);
-    public static final ElementName ASIDE = new ElementName("aside", "aside", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
+    public static final ElementName ASIDE = new ElementName("aside", "aside", TreeBuilder.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 | SPECIAL);
     public static final ElementName AUDIO = new ElementName("audio", "audio", TreeBuilder.OTHER);
     public static final ElementName APPLY = new ElementName("apply", "apply", TreeBuilder.OTHER);
     public static final ElementName EMBED = new ElementName("embed", "embed", TreeBuilder.EMBED | SPECIAL);
     public static final ElementName FRAME = new ElementName("frame", "frame", TreeBuilder.FRAME | SPECIAL);
     public static final ElementName FALSE = new ElementName("false", "false", TreeBuilder.OTHER);
     public static final ElementName FLOOR = new ElementName("floor", "floor", TreeBuilder.OTHER);
     public static final ElementName GLYPH = new ElementName("glyph", "glyph", TreeBuilder.OTHER);
     public static final ElementName HKERN = new ElementName("hkern", "hkern", TreeBuilder.OTHER);
@@ -610,25 +610,26 @@ public final class ElementName
     public static final ElementName APPROX = new ElementName("approx", "approx", TreeBuilder.OTHER);
     public static final ElementName BUTTON = new ElementName("button", "button", TreeBuilder.BUTTON | SPECIAL);
     public static final ElementName CIRCLE = new ElementName("circle", "circle", TreeBuilder.OTHER);
     public static final ElementName CENTER = new ElementName("center", "center", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
     public static final ElementName CURSOR = new ElementName("cursor", "cursor", TreeBuilder.OTHER);
     public static final ElementName CANVAS = new ElementName("canvas", "canvas", TreeBuilder.OTHER);
     public static final ElementName DIVIDE = new ElementName("divide", "divide", TreeBuilder.OTHER);
     public static final ElementName DEGREE = new ElementName("degree", "degree", TreeBuilder.OTHER);
+    public static final ElementName DIALOG = new ElementName("dialog", "dialog", TreeBuilder.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 | SPECIAL);
     public static final ElementName DOMAIN = new ElementName("domain", "domain", TreeBuilder.OTHER);
     public static final ElementName EXISTS = new ElementName("exists", "exists", TreeBuilder.OTHER);
     public static final ElementName FETILE = new ElementName("fetile", "feTile", TreeBuilder.OTHER);
-    public static final ElementName FIGURE = new ElementName("figure", "figure", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
+    public static final ElementName FIGURE = new ElementName("figure", "figure", TreeBuilder.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 | SPECIAL);
     public static final ElementName FORALL = new ElementName("forall", "forall", TreeBuilder.OTHER);
     public static final ElementName FILTER = new ElementName("filter", "filter", TreeBuilder.OTHER);
-    public static final ElementName FOOTER = new ElementName("footer", "footer", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
-    public static final ElementName HGROUP = new ElementName("hgroup", "hgroup", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
-    public static final ElementName HEADER = new ElementName("header", "header", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
+    public static final ElementName FOOTER = new ElementName("footer", "footer", TreeBuilder.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 | SPECIAL);
+    public static final ElementName HGROUP = new ElementName("hgroup", "hgroup", TreeBuilder.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 | SPECIAL);
+    public static final ElementName HEADER = new ElementName("header", "header", TreeBuilder.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 | SPECIAL);
     public static final ElementName IFRAME = new ElementName("iframe", "iframe", TreeBuilder.IFRAME | SPECIAL);
     public static final ElementName KEYGEN = new ElementName("keygen", "keygen", TreeBuilder.KEYGEN);
     public static final ElementName LAMBDA = new ElementName("lambda", "lambda", TreeBuilder.OTHER);
     public static final ElementName LEGEND = new ElementName("legend", "legend", TreeBuilder.OTHER);
     public static final ElementName MSPACE = new ElementName("mspace", "mspace", TreeBuilder.OTHER);
     public static final ElementName MTABLE = new ElementName("mtable", "mtable", TreeBuilder.OTHER);
     public static final ElementName MSTYLE = new ElementName("mstyle", "mstyle", TreeBuilder.OTHER);
     public static final ElementName MGLYPH = new ElementName("mglyph", "mglyph", TreeBuilder.MGLYPH_OR_MALIGNMARK);
@@ -647,34 +648,34 @@ public final class ElementName
     public static final ElementName STRONG = new ElementName("strong", "strong", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
     public static final ElementName SWITCH = new ElementName("switch", "switch", TreeBuilder.OTHER);
     public static final ElementName SYMBOL = new ElementName("symbol", "symbol", TreeBuilder.OTHER);
     public static final ElementName SELECT = new ElementName("select", "select", TreeBuilder.SELECT | SPECIAL);
     public static final ElementName SUBSET = new ElementName("subset", "subset", TreeBuilder.OTHER);
     public static final ElementName SCRIPT = new ElementName("script", "script", TreeBuilder.SCRIPT | SPECIAL);
     public static final ElementName TBREAK = new ElementName("tbreak", "tbreak", TreeBuilder.OTHER);
     public static final ElementName VECTOR = new ElementName("vector", "vector", TreeBuilder.OTHER);
-    public static final ElementName ARTICLE = new ElementName("article", "article", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
+    public static final ElementName ARTICLE = new ElementName("article", "article", TreeBuilder.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 | SPECIAL);
     public static final ElementName ANIMATE = new ElementName("animate", "animate", TreeBuilder.OTHER);
     public static final ElementName ARCSECH = new ElementName("arcsech", "arcsech", TreeBuilder.OTHER);
     public static final ElementName ARCCSCH = new ElementName("arccsch", "arccsch", TreeBuilder.OTHER);
     public static final ElementName ARCTANH = new ElementName("arctanh", "arctanh", TreeBuilder.OTHER);
     public static final ElementName ARCSINH = new ElementName("arcsinh", "arcsinh", TreeBuilder.OTHER);
     public static final ElementName ARCCOSH = new ElementName("arccosh", "arccosh", TreeBuilder.OTHER);
     public static final ElementName ARCCOTH = new ElementName("arccoth", "arccoth", TreeBuilder.OTHER);
     public static final ElementName ACRONYM = new ElementName("acronym", "acronym", TreeBuilder.OTHER);
-    public static final ElementName ADDRESS = new ElementName("address", "address", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
+    public static final ElementName ADDRESS = new ElementName("address", "address", TreeBuilder.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 | SPECIAL);
     public static final ElementName BGSOUND = new ElementName("bgsound", "bgsound", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL);
     public static final ElementName COMPOSE = new ElementName("compose", "compose", TreeBuilder.OTHER);
     public static final ElementName CEILING = new ElementName("ceiling", "ceiling", TreeBuilder.OTHER);
     public static final ElementName CSYMBOL = new ElementName("csymbol", "csymbol", TreeBuilder.OTHER);
     public static final ElementName CAPTION = new ElementName("caption", "caption", TreeBuilder.CAPTION | SPECIAL | SCOPING);
     public static final ElementName DISCARD = new ElementName("discard", "discard", TreeBuilder.OTHER);
     public static final ElementName DECLARE = new ElementName("declare", "declare", TreeBuilder.OTHER);
-    public static final ElementName DETAILS = new ElementName("details", "details", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
+    public static final ElementName DETAILS = new ElementName("details", "details", TreeBuilder.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 | SPECIAL);
     public static final ElementName ELLIPSE = new ElementName("ellipse", "ellipse", TreeBuilder.OTHER);
     public static final ElementName FEFUNCA = new ElementName("fefunca", "feFuncA", TreeBuilder.OTHER);
     public static final ElementName FEFUNCB = new ElementName("fefuncb", "feFuncB", TreeBuilder.OTHER);
     public static final ElementName FEBLEND = new ElementName("feblend", "feBlend", TreeBuilder.OTHER);
     public static final ElementName FEFLOOD = new ElementName("feflood", "feFlood", TreeBuilder.OTHER);
     public static final ElementName FEIMAGE = new ElementName("feimage", "feImage", TreeBuilder.OTHER);
     public static final ElementName FEMERGE = new ElementName("femerge", "feMerge", TreeBuilder.OTHER);
     public static final ElementName FEFUNCG = new ElementName("fefuncg", "feFuncG", TreeBuilder.OTHER);
@@ -686,23 +687,23 @@ public final class ElementName
     public static final ElementName LOGBASE = new ElementName("logbase", "logbase", TreeBuilder.OTHER);
     public static final ElementName LISTING = new ElementName("listing", "listing", TreeBuilder.PRE_OR_LISTING | SPECIAL);
     public static final ElementName MFENCED = new ElementName("mfenced", "mfenced", TreeBuilder.OTHER);
     public static final ElementName MPADDED = new ElementName("mpadded", "mpadded", TreeBuilder.OTHER);
     public static final ElementName MARQUEE = new ElementName("marquee", "marquee", TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING);
     public static final ElementName MACTION = new ElementName("maction", "maction", TreeBuilder.OTHER);
     public static final ElementName MSUBSUP = new ElementName("msubsup", "msubsup", TreeBuilder.OTHER);
     public static final ElementName NOEMBED = new ElementName("noembed", "noembed", TreeBuilder.NOEMBED | SPECIAL);
+    public static final ElementName PICTURE = new ElementName("picture", "picture", TreeBuilder.OTHER);
     public static final ElementName POLYGON = new ElementName("polygon", "polygon", TreeBuilder.OTHER);
     public static final ElementName PATTERN = new ElementName("pattern", "pattern", TreeBuilder.OTHER);
-    public static final ElementName PICTURE = new ElementName("picture", "picture", TreeBuilder.OTHER);
     public static final ElementName PRODUCT = new ElementName("product", "product", TreeBuilder.OTHER);
     public static final ElementName SETDIFF = new ElementName("setdiff", "setdiff", TreeBuilder.OTHER);
-    public static final ElementName SECTION = new ElementName("section", "section", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
-    public static final ElementName SUMMARY = new ElementName("summary", "summary", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
+    public static final ElementName SECTION = new ElementName("section", "section", TreeBuilder.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 | SPECIAL);
+    public static final ElementName SUMMARY = new ElementName("summary", "summary", TreeBuilder.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 | SPECIAL);
     public static final ElementName TENDSTO = new ElementName("tendsto", "tendsto", TreeBuilder.OTHER);
     public static final ElementName UPLIMIT = new ElementName("uplimit", "uplimit", TreeBuilder.OTHER);
     public static final ElementName ALTGLYPH = new ElementName("altglyph", "altGlyph", TreeBuilder.OTHER);
     public static final ElementName BASEFONT = new ElementName("basefont", "basefont", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL);
     public static final ElementName CLIPPATH = new ElementName("clippath", "clipPath", TreeBuilder.OTHER);
     public static final ElementName CODOMAIN = new ElementName("codomain", "codomain", TreeBuilder.OTHER);
     public static final ElementName COLGROUP = new ElementName("colgroup", "colgroup", TreeBuilder.COLGROUP | SPECIAL | OPTIONAL_END_TAG);
     public static final ElementName EMPTYSET = new ElementName("emptyset", "emptyset", TreeBuilder.OTHER);
@@ -750,17 +751,17 @@ public final class ElementName
     public static final ElementName RATIONALS = new ElementName("rationals", "rationals", TreeBuilder.OTHER);
     public static final ElementName SEMANTICS = new ElementName("semantics", "semantics", TreeBuilder.OTHER);
     public static final ElementName TRANSPOSE = new ElementName("transpose", "transpose", TreeBuilder.OTHER);
     public static final ElementName ANNOTATION = new ElementName("annotation", "annotation", TreeBuilder.OTHER);
     public static final ElementName BLOCKQUOTE = new ElementName("blockquote", "blockquote", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL);
     public static final ElementName DIVERGENCE = new ElementName("divergence", "divergence", TreeBuilder.OTHER);
     public static final ElementName EULERGAMMA = new ElementName("eulergamma", "eulergamma", TreeBuilder.OTHER);
     public static final ElementName EQUIVALENT = new ElementName("equivalent", "equivalent", TreeBuilder.OTHER);
-    public static final ElementName FIGCAPTION = new ElementName("figcaption", "figcaption", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
+    public static final ElementName FIGCAPTION = new ElementName("figcaption", "figcaption", TreeBuilder.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 | SPECIAL);
     public static final ElementName IMAGINARYI = new ElementName("imaginaryi", "imaginaryi", TreeBuilder.OTHER);
     public static final ElementName MALIGNMARK = new ElementName("malignmark", "malignmark", TreeBuilder.MGLYPH_OR_MALIGNMARK);
     public static final ElementName MUNDEROVER = new ElementName("munderover", "munderover", TreeBuilder.OTHER);
     public static final ElementName MLABELEDTR = new ElementName("mlabeledtr", "mlabeledtr", TreeBuilder.OTHER);
     public static final ElementName NOTANUMBER = new ElementName("notanumber", "notanumber", TreeBuilder.OTHER);
     public static final ElementName SOLIDCOLOR = new ElementName("solidcolor", "solidcolor", TreeBuilder.OTHER);
     public static final ElementName ALTGLYPHDEF = new ElementName("altglyphdef", "altGlyphDef", TreeBuilder.OTHER);
     public static final ElementName DETERMINANT = new ElementName("determinant", "determinant", TreeBuilder.OTHER);
@@ -1008,16 +1009,17 @@ public final class ElementName
     APPROX,
     BUTTON,
     CIRCLE,
     CENTER,
     CURSOR,
     CANVAS,
     DIVIDE,
     DEGREE,
+    DIALOG,
     DOMAIN,
     EXISTS,
     FETILE,
     FIGURE,
     FORALL,
     FILTER,
     FOOTER,
     HGROUP,
@@ -1084,19 +1086,19 @@ public final class ElementName
     LOGBASE,
     LISTING,
     MFENCED,
     MPADDED,
     MARQUEE,
     MACTION,
     MSUBSUP,
     NOEMBED,
+    PICTURE,
     POLYGON,
     PATTERN,
-    PICTURE,
     PRODUCT,
     SETDIFF,
     SECTION,
     SUMMARY,
     TENDSTO,
     UPLIMIT,
     ALTGLYPH,
     BASEFONT,
@@ -1407,16 +1409,17 @@ public final class ElementName
     203177552,
     203898516,
     204648562,
     205067918,
     205078130,
     205096654,
     205689142,
     205690439,
+    205766017,
     205988909,
     207213161,
     207794484,
     207800999,
     208023602,
     208213644,
     208213647,
     210261490,
@@ -1483,19 +1486,19 @@ public final class ElementName
     247647266,
     247707956,
     248648814,
     248648836,
     248682161,
     248986932,
     249058914,
     249697357,
+    251841204,
     252132601,
     252135604,
-    251841204,
     252317348,
     255007012,
     255278388,
     255641645,
     256365156,
     257566121,
     269763372,
     271202790,
--- a/parser/html/javasrc/TreeBuilder.java
+++ b/parser/html/javasrc/TreeBuilder.java
@@ -164,17 +164,17 @@ public abstract class TreeBuilder<T> imp
     final static int IFRAME = 47;
 
     final static int EMBED = 48;
 
     final static int AREA_OR_WBR = 49;
 
     final static int DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU = 50;
 
-    final static int ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_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_SECTION_OR_SUMMARY = 51;
 
     final static int RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR = 52;
 
     final static int RB_OR_RTC = 53;
 
     final static int PARAM_OR_SOURCE_OR_TRACK = 55;
 
     final static int MGLYPH_OR_MALIGNMARK = 56;
@@ -2117,17 +2117,17 @@ public abstract class TreeBuilder<T> imp
                                 }
                                 if (addAttributesToBody(attributes)) {
                                     attributes = null; // CPP
                                 }
                                 break 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_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_SECTION_OR_SUMMARY:
                                 implicitlyCloseP();
                                 appendToCurrentNodeAndPushElementMayFoster(
                                         elementName,
                                         attributes);
                                 attributes = null; // CPP
                                 break starttagloop;
                             case H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6:
                                 implicitlyCloseP();
@@ -3675,17 +3675,17 @@ public abstract class TreeBuilder<T> imp
                             }
                             mode = AFTER_BODY;
                             continue;
                         case DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU:
                         case UL_OR_OL_OR_DL:
                         case PRE_OR_LISTING:
                         case FIELDSET:
                         case BUTTON:
-                        case ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_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_SECTION_OR_SUMMARY:
                             eltPos = findLastInScope(name);
                             if (eltPos == TreeBuilder.NOT_FOUND_ON_STACK) {
                                 errStrayEndTag(name);
                             } else {
                                 generateImpliedEndTags();
                                 if (errorHandler != null && !isCurrent(name)) {
                                     errUnclosedElements(eltPos, name);
                                 }
--- a/parser/html/nsHtml5AtomList.h
+++ b/parser/html/nsHtml5AtomList.h
@@ -862,16 +862,17 @@ HTML5_ATOM(arccos, "arccos")
 HTML5_ATOM(applet, "applet")
 HTML5_ATOM(arccot, "arccot")
 HTML5_ATOM(approx, "approx")
 HTML5_ATOM(circle, "circle")
 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")
 HTML5_ATOM(feTile, "feTile")
 HTML5_ATOM(figure, "figure")
 HTML5_ATOM(forall, "forall")
 HTML5_ATOM(footer, "footer")
 HTML5_ATOM(hgroup, "hgroup")
@@ -937,18 +938,18 @@ HTML5_ATOM(implies, "implies")
 HTML5_ATOM(isindex, "isindex")
 HTML5_ATOM(logbase, "logbase")
 HTML5_ATOM(listing, "listing")
 HTML5_ATOM(mfenced, "mfenced")
 HTML5_ATOM(mpadded, "mpadded")
 HTML5_ATOM(marquee, "marquee")
 HTML5_ATOM(maction, "maction")
 HTML5_ATOM(msubsup, "msubsup")
+HTML5_ATOM(picture, "picture")
 HTML5_ATOM(polygon, "polygon")
-HTML5_ATOM(picture, "picture")
 HTML5_ATOM(product, "product")
 HTML5_ATOM(setdiff, "setdiff")
 HTML5_ATOM(section, "section")
 HTML5_ATOM(tendsto, "tendsto")
 HTML5_ATOM(uplimit, "uplimit")
 HTML5_ATOM(altglyph, "altglyph")
 HTML5_ATOM(altGlyph, "altGlyph")
 HTML5_ATOM(basefont, "basefont")
--- a/parser/html/nsHtml5ElementName.cpp
+++ b/parser/html/nsHtml5ElementName.cpp
@@ -1,27 +1,27 @@
 /*
- * Copyright (c) 2008-2014 Mozilla Foundation
+ * Copyright (c) 2008-2016 Mozilla Foundation
  *
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
  * Software is furnished to do so, subject to the following conditions:
  *
- * The above copyright notice and this permission notice shall be included in 
+ * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
  *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  */
 
 /*
  * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT.
  * Please edit ElementName.java instead and regenerate.
  */
 
@@ -334,16 +334,17 @@ nsHtml5ElementName* nsHtml5ElementName::
 nsHtml5ElementName* nsHtml5ElementName::ELT_APPROX = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_BUTTON = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_CIRCLE = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_CENTER = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_CURSOR = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_CANVAS = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_DIVIDE = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_DEGREE = nullptr;
+nsHtml5ElementName* nsHtml5ElementName::ELT_DIALOG = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_DOMAIN = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_EXISTS = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FETILE = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FIGURE = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FORALL = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FILTER = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FOOTER = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_HGROUP = nullptr;
@@ -410,19 +411,19 @@ nsHtml5ElementName* nsHtml5ElementName::
 nsHtml5ElementName* nsHtml5ElementName::ELT_LOGBASE = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_LISTING = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_MFENCED = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_MPADDED = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_MARQUEE = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_MACTION = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_MSUBSUP = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_NOEMBED = nullptr;
+nsHtml5ElementName* nsHtml5ElementName::ELT_PICTURE = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_POLYGON = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_PATTERN = nullptr;
-nsHtml5ElementName* nsHtml5ElementName::ELT_PICTURE = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_PRODUCT = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_SETDIFF = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_SECTION = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_SUMMARY = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_TENDSTO = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_UPLIMIT = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_ALTGLYPH = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_BASEFONT = nullptr;
@@ -528,17 +529,17 @@ nsHtml5ElementName* nsHtml5ElementName::
 nsHtml5ElementName* nsHtml5ElementName::ELT_FONT_FACE_FORMAT = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FECONVOLVEMATRIX = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FEDIFFUSELIGHTING = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FEDISPLACEMENTMAP = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FESPECULARLIGHTING = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_DOMAINOFAPPLICATION = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FECOMPONENTTRANSFER = nullptr;
 nsHtml5ElementName** nsHtml5ElementName::ELEMENT_NAMES = 0;
-static int32_t 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, 84050, 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, 3739282, 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, 148317229, 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, 189107250, 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, 221908140, 221910626, 221921586, 222659762, 225001091, 236105833, 236113965, 236194995, 236195427, 236206132, 236206387, 236211683, 236212707, 236381647, 236571826, 237124271, 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, 251841204, 252317348, 255007012, 255278388, 255641645, 256365156, 257566121, 269763372, 271202790, 271863856, 272049197, 272127474, 274339449, 274939471, 275388004, 275388005, 275388006, 275977800, 278267602, 278513831, 278712622, 281613765, 281683369, 282120228, 282250732, 282498697, 282508942, 283743649, 283787570, 284710386, 285391148, 285478533, 285854898, 285873762, 286931113, 288964227, 289445441, 289591340, 289689648, 291671489, 303512884, 305319975, 305610036, 305764101, 308448294, 308675890, 312085683, 312264750, 315032867, 316391000, 317331042, 317902135, 318950711, 319447220, 321499182, 322538804, 323145200, 337067316, 337826293, 339905989, 340833697, 341457068, 342310196, 345302593, 349554733, 349771471, 349786245, 350819405, 356072847, 370349192, 373962798, 375558638, 375574835, 376053993, 383276530, 383373833, 383407586, 384439906, 386079012, 404133513, 404307343, 407031852, 408072233, 409112005, 409608425, 409713793, 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 int32_t 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, 84050, 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, 3739282, 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, 148317229, 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, 189107250, 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, 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, 221908140, 221910626, 221921586, 222659762, 225001091, 236105833, 236113965, 236194995, 236195427, 236206132, 236206387, 236211683, 236212707, 236381647, 236571826, 237124271, 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, 251841204, 252132601, 252135604, 252317348, 255007012, 255278388, 255641645, 256365156, 257566121, 269763372, 271202790, 271863856, 272049197, 272127474, 274339449, 274939471, 275388004, 275388005, 275388006, 275977800, 278267602, 278513831, 278712622, 281613765, 281683369, 282120228, 282250732, 282498697, 282508942, 283743649, 283787570, 284710386, 285391148, 285478533, 285854898, 285873762, 286931113, 288964227, 289445441, 289591340, 289689648, 291671489, 303512884, 305319975, 305610036, 305764101, 308448294, 308675890, 312085683, 312264750, 315032867, 316391000, 317331042, 317902135, 318950711, 319447220, 321499182, 322538804, 323145200, 337067316, 337826293, 339905989, 340833697, 341457068, 342310196, 345302593, 349554733, 349771471, 349786245, 350819405, 356072847, 370349192, 373962798, 375558638, 375574835, 376053993, 383276530, 383373833, 383407586, 384439906, 386079012, 404133513, 404307343, 407031852, 408072233, 409112005, 409608425, 409713793, 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 };
 staticJArray<int32_t,int32_t> nsHtml5ElementName::ELEMENT_HASHES = { ELEMENT_HASHES_DATA, MOZ_ARRAY_LENGTH(ELEMENT_HASHES_DATA) };
 void
 nsHtml5ElementName::initializeStatics()
 {
   ELT_NULL_ELEMENT_NAME = new nsHtml5ElementName(nullptr);
   ELT_A = new nsHtml5ElementName(nsHtml5Atoms::a, nsHtml5Atoms::a, NS_HTML5TREE_BUILDER_A);
   ELT_B = new nsHtml5ElementName(nsHtml5Atoms::b, nsHtml5Atoms::b, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   ELT_G = new nsHtml5ElementName(nsHtml5Atoms::g, nsHtml5Atoms::g, NS_HTML5TREE_BUILDER_OTHER);
@@ -589,17 +590,17 @@ nsHtml5ElementName::initializeStatics()
   ELT_BIG = new nsHtml5ElementName(nsHtml5Atoms::big, nsHtml5Atoms::big, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   ELT_BDO = new nsHtml5ElementName(nsHtml5Atoms::bdo, nsHtml5Atoms::bdo, NS_HTML5TREE_BUILDER_OTHER);
   ELT_CSC = new nsHtml5ElementName(nsHtml5Atoms::csc, nsHtml5Atoms::csc, NS_HTML5TREE_BUILDER_OTHER);
   ELT_COL = new nsHtml5ElementName(nsHtml5Atoms::col, nsHtml5Atoms::col, NS_HTML5TREE_BUILDER_COL | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_COS = new nsHtml5ElementName(nsHtml5Atoms::cos, nsHtml5Atoms::cos, NS_HTML5TREE_BUILDER_OTHER);
   ELT_COT = new nsHtml5ElementName(nsHtml5Atoms::cot, nsHtml5Atoms::cot, NS_HTML5TREE_BUILDER_OTHER);
   ELT_DEL = new nsHtml5ElementName(nsHtml5Atoms::del, nsHtml5Atoms::del, NS_HTML5TREE_BUILDER_OTHER);
   ELT_DFN = new nsHtml5ElementName(nsHtml5Atoms::dfn, nsHtml5Atoms::dfn, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_DIR = new nsHtml5ElementName(nsHtml5Atoms::dir, nsHtml5Atoms::dir, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_DIR = new nsHtml5ElementName(nsHtml5Atoms::dir, nsHtml5Atoms::dir, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_DIV = new nsHtml5ElementName(nsHtml5Atoms::div, nsHtml5Atoms::div, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_EXP = new nsHtml5ElementName(nsHtml5Atoms::exp, nsHtml5Atoms::exp, NS_HTML5TREE_BUILDER_OTHER);
   ELT_GCD = new nsHtml5ElementName(nsHtml5Atoms::gcd, nsHtml5Atoms::gcd, NS_HTML5TREE_BUILDER_OTHER);
   ELT_GEQ = new nsHtml5ElementName(nsHtml5Atoms::geq, nsHtml5Atoms::geq, NS_HTML5TREE_BUILDER_OTHER);
   ELT_IMG = new nsHtml5ElementName(nsHtml5Atoms::img, nsHtml5Atoms::img, NS_HTML5TREE_BUILDER_IMG | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_INS = new nsHtml5ElementName(nsHtml5Atoms::ins, nsHtml5Atoms::ins, NS_HTML5TREE_BUILDER_OTHER);
   ELT_INT = new nsHtml5ElementName(nsHtml5Atoms::int_, nsHtml5Atoms::int_, NS_HTML5TREE_BUILDER_OTHER);
   ELT_KBD = new nsHtml5ElementName(nsHtml5Atoms::kbd, nsHtml5Atoms::kbd, NS_HTML5TREE_BUILDER_OTHER);
@@ -608,17 +609,17 @@ nsHtml5ElementName::initializeStatics()
   ELT_LEQ = new nsHtml5ElementName(nsHtml5Atoms::leq, nsHtml5Atoms::leq, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MTD = new nsHtml5ElementName(nsHtml5Atoms::mtd, nsHtml5Atoms::mtd, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MIN = new nsHtml5ElementName(nsHtml5Atoms::min, nsHtml5Atoms::min, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MAP = new nsHtml5ElementName(nsHtml5Atoms::map, nsHtml5Atoms::map, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MTR = new nsHtml5ElementName(nsHtml5Atoms::mtr, nsHtml5Atoms::mtr, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MAX = new nsHtml5ElementName(nsHtml5Atoms::max, nsHtml5Atoms::max, NS_HTML5TREE_BUILDER_OTHER);
   ELT_NEQ = new nsHtml5ElementName(nsHtml5Atoms::neq, nsHtml5Atoms::neq, NS_HTML5TREE_BUILDER_OTHER);
   ELT_NOT = new nsHtml5ElementName(nsHtml5Atoms::not_, nsHtml5Atoms::not_, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_NAV = new nsHtml5ElementName(nsHtml5Atoms::nav, nsHtml5Atoms::nav, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_NAV = new nsHtml5ElementName(nsHtml5Atoms::nav, nsHtml5Atoms::nav, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_PRE = new nsHtml5ElementName(nsHtml5Atoms::pre, nsHtml5Atoms::pre, NS_HTML5TREE_BUILDER_PRE_OR_LISTING | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_RTC = new nsHtml5ElementName(nsHtml5Atoms::rtc, nsHtml5Atoms::rtc, NS_HTML5TREE_BUILDER_RB_OR_RTC | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG);
   ELT_REM = new nsHtml5ElementName(nsHtml5Atoms::rem, nsHtml5Atoms::rem, NS_HTML5TREE_BUILDER_OTHER);
   ELT_SUB = new nsHtml5ElementName(nsHtml5Atoms::sub, nsHtml5Atoms::sub, NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
   ELT_SEC = new nsHtml5ElementName(nsHtml5Atoms::sec, nsHtml5Atoms::sec, NS_HTML5TREE_BUILDER_OTHER);
   ELT_SVG = new nsHtml5ElementName(nsHtml5Atoms::svg, nsHtml5Atoms::svg, NS_HTML5TREE_BUILDER_SVG);
   ELT_SUM = new nsHtml5ElementName(nsHtml5Atoms::sum, nsHtml5Atoms::sum, NS_HTML5TREE_BUILDER_OTHER);
   ELT_SIN = new nsHtml5ElementName(nsHtml5Atoms::sin, nsHtml5Atoms::sin, NS_HTML5TREE_BUILDER_OTHER);
@@ -656,17 +657,17 @@ nsHtml5ElementName::initializeStatics()
   ELT_LIST = new nsHtml5ElementName(nsHtml5Atoms::list, nsHtml5Atoms::list, NS_HTML5TREE_BUILDER_OTHER);
   ELT_META = new nsHtml5ElementName(nsHtml5Atoms::meta, nsHtml5Atoms::meta, NS_HTML5TREE_BUILDER_META | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_MSUB = new nsHtml5ElementName(nsHtml5Atoms::msub, nsHtml5Atoms::msub, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MODE = new nsHtml5ElementName(nsHtml5Atoms::mode, nsHtml5Atoms::mode, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MATH = new nsHtml5ElementName(nsHtml5Atoms::math, nsHtml5Atoms::math, NS_HTML5TREE_BUILDER_MATH);
   ELT_MARK = new nsHtml5ElementName(nsHtml5Atoms::mark, nsHtml5Atoms::mark, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MASK = new nsHtml5ElementName(nsHtml5Atoms::mask, nsHtml5Atoms::mask, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MEAN = new nsHtml5ElementName(nsHtml5Atoms::mean, nsHtml5Atoms::mean, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_MAIN = new nsHtml5ElementName(nsHtml5Atoms::main, nsHtml5Atoms::main, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_MAIN = new nsHtml5ElementName(nsHtml5Atoms::main, nsHtml5Atoms::main, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_MSUP = new nsHtml5ElementName(nsHtml5Atoms::msup, nsHtml5Atoms::msup, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MENU = new nsHtml5ElementName(nsHtml5Atoms::menu, nsHtml5Atoms::menu, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_MROW = new nsHtml5ElementName(nsHtml5Atoms::mrow, nsHtml5Atoms::mrow, NS_HTML5TREE_BUILDER_OTHER);
   ELT_NONE = new nsHtml5ElementName(nsHtml5Atoms::none, nsHtml5Atoms::none, NS_HTML5TREE_BUILDER_OTHER);
   ELT_NOBR = new nsHtml5ElementName(nsHtml5Atoms::nobr, nsHtml5Atoms::nobr, NS_HTML5TREE_BUILDER_NOBR);
   ELT_NEST = new nsHtml5ElementName(nsHtml5Atoms::nest, nsHtml5Atoms::nest, NS_HTML5TREE_BUILDER_OTHER);
   ELT_PATH = new nsHtml5ElementName(nsHtml5Atoms::path, nsHtml5Atoms::path, NS_HTML5TREE_BUILDER_OTHER);
   ELT_PLUS = new nsHtml5ElementName(nsHtml5Atoms::plus, nsHtml5Atoms::plus, NS_HTML5TREE_BUILDER_OTHER);
@@ -683,17 +684,17 @@ nsHtml5ElementName::initializeStatics()
   ELT_STOP = new nsHtml5ElementName(nsHtml5Atoms::stop, nsHtml5Atoms::stop, NS_HTML5TREE_BUILDER_OTHER);
   ELT_SDEV = new nsHtml5ElementName(nsHtml5Atoms::sdev, nsHtml5Atoms::sdev, NS_HTML5TREE_BUILDER_OTHER);
   ELT_TIME = new nsHtml5ElementName(nsHtml5Atoms::time, nsHtml5Atoms::time, NS_HTML5TREE_BUILDER_OTHER);
   ELT_TRUE = new nsHtml5ElementName(nsHtml5Atoms::true_, nsHtml5Atoms::true_, NS_HTML5TREE_BUILDER_OTHER);
   ELT_TREF = new nsHtml5ElementName(nsHtml5Atoms::tref, nsHtml5Atoms::tref, NS_HTML5TREE_BUILDER_OTHER);
   ELT_TANH = new nsHtml5ElementName(nsHtml5Atoms::tanh, nsHtml5Atoms::tanh, NS_HTML5TREE_BUILDER_OTHER);
   ELT_TEXT = new nsHtml5ElementName(nsHtml5Atoms::text, nsHtml5Atoms::text, NS_HTML5TREE_BUILDER_OTHER);
   ELT_VIEW = new nsHtml5ElementName(nsHtml5Atoms::view, nsHtml5Atoms::view, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_ASIDE = new nsHtml5ElementName(nsHtml5Atoms::aside, nsHtml5Atoms::aside, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_ASIDE = new nsHtml5ElementName(nsHtml5Atoms::aside, nsHtml5Atoms::aside, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_AUDIO = new nsHtml5ElementName(nsHtml5Atoms::audio, nsHtml5Atoms::audio, NS_HTML5TREE_BUILDER_OTHER);
   ELT_APPLY = new nsHtml5ElementName(nsHtml5Atoms::apply, nsHtml5Atoms::apply, NS_HTML5TREE_BUILDER_OTHER);
   ELT_EMBED = new nsHtml5ElementName(nsHtml5Atoms::embed, nsHtml5Atoms::embed, NS_HTML5TREE_BUILDER_EMBED | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_FRAME = new nsHtml5ElementName(nsHtml5Atoms::frame, nsHtml5Atoms::frame, NS_HTML5TREE_BUILDER_FRAME | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_FALSE = new nsHtml5ElementName(nsHtml5Atoms::false_, nsHtml5Atoms::false_, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FLOOR = new nsHtml5ElementName(nsHtml5Atoms::floor, nsHtml5Atoms::floor, NS_HTML5TREE_BUILDER_OTHER);
   ELT_GLYPH = new nsHtml5ElementName(nsHtml5Atoms::glyph, nsHtml5Atoms::glyph, NS_HTML5TREE_BUILDER_OTHER);
   ELT_HKERN = new nsHtml5ElementName(nsHtml5Atoms::hkern, nsHtml5Atoms::hkern, NS_HTML5TREE_BUILDER_OTHER);
@@ -738,25 +739,26 @@ nsHtml5ElementName::initializeStatics()
   ELT_APPROX = new nsHtml5ElementName(nsHtml5Atoms::approx, nsHtml5Atoms::approx, NS_HTML5TREE_BUILDER_OTHER);
   ELT_BUTTON = new nsHtml5ElementName(nsHtml5Atoms::button, nsHtml5Atoms::button, NS_HTML5TREE_BUILDER_BUTTON | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_CIRCLE = new nsHtml5ElementName(nsHtml5Atoms::circle, nsHtml5Atoms::circle, NS_HTML5TREE_BUILDER_OTHER);
   ELT_CENTER = new nsHtml5ElementName(nsHtml5Atoms::center, nsHtml5Atoms::center, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_CURSOR = new nsHtml5ElementName(nsHtml5Atoms::cursor, nsHtml5Atoms::cursor, NS_HTML5TREE_BUILDER_OTHER);
   ELT_CANVAS = new nsHtml5ElementName(nsHtml5Atoms::canvas, nsHtml5Atoms::canvas, NS_HTML5TREE_BUILDER_OTHER);
   ELT_DIVIDE = new nsHtml5ElementName(nsHtml5Atoms::divide, nsHtml5Atoms::divide, NS_HTML5TREE_BUILDER_OTHER);
   ELT_DEGREE = new nsHtml5ElementName(nsHtml5Atoms::degree, nsHtml5Atoms::degree, NS_HTML5TREE_BUILDER_OTHER);
+  ELT_DIALOG = new nsHtml5ElementName(nsHtml5Atoms::dialog, nsHtml5Atoms::dialog, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_DOMAIN = new nsHtml5ElementName(nsHtml5Atoms::domain, nsHtml5Atoms::domain, NS_HTML5TREE_BUILDER_OTHER);
   ELT_EXISTS = new nsHtml5ElementName(nsHtml5Atoms::exists, nsHtml5Atoms::exists, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FETILE = new nsHtml5ElementName(nsHtml5Atoms::fetile, nsHtml5Atoms::feTile, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_FIGURE = new nsHtml5ElementName(nsHtml5Atoms::figure, nsHtml5Atoms::figure, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_FIGURE = new nsHtml5ElementName(nsHtml5Atoms::figure, nsHtml5Atoms::figure, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_FORALL = new nsHtml5ElementName(nsHtml5Atoms::forall, nsHtml5Atoms::forall, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FILTER = new nsHtml5ElementName(nsHtml5Atoms::filter, nsHtml5Atoms::filter, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_FOOTER = new nsHtml5ElementName(nsHtml5Atoms::footer, nsHtml5Atoms::footer, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
-  ELT_HGROUP = new nsHtml5ElementName(nsHtml5Atoms::hgroup, nsHtml5Atoms::hgroup, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
-  ELT_HEADER = new nsHtml5ElementName(nsHtml5Atoms::header, nsHtml5Atoms::header, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_FOOTER = new nsHtml5ElementName(nsHtml5Atoms::footer, nsHtml5Atoms::footer, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_HGROUP = new nsHtml5ElementName(nsHtml5Atoms::hgroup, nsHtml5Atoms::hgroup, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_HEADER = new nsHtml5ElementName(nsHtml5Atoms::header, nsHtml5Atoms::header, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_IFRAME = new nsHtml5ElementName(nsHtml5Atoms::iframe, nsHtml5Atoms::iframe, NS_HTML5TREE_BUILDER_IFRAME | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_KEYGEN = new nsHtml5ElementName(nsHtml5Atoms::keygen, nsHtml5Atoms::keygen, NS_HTML5TREE_BUILDER_KEYGEN);
   ELT_LAMBDA = new nsHtml5ElementName(nsHtml5Atoms::lambda, nsHtml5Atoms::lambda, NS_HTML5TREE_BUILDER_OTHER);
   ELT_LEGEND = new nsHtml5ElementName(nsHtml5Atoms::legend, nsHtml5Atoms::legend, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MSPACE = new nsHtml5ElementName(nsHtml5Atoms::mspace, nsHtml5Atoms::mspace, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MTABLE = new nsHtml5ElementName(nsHtml5Atoms::mtable, nsHtml5Atoms::mtable, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MSTYLE = new nsHtml5ElementName(nsHtml5Atoms::mstyle, nsHtml5Atoms::mstyle, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MGLYPH = new nsHtml5ElementName(nsHtml5Atoms::mglyph, nsHtml5Atoms::mglyph, NS_HTML5TREE_BUILDER_MGLYPH_OR_MALIGNMARK);
@@ -775,34 +777,34 @@ nsHtml5ElementName::initializeStatics()
   ELT_STRONG = new nsHtml5ElementName(nsHtml5Atoms::strong, nsHtml5Atoms::strong, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
   ELT_SWITCH = new nsHtml5ElementName(nsHtml5Atoms::switch_, nsHtml5Atoms::switch_, NS_HTML5TREE_BUILDER_OTHER);
   ELT_SYMBOL = new nsHtml5ElementName(nsHtml5Atoms::symbol, nsHtml5Atoms::symbol, NS_HTML5TREE_BUILDER_OTHER);
   ELT_SELECT = new nsHtml5ElementName(nsHtml5Atoms::select, nsHtml5Atoms::select, NS_HTML5TREE_BUILDER_SELECT | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_SUBSET = new nsHtml5ElementName(nsHtml5Atoms::subset, nsHtml5Atoms::subset, NS_HTML5TREE_BUILDER_OTHER);
   ELT_SCRIPT = new nsHtml5ElementName(nsHtml5Atoms::script, nsHtml5Atoms::script, NS_HTML5TREE_BUILDER_SCRIPT | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_TBREAK = new nsHtml5ElementName(nsHtml5Atoms::tbreak, nsHtml5Atoms::tbreak, NS_HTML5TREE_BUILDER_OTHER);
   ELT_VECTOR = new nsHtml5ElementName(nsHtml5Atoms::vector, nsHtml5Atoms::vector, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_ARTICLE = new nsHtml5ElementName(nsHtml5Atoms::article, nsHtml5Atoms::article, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_ARTICLE = new nsHtml5ElementName(nsHtml5Atoms::article, nsHtml5Atoms::article, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_ANIMATE = new nsHtml5ElementName(nsHtml5Atoms::animate, nsHtml5Atoms::animate, NS_HTML5TREE_BUILDER_OTHER);
   ELT_ARCSECH = new nsHtml5ElementName(nsHtml5Atoms::arcsech, nsHtml5Atoms::arcsech, NS_HTML5TREE_BUILDER_OTHER);
   ELT_ARCCSCH = new nsHtml5ElementName(nsHtml5Atoms::arccsch, nsHtml5Atoms::arccsch, NS_HTML5TREE_BUILDER_OTHER);
   ELT_ARCTANH = new nsHtml5ElementName(nsHtml5Atoms::arctanh, nsHtml5Atoms::arctanh, NS_HTML5TREE_BUILDER_OTHER);
   ELT_ARCSINH = new nsHtml5ElementName(nsHtml5Atoms::arcsinh, nsHtml5Atoms::arcsinh, NS_HTML5TREE_BUILDER_OTHER);
   ELT_ARCCOSH = new nsHtml5ElementName(nsHtml5Atoms::arccosh, nsHtml5Atoms::arccosh, NS_HTML5TREE_BUILDER_OTHER);
   ELT_ARCCOTH = new nsHtml5ElementName(nsHtml5Atoms::arccoth, nsHtml5Atoms::arccoth, NS_HTML5TREE_BUILDER_OTHER);
   ELT_ACRONYM = new nsHtml5ElementName(nsHtml5Atoms::acronym, nsHtml5Atoms::acronym, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_ADDRESS = new nsHtml5ElementName(nsHtml5Atoms::address, nsHtml5Atoms::address, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_ADDRESS = new nsHtml5ElementName(nsHtml5Atoms::address, nsHtml5Atoms::address, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_BGSOUND = new nsHtml5ElementName(nsHtml5Atoms::bgsound, nsHtml5Atoms::bgsound, NS_HTML5TREE_BUILDER_LINK_OR_BASEFONT_OR_BGSOUND | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_COMPOSE = new nsHtml5ElementName(nsHtml5Atoms::compose, nsHtml5Atoms::compose, NS_HTML5TREE_BUILDER_OTHER);
   ELT_CEILING = new nsHtml5ElementName(nsHtml5Atoms::ceiling, nsHtml5Atoms::ceiling, NS_HTML5TREE_BUILDER_OTHER);
   ELT_CSYMBOL = new nsHtml5ElementName(nsHtml5Atoms::csymbol, nsHtml5Atoms::csymbol, NS_HTML5TREE_BUILDER_OTHER);
   ELT_CAPTION = new nsHtml5ElementName(nsHtml5Atoms::caption, nsHtml5Atoms::caption, NS_HTML5TREE_BUILDER_CAPTION | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_SCOPING);
   ELT_DISCARD = new nsHtml5ElementName(nsHtml5Atoms::discard, nsHtml5Atoms::discard, NS_HTML5TREE_BUILDER_OTHER);
   ELT_DECLARE = new nsHtml5ElementName(nsHtml5Atoms::declare, nsHtml5Atoms::declare, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_DETAILS = new nsHtml5ElementName(nsHtml5Atoms::details, nsHtml5Atoms::details, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_DETAILS = new nsHtml5ElementName(nsHtml5Atoms::details, nsHtml5Atoms::details, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_ELLIPSE = new nsHtml5ElementName(nsHtml5Atoms::ellipse, nsHtml5Atoms::ellipse, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FEFUNCA = new nsHtml5ElementName(nsHtml5Atoms::fefunca, nsHtml5Atoms::feFuncA, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FEFUNCB = new nsHtml5ElementName(nsHtml5Atoms::fefuncb, nsHtml5Atoms::feFuncB, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FEBLEND = new nsHtml5ElementName(nsHtml5Atoms::feblend, nsHtml5Atoms::feBlend, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FEFLOOD = new nsHtml5ElementName(nsHtml5Atoms::feflood, nsHtml5Atoms::feFlood, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FEIMAGE = new nsHtml5ElementName(nsHtml5Atoms::feimage, nsHtml5Atoms::feImage, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FEMERGE = new nsHtml5ElementName(nsHtml5Atoms::femerge, nsHtml5Atoms::feMerge, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FEFUNCG = new nsHtml5ElementName(nsHtml5Atoms::fefuncg, nsHtml5Atoms::feFuncG, NS_HTML5TREE_BUILDER_OTHER);
@@ -814,23 +816,23 @@ nsHtml5ElementName::initializeStatics()
   ELT_LOGBASE = new nsHtml5ElementName(nsHtml5Atoms::logbase, nsHtml5Atoms::logbase, NS_HTML5TREE_BUILDER_OTHER);
   ELT_LISTING = new nsHtml5ElementName(nsHtml5Atoms::listing, nsHtml5Atoms::listing, NS_HTML5TREE_BUILDER_PRE_OR_LISTING | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_MFENCED = new nsHtml5ElementName(nsHtml5Atoms::mfenced, nsHtml5Atoms::mfenced, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MPADDED = new nsHtml5ElementName(nsHtml5Atoms::mpadded, nsHtml5Atoms::mpadded, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MARQUEE = new nsHtml5ElementName(nsHtml5Atoms::marquee, nsHtml5Atoms::marquee, NS_HTML5TREE_BUILDER_MARQUEE_OR_APPLET | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_SCOPING);
   ELT_MACTION = new nsHtml5ElementName(nsHtml5Atoms::maction, nsHtml5Atoms::maction, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MSUBSUP = new nsHtml5ElementName(nsHtml5Atoms::msubsup, nsHtml5Atoms::msubsup, NS_HTML5TREE_BUILDER_OTHER);
   ELT_NOEMBED = new nsHtml5ElementName(nsHtml5Atoms::noembed, nsHtml5Atoms::noembed, NS_HTML5TREE_BUILDER_NOEMBED | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_PICTURE = new nsHtml5ElementName(nsHtml5Atoms::picture, nsHtml5Atoms::picture, NS_HTML5TREE_BUILDER_OTHER);
   ELT_POLYGON = new nsHtml5ElementName(nsHtml5Atoms::polygon, nsHtml5Atoms::polygon, NS_HTML5TREE_BUILDER_OTHER);
   ELT_PATTERN = new nsHtml5ElementName(nsHtml5Atoms::pattern, nsHtml5Atoms::pattern, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_PICTURE = new nsHtml5ElementName(nsHtml5Atoms::picture, nsHtml5Atoms::picture, NS_HTML5TREE_BUILDER_OTHER);
   ELT_PRODUCT = new nsHtml5ElementName(nsHtml5Atoms::product, nsHtml5Atoms::product, NS_HTML5TREE_BUILDER_OTHER);
   ELT_SETDIFF = new nsHtml5ElementName(nsHtml5Atoms::setdiff, nsHtml5Atoms::setdiff, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_SECTION = new nsHtml5ElementName(nsHtml5Atoms::section, nsHtml5Atoms::section, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
-  ELT_SUMMARY = new nsHtml5ElementName(nsHtml5Atoms::summary, nsHtml5Atoms::summary, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_SECTION = new nsHtml5ElementName(nsHtml5Atoms::section, nsHtml5Atoms::section, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_SUMMARY = new nsHtml5ElementName(nsHtml5Atoms::summary, nsHtml5Atoms::summary, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_TENDSTO = new nsHtml5ElementName(nsHtml5Atoms::tendsto, nsHtml5Atoms::tendsto, NS_HTML5TREE_BUILDER_OTHER);
   ELT_UPLIMIT = new nsHtml5ElementName(nsHtml5Atoms::uplimit, nsHtml5Atoms::uplimit, NS_HTML5TREE_BUILDER_OTHER);
   ELT_ALTGLYPH = new nsHtml5ElementName(nsHtml5Atoms::altglyph, nsHtml5Atoms::altGlyph, NS_HTML5TREE_BUILDER_OTHER);
   ELT_BASEFONT = new nsHtml5ElementName(nsHtml5Atoms::basefont, nsHtml5Atoms::basefont, NS_HTML5TREE_BUILDER_LINK_OR_BASEFONT_OR_BGSOUND | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_CLIPPATH = new nsHtml5ElementName(nsHtml5Atoms::clippath, nsHtml5Atoms::clipPath, NS_HTML5TREE_BUILDER_OTHER);
   ELT_CODOMAIN = new nsHtml5ElementName(nsHtml5Atoms::codomain, nsHtml5Atoms::codomain, NS_HTML5TREE_BUILDER_OTHER);
   ELT_COLGROUP = new nsHtml5ElementName(nsHtml5Atoms::colgroup, nsHtml5Atoms::colgroup, NS_HTML5TREE_BUILDER_COLGROUP | NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG);
   ELT_EMPTYSET = new nsHtml5ElementName(nsHtml5Atoms::emptyset, nsHtml5Atoms::emptyset, NS_HTML5TREE_BUILDER_OTHER);
@@ -878,17 +880,17 @@ nsHtml5ElementName::initializeStatics()
   ELT_RATIONALS = new nsHtml5ElementName(nsHtml5Atoms::rationals, nsHtml5Atoms::rationals, NS_HTML5TREE_BUILDER_OTHER);
   ELT_SEMANTICS = new nsHtml5ElementName(nsHtml5Atoms::semantics, nsHtml5Atoms::semantics, NS_HTML5TREE_BUILDER_OTHER);
   ELT_TRANSPOSE = new nsHtml5ElementName(nsHtml5Atoms::transpose, nsHtml5Atoms::transpose, NS_HTML5TREE_BUILDER_OTHER);
   ELT_ANNOTATION = new nsHtml5ElementName(nsHtml5Atoms::annotation, nsHtml5Atoms::annotation, NS_HTML5TREE_BUILDER_OTHER);
   ELT_BLOCKQUOTE = new nsHtml5ElementName(nsHtml5Atoms::blockquote, nsHtml5Atoms::blockquote, NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_DIVERGENCE = new nsHtml5ElementName(nsHtml5Atoms::divergence, nsHtml5Atoms::divergence, NS_HTML5TREE_BUILDER_OTHER);
   ELT_EULERGAMMA = new nsHtml5ElementName(nsHtml5Atoms::eulergamma, nsHtml5Atoms::eulergamma, NS_HTML5TREE_BUILDER_OTHER);
   ELT_EQUIVALENT = new nsHtml5ElementName(nsHtml5Atoms::equivalent, nsHtml5Atoms::equivalent, NS_HTML5TREE_BUILDER_OTHER);
-  ELT_FIGCAPTION = new nsHtml5ElementName(nsHtml5Atoms::figcaption, nsHtml5Atoms::figcaption, NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | NS_HTML5ELEMENT_NAME_SPECIAL);
+  ELT_FIGCAPTION = new nsHtml5ElementName(nsHtml5Atoms::figcaption, nsHtml5Atoms::figcaption, NS_HTML5TREE_BUILDER_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 | NS_HTML5ELEMENT_NAME_SPECIAL);
   ELT_IMAGINARYI = new nsHtml5ElementName(nsHtml5Atoms::imaginaryi, nsHtml5Atoms::imaginaryi, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MALIGNMARK = new nsHtml5ElementName(nsHtml5Atoms::malignmark, nsHtml5Atoms::malignmark, NS_HTML5TREE_BUILDER_MGLYPH_OR_MALIGNMARK);
   ELT_MUNDEROVER = new nsHtml5ElementName(nsHtml5Atoms::munderover, nsHtml5Atoms::munderover, NS_HTML5TREE_BUILDER_OTHER);
   ELT_MLABELEDTR = new nsHtml5ElementName(nsHtml5Atoms::mlabeledtr, nsHtml5Atoms::mlabeledtr, NS_HTML5TREE_BUILDER_OTHER);
   ELT_NOTANUMBER = new nsHtml5ElementName(nsHtml5Atoms::notanumber, nsHtml5Atoms::notanumber, NS_HTML5TREE_BUILDER_OTHER);
   ELT_SOLIDCOLOR = new nsHtml5ElementName(nsHtml5Atoms::solidcolor, nsHtml5Atoms::solidcolor, NS_HTML5TREE_BUILDER_OTHER);
   ELT_ALTGLYPHDEF = new nsHtml5ElementName(nsHtml5Atoms::altglyphdef, nsHtml5Atoms::altGlyphDef, NS_HTML5TREE_BUILDER_OTHER);
   ELT_DETERMINANT = new nsHtml5ElementName(nsHtml5Atoms::determinant, nsHtml5Atoms::determinant, NS_HTML5TREE_BUILDER_OTHER);
@@ -931,17 +933,17 @@ nsHtml5ElementName::initializeStatics()
   ELT_CARTESIANPRODUCT = new nsHtml5ElementName(nsHtml5Atoms::cartesianproduct, nsHtml5Atoms::cartesianproduct, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FONT_FACE_FORMAT = new nsHtml5ElementName(nsHtml5Atoms::font_face_format, nsHtml5Atoms::font_face_format, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FECONVOLVEMATRIX = new nsHtml5ElementName(nsHtml5Atoms::feconvolvematrix, nsHtml5Atoms::feConvolveMatrix, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FEDIFFUSELIGHTING = new nsHtml5ElementName(nsHtml5Atoms::fediffuselighting, nsHtml5Atoms::feDiffuseLighting, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FEDISPLACEMENTMAP = new nsHtml5ElementName(nsHtml5Atoms::fedisplacementmap, nsHtml5Atoms::feDisplacementMap, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FESPECULARLIGHTING = new nsHtml5ElementName(nsHtml5Atoms::fespecularlighting, nsHtml5Atoms::feSpecularLighting, NS_HTML5TREE_BUILDER_OTHER);
   ELT_DOMAINOFAPPLICATION = new nsHtml5ElementName(nsHtml5Atoms::domainofapplication, nsHtml5Atoms::domainofapplication, NS_HTML5TREE_BUILDER_OTHER);
   ELT_FECOMPONENTTRANSFER = new nsHtml5ElementName(nsHtml5Atoms::fecomponenttransfer, nsHtml5Atoms::feComponentTransfer, NS_HTML5TREE_BUILDER_OTHER);
-  ELEMENT_NAMES = new nsHtml5ElementName*[397];
+  ELEMENT_NAMES = new nsHtml5ElementName*[398];
   ELEMENT_NAMES[0] = ELT_A;
   ELEMENT_NAMES[1] = ELT_B;
   ELEMENT_NAMES[2] = ELT_G;
   ELEMENT_NAMES[3] = ELT_I;
   ELEMENT_NAMES[4] = ELT_P;
   ELEMENT_NAMES[5] = ELT_Q;
   ELEMENT_NAMES[6] = ELT_S;
   ELEMENT_NAMES[7] = ELT_U;
@@ -1136,209 +1138,210 @@ nsHtml5ElementName::initializeStatics()
   ELEMENT_NAMES[196] = ELT_APPROX;
   ELEMENT_NAMES[197] = ELT_BUTTON;
   ELEMENT_NAMES[198] = ELT_CIRCLE;
   ELEMENT_NAMES[199] = ELT_CENTER;
   ELEMENT_NAMES[200] = ELT_CURSOR;
   ELEMENT_NAMES[201] = ELT_CANVAS;
   ELEMENT_NAMES[202] = ELT_DIVIDE;
   ELEMENT_NAMES[203] = ELT_DEGREE;
-  ELEMENT_NAMES[204] = ELT_DOMAIN;
-  ELEMENT_NAMES[205] = ELT_EXISTS;
-  ELEMENT_NAMES[206] = ELT_FETILE;
-  ELEMENT_NAMES[207] = ELT_FIGURE;
-  ELEMENT_NAMES[208] = ELT_FORALL;
-  ELEMENT_NAMES[209] = ELT_FILTER;
-  ELEMENT_NAMES[210] = ELT_FOOTER;
-  ELEMENT_NAMES[211] = ELT_HGROUP;
-  ELEMENT_NAMES[212] = ELT_HEADER;
-  ELEMENT_NAMES[213] = ELT_IFRAME;
-  ELEMENT_NAMES[214] = ELT_KEYGEN;
-  ELEMENT_NAMES[215] = ELT_LAMBDA;
-  ELEMENT_NAMES[216] = ELT_LEGEND;
-  ELEMENT_NAMES[217] = ELT_MSPACE;
-  ELEMENT_NAMES[218] = ELT_MTABLE;
-  ELEMENT_NAMES[219] = ELT_MSTYLE;
-  ELEMENT_NAMES[220] = ELT_MGLYPH;
-  ELEMENT_NAMES[221] = ELT_MEDIAN;
-  ELEMENT_NAMES[222] = ELT_MUNDER;
-  ELEMENT_NAMES[223] = ELT_MARKER;
-  ELEMENT_NAMES[224] = ELT_MERROR;
-  ELEMENT_NAMES[225] = ELT_MOMENT;
-  ELEMENT_NAMES[226] = ELT_MATRIX;
-  ELEMENT_NAMES[227] = ELT_OPTION;
-  ELEMENT_NAMES[228] = ELT_OBJECT;
-  ELEMENT_NAMES[229] = ELT_OUTPUT;
-  ELEMENT_NAMES[230] = ELT_PRIMES;
-  ELEMENT_NAMES[231] = ELT_SOURCE;
-  ELEMENT_NAMES[232] = ELT_STRIKE;
-  ELEMENT_NAMES[233] = ELT_STRONG;
-  ELEMENT_NAMES[234] = ELT_SWITCH;
-  ELEMENT_NAMES[235] = ELT_SYMBOL;
-  ELEMENT_NAMES[236] = ELT_SELECT;
-  ELEMENT_NAMES[237] = ELT_SUBSET;
-  ELEMENT_NAMES[238] = ELT_SCRIPT;
-  ELEMENT_NAMES[239] = ELT_TBREAK;
-  ELEMENT_NAMES[240] = ELT_VECTOR;
-  ELEMENT_NAMES[241] = ELT_ARTICLE;
-  ELEMENT_NAMES[242] = ELT_ANIMATE;
-  ELEMENT_NAMES[243] = ELT_ARCSECH;
-  ELEMENT_NAMES[244] = ELT_ARCCSCH;
-  ELEMENT_NAMES[245] = ELT_ARCTANH;
-  ELEMENT_NAMES[246] = ELT_ARCSINH;
-  ELEMENT_NAMES[247] = ELT_ARCCOSH;
-  ELEMENT_NAMES[248] = ELT_ARCCOTH;
-  ELEMENT_NAMES[249] = ELT_ACRONYM;
-  ELEMENT_NAMES[250] = ELT_ADDRESS;
-  ELEMENT_NAMES[251] = ELT_BGSOUND;
-  ELEMENT_NAMES[252] = ELT_COMPOSE;
-  ELEMENT_NAMES[253] = ELT_CEILING;
-  ELEMENT_NAMES[254] = ELT_CSYMBOL;
-  ELEMENT_NAMES[255] = ELT_CAPTION;
-  ELEMENT_NAMES[256] = ELT_DISCARD;
-  ELEMENT_NAMES[257] = ELT_DECLARE;
-  ELEMENT_NAMES[258] = ELT_DETAILS;
-  ELEMENT_NAMES[259] = ELT_ELLIPSE;
-  ELEMENT_NAMES[260] = ELT_FEFUNCA;
-  ELEMENT_NAMES[261] = ELT_FEFUNCB;
-  ELEMENT_NAMES[262] = ELT_FEBLEND;
-  ELEMENT_NAMES[263] = ELT_FEFLOOD;
-  ELEMENT_NAMES[264] = ELT_FEIMAGE;
-  ELEMENT_NAMES[265] = ELT_FEMERGE;
-  ELEMENT_NAMES[266] = ELT_FEFUNCG;
-  ELEMENT_NAMES[267] = ELT_FEFUNCR;
-  ELEMENT_NAMES[268] = ELT_HANDLER;
-  ELEMENT_NAMES[269] = ELT_INVERSE;
-  ELEMENT_NAMES[270] = ELT_IMPLIES;
-  ELEMENT_NAMES[271] = ELT_ISINDEX;
-  ELEMENT_NAMES[272] = ELT_LOGBASE;
-  ELEMENT_NAMES[273] = ELT_LISTING;
-  ELEMENT_NAMES[274] = ELT_MFENCED;
-  ELEMENT_NAMES[275] = ELT_MPADDED;
-  ELEMENT_NAMES[276] = ELT_MARQUEE;
-  ELEMENT_NAMES[277] = ELT_MACTION;
-  ELEMENT_NAMES[278] = ELT_MSUBSUP;
-  ELEMENT_NAMES[279] = ELT_NOEMBED;
-  ELEMENT_NAMES[280] = ELT_POLYGON;
-  ELEMENT_NAMES[281] = ELT_PATTERN;
-  ELEMENT_NAMES[282] = ELT_PICTURE;
-  ELEMENT_NAMES[283] = ELT_PRODUCT;
-  ELEMENT_NAMES[284] = ELT_SETDIFF;
-  ELEMENT_NAMES[285] = ELT_SECTION;
-  ELEMENT_NAMES[286] = ELT_SUMMARY;
-  ELEMENT_NAMES[287] = ELT_TENDSTO;
-  ELEMENT_NAMES[288] = ELT_UPLIMIT;
-  ELEMENT_NAMES[289] = ELT_ALTGLYPH;
-  ELEMENT_NAMES[290] = ELT_BASEFONT;
-  ELEMENT_NAMES[291] = ELT_CLIPPATH;
-  ELEMENT_NAMES[292] = ELT_CODOMAIN;
-  ELEMENT_NAMES[293] = ELT_COLGROUP;
-  ELEMENT_NAMES[294] = ELT_EMPTYSET;
-  ELEMENT_NAMES[295] = ELT_FACTOROF;
-  ELEMENT_NAMES[296] = ELT_FIELDSET;
-  ELEMENT_NAMES[297] = ELT_FRAMESET;
-  ELEMENT_NAMES[298] = ELT_FEOFFSET;
-  ELEMENT_NAMES[299] = ELT_GLYPHREF;
-  ELEMENT_NAMES[300] = ELT_INTERVAL;
-  ELEMENT_NAMES[301] = ELT_INTEGERS;
-  ELEMENT_NAMES[302] = ELT_INFINITY;
-  ELEMENT_NAMES[303] = ELT_LISTENER;
-  ELEMENT_NAMES[304] = ELT_LOWLIMIT;
-  ELEMENT_NAMES[305] = ELT_METADATA;
-  ELEMENT_NAMES[306] = ELT_MENCLOSE;
-  ELEMENT_NAMES[307] = ELT_MENUITEM;
-  ELEMENT_NAMES[308] = ELT_MPHANTOM;
-  ELEMENT_NAMES[309] = ELT_NOFRAMES;
-  ELEMENT_NAMES[310] = ELT_NOSCRIPT;
-  ELEMENT_NAMES[311] = ELT_OPTGROUP;
-  ELEMENT_NAMES[312] = ELT_POLYLINE;
-  ELEMENT_NAMES[313] = ELT_PREFETCH;
-  ELEMENT_NAMES[314] = ELT_PROGRESS;
-  ELEMENT_NAMES[315] = ELT_PRSUBSET;
-  ELEMENT_NAMES[316] = ELT_QUOTIENT;
-  ELEMENT_NAMES[317] = ELT_SELECTOR;
-  ELEMENT_NAMES[318] = ELT_TEXTAREA;
-  ELEMENT_NAMES[319] = ELT_TEMPLATE;
-  ELEMENT_NAMES[320] = ELT_TEXTPATH;
-  ELEMENT_NAMES[321] = ELT_VARIANCE;
-  ELEMENT_NAMES[322] = ELT_ANIMATION;
-  ELEMENT_NAMES[323] = ELT_CONJUGATE;
-  ELEMENT_NAMES[324] = ELT_CONDITION;
-  ELEMENT_NAMES[325] = ELT_COMPLEXES;
-  ELEMENT_NAMES[326] = ELT_FONT_FACE;
-  ELEMENT_NAMES[327] = ELT_FACTORIAL;
-  ELEMENT_NAMES[328] = ELT_INTERSECT;
-  ELEMENT_NAMES[329] = ELT_IMAGINARY;
-  ELEMENT_NAMES[330] = ELT_LAPLACIAN;
-  ELEMENT_NAMES[331] = ELT_MATRIXROW;
-  ELEMENT_NAMES[332] = ELT_NOTSUBSET;
-  ELEMENT_NAMES[333] = ELT_OTHERWISE;
-  ELEMENT_NAMES[334] = ELT_PIECEWISE;
-  ELEMENT_NAMES[335] = ELT_PLAINTEXT;
-  ELEMENT_NAMES[336] = ELT_RATIONALS;
-  ELEMENT_NAMES[337] = ELT_SEMANTICS;
-  ELEMENT_NAMES[338] = ELT_TRANSPOSE;
-  ELEMENT_NAMES[339] = ELT_ANNOTATION;
-  ELEMENT_NAMES[340] = ELT_BLOCKQUOTE;
-  ELEMENT_NAMES[341] = ELT_DIVERGENCE;
-  ELEMENT_NAMES[342] = ELT_EULERGAMMA;
-  ELEMENT_NAMES[343] = ELT_EQUIVALENT;
-  ELEMENT_NAMES[344] = ELT_FIGCAPTION;
-  ELEMENT_NAMES[345] = ELT_IMAGINARYI;
-  ELEMENT_NAMES[346] = ELT_MALIGNMARK;
-  ELEMENT_NAMES[347] = ELT_MUNDEROVER;
-  ELEMENT_NAMES[348] = ELT_MLABELEDTR;
-  ELEMENT_NAMES[349] = ELT_NOTANUMBER;
-  ELEMENT_NAMES[350] = ELT_SOLIDCOLOR;
-  ELEMENT_NAMES[351] = ELT_ALTGLYPHDEF;
-  ELEMENT_NAMES[352] = ELT_DETERMINANT;
-  ELEMENT_NAMES[353] = ELT_FEMERGENODE;
-  ELEMENT_NAMES[354] = ELT_FECOMPOSITE;
-  ELEMENT_NAMES[355] = ELT_FESPOTLIGHT;
-  ELEMENT_NAMES[356] = ELT_MALIGNGROUP;
-  ELEMENT_NAMES[357] = ELT_MPRESCRIPTS;
-  ELEMENT_NAMES[358] = ELT_MOMENTABOUT;
-  ELEMENT_NAMES[359] = ELT_NOTPRSUBSET;
-  ELEMENT_NAMES[360] = ELT_PARTIALDIFF;
-  ELEMENT_NAMES[361] = ELT_ALTGLYPHITEM;
-  ELEMENT_NAMES[362] = ELT_ANIMATECOLOR;
-  ELEMENT_NAMES[363] = ELT_DATATEMPLATE;
-  ELEMENT_NAMES[364] = ELT_EXPONENTIALE;
-  ELEMENT_NAMES[365] = ELT_FETURBULENCE;
-  ELEMENT_NAMES[366] = ELT_FEPOINTLIGHT;
-  ELEMENT_NAMES[367] = ELT_FEDROPSHADOW;
-  ELEMENT_NAMES[368] = ELT_FEMORPHOLOGY;
-  ELEMENT_NAMES[369] = ELT_OUTERPRODUCT;
-  ELEMENT_NAMES[370] = ELT_ANIMATEMOTION;
-  ELEMENT_NAMES[371] = ELT_COLOR_PROFILE;
-  ELEMENT_NAMES[372] = ELT_FONT_FACE_SRC;
-  ELEMENT_NAMES[373] = ELT_FONT_FACE_URI;
-  ELEMENT_NAMES[374] = ELT_FOREIGNOBJECT;
-  ELEMENT_NAMES[375] = ELT_FECOLORMATRIX;
-  ELEMENT_NAMES[376] = ELT_MISSING_GLYPH;
-  ELEMENT_NAMES[377] = ELT_MMULTISCRIPTS;
-  ELEMENT_NAMES[378] = ELT_SCALARPRODUCT;
-  ELEMENT_NAMES[379] = ELT_VECTORPRODUCT;
-  ELEMENT_NAMES[380] = ELT_ANNOTATION_XML;
-  ELEMENT_NAMES[381] = ELT_DEFINITION_SRC;
-  ELEMENT_NAMES[382] = ELT_FONT_FACE_NAME;
-  ELEMENT_NAMES[383] = ELT_FEGAUSSIANBLUR;
-  ELEMENT_NAMES[384] = ELT_FEDISTANTLIGHT;
-  ELEMENT_NAMES[385] = ELT_LINEARGRADIENT;
-  ELEMENT_NAMES[386] = ELT_NATURALNUMBERS;
-  ELEMENT_NAMES[387] = ELT_RADIALGRADIENT;
-  ELEMENT_NAMES[388] = ELT_ANIMATETRANSFORM;
-  ELEMENT_NAMES[389] = ELT_CARTESIANPRODUCT;
-  ELEMENT_NAMES[390] = ELT_FONT_FACE_FORMAT;
-  ELEMENT_NAMES[391] = ELT_FECONVOLVEMATRIX;
-  ELEMENT_NAMES[392] = ELT_FEDIFFUSELIGHTING;
-  ELEMENT_NAMES[393] = ELT_FEDISPLACEMENTMAP;
-  ELEMENT_NAMES[394] = ELT_FESPECULARLIGHTING;
-  ELEMENT_NAMES[395] = ELT_DOMAINOFAPPLICATION;
-  ELEMENT_NAMES[396] = ELT_FECOMPONENTTRANSFER;
+  ELEMENT_NAMES[204] = ELT_DIALOG;
+  ELEMENT_NAMES[205] = ELT_DOMAIN;
+  ELEMENT_NAMES[206] = ELT_EXISTS;
+  ELEMENT_NAMES[207] = ELT_FETILE;
+  ELEMENT_NAMES[208] = ELT_FIGURE;
+  ELEMENT_NAMES[209] = ELT_FORALL;
+  ELEMENT_NAMES[210] = ELT_FILTER;
+  ELEMENT_NAMES[211] = ELT_FOOTER;
+  ELEMENT_NAMES[212] = ELT_HGROUP;
+  ELEMENT_NAMES[213] = ELT_HEADER;
+  ELEMENT_NAMES[214] = ELT_IFRAME;
+  ELEMENT_NAMES[215] = ELT_KEYGEN;
+  ELEMENT_NAMES[216] = ELT_LAMBDA;
+  ELEMENT_NAMES[217] = ELT_LEGEND;
+  ELEMENT_NAMES[218] = ELT_MSPACE;
+  ELEMENT_NAMES[219] = ELT_MTABLE;
+  ELEMENT_NAMES[220] = ELT_MSTYLE;
+  ELEMENT_NAMES[221] = ELT_MGLYPH;
+  ELEMENT_NAMES[222] = ELT_MEDIAN;
+  ELEMENT_NAMES[223] = ELT_MUNDER;
+  ELEMENT_NAMES[224] = ELT_MARKER;
+  ELEMENT_NAMES[225] = ELT_MERROR;
+  ELEMENT_NAMES[226] = ELT_MOMENT;
+  ELEMENT_NAMES[227] = ELT_MATRIX;
+  ELEMENT_NAMES[228] = ELT_OPTION;
+  ELEMENT_NAMES[229] = ELT_OBJECT;
+  ELEMENT_NAMES[230] = ELT_OUTPUT;
+  ELEMENT_NAMES[231] = ELT_PRIMES;
+  ELEMENT_NAMES[232] = ELT_SOURCE;
+  ELEMENT_NAMES[233] = ELT_STRIKE;
+  ELEMENT_NAMES[234] = ELT_STRONG;
+  ELEMENT_NAMES[235] = ELT_SWITCH;
+  ELEMENT_NAMES[236] = ELT_SYMBOL;
+  ELEMENT_NAMES[237] = ELT_SELECT;
+  ELEMENT_NAMES[238] = ELT_SUBSET;
+  ELEMENT_NAMES[239] = ELT_SCRIPT;
+  ELEMENT_NAMES[240] = ELT_TBREAK;
+  ELEMENT_NAMES[241] = ELT_VECTOR;
+  ELEMENT_NAMES[242] = ELT_ARTICLE;
+  ELEMENT_NAMES[243] = ELT_ANIMATE;
+  ELEMENT_NAMES[244] = ELT_ARCSECH;
+  ELEMENT_NAMES[245] = ELT_ARCCSCH;
+  ELEMENT_NAMES[246] = ELT_ARCTANH;
+  ELEMENT_NAMES[247] = ELT_ARCSINH;
+  ELEMENT_NAMES[248] = ELT_ARCCOSH;
+  ELEMENT_NAMES[249] = ELT_ARCCOTH;
+  ELEMENT_NAMES[250] = ELT_ACRONYM;
+  ELEMENT_NAMES[251] = ELT_ADDRESS;
+  ELEMENT_NAMES[252] = ELT_BGSOUND;
+  ELEMENT_NAMES[253] = ELT_COMPOSE;
+  ELEMENT_NAMES[254] = ELT_CEILING;
+  ELEMENT_NAMES[255] = ELT_CSYMBOL;
+  ELEMENT_NAMES[256] = ELT_CAPTION;
+  ELEMENT_NAMES[257] = ELT_DISCARD;
+  ELEMENT_NAMES[258] = ELT_DECLARE;
+  ELEMENT_NAMES[259] = ELT_DETAILS;
+  ELEMENT_NAMES[260] = ELT_ELLIPSE;
+  ELEMENT_NAMES[261] = ELT_FEFUNCA;
+  ELEMENT_NAMES[262] = ELT_FEFUNCB;
+  ELEMENT_NAMES[263] = ELT_FEBLEND;
+  ELEMENT_NAMES[264] = ELT_FEFLOOD;
+  ELEMENT_NAMES[265] = ELT_FEIMAGE;
+  ELEMENT_NAMES[266] = ELT_FEMERGE;
+  ELEMENT_NAMES[267] = ELT_FEFUNCG;
+  ELEMENT_NAMES[268] = ELT_FEFUNCR;
+  ELEMENT_NAMES[269] = ELT_HANDLER;
+  ELEMENT_NAMES[270] = ELT_INVERSE;
+  ELEMENT_NAMES[271] = ELT_IMPLIES;
+  ELEMENT_NAMES[272] = ELT_ISINDEX;
+  ELEMENT_NAMES[273] = ELT_LOGBASE;
+  ELEMENT_NAMES[274] = ELT_LISTING;
+  ELEMENT_NAMES[275] = ELT_MFENCED;
+  ELEMENT_NAMES[276] = ELT_MPADDED;
+  ELEMENT_NAMES[277] = ELT_MARQUEE;
+  ELEMENT_NAMES[278] = ELT_MACTION;
+  ELEMENT_NAMES[279] = ELT_MSUBSUP;
+  ELEMENT_NAMES[280] = ELT_NOEMBED;
+  ELEMENT_NAMES[281] = ELT_PICTURE;
+  ELEMENT_NAMES[282] = ELT_POLYGON;
+  ELEMENT_NAMES[283] = ELT_PATTERN;
+  ELEMENT_NAMES[284] = ELT_PRODUCT;
+  ELEMENT_NAMES[285] = ELT_SETDIFF;
+  ELEMENT_NAMES[286] = ELT_SECTION;
+  ELEMENT_NAMES[287] = ELT_SUMMARY;
+  ELEMENT_NAMES[288] = ELT_TENDSTO;
+  ELEMENT_NAMES[289] = ELT_UPLIMIT;
+  ELEMENT_NAMES[290] = ELT_ALTGLYPH;
+  ELEMENT_NAMES[291] = ELT_BASEFONT;
+  ELEMENT_NAMES[292] = ELT_CLIPPATH;
+  ELEMENT_NAMES[293] = ELT_CODOMAIN;
+  ELEMENT_NAMES[294] = ELT_COLGROUP;
+  ELEMENT_NAMES[295] = ELT_EMPTYSET;
+  ELEMENT_NAMES[296] = ELT_FACTOROF;
+  ELEMENT_NAMES[297] = ELT_FIELDSET;
+  ELEMENT_NAMES[298] = ELT_FRAMESET;
+  ELEMENT_NAMES[299] = ELT_FEOFFSET;
+  ELEMENT_NAMES[300] = ELT_GLYPHREF;
+  ELEMENT_NAMES[301] = ELT_INTERVAL;
+  ELEMENT_NAMES[302] = ELT_INTEGERS;
+  ELEMENT_NAMES[303] = ELT_INFINITY;
+  ELEMENT_NAMES[304] = ELT_LISTENER;
+  ELEMENT_NAMES[305] = ELT_LOWLIMIT;
+  ELEMENT_NAMES[306] = ELT_METADATA;
+  ELEMENT_NAMES[307] = ELT_MENCLOSE;
+  ELEMENT_NAMES[308] = ELT_MENUITEM;
+  ELEMENT_NAMES[309] = ELT_MPHANTOM;
+  ELEMENT_NAMES[310] = ELT_NOFRAMES;
+  ELEMENT_NAMES[311] = ELT_NOSCRIPT;
+  ELEMENT_NAMES[312] = ELT_OPTGROUP;
+  ELEMENT_NAMES[313] = ELT_POLYLINE;
+  ELEMENT_NAMES[314] = ELT_PREFETCH;
+  ELEMENT_NAMES[315] = ELT_PROGRESS;
+  ELEMENT_NAMES[316] = ELT_PRSUBSET;
+  ELEMENT_NAMES[317] = ELT_QUOTIENT;
+  ELEMENT_NAMES[318] = ELT_SELECTOR;
+  ELEMENT_NAMES[319] = ELT_TEXTAREA;
+  ELEMENT_NAMES[320] = ELT_TEMPLATE;
+  ELEMENT_NAMES[321] = ELT_TEXTPATH;
+  ELEMENT_NAMES[322] = ELT_VARIANCE;
+  ELEMENT_NAMES[323] = ELT_ANIMATION;
+  ELEMENT_NAMES[324] = ELT_CONJUGATE;
+  ELEMENT_NAMES[325] = ELT_CONDITION;
+  ELEMENT_NAMES[326] = ELT_COMPLEXES;
+  ELEMENT_NAMES[327] = ELT_FONT_FACE;
+  ELEMENT_NAMES[328] = ELT_FACTORIAL;
+  ELEMENT_NAMES[329] = ELT_INTERSECT;
+  ELEMENT_NAMES[330] = ELT_IMAGINARY;
+  ELEMENT_NAMES[331] = ELT_LAPLACIAN;
+  ELEMENT_NAMES[332] = ELT_MATRIXROW;
+  ELEMENT_NAMES[333] = ELT_NOTSUBSET;
+  ELEMENT_NAMES[334] = ELT_OTHERWISE;
+  ELEMENT_NAMES[335] = ELT_PIECEWISE;
+  ELEMENT_NAMES[336] = ELT_PLAINTEXT;
+  ELEMENT_NAMES[337] = ELT_RATIONALS;
+  ELEMENT_NAMES[338] = ELT_SEMANTICS;
+  ELEMENT_NAMES[339] = ELT_TRANSPOSE;
+  ELEMENT_NAMES[340] = ELT_ANNOTATION;
+  ELEMENT_NAMES[341] = ELT_BLOCKQUOTE;
+  ELEMENT_NAMES[342] = ELT_DIVERGENCE;
+  ELEMENT_NAMES[343] = ELT_EULERGAMMA;
+  ELEMENT_NAMES[344] = ELT_EQUIVALENT;
+  ELEMENT_NAMES[345] = ELT_FIGCAPTION;
+  ELEMENT_NAMES[346] = ELT_IMAGINARYI;
+  ELEMENT_NAMES[347] = ELT_MALIGNMARK;
+  ELEMENT_NAMES[348] = ELT_MUNDEROVER;
+  ELEMENT_NAMES[349] = ELT_MLABELEDTR;
+  ELEMENT_NAMES[350] = ELT_NOTANUMBER;
+  ELEMENT_NAMES[351] = ELT_SOLIDCOLOR;
+  ELEMENT_NAMES[352] = ELT_ALTGLYPHDEF;
+  ELEMENT_NAMES[353] = ELT_DETERMINANT;
+  ELEMENT_NAMES[354] = ELT_FEMERGENODE;
+  ELEMENT_NAMES[355] = ELT_FECOMPOSITE;
+  ELEMENT_NAMES[356] = ELT_FESPOTLIGHT;
+  ELEMENT_NAMES[357] = ELT_MALIGNGROUP;
+  ELEMENT_NAMES[358] = ELT_MPRESCRIPTS;
+  ELEMENT_NAMES[359] = ELT_MOMENTABOUT;
+  ELEMENT_NAMES[360] = ELT_NOTPRSUBSET;
+  ELEMENT_NAMES[361] = ELT_PARTIALDIFF;
+  ELEMENT_NAMES[362] = ELT_ALTGLYPHITEM;
+  ELEMENT_NAMES[363] = ELT_ANIMATECOLOR;
+  ELEMENT_NAMES[364] = ELT_DATATEMPLATE;
+  ELEMENT_NAMES[365] = ELT_EXPONENTIALE;
+  ELEMENT_NAMES[366] = ELT_FETURBULENCE;
+  ELEMENT_NAMES[367] = ELT_FEPOINTLIGHT;
+  ELEMENT_NAMES[368] = ELT_FEDROPSHADOW;
+  ELEMENT_NAMES[369] = ELT_FEMORPHOLOGY;
+  ELEMENT_NAMES[370] = ELT_OUTERPRODUCT;
+  ELEMENT_NAMES[371] = ELT_ANIMATEMOTION;
+  ELEMENT_NAMES[372] = ELT_COLOR_PROFILE;
+  ELEMENT_NAMES[373] = ELT_FONT_FACE_SRC;
+  ELEMENT_NAMES[374] = ELT_FONT_FACE_URI;
+  ELEMENT_NAMES[375] = ELT_FOREIGNOBJECT;
+  ELEMENT_NAMES[376] = ELT_FECOLORMATRIX;
+  ELEMENT_NAMES[377] = ELT_MISSING_GLYPH;
+  ELEMENT_NAMES[378] = ELT_MMULTISCRIPTS;
+  ELEMENT_NAMES[379] = ELT_SCALARPRODUCT;
+  ELEMENT_NAMES[380] = ELT_VECTORPRODUCT;
+  ELEMENT_NAMES[381] = ELT_ANNOTATION_XML;
+  ELEMENT_NAMES[382] = ELT_DEFINITION_SRC;
+  ELEMENT_NAMES[383] = ELT_FONT_FACE_NAME;
+  ELEMENT_NAMES[384] = ELT_FEGAUSSIANBLUR;
+  ELEMENT_NAMES[385] = ELT_FEDISTANTLIGHT;
+  ELEMENT_NAMES[386] = ELT_LINEARGRADIENT;
+  ELEMENT_NAMES[387] = ELT_NATURALNUMBERS;
+  ELEMENT_NAMES[388] = ELT_RADIALGRADIENT;
+  ELEMENT_NAMES[389] = ELT_ANIMATETRANSFORM;
+  ELEMENT_NAMES[390] = ELT_CARTESIANPRODUCT;
+  ELEMENT_NAMES[391] = ELT_FONT_FACE_FORMAT;
+  ELEMENT_NAMES[392] = ELT_FECONVOLVEMATRIX;
+  ELEMENT_NAMES[393] = ELT_FEDIFFUSELIGHTING;
+  ELEMENT_NAMES[394] = ELT_FEDISPLACEMENTMAP;
+  ELEMENT_NAMES[395] = ELT_FESPECULARLIGHTING;
+  ELEMENT_NAMES[396] = ELT_DOMAINOFAPPLICATION;
+  ELEMENT_NAMES[397] = ELT_FECOMPONENTTRANSFER;
 }
 
 void
 nsHtml5ElementName::releaseStatics()
 {
   delete ELT_NULL_ELEMENT_NAME;
   delete ELT_A;
   delete ELT_B;
@@ -1539,16 +1542,17 @@ nsHtml5ElementName::releaseStatics()
   delete ELT_APPROX;
   delete ELT_BUTTON;
   delete ELT_CIRCLE;
   delete ELT_CENTER;
   delete ELT_CURSOR;
   delete ELT_CANVAS;
   delete ELT_DIVIDE;
   delete ELT_DEGREE;
+  delete ELT_DIALOG;
   delete ELT_DOMAIN;
   delete ELT_EXISTS;
   delete ELT_FETILE;
   delete ELT_FIGURE;
   delete ELT_FORALL;
   delete ELT_FILTER;
   delete ELT_FOOTER;
   delete ELT_HGROUP;
@@ -1615,19 +1619,19 @@ nsHtml5ElementName::releaseStatics()
   delete ELT_LOGBASE;
   delete ELT_LISTING;
   delete ELT_MFENCED;
   delete ELT_MPADDED;
   delete ELT_MARQUEE;
   delete ELT_MACTION;
   delete ELT_MSUBSUP;
   delete ELT_NOEMBED;
+  delete ELT_PICTURE;
   delete ELT_POLYGON;
   delete ELT_PATTERN;
-  delete ELT_PICTURE;
   delete ELT_PRODUCT;
   delete ELT_SETDIFF;
   delete ELT_SECTION;
   delete ELT_SUMMARY;
   delete ELT_TENDSTO;
   delete ELT_UPLIMIT;
   delete ELT_ALTGLYPH;
   delete ELT_BASEFONT;
--- a/parser/html/nsHtml5ElementName.h
+++ b/parser/html/nsHtml5ElementName.h
@@ -1,27 +1,27 @@
 /*
- * Copyright (c) 2008-2014 Mozilla Foundation
+ * Copyright (c) 2008-2016 Mozilla Foundation
  *
- * Permission is hereby granted, free of charge, to any person obtaining a 
- * copy of this software and associated documentation files (the "Software"), 
- * to deal in the Software without restriction, including without limitation 
- * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
- * and/or sell copies of the Software, and to permit persons to whom the 
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
  * Software is furnished to do so, subject to the following conditions:
  *
- * The above copyright notice and this permission notice shall be included in 
+ * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
  *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  */
 
 /*
  * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT.
  * Please edit ElementName.java instead and regenerate.
  */
 
@@ -278,16 +278,17 @@ class nsHtml5ElementName
     static nsHtml5ElementName* ELT_APPROX;
     static nsHtml5ElementName* ELT_BUTTON;
     static nsHtml5ElementName* ELT_CIRCLE;
     static nsHtml5ElementName* ELT_CENTER;
     static nsHtml5ElementName* ELT_CURSOR;
     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;
     static nsHtml5ElementName* ELT_FIGURE;
     static nsHtml5ElementName* ELT_FORALL;
     static nsHtml5ElementName* ELT_FILTER;
     static nsHtml5ElementName* ELT_FOOTER;
     static nsHtml5ElementName* ELT_HGROUP;
@@ -354,19 +355,19 @@ class nsHtml5ElementName
     static nsHtml5ElementName* ELT_LOGBASE;
     static nsHtml5ElementName* ELT_LISTING;
     static nsHtml5ElementName* ELT_MFENCED;
     static nsHtml5ElementName* ELT_MPADDED;
     static nsHtml5ElementName* ELT_MARQUEE;
     static nsHtml5ElementName* ELT_MACTION;
     static nsHtml5ElementName* ELT_MSUBSUP;
     static nsHtml5ElementName* ELT_NOEMBED;
+    static nsHtml5ElementName* ELT_PICTURE;
     static nsHtml5ElementName* ELT_POLYGON;
     static nsHtml5ElementName* ELT_PATTERN;
-    static nsHtml5ElementName* ELT_PICTURE;
     static nsHtml5ElementName* ELT_PRODUCT;
     static nsHtml5ElementName* ELT_SETDIFF;
     static nsHtml5ElementName* ELT_SECTION;
     static nsHtml5ElementName* ELT_SUMMARY;
     static nsHtml5ElementName* ELT_TENDSTO;
     static nsHtml5ElementName* ELT_UPLIMIT;
     static nsHtml5ElementName* ELT_ALTGLYPH;
     static nsHtml5ElementName* ELT_BASEFONT;
--- a/parser/html/nsHtml5TreeBuilder.cpp
+++ b/parser/html/nsHtml5TreeBuilder.cpp
@@ -1043,17 +1043,17 @@ nsHtml5TreeBuilder::startTag(nsHtml5Elem
               if (addAttributesToBody(attributes)) {
                 attributes = nullptr;
               }
               NS_HTML5_BREAK(starttagloop);
             }
             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_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY: {
+            case NS_HTML5TREE_BUILDER_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: {
               implicitlyCloseP();
               appendToCurrentNodeAndPushElementMayFoster(elementName, attributes);
               attributes = nullptr;
               NS_HTML5_BREAK(starttagloop);
             }
             case NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6: {
               implicitlyCloseP();
               if (stack[currentPtr]->getGroup() == NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6) {
@@ -2542,17 +2542,17 @@ nsHtml5TreeBuilder::endTag(nsHtml5Elemen
             mode = NS_HTML5TREE_BUILDER_AFTER_BODY;
             continue;
           }
           case NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU:
           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_BUTTON:
-          case NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY: {
+          case NS_HTML5TREE_BUILDER_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: {
             eltPos = findLastInScope(name);
             if (eltPos == NS_HTML5TREE_BUILDER_NOT_FOUND_ON_STACK) {
               errStrayEndTag(name);
             } else {
               generateImpliedEndTags();
               if (!!MOZ_UNLIKELY(mViewSource) && !isCurrent(name)) {
                 errUnclosedElements(eltPos, name);
               }
--- a/parser/html/nsHtml5TreeBuilder.h
+++ b/parser/html/nsHtml5TreeBuilder.h
@@ -319,17 +319,17 @@ class nsHtml5TreeBuilder : public nsAHtm
 #define NS_HTML5TREE_BUILDER_MARQUEE_OR_APPLET 43
 #define NS_HTML5TREE_BUILDER_PRE_OR_LISTING 44
 #define NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U 45
 #define NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL 46
 #define NS_HTML5TREE_BUILDER_IFRAME 47
 #define NS_HTML5TREE_BUILDER_EMBED 48
 #define NS_HTML5TREE_BUILDER_AREA_OR_WBR 49
 #define NS_HTML5TREE_BUILDER_DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU 50
-#define NS_HTML5TREE_BUILDER_ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY 51
+#define NS_HTML5TREE_BUILDER_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
 #define NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR 52
 #define NS_HTML5TREE_BUILDER_RB_OR_RTC 53
 #define NS_HTML5TREE_BUILDER_PARAM_OR_SOURCE_OR_TRACK 55
 #define NS_HTML5TREE_BUILDER_MGLYPH_OR_MALIGNMARK 56
 #define NS_HTML5TREE_BUILDER_MI_MO_MN_MS_MTEXT 57
 #define NS_HTML5TREE_BUILDER_ANNOTATION_XML 58
 #define NS_HTML5TREE_BUILDER_FOREIGNOBJECT_OR_DESC 59
 #define NS_HTML5TREE_BUILDER_NOEMBED 60