Bug 1266495 - Remove <isindex>. draft
authorHenri Sivonen <hsivonen@hsivonen.fi>
Wed, 05 Jul 2017 11:42:04 +0300
changeset 604138 f41c144045b49baa49d0d7d44c97f70fd59782f2
parent 604031 798b89d453fa13659e35f17761aa781c1f043eb2
child 605323 4335c83ca4f3237fcee123bad389b93b712737a4
push id66971
push userbmo:hsivonen@hsivonen.fi
push dateWed, 05 Jul 2017 10:42:19 +0000
bugs1266495
milestone56.0a1
Bug 1266495 - Remove <isindex>. MozReview-Commit-ID: KM0sTMM1GaD
dom/base/nsGkAtomList.h
dom/html/HTMLFormSubmission.cpp
dom/html/HTMLFormSubmission.h
dom/html/HTMLInputElement.cpp
dom/locales/en-US/chrome/layout/HtmlForm.properties
dom/locales/en-US/chrome/layout/htmlparser.properties
parser/html/javasrc/ElementName.java
parser/html/javasrc/Portability.java
parser/html/javasrc/TreeBuilder.java
parser/html/nsHtml5ElementName.cpp
parser/html/nsHtml5ElementName.h
parser/html/nsHtml5Portability.h
parser/html/nsHtml5TreeBuilder.cpp
parser/html/nsHtml5TreeBuilder.h
parser/html/nsHtml5TreeBuilderCppSupplement.h
parser/html/nsHtml5TreeOperation.cpp
parser/html/nsHtml5TreeOperation.h
parser/htmlparser/tests/mochitest/html5lib_tree_construction/isindex.dat
parser/htmlparser/tests/mochitest/html5lib_tree_construction/template.dat
parser/htmlparser/tests/mochitest/html5lib_tree_construction/tests19.dat
parser/htmlparser/tests/mochitest/html5lib_tree_construction/tests2.dat
testing/web-platform/meta/html/semantics/forms/historical.html.ini
testing/web-platform/meta/html/syntax/parsing/html5lib_isindex.html.ini
testing/web-platform/meta/html/syntax/parsing/html5lib_tests19.html.ini
testing/web-platform/tests/tools/html5lib/html5lib/tests/testdata/tree-construction/isindex.dat
--- a/dom/base/nsGkAtomList.h
+++ b/dom/base/nsGkAtomList.h
@@ -2638,18 +2638,16 @@ GK_ATOM(requiredextensions, "requiredext
 GK_ATOM(viewtarget, "viewtarget")
 // ATOM GENERATED BY HTML PARSER TRANSLATOR (WILL BE AUTOMATICALLY OVERWRITTEN):
 GK_ATOM(viewbox, "viewbox")
 // ATOM GENERATED BY HTML PARSER TRANSLATOR (WILL BE AUTOMATICALLY OVERWRITTEN):
 GK_ATOM(refx, "refx")
 // ATOM GENERATED BY HTML PARSER TRANSLATOR (WILL BE AUTOMATICALLY OVERWRITTEN):
 GK_ATOM(refy, "refy")
 // ATOM GENERATED BY HTML PARSER TRANSLATOR (WILL BE AUTOMATICALLY OVERWRITTEN):
-GK_ATOM(isindex, "isindex")
-// ATOM GENERATED BY HTML PARSER TRANSLATOR (WILL BE AUTOMATICALLY OVERWRITTEN):
 GK_ATOM(fefunca, "fefunca")
 // ATOM GENERATED BY HTML PARSER TRANSLATOR (WILL BE AUTOMATICALLY OVERWRITTEN):
 GK_ATOM(fefuncb, "fefuncb")
 // ATOM GENERATED BY HTML PARSER TRANSLATOR (WILL BE AUTOMATICALLY OVERWRITTEN):
 GK_ATOM(feblend, "feblend")
 // ATOM GENERATED BY HTML PARSER TRANSLATOR (WILL BE AUTOMATICALLY OVERWRITTEN):
 GK_ATOM(feflood, "feflood")
 // ATOM GENERATED BY HTML PARSER TRANSLATOR (WILL BE AUTOMATICALLY OVERWRITTEN):
--- a/dom/html/HTMLFormSubmission.cpp
+++ b/dom/html/HTMLFormSubmission.cpp
@@ -111,23 +111,16 @@ public:
   AddNameBlobOrNullPair(const nsAString& aName, Blob* aBlob) override;
 
   virtual nsresult
   AddNameDirectoryPair(const nsAString& aName, Directory* aDirectory) override;
 
   virtual nsresult
   GetEncodedSubmission(nsIURI* aURI, nsIInputStream** aPostDataStream) override;
 
-  virtual bool SupportsIsindexSubmission() override
-  {
-    return true;
-  }
-
-  virtual nsresult AddIsindex(const nsAString& aValue) override;
-
 protected:
 
   /**
    * URL encode a Unicode string by encoding it to bytes, converting linebreaks
    * properly, and then escaping many bytes as %xx.
    *
    * @param aStr the string to encode
    * @param aEncoded the encoded string [OUT]
@@ -174,35 +167,16 @@ FSURLEncoded::AddNameValuePair(const nsA
     mQueryString += NS_LITERAL_CSTRING("&") + convName
                   + NS_LITERAL_CSTRING("=") + convValue;
   }
 
   return NS_OK;
 }
 
 nsresult
-FSURLEncoded::AddIsindex(const nsAString& aValue)
-{
-  // Encode value
-  nsCString convValue;
-  nsresult rv = URLEncode(aValue, convValue);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  // Append data to string
-  if (mQueryString.IsEmpty()) {
-    Telemetry::Accumulate(Telemetry::FORM_ISINDEX_USED, true);
-    mQueryString.Assign(convValue);
-  } else {
-    mQueryString += NS_LITERAL_CSTRING("&isindex=") + convValue;
-  }
-
-  return NS_OK;
-}
-
-nsresult
 FSURLEncoded::AddNameBlobOrNullPair(const nsAString& aName,
                                     Blob* aBlob)
 {
   if (!mWarnedFileControl) {
     SendJSWarning(mDocument, "ForgotFileEnctypeWarning", nullptr, 0);
     mWarnedFileControl = true;
   }
 
--- a/dom/html/HTMLFormSubmission.h
+++ b/dom/html/HTMLFormSubmission.h
@@ -74,37 +74,16 @@ public:
    *
    * @param aName the name of the parameter
    * @param aBlob the directory to submit.
    */
   virtual nsresult AddNameDirectoryPair(const nsAString& aName,
                                         Directory* aDirectory) = 0;
 
   /**
-   * Reports whether the instance supports AddIsindex().
-   *
-   * @return true if supported.
-   */
-  virtual bool SupportsIsindexSubmission()
-  {
-    return false;
-  }
-
-  /**
-   * Adds an isindex value to the submission.
-   *
-   * @param aValue the field value
-   */
-  virtual nsresult AddIsindex(const nsAString& aValue)
-  {
-    NS_NOTREACHED("AddIsindex called when not supported");
-    return NS_ERROR_UNEXPECTED;
-  }
-
-  /**
    * Given a URI and the current submission, create the final URI and data
    * stream that will be submitted.  Subclasses *must* implement this.
    *
    * @param aURI the URI being submitted to [INOUT]
    * @param aPostDataStream a data stream for POST data [OUT]
    */
   virtual nsresult
   GetEncodedSubmission(nsIURI* aURI, nsIInputStream** aPostDataStream) = 0;
--- a/dom/html/HTMLInputElement.cpp
+++ b/dom/html/HTMLInputElement.cpp
@@ -6457,21 +6457,16 @@ HTMLInputElement::SubmitNamesValues(HTML
       !HasAttr(kNameSpaceID_None, nsGkAtoms::value)) {
     // Get our default value, which is the same as our default label
     nsXPIDLString defaultValue;
     nsContentUtils::GetLocalizedString(nsContentUtils::eFORMS_PROPERTIES,
                                        "Submit", defaultValue);
     value = defaultValue;
   }
 
-  if (IsSingleLineTextControl(true) &&
-      name.EqualsLiteral("isindex") &&
-      aFormSubmission->SupportsIsindexSubmission()) {
-    return aFormSubmission->AddIsindex(value);
-  }
   return aFormSubmission->AddNameValuePair(name, value);
 }
 
 
 NS_IMETHODIMP
 HTMLInputElement::SaveState()
 {
   RefPtr<HTMLInputElementState> inputState;
--- a/dom/locales/en-US/chrome/layout/HtmlForm.properties
+++ b/dom/locales/en-US/chrome/layout/HtmlForm.properties
@@ -3,21 +3,16 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 Reset=Reset
 Submit=Submit Query
 Browse=Browse…
 FileUpload=File Upload
 DirectoryUpload=Select Folder to Upload
 DirectoryPickerOkButtonLabel=Upload
-# LOCALIZATION NOTE (IsIndexPromptWithSpace): The last character of the string 
-# should be a space (U+0020) in most locales. The prompt is followed by an 
-# input field. The space needs be escaped in the property file to avoid 
-# trimming.
-IsIndexPromptWithSpace=This is a searchable index. Enter search keywords:\u0020
 ForgotPostWarning=Form contains enctype=%S, but does not contain method=post.  Submitting normally with method=GET and no enctype instead.
 ForgotFileEnctypeWarning=Form contains a file input, but is missing method=POST and enctype=multipart/form-data on the form.  The file will not be sent.
 # LOCALIZATION NOTE (DefaultFormSubject): %S will be replaced with brandShortName
 DefaultFormSubject=Form Post from %S
 CannotEncodeAllUnicode=A form was submitted in the %S encoding which cannot encode all Unicode characters, so user input may get corrupted. To avoid this problem, the page should be changed so that the form is submitted in the UTF-8 encoding either by changing the encoding of the page itself to UTF-8 or by specifying accept-charset=utf-8 on the form element.
 AllSupportedTypes=All Supported Types
 # LOCALIZATION NOTE (NoFileSelected): this string is shown on a
 # <input type='file'> when there is no file selected yet.
@@ -29,18 +24,18 @@ NoFilesSelected=No files selected.
 # <input type='file' directory/webkitdirectory> when there is no directory
 # selected yet.
 NoDirSelected=No directory selected.
 # LOCALIZATION NOTE (XFilesSelected): this string is shown on a
 # <input type='file' multiple> when there are more than one selected file.
 # %S will be a number greater or equal to 2.
 XFilesSelected=%S files selected.
 ColorPicker=Choose a color
-# LOCALIZATION NOTE (AndNMoreFiles): Semi-colon list of plural forms. 
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals 
+# LOCALIZATION NOTE (AndNMoreFiles): Semi-colon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
 # This string is shown at the end of the tooltip text for <input type='file'
 # multiple> when there are more than 21 files selected (when we will only list
 # the first 20, plus an "and X more" line). #1 represents the number of files
 # minus 20 and will always be a number equal to or greater than 2. So the
 # singular case will never be used.
 AndNMoreFiles=and one more;and #1 more
 # LOCALIZATION NOTE (DefaultSummary): this string is shown on a <details> when
 # it has no direct <summary> child. Google Chrome should already have this
--- a/dom/locales/en-US/chrome/layout/htmlparser.properties
+++ b/dom/locales/en-US/chrome/layout/htmlparser.properties
@@ -11,17 +11,17 @@ EncLateMeta=The character encoding decla
 EncLateMetaReload=The page was reloaded, because the character encoding declaration of the HTML document was not found when prescanning the first 1024 bytes of the file. The encoding declaration needs to be moved to be within the first 1024 bytes of the file.
 EncLateMetaTooLate=The character encoding declaration of document was found too late for it to take effect. The encoding declaration needs to be moved to be within the first 1024 bytes of the file.
 EncMetaUnsupported=An unsupported character encoding was declared for the HTML document using a meta tag. The declaration was ignored.
 EncProtocolUnsupported=An unsupported character encoding was declared on the transfer protocol level. The declaration was ignored.
 EncBomlessUtf16=Detected UTF-16-encoded Basic Latin-only text without a byte order mark and without a transfer protocol-level declaration. Encoding this content in UTF-16 is inefficient and the character encoding should have been declared in any case.
 EncMetaUtf16=A meta tag was used to declare the character encoding as UTF-16. This was interpreted as an UTF-8 declaration instead.
 EncMetaUserDefined=A meta tag was used to declare the character encoding as x-user-defined. This was interpreted as a windows-1252 declaration instead for compatibility with intentionally mis-encoded legacy fonts. This site should migrate to Unicode.
 
-# The bulk of the messages below are derived from 
+# The bulk of the messages below are derived from
 # https://hg.mozilla.org/projects/htmlparser/file/1f633cef7de7/src/nu/validator/htmlparser/impl/ErrorReportingTokenizer.java
 # which is available under the MIT license.
 
 # Tokenizer errors
 errGarbageAfterLtSlash=Garbage after “</”.
 errLtSlashGt=Saw “</>”. Probable causes: Unescaped “<” (escape as “&lt;”) or mistyped end tag.
 errCharRefLacksSemicolon=Character reference was not terminated by a semicolon.
 errNoDigitsInNCR=No digits in numeric character reference.
@@ -99,17 +99,16 @@ errNonSpaceInColgroupInFragment=Non-space in “colgroup” when parsing fragment.
 errNonSpaceInNoscriptInHead=Non-space character inside “noscript” inside “head”.
 errFooBetweenHeadAndBody=“%1$S” element between “head” and “body”.
 errStartTagWithoutDoctype=Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
 errNoSelectInTableScope=No “select” in table scope.
 errStartSelectWhereEndSelectExpected=“select” start tag where end tag expected.
 errStartTagWithSelectOpen=“%1$S” start tag with “select” open.
 errBadStartTagInHead2=Bad start tag “%1$S” in “head”.
 errImage=Saw a start tag “image”.
-errIsindex=“isindex” seen.
 errFooSeenWhenFooOpen=An “%1$S” start tag seen but an element of the same type was already open.
 errHeadingWhenHeadingOpen=Heading cannot be a child of another heading.
 errFramesetStart=“frameset” start tag seen.
 errNoCellToClose=No cell to close.
 errStartTagInTable=Start tag “%1$S” seen in “table”.
 errFormWhenFormOpen=Saw a “form” start tag, but there was already an active “form” element. Nested forms are not allowed. Ignoring the tag.
 errTableSeenWhileTableOpen=Start tag for “table” seen but the previous “table” is still open.
 errStartTagInTableBody=“%1$S” start tag in table body.
@@ -124,9 +123,9 @@ errTableClosedWhileCaptionOpen=“table” closed but “caption” was still open.
 errNoTableRowToClose=No table row to close.
 errNonSpaceInTable=Misplaced non-space characters inside a table.
 errUnclosedChildrenInRuby=Unclosed children in “ruby”.
 errStartTagSeenWithoutRuby=Start tag “%1$S” seen without a “ruby” element being open.
 errSelfClosing=Self-closing syntax (“/>”) used on a non-void HTML element. Ignoring the slash and treating as a start tag.
 errNoCheckUnclosedElementsOnStack=Unclosed elements on stack.
 errEndTagDidNotMatchCurrentOpenElement=End tag “%1$S” did not match the name of the current open element (“%2$S”).
 errEndTagViolatesNestingRules=End tag “%1$S” violates nesting rules.
-errEndWithUnclosedElements=End tag for “%1$S” seen, but there were unclosed elements.
\ No newline at end of file
+errEndWithUnclosedElements=End tag for “%1$S” seen, but there were unclosed elements.
--- a/parser/html/javasrc/ElementName.java
+++ b/parser/html/javasrc/ElementName.java
@@ -17,21 +17,16 @@
  * 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 java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
 import nu.validator.htmlparser.annotation.Inline;
 import nu.validator.htmlparser.annotation.Local;
 import nu.validator.htmlparser.annotation.NoLength;
 import nu.validator.htmlparser.annotation.Unsigned;
 import nu.validator.htmlparser.common.Interner;
 
 public final class ElementName
 // uncomment when regenerating self
@@ -213,21 +208,16 @@ public final class ElementName
         // The assertion below relies on TreeBuilder.OTHER being zero!
         // TreeBuilder.OTHER isn't referenced here, because it would create
         // a circular C++ header dependency given that this method is inlined.
         assert this.flags == ElementName.NOT_INTERNED;
     }
 
     public static final ElementName ANNOTATION_XML = new ElementName("annotation-xml", "annotation-xml", TreeBuilder.ANNOTATION_XML | SCOPING_AS_MATHML);
 
-    // CPPONLY: public static final ElementName ISINDEX = new ElementName("isindex", "isindex", TreeBuilder.ISINDEX | SPECIAL);
-    // [NOCPP[
-    public static final ElementName ISINDEX = new ElementName("isindex", "isindex", TreeBuilder.OTHER);
-    // ]NOCPP]
-
     // 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() + ")";
 //    }
@@ -469,19 +459,16 @@ public final class ElementName
 //                    System.err.println("Hash collision: " + ELEMENT_NAMES[i].name
 //                            + ", " + ELEMENT_NAMES[j].name);
 //                    return;
 //                }
 //            }
 //        }
 //        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
 //            ElementName el = ELEMENT_NAMES[i];
-//            if ("isindex".equals(el.name)) {
-//                continue;
-//            }
 //            System.out.println("public static final ElementName "
 //                    + el.constName() + " = new ElementName" + el.toString()
 //                    + ";");
 //        }
 //
 //        LinkedList<ElementName> sortedNames = new LinkedList<ElementName>();
 //        Collections.addAll(sortedNames, ELEMENT_NAMES);
 //        ElementName[] levelOrder = new ElementName[ELEMENT_NAMES.length];
@@ -704,44 +691,44 @@ public final class ElementName
     public static final ElementName BODY = new ElementName("body", "body", TreeBuilder.BODY | SPECIAL | OPTIONAL_END_TAG);
     public static final ElementName FEMORPHOLOGY = new ElementName("femorphology", "feMorphology", TreeBuilder.OTHER);
     public static final ElementName RUBY = new ElementName("ruby", "ruby", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
     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 TBODY = new ElementName("tbody", "tbody", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
     private final static @NoLength ElementName[] ELEMENT_NAMES = {
     KEYGEN,
     FETURBULENCE,
-    FRAMESET,
+    FIELDSET,
     H2,
     MATH,
-    MARKER,
-    RADIALGRADIENT,
+    HEADER,
+    RECT,
     RTC,
     FEBLEND,
     STYLE,
     LABEL,
     SAMP,
-    MS,
-    MTEXT,
-    FECOLORMATRIX,
+    DETAILS,
+    LINEARGRADIENT,
+    VIEW,
     IMG,
     WBR,
     META,
     ARTICLE,
     IMAGE,
     FEFUNCG,
     LINK,
     FORM,
     AUDIO,
     FECOMPONENTTRANSFER,
-    ADDRESS,
-    APPLET,
-    FEDISTANTLIGHT,
-    OUTPUT,
-    TEXT,
+    TR,
+    DT,
+    FEPOINTLIGHT,
+    OBJECT,
+    TFOOT,
     FEMORPHOLOGY,
     DEL,
     NAV,
     SET,
     Q,
     H6,
     DESC,
     NOEMBED,
@@ -752,28 +739,28 @@ public final class ElementName
     STRONG,
     SWITCH,
     TRACK,
     ALTGLYPHITEM,
     BUTTON,
     PATTERN,
     FEDISPLACEMENTMAP,
     ANIMATECOLOR,
-    FEGAUSSIANBLUR,
-    NOBR,
-    DEFS,
-    PROGRESS,
-    FOREIGNOBJECT,
-    FESPOTLIGHT,
-    INPUT,
-    RT,
-    TT,
-    SCRIPT,
-    FEDROPSHADOW,
-    ISINDEX,
+    FOOTER,
+    METER,
+    CANVAS,
+    NOFRAMES,
+    BASEFONT,
+    FEOFFSET,
+    FONT,
+    NOSCRIPT,
+    PLAINTEXT,
+    SELECT,
+    MENU,
+    FECONVOLVEMATRIX,
     SUMMARY,
     BDO,
     DIR,
     KBD,
     A,
     SVG,
     VAR,
     I,
@@ -803,39 +790,39 @@ public final class ElementName
     PARAM,
     FIGCAPTION,
     OPTION,
     SECTION,
     VIDEO,
     RP,
     BR,
     HR,
-    FOOTER,
-    HEADER,
-    METER,
-    TR,
-    CANVAS,
-    DETAILS,
-    NOFRAMES,
-    DT,
-    BASEFONT,
-    FIELDSET,
-    FEOFFSET,
-    FEPOINTLIGHT,
-    FONT,
-    LINEARGRADIENT,
-    NOSCRIPT,
-    OBJECT,
-    PLAINTEXT,
-    RECT,
-    SELECT,
-    TFOOT,
-    MENU,
-    VIEW,
-    FECONVOLVEMATRIX,
+    FILTER,
+    FEGAUSSIANBLUR,
+    MARKER,
+    NOBR,
+    ADDRESS,
+    DEFS,
+    MS,
+    PROGRESS,
+    APPLET,
+    FOREIGNOBJECT,
+    FRAMESET,
+    FESPOTLIGHT,
+    FEDISTANTLIGHT,
+    INPUT,
+    MTEXT,
+    RT,
+    OUTPUT,
+    TT,
+    RADIALGRADIENT,
+    SCRIPT,
+    TEXT,
+    FEDROPSHADOW,
+    FECOLORMATRIX,
     BODY,
     RUBY,
     TBODY,
     BIG,
     COL,
     DFN,
     DIV,
     INS,
@@ -905,49 +892,48 @@ public final class ElementName
     MO,
     COLGROUP,
     HGROUP,
     OPTGROUP,
     STOP,
     ABBR,
     CENTER,
     FEFUNCR,
-    FILTER,
     };
     private final static int[] ELEMENT_HASHES = {
     1903302038,
     1749656156,
-    2001349720,
+    2001349704,
     893386754,
     1803929812,
-    1971461414,
-    2007781534,
+    1968836118,
+    2007601444,
     59821379,
     1733054663,
     1756625221,
     1870268949,
     1941178676,
-    1986527234,
-    2005324101,
-    2068523853,
+    1983633431,
+    2004635806,
+    2060065124,
     55104723,
     62450211,
     1686491348,
     1747176599,
     1751288021,
     1783210839,
     1853642948,
     1884120164,
     1914900309,
     1967788867,
-    1982173479,
-    1998724870,
-    2001392798,
-    2006329158,
-    2008994116,
+    1973420034,
+    1998585858,
+    2001392796,
+    2006028454,
+    2008851557,
     2085266636,
     52485715,
     57733651,
     60354131,
     67633153,
     960495618,
     1715310660,
     1737099991,
@@ -958,28 +944,28 @@ public final class ElementName
     1790207270,
     1806806678,
     1857653029,
     1881288348,
     1898753862,
     1906135367,
     1934172497,
     1965334268,
-    1968053806,
-    1971938532,
-    1983533124,
-    1990037800,
-    2001309869,
-    2001392795,
-    2003183333,
-    2005925890,
-    2006974466,
-    2008340774,
-    2051837468,
-    2070023911,
+    1967795958,
+    1971465813,
+    1982935782,
+    1988763672,
+    1999397992,
+    2001349736,
+    2001495140,
+    2005719336,
+    2006896969,
+    2008125638,
+    2021937364,
+    2068523856,
     2092255447,
     51438659,
     52488851,
     56151587,
     59244545,
     60347747,
     61925907,
     63438849,
@@ -1009,39 +995,39 @@ public final class ElementName
     1889085973,
     1900845386,
     1905563974,
     1907661127,
     1925844629,
     1938817026,
     1963982850,
     1967128578,
-    1967795958,
-    1968836118,
-    1971465813,
-    1973420034,
-    1982935782,
-    1983633431,
-    1988763672,
-    1998585858,
-    1999397992,
-    2001349704,
-    2001349736,
-    2001392796,
-    2001495140,
-    2004635806,
-    2005719336,
-    2006028454,
-    2006896969,
-    2007601444,
-    2008125638,
-    2008851557,
-    2021937364,
-    2060065124,
-    2068523856,
+    1967795910,
+    1968053806,
+    1971461414,
+    1971938532,
+    1982173479,
+    1983533124,
+    1986527234,
+    1990037800,
+    1998724870,
+    2001309869,
+    2001349720,
+    2001392795,
+    2001392798,
+    2003183333,
+    2005324101,
+    2005925890,
+    2006329158,
+    2006974466,
+    2007781534,
+    2008340774,
+    2008994116,
+    2051837468,
+    2068523853,
     2083120164,
     2091479332,
     2092557349,
     51434643,
     51961587,
     52486755,
     52490899,
     55110883,
@@ -1111,11 +1097,10 @@ public final class ElementName
     1919418370,
     1932928296,
     1935549734,
     1939219752,
     1941221172,
     1965115924,
     1966223078,
     1967760215,
-    1967795910,
     };
 }
--- a/parser/html/javasrc/Portability.java
+++ b/parser/html/javasrc/Portability.java
@@ -1,43 +1,43 @@
 /*
  * Copyright (c) 2008-2015 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 nu.validator.htmlparser.annotation.Literal;
 import nu.validator.htmlparser.annotation.Local;
 import nu.validator.htmlparser.annotation.NoLength;
 import nu.validator.htmlparser.common.Interner;
 
 public final class Portability {
 
     // Allocating methods
 
     /**
-     * Allocates a new local name object. In C++, the refcount must be set up in such a way that 
+     * Allocates a new local name object. In C++, the refcount must be set up in such a way that
      * calling <code>releaseLocal</code> on the return value balances the refcount set by this method.
      */
     public static @Local String newLocalNameFromBuffer(@NoLength char[] buf, int offset, int length, Interner interner) {
         return new String(buf, offset, length).intern();
     }
 
     public static String newStringFromBuffer(@NoLength char[] buf, int offset, int length
         // CPPONLY: , TreeBuilder treeBuilder
@@ -47,42 +47,42 @@ public final class Portability {
 
     public static String newEmptyString() {
         return "";
     }
 
     public static String newStringFromLiteral(@Literal String literal) {
         return literal;
     }
-    
+
     public static String newStringFromString(String string) {
         return string;
     }
-    
+
     // XXX get rid of this
     public static char[] newCharArrayFromLocal(@Local String local) {
         return local.toCharArray();
     }
 
     public static char[] newCharArrayFromString(String string) {
         return string.toCharArray();
     }
-    
+
     public static @Local String newLocalFromLocal(@Local String local, Interner interner) {
         return local;
     }
-    
+
     // Deallocation methods
-    
+
     public static void releaseString(String str) {
         // No-op in Java
     }
-    
+
     // Comparison methods
-    
+
     public static boolean localEqualsBuffer(@Local String local, @NoLength char[] buf, int offset, int length) {
         if (local.length() != length) {
             return false;
         }
         for (int i = 0; i < length; i++) {
             if (local.charAt(i) != buf[offset + i]) {
                 return false;
             }
@@ -105,17 +105,17 @@ public final class Portability {
                 c1 += 0x20;
             }
             if (c0 != c1) {
                 return false;
             }
         }
         return true;
     }
-    
+
     public static boolean lowerCaseLiteralEqualsIgnoreAsciiCaseString(@Literal String lowerCaseLiteral,
             String string) {
         if (string == null) {
             return false;
         }
         if (lowerCaseLiteral.length() != string.length()) {
             return false;
         }
@@ -126,25 +126,25 @@ public final class Portability {
                 c1 += 0x20;
             }
             if (c0 != c1) {
                 return false;
             }
         }
         return true;
     }
-    
+
     public static boolean literalEqualsString(@Literal String literal, String string) {
         return literal.equals(string);
     }
 
     public static boolean stringEqualsString(String one, String other) {
         return one.equals(other);
     }
-    
+
     public static void delete(Object o) {
-        
+
     }
 
     public static void deleteArray(Object o) {
-        
+
     }
 }
--- a/parser/html/javasrc/TreeBuilder.java
+++ b/parser/html/javasrc/TreeBuilder.java
@@ -92,17 +92,17 @@ public abstract class TreeBuilder<T> imp
     final static int FRAME = 10;
 
     final static int FRAMESET = 11;
 
     final static int IMAGE = 12;
 
     final static int INPUT = 13;
 
-    final static int ISINDEX = 14;
+    final static int RT_OR_RP = 14;
 
     final static int LI = 15;
 
     final static int LINK_OR_BASEFONT_OR_BGSOUND = 16;
 
     final static int MATH = 17;
 
     final static int META = 18;
@@ -198,18 +198,16 @@ public abstract class TreeBuilder<T> imp
     final static int KEYGEN = 65;
 
     final static int MENUITEM = 66;
 
     final static int TEMPLATE = 67;
 
     final static int IMG = 68;
 
-    final static int RT_OR_RP = 69;
-
     // start insertion modes
 
     private static final int IN_ROW = 0;
 
     private static final int IN_TABLE_BODY = 1;
 
     private static final int IN_TABLE = 2;
 
@@ -2347,84 +2345,16 @@ public abstract class TreeBuilder<T> imp
                             case INPUT:
                                 reconstructTheActiveFormattingElements();
                                 appendVoidElementToCurrentMayFoster(
                                         name, attributes,
                                         formPointer);
                                 selfClosing = false;
                                 attributes = null; // CPP
                                 break starttagloop;
-                            // CPPONLY:case ISINDEX:
-                            // CPPONLY:    errIsindex();
-                            // CPPONLY:    if (formPointer != null && !isTemplateContents()) {
-                            // CPPONLY:        break starttagloop;
-                            // CPPONLY:    }
-                            // CPPONLY:    implicitlyCloseP();
-                            // CPPONLY:    HtmlAttributes formAttrs = new HtmlAttributes(0);
-                            // CPPONLY:    int actionIndex = attributes.getIndex(AttributeName.ACTION);
-                            // CPPONLY:    if (actionIndex > -1) {
-                            // CPPONLY:        formAttrs.addAttribute(
-                            // CPPONLY:                AttributeName.ACTION,
-                            // CPPONLY:                attributes.getValueNoBoundsCheck(actionIndex),
-                            // CPPONLY:                attributes.getLineNoBoundsCheck(actionIndex)
-                            // CPPONLY:        );
-                            // CPPONLY:    }
-                            // CPPONLY:    appendToCurrentNodeAndPushFormElementMayFoster(formAttrs);
-                            // CPPONLY:    appendVoidElementToCurrentMayFoster(
-                            // CPPONLY:            ElementName.HR,
-                            // CPPONLY:            HtmlAttributes.EMPTY_ATTRIBUTES);
-                            // CPPONLY:    appendToCurrentNodeAndPushElementMayFoster(
-                            // CPPONLY:            ElementName.LABEL,
-                            // CPPONLY:            HtmlAttributes.EMPTY_ATTRIBUTES);
-                            // CPPONLY:    int promptIndex = attributes.getIndex(AttributeName.PROMPT);
-                            // CPPONLY:    if (promptIndex > -1) {
-                            // CPPONLY:        @Auto char[] prompt = Portability.newCharArrayFromString(attributes.getValueNoBoundsCheck(promptIndex));
-                            // CPPONLY:        appendCharacters(stack[currentPtr].node,
-                            // CPPONLY:                prompt, 0, prompt.length);
-                            // CPPONLY:    } else {
-                            // CPPONLY:        appendIsindexPrompt(stack[currentPtr].node);
-                            // CPPONLY:    }
-                            // CPPONLY:    HtmlAttributes inputAttributes = new HtmlAttributes(
-                            // CPPONLY:            0);
-                            // CPPONLY:    inputAttributes.addAttribute(
-                            // CPPONLY:            AttributeName.NAME,
-                            // CPPONLY:            Portability.newStringFromLiteral("isindex"),
-                            // CPPONLY:            tokenizer.getLineNumber()
-                            // CPPONLY:    );
-                            // CPPONLY:    for (int i = 0; i < attributes.getLength(); i++) {
-                            // CPPONLY:        @Local String attributeQName = attributes.getLocalNameNoBoundsCheck(i);
-                            // CPPONLY:        if ("name" == attributeQName
-                            // CPPONLY:                || "prompt" == attributeQName) {
-                            // CPPONLY:            attributes.releaseValue(i);
-                            // CPPONLY:        } else if ("action" != attributeQName) {
-                            // CPPONLY:            inputAttributes.AddAttributeWithLocal(
-                            // CPPONLY:                    attributeQName,
-                            // CPPONLY:                    attributes.getValueNoBoundsCheck(i),
-                            // CPPONLY:                    attributes.getLineNoBoundsCheck(i)
-                            // CPPONLY:            );
-                            // CPPONLY:        }
-                            // CPPONLY:    }
-                            // CPPONLY:    attributes.clearWithoutReleasingContents();
-                            // CPPONLY:    appendVoidElementToCurrentMayFoster(
-                            // CPPONLY:            "input",
-                            // CPPONLY:            inputAttributes, formPointer);
-                            // CPPONLY:    pop(); // label
-                            // CPPONLY:    appendVoidElementToCurrentMayFoster(
-                            // CPPONLY:            ElementName.HR,
-                            // CPPONLY:            HtmlAttributes.EMPTY_ATTRIBUTES);
-                            // CPPONLY:    pop(); // form
-                            // CPPONLY:
-                            // CPPONLY:    if (!isTemplateContents()) {
-                            // CPPONLY:        formPointer = null;
-                            // CPPONLY:    }
-                            // CPPONLY:
-                            // CPPONLY:    selfClosing = false;
-                            // CPPONLY:    // Don't delete attributes, they are deleted
-                            // CPPONLY:    // later
-                            // CPPONLY:    break starttagloop;
                             case TEXTAREA:
                                 appendToCurrentNodeAndPushElementMayFoster(
                                         elementName,
                                         attributes, formPointer);
                                 tokenizer.setStateAndEndTagExpectation(
                                         Tokenizer.RCDATA, elementName);
                                 originalMode = mode;
                                 mode = TEXT;
@@ -3847,17 +3777,16 @@ public abstract class TreeBuilder<T> imp
                         // CPPONLY: case MENUITEM:
                         case PARAM_OR_SOURCE_OR_TRACK:
                         case EMBED:
                         case IMG:
                         case IMAGE:
                         case INPUT:
                         case KEYGEN: // XXX??
                         case HR:
-                        // CPPONLY: case ISINDEX:
                         case IFRAME:
                         case NOEMBED: // XXX???
                         case NOFRAMES: // XXX??
                         case SELECT:
                         case TABLE:
                         case TEXTAREA: // XXX??
                             errStrayEndTag(name);
                             break endtagloop;
@@ -5812,18 +5741,16 @@ public abstract class TreeBuilder<T> imp
 
     protected abstract void insertFosterParentedCharacters(
             @NoLength char[] buf, int start, int length, T table, T stackParent)
             throws SAXException;
 
     protected abstract void appendCharacters(T parent, @NoLength char[] buf,
             int start, int length) throws SAXException;
 
-    // CPPONLY: protected abstract void appendIsindexPrompt(T parent) throws SAXException;
-
     protected abstract void appendComment(T parent, @NoLength char[] buf,
             int start, int length) throws SAXException;
 
     protected abstract void appendCommentToDocument(@NoLength char[] buf,
             int start, int length) throws SAXException;
 
     protected abstract void addAttributesToElement(T element,
             HtmlAttributes attributes) throws SAXException;
@@ -6510,20 +6437,16 @@ public abstract class TreeBuilder<T> imp
         errNoCheck("Bad start tag in \u201C" + name
                 + "\u201D in \u201Chead\u201D.");
     }
 
     private void errImage() throws SAXException {
         err("Saw a start tag \u201Cimage\u201D.");
     }
 
-    // CPPONLY: private void errIsindex() throws SAXException {
-    // CPPONLY:     err("\u201Cisindex\u201D seen.");
-    // CPPONLY: }
-
     private void errFooSeenWhenFooOpen(@Local String name) throws SAXException {
         if (errorHandler == null) {
             return;
         }
         errNoCheck("An \u201C" + name + "\u201D start tag seen but an element of the same type was already open.");
     }
 
     private void errHeadingWhenHeadingOpen() throws SAXException {
--- a/parser/html/nsHtml5ElementName.cpp
+++ b/parser/html/nsHtml5ElementName.cpp
@@ -72,17 +72,16 @@ nsHtml5ElementName::nsHtml5ElementName()
 
 
 nsHtml5ElementName::~nsHtml5ElementName()
 {
   MOZ_COUNT_DTOR(nsHtml5ElementName);
 }
 
 nsHtml5ElementName* nsHtml5ElementName::ELT_ANNOTATION_XML = nullptr;
-nsHtml5ElementName* nsHtml5ElementName::ELT_ISINDEX = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_BIG = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_BDO = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_COL = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_DEL = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_DFN = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_DIR = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_DIV = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_IMG = nullptr;
@@ -278,62 +277,59 @@ nsHtml5ElementName* nsHtml5ElementName::
 nsHtml5ElementName* nsHtml5ElementName::ELT_FECONVOLVEMATRIX = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_BODY = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FEMORPHOLOGY = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_RUBY = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_SUMMARY = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_TBODY = nullptr;
 nsHtml5ElementName** nsHtml5ElementName::ELEMENT_NAMES = 0;
 static int32_t const ELEMENT_HASHES_DATA[] = {
-  1903302038, 1749656156, 2001349720, 893386754,  1803929812, 1971461414,
-  2007781534, 59821379,   1733054663, 1756625221, 1870268949, 1941178676,
-  1986527234, 2005324101, 2068523853, 55104723,   62450211,   1686491348,
+  1903302038, 1749656156, 2001349704, 893386754,  1803929812, 1968836118,
+  2007601444, 59821379,   1733054663, 1756625221, 1870268949, 1941178676,
+  1983633431, 2004635806, 2060065124, 55104723,   62450211,   1686491348,
   1747176599, 1751288021, 1783210839, 1853642948, 1884120164, 1914900309,
-  1967788867, 1982173479, 1998724870, 2001392798, 2006329158, 2008994116,
+  1967788867, 1973420034, 1998585858, 2001392796, 2006028454, 2008851557,
   2085266636, 52485715,   57733651,   60354131,   67633153,   960495618,
   1715310660, 1737099991, 1748100148, 1749801286, 1755076808, 1757268168,
   1790207270, 1806806678, 1857653029, 1881288348, 1898753862, 1906135367,
-  1934172497, 1965334268, 1968053806, 1971938532, 1983533124, 1990037800,
-  2001309869, 2001392795, 2003183333, 2005925890, 2006974466, 2008340774,
-  2051837468, 2070023911, 2092255447, 51438659,   52488851,   56151587,
+  1934172497, 1965334268, 1967795958, 1971465813, 1982935782, 1988763672,
+  1999397992, 2001349736, 2001495140, 2005719336, 2006896969, 2008125638,
+  2021937364, 2068523856, 2092255447, 51438659,   52488851,   56151587,
   59244545,   60347747,   61925907,   63438849,   69730305,   926941186,
   1682547543, 1699324759, 1730965751, 1733890180, 1740181637, 1747814436,
   1748359220, 1749715159, 1749905526, 1752979652, 1756474198, 1757146773,
   1766992520, 1783388498, 1798686984, 1805502724, 1818230786, 1854228698,
   1868312196, 1874053333, 1881613047, 1889085973, 1900845386, 1905563974,
-  1907661127, 1925844629, 1938817026, 1963982850, 1967128578, 1967795958,
-  1968836118, 1971465813, 1973420034, 1982935782, 1983633431, 1988763672,
-  1998585858, 1999397992, 2001349704, 2001349736, 2001392796, 2001495140,
-  2004635806, 2005719336, 2006028454, 2006896969, 2007601444, 2008125638,
-  2008851557, 2021937364, 2060065124, 2068523856, 2083120164, 2091479332,
+  1907661127, 1925844629, 1938817026, 1963982850, 1967128578, 1967795910,
+  1968053806, 1971461414, 1971938532, 1982173479, 1983533124, 1986527234,
+  1990037800, 1998724870, 2001309869, 2001349720, 2001392795, 2001392798,
+  2003183333, 2005324101, 2005925890, 2006329158, 2006974466, 2007781534,
+  2008340774, 2008994116, 2051837468, 2068523853, 2083120164, 2091479332,
   2092557349, 51434643,   51961587,   52486755,   52490899,   55110883,
   57206291,   58773795,   59768833,   60345171,   60352339,   61395251,
   62390273,   62973651,   67108865,   68681729,   876609538,  910163970,
   943718402,  1679960596, 1686489160, 1689922072, 1703936002, 1730150402,
   1732381397, 1733076167, 1736200310, 1738539010, 1747048757, 1747306711,
   1747838298, 1748225318, 1749395095, 1749673195, 1749723735, 1749813541,
   1749932347, 1751386406, 1753362711, 1755148615, 1756600614, 1757137429,
   1757157700, 1763839627, 1782357526, 1783388497, 1786534215, 1797585096,
   1803876550, 1803929861, 1805647874, 1807599880, 1818755074, 1854228692,
   1854245076, 1864368130, 1870135298, 1873281026, 1874102998, 1881498736,
   1881669634, 1887579800, 1898223949, 1899272519, 1902641154, 1904412884,
   1906087319, 1907435316, 1907959605, 1919418370, 1932928296, 1935549734,
-  1939219752, 1941221172, 1965115924, 1966223078, 1967760215, 1967795910
+  1939219752, 1941221172, 1965115924, 1966223078, 1967760215
 };
 staticJArray<int32_t,int32_t> nsHtml5ElementName::ELEMENT_HASHES = { ELEMENT_HASHES_DATA, MOZ_ARRAY_LENGTH(ELEMENT_HASHES_DATA) };
 void
 nsHtml5ElementName::initializeStatics()
 {
   ELT_ANNOTATION_XML = new nsHtml5ElementName(
     nsGkAtoms::annotation_xml_,
     nsGkAtoms::annotation_xml_,
     nsHtml5TreeBuilder::ANNOTATION_XML | SCOPING_AS_MATHML);
-  ELT_ISINDEX = new nsHtml5ElementName(nsGkAtoms::isindex,
-                                       nsGkAtoms::isindex,
-                                       nsHtml5TreeBuilder::ISINDEX | SPECIAL);
   ELT_BIG = new nsHtml5ElementName(
     nsGkAtoms::big,
     nsGkAtoms::big,
     nsHtml5TreeBuilder::
       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(
     nsGkAtoms::bdo, nsGkAtoms::bdo, nsHtml5TreeBuilder::OTHER);
   ELT_COL = new nsHtml5ElementName(
@@ -971,47 +967,47 @@ nsHtml5ElementName::initializeStatics()
     nsHtml5TreeBuilder::
         ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
       SPECIAL);
   ELT_TBODY =
     new nsHtml5ElementName(nsGkAtoms::tbody,
                            nsGkAtoms::tbody,
                            nsHtml5TreeBuilder::TBODY_OR_THEAD_OR_TFOOT |
                              SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
-  ELEMENT_NAMES = new nsHtml5ElementName*[204];
+  ELEMENT_NAMES = new nsHtml5ElementName*[203];
   ELEMENT_NAMES[0] = ELT_KEYGEN;
   ELEMENT_NAMES[1] = ELT_FETURBULENCE;
-  ELEMENT_NAMES[2] = ELT_FRAMESET;
+  ELEMENT_NAMES[2] = ELT_FIELDSET;
   ELEMENT_NAMES[3] = ELT_H2;
   ELEMENT_NAMES[4] = ELT_MATH;
-  ELEMENT_NAMES[5] = ELT_MARKER;
-  ELEMENT_NAMES[6] = ELT_RADIALGRADIENT;
+  ELEMENT_NAMES[5] = ELT_HEADER;
+  ELEMENT_NAMES[6] = ELT_RECT;
   ELEMENT_NAMES[7] = ELT_RTC;
   ELEMENT_NAMES[8] = ELT_FEBLEND;
   ELEMENT_NAMES[9] = ELT_STYLE;
   ELEMENT_NAMES[10] = ELT_LABEL;
   ELEMENT_NAMES[11] = ELT_SAMP;
-  ELEMENT_NAMES[12] = ELT_MS;
-  ELEMENT_NAMES[13] = ELT_MTEXT;
-  ELEMENT_NAMES[14] = ELT_FECOLORMATRIX;
+  ELEMENT_NAMES[12] = ELT_DETAILS;
+  ELEMENT_NAMES[13] = ELT_LINEARGRADIENT;
+  ELEMENT_NAMES[14] = ELT_VIEW;
   ELEMENT_NAMES[15] = ELT_IMG;
   ELEMENT_NAMES[16] = ELT_WBR;
   ELEMENT_NAMES[17] = ELT_META;
   ELEMENT_NAMES[18] = ELT_ARTICLE;
   ELEMENT_NAMES[19] = ELT_IMAGE;
   ELEMENT_NAMES[20] = ELT_FEFUNCG;
   ELEMENT_NAMES[21] = ELT_LINK;
   ELEMENT_NAMES[22] = ELT_FORM;
   ELEMENT_NAMES[23] = ELT_AUDIO;
   ELEMENT_NAMES[24] = ELT_FECOMPONENTTRANSFER;
-  ELEMENT_NAMES[25] = ELT_ADDRESS;
-  ELEMENT_NAMES[26] = ELT_APPLET;
-  ELEMENT_NAMES[27] = ELT_FEDISTANTLIGHT;
-  ELEMENT_NAMES[28] = ELT_OUTPUT;
-  ELEMENT_NAMES[29] = ELT_TEXT;
+  ELEMENT_NAMES[25] = ELT_TR;
+  ELEMENT_NAMES[26] = ELT_DT;
+  ELEMENT_NAMES[27] = ELT_FEPOINTLIGHT;
+  ELEMENT_NAMES[28] = ELT_OBJECT;
+  ELEMENT_NAMES[29] = ELT_TFOOT;
   ELEMENT_NAMES[30] = ELT_FEMORPHOLOGY;
   ELEMENT_NAMES[31] = ELT_DEL;
   ELEMENT_NAMES[32] = ELT_NAV;
   ELEMENT_NAMES[33] = ELT_SET;
   ELEMENT_NAMES[34] = ELT_Q;
   ELEMENT_NAMES[35] = ELT_H6;
   ELEMENT_NAMES[36] = ELT_DESC;
   ELEMENT_NAMES[37] = ELT_NOEMBED;
@@ -1022,28 +1018,28 @@ nsHtml5ElementName::initializeStatics()
   ELEMENT_NAMES[42] = ELT_STRONG;
   ELEMENT_NAMES[43] = ELT_SWITCH;
   ELEMENT_NAMES[44] = ELT_TRACK;
   ELEMENT_NAMES[45] = ELT_ALTGLYPHITEM;
   ELEMENT_NAMES[46] = ELT_BUTTON;
   ELEMENT_NAMES[47] = ELT_PATTERN;
   ELEMENT_NAMES[48] = ELT_FEDISPLACEMENTMAP;
   ELEMENT_NAMES[49] = ELT_ANIMATECOLOR;
-  ELEMENT_NAMES[50] = ELT_FEGAUSSIANBLUR;
-  ELEMENT_NAMES[51] = ELT_NOBR;
-  ELEMENT_NAMES[52] = ELT_DEFS;
-  ELEMENT_NAMES[53] = ELT_PROGRESS;
-  ELEMENT_NAMES[54] = ELT_FOREIGNOBJECT;
-  ELEMENT_NAMES[55] = ELT_FESPOTLIGHT;
-  ELEMENT_NAMES[56] = ELT_INPUT;
-  ELEMENT_NAMES[57] = ELT_RT;
-  ELEMENT_NAMES[58] = ELT_TT;
-  ELEMENT_NAMES[59] = ELT_SCRIPT;
-  ELEMENT_NAMES[60] = ELT_FEDROPSHADOW;
-  ELEMENT_NAMES[61] = ELT_ISINDEX;
+  ELEMENT_NAMES[50] = ELT_FOOTER;
+  ELEMENT_NAMES[51] = ELT_METER;
+  ELEMENT_NAMES[52] = ELT_CANVAS;
+  ELEMENT_NAMES[53] = ELT_NOFRAMES;
+  ELEMENT_NAMES[54] = ELT_BASEFONT;
+  ELEMENT_NAMES[55] = ELT_FEOFFSET;
+  ELEMENT_NAMES[56] = ELT_FONT;
+  ELEMENT_NAMES[57] = ELT_NOSCRIPT;
+  ELEMENT_NAMES[58] = ELT_PLAINTEXT;
+  ELEMENT_NAMES[59] = ELT_SELECT;
+  ELEMENT_NAMES[60] = ELT_MENU;
+  ELEMENT_NAMES[61] = ELT_FECONVOLVEMATRIX;
   ELEMENT_NAMES[62] = ELT_SUMMARY;
   ELEMENT_NAMES[63] = ELT_BDO;
   ELEMENT_NAMES[64] = ELT_DIR;
   ELEMENT_NAMES[65] = ELT_KBD;
   ELEMENT_NAMES[66] = ELT_A;
   ELEMENT_NAMES[67] = ELT_SVG;
   ELEMENT_NAMES[68] = ELT_VAR;
   ELEMENT_NAMES[69] = ELT_I;
@@ -1073,39 +1069,39 @@ nsHtml5ElementName::initializeStatics()
   ELEMENT_NAMES[93] = ELT_PARAM;
   ELEMENT_NAMES[94] = ELT_FIGCAPTION;
   ELEMENT_NAMES[95] = ELT_OPTION;
   ELEMENT_NAMES[96] = ELT_SECTION;
   ELEMENT_NAMES[97] = ELT_VIDEO;
   ELEMENT_NAMES[98] = ELT_RP;
   ELEMENT_NAMES[99] = ELT_BR;
   ELEMENT_NAMES[100] = ELT_HR;
-  ELEMENT_NAMES[101] = ELT_FOOTER;
-  ELEMENT_NAMES[102] = ELT_HEADER;
-  ELEMENT_NAMES[103] = ELT_METER;
-  ELEMENT_NAMES[104] = ELT_TR;
-  ELEMENT_NAMES[105] = ELT_CANVAS;
-  ELEMENT_NAMES[106] = ELT_DETAILS;
-  ELEMENT_NAMES[107] = ELT_NOFRAMES;
-  ELEMENT_NAMES[108] = ELT_DT;
-  ELEMENT_NAMES[109] = ELT_BASEFONT;
-  ELEMENT_NAMES[110] = ELT_FIELDSET;
-  ELEMENT_NAMES[111] = ELT_FEOFFSET;
-  ELEMENT_NAMES[112] = ELT_FEPOINTLIGHT;
-  ELEMENT_NAMES[113] = ELT_FONT;
-  ELEMENT_NAMES[114] = ELT_LINEARGRADIENT;
-  ELEMENT_NAMES[115] = ELT_NOSCRIPT;
-  ELEMENT_NAMES[116] = ELT_OBJECT;
-  ELEMENT_NAMES[117] = ELT_PLAINTEXT;
-  ELEMENT_NAMES[118] = ELT_RECT;
-  ELEMENT_NAMES[119] = ELT_SELECT;
-  ELEMENT_NAMES[120] = ELT_TFOOT;
-  ELEMENT_NAMES[121] = ELT_MENU;
-  ELEMENT_NAMES[122] = ELT_VIEW;
-  ELEMENT_NAMES[123] = ELT_FECONVOLVEMATRIX;
+  ELEMENT_NAMES[101] = ELT_FILTER;
+  ELEMENT_NAMES[102] = ELT_FEGAUSSIANBLUR;
+  ELEMENT_NAMES[103] = ELT_MARKER;
+  ELEMENT_NAMES[104] = ELT_NOBR;
+  ELEMENT_NAMES[105] = ELT_ADDRESS;
+  ELEMENT_NAMES[106] = ELT_DEFS;
+  ELEMENT_NAMES[107] = ELT_MS;
+  ELEMENT_NAMES[108] = ELT_PROGRESS;
+  ELEMENT_NAMES[109] = ELT_APPLET;
+  ELEMENT_NAMES[110] = ELT_FOREIGNOBJECT;
+  ELEMENT_NAMES[111] = ELT_FRAMESET;
+  ELEMENT_NAMES[112] = ELT_FESPOTLIGHT;
+  ELEMENT_NAMES[113] = ELT_FEDISTANTLIGHT;
+  ELEMENT_NAMES[114] = ELT_INPUT;
+  ELEMENT_NAMES[115] = ELT_MTEXT;
+  ELEMENT_NAMES[116] = ELT_RT;
+  ELEMENT_NAMES[117] = ELT_OUTPUT;
+  ELEMENT_NAMES[118] = ELT_TT;
+  ELEMENT_NAMES[119] = ELT_RADIALGRADIENT;
+  ELEMENT_NAMES[120] = ELT_SCRIPT;
+  ELEMENT_NAMES[121] = ELT_TEXT;
+  ELEMENT_NAMES[122] = ELT_FEDROPSHADOW;
+  ELEMENT_NAMES[123] = ELT_FECOLORMATRIX;
   ELEMENT_NAMES[124] = ELT_BODY;
   ELEMENT_NAMES[125] = ELT_RUBY;
   ELEMENT_NAMES[126] = ELT_TBODY;
   ELEMENT_NAMES[127] = ELT_BIG;
   ELEMENT_NAMES[128] = ELT_COL;
   ELEMENT_NAMES[129] = ELT_DFN;
   ELEMENT_NAMES[130] = ELT_DIV;
   ELEMENT_NAMES[131] = ELT_INS;
@@ -1175,24 +1171,22 @@ nsHtml5ElementName::initializeStatics()
   ELEMENT_NAMES[195] = ELT_MO;
   ELEMENT_NAMES[196] = ELT_COLGROUP;
   ELEMENT_NAMES[197] = ELT_HGROUP;
   ELEMENT_NAMES[198] = ELT_OPTGROUP;
   ELEMENT_NAMES[199] = ELT_STOP;
   ELEMENT_NAMES[200] = ELT_ABBR;
   ELEMENT_NAMES[201] = ELT_CENTER;
   ELEMENT_NAMES[202] = ELT_FEFUNCR;
-  ELEMENT_NAMES[203] = ELT_FILTER;
 }
 
 void
 nsHtml5ElementName::releaseStatics()
 {
   delete ELT_ANNOTATION_XML;
-  delete ELT_ISINDEX;
   delete ELT_BIG;
   delete ELT_BDO;
   delete ELT_COL;
   delete ELT_DEL;
   delete ELT_DFN;
   delete ELT_DIR;
   delete ELT_DIV;
   delete ELT_IMG;
--- a/parser/html/nsHtml5ElementName.h
+++ b/parser/html/nsHtml5ElementName.h
@@ -105,39 +105,39 @@ public:
         i = 2 * i + 2;
       } else if (val > key) {
         i = 2 * i + 1;
       } else {
         return i;
       }
     }
     return -1;
-  }
+    }
 
-  inline static nsHtml5ElementName* elementNameByBuffer(
-    char16_t* buf,
-    int32_t offset,
-    int32_t length,
-    nsHtml5AtomTable* interner)
-  {
-    uint32_t hash = nsHtml5ElementName::bufToHash(buf, length);
-    jArray<int32_t, int32_t> hashes;
-    hashes = nsHtml5ElementName::ELEMENT_HASHES;
-    int32_t index = levelOrderBinarySearch(hashes, hash);
-    if (index < 0) {
-      return nullptr;
-    } else {
-      nsHtml5ElementName* elementName =
-        nsHtml5ElementName::ELEMENT_NAMES[index];
-      nsIAtom* name = elementName->name;
-      if (!nsHtml5Portability::localEqualsBuffer(name, buf, offset, length)) {
+    inline static nsHtml5ElementName* elementNameByBuffer(
+      char16_t* buf,
+      int32_t offset,
+      int32_t length,
+      nsHtml5AtomTable* interner)
+    {
+      uint32_t hash = nsHtml5ElementName::bufToHash(buf, length);
+      jArray<int32_t, int32_t> hashes;
+      hashes = nsHtml5ElementName::ELEMENT_HASHES;
+      int32_t index = levelOrderBinarySearch(hashes, hash);
+      if (index < 0) {
         return nullptr;
+      } else {
+        nsHtml5ElementName* elementName =
+          nsHtml5ElementName::ELEMENT_NAMES[index];
+        nsIAtom* name = elementName->name;
+        if (!nsHtml5Portability::localEqualsBuffer(name, buf, offset, length)) {
+          return nullptr;
+        }
+        return elementName;
       }
-      return elementName;
-    }
     }
 
   private:
     inline static uint32_t bufToHash(char16_t* buf, int32_t length)
     {
       uint32_t len = length;
       uint32_t first = buf[0];
       first <<= 19;
@@ -173,17 +173,16 @@ public:
     inline void setNameForNonInterned(nsIAtom* name)
     {
       this->name = name;
       this->camelCaseName = name;
       MOZ_ASSERT(this->flags == nsHtml5ElementName::NOT_INTERNED);
     }
 
     static nsHtml5ElementName* ELT_ANNOTATION_XML;
-    static nsHtml5ElementName* ELT_ISINDEX;
     static nsHtml5ElementName* ELT_BIG;
     static nsHtml5ElementName* ELT_BDO;
     static nsHtml5ElementName* ELT_COL;
     static nsHtml5ElementName* ELT_DEL;
     static nsHtml5ElementName* ELT_DFN;
     static nsHtml5ElementName* ELT_DIR;
     static nsHtml5ElementName* ELT_DIV;
     static nsHtml5ElementName* ELT_IMG;
--- a/parser/html/nsHtml5Portability.h
+++ b/parser/html/nsHtml5Portability.h
@@ -1,27 +1,27 @@
 /*
  * Copyright (c) 2008-2015 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 Portability.java instead and regenerate.
  */
 
--- a/parser/html/nsHtml5TreeBuilder.cpp
+++ b/parser/html/nsHtml5TreeBuilder.cpp
@@ -1294,64 +1294,16 @@ nsHtml5TreeBuilder::startTag(nsHtml5Elem
             case KEYGEN:
             case INPUT: {
               reconstructTheActiveFormattingElements();
               appendVoidElementToCurrentMayFoster(name, attributes, formPointer);
               selfClosing = false;
               attributes = nullptr;
               NS_HTML5_BREAK(starttagloop);
             }
-            case ISINDEX: {
-              errIsindex();
-              if (!!formPointer && !isTemplateContents()) {
-                NS_HTML5_BREAK(starttagloop);
-              }
-              implicitlyCloseP();
-              nsHtml5HtmlAttributes* formAttrs = new nsHtml5HtmlAttributes(0);
-              int32_t actionIndex = attributes->getIndex(nsHtml5AttributeName::ATTR_ACTION);
-              if (actionIndex > -1) {
-                formAttrs->addAttribute(nsHtml5AttributeName::ATTR_ACTION, attributes->getValueNoBoundsCheck(actionIndex), attributes->getLineNoBoundsCheck(actionIndex));
-              }
-              appendToCurrentNodeAndPushFormElementMayFoster(formAttrs);
-              appendVoidElementToCurrentMayFoster(nsHtml5ElementName::ELT_HR, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES);
-              appendToCurrentNodeAndPushElementMayFoster(nsHtml5ElementName::ELT_LABEL, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES);
-              int32_t promptIndex = attributes->getIndex(nsHtml5AttributeName::ATTR_PROMPT);
-              if (promptIndex > -1) {
-                autoJArray<char16_t,int32_t> prompt = nsHtml5Portability::newCharArrayFromString(attributes->getValueNoBoundsCheck(promptIndex));
-                appendCharacters(stack[currentPtr]->node, prompt, 0, prompt.length);
-              } else {
-                appendIsindexPrompt(stack[currentPtr]->node);
-              }
-              nsHtml5HtmlAttributes* inputAttributes = new nsHtml5HtmlAttributes(0);
-              inputAttributes->addAttribute(nsHtml5AttributeName::ATTR_NAME, nsHtml5Portability::newStringFromLiteral("isindex"), tokenizer->getLineNumber());
-              for (int32_t i = 0; i < attributes->getLength(); i++) {
-                nsIAtom* attributeQName =
-                  attributes->getLocalNameNoBoundsCheck(i);
-                if (nsGkAtoms::name == attributeQName ||
-                    nsGkAtoms::prompt == attributeQName) {
-                  attributes->releaseValue(i);
-                } else if (nsGkAtoms::action != attributeQName) {
-                  inputAttributes->AddAttributeWithLocal(
-                    attributeQName,
-                    attributes->getValueNoBoundsCheck(i),
-                    attributes->getLineNoBoundsCheck(i));
-                }
-              }
-              attributes->clearWithoutReleasingContents();
-              appendVoidElementToCurrentMayFoster(
-                nsGkAtoms::input, inputAttributes, formPointer);
-              pop();
-              appendVoidElementToCurrentMayFoster(nsHtml5ElementName::ELT_HR, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES);
-              pop();
-              if (!isTemplateContents()) {
-                formPointer = nullptr;
-              }
-              selfClosing = false;
-              NS_HTML5_BREAK(starttagloop);
-            }
             case TEXTAREA: {
               appendToCurrentNodeAndPushElementMayFoster(elementName, attributes, formPointer);
               tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RCDATA,
                                                       elementName);
               originalMode = mode;
               mode = TEXT;
               needToDropLF = true;
               attributes = nullptr;
@@ -2796,17 +2748,16 @@ nsHtml5TreeBuilder::endTag(nsHtml5Elemen
 #endif
           case PARAM_OR_SOURCE_OR_TRACK:
           case EMBED:
           case IMG:
           case IMAGE:
           case INPUT:
           case KEYGEN:
           case HR:
-          case ISINDEX:
           case IFRAME:
           case NOEMBED:
           case NOFRAMES:
           case SELECT:
           case TABLE:
           case TEXTAREA: {
             errStrayEndTag(name);
             NS_HTML5_BREAK(endtagloop);
--- a/parser/html/nsHtml5TreeBuilder.h
+++ b/parser/html/nsHtml5TreeBuilder.h
@@ -96,17 +96,17 @@ class nsHtml5TreeBuilder : public nsAHtm
     static const int32_t FRAME = 10;
 
     static const int32_t FRAMESET = 11;
 
     static const int32_t IMAGE = 12;
 
     static const int32_t INPUT = 13;
 
-    static const int32_t ISINDEX = 14;
+    static const int32_t RT_OR_RP = 14;
 
     static const int32_t LI = 15;
 
     static const int32_t LINK_OR_BASEFONT_OR_BGSOUND = 16;
 
     static const int32_t MATH = 17;
 
     static const int32_t META = 18;
@@ -206,18 +206,16 @@ class nsHtml5TreeBuilder : public nsAHtm
     static const int32_t KEYGEN = 65;
 
     static const int32_t MENUITEM = 66;
 
     static const int32_t TEMPLATE = 67;
 
     static const int32_t IMG = 68;
 
-    static const int32_t RT_OR_RP = 69;
-
   private:
     static const int32_t IN_ROW = 0;
 
     static const int32_t IN_TABLE_BODY = 1;
 
     static const int32_t IN_TABLE = 2;
 
     static const int32_t IN_CAPTION = 3;
@@ -465,17 +463,16 @@ class nsHtml5TreeBuilder : public nsAHtm
     void detachFromParent(nsIContentHandle* element);
     bool hasChildren(nsIContentHandle* element);
     void appendElement(nsIContentHandle* child, nsIContentHandle* newParent);
     void appendChildrenToNewParent(nsIContentHandle* oldParent, nsIContentHandle* newParent);
     void insertFosterParentedChild(nsIContentHandle* child, nsIContentHandle* table, nsIContentHandle* stackParent);
     nsIContentHandle* createAndInsertFosterParentedElement(int32_t ns, nsIAtom* name, nsHtml5HtmlAttributes* attributes, nsIContentHandle* form, nsIContentHandle* table, nsIContentHandle* stackParent);
     ;void insertFosterParentedCharacters(char16_t* buf, int32_t start, int32_t length, nsIContentHandle* table, nsIContentHandle* stackParent);
     void appendCharacters(nsIContentHandle* parent, char16_t* buf, int32_t start, int32_t length);
-    void appendIsindexPrompt(nsIContentHandle* parent);
     void appendComment(nsIContentHandle* parent, char16_t* buf, int32_t start, int32_t length);
     void appendCommentToDocument(char16_t* buf, int32_t start, int32_t length);
     void addAttributesToElement(nsIContentHandle* element, nsHtml5HtmlAttributes* attributes);
     void markMalformedIfScript(nsIContentHandle* elt);
     void start(bool fragmentMode);
     void end();
     void appendDoctypeToDocument(nsIAtom* name,
                                  nsHtml5String publicIdentifier,
--- a/parser/html/nsHtml5TreeBuilderCppSupplement.h
+++ b/parser/html/nsHtml5TreeBuilderCppSupplement.h
@@ -583,36 +583,16 @@ nsHtml5TreeBuilder::appendCharacters(nsI
   
   nsHtml5TreeOperation* treeOp = mOpQueue.AppendElement();
   NS_ASSERTION(treeOp, "Tree op allocation failed.");
   treeOp->Init(eTreeOpAppendText, bufferCopy, aLength,
       deepTreeSurrogateParent ? deepTreeSurrogateParent : aParent);
 }
 
 void
-nsHtml5TreeBuilder::appendIsindexPrompt(nsIContentHandle* aParent)
-{
-  NS_PRECONDITION(aParent, "Null parent");
-
-  if (mBuilder) {
-    nsresult rv = nsHtml5TreeOperation::AppendIsindexPrompt(
-      static_cast<nsIContent*>(aParent),
-      mBuilder);
-    if (NS_FAILED(rv)) {
-      MarkAsBrokenAndRequestSuspension(rv);
-    }
-    return;
-  }
-
-  nsHtml5TreeOperation* treeOp = mOpQueue.AppendElement();
-  NS_ASSERTION(treeOp, "Tree op allocation failed.");
-  treeOp->Init(eTreeOpAppendIsindexPrompt, aParent);
-}
-
-void
 nsHtml5TreeBuilder::appendComment(nsIContentHandle* aParent, char16_t* aBuffer, int32_t aStart, int32_t aLength)
 {
   NS_PRECONDITION(aBuffer, "Null buffer");
   NS_PRECONDITION(aParent, "Null parent");
   MOZ_ASSERT(!aStart, "aStart must always be zero.");
 
   if (deepTreeSurrogateParent) {
     return;
--- a/parser/html/nsHtml5TreeOperation.cpp
+++ b/parser/html/nsHtml5TreeOperation.cpp
@@ -459,34 +459,16 @@ nsHtml5TreeOperation::SetFormElement(nsI
     RefPtr<dom::HTMLImageElement> imageElement =
       static_cast<dom::HTMLImageElement*>(domImageElement.get());
     MOZ_ASSERT(imageElement);
     imageElement->SetForm(formElement);
   }
 }
 
 nsresult
-nsHtml5TreeOperation::AppendIsindexPrompt(nsIContent* parent, nsHtml5DocumentBuilder* aBuilder)
-{
-  nsXPIDLString prompt;
-  nsresult rv =
-      nsContentUtils::GetLocalizedString(nsContentUtils::eFORMS_PROPERTIES,
-                                         "IsIndexPromptWithSpace", prompt);
-  uint32_t len = prompt.Length();
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-  if (!len) {
-    // Don't bother appending a zero-length text node.
-    return NS_OK;
-  }
-  return AppendText(prompt.BeginReading(), len, parent, aBuilder);
-}
-
-nsresult
 nsHtml5TreeOperation::FosterParentText(nsIContent* aStackParent,
                                        char16_t* aBuffer,
                                        uint32_t aLength,
                                        nsIContent* aTable,
                                        nsHtml5DocumentBuilder* aBuilder)
 {
   MOZ_ASSERT(aBuilder);
   MOZ_ASSERT(aBuilder->IsInDocUpdate());
@@ -707,20 +689,16 @@ nsHtml5TreeOperation::Perform(nsHtml5Tre
       return NS_OK;
     }
     case eTreeOpAppendText: {
       nsIContent* parent = *mOne.node;
       char16_t* buffer = mTwo.unicharPtr;
       uint32_t length = mFour.integer;
       return AppendText(buffer, length, parent, aBuilder);
     }
-    case eTreeOpAppendIsindexPrompt: {
-      nsIContent* parent = *mOne.node;
-      return AppendIsindexPrompt(parent, aBuilder);
-    }
     case eTreeOpFosterParentText: {
       nsIContent* stackParent = *mOne.node;
       char16_t* buffer = mTwo.unicharPtr;
       uint32_t length = mFour.integer;
       nsIContent* table = *mThree.node;
       return FosterParentText(stackParent, buffer, length, table, aBuilder);
     }
     case eTreeOpAppendComment: {
--- a/parser/html/nsHtml5TreeOperation.h
+++ b/parser/html/nsHtml5TreeOperation.h
@@ -26,17 +26,16 @@ enum eHtml5TreeOperation {
   eTreeOpFosterParent,
   eTreeOpAppendToDocument,
   eTreeOpAddAttributes,
   eTreeOpDocumentMode,
   eTreeOpCreateElementNetwork,
   eTreeOpCreateElementNotNetwork,
   eTreeOpSetFormElement,
   eTreeOpAppendText,
-  eTreeOpAppendIsindexPrompt,
   eTreeOpFosterParentText,
   eTreeOpAppendComment,
   eTreeOpAppendCommentToDocument,
   eTreeOpAppendDoctypeToDocument,
   eTreeOpGetDocumentFragmentForTemplate,
   eTreeOpGetFosterParent,
   // Gecko-specific on-pop ops
   eTreeOpMarkAsBroken,
--- a/parser/htmlparser/tests/mochitest/html5lib_tree_construction/isindex.dat
+++ b/parser/htmlparser/tests/mochitest/html5lib_tree_construction/isindex.dat
@@ -1,67 +1,49 @@
 #data
 <isindex>
 #errors
 (1,9): expected-doctype-but-got-start-tag
-(1,9): deprecated-tag
+(1,9): expected-closing-tag-but-got-eof
 #document
 | <html>
 |   <head>
 |   <body>
-|     <form>
-|       <hr>
-|       <label>
-|         "This is a searchable index. Enter search keywords: "
-|         <input>
-|           name="isindex"
-|       <hr>
+|     <isindex>
 
 #data
 <isindex name="A" action="B" prompt="C" foo="D">
 #errors
 (1,48): expected-doctype-but-got-start-tag
-(1,48): deprecated-tag
+(1,48): expected-closing-tag-but-got-eof
 #document
 | <html>
 |   <head>
 |   <body>
-|     <form>
+|     <isindex>
 |       action="B"
-|       <hr>
-|       <label>
-|         "C"
-|         <input>
-|           foo="D"
-|           name="isindex"
-|       <hr>
+|       foo="D"
+|       name="A"
+|       prompt="C"
 
 #data
 <form><isindex>
 #errors
 (1,6): expected-doctype-but-got-start-tag
-(1,15): deprecated-tag
 (1,15): expected-closing-tag-but-got-eof
 #document
 | <html>
 |   <head>
 |   <body>
 |     <form>
+|       <isindex>
 
 #data
-<body><isindex><form>
+<!doctype html><isindex>x</isindex>x
 #errors
-6: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-15: “isindex” seen.
-21: End of file seen and there were open elements.
-21: Unclosed element “form”.
 #document
+| <!DOCTYPE html>
 | <html>
 |   <head>
 |   <body>
-|     <form>
-|       <hr>
-|       <label>
-|         "This is a searchable index. Enter search keywords: "
-|         <input>
-|           name="isindex"
-|       <hr>
-|     <form>
+|     <isindex>
+|       "x"
+|     "x"
--- a/parser/htmlparser/tests/mochitest/html5lib_tree_construction/template.dat
+++ b/parser/htmlparser/tests/mochitest/html5lib_tree_construction/template.dat
@@ -1385,34 +1385,22 @@
 #errors
 #document
 | <html>
 |   <head>
 |   <body>
 |     <form>
 |       <template>
 |         content
-|           <form>
-|             <hr>
-|             <label>
-|               "This is a searchable index. Enter search keywords: "
-|               <input>
-|                 name="isindex"
-|             <hr>
+|           <isindex>
 
 #data
 <body><form><template><isindex><form>
 #errors
 #document
 | <html>
 |   <head>
 |   <body>
 |     <form>
 |       <template>
 |         content
-|           <form>
-|             <hr>
-|             <label>
-|               "This is a searchable index. Enter search keywords: "
-|               <input>
-|                 name="isindex"
-|             <hr>
-|           <form>
+|           <isindex>
+|             <form>
--- a/parser/htmlparser/tests/mochitest/html5lib_tree_construction/tests19.dat
+++ b/parser/htmlparser/tests/mochitest/html5lib_tree_construction/tests19.dat
@@ -77,96 +77,26 @@
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |   <body>
 |     <p>
 |     <h1>
 
 #data
-<!doctype html><form><isindex>
-#errors
-(1,30): deprecated-tag
-(1,30): expected-closing-tag-but-got-eof
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <form>
-
-#data
-<!doctype html><isindex action="POST">
+<!doctype html><isindex type="hidden">
 #errors
-(1,38): deprecated-tag
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <form>
-|       action="POST"
-|       <hr>
-|       <label>
-|         "This is a searchable index. Enter search keywords: "
-|         <input>
-|           name="isindex"
-|       <hr>
-
-#data
-<!doctype html><isindex prompt="this is isindex">
-#errors
-(1,49): deprecated-tag
+(1,38): expected-closing-tag-but-got-eof
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |   <body>
-|     <form>
-|       <hr>
-|       <label>
-|         "this is isindex"
-|         <input>
-|           name="isindex"
-|       <hr>
-
-#data
-<!doctype html><isindex type="hidden">
-#errors
-(1,38): deprecated-tag
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <form>
-|       <hr>
-|       <label>
-|         "This is a searchable index. Enter search keywords: "
-|         <input>
-|           name="isindex"
-|           type="hidden"
-|       <hr>
-
-#data
-<!doctype html><isindex name="foo">
-#errors
-(1,35): deprecated-tag
-#document
-| <!DOCTYPE html>
-| <html>
-|   <head>
-|   <body>
-|     <form>
-|       <hr>
-|       <label>
-|         "This is a searchable index. Enter search keywords: "
-|         <input>
-|           name="isindex"
-|       <hr>
+|     <isindex>
+|       type="hidden"
 
 #data
 <!doctype html><ruby><p><rp>
 #errors
 (1,28): expected-closing-tag-but-got-eof
 #document
 | <!DOCTYPE html>
 | <html>
@@ -1319,16 +1249,17 @@
 (1,40): foster-parenting-character
 (1,44): foster-parenting-end-tag
 (1,44): adoption-agency-1.3
 (1,44): adoption-agency-1.3
 (1,45): foster-parenting-character
 (1,49): foster-parenting-end-tag
 (1,44): adoption-agency-1.3
 (1,44): adoption-agency-1.3
+(1,50): foster-parenting-character
 (1,50): eof-in-table
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |   <body>
 |     <i>
 |       "a"
--- a/parser/htmlparser/tests/mochitest/html5lib_tree_construction/tests2.dat
+++ b/parser/htmlparser/tests/mochitest/html5lib_tree_construction/tests2.dat
@@ -71,16 +71,45 @@
 (1,29): eof-in-frameset
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |   <frameset>
 
 #data
+<!DOCTYPE html><frameset> te st
+#errors
+(1,29): unexpected-char-in-frameset
+(1,29): unexpected-char-in-frameset
+(1,29): unexpected-char-in-frameset
+(1,29): unexpected-char-in-frameset
+(1,29): eof-in-frameset
+#document
+| <!DOCTYPE html>
+| <html>
+|   <head>
+|   <frameset>
+|     "  "
+
+#data
+<!DOCTYPE html><frameset></frameset> te st
+#errors
+(1,29): unexpected-char-after-frameset
+(1,29): unexpected-char-after-frameset
+(1,29): unexpected-char-after-frameset
+(1,29): unexpected-char-after-frameset
+#document
+| <!DOCTYPE html>
+| <html>
+|   <head>
+|   <frameset>
+|   "  "
+
+#data
 <!DOCTYPE html><frameset><!DOCTYPE html>
 #errors
 (1,40): unexpected-doctype
 (1,40): eof-in-frameset
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
@@ -190,40 +219,48 @@
 |     t3="3"
 |     t4="4"
 
 #data
 </b test
 #errors
 (1,8): eof-in-attribute-name
 (1,8): expected-doctype-but-got-eof
+#new-errors
+(1:9) eof-in-tag
 #document
 | <html>
 |   <head>
 |   <body>
 
 #data
 <!DOCTYPE html></b test<b &=&amp>X
 #errors
 (1,24): invalid-character-in-attribute-name
 (1,32): named-entity-without-semicolon
 (1,33): attributes-in-end-tag
 (1,33): unexpected-end-tag-before-html
+#new-errors
+(1:24) unexpected-character-in-attribute-name
+(1:33) missing-semicolon-after-character-reference
+(1:33) end-tag-with-attributes
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |   <body>
 |     "X"
 
 #data
 <!doctypehtml><scrIPt type=text/x-foobar;baz>X</SCRipt
 #errors
 (1,9): need-space-after-doctype
 (1,54): expected-named-closing-tag-but-got-eof
+#new-errors
+(1:10) missing-whitespace-before-doctype-name
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |     <script>
 |       type="text/x-foobar;baz"
 |       "X</SCRipt"
 |   <body>
@@ -238,49 +275,57 @@
 |   <body>
 |     "&"
 
 #data
 &#
 #errors
 (1,2): expected-numeric-entity
 (1,2): expected-doctype-but-got-chars
+#new-errors
+(1:3) absence-of-digits-in-numeric-character-reference
 #document
 | <html>
 |   <head>
 |   <body>
 |     "&#"
 
 #data
 &#X
 #errors
 (1,3): expected-numeric-entity
 (1,3): expected-doctype-but-got-chars
+#new-errors
+(1:4) absence-of-digits-in-numeric-character-reference
 #document
 | <html>
 |   <head>
 |   <body>
 |     "&#X"
 
 #data
 &#x
 #errors
 (1,3): expected-numeric-entity
 (1,3): expected-doctype-but-got-chars
+#new-errors
+(1:4) absence-of-digits-in-numeric-character-reference
 #document
 | <html>
 |   <head>
 |   <body>
 |     "&#x"
 
 #data
 &#45
 #errors
 (1,4): numeric-entity-without-semicolon
 (1,4): expected-doctype-but-got-chars
+#new-errors
+(1:5) missing-semicolon-after-character-reference
 #document
 | <html>
 |   <head>
 |   <body>
 |     "-"
 
 #data
 &x-test
@@ -291,53 +336,61 @@
 |   <head>
 |   <body>
 |     "&x-test"
 
 #data
 <!doctypehtml><p><li>
 #errors
 (1,9): need-space-after-doctype
+#new-errors
+(1:10) missing-whitespace-before-doctype-name
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |   <body>
 |     <p>
 |     <li>
 
 #data
 <!doctypehtml><p><dt>
 #errors
 (1,9): need-space-after-doctype
+#new-errors
+(1:10) missing-whitespace-before-doctype-name
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |   <body>
 |     <p>
 |     <dt>
 
 #data
 <!doctypehtml><p><dd>
 #errors
 (1,9): need-space-after-doctype
+#new-errors
+(1:10) missing-whitespace-before-doctype-name
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |   <body>
 |     <p>
 |     <dd>
 
 #data
 <!doctypehtml><p><form>
 #errors
 (1,9): need-space-after-doctype
 (1,23): expected-closing-tag-but-got-eof
+#new-errors
+(1:10) missing-whitespace-before-doctype-name
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |   <body>
 |     <p>
 |     <form>
 
@@ -352,27 +405,31 @@
 |     <p>
 |     "X"
 
 #data
 &AMP
 #errors
 (1,4): named-entity-without-semicolon
 (1,4): expected-doctype-but-got-chars
+#new-errors
+(1:5) missing-semicolon-after-character-reference
 #document
 | <html>
 |   <head>
 |   <body>
 |     "&"
 
 #data
 &AMp;
 #errors
 (1,3): expected-named-entity
 (1,3): expected-doctype-but-got-chars
+#new-errors
+(1:5) unknown-named-character-reference
 #document
 | <html>
 |   <head>
 |   <body>
 |     "&AMp;"
 
 #data
 <!DOCTYPE html><html><head></head><body><thisISasillyTESTelementNameToMakeSureCrazyTagNamesArePARSEDcorrectLY>
@@ -395,16 +452,18 @@
 |   <head>
 |   <body>
 |     "XX"
 
 #data
 <!DOCTYPE html><!-- X
 #errors
 (1,21): eof-in-comment
+#new-errors
+(1:22) eof-in-comment
 #document
 | <!DOCTYPE html>
 | <!--  X -->
 | <html>
 |   <head>
 |   <body>
 
 #data
@@ -437,17 +496,16 @@
 |     <select>
 |       <option>
 |       <optgroup>
 
 #data
 <!DOCTYPE html><select><optgroup><option></optgroup><option><select><option>
 #errors
 (1,68): unexpected-select-in-select
-(1,76): expected-closing-tag-but-got-eof
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |   <body>
 |     <select>
 |       <optgroup>
 |         <option>
@@ -502,16 +560,18 @@
 | <html>
 |   <head>
 |   <body>
 
 #data
 <!DOCTYPE html><!-- XXX - XXX
 #errors
 (1,29): eof-in-comment
+#new-errors
+(1:30) eof-in-comment
 #document
 | <!DOCTYPE html>
 | <!--  XXX - XXX -->
 | <html>
 |   <head>
 |   <body>
 
 #data
@@ -520,34 +580,16 @@
 #document
 | <!DOCTYPE html>
 | <!--  XXX - XXX - XXX  -->
 | <html>
 |   <head>
 |   <body>
 
 #data
-<isindex test=x name=x>
-#errors
-(1,23): expected-doctype-but-got-start-tag
-(1,23): deprecated-tag
-#document
-| <html>
-|   <head>
-|   <body>
-|     <form>
-|       <hr>
-|       <label>
-|         "This is a searchable index. Enter search keywords: "
-|         <input>
-|           name="isindex"
-|           test="x"
-|       <hr>
-
-#data
 test
 test
 #errors
 (2,4): expected-doctype-but-got-chars
 #document
 | <html>
 |   <head>
 |   <body>
@@ -700,31 +742,37 @@ x { content:"</style" } "
 |       "X"
 
 #data
 <!DOCTYPE html>X<p/x/y/z>
 #errors
 (1,19): unexpected-character-after-solidus-in-tag
 (1,21): unexpected-character-after-solidus-in-tag
 (1,23): unexpected-character-after-solidus-in-tag
+#new-errors
+(1:20) unexpected-solidus-in-tag
+(1:22) unexpected-solidus-in-tag
+(1:24) unexpected-solidus-in-tag
 #document
 | <!DOCTYPE html>
 | <html>
 |   <head>
 |   <body>
 |     "X"
 |     <p>
 |       x=""
 |       y=""
 |       z=""
 
 #data
 <!DOCTYPE html><!--x--
 #errors
 (1,22): eof-in-comment-double-dash
+#new-errors
+(1:23) eof-in-comment
 #document
 | <!DOCTYPE html>
 | <!-- x -->
 | <html>
 |   <head>
 |   <body>
 
 #data
@@ -743,16 +791,19 @@ x { content:"</style" } "
 |             <p>
 
 #data
 <!DOCTYPE <!DOCTYPE HTML>><!--<!--x-->-->
 #errors
 (1,20): expected-space-or-right-bracket-in-doctype
 (1,25): unknown-doctype
 (1,35): unexpected-char-in-comment
+#new-errors
+(1:21) invalid-character-sequence-after-doctype-name
+(1:35) nested-comment
 #document
 | <!DOCTYPE <!doctype>
 | <html>
 |   <head>
 |   <body>
 |     ">"
 |     <!-- <!--x -->
 |     "-->"
deleted file mode 100644
--- a/testing/web-platform/meta/html/semantics/forms/historical.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[historical.html]
-  type: testharness
-  [<input name=isindex> should not be supported]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/html/syntax/parsing/html5lib_isindex.html.ini
+++ /dev/null
@@ -1,44 +0,0 @@
-[html5lib_isindex.html?run_type=write_single]
-  type: testharness
-  [html5lib_isindex.html 579ca96e69c47b3d2ac83f1aa79a450b745d21f3]
-    expected: FAIL
-
-  [html5lib_isindex.html cb91f67071d81dd18d7ba9990de8f0f845c375f0]
-    expected: FAIL
-
-  [html5lib_isindex.html bd8ac64cc8f1422fac94bbe1c8828c0b51dca3f2]
-    expected: FAIL
-
-  [html5lib_isindex.html 4303a393c6933743460836cb5e7dd29ca7fd6f43]
-    expected: FAIL
-
-
-[html5lib_isindex.html?run_type=uri]
-  type: testharness
-  [html5lib_isindex.html 579ca96e69c47b3d2ac83f1aa79a450b745d21f3]
-    expected: FAIL
-
-  [html5lib_isindex.html cb91f67071d81dd18d7ba9990de8f0f845c375f0]
-    expected: FAIL
-
-  [html5lib_isindex.html bd8ac64cc8f1422fac94bbe1c8828c0b51dca3f2]
-    expected: FAIL
-
-  [html5lib_isindex.html 4303a393c6933743460836cb5e7dd29ca7fd6f43]
-    expected: FAIL
-
-
-[html5lib_isindex.html?run_type=write]
-  type: testharness
-  [html5lib_isindex.html 579ca96e69c47b3d2ac83f1aa79a450b745d21f3]
-    expected: FAIL
-
-  [html5lib_isindex.html cb91f67071d81dd18d7ba9990de8f0f845c375f0]
-    expected: FAIL
-
-  [html5lib_isindex.html bd8ac64cc8f1422fac94bbe1c8828c0b51dca3f2]
-    expected: FAIL
-
-  [html5lib_isindex.html 4303a393c6933743460836cb5e7dd29ca7fd6f43]
-    expected: FAIL
-
--- a/testing/web-platform/meta/html/syntax/parsing/html5lib_tests19.html.ini
+++ b/testing/web-platform/meta/html/syntax/parsing/html5lib_tests19.html.ini
@@ -4,32 +4,23 @@
     expected: FAIL
 
 
 [html5lib_tests19.html?run_type=write]
   type: testharness
   [html5lib_tests19.html d098e8a39897cd8453fc18399622e413872b054c]
     expected: FAIL
 
-  [html5lib_tests19.html 3b1730b917da1c33da80ee08d41573c44404c663]
-    expected: FAIL
-
 
 [html5lib_tests19.html?run_type=uri]
   type: testharness
   [html5lib_tests19.html d098e8a39897cd8453fc18399622e413872b054c]
     expected: FAIL
 
-  [html5lib_tests19.html 3b1730b917da1c33da80ee08d41573c44404c663]
-    expected: FAIL
-
 
 [html5lib_tests19.html?run_type=write_single]
   type: testharness
   [html5lib_tests19.html 3984cbe166b42d77ff6dadc8e1687075db7a8e65]
     expected: FAIL
 
   [html5lib_tests19.html d098e8a39897cd8453fc18399622e413872b054c]
     expected: FAIL
 
-  [html5lib_tests19.html 3b1730b917da1c33da80ee08d41573c44404c663]
-    expected: FAIL
-
--- a/testing/web-platform/tests/tools/html5lib/html5lib/tests/testdata/tree-construction/isindex.dat
+++ b/testing/web-platform/tests/tools/html5lib/html5lib/tests/testdata/tree-construction/isindex.dat
@@ -1,47 +1,49 @@
 #data
 <isindex>
 #errors
 (1,9): expected-doctype-but-got-start-tag
-(1,9): deprecated-tag
+(1,9): expected-closing-tag-but-got-eof
 #document
 | <html>
 |   <head>
 |   <body>
-|     <form>
-|       <hr>
-|       <label>
-|         "This is a searchable index. Enter search keywords: "
-|         <input>
-|           name="isindex"
-|       <hr>
+|     <isindex>
 
 #data
 <isindex name="A" action="B" prompt="C" foo="D">
 #errors
 (1,48): expected-doctype-but-got-start-tag
-(1,48): deprecated-tag
+(1,48): expected-closing-tag-but-got-eof
 #document
 | <html>
 |   <head>
 |   <body>
-|     <form>
+|     <isindex>
 |       action="B"
-|       <hr>
-|       <label>
-|         "C"
-|         <input>
-|           foo="D"
-|           name="isindex"
-|       <hr>
+|       foo="D"
+|       name="A"
+|       prompt="C"
 
 #data
 <form><isindex>
 #errors
 (1,6): expected-doctype-but-got-start-tag
-(1,15): deprecated-tag
 (1,15): expected-closing-tag-but-got-eof
 #document
 | <html>
 |   <head>
 |   <body>
 |     <form>
+|       <isindex>
+
+#data
+<!doctype html><isindex>x</isindex>x
+#errors
+#document
+| <!DOCTYPE html>
+| <html>
+|   <head>
+|   <body>
+|     <isindex>
+|       "x"
+|     "x"