public class HtmlTreeBuilder extends TreeBuilder
Modifier and Type | Field and Description |
---|---|
private boolean |
baseUriSetFromDoc |
private Element |
contextElement |
private Token.EndTag |
emptyEnd |
private java.util.ArrayList<Element> |
formattingElements |
private FormElement |
formElement |
private boolean |
fosterInserts |
private boolean |
fragmentParsing |
private boolean |
framesetOk |
private Element |
headElement |
private static int |
maxQueueDepth |
static int |
MaxScopeSearchDepth |
private static int |
maxUsedFormattingElements |
private HtmlTreeBuilderState |
originalState |
private java.util.List<Token.Character> |
pendingTableCharacters |
private java.lang.String[] |
specificScopeTarget |
private HtmlTreeBuilderState |
state |
(package private) static java.lang.String[] |
TagSearchButton |
(package private) static java.lang.String[] |
TagSearchEndTags |
(package private) static java.lang.String[] |
TagSearchList |
(package private) static java.lang.String[] |
TagSearchSelectScope |
(package private) static java.lang.String[] |
TagSearchSpecial |
(package private) static java.lang.String[] |
TagSearchTableScope |
(package private) static java.lang.String[] |
TagsSearchInScope |
(package private) static java.lang.String[] |
TagThoroughSearchEndTags |
private java.util.ArrayList<HtmlTreeBuilderState> |
tmplInsertMode |
baseUri, currentToken, doc, parser, reader, seenTags, settings, stack, tokeniser
Constructor and Description |
---|
HtmlTreeBuilder() |
Modifier and Type | Method and Description |
---|---|
(package private) Element |
aboveOnStack(Element el) |
(package private) void |
addPendingTableCharacters(Token.Character c) |
(package private) void |
checkActiveFormattingElements(Element in) |
(package private) void |
clearFormattingElementsToLastMarker() |
private void |
clearStackToContext(java.lang.String... nodeNames) |
(package private) void |
clearStackToTableBodyContext() |
(package private) void |
clearStackToTableContext() |
(package private) void |
clearStackToTableRowContext() |
(package private) void |
closeElement(java.lang.String name) |
(package private) HtmlTreeBuilderState |
currentTemplateMode() |
(package private) ParseSettings |
defaultSettings() |
(package private) void |
error(HtmlTreeBuilderState state) |
(package private) boolean |
framesetOk() |
(package private) void |
framesetOk(boolean framesetOk) |
(package private) void |
generateImpliedEndTags() |
(package private) void |
generateImpliedEndTags(boolean thorough)
Pops elements off the stack according to the implied end tag rules
|
(package private) void |
generateImpliedEndTags(java.lang.String excludeTag)
13.2.6.3 Closing elements that have implied end tags
When the steps below require the UA to generate implied end tags, then, while the current node is a dd element, a dt element, an li element, an optgroup element, an option element, a p element, an rb element, an rp element, an rt element, or an rtc element, the UA must pop the current node off the stack of open elements.
|
(package private) Element |
getActiveFormattingElement(java.lang.String nodeName) |
(package private) java.lang.String |
getBaseUri() |
(package private) Document |
getDocument() |
(package private) FormElement |
getFormElement() |
(package private) Element |
getFromStack(java.lang.String elName) |
(package private) Element |
getHeadElement() |
(package private) java.util.List<Token.Character> |
getPendingTableCharacters() |
(package private) java.util.ArrayList<Element> |
getStack() |
(package private) boolean |
inButtonScope(java.lang.String targetName) |
protected void |
initialiseParse(java.io.Reader input,
java.lang.String baseUri,
Parser parser) |
(package private) boolean |
inListItemScope(java.lang.String targetName) |
(package private) boolean |
inScope(java.lang.String targetName) |
(package private) boolean |
inScope(java.lang.String[] targetNames) |
(package private) boolean |
inScope(java.lang.String targetName,
java.lang.String[] extras) |
(package private) boolean |
inSelectScope(java.lang.String targetName) |
(package private) void |
insert(Element el) |
private void |
insert(Element el,
Token token) |
(package private) void |
insert(Token.Character characterToken)
Inserts the provided character token into the current element.
|
(package private) void |
insert(Token.Character characterToken,
Element el) |
(package private) void |
insert(Token.Comment commentToken) |
(package private) Element |
insert(Token.StartTag startTag) |
(package private) Element |
insertEmpty(Token.StartTag startTag) |
(package private) FormElement |
insertForm(Token.StartTag startTag,
boolean onStack,
boolean checkTemplateStack) |
(package private) void |
insertInFosterParent(Node in) |
(package private) void |
insertMarkerToFormattingElements() |
private void |
insertNode(Node node,
Token token)
Inserts the provided character token into the provided element.
|
(package private) void |
insertOnStackAfter(Element after,
Element in) |
(package private) Element |
insertStartTag(java.lang.String startTagName) |
private boolean |
inSpecificScope(java.lang.String[] targetNames,
java.lang.String[] baseTypes,
java.lang.String[] extraTypes) |
private boolean |
inSpecificScope(java.lang.String targetName,
java.lang.String[] baseTypes,
java.lang.String[] extraTypes) |
(package private) boolean |
inTableScope(java.lang.String targetName) |
protected boolean |
isContentForTagData(java.lang.String normalName)
(An internal method, visible for Element.
|
(package private) boolean |
isFosterInserts() |
(package private) boolean |
isFragmentParsing() |
(package private) boolean |
isInActiveFormattingElements(Element el) |
private boolean |
isSameFormattingElement(Element a,
Element b) |
(package private) boolean |
isSpecial(Element el) |
(package private) Element |
lastFormattingElement() |
(package private) void |
markInsertionMode() |
(package private) void |
maybeSetBaseUri(Element base) |
(package private) HtmlTreeBuilder |
newInstance()
Create a new copy of this TreeBuilder
|
private static boolean |
onStack(java.util.ArrayList<Element> queue,
Element element) |
(package private) boolean |
onStack(Element el) |
(package private) boolean |
onStack(java.lang.String elName) |
(package private) boolean |
onStackNot(java.lang.String[] allowedTags)
Tests if there is some element on the stack that is not in the provided set.
|
(package private) HtmlTreeBuilderState |
originalState() |
(package private) java.util.List<Node> |
parseFragment(java.lang.String inputFragment,
Element context,
java.lang.String baseUri,
Parser parser) |
(package private) Element |
pop() |
(package private) void |
popStackToBefore(java.lang.String elName) |
(package private) void |
popStackToClose(java.lang.String... elNames) |
(package private) Element |
popStackToClose(java.lang.String elName) |
(package private) HtmlTreeBuilderState |
popTemplateMode() |
(package private) int |
positionOfElement(Element el) |
protected boolean |
process(Token token) |
(package private) boolean |
process(Token token,
HtmlTreeBuilderState state) |
(package private) void |
push(Element element) |
(package private) void |
pushActiveFormattingElements(Element in) |
(package private) void |
pushTemplateMode(HtmlTreeBuilderState state) |
(package private) void |
pushWithBookmark(Element in,
int bookmark) |
(package private) void |
reconstructFormattingElements() |
(package private) void |
removeFromActiveFormattingElements(Element el) |
(package private) boolean |
removeFromStack(Element el) |
(package private) Element |
removeLastFormattingElement() |
(package private) void |
replaceActiveFormattingElement(Element out,
Element in) |
private void |
replaceInQueue(java.util.ArrayList<Element> queue,
Element out,
Element in) |
(package private) void |
replaceOnStack(Element out,
Element in) |
(package private) void |
resetBody()
Places the body back onto the stack and moves to InBody, for cases in AfterBody / AfterAfterBody when more content comes
|
(package private) boolean |
resetInsertionMode()
Reset the insertion mode, by searching up the stack for an appropriate insertion mode.
|
(package private) void |
resetPendingTableCharacters() |
(package private) void |
setFormElement(FormElement formElement) |
(package private) void |
setFosterInserts(boolean fosterInserts) |
(package private) void |
setHeadElement(Element headElement) |
(package private) HtmlTreeBuilderState |
state() |
(package private) int |
templateModeSize() |
java.lang.String |
toString() |
(package private) void |
transition(HtmlTreeBuilderState state) |
currentElement, currentElementIs, error, error, onNodeClosed, onNodeInserted, parse, processEndTag, processStartTag, processStartTag, runParser, tagFor
static final java.lang.String[] TagsSearchInScope
static final java.lang.String[] TagSearchList
static final java.lang.String[] TagSearchButton
static final java.lang.String[] TagSearchTableScope
static final java.lang.String[] TagSearchSelectScope
static final java.lang.String[] TagSearchEndTags
static final java.lang.String[] TagThoroughSearchEndTags
static final java.lang.String[] TagSearchSpecial
public static final int MaxScopeSearchDepth
private HtmlTreeBuilderState state
private HtmlTreeBuilderState originalState
private boolean baseUriSetFromDoc
@Nullable private Element headElement
@Nullable private FormElement formElement
@Nullable private Element contextElement
private java.util.ArrayList<Element> formattingElements
private java.util.ArrayList<HtmlTreeBuilderState> tmplInsertMode
private java.util.List<Token.Character> pendingTableCharacters
private Token.EndTag emptyEnd
private boolean framesetOk
private boolean fosterInserts
private boolean fragmentParsing
private static final int maxQueueDepth
private java.lang.String[] specificScopeTarget
private static final int maxUsedFormattingElements
ParseSettings defaultSettings()
defaultSettings
in class TreeBuilder
HtmlTreeBuilder newInstance()
TreeBuilder
newInstance
in class TreeBuilder
@ParametersAreNonnullByDefault protected void initialiseParse(java.io.Reader input, java.lang.String baseUri, Parser parser)
initialiseParse
in class TreeBuilder
java.util.List<Node> parseFragment(java.lang.String inputFragment, @Nullable Element context, java.lang.String baseUri, Parser parser)
parseFragment
in class TreeBuilder
protected boolean process(Token token)
process
in class TreeBuilder
boolean process(Token token, HtmlTreeBuilderState state)
void transition(HtmlTreeBuilderState state)
HtmlTreeBuilderState state()
void markInsertionMode()
HtmlTreeBuilderState originalState()
void framesetOk(boolean framesetOk)
boolean framesetOk()
Document getDocument()
java.lang.String getBaseUri()
void maybeSetBaseUri(Element base)
boolean isFragmentParsing()
void error(HtmlTreeBuilderState state)
Element insert(Token.StartTag startTag)
Element insertStartTag(java.lang.String startTagName)
void insert(Element el)
Element insertEmpty(Token.StartTag startTag)
FormElement insertForm(Token.StartTag startTag, boolean onStack, boolean checkTemplateStack)
void insert(Token.Comment commentToken)
void insert(Token.Character characterToken)
void insert(Token.Character characterToken, Element el)
private void insertNode(Node node, @Nullable Token token)
Element pop()
void push(Element element)
java.util.ArrayList<Element> getStack()
boolean onStack(Element el)
boolean onStack(java.lang.String elName)
@Nullable Element getFromStack(java.lang.String elName)
boolean removeFromStack(Element el)
@Nullable Element popStackToClose(java.lang.String elName)
void popStackToClose(java.lang.String... elNames)
void popStackToBefore(java.lang.String elName)
void clearStackToTableContext()
void clearStackToTableBodyContext()
void clearStackToTableRowContext()
private void clearStackToContext(java.lang.String... nodeNames)
private void replaceInQueue(java.util.ArrayList<Element> queue, Element out, Element in)
boolean resetInsertionMode()
maxQueueDepth
.void resetBody()
private boolean inSpecificScope(java.lang.String targetName, java.lang.String[] baseTypes, java.lang.String[] extraTypes)
private boolean inSpecificScope(java.lang.String[] targetNames, java.lang.String[] baseTypes, @Nullable java.lang.String[] extraTypes)
boolean inScope(java.lang.String[] targetNames)
boolean inScope(java.lang.String targetName)
boolean inScope(java.lang.String targetName, java.lang.String[] extras)
boolean inListItemScope(java.lang.String targetName)
boolean inButtonScope(java.lang.String targetName)
boolean inTableScope(java.lang.String targetName)
boolean inSelectScope(java.lang.String targetName)
boolean onStackNot(java.lang.String[] allowedTags)
void setHeadElement(Element headElement)
Element getHeadElement()
boolean isFosterInserts()
void setFosterInserts(boolean fosterInserts)
@Nullable FormElement getFormElement()
void setFormElement(FormElement formElement)
void resetPendingTableCharacters()
java.util.List<Token.Character> getPendingTableCharacters()
void addPendingTableCharacters(Token.Character c)
void generateImpliedEndTags(java.lang.String excludeTag)
excludeTag
- If a step requires the UA to generate implied end tags but lists an element to exclude from the
process, then the UA must perform the above steps as if that element was not in the above list.void generateImpliedEndTags()
void generateImpliedEndTags(boolean thorough)
thorough
- if we are thorough (includes table elements etc) or notvoid closeElement(java.lang.String name)
boolean isSpecial(Element el)
Element lastFormattingElement()
int positionOfElement(Element el)
Element removeLastFormattingElement()
void pushActiveFormattingElements(Element in)
void pushWithBookmark(Element in, int bookmark)
void checkActiveFormattingElements(Element in)
void reconstructFormattingElements()
void clearFormattingElementsToLastMarker()
void removeFromActiveFormattingElements(Element el)
boolean isInActiveFormattingElements(Element el)
@Nullable Element getActiveFormattingElement(java.lang.String nodeName)
void insertMarkerToFormattingElements()
void insertInFosterParent(Node in)
void pushTemplateMode(HtmlTreeBuilderState state)
@Nullable HtmlTreeBuilderState popTemplateMode()
int templateModeSize()
@Nullable HtmlTreeBuilderState currentTemplateMode()
public java.lang.String toString()
toString
in class java.lang.Object
protected boolean isContentForTagData(java.lang.String normalName)
TreeBuilder
isContentForTagData
in class TreeBuilder