From 58fa997e45dd552b251f8fcf3aa7fb90f37efc72 Mon Sep 17 00:00:00 2001 From: Henri Sivonen Date: Thu, 6 Jun 2013 11:02:30 +0300 Subject: [PATCH] Bug 870787 HTML parser part - Make a form-associated element in the HTML parser. r=smaug --- parser/html/javasrc/ElementName.java | 4 ++-- parser/html/javasrc/Tokenizer.java | 15 +-------------- parser/html/javasrc/TreeBuilder.java | 16 +++++++++++----- parser/html/nsHtml5ElementName.cpp | 4 ++-- parser/html/nsHtml5Tokenizer.cpp | 2 +- parser/html/nsHtml5Tokenizer.h | 2 +- parser/html/nsHtml5TreeBuilder.cpp | 12 ++++++++---- parser/html/nsHtml5TreeBuilder.h | 3 ++- 8 files changed, 28 insertions(+), 30 deletions(-) diff --git a/parser/html/javasrc/ElementName.java b/parser/html/javasrc/ElementName.java index 219aa714e964..60c838e17692 100644 --- a/parser/html/javasrc/ElementName.java +++ b/parser/html/javasrc/ElementName.java @@ -468,7 +468,7 @@ public final class ElementName 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.EMBED_OR_IMG | SPECIAL); + 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); @@ -559,7 +559,7 @@ public final class ElementName 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 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_OR_IMG | SPECIAL); + 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); diff --git a/parser/html/javasrc/Tokenizer.java b/parser/html/javasrc/Tokenizer.java index dc794fe5276d..41b0e62cd962 100644 --- a/parser/html/javasrc/Tokenizer.java +++ b/parser/html/javasrc/Tokenizer.java @@ -1,6 +1,6 @@ /* * Copyright (c) 2005-2007 Henri Sivonen - * Copyright (c) 2007-2010 Mozilla Foundation + * Copyright (c) 2007-2013 Mozilla Foundation * Portions of comments Copyright 2004-2010 Apple Computer, Inc., Mozilla * Foundation, and Opera Software ASA. * @@ -6545,19 +6545,6 @@ public class Tokenizer implements Locator { return buf[pos]; } - // [NOCPP[ - - /** - * Returns the alreadyComplainedAboutNonAscii. - * - * @return the alreadyComplainedAboutNonAscii - */ - public boolean isAlreadyComplainedAboutNonAscii() { - return true; - } - - // ]NOCPP] - public boolean internalEncodingDeclaration(String internalCharset) throws SAXException { if (encodingDeclarationHandler != null) { diff --git a/parser/html/javasrc/TreeBuilder.java b/parser/html/javasrc/TreeBuilder.java index e01d073b54a2..9589dc8b11c8 100644 --- a/parser/html/javasrc/TreeBuilder.java +++ b/parser/html/javasrc/TreeBuilder.java @@ -163,7 +163,7 @@ public abstract class TreeBuilder implements TokenHandler, final static int IFRAME = 47; - final static int EMBED_OR_IMG = 48; + final static int EMBED = 48; final static int AREA_OR_WBR = 49; @@ -203,6 +203,8 @@ public abstract class TreeBuilder implements TokenHandler, final static int TEMPLATE = 67; + final static int IMG = 68; + // start insertion modes private static final int IN_ROW = 0; @@ -1593,7 +1595,8 @@ public abstract class TreeBuilder implements TokenHandler, case RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR: case DD_OR_DT: case UL_OR_OL_OR_DL: - case EMBED_OR_IMG: + case EMBED: + case IMG: case H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6: case HEAD: case HR: @@ -1977,7 +1980,8 @@ public abstract class TreeBuilder implements TokenHandler, case TABLE: case AREA_OR_WBR: case BR: - case EMBED_OR_IMG: + case EMBED: + case IMG: case INPUT: case KEYGEN: case HR: @@ -2208,7 +2212,7 @@ public abstract class TreeBuilder implements TokenHandler, attributes = null; // CPP break starttagloop; case BR: - case EMBED_OR_IMG: + case EMBED: case AREA_OR_WBR: reconstructTheActiveFormattingElements(); // FALL THROUGH to PARAM_OR_SOURCE_OR_TRACK @@ -2232,6 +2236,7 @@ public abstract class TreeBuilder implements TokenHandler, errImage(); elementName = ElementName.IMG; continue starttagloop; + case IMG: case KEYGEN: case INPUT: reconstructTheActiveFormattingElements(); @@ -3682,7 +3687,8 @@ public abstract class TreeBuilder implements TokenHandler, case AREA_OR_WBR: // CPPONLY: case MENUITEM: case PARAM_OR_SOURCE_OR_TRACK: - case EMBED_OR_IMG: + case EMBED: + case IMG: case IMAGE: case INPUT: case KEYGEN: // XXX?? diff --git a/parser/html/nsHtml5ElementName.cpp b/parser/html/nsHtml5ElementName.cpp index 9488ea906459..d16cee7e67bb 100644 --- a/parser/html/nsHtml5ElementName.cpp +++ b/parser/html/nsHtml5ElementName.cpp @@ -594,7 +594,7 @@ nsHtml5ElementName::initializeStatics() 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_EMBED_OR_IMG | NS_HTML5ELEMENT_NAME_SPECIAL); + 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); @@ -685,7 +685,7 @@ nsHtml5ElementName::initializeStatics() 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_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_OR_IMG | NS_HTML5ELEMENT_NAME_SPECIAL); + 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); diff --git a/parser/html/nsHtml5Tokenizer.cpp b/parser/html/nsHtml5Tokenizer.cpp index 15afc70be007..4426e75274e9 100644 --- a/parser/html/nsHtml5Tokenizer.cpp +++ b/parser/html/nsHtml5Tokenizer.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2005-2007 Henri Sivonen - * Copyright (c) 2007-2010 Mozilla Foundation + * Copyright (c) 2007-2013 Mozilla Foundation * Portions of comments Copyright 2004-2010 Apple Computer, Inc., Mozilla * Foundation, and Opera Software ASA. * diff --git a/parser/html/nsHtml5Tokenizer.h b/parser/html/nsHtml5Tokenizer.h index a7eaae14266d..3e043295a54d 100644 --- a/parser/html/nsHtml5Tokenizer.h +++ b/parser/html/nsHtml5Tokenizer.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2005-2007 Henri Sivonen - * Copyright (c) 2007-2010 Mozilla Foundation + * Copyright (c) 2007-2013 Mozilla Foundation * Portions of comments Copyright 2004-2010 Apple Computer, Inc., Mozilla * Foundation, and Opera Software ASA. * diff --git a/parser/html/nsHtml5TreeBuilder.cpp b/parser/html/nsHtml5TreeBuilder.cpp index bfa46834884f..6b8f0fa8ea96 100644 --- a/parser/html/nsHtml5TreeBuilder.cpp +++ b/parser/html/nsHtml5TreeBuilder.cpp @@ -595,7 +595,8 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR: case NS_HTML5TREE_BUILDER_DD_OR_DT: case NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL: - case NS_HTML5TREE_BUILDER_EMBED_OR_IMG: + case NS_HTML5TREE_BUILDER_EMBED: + case NS_HTML5TREE_BUILDER_IMG: case NS_HTML5TREE_BUILDER_H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6: case NS_HTML5TREE_BUILDER_HEAD: case NS_HTML5TREE_BUILDER_HR: @@ -967,7 +968,8 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu case NS_HTML5TREE_BUILDER_TABLE: case NS_HTML5TREE_BUILDER_AREA_OR_WBR: case NS_HTML5TREE_BUILDER_BR: - case NS_HTML5TREE_BUILDER_EMBED_OR_IMG: + case NS_HTML5TREE_BUILDER_EMBED: + case NS_HTML5TREE_BUILDER_IMG: case NS_HTML5TREE_BUILDER_INPUT: case NS_HTML5TREE_BUILDER_KEYGEN: case NS_HTML5TREE_BUILDER_HR: @@ -1176,7 +1178,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu NS_HTML5_BREAK(starttagloop); } case NS_HTML5TREE_BUILDER_BR: - case NS_HTML5TREE_BUILDER_EMBED_OR_IMG: + case NS_HTML5TREE_BUILDER_EMBED: case NS_HTML5TREE_BUILDER_AREA_OR_WBR: { reconstructTheActiveFormattingElements(); } @@ -1201,6 +1203,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu elementName = nsHtml5ElementName::ELT_IMG; NS_HTML5_CONTINUE(starttagloop); } + case NS_HTML5TREE_BUILDER_IMG: case NS_HTML5TREE_BUILDER_KEYGEN: case NS_HTML5TREE_BUILDER_INPUT: { reconstructTheActiveFormattingElements(); @@ -2620,7 +2623,8 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName) case NS_HTML5TREE_BUILDER_MENUITEM: #endif case NS_HTML5TREE_BUILDER_PARAM_OR_SOURCE_OR_TRACK: - case NS_HTML5TREE_BUILDER_EMBED_OR_IMG: + case NS_HTML5TREE_BUILDER_EMBED: + case NS_HTML5TREE_BUILDER_IMG: case NS_HTML5TREE_BUILDER_IMAGE: case NS_HTML5TREE_BUILDER_INPUT: case NS_HTML5TREE_BUILDER_KEYGEN: diff --git a/parser/html/nsHtml5TreeBuilder.h b/parser/html/nsHtml5TreeBuilder.h index a66c756dce40..ba915771a90d 100644 --- a/parser/html/nsHtml5TreeBuilder.h +++ b/parser/html/nsHtml5TreeBuilder.h @@ -310,7 +310,7 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState #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_OR_IMG 48 +#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 @@ -330,6 +330,7 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState #define NS_HTML5TREE_BUILDER_KEYGEN 65 #define NS_HTML5TREE_BUILDER_MENUITEM 66 #define NS_HTML5TREE_BUILDER_TEMPLATE 67 +#define NS_HTML5TREE_BUILDER_IMG 68 #define NS_HTML5TREE_BUILDER_IN_ROW 0 #define NS_HTML5TREE_BUILDER_IN_TABLE_BODY 1 #define NS_HTML5TREE_BUILDER_IN_TABLE 2