Chromium Code Reviews| Index: Source/core/editing/ReplaceSelectionCommand.cpp |
| diff --git a/Source/core/editing/ReplaceSelectionCommand.cpp b/Source/core/editing/ReplaceSelectionCommand.cpp |
| index bfda5b2611d21baf78c87fc11322adc76ea2dd1a..cb0ca4f3bc5dc9fd2caed3b2ab8d90847f3369e9 100644 |
| --- a/Source/core/editing/ReplaceSelectionCommand.cpp |
| +++ b/Source/core/editing/ReplaceSelectionCommand.cpp |
| @@ -58,8 +58,9 @@ |
| #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/TableSet.h" |
| +#include "wtf/Vector.h" |
| namespace WebCore { |
| @@ -558,61 +559,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, ()); |
| + DEFINE_STATIC_LOCAL(TableSet<const QualifiedName*>, elements, (lessThanByLocalNameImplAddress)); |
| 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()); |
| + static const QualifiedName* elementNames[] = { |
|
eseidel
2013/05/22 00:40:14
Why not just make this AtomicString-based? If you
abarth-chromium
2013/05/22 00:58:25
The table needs to be computable by the linker. W
|
| + &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, |
| + }; |
| + elements.init(elementNames, WTF_ARRAY_LENGTH(elementNames)); |
| } |
| - return elements.contains(name); |
| + return elements.contains(&name); |
| } |
| void ReplaceSelectionCommand::makeInsertedContentRoundTrippableWithHTMLTreeBuilder(InsertedNodes& insertedNodes) |
| @@ -625,7 +629,7 @@ void ReplaceSelectionCommand::makeInsertedContentRoundTrippableWithHTMLTreeBuild |
| if (!node->isHTMLElement()) |
| continue; |
| - if (isProhibitedParagraphChild(toHTMLElement(node.get())->localName())) { |
| + if (isProhibitedParagraphChild(toHTMLElement(node.get())->tagQName())) { |
|
eseidel
2013/05/22 00:40:14
Is this intentional?
abarth-chromium
2013/05/22 00:58:25
Yes. We need to pass a const QualifiedName* to co
|
| if (HTMLElement* paragraphElement = toHTMLElement(enclosingNodeWithTag(positionInParentBeforeNode(node.get()), pTag))) |
| moveNodeOutOfAncestor(node, paragraphElement); |
| } |