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); |
} |