| Index: Source/core/html/parser/HTMLTreeBuilderSimulator.cpp
|
| diff --git a/Source/core/html/parser/HTMLTreeBuilderSimulator.cpp b/Source/core/html/parser/HTMLTreeBuilderSimulator.cpp
|
| index 32ccaaf1ae910ef58768edcf375ad5aed8b44bcd..37273cbaea093ba2ea178b508b1f9b0b8bfff2be 100644
|
| --- a/Source/core/html/parser/HTMLTreeBuilderSimulator.cpp
|
| +++ b/Source/core/html/parser/HTMLTreeBuilderSimulator.cpp
|
| @@ -40,64 +40,64 @@ using namespace HTMLNames;
|
| static bool tokenExitsForeignContent(const CompactHTMLToken& token)
|
| {
|
| // FIXME: This is copied from HTMLTreeBuilder::processTokenInForeignContent and changed to use threadSafeHTMLNamesMatch.
|
| - const HTMLIdentifier& tagName = token.data();
|
| - return threadSafeHTMLNamesMatch(tagName, bTag)
|
| - || threadSafeHTMLNamesMatch(tagName, bigTag)
|
| - || threadSafeHTMLNamesMatch(tagName, blockquoteTag)
|
| - || threadSafeHTMLNamesMatch(tagName, bodyTag)
|
| - || threadSafeHTMLNamesMatch(tagName, brTag)
|
| - || threadSafeHTMLNamesMatch(tagName, centerTag)
|
| - || threadSafeHTMLNamesMatch(tagName, codeTag)
|
| - || threadSafeHTMLNamesMatch(tagName, ddTag)
|
| - || threadSafeHTMLNamesMatch(tagName, divTag)
|
| - || threadSafeHTMLNamesMatch(tagName, dlTag)
|
| - || threadSafeHTMLNamesMatch(tagName, dtTag)
|
| - || threadSafeHTMLNamesMatch(tagName, emTag)
|
| - || threadSafeHTMLNamesMatch(tagName, embedTag)
|
| - || threadSafeHTMLNamesMatch(tagName, h1Tag)
|
| - || threadSafeHTMLNamesMatch(tagName, h2Tag)
|
| - || threadSafeHTMLNamesMatch(tagName, h3Tag)
|
| - || threadSafeHTMLNamesMatch(tagName, h4Tag)
|
| - || threadSafeHTMLNamesMatch(tagName, h5Tag)
|
| - || threadSafeHTMLNamesMatch(tagName, h6Tag)
|
| - || threadSafeHTMLNamesMatch(tagName, headTag)
|
| - || threadSafeHTMLNamesMatch(tagName, hrTag)
|
| - || threadSafeHTMLNamesMatch(tagName, iTag)
|
| - || threadSafeHTMLNamesMatch(tagName, imgTag)
|
| - || threadSafeHTMLNamesMatch(tagName, liTag)
|
| - || threadSafeHTMLNamesMatch(tagName, listingTag)
|
| - || threadSafeHTMLNamesMatch(tagName, menuTag)
|
| - || threadSafeHTMLNamesMatch(tagName, metaTag)
|
| - || threadSafeHTMLNamesMatch(tagName, nobrTag)
|
| - || threadSafeHTMLNamesMatch(tagName, olTag)
|
| - || threadSafeHTMLNamesMatch(tagName, pTag)
|
| - || threadSafeHTMLNamesMatch(tagName, preTag)
|
| - || threadSafeHTMLNamesMatch(tagName, rubyTag)
|
| - || threadSafeHTMLNamesMatch(tagName, sTag)
|
| - || threadSafeHTMLNamesMatch(tagName, smallTag)
|
| - || threadSafeHTMLNamesMatch(tagName, spanTag)
|
| - || threadSafeHTMLNamesMatch(tagName, strongTag)
|
| - || threadSafeHTMLNamesMatch(tagName, strikeTag)
|
| - || threadSafeHTMLNamesMatch(tagName, subTag)
|
| - || threadSafeHTMLNamesMatch(tagName, supTag)
|
| - || threadSafeHTMLNamesMatch(tagName, tableTag)
|
| - || threadSafeHTMLNamesMatch(tagName, ttTag)
|
| - || threadSafeHTMLNamesMatch(tagName, uTag)
|
| - || threadSafeHTMLNamesMatch(tagName, ulTag)
|
| - || threadSafeHTMLNamesMatch(tagName, varTag)
|
| - || (threadSafeHTMLNamesMatch(tagName, fontTag) && (token.getAttributeItem(colorAttr) || token.getAttributeItem(faceAttr) || token.getAttributeItem(sizeAttr)));
|
| + const String& tagName = token.data();
|
| + return threadSafeMatch(tagName, bTag)
|
| + || threadSafeMatch(tagName, bigTag)
|
| + || threadSafeMatch(tagName, blockquoteTag)
|
| + || threadSafeMatch(tagName, bodyTag)
|
| + || threadSafeMatch(tagName, brTag)
|
| + || threadSafeMatch(tagName, centerTag)
|
| + || threadSafeMatch(tagName, codeTag)
|
| + || threadSafeMatch(tagName, ddTag)
|
| + || threadSafeMatch(tagName, divTag)
|
| + || threadSafeMatch(tagName, dlTag)
|
| + || threadSafeMatch(tagName, dtTag)
|
| + || threadSafeMatch(tagName, emTag)
|
| + || threadSafeMatch(tagName, embedTag)
|
| + || threadSafeMatch(tagName, h1Tag)
|
| + || threadSafeMatch(tagName, h2Tag)
|
| + || threadSafeMatch(tagName, h3Tag)
|
| + || threadSafeMatch(tagName, h4Tag)
|
| + || threadSafeMatch(tagName, h5Tag)
|
| + || threadSafeMatch(tagName, h6Tag)
|
| + || threadSafeMatch(tagName, headTag)
|
| + || threadSafeMatch(tagName, hrTag)
|
| + || threadSafeMatch(tagName, iTag)
|
| + || threadSafeMatch(tagName, imgTag)
|
| + || threadSafeMatch(tagName, liTag)
|
| + || threadSafeMatch(tagName, listingTag)
|
| + || threadSafeMatch(tagName, menuTag)
|
| + || threadSafeMatch(tagName, metaTag)
|
| + || threadSafeMatch(tagName, nobrTag)
|
| + || threadSafeMatch(tagName, olTag)
|
| + || threadSafeMatch(tagName, pTag)
|
| + || threadSafeMatch(tagName, preTag)
|
| + || threadSafeMatch(tagName, rubyTag)
|
| + || threadSafeMatch(tagName, sTag)
|
| + || threadSafeMatch(tagName, smallTag)
|
| + || threadSafeMatch(tagName, spanTag)
|
| + || threadSafeMatch(tagName, strongTag)
|
| + || threadSafeMatch(tagName, strikeTag)
|
| + || threadSafeMatch(tagName, subTag)
|
| + || threadSafeMatch(tagName, supTag)
|
| + || threadSafeMatch(tagName, tableTag)
|
| + || threadSafeMatch(tagName, ttTag)
|
| + || threadSafeMatch(tagName, uTag)
|
| + || threadSafeMatch(tagName, ulTag)
|
| + || threadSafeMatch(tagName, varTag)
|
| + || (threadSafeMatch(tagName, fontTag) && (token.getAttributeItem(colorAttr) || token.getAttributeItem(faceAttr) || token.getAttributeItem(sizeAttr)));
|
| }
|
|
|
| static bool tokenExitsSVG(const CompactHTMLToken& token)
|
| {
|
| // FIXME: It's very fragile that we special case foreignObject here to be case-insensitive.
|
| - return equalIgnoringCaseNonNull(token.data().asStringImpl(), SVGNames::foreignObjectTag.localName().impl());
|
| + return equalIgnoringCaseNonNull(token.data().impl(), SVGNames::foreignObjectTag.localName().impl());
|
| }
|
|
|
| static bool tokenExitsMath(const CompactHTMLToken& token)
|
| {
|
| // FIXME: This is copied from HTMLElementStack::isMathMLTextIntegrationPoint and changed to use threadSafeMatch.
|
| - const HTMLIdentifier& tagName = token.data();
|
| + const String& tagName = token.data();
|
| return threadSafeMatch(tagName, MathMLNames::miTag)
|
| || threadSafeMatch(tagName, MathMLNames::moTag)
|
| || threadSafeMatch(tagName, MathMLNames::mnTag)
|
| @@ -132,7 +132,7 @@ HTMLTreeBuilderSimulator::State HTMLTreeBuilderSimulator::stateFor(HTMLTreeBuild
|
| bool HTMLTreeBuilderSimulator::simulate(const CompactHTMLToken& token, HTMLTokenizer* tokenizer)
|
| {
|
| if (token.type() == HTMLToken::StartTag) {
|
| - const HTMLIdentifier& tagName = token.data();
|
| + const String& tagName = token.data();
|
| if (threadSafeMatch(tagName, SVGNames::svgTag))
|
| m_namespaceStack.append(SVG);
|
| if (threadSafeMatch(tagName, MathMLNames::mathTag))
|
| @@ -144,30 +144,30 @@ bool HTMLTreeBuilderSimulator::simulate(const CompactHTMLToken& token, HTMLToken
|
| m_namespaceStack.append(HTML);
|
| if (!inForeignContent()) {
|
| // FIXME: This is just a copy of Tokenizer::updateStateFor which uses threadSafeMatches.
|
| - if (threadSafeHTMLNamesMatch(tagName, textareaTag) || threadSafeHTMLNamesMatch(tagName, titleTag))
|
| + if (threadSafeMatch(tagName, textareaTag) || threadSafeMatch(tagName, titleTag))
|
| tokenizer->setState(HTMLTokenizer::RCDATAState);
|
| - else if (threadSafeHTMLNamesMatch(tagName, plaintextTag))
|
| + else if (threadSafeMatch(tagName, plaintextTag))
|
| tokenizer->setState(HTMLTokenizer::PLAINTEXTState);
|
| - else if (threadSafeHTMLNamesMatch(tagName, scriptTag))
|
| + else if (threadSafeMatch(tagName, scriptTag))
|
| tokenizer->setState(HTMLTokenizer::ScriptDataState);
|
| - else if (threadSafeHTMLNamesMatch(tagName, styleTag)
|
| - || threadSafeHTMLNamesMatch(tagName, iframeTag)
|
| - || threadSafeHTMLNamesMatch(tagName, xmpTag)
|
| - || (threadSafeHTMLNamesMatch(tagName, noembedTag) && m_options.pluginsEnabled)
|
| - || threadSafeHTMLNamesMatch(tagName, noframesTag)
|
| - || (threadSafeHTMLNamesMatch(tagName, noscriptTag) && m_options.scriptEnabled))
|
| + else if (threadSafeMatch(tagName, styleTag)
|
| + || threadSafeMatch(tagName, iframeTag)
|
| + || threadSafeMatch(tagName, xmpTag)
|
| + || (threadSafeMatch(tagName, noembedTag) && m_options.pluginsEnabled)
|
| + || threadSafeMatch(tagName, noframesTag)
|
| + || (threadSafeMatch(tagName, noscriptTag) && m_options.scriptEnabled))
|
| tokenizer->setState(HTMLTokenizer::RAWTEXTState);
|
| }
|
| }
|
|
|
| if (token.type() == HTMLToken::EndTag) {
|
| - const HTMLIdentifier& tagName = token.data();
|
| + const String& tagName = token.data();
|
| if ((m_namespaceStack.last() == SVG && threadSafeMatch(tagName, SVGNames::svgTag))
|
| || (m_namespaceStack.last() == MathML && threadSafeMatch(tagName, MathMLNames::mathTag))
|
| || (m_namespaceStack.contains(SVG) && m_namespaceStack.last() == HTML && tokenExitsSVG(token))
|
| || (m_namespaceStack.contains(MathML) && m_namespaceStack.last() == HTML && tokenExitsMath(token)))
|
| m_namespaceStack.removeLast();
|
| - if (threadSafeHTMLNamesMatch(tagName, scriptTag)) {
|
| + if (threadSafeMatch(tagName, scriptTag)) {
|
| if (!inForeignContent())
|
| tokenizer->setState(HTMLTokenizer::DataState);
|
| return false;
|
|
|