| Index: Source/core/editing/ReplaceSelectionCommand.cpp
|
| diff --git a/Source/core/editing/ReplaceSelectionCommand.cpp b/Source/core/editing/ReplaceSelectionCommand.cpp
|
| index bfda5b2611d21baf78c87fc11322adc76ea2dd1a..033e9128ac82dc87fc29055251440cb9cc9e37c2 100644
|
| --- a/Source/core/editing/ReplaceSelectionCommand.cpp
|
| +++ b/Source/core/editing/ReplaceSelectionCommand.cpp
|
| @@ -58,8 +58,8 @@
|
| #include "core/rendering/RenderInline.h"
|
| #include "core/rendering/RenderObject.h"
|
| #include "core/rendering/RenderText.h"
|
| -#include <wtf/StdLibExtras.h>
|
| -#include <wtf/Vector.h>
|
| +#include "wtf/StdLibExtras.h"
|
| +#include "wtf/Vector.h"
|
|
|
| namespace WebCore {
|
|
|
| @@ -558,61 +558,64 @@ void ReplaceSelectionCommand::removeRedundantStylesAndKeepStyleSpanInline(Insert
|
| }
|
| }
|
|
|
| -static bool isProhibitedParagraphChild(const AtomicString& name)
|
| +static bool isProhibitedParagraphChild(const QualifiedName& name)
|
| {
|
| // https://dvcs.w3.org/hg/editing/raw-file/57abe6d3cb60/editing.html#prohibited-paragraph-child
|
| - DEFINE_STATIC_LOCAL(HashSet<AtomicString>, elements, ());
|
| - if (elements.isEmpty()) {
|
| - elements.add(addressTag.localName());
|
| - elements.add(articleTag.localName());
|
| - elements.add(asideTag.localName());
|
| - elements.add(blockquoteTag.localName());
|
| - elements.add(captionTag.localName());
|
| - elements.add(centerTag.localName());
|
| - elements.add(colTag.localName());
|
| - elements.add(colgroupTag.localName());
|
| - elements.add(ddTag.localName());
|
| - elements.add(detailsTag.localName());
|
| - elements.add(dirTag.localName());
|
| - elements.add(divTag.localName());
|
| - elements.add(dlTag.localName());
|
| - elements.add(dtTag.localName());
|
| - elements.add(fieldsetTag.localName());
|
| - elements.add(figcaptionTag.localName());
|
| - elements.add(figureTag.localName());
|
| - elements.add(footerTag.localName());
|
| - elements.add(formTag.localName());
|
| - elements.add(h1Tag.localName());
|
| - elements.add(h2Tag.localName());
|
| - elements.add(h3Tag.localName());
|
| - elements.add(h4Tag.localName());
|
| - elements.add(h5Tag.localName());
|
| - elements.add(h6Tag.localName());
|
| - elements.add(headerTag.localName());
|
| - elements.add(hgroupTag.localName());
|
| - elements.add(hrTag.localName());
|
| - elements.add(liTag.localName());
|
| - elements.add(listingTag.localName());
|
| - elements.add(mainTag.localName()); // Missing in the specification.
|
| - elements.add(menuTag.localName());
|
| - elements.add(navTag.localName());
|
| - elements.add(olTag.localName());
|
| - elements.add(pTag.localName());
|
| - elements.add(plaintextTag.localName());
|
| - elements.add(preTag.localName());
|
| - elements.add(sectionTag.localName());
|
| - elements.add(summaryTag.localName());
|
| - elements.add(tableTag.localName());
|
| - elements.add(tbodyTag.localName());
|
| - elements.add(tdTag.localName());
|
| - elements.add(tfootTag.localName());
|
| - elements.add(thTag.localName());
|
| - elements.add(theadTag.localName());
|
| - elements.add(trTag.localName());
|
| - elements.add(ulTag.localName());
|
| - elements.add(xmpTag.localName());
|
| + DEFINE_STATIC_LOCAL(LocalNameLiteralSet, prohibitedChildren, ());
|
| + if (!prohibitedChildren.isInitialized()) {
|
| + static const QualifiedName* prohibitedChildrenData[] = {
|
| + &addressTag,
|
| + &articleTag,
|
| + &asideTag,
|
| + &blockquoteTag,
|
| + &captionTag,
|
| + ¢erTag,
|
| + &colTag,
|
| + &colgroupTag,
|
| + &ddTag,
|
| + &detailsTag,
|
| + &dirTag,
|
| + &divTag,
|
| + &dlTag,
|
| + &dtTag,
|
| + &fieldsetTag,
|
| + &figcaptionTag,
|
| + &figureTag,
|
| + &footerTag,
|
| + &formTag,
|
| + &h1Tag,
|
| + &h2Tag,
|
| + &h3Tag,
|
| + &h4Tag,
|
| + &h5Tag,
|
| + &h6Tag,
|
| + &headerTag,
|
| + &hgroupTag,
|
| + &hrTag,
|
| + &liTag,
|
| + &listingTag,
|
| + &mainTag, // Missing in the specification.
|
| + &menuTag,
|
| + &navTag,
|
| + &olTag,
|
| + &pTag,
|
| + &plaintextTag,
|
| + &preTag,
|
| + §ionTag,
|
| + &summaryTag,
|
| + &tableTag,
|
| + &tbodyTag,
|
| + &tdTag,
|
| + &tfootTag,
|
| + &thTag,
|
| + &theadTag,
|
| + &trTag,
|
| + &ulTag,
|
| + &xmpTag,
|
| + };
|
| + prohibitedChildren.init(prohibitedChildrenData, WTF_ARRAY_LENGTH(prohibitedChildrenData));
|
| }
|
| - return elements.contains(name);
|
| + return prohibitedChildren.contains(&name);
|
| }
|
|
|
| void ReplaceSelectionCommand::makeInsertedContentRoundTrippableWithHTMLTreeBuilder(InsertedNodes& insertedNodes)
|
| @@ -625,7 +628,7 @@ void ReplaceSelectionCommand::makeInsertedContentRoundTrippableWithHTMLTreeBuild
|
| if (!node->isHTMLElement())
|
| continue;
|
|
|
| - if (isProhibitedParagraphChild(toHTMLElement(node.get())->localName())) {
|
| + if (isProhibitedParagraphChild(toHTMLElement(node.get())->tagQName())) {
|
| if (HTMLElement* paragraphElement = toHTMLElement(enclosingNodeWithTag(positionInParentBeforeNode(node.get()), pTag)))
|
| moveNodeOutOfAncestor(node, paragraphElement);
|
| }
|
|
|