<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[165568] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/165568">165568</a></dd>
<dt>Author</dt> <dd>ossy@webkit.org</dd>
<dt>Date</dt> <dd>2014-03-13 14:53:46 -0700 (Thu, 13 Mar 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/165544">r165544</a> and <a href="http://trac.webkit.org/projects/webkit/changeset/165560">r165560</a>.
It broke EFL/GTK/Windows build
Reverted changesets:
"Optimize hasTagName when called on an HTMLElement"
https://bugs.webkit.org/show_bug.cgi?id=130090
http://trac.webkit.org/changeset/165544
http://trac.webkit.org/changeset/165560</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentStyleSheetCollectioncpp">trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementh">trunk/Source/WebCore/dom/Element.h</a></li>
<li><a href="#trunkSourceWebCoredomNodeh">trunk/Source/WebCore/dom/Node.h</a></li>
<li><a href="#trunkSourceWebCoredomPositionIteratorcpp">trunk/Source/WebCore/dom/PositionIterator.cpp</a></li>
<li><a href="#trunkSourceWebCoredomStyledElementcpp">trunk/Source/WebCore/dom/StyledElement.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTextcpp">trunk/Source/WebCore/dom/Text.cpp</a></li>
<li><a href="#trunkSourceWebCoredommake_namespl">trunk/Source/WebCore/dom/make_names.pl</a></li>
<li><a href="#trunkSourceWebCoreeditingApplyStyleCommandcpp">trunk/Source/WebCore/editing/ApplyStyleCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingEditorcpp">trunk/Source/WebCore/editing/Editor.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingInsertListCommandcpp">trunk/Source/WebCore/editing/InsertListCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingInsertListCommandh">trunk/Source/WebCore/editing/InsertListCommand.h</a></li>
<li><a href="#trunkSourceWebCoreeditingMarkupAccumulatorcpp">trunk/Source/WebCore/editing/MarkupAccumulator.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingReplaceSelectionCommandcpp">trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingTextIteratorcpp">trunk/Source/WebCore/editing/TextIterator.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingTypingCommandcpp">trunk/Source/WebCore/editing/TypingCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingVisibleUnitscpp">trunk/Source/WebCore/editing/VisibleUnits.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditinghtmleditingcpp">trunk/Source/WebCore/editing/htmlediting.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditinghtmleditingh">trunk/Source/WebCore/editing/htmlediting.h</a></li>
<li><a href="#trunkSourceWebCoreeditingmacEditorMacmm">trunk/Source/WebCore/editing/mac/EditorMac.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingmarkupcpp">trunk/Source/WebCore/editing/markup.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLCollectioncpp">trunk/Source/WebCore/html/HTMLCollection.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementcpp">trunk/Source/WebCore/html/HTMLElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementh">trunk/Source/WebCore/html/HTMLElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLObjectElementcpp">trunk/Source/WebCore/html/HTMLObjectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSelectElementcpp">trunk/Source/WebCore/html/HTMLSelectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableColElementcpp">trunk/Source/WebCore/html/HTMLTableColElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableRowsCollectioncpp">trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlparserHTMLConstructionSitecpp">trunk/Source/WebCore/html/parser/HTMLConstructionSite.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlparserHTMLTreeBuildercpp">trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorStyleSheetcpp">trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLElementh">trunk/Source/WebCore/mathml/MathMLElement.h</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLInlineContainerElementcpp">trunk/Source/WebCore/mathml/MathMLInlineContainerElement.cpp</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLSelectElementcpp">trunk/Source/WebCore/mathml/MathMLSelectElement.cpp</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLTextElementcpp">trunk/Source/WebCore/mathml/MathMLTextElement.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmacHTMLConvertermm">trunk/Source/WebCore/platform/mac/HTMLConverter.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowcpp">trunk/Source/WebCore/rendering/RenderBlockFlow.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxModelObjectcpp">trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderElementcpp">trunk/Source/WebCore/rendering/RenderElement.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerBackingcpp">trunk/Source/WebCore/rendering/RenderLayerBacking.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderReplacedcpp">trunk/Source/WebCore/rendering/RenderReplaced.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLScriptscpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLUnderOvercpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementh">trunk/Source/WebCore/svg/SVGElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFontFaceSrcElementcpp">trunk/Source/WebCore/svg/SVGFontFaceSrcElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGUseElementcpp">trunk/Source/WebCore/svg/SVGUseElement.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlparserXMLDocumentParsercpp">trunk/Source/WebCore/xml/parser/XMLDocumentParser.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/ChangeLog        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2014-03-13 Csaba Osztrogonác <ossy@webkit.org>
+
+ Unreviewed, rolling out r165544 and r165560.
+
+ It broke EFL/GTK/Windows build
+
+ Reverted changesets:
+
+ "Optimize hasTagName when called on an HTMLElement"
+ https://bugs.webkit.org/show_bug.cgi?id=130090
+ http://trac.webkit.org/changeset/165544
+
+ http://trac.webkit.org/changeset/165560
+
</ins><span class="cx"> 2014-03-13 Antti Koivisto <antti@apple.com>
</span><span class="cx">
</span><span class="cx"> Try to stop asserts in debug build.
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -1549,8 +1549,9 @@
</span><span class="cx">
</span><span class="cx"> bool AccessibilityObject::hasTagName(const QualifiedName& tagName) const
</span><span class="cx"> {
</span><del>- Node* node = this->node();
- return node && node->isElementNode() && toElement(*node).hasTagName(tagName);
</del><ins>+ if (Node* node = this->node())
+ return node->hasTagName(tagName);
+ return false;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool AccessibilityObject::hasAttribute(const QualifiedName& attribute) const
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -2415,8 +2415,8 @@
</span><span class="cx">
</span><span class="cx"> bool AccessibilityRenderObject::isDescendantOfElementType(const QualifiedName& tagName) const
</span><span class="cx"> {
</span><del>- for (auto& ancestor : ancestorsOfType<RenderElement>(*m_renderer)) {
- if (ancestor.element() && ancestor.element()->hasTagName(tagName))
</del><ins>+ for (RenderObject* parent = m_renderer->parent(); parent; parent = parent->parent()) {
+ if (parent->node() && parent->node()->hasTagName(tagName))
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentStyleSheetCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -262,12 +262,15 @@
</span><span class="cx"> if (m_document.settings() && !m_document.settings()->authorAndUserStylesEnabled())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- for (auto& node : m_styleSheetCandidateNodes) {
- StyleSheet* sheet = nullptr;
- if (node->nodeType() == Node::PROCESSING_INSTRUCTION_NODE) {
</del><ins>+ StyleSheetCandidateListHashSet::iterator begin = m_styleSheetCandidateNodes.begin();
+ StyleSheetCandidateListHashSet::iterator end = m_styleSheetCandidateNodes.end();
+ for (StyleSheetCandidateListHashSet::iterator it = begin; it != end; ++it) {
+ Node* n = *it;
+ StyleSheet* sheet = 0;
+ if (n->nodeType() == Node::PROCESSING_INSTRUCTION_NODE) {
</ins><span class="cx"> // Processing instruction (XML documents only).
</span><span class="cx"> // We don't support linking to embedded CSS stylesheets, see <https://bugs.webkit.org/show_bug.cgi?id=49281> for discussion.
</span><del>- ProcessingInstruction* pi = toProcessingInstruction(node);
</del><ins>+ ProcessingInstruction* pi = toProcessingInstruction(n);
</ins><span class="cx"> sheet = pi->sheet();
</span><span class="cx"> #if ENABLE(XSLT)
</span><span class="cx"> // Don't apply XSL transforms to already transformed documents -- <rdar://problem/4132806>
</span><span class="lines">@@ -278,41 +281,47 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><del>- } else if ((node->isHTMLElement() && (toHTMLElement(*node).hasTagName(linkTag) || toHTMLElement(*node).hasTagName(styleTag))) || (node->isSVGElement() && toSVGElement(*node).hasTagName(SVGNames::styleTag))) {
- Element& element = toElement(*node);
- AtomicString title = element.getAttribute(titleAttr);
</del><ins>+ } else if ((n->isHTMLElement() && (n->hasTagName(linkTag) || n->hasTagName(styleTag)))
+ || (n->isSVGElement() && n->hasTagName(SVGNames::styleTag))) {
+ Element* e = toElement(n);
+ AtomicString title = e->getAttribute(titleAttr);
</ins><span class="cx"> bool enabledViaScript = false;
</span><del>- if (isHTMLLinkElement(element)) {
</del><ins>+ if (e->hasTagName(linkTag)) {
</ins><span class="cx"> // <LINK> element
</span><del>- HTMLLinkElement& linkElement = toHTMLLinkElement(element);
- if (linkElement.isDisabled())
</del><ins>+ HTMLLinkElement* linkElement = toHTMLLinkElement(n);
+ if (linkElement->isDisabled())
</ins><span class="cx"> continue;
</span><del>- enabledViaScript = linkElement.isEnabledViaScript();
- if (linkElement.styleSheetIsLoading()) {
</del><ins>+ enabledViaScript = linkElement->isEnabledViaScript();
+ if (linkElement->styleSheetIsLoading()) {
</ins><span class="cx"> // it is loading but we should still decide which style sheet set to use
</span><span class="cx"> if (!enabledViaScript && !title.isEmpty() && m_preferredStylesheetSetName.isEmpty()) {
</span><del>- if (!linkElement.fastGetAttribute(relAttr).contains("alternate")) {
</del><ins>+ const AtomicString& rel = e->getAttribute(relAttr);
+ if (!rel.contains("alternate")) {
</ins><span class="cx"> m_preferredStylesheetSetName = title;
</span><span class="cx"> m_selectedStylesheetSetName = title;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> continue;
</span><span class="cx"> }
</span><del>- if (!linkElement.sheet())
</del><ins>+ if (!linkElement->sheet())
</ins><span class="cx"> title = nullAtom;
</span><span class="cx"> }
</span><span class="cx"> // Get the current preferred styleset. This is the
</span><span class="cx"> // set of sheets that will be enabled.
</span><del>- if (isSVGStyleElement(element))
- sheet = toSVGStyleElement(element).sheet();
- else if (isHTMLLinkElement(element))
- sheet = toHTMLLinkElement(element).sheet();
- else
- sheet = toHTMLStyleElement(element).sheet();
</del><ins>+ if (isSVGStyleElement(e))
+ sheet = toSVGStyleElement(e)->sheet();
+ else {
+ if (isHTMLLinkElement(e))
+ sheet = toHTMLLinkElement(n)->sheet();
+ else {
+ // <STYLE> element
+ sheet = toHTMLStyleElement(e)->sheet();
+ }
+ }
</ins><span class="cx"> // Check to see if this sheet belongs to a styleset
</span><span class="cx"> // (thus making it PREFERRED or ALTERNATE rather than
</span><span class="cx"> // PERSISTENT).
</span><del>- auto& rel = element.fastGetAttribute(relAttr);
</del><ins>+ AtomicString rel = e->getAttribute(relAttr);
</ins><span class="cx"> if (!enabledViaScript && !title.isEmpty()) {
</span><span class="cx"> // Yes, we have a title.
</span><span class="cx"> if (m_preferredStylesheetSetName.isEmpty()) {
</span><span class="lines">@@ -320,15 +329,15 @@
</span><span class="cx"> // we are NOT an alternate sheet, then establish
</span><span class="cx"> // us as the preferred set. Otherwise, just ignore
</span><span class="cx"> // this sheet.
</span><del>- if (isHTMLStyleElement(element) || !rel.contains("alternate"))
</del><ins>+ if (e->hasTagName(styleTag) || !rel.contains("alternate"))
</ins><span class="cx"> m_preferredStylesheetSetName = m_selectedStylesheetSetName = title;
</span><span class="cx"> }
</span><span class="cx"> if (title != m_preferredStylesheetSetName)
</span><del>- sheet = nullptr;
</del><ins>+ sheet = 0;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (rel.contains("alternate") && title.isEmpty())
</span><del>- sheet = nullptr;
</del><ins>+ sheet = 0;
</ins><span class="cx"> }
</span><span class="cx"> if (sheet)
</span><span class="cx"> sheets.append(sheet);
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/dom/Element.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -44,9 +44,9 @@
</span><span class="cx"> #include "FocusEvent.h"
</span><span class="cx"> #include "FrameSelection.h"
</span><span class="cx"> #include "FrameView.h"
</span><del>-#include "HTMLCanvasElement.h"
</del><span class="cx"> #include "HTMLCollection.h"
</span><span class="cx"> #include "HTMLDocument.h"
</span><ins>+#include "HTMLElement.h"
</ins><span class="cx"> #include "HTMLFormControlsCollection.h"
</span><span class="cx"> #include "HTMLLabelElement.h"
</span><span class="cx"> #include "HTMLNameCollection.h"
</span><span class="lines">@@ -93,46 +93,50 @@
</span><span class="cx"> return element.isHTMLElement() && element.document().isHTMLDocument();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static HashMap<Element*, Vector<RefPtr<Attr>>>& attrNodeListMap()
</del><ins>+typedef Vector<RefPtr<Attr>> AttrNodeList;
+typedef HashMap<Element*, OwnPtr<AttrNodeList>> AttrNodeListMap;
+
+static AttrNodeListMap& attrNodeListMap()
</ins><span class="cx"> {
</span><del>- static NeverDestroyed<HashMap<Element*, Vector<RefPtr<Attr>>>> map;
</del><ins>+ DEFINE_STATIC_LOCAL(AttrNodeListMap, map, ());
</ins><span class="cx"> return map;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static Vector<RefPtr<Attr>>* attrNodeListForElement(Element& element)
</del><ins>+static AttrNodeList* attrNodeListForElement(Element* element)
</ins><span class="cx"> {
</span><del>- if (!element.hasSyntheticAttrChildNodes())
- return nullptr;
- ASSERT(attrNodeListMap().contains(&element));
- return &attrNodeListMap().find(&element)->value;
</del><ins>+ if (!element->hasSyntheticAttrChildNodes())
+ return 0;
+ ASSERT(attrNodeListMap().contains(element));
+ return attrNodeListMap().get(element);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-static Vector<RefPtr<Attr>>& ensureAttrNodeListForElement(Element& element)
</del><ins>+static AttrNodeList& ensureAttrNodeListForElement(Element* element)
</ins><span class="cx"> {
</span><del>- if (element.hasSyntheticAttrChildNodes()) {
- ASSERT(attrNodeListMap().contains(&element));
- return attrNodeListMap().find(&element)->value;
</del><ins>+ if (element->hasSyntheticAttrChildNodes()) {
+ ASSERT(attrNodeListMap().contains(element));
+ return *attrNodeListMap().get(element);
</ins><span class="cx"> }
</span><del>- ASSERT(!attrNodeListMap().contains(&element));
- element.setHasSyntheticAttrChildNodes(true);
- return attrNodeListMap().add(&element, Vector<RefPtr<Attr>>()).iterator->value;
</del><ins>+ ASSERT(!attrNodeListMap().contains(element));
+ element->setHasSyntheticAttrChildNodes(true);
+ AttrNodeListMap::AddResult result = attrNodeListMap().add(element, adoptPtr(new AttrNodeList));
+ return *result.iterator->value;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-static void removeAttrNodeListForElement(Element& element)
</del><ins>+static void removeAttrNodeListForElement(Element* element)
</ins><span class="cx"> {
</span><del>- ASSERT(element.hasSyntheticAttrChildNodes());
- ASSERT(attrNodeListMap().contains(&element));
- attrNodeListMap().remove(&element);
- element.setHasSyntheticAttrChildNodes(false);
</del><ins>+ ASSERT(element->hasSyntheticAttrChildNodes());
+ ASSERT(attrNodeListMap().contains(element));
+ attrNodeListMap().remove(element);
+ element->setHasSyntheticAttrChildNodes(false);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-static Attr* findAttrNodeInList(Vector<RefPtr<Attr>>& attrNodeList, const QualifiedName& name)
</del><ins>+static Attr* findAttrNodeInList(AttrNodeList& attrNodeList, const QualifiedName& name)
</ins><span class="cx"> {
</span><del>- for (auto& node : attrNodeList) {
- if (node->qualifiedName() == name)
- return node.get();
</del><ins>+ for (unsigned i = 0; i < attrNodeList.size(); ++i) {
+ if (attrNodeList.at(i)->qualifiedName() == name)
+ return attrNodeList.at(i).get();
</ins><span class="cx"> }
</span><del>- return nullptr;
</del><ins>+ return 0;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> PassRefPtr<Element> Element::create(const QualifiedName& tagName, Document& document)
</span><span class="lines">@@ -430,9 +434,11 @@
</span><span class="cx"> // Elements in canvas fallback content are not rendered, but they are allowed to be
</span><span class="cx"> // focusable as long as their canvas is displayed and visible.
</span><span class="cx"> if (isInCanvasSubtree()) {
</span><del>- ASSERT(ancestorsOfType<HTMLCanvasElement>(*this).first());
- auto& canvas = *ancestorsOfType<HTMLCanvasElement>(*this).first();
- return canvas.renderer() && canvas.renderer()->style().visibility() == VISIBLE;
</del><ins>+ const Element* e = this;
+ while (e && !e->hasLocalName(canvasTag))
+ e = e->parentElement();
+ ASSERT(e);
+ return e->renderer() && e->renderer()->style().visibility() == VISIBLE;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (!renderer()) {
</span><span class="lines">@@ -1632,7 +1638,7 @@
</span><span class="cx"> const Vector<RefPtr<Attr>>& Element::attrNodeList()
</span><span class="cx"> {
</span><span class="cx"> ASSERT(hasSyntheticAttrChildNodes());
</span><del>- return *attrNodeListForElement(*this);
</del><ins>+ return *attrNodeListForElement(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> PassRefPtr<Attr> Element::setAttributeNode(Attr* attrNode, ExceptionCode& ec)
</span><span class="lines">@@ -1668,7 +1674,7 @@
</span><span class="cx">
</span><span class="cx"> attrNode->attachToElement(this);
</span><span class="cx"> treeScope().adoptIfNeeded(attrNode);
</span><del>- ensureAttrNodeListForElement(*this).append(attrNode);
</del><ins>+ ensureAttrNodeListForElement(this).append(attrNode);
</ins><span class="cx">
</span><span class="cx"> return oldAttrNode.release();
</span><span class="cx"> }
</span><span class="lines">@@ -2763,14 +2769,14 @@
</span><span class="cx">
</span><span class="cx"> PassRefPtr<Attr> Element::attrIfExists(const QualifiedName& name)
</span><span class="cx"> {
</span><del>- if (auto* attrNodeList = attrNodeListForElement(*this))
</del><ins>+ if (AttrNodeList* attrNodeList = attrNodeListForElement(this))
</ins><span class="cx"> return findAttrNodeInList(*attrNodeList, name);
</span><del>- return nullptr;
</del><ins>+ return 0;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> PassRefPtr<Attr> Element::ensureAttr(const QualifiedName& name)
</span><span class="cx"> {
</span><del>- auto& attrNodeList = ensureAttrNodeListForElement(*this);
</del><ins>+ AttrNodeList& attrNodeList = ensureAttrNodeListForElement(this);
</ins><span class="cx"> RefPtr<Attr> attrNode = findAttrNodeInList(attrNodeList, name);
</span><span class="cx"> if (!attrNode) {
</span><span class="cx"> attrNode = Attr::create(this, name);
</span><span class="lines">@@ -2785,12 +2791,12 @@
</span><span class="cx"> ASSERT(hasSyntheticAttrChildNodes());
</span><span class="cx"> attrNode->detachFromElementWithValue(value);
</span><span class="cx">
</span><del>- auto* attrNodeList = attrNodeListForElement(*this);
</del><ins>+ AttrNodeList* attrNodeList = attrNodeListForElement(this);
</ins><span class="cx"> for (unsigned i = 0; i < attrNodeList->size(); ++i) {
</span><span class="cx"> if (attrNodeList->at(i)->qualifiedName() == attrNode->qualifiedName()) {
</span><span class="cx"> attrNodeList->remove(i);
</span><span class="cx"> if (attrNodeList->isEmpty())
</span><del>- removeAttrNodeListForElement(*this);
</del><ins>+ removeAttrNodeListForElement(this);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -2799,7 +2805,7 @@
</span><span class="cx">
</span><span class="cx"> void Element::detachAllAttrNodesFromElement()
</span><span class="cx"> {
</span><del>- auto* attrNodeList = attrNodeListForElement(*this);
</del><ins>+ AttrNodeList* attrNodeList = attrNodeListForElement(this);
</ins><span class="cx"> ASSERT(attrNodeList);
</span><span class="cx">
</span><span class="cx"> for (const Attribute& attribute : attributesIterator()) {
</span><span class="lines">@@ -2807,7 +2813,7 @@
</span><span class="cx"> attrNode->detachFromElementWithValue(attribute.value());
</span><span class="cx"> }
</span><span class="cx">
</span><del>- removeAttrNodeListForElement(*this);
</del><ins>+ removeAttrNodeListForElement(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void Element::resetComputedStyle()
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.h (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.h        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/dom/Element.h        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -260,12 +260,10 @@
</span><span class="cx"> #endif // ENABLE(CSS_SELECTOR_JIT)
</span><span class="cx"> String tagName() const { return nodeName(); }
</span><span class="cx"> bool hasTagName(const QualifiedName& tagName) const { return m_tagName.matches(tagName); }
</span><del>- bool hasTagName(const HTMLQualifiedName& tagName) const { return ContainerNode::hasTagName(tagName); }
- bool hasTagName(const MathMLQualifiedName& tagName) const { return ContainerNode::hasTagName(tagName); }
- bool hasTagName(const SVGQualifiedName& tagName) const { return ContainerNode::hasTagName(tagName); }
-
</del><ins>+
</ins><span class="cx"> // A fast function for checking the local name against another atomic string.
</span><span class="cx"> bool hasLocalName(const AtomicString& other) const { return m_tagName.localName() == other; }
</span><ins>+ bool hasLocalName(const QualifiedName& other) const { return m_tagName.localName() == other.localName(); }
</ins><span class="cx">
</span><span class="cx"> virtual const AtomicString& localName() const override final { return m_tagName.localName(); }
</span><span class="cx"> virtual const AtomicString& prefix() const override final { return m_tagName.prefix(); }
</span><span class="lines">@@ -688,6 +686,16 @@
</span><span class="cx"> template <typename Type> inline bool isElementOfType(const Node& node) { return node.isElementNode() && isElementOfType<const Type>(toElement(node)); }
</span><span class="cx"> template <> inline bool isElementOfType<const Element>(const Element&) { return true; }
</span><span class="cx">
</span><ins>+inline bool Node::hasTagName(const QualifiedName& name) const
+{
+ return isElementNode() && toElement(this)->hasTagName(name);
+}
+
+inline bool Node::hasLocalName(const AtomicString& name) const
+{
+ return isElementNode() && toElement(this)->hasLocalName(name);
+}
+
</ins><span class="cx"> inline bool Node::hasAttributes() const
</span><span class="cx"> {
</span><span class="cx"> return isElementNode() && toElement(this)->hasAttributes();
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.h (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.h        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/dom/Node.h        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -60,10 +60,8 @@
</span><span class="cx"> class FloatPoint;
</span><span class="cx"> class Frame;
</span><span class="cx"> class HTMLInputElement;
</span><del>-class HTMLQualifiedName;
</del><span class="cx"> class IntRect;
</span><span class="cx"> class KeyboardEvent;
</span><del>-class MathMLQualifiedName;
</del><span class="cx"> class NSResolver;
</span><span class="cx"> class NamedNodeMap;
</span><span class="cx"> class NameNodeList;
</span><span class="lines">@@ -77,7 +75,6 @@
</span><span class="cx"> class RenderBoxModelObject;
</span><span class="cx"> class RenderObject;
</span><span class="cx"> class RenderStyle;
</span><del>-class SVGQualifiedName;
</del><span class="cx"> class ShadowRoot;
</span><span class="cx"> class TagNodeList;
</span><span class="cx">
</span><span class="lines">@@ -160,9 +157,8 @@
</span><span class="cx">
</span><span class="cx"> // DOM methods & attributes for Node
</span><span class="cx">
</span><del>- bool hasTagName(const HTMLQualifiedName&) const;
- bool hasTagName(const MathMLQualifiedName&) const;
- bool hasTagName(const SVGQualifiedName&) const;
</del><ins>+ bool hasTagName(const QualifiedName&) const;
+ bool hasLocalName(const AtomicString&) const;
</ins><span class="cx"> virtual String nodeName() const = 0;
</span><span class="cx"> virtual String nodeValue() const;
</span><span class="cx"> virtual void setNodeValue(const String&, ExceptionCode&);
</span><span class="lines">@@ -263,7 +259,7 @@
</span><span class="cx"> bool hasSyntheticAttrChildNodes() const { return getFlag(HasSyntheticAttrChildNodesFlag); }
</span><span class="cx"> void setHasSyntheticAttrChildNodes(bool flag) { setFlag(flag, HasSyntheticAttrChildNodesFlag); }
</span><span class="cx">
</span><del>- // If this node is in a shadow tree, returns its shadow host. Otherwise, returns null.
</del><ins>+ // If this node is in a shadow tree, returns its shadow host. Otherwise, returns 0.
</ins><span class="cx"> Element* shadowHost() const;
</span><span class="cx"> // If this node is in a shadow tree, returns its shadow host. Otherwise, returns this.
</span><span class="cx"> // Deprecated. Should use shadowHost() and check the return value.
</span><span class="lines">@@ -271,7 +267,7 @@
</span><span class="cx"> ShadowRoot* containingShadowRoot() const;
</span><span class="cx"> ShadowRoot* shadowRoot() const;
</span><span class="cx">
</span><del>- // Returns null, a child of ShadowRoot, or a legacy shadow root.
</del><ins>+ // Returns 0, a child of ShadowRoot, or a legacy shadow root.
</ins><span class="cx"> Node* nonBoundaryShadowTreeRootNode();
</span><span class="cx">
</span><span class="cx"> // Node's parent or shadow tree host.
</span><span class="lines">@@ -280,9 +276,9 @@
</span><span class="cx"> void setParentNode(ContainerNode*);
</span><span class="cx"> Node* highestAncestor() const;
</span><span class="cx">
</span><del>- // Use when it's guaranteed to that shadowHost is null.
</del><ins>+ // Use when it's guaranteed to that shadowHost is 0.
</ins><span class="cx"> ContainerNode* parentNodeGuaranteedHostFree() const;
</span><del>- // Returns the parent node, but null if the parent node is a ShadowRoot.
</del><ins>+ // Returns the parent node, but 0 if the parent node is a ShadowRoot.
</ins><span class="cx"> ContainerNode* nonShadowBoundaryParentNode() const;
</span><span class="cx">
</span><span class="cx"> bool selfOrAncestorHasDirAutoAttribute() const { return getFlag(SelfOrAncestorHasDirAutoFlag); }
</span><span class="lines">@@ -381,11 +377,11 @@
</span><span class="cx">
</span><span class="cx"> unsigned nodeIndex() const;
</span><span class="cx">
</span><del>- // Returns the DOM ownerDocument attribute. This method never returns null, except in the case
</del><ins>+ // Returns the DOM ownerDocument attribute. This method never returns 0, except in the case
</ins><span class="cx"> // of a Document node.
</span><span class="cx"> Document* ownerDocument() const;
</span><span class="cx">
</span><del>- // Returns the document associated with this node.
</del><ins>+ // Returns the document associated with this node. This method never returns 0.
</ins><span class="cx"> // A Document node returns itself.
</span><span class="cx"> Document& document() const
</span><span class="cx"> {
</span><span class="lines">@@ -495,11 +491,11 @@
</span><span class="cx"> void showNode(const char* prefix = "") const;
</span><span class="cx"> void showTreeForThis() const;
</span><span class="cx"> void showNodePathForThis() const;
</span><del>- void showTreeAndMark(const Node* markedNode1, const char* markedLabel1, const Node* markedNode2 = nullptr, const char* markedLabel2 = nullptr) const;
</del><ins>+ void showTreeAndMark(const Node* markedNode1, const char* markedLabel1, const Node* markedNode2 = 0, const char* markedLabel2 = 0) const;
</ins><span class="cx"> void showTreeForThisAcrossFrame() const;
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>- void invalidateNodeListAndCollectionCachesInAncestors(const QualifiedName* attrName = nullptr, Element* attributeOwnerElement = nullptr);
</del><ins>+ void invalidateNodeListAndCollectionCachesInAncestors(const QualifiedName* attrName = 0, Element* attributeOwnerElement = 0);
</ins><span class="cx"> NodeListsNodeData* nodeLists();
</span><span class="cx"> void clearNodeLists();
</span><span class="cx">
</span><span class="lines">@@ -674,7 +670,7 @@
</span><span class="cx"> virtual void refEventTarget() override;
</span><span class="cx"> virtual void derefEventTarget() override;
</span><span class="cx">
</span><del>- virtual RenderStyle* nonRendererStyle() const { return nullptr; }
</del><ins>+ virtual RenderStyle* nonRendererStyle() const { return 0; }
</ins><span class="cx">
</span><span class="cx"> Element* ancestorElement() const;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoredomPositionIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/PositionIterator.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/PositionIterator.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/dom/PositionIterator.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #include "config.h"
</span><span class="cx"> #include "PositionIterator.h"
</span><span class="cx">
</span><del>-#include "HTMLElement.h"
</del><span class="cx"> #include "HTMLNames.h"
</span><span class="cx"> #include "RenderBlock.h"
</span><span class="cx"> #include "RenderText.h"
</span></span></pre></div>
<a id="trunkSourceWebCoredomStyledElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/StyledElement.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/StyledElement.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/dom/StyledElement.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -30,7 +30,6 @@
</span><span class="cx"> #include "CSSValuePool.h"
</span><span class="cx"> #include "ContentSecurityPolicy.h"
</span><span class="cx"> #include "DOMTokenList.h"
</span><del>-#include "HTMLElement.h"
</del><span class="cx"> #include "HTMLParserIdioms.h"
</span><span class="cx"> #include "InspectorInstrumentation.h"
</span><span class="cx"> #include "PropertySetCSSStyleDeclaration.h"
</span></span></pre></div>
<a id="trunkSourceWebCoredomTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Text.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Text.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/dom/Text.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -25,13 +25,13 @@
</span><span class="cx"> #include "RenderCombineText.h"
</span><span class="cx"> #include "RenderSVGInlineText.h"
</span><span class="cx"> #include "RenderText.h"
</span><del>-#include "SVGElement.h"
-#include "SVGNames.h"
</del><span class="cx"> #include "ScopedEventQueue.h"
</span><span class="cx"> #include "ShadowRoot.h"
</span><ins>+#include "SVGNames.h"
+#include "TextNodeTraversal.h"
+
</ins><span class="cx"> #include "StyleInheritedData.h"
</span><span class="cx"> #include "StyleResolver.h"
</span><del>-#include "TextNodeTraversal.h"
</del><span class="cx"> #include <wtf/CheckedArithmetic.h>
</span><span class="cx"> #include <wtf/text/CString.h>
</span><span class="cx"> #include <wtf/text/StringBuilder.h>
</span></span></pre></div>
<a id="trunkSourceWebCoredommake_namespl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/make_names.pl (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/make_names.pl        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/dom/make_names.pl        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> #!/usr/bin/perl -w
</span><span class="cx">
</span><del>-# Copyright (C) 2005-2007, 2009, 2013-2014 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2005, 2006, 2007, 2009, 2013 Apple Inc. All rights reserved.
</ins><span class="cx"> # Copyright (C) 2009, Julien Chaffraix <jchaffraix@webkit.org>
</span><span class="cx"> # Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
</span><span class="cx"> # Copyright (C) 2011 Ericsson AB. All rights reserved.
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx"> open F, ">$header" or die "Unable to open $header for writing.";
</span><span class="cx">
</span><span class="cx"> printLicenseHeader($F);
</span><del>- printHeaderHead($F, "CSS", $familyNamesFileBase, "#include <wtf/text/AtomicString.h>", "");
</del><ins>+ printHeaderHead($F, "CSS", $familyNamesFileBase, "#include <wtf/text/AtomicString.h>");
</ins><span class="cx">
</span><span class="cx"> printMacros($F, "extern const WTF::AtomicString", "", \%parameters);
</span><span class="cx"> print F "#endif\n\n";
</span><span class="lines">@@ -525,41 +525,34 @@
</span><span class="cx">
</span><span class="cx"> sub printHeaderHead
</span><span class="cx"> {
</span><del>- my ($F, $prefix, $namespace, $includes, $definitions) = @_;
</del><ins>+ my ($F, $prefix, $nsName, $includes) = @_;
</ins><span class="cx">
</span><del>- print F<<END
-#ifndef ${prefix}_${namespace}Names_h
</del><ins>+ print F "#ifndef ${prefix}_${nsName}Names_h\n";
+ print F "#define ${prefix}_${nsName}Names_h\n\n";
+ print F "$includes\n\n";
</ins><span class="cx">
</span><del>-#define ${prefix}_${namespace}Names_h
</del><ins>+ print F "namespace WebCore {\n\n";
+ print F "namespace ${nsName}Names {\n\n";
</ins><span class="cx">
</span><del>-$includes
-
-namespace WebCore {
-
-${definitions}namespace ${namespace}Names {
-
-#ifndef ${prefix}_${namespace}_NAMES_HIDE_GLOBALS
-
-END
- ;
</del><ins>+ print F "#ifndef ${prefix}_${nsName}NAMES_HIDE_GLOBALS\n";
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> sub printCppHead
</span><span class="cx"> {
</span><del>- my ($F, $prefix, $namespace, $usedNamespace) = @_;
</del><ins>+ my ($F, $prefix, $nsName, $usedNamespace) = @_;
</ins><span class="cx">
</span><span class="cx"> print F "#include \"config.h\"\n\n";
</span><span class="cx"> print F "#ifdef SKIP_STATIC_CONSTRUCTORS_ON_GCC\n";
</span><del>- print F "#define ${prefix}_${namespace}_NAMES_HIDE_GLOBALS 1\n";
</del><ins>+ print F "#define ${prefix}_${nsName}NAMES_HIDE_GLOBALS 1\n";
</ins><span class="cx"> print F "#else\n";
</span><span class="cx"> print F "#define QNAME_DEFAULT_CONSTRUCTOR 1\n";
</span><span class="cx"> print F "#endif\n\n";
</span><span class="cx">
</span><del>- print F "#include \"${namespace}Names.h\"\n\n";
</del><ins>+ print F "#include \"${nsName}Names.h\"\n\n";
</ins><span class="cx"> print F "#include <wtf/StaticConstructors.h>\n";
</span><span class="cx">
</span><span class="cx"> print F "namespace WebCore {\n\n";
</span><del>- print F "namespace ${namespace}Names {\n\n";
</del><ins>+ print F "namespace ${nsName}Names {\n\n";
</ins><span class="cx"> print F "using namespace $usedNamespace;\n\n";
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -646,13 +639,13 @@
</span><span class="cx"> if ($parsedTags{$name}{wrapperOnlyIfMediaIsAvailable}) {
</span><span class="cx"> # We need to check for HTMLUnknownElement if it might have been created by the factory.
</span><span class="cx"> print F <<END
</span><del>-inline bool $checkHelper(const HTMLElement& element) { return !element.isHTMLUnknownElement() && element.hasTagName($parameters{namespace}Names::${name}Tag); }
</del><ins>+inline bool $checkHelper(const HTMLElement& element) { return !element.isHTMLUnknownElement() && element.hasLocalName($parameters{namespace}Names::${name}Tag); }
</ins><span class="cx"> inline bool $checkHelper(const HTMLElement* element) { ASSERT(element); return $checkHelper(*element); }
</span><span class="cx"> END
</span><span class="cx"> ;
</span><span class="cx"> } else {
</span><span class="cx"> print F <<END
</span><del>-inline bool $checkHelper(const HTMLElement& element) { return element.hasTagName(HTMLNames::${name}Tag); }
</del><ins>+inline bool $checkHelper(const HTMLElement& element) { return element.hasLocalName(HTMLNames::${name}Tag); }
</ins><span class="cx"> inline bool $checkHelper(const HTMLElement* element) { ASSERT(element); return $checkHelper(*element); }
</span><span class="cx"> END
</span><span class="cx"> ;
</span><span class="lines">@@ -708,16 +701,15 @@
</span><span class="cx"> open F, ">$headerPath";
</span><span class="cx">
</span><span class="cx"> printLicenseHeader($F);
</span><del>- printHeaderHead($F, "DOM", $parameters{namespace}, '#include "QualifiedName.h"', "class $parameters{namespace}QualifiedName : public QualifiedName { };\n\n");
</del><ins>+ printHeaderHead($F, "DOM", $parameters{namespace}, "#include \"QualifiedName.h\"");
</ins><span class="cx">
</span><del>- my $lowercaseNamespacePrefix = lc($parameters{namespacePrefix});
-
</del><ins>+ my $lowerNamespace = lc($parameters{namespacePrefix});
</ins><span class="cx"> print F "// Namespace\n";
</span><del>- print F "extern const WTF::AtomicString ${lowercaseNamespacePrefix}NamespaceURI;\n\n";
</del><ins>+ print F "extern const WTF::AtomicString ${lowerNamespace}NamespaceURI;\n\n";
</ins><span class="cx">
</span><span class="cx"> if (keys %allTags) {
</span><span class="cx"> print F "// Tags\n";
</span><del>- printMacros($F, "extern const WebCore::$parameters{namespace}QualifiedName", "Tag", \%allTags);
</del><ins>+ printMacros($F, "extern const WebCore::QualifiedName", "Tag", \%allTags);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (keys %allAttrs) {
</span><span class="lines">@@ -728,12 +720,12 @@
</span><span class="cx">
</span><span class="cx"> if (keys %allTags) {
</span><span class="cx"> print F "const unsigned $parameters{namespace}TagsCount = ", scalar(keys %allTags), ";\n";
</span><del>- print F "const WebCore::$parameters{namespace}QualifiedName* const* get$parameters{namespace}Tags();\n";
</del><ins>+ print F "const WebCore::QualifiedName* const * get$parameters{namespace}Tags();\n";
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (keys %allAttrs) {
</span><span class="cx"> print F "const unsigned $parameters{namespace}AttrsCount = ", scalar(keys %allAttrs), ";\n";
</span><del>- print F "const WebCore::QualifiedName* const* get$parameters{namespace}Attrs();\n";
</del><ins>+ print F "const WebCore::QualifiedName* const * get$parameters{namespace}Attrs();\n";
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> printInit($F, 1);
</span><span class="lines">@@ -749,9 +741,9 @@
</span><span class="cx"> printLicenseHeader($F);
</span><span class="cx"> printCppHead($F, "DOM", $parameters{namespace}, "WebCore");
</span><span class="cx">
</span><del>- my $lowercaseNamespacePrefix = lc($parameters{namespacePrefix});
</del><ins>+ my $lowerNamespace = lc($parameters{namespacePrefix});
</ins><span class="cx">
</span><del>- print F "DEFINE_GLOBAL(AtomicString, ${lowercaseNamespacePrefix}NamespaceURI)\n\n";
</del><ins>+ print F "DEFINE_GLOBAL(AtomicString, ${lowerNamespace}NamespaceURI)\n\n";
</ins><span class="cx">
</span><span class="cx"> print F StaticString::GenerateStrings(\%allStrings);
</span><span class="cx">
</span><span class="lines">@@ -761,10 +753,10 @@
</span><span class="cx"> print F "DEFINE_GLOBAL(QualifiedName, ", $name, "Tag)\n";
</span><span class="cx"> }
</span><span class="cx">
</span><del>- print F "\n\nconst WebCore::$parameters{namespace}QualifiedName* const* get$parameters{namespace}Tags()\n";
- print F "{\n static const WebCore::$parameters{namespace}QualifiedName* const $parameters{namespace}Tags[] = {\n";
</del><ins>+ print F "\n\nconst WebCore::QualifiedName* const * get$parameters{namespace}Tags()\n";
+ print F "{\n static const WebCore::QualifiedName* const $parameters{namespace}Tags[] = {\n";
</ins><span class="cx"> for my $name (sort keys %allTags) {
</span><del>- print F " reinterpret_cast<const WebCore::$parameters{namespace}QualifiedName*>(&${name}Tag),\n";
</del><ins>+ print F " reinterpret_cast<const WebCore::QualifiedName*>(&${name}Tag),\n";
</ins><span class="cx"> }
</span><span class="cx"> print F " };\n";
</span><span class="cx"> print F " return $parameters{namespace}Tags;\n";
</span><span class="lines">@@ -776,7 +768,7 @@
</span><span class="cx"> for my $name (sort keys %allAttrs) {
</span><span class="cx"> print F "DEFINE_GLOBAL(QualifiedName, ", $name, "Attr)\n";
</span><span class="cx"> }
</span><del>- print F "\n\nconst WebCore::QualifiedName* const* get$parameters{namespace}Attrs()\n";
</del><ins>+ print F "\n\nconst WebCore::QualifiedName* const * get$parameters{namespace}Attrs()\n";
</ins><span class="cx"> print F "{\n static const WebCore::QualifiedName* const $parameters{namespace}Attrs[] = {\n";
</span><span class="cx"> for my $name (sort keys %allAttrs) {
</span><span class="cx"> print F " reinterpret_cast<const WebCore::QualifiedName*>(&${name}Attr),\n";
</span><span class="lines">@@ -788,19 +780,19 @@
</span><span class="cx">
</span><span class="cx"> printInit($F, 0);
</span><span class="cx">
</span><del>- print(F " AtomicString ${lowercaseNamespacePrefix}NS(\"$parameters{namespaceURI}\", AtomicString::ConstructFromLiteral);\n\n");
</del><ins>+ print(F " AtomicString ${lowerNamespace}NS(\"$parameters{namespaceURI}\", AtomicString::ConstructFromLiteral);\n\n");
</ins><span class="cx">
</span><span class="cx"> print(F " // Namespace\n");
</span><del>- print(F " new (NotNull, (void*)&${lowercaseNamespacePrefix}NamespaceURI) AtomicString(${lowercaseNamespacePrefix}NS);\n");
</del><ins>+ print(F " new (NotNull, (void*)&${lowerNamespace}NamespaceURI) AtomicString(${lowerNamespace}NS);\n");
</ins><span class="cx"> print(F "\n");
</span><span class="cx"> print F StaticString::GenerateStringAsserts(\%allStrings);
</span><span class="cx">
</span><span class="cx"> if (keys %allTags) {
</span><del>- my $tagsNamespace = $parameters{tagsNullNamespace} ? "nullAtom" : "${lowercaseNamespacePrefix}NS";
</del><ins>+ my $tagsNamespace = $parameters{tagsNullNamespace} ? "nullAtom" : "${lowerNamespace}NS";
</ins><span class="cx"> printDefinitions($F, \%allTags, "tags", $tagsNamespace);
</span><span class="cx"> }
</span><span class="cx"> if (keys %allAttrs) {
</span><del>- my $attrsNamespace = $parameters{attrsNullNamespace} ? "nullAtom" : "${lowercaseNamespacePrefix}NS";
</del><ins>+ my $attrsNamespace = $parameters{attrsNullNamespace} ? "nullAtom" : "${lowerNamespace}NS";
</ins><span class="cx"> printDefinitions($F, \%allAttrs, "attributes", $attrsNamespace);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingApplyStyleCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ApplyStyleCommand.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ApplyStyleCommand.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/ApplyStyleCommand.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -65,13 +65,13 @@
</span><span class="cx"> return styleSpanClassString;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool isLegacyAppleStyleSpan(const Node* node)
</del><ins>+bool isLegacyAppleStyleSpan(const Node *node)
</ins><span class="cx"> {
</span><span class="cx"> if (!node || !node->isHTMLElement())
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- const HTMLElement& element = toHTMLElement(*node);
- return element.hasTagName(spanTag) && element.fastGetAttribute(classAttr) == styleSpanClassString();
</del><ins>+ const HTMLElement* elem = toHTMLElement(node);
+ return elem->hasLocalName(spanAttr) && elem->getAttribute(classAttr) == styleSpanClassString();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static bool hasNoAttributeOrOnlyStyleAttribute(const StyledElement* element, ShouldStyleAttributeBeEmpty shouldStyleAttributeBeEmpty)
</span><span class="lines">@@ -130,6 +130,7 @@
</span><span class="cx"> , m_start(endingSelection().start().downstream())
</span><span class="cx"> , m_end(endingSelection().end().upstream())
</span><span class="cx"> , m_useEndingSelection(true)
</span><ins>+ , m_styledInlineElement(0)
</ins><span class="cx"> , m_removeOnly(false)
</span><span class="cx"> , m_isInlineElementToRemoveFunction(0)
</span><span class="cx"> {
</span><span class="lines">@@ -143,6 +144,7 @@
</span><span class="cx"> , m_start(start)
</span><span class="cx"> , m_end(end)
</span><span class="cx"> , m_useEndingSelection(false)
</span><ins>+ , m_styledInlineElement(0)
</ins><span class="cx"> , m_removeOnly(false)
</span><span class="cx"> , m_isInlineElementToRemoveFunction(0)
</span><span class="cx"> {
</span><span class="lines">@@ -170,6 +172,7 @@
</span><span class="cx"> , m_start(endingSelection().start().downstream())
</span><span class="cx"> , m_end(endingSelection().end().upstream())
</span><span class="cx"> , m_useEndingSelection(true)
</span><ins>+ , m_styledInlineElement(0)
</ins><span class="cx"> , m_removeOnly(true)
</span><span class="cx"> , m_isInlineElementToRemoveFunction(isInlineElementToRemoveFunction)
</span><span class="cx"> {
</span><span class="lines">@@ -847,7 +850,7 @@
</span><span class="cx"> // We don't consider m_isInlineElementToRemoveFunction here because we never apply style when m_isInlineElementToRemoveFunction is specified
</span><span class="cx"> if (!style->styleIsPresentInComputedStyleOfNode(node))
</span><span class="cx"> return true;
</span><del>- if (m_styledInlineElement && !enclosingElementWithTag(positionBeforeNode(node), m_styledInlineElement->tagQName()))
</del><ins>+ if (m_styledInlineElement && !enclosingNodeWithTag(positionBeforeNode(node), m_styledInlineElement->tagQName()))
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/Editor.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/Editor.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/Editor.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -797,11 +797,11 @@
</span><span class="cx"> TriState Editor::selectionUnorderedListState() const
</span><span class="cx"> {
</span><span class="cx"> if (m_frame.selection().isCaret()) {
</span><del>- if (enclosingElementWithTag(m_frame.selection().selection().start(), ulTag))
</del><ins>+ if (enclosingNodeWithTag(m_frame.selection().selection().start(), ulTag))
</ins><span class="cx"> return TrueTriState;
</span><span class="cx"> } else if (m_frame.selection().isRange()) {
</span><del>- auto* startNode = enclosingElementWithTag(m_frame.selection().selection().start(), ulTag);
- auto* endNode = enclosingElementWithTag(m_frame.selection().selection().end(), ulTag);
</del><ins>+ Node* startNode = enclosingNodeWithTag(m_frame.selection().selection().start(), ulTag);
+ Node* endNode = enclosingNodeWithTag(m_frame.selection().selection().end(), ulTag);
</ins><span class="cx"> if (startNode && endNode && startNode == endNode)
</span><span class="cx"> return TrueTriState;
</span><span class="cx"> }
</span><span class="lines">@@ -812,11 +812,11 @@
</span><span class="cx"> TriState Editor::selectionOrderedListState() const
</span><span class="cx"> {
</span><span class="cx"> if (m_frame.selection().isCaret()) {
</span><del>- if (enclosingElementWithTag(m_frame.selection().selection().start(), olTag))
</del><ins>+ if (enclosingNodeWithTag(m_frame.selection().selection().start(), olTag))
</ins><span class="cx"> return TrueTriState;
</span><span class="cx"> } else if (m_frame.selection().isRange()) {
</span><del>- auto* startNode = enclosingElementWithTag(m_frame.selection().selection().start(), olTag);
- auto* endNode = enclosingElementWithTag(m_frame.selection().selection().end(), olTag);
</del><ins>+ Node* startNode = enclosingNodeWithTag(m_frame.selection().selection().start(), olTag);
+ Node* endNode = enclosingNodeWithTag(m_frame.selection().selection().end(), olTag);
</ins><span class="cx"> if (startNode && endNode && startNode == endNode)
</span><span class="cx"> return TrueTriState;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingInsertListCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/InsertListCommand.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/InsertListCommand.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/InsertListCommand.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx"> if (visibleEnd != visibleStart && isStartOfParagraph(visibleEnd, CanSkipOverEditingBoundary))
</span><span class="cx"> setEndingSelection(VisibleSelection(visibleStart, visibleEnd.previous(CannotCrossEditingBoundary), endingSelection().isDirectional()));
</span><span class="cx">
</span><del>- auto& listTag = (m_type == OrderedList) ? olTag : ulTag;
</del><ins>+ const QualifiedName& listTag = (m_type == OrderedList) ? olTag : ulTag;
</ins><span class="cx"> if (endingSelection().isRange()) {
</span><span class="cx"> VisibleSelection selection = selectionForParagraphIteration(endingSelection());
</span><span class="cx"> ASSERT(selection.isRange());
</span><span class="lines">@@ -192,7 +192,7 @@
</span><span class="cx"> doApplyForSingleParagraph(false, listTag, endingSelection().firstRange().get());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void InsertListCommand::doApplyForSingleParagraph(bool forceCreateList, const HTMLQualifiedName& listTag, Range* currentSelection)
</del><ins>+void InsertListCommand::doApplyForSingleParagraph(bool forceCreateList, const QualifiedName& listTag, Range* currentSelection)
</ins><span class="cx"> {
</span><span class="cx"> // FIXME: This will produce unexpected results for a selection that starts just before a
</span><span class="cx"> // table and ends inside the first cell, selectionForParagraphIteration should probably
</span><span class="lines">@@ -207,10 +207,9 @@
</span><span class="cx"> listNode = fixOrphanedListChild(listChildNode);
</span><span class="cx"> listNode = mergeWithNeighboringLists(listNode);
</span><span class="cx"> }
</span><del>- if (!listNode->hasTagName(listTag)) {
</del><ins>+ if (!listNode->hasTagName(listTag))
</ins><span class="cx"> // listChildNode will be removed from the list and a list of type m_type will be created.
</span><span class="cx"> switchListType = true;
</span><del>- }
</del><span class="cx">
</span><span class="cx"> // If the list is of the desired type, and we are not removing the list, then exit early.
</span><span class="cx"> if (!switchListType && forceCreateList)
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingInsertListCommandh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/InsertListCommand.h (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/InsertListCommand.h        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/InsertListCommand.h        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="cx"> class HTMLElement;
</span><del>-class HTMLQualifiedName;
</del><span class="cx">
</span><span class="cx"> class InsertListCommand : public CompositeEditCommand {
</span><span class="cx"> public:
</span><span class="lines">@@ -55,7 +54,7 @@
</span><span class="cx"> HTMLElement* fixOrphanedListChild(Node*);
</span><span class="cx"> bool selectionHasListOfType(const VisibleSelection& selection, const QualifiedName&);
</span><span class="cx"> PassRefPtr<HTMLElement> mergeWithNeighboringLists(PassRefPtr<HTMLElement>);
</span><del>- void doApplyForSingleParagraph(bool forceCreateList, const HTMLQualifiedName&, Range* currentSelection);
</del><ins>+ void doApplyForSingleParagraph(bool forceCreateList, const QualifiedName&, Range* currentSelection);
</ins><span class="cx"> void unlistifyParagraph(const VisiblePosition& originalStart, HTMLElement* listNode, Node* listChildNode);
</span><span class="cx"> PassRefPtr<HTMLElement> listifyParagraph(const VisiblePosition& originalStart, const QualifiedName& listTag);
</span><span class="cx"> RefPtr<HTMLElement> m_listElement;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingMarkupAccumulatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/MarkupAccumulator.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/MarkupAccumulator.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/MarkupAccumulator.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -140,8 +140,8 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> if (tagNamesToSkip && targetNode.isElementNode()) {
</span><del>- for (auto& name : *tagNamesToSkip) {
- if (toElement(targetNode).hasTagName(name))
</del><ins>+ for (size_t i = 0; i < tagNamesToSkip->size(); ++i) {
+ if (targetNode.hasTagName(tagNamesToSkip->at(i)))
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingReplaceSelectionCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -628,12 +628,12 @@
</span><span class="cx"> continue;
</span><span class="cx">
</span><span class="cx"> if (isProhibitedParagraphChild(toHTMLElement(node.get())->localName())) {
</span><del>- if (auto* paragraphElement = enclosingElementWithTag(positionInParentBeforeNode(node.get()), pTag))
</del><ins>+ if (HTMLElement* paragraphElement = toHTMLElement(enclosingNodeWithTag(positionInParentBeforeNode(node.get()), pTag)))
</ins><span class="cx"> moveNodeOutOfAncestor(node, paragraphElement);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (isHeaderElement(node.get())) {
</span><del>- if (auto* headerElement = highestEnclosingNodeOfType(positionInParentBeforeNode(node.get()), isHeaderElement))
</del><ins>+ if (HTMLElement* headerElement = toHTMLElement(highestEnclosingNodeOfType(positionInParentBeforeNode(node.get()), isHeaderElement)))
</ins><span class="cx"> moveNodeOutOfAncestor(node, headerElement);
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -672,8 +672,8 @@
</span><span class="cx">
</span><span class="cx"> Node* lastLeafInserted = insertedNodes.lastLeafInserted();
</span><span class="cx"> if (lastLeafInserted && lastLeafInserted->isTextNode() && !hasRenderedText(toText(*lastLeafInserted))
</span><del>- && !enclosingElementWithTag(firstPositionInOrBeforeNode(lastLeafInserted), selectTag)
- && !enclosingElementWithTag(firstPositionInOrBeforeNode(lastLeafInserted), scriptTag)) {
</del><ins>+ && !enclosingNodeWithTag(firstPositionInOrBeforeNode(lastLeafInserted), selectTag)
+ && !enclosingNodeWithTag(firstPositionInOrBeforeNode(lastLeafInserted), scriptTag)) {
</ins><span class="cx"> insertedNodes.willRemoveNode(lastLeafInserted);
</span><span class="cx"> removeNode(lastLeafInserted);
</span><span class="cx"> }
</span><span class="lines">@@ -690,7 +690,7 @@
</span><span class="cx"> VisiblePosition ReplaceSelectionCommand::positionAtEndOfInsertedContent() const
</span><span class="cx"> {
</span><span class="cx"> // FIXME: Why is this hack here? What's special about <select> tags?
</span><del>- auto* enclosingSelect = enclosingElementWithTag(m_endOfInsertedContent, selectTag);
</del><ins>+ Node* enclosingSelect = enclosingNodeWithTag(m_endOfInsertedContent, selectTag);
</ins><span class="cx"> return enclosingSelect ? lastPositionInOrAfterNode(enclosingSelect) : m_endOfInsertedContent;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingTextIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/TextIterator.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/TextIterator.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/TextIterator.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -807,12 +807,12 @@
</span><span class="cx">
</span><span class="cx"> static bool hasHeaderTag(HTMLElement& element)
</span><span class="cx"> {
</span><del>- return element.hasTagName(h1Tag)
- || element.hasTagName(h2Tag)
- || element.hasTagName(h3Tag)
- || element.hasTagName(h4Tag)
- || element.hasTagName(h5Tag)
- || element.hasTagName(h6Tag);
</del><ins>+ return element.hasLocalName(h1Tag)
+ || element.hasLocalName(h2Tag)
+ || element.hasLocalName(h3Tag)
+ || element.hasLocalName(h4Tag)
+ || element.hasLocalName(h5Tag)
+ || element.hasLocalName(h6Tag);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static bool shouldEmitNewlinesBeforeAndAfterNode(Node& node)
</span><span class="lines">@@ -825,19 +825,19 @@
</span><span class="cx"> return false;
</span><span class="cx"> auto& element = toHTMLElement(node);
</span><span class="cx"> return hasHeaderTag(element)
</span><del>- || element.hasTagName(blockquoteTag)
- || element.hasTagName(ddTag)
- || element.hasTagName(divTag)
- || element.hasTagName(dlTag)
- || element.hasTagName(dtTag)
- || element.hasTagName(hrTag)
- || element.hasTagName(liTag)
- || element.hasTagName(listingTag)
- || element.hasTagName(olTag)
- || element.hasTagName(pTag)
- || element.hasTagName(preTag)
- || element.hasTagName(trTag)
- || element.hasTagName(ulTag);
</del><ins>+ || element.hasLocalName(blockquoteTag)
+ || element.hasLocalName(ddTag)
+ || element.hasLocalName(divTag)
+ || element.hasLocalName(dlTag)
+ || element.hasLocalName(dtTag)
+ || element.hasLocalName(hrTag)
+ || element.hasLocalName(liTag)
+ || element.hasLocalName(listingTag)
+ || element.hasLocalName(olTag)
+ || element.hasLocalName(pTag)
+ || element.hasLocalName(preTag)
+ || element.hasLocalName(trTag)
+ || element.hasLocalName(ulTag);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Need to make an exception for table cells, because they are blocks, but we
</span><span class="lines">@@ -894,7 +894,7 @@
</span><span class="cx"> // NOTE: We only do this for a select set of nodes, and WinIE appears not to do this at all.
</span><span class="cx"> if (!node.isHTMLElement())
</span><span class="cx"> return false;
</span><del>- if (!(hasHeaderTag(toHTMLElement(node)) || toHTMLElement(node).hasTagName(pTag)))
</del><ins>+ if (!(hasHeaderTag(toHTMLElement(node)) || toHTMLElement(node).hasLocalName(pTag)))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> int bottomMargin = toRenderBox(renderer)->collapsedMarginAfter();
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingTypingCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/TypingCommand.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/TypingCommand.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/TypingCommand.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -32,12 +32,10 @@
</span><span class="cx"> #include "Editor.h"
</span><span class="cx"> #include "Element.h"
</span><span class="cx"> #include "Frame.h"
</span><del>-#include "HTMLElement.h"
</del><span class="cx"> #include "HTMLNames.h"
</span><span class="cx"> #include "InsertLineBreakCommand.h"
</span><span class="cx"> #include "InsertParagraphSeparatorCommand.h"
</span><span class="cx"> #include "InsertTextCommand.h"
</span><del>-#include "MathMLElement.h"
</del><span class="cx"> #include "RenderElement.h"
</span><span class="cx"> #include "TextIterator.h"
</span><span class="cx"> #include "VisibleUnits.h"
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingVisibleUnitscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/VisibleUnits.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/VisibleUnits.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/VisibleUnits.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> #include "VisibleUnits.h"
</span><span class="cx">
</span><span class="cx"> #include "Document.h"
</span><del>-#include "HTMLElement.h"
</del><ins>+#include "Element.h"
</ins><span class="cx"> #include "HTMLNames.h"
</span><span class="cx"> #include "InlineTextBox.h"
</span><span class="cx"> #include "NodeTraversal.h"
</span></span></pre></div>
<a id="trunkSourceWebCoreeditinghtmleditingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/htmlediting.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/htmlediting.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/htmlediting.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -542,24 +542,22 @@
</span><span class="cx"> return n && (isListElement(n->parentNode()) || (n->renderer() && n->renderer()->isListItem()));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Element* enclosingElementWithTag(const Position& position, const QualifiedName& tagName)
</del><ins>+Node* enclosingNodeWithTag(const Position& p, const QualifiedName& tagName)
</ins><span class="cx"> {
</span><del>- if (position.isNull())
- return nullptr;
-
- Node* root = highestEditableRoot(position);
- for (Node* node = position.deprecatedNode(); node; node = node->parentNode()) {
- if (root && !node->hasEditableStyle())
</del><ins>+ if (p.isNull())
+ return 0;
+
+ Node* root = highestEditableRoot(p);
+ for (Node* n = p.deprecatedNode(); n; n = n->parentNode()) {
+ if (root && !n->hasEditableStyle())
</ins><span class="cx"> continue;
</span><del>- if (!node->isElementNode())
- continue;
- if (toElement(*node).hasTagName(tagName))
- return toElement(node);
- if (node == root)
- return nullptr;
</del><ins>+ if (n->hasTagName(tagName))
+ return n;
+ if (n == root)
+ return 0;
</ins><span class="cx"> }
</span><del>-
- return nullptr;
</del><ins>+
+ return 0;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> Node* enclosingNodeOfType(const Position& p, bool (*nodeIsOfType)(const Node*), EditingBoundaryCrossingRule rule)
</span></span></pre></div>
<a id="trunkSourceWebCoreeditinghtmleditingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/htmlediting.h (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/htmlediting.h        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/htmlediting.h        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> Node* enclosingTableCell(const Position&);
</span><span class="cx"> Node* enclosingEmptyListItem(const VisiblePosition&);
</span><span class="cx"> Element* enclosingAnchorElement(const Position&);
</span><del>-Element* enclosingElementWithTag(const Position&, const QualifiedName&);
</del><ins>+Node* enclosingNodeWithTag(const Position&, const QualifiedName&);
</ins><span class="cx"> Node* enclosingNodeOfType(const Position&, bool (*nodeIsOfType)(const Node*), EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
</span><span class="cx">
</span><span class="cx"> Node* tabSpanNode(const Node*);
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmacEditorMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/mac/EditorMac.mm (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/mac/EditorMac.mm        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/mac/EditorMac.mm        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -298,7 +298,7 @@
</span><span class="cx"> RefPtr<Range> range = selectedRange();
</span><span class="cx"> Node* commonAncestor = range->commonAncestorContainer(IGNORE_EXCEPTION);
</span><span class="cx"> ASSERT(commonAncestor);
</span><del>- auto* enclosingAnchor = enclosingElementWithTag(firstPositionInNode(commonAncestor), HTMLNames::aTag);
</del><ins>+ Node* enclosingAnchor = enclosingNodeWithTag(firstPositionInNode(commonAncestor), HTMLNames::aTag);
</ins><span class="cx"> if (enclosingAnchor && comparePositions(firstPositionInOrBeforeNode(range->startPosition().anchorNode()), range->startPosition()) >= 0)
</span><span class="cx"> range->setStart(enclosingAnchor, 0, IGNORE_EXCEPTION);
</span><span class="cx"> return range;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmarkupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/markup.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/markup.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/editing/markup.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -249,7 +249,7 @@
</span><span class="cx"> if (!shouldAnnotate() || parentIsTextarea)
</span><span class="cx"> MarkupAccumulator::appendText(out, text);
</span><span class="cx"> else {
</span><del>- const bool useRenderedText = !enclosingElementWithTag(firstPositionInNode(const_cast<Text*>(&text)), selectTag);
</del><ins>+ const bool useRenderedText = !enclosingNodeWithTag(firstPositionInNode(const_cast<Text*>(&text)), selectTag);
</ins><span class="cx"> String content = useRenderedText ? renderedText(text, m_range) : stringValueForRange(text, m_range);
</span><span class="cx"> StringBuilder buffer;
</span><span class="cx"> appendCharactersReplacingEntities(buffer, content, 0, content.length(), EntityMaskInPCDATA);
</span><span class="lines">@@ -387,7 +387,7 @@
</span><span class="cx"> // Don't write out empty block containers that aren't fully selected.
</span><span class="cx"> continue;
</span><span class="cx">
</span><del>- if (!n->renderer() && !enclosingElementWithTag(firstPositionInOrBeforeNode(n), selectTag)) {
</del><ins>+ if (!n->renderer() && !enclosingNodeWithTag(firstPositionInOrBeforeNode(n), selectTag)) {
</ins><span class="cx"> next = NodeTraversal::nextSkippingChildren(n);
</span><span class="cx"> // Don't skip over pastEnd.
</span><span class="cx"> if (pastEnd && pastEnd->isDescendantOf(n))
</span><span class="lines">@@ -547,7 +547,7 @@
</span><span class="cx"> if (!specialCommonAncestor && isTabSpanNode(commonAncestor))
</span><span class="cx"> specialCommonAncestor = commonAncestor;
</span><span class="cx">
</span><del>- if (auto* enclosingAnchor = enclosingElementWithTag(firstPositionInNode(specialCommonAncestor ? specialCommonAncestor : commonAncestor), aTag))
</del><ins>+ if (Node *enclosingAnchor = enclosingNodeWithTag(firstPositionInNode(specialCommonAncestor ? specialCommonAncestor : commonAncestor), aTag))
</ins><span class="cx"> specialCommonAncestor = enclosingAnchor;
</span><span class="cx">
</span><span class="cx"> return specialCommonAncestor;
</span><span class="lines">@@ -569,7 +569,7 @@
</span><span class="cx">
</span><span class="cx"> document.updateLayoutIgnorePendingStylesheets();
</span><span class="cx">
</span><del>- auto* body = enclosingElementWithTag(firstPositionInNode(commonAncestor), bodyTag);
</del><ins>+ Node* body = enclosingNodeWithTag(firstPositionInNode(commonAncestor), bodyTag);
</ins><span class="cx"> Node* fullySelectedRoot = 0;
</span><span class="cx"> // FIXME: Do this for all fully selected blocks, not just the body.
</span><span class="cx"> if (body && VisiblePosition(firstPositionInNode(body)) == VisiblePosition(range.startPosition())
</span><span class="lines">@@ -948,8 +948,8 @@
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (element->hasTagName(colTag) || element->hasTagName(colgroupTag) || element->hasTagName(framesetTag)
- || element->hasTagName(headTag) || element->hasTagName(styleTag) || element->hasTagName(titleTag)) {
</del><ins>+ if (element->hasLocalName(colTag) || element->hasLocalName(colgroupTag) || element->hasLocalName(framesetTag)
+ || element->hasLocalName(headTag) || element->hasLocalName(styleTag) || element->hasLocalName(titleTag)) {
</ins><span class="cx"> ec = NOT_SUPPORTED_ERR;
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLCollection.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLCollection.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/html/HTMLCollection.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -176,38 +176,38 @@
</span><span class="cx">
</span><span class="cx"> switch (type) {
</span><span class="cx"> case DocImages:
</span><del>- return element.hasTagName(imgTag);
</del><ins>+ return element.hasLocalName(imgTag);
</ins><span class="cx"> case DocScripts:
</span><del>- return element.hasTagName(scriptTag);
</del><ins>+ return element.hasLocalName(scriptTag);
</ins><span class="cx"> case DocForms:
</span><del>- return element.hasTagName(formTag);
</del><ins>+ return element.hasLocalName(formTag);
</ins><span class="cx"> case TableTBodies:
</span><del>- return element.hasTagName(tbodyTag);
</del><ins>+ return element.hasLocalName(tbodyTag);
</ins><span class="cx"> case TRCells:
</span><del>- return element.hasTagName(tdTag) || element.hasTagName(thTag);
</del><ins>+ return element.hasLocalName(tdTag) || element.hasLocalName(thTag);
</ins><span class="cx"> case TSectionRows:
</span><del>- return element.hasTagName(trTag);
</del><ins>+ return element.hasLocalName(trTag);
</ins><span class="cx"> case SelectOptions:
</span><del>- return element.hasTagName(optionTag);
</del><ins>+ return element.hasLocalName(optionTag);
</ins><span class="cx"> case SelectedOptions:
</span><del>- return element.hasTagName(optionTag) && toHTMLOptionElement(element).selected();
</del><ins>+ return element.hasLocalName(optionTag) && toHTMLOptionElement(element).selected();
</ins><span class="cx"> case DataListOptions:
</span><del>- if (element.hasTagName(optionTag)) {
</del><ins>+ if (element.hasLocalName(optionTag)) {
</ins><span class="cx"> HTMLOptionElement& option = toHTMLOptionElement(element);
</span><span class="cx"> if (!option.isDisabledFormControl() && !option.value().isEmpty())
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx"> return false;
</span><span class="cx"> case MapAreas:
</span><del>- return element.hasTagName(areaTag);
</del><ins>+ return element.hasLocalName(areaTag);
</ins><span class="cx"> case DocApplets:
</span><del>- return element.hasTagName(appletTag) || (element.hasTagName(objectTag) && toHTMLObjectElement(element).containsJavaApplet());
</del><ins>+ return element.hasLocalName(appletTag) || (element.hasLocalName(objectTag) && toHTMLObjectElement(element).containsJavaApplet());
</ins><span class="cx"> case DocEmbeds:
</span><del>- return element.hasTagName(embedTag);
</del><ins>+ return element.hasLocalName(embedTag);
</ins><span class="cx"> case DocLinks:
</span><del>- return (element.hasTagName(aTag) || element.hasTagName(areaTag)) && element.fastHasAttribute(hrefAttr);
</del><ins>+ return (element.hasLocalName(aTag) || element.hasLocalName(areaTag)) && element.fastHasAttribute(hrefAttr);
</ins><span class="cx"> case DocAnchors:
</span><del>- return element.hasTagName(aTag) && element.fastHasAttribute(nameAttr);
</del><ins>+ return element.hasLocalName(aTag) && element.fastHasAttribute(nameAttr);
</ins><span class="cx"> case DocAll:
</span><span class="cx"> case NodeChildren:
</span><span class="cx"> return true;
</span><span class="lines">@@ -269,13 +269,13 @@
</span><span class="cx"> {
</span><span class="cx"> // The document.all collection returns only certain types of elements by name,
</span><span class="cx"> // although it returns any type of element by id.
</span><del>- return element.hasTagName(appletTag)
- || element.hasTagName(embedTag)
- || element.hasTagName(formTag)
- || element.hasTagName(imgTag)
- || element.hasTagName(inputTag)
- || element.hasTagName(objectTag)
- || element.hasTagName(selectTag);
</del><ins>+ return element.hasLocalName(appletTag)
+ || element.hasLocalName(embedTag)
+ || element.hasLocalName(formTag)
+ || element.hasLocalName(imgTag)
+ || element.hasLocalName(inputTag)
+ || element.hasLocalName(objectTag)
+ || element.hasLocalName(selectTag);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> inline Element* firstMatchingChildElement(const HTMLCollection& nodeList, ContainerNode& root)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/html/HTMLElement.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -91,28 +91,28 @@
</span><span class="cx"> // This is also called from editing and assumed to be the list of tags
</span><span class="cx"> // for which no end tag should be serialized. It's unclear if the list for
</span><span class="cx"> // IE compat and the list for serialization sanity are the same.
</span><del>- if (hasTagName(areaTag)
- || hasTagName(baseTag)
- || hasTagName(basefontTag)
- || hasTagName(brTag)
- || hasTagName(colTag)
- || hasTagName(embedTag)
- || hasTagName(frameTag)
- || hasTagName(hrTag)
- || hasTagName(imageTag)
- || hasTagName(imgTag)
- || hasTagName(inputTag)
- || hasTagName(isindexTag)
- || hasTagName(linkTag)
- || hasTagName(metaTag)
- || hasTagName(paramTag)
- || hasTagName(sourceTag)
- || hasTagName(wbrTag))
</del><ins>+ if (hasLocalName(areaTag)
+ || hasLocalName(baseTag)
+ || hasLocalName(basefontTag)
+ || hasLocalName(brTag)
+ || hasLocalName(colTag)
+ || hasLocalName(embedTag)
+ || hasLocalName(frameTag)
+ || hasLocalName(hrTag)
+ || hasLocalName(imageTag)
+ || hasLocalName(imgTag)
+ || hasLocalName(inputTag)
+ || hasLocalName(isindexTag)
+ || hasLocalName(linkTag)
+ || hasLocalName(metaTag)
+ || hasLocalName(paramTag)
+ || hasLocalName(sourceTag)
+ || hasLocalName(wbrTag))
</ins><span class="cx"> return true;
</span><span class="cx"> // FIXME: I'm not sure why dashboard mode would want to change the
</span><span class="cx"> // serialization of <canvas>, that seems like a bad idea.
</span><span class="cx"> #if ENABLE(DASHBOARD_SUPPORT)
</span><del>- if (hasTagName(canvasTag)) {
</del><ins>+ if (hasLocalName(canvasTag)) {
</ins><span class="cx"> Settings* settings = document().settings();
</span><span class="cx"> if (settings && settings->usesDashboardBackwardCompatibilityMode())
</span><span class="cx"> return true;
</span><span class="lines">@@ -123,7 +123,7 @@
</span><span class="cx">
</span><span class="cx"> static inline CSSValueID unicodeBidiAttributeForDirAuto(HTMLElement& element)
</span><span class="cx"> {
</span><del>- if (element.hasTagName(preTag) || element.hasTagName(textareaTag))
</del><ins>+ if (element.hasLocalName(preTag) || element.hasLocalName(textareaTag))
</ins><span class="cx"> return CSSValueWebkitPlaintext;
</span><span class="cx"> // FIXME: For bdo element, dir="auto" should result in "bidi-override isolate" but we don't support having multiple values in unicode-bidi yet.
</span><span class="cx"> // See https://bugs.webkit.org/show_bug.cgi?id=73164.
</span><span class="lines">@@ -134,7 +134,7 @@
</span><span class="cx"> {
</span><span class="cx"> unsigned borderWidth = 0;
</span><span class="cx"> if (value.isEmpty() || !parseHTMLNonNegativeInteger(value, borderWidth))
</span><del>- return hasTagName(tableTag) ? 1 : borderWidth;
</del><ins>+ return hasLocalName(tableTag) ? 1 : borderWidth;
</ins><span class="cx"> return borderWidth;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -378,7 +378,7 @@
</span><span class="cx"> if (RefPtr<DocumentFragment> fragment = createFragmentForInnerOuterHTML(html, this, AllowScriptingContent, ec)) {
</span><span class="cx"> ContainerNode* container = this;
</span><span class="cx"> #if ENABLE(TEMPLATE_ELEMENT)
</span><del>- if (hasTagName(templateTag))
</del><ins>+ if (hasLocalName(templateTag))
</ins><span class="cx"> container = toHTMLTemplateElement(this)->content();
</span><span class="cx"> #endif
</span><span class="cx"> replaceChildrenWithFragment(*container, fragment.release(), ec);
</span><span class="lines">@@ -455,27 +455,16 @@
</span><span class="cx"> return fragment;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline bool shouldProhibitSetInnerOuterText(const HTMLElement& element)
-{
- return element.hasTagName(colTag)
- || element.hasTagName(colgroupTag)
- || element.hasTagName(framesetTag)
- || element.hasTagName(headTag)
- || element.hasTagName(htmlTag)
- || element.hasTagName(tableTag)
- || element.hasTagName(tbodyTag)
- || element.hasTagName(tfootTag)
- || element.hasTagName(theadTag)
- || element.hasTagName(trTag);
-}
-
</del><span class="cx"> void HTMLElement::setInnerText(const String& text, ExceptionCode& ec)
</span><span class="cx"> {
</span><span class="cx"> if (ieForbidsInsertHTML()) {
</span><span class="cx"> ec = NO_MODIFICATION_ALLOWED_ERR;
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- if (shouldProhibitSetInnerOuterText(*this)) {
</del><ins>+ if (hasLocalName(colTag) || hasLocalName(colgroupTag) || hasLocalName(framesetTag) ||
+ hasLocalName(headTag) || hasLocalName(htmlTag) || hasLocalName(tableTag) ||
+ hasLocalName(tbodyTag) || hasLocalName(tfootTag) || hasLocalName(theadTag) ||
+ hasLocalName(trTag)) {
</ins><span class="cx"> ec = NO_MODIFICATION_ALLOWED_ERR;
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -520,7 +509,10 @@
</span><span class="cx"> ec = NO_MODIFICATION_ALLOWED_ERR;
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- if (shouldProhibitSetInnerOuterText(*this)) {
</del><ins>+ if (hasLocalName(colTag) || hasLocalName(colgroupTag) || hasLocalName(framesetTag) ||
+ hasLocalName(headTag) || hasLocalName(htmlTag) || hasLocalName(tableTag) ||
+ hasLocalName(tbodyTag) || hasLocalName(tfootTag) || hasLocalName(theadTag) ||
+ hasLocalName(trTag)) {
</ins><span class="cx"> ec = NO_MODIFICATION_ALLOWED_ERR;
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -799,11 +791,11 @@
</span><span class="cx">
</span><span class="cx"> bool HTMLElement::rendererIsNeeded(const RenderStyle& style)
</span><span class="cx"> {
</span><del>- if (hasTagName(noscriptTag)) {
</del><ins>+ if (hasLocalName(noscriptTag)) {
</ins><span class="cx"> Frame* frame = document().frame();
</span><span class="cx"> if (frame && frame->script().canExecuteScripts(NotAboutToExecuteScript))
</span><span class="cx"> return false;
</span><del>- } else if (hasTagName(noembedTag)) {
</del><ins>+ } else if (hasLocalName(noembedTag)) {
</ins><span class="cx"> Frame* frame = document().frame();
</span><span class="cx"> if (frame && frame->loader().subframeLoader().allowPlugins(NotAboutToInstantiatePlugin))
</span><span class="cx"> return false;
</span><span class="lines">@@ -813,7 +805,7 @@
</span><span class="cx">
</span><span class="cx"> RenderPtr<RenderElement> HTMLElement::createElementRenderer(PassRef<RenderStyle> style)
</span><span class="cx"> {
</span><del>- if (hasTagName(wbrTag))
</del><ins>+ if (hasLocalName(wbrTag))
</ins><span class="cx"> return createRenderer<RenderLineBreak>(*this, std::move(style));
</span><span class="cx"> return RenderElement::createFor(*this, std::move(style));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.h (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.h        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/html/HTMLElement.h        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -99,8 +99,6 @@
</span><span class="cx"> virtual bool isLabelable() const { return false; }
</span><span class="cx"> virtual FormNamedItem* asFormNamedItem() { return 0; }
</span><span class="cx">
</span><del>- bool hasTagName(const HTMLQualifiedName& name) const { return hasLocalName(name.localName()); }
-
</del><span class="cx"> protected:
</span><span class="cx"> HTMLElement(const QualifiedName& tagName, Document&, ConstructionType);
</span><span class="cx">
</span><span class="lines">@@ -153,11 +151,6 @@
</span><span class="cx">
</span><span class="cx"> NODE_TYPE_CASTS(HTMLElement)
</span><span class="cx">
</span><del>-inline bool Node::hasTagName(const HTMLQualifiedName& name) const
-{
- return isHTMLElement() && toHTMLElement(*this).hasTagName(name);
-}
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><span class="cx"> #include "HTMLElementTypeHelpers.h"
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLObjectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLObjectElement.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLObjectElement.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/html/HTMLObjectElement.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -397,7 +397,7 @@
</span><span class="cx"> {
</span><span class="cx"> DEFINE_STATIC_LOCAL(HashSet<AtomicStringImpl*>, tagList, ());
</span><span class="cx"> if (tagList.isEmpty()) {
</span><del>- auto* tags = HTMLNames::getHTMLTags();
</del><ins>+ const QualifiedName* const * tags = HTMLNames::getHTMLTags();
</ins><span class="cx"> for (size_t i = 0; i < HTMLNames::HTMLTagsCount; i++) {
</span><span class="cx"> if (*tags[i] == bgsoundTag
</span><span class="cx"> || *tags[i] == commandTag
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/html/HTMLSelectElement.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -220,7 +220,7 @@
</span><span class="cx">
</span><span class="cx"> void HTMLSelectElement::add(HTMLElement* element, HTMLElement* before, ExceptionCode& ec)
</span><span class="cx"> {
</span><del>- if (!element || !(isHTMLOptionElement(*element) || element->hasTagName(hrTag)))
</del><ins>+ if (!element || !(element->hasLocalName(optionTag) || element->hasLocalName(hrTag)))
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> // Make sure the element is ref'd and deref'd so we don't leak it.
</span><span class="lines">@@ -249,14 +249,15 @@
</span><span class="cx">
</span><span class="cx"> String HTMLSelectElement::value() const
</span><span class="cx"> {
</span><del>- for (auto* item : listItems()) {
- if (isHTMLOptionElement(*item)) {
- HTMLOptionElement& option = toHTMLOptionElement(*item);
- if (option.selected())
- return option.value();
</del><ins>+ const Vector<HTMLElement*>& items = listItems();
+ for (unsigned i = 0; i < items.size(); i++) {
+ if (items[i]->hasLocalName(optionTag)) {
+ HTMLOptionElement* option = toHTMLOptionElement(items[i]);
+ if (option->selected())
+ return option->value();
</ins><span class="cx"> }
</span><span class="cx"> }
</span><del>- return emptyString();
</del><ins>+ return "";
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void HTMLSelectElement::setValue(const String &value)
</span><span class="lines">@@ -268,14 +269,15 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Find the option with value() matching the given parameter and make it the current selection.
</span><ins>+ const Vector<HTMLElement*>& items = listItems();
</ins><span class="cx"> unsigned optionIndex = 0;
</span><del>- for (auto* item : listItems()) {
- if (isHTMLOptionElement(*item)) {
- if (toHTMLOptionElement(*item).value() == value) {
</del><ins>+ for (unsigned i = 0; i < items.size(); i++) {
+ if (items[i]->hasLocalName(optionTag)) {
+ if (toHTMLOptionElement(items[i])->value() == value) {
</ins><span class="cx"> setSelectedIndex(optionIndex);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- ++optionIndex;
</del><ins>+ optionIndex++;
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -482,16 +484,18 @@
</span><span class="cx"> // of elements that we intend to remove then attempt to remove them one at a time.
</span><span class="cx"> Vector<RefPtr<Element>> itemsToRemove;
</span><span class="cx"> size_t optionIndex = 0;
</span><del>- for (auto& item : items) {
- if (isHTMLOptionElement(*item) && optionIndex++ >= newLen) {
</del><ins>+ for (size_t i = 0; i < items.size(); ++i) {
+ Element* item = items[i];
+ if (item->hasLocalName(optionTag) && optionIndex++ >= newLen) {
</ins><span class="cx"> ASSERT(item->parentNode());
</span><span class="cx"> itemsToRemove.append(item);
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- for (auto& item : itemsToRemove) {
</del><ins>+ for (size_t i = 0; i < itemsToRemove.size(); ++i) {
+ Element* item = itemsToRemove[i].get();
</ins><span class="cx"> if (item->parentNode())
</span><del>- item->parentNode()->removeChild(item.get(), ec);
</del><ins>+ item->parentNode()->removeChild(item, ec);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> setNeedsValidityCheck();
</span><span class="lines">@@ -993,7 +997,7 @@
</span><span class="cx"> const Vector<HTMLElement*>& items = listItems();
</span><span class="cx"> size_t loopEndIndex = std::min(items.size(), listIndexEnd);
</span><span class="cx"> for (size_t i = listIndexStart; i < loopEndIndex; ++i) {
</span><del>- if (!isHTMLOptionElement(items[i]))
</del><ins>+ if (!items[i]->hasLocalName(optionTag))
</ins><span class="cx"> continue;
</span><span class="cx"> if (toHTMLOptionElement(items[i])->value() == value)
</span><span class="cx"> return i;
</span><span class="lines">@@ -1011,7 +1015,7 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> for (size_t i = 0; i < itemsSize; ++i) {
</span><del>- if (!isHTMLOptionElement(items[i]))
</del><ins>+ if (!items[i]->hasLocalName(optionTag))
</ins><span class="cx"> continue;
</span><span class="cx"> toHTMLOptionElement(items[i])->setSelectedState(false);
</span><span class="cx"> }
</span><span class="lines">@@ -1491,9 +1495,9 @@
</span><span class="cx"> } else if (m_multiple && keyCode == ' ' && m_allowsNonContiguousSelection) {
</span><span class="cx"> // Use space to toggle selection change.
</span><span class="cx"> m_activeSelectionState = !m_activeSelectionState;
</span><del>- ASSERT(m_activeSelectionEndIndex >= 0);
- ASSERT(m_activeSelectionEndIndex < static_cast<int>(listItems.size()));
- ASSERT(isHTMLOptionElement(*listItems[m_activeSelectionEndIndex]));
</del><ins>+ ASSERT(m_activeSelectionEndIndex >= 0
+ && m_activeSelectionEndIndex < static_cast<int>(listItems.size())
+ && listItems[m_activeSelectionEndIndex]->hasTagName(optionTag));
</ins><span class="cx"> updateSelectedState(m_activeSelectionEndIndex, true /*multi*/, false /*shift*/);
</span><span class="cx"> listBoxOnChange();
</span><span class="cx"> event->setDefaultHandled();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableColElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableColElement.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableColElement.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/html/HTMLTableColElement.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -84,11 +84,11 @@
</span><span class="cx">
</span><span class="cx"> const StyleProperties* HTMLTableColElement::additionalPresentationAttributeStyle()
</span><span class="cx"> {
</span><del>- if (!hasTagName(colgroupTag))
- return nullptr;
</del><ins>+ if (!hasLocalName(colgroupTag))
+ return 0;
</ins><span class="cx"> if (HTMLTableElement* table = findParentTable())
</span><span class="cx"> return table->additionalGroupStyle(false);
</span><del>- return nullptr;
</del><ins>+ return 0;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void HTMLTableColElement::setSpan(int n)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableRowsCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -54,11 +54,12 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline bool isInSection(HTMLTableRowElement& row, const HTMLQualifiedName& sectionTag)
</del><ins>+static inline bool isInSection(HTMLTableRowElement* row, const QualifiedName& sectionTag)
</ins><span class="cx"> {
</span><del>- // Because we know that the parent is a table or a section, it's safe to cast it to an HTMLElement
- // giving us access to the faster hasTagName overload from that class.
- return toHTMLElement(row.parentNode())->hasTagName(sectionTag);
</del><ins>+ // Because we know that the parent is a table or a section, all of which are in the HTML
+ // namespace, it's OK to do the faster hasLocalName here instead of the more typical hasTagName,
+ // since we don't need the check for the HTML namespace.
+ return toElement(row->parentNode())->hasLocalName(sectionTag);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> HTMLTableRowElement* HTMLTableRowsCollection::rowAfter(HTMLTableElement* table, HTMLTableRowElement* previous)
</span><span class="lines">@@ -80,7 +81,7 @@
</span><span class="cx"> // If still looking at head sections, find the first row in the next head section.
</span><span class="cx"> if (!previous)
</span><span class="cx"> child = ElementTraversal::firstChild(table);
</span><del>- else if (isInSection(*previous, theadTag))
</del><ins>+ else if (isInSection(previous, theadTag))
</ins><span class="cx"> child = ElementTraversal::nextSibling(previous->parentNode());
</span><span class="cx"> for (; child; child = ElementTraversal::nextSibling(child)) {
</span><span class="cx"> if (child->hasTagName(theadTag)) {
</span><span class="lines">@@ -90,11 +91,11 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // If still looking at top level and bodies, find the next row in top level or the first in the next body section.
</span><del>- if (!previous || isInSection(*previous, theadTag))
</del><ins>+ if (!previous || isInSection(previous, theadTag))
</ins><span class="cx"> child = ElementTraversal::firstChild(table);
</span><span class="cx"> else if (previous->parentNode() == table)
</span><span class="cx"> child = ElementTraversal::nextSibling(previous);
</span><del>- else if (isInSection(*previous, tbodyTag))
</del><ins>+ else if (isInSection(previous, tbodyTag))
</ins><span class="cx"> child = ElementTraversal::nextSibling(previous->parentNode());
</span><span class="cx"> for (; child; child = ElementTraversal::nextSibling(child)) {
</span><span class="cx"> if (isHTMLTableRowElement(child))
</span><span class="lines">@@ -106,7 +107,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Find the first row in the next foot section.
</span><del>- if (!previous || !isInSection(*previous, tfootTag))
</del><ins>+ if (!previous || !isInSection(previous, tfootTag))
</ins><span class="cx"> child = ElementTraversal::firstChild(table);
</span><span class="cx"> else
</span><span class="cx"> child = ElementTraversal::nextSibling(previous->parentNode());
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlparserHTMLConstructionSitecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/parser/HTMLConstructionSite.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/parser/HTMLConstructionSite.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/html/parser/HTMLConstructionSite.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx"> #include "HTMLScriptElement.h"
</span><span class="cx"> #include "HTMLTemplateElement.h"
</span><span class="cx"> #include "NotImplemented.h"
</span><del>-#include "SVGElement.h"
</del><span class="cx"> #include "Text.h"
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlparserHTMLTreeBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx"> #include "XMLNSNames.h"
</span><span class="cx"> #include "XMLNames.h"
</span><span class="cx"> #include <wtf/MainThread.h>
</span><del>-#include <wtf/NeverDestroyed.h>
</del><span class="cx"> #include <wtf/unicode/CharacterNames.h>
</span><span class="cx">
</span><span class="cx"> #if ENABLE(TELEPHONE_NUMBER_DETECTION)
</span><span class="lines">@@ -523,81 +522,91 @@
</span><span class="cx"> m_tree.insertHTMLElement(token);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template <typename TableQualifiedName>
-static HashMap<AtomicString, QualifiedName> createCaseMap(const TableQualifiedName* const names[], unsigned length)
</del><ins>+typedef HashMap<AtomicString, QualifiedName> PrefixedNameToQualifiedNameMap;
+
+static void mapLoweredLocalNameToName(PrefixedNameToQualifiedNameMap* map, const QualifiedName* const names[], size_t length)
</ins><span class="cx"> {
</span><del>- HashMap<AtomicString, QualifiedName> map;
- for (unsigned i = 0; i < length; ++i) {
</del><ins>+ for (size_t i = 0; i < length; ++i) {
</ins><span class="cx"> const QualifiedName& name = *names[i];
</span><span class="cx"> const AtomicString& localName = name.localName();
</span><span class="cx"> AtomicString loweredLocalName = localName.lower();
</span><span class="cx"> if (loweredLocalName != localName)
</span><del>- map.add(loweredLocalName, name);
</del><ins>+ map->add(loweredLocalName, name);
</ins><span class="cx"> }
</span><del>- return map;
</del><span class="cx"> }
</span><span class="cx">
</span><del>-static void adjustSVGTagNameCase(AtomicHTMLToken& token)
</del><ins>+static void adjustSVGTagNameCase(AtomicHTMLToken* token)
</ins><span class="cx"> {
</span><del>- static NeverDestroyed<HashMap<AtomicString, QualifiedName>> map = createCaseMap(SVGNames::getSVGTags(), SVGNames::SVGTagsCount);
- const QualifiedName& casedName = map.get().get(token.name());
</del><ins>+ static PrefixedNameToQualifiedNameMap* caseMap = 0;
+ if (!caseMap) {
+ caseMap = new PrefixedNameToQualifiedNameMap;
+ mapLoweredLocalNameToName(caseMap, SVGNames::getSVGTags(), SVGNames::SVGTagsCount);
+ }
+
+ const QualifiedName& casedName = caseMap->get(token->name());
</ins><span class="cx"> if (casedName.localName().isNull())
</span><span class="cx"> return;
</span><del>- token.setName(casedName.localName());
</del><ins>+ token->setName(casedName.localName());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-static inline void adjustAttributes(HashMap<AtomicString, QualifiedName>& map, AtomicHTMLToken& token)
</del><ins>+template<const QualifiedName* const * getAttrs(), unsigned length>
+static void adjustAttributes(AtomicHTMLToken* token)
</ins><span class="cx"> {
</span><del>- for (auto& attribute : token.attributes()) {
- const QualifiedName& casedName = map.get(attribute.localName());
</del><ins>+ static PrefixedNameToQualifiedNameMap* caseMap = 0;
+ if (!caseMap) {
+ caseMap = new PrefixedNameToQualifiedNameMap;
+ mapLoweredLocalNameToName(caseMap, getAttrs(), length);
+ }
+
+ for (unsigned i = 0; i < token->attributes().size(); ++i) {
+ Attribute& tokenAttribute = token->attributes().at(i);
+ const QualifiedName& casedName = caseMap->get(tokenAttribute.localName());
</ins><span class="cx"> if (!casedName.localName().isNull())
</span><del>- attribute.parserSetName(casedName);
</del><ins>+ tokenAttribute.parserSetName(casedName);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<const QualifiedName* const* attributesTable(), unsigned attributesTableLength>
-static void adjustAttributes(AtomicHTMLToken& token)
</del><ins>+static void adjustSVGAttributes(AtomicHTMLToken* token)
</ins><span class="cx"> {
</span><del>- static NeverDestroyed<HashMap<AtomicString, QualifiedName>> map = createCaseMap(attributesTable(), attributesTableLength);
- adjustAttributes(map, token);
-}
-
-static inline void adjustSVGAttributes(AtomicHTMLToken& token)
-{
</del><span class="cx"> adjustAttributes<SVGNames::getSVGAttrs, SVGNames::SVGAttrsCount>(token);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline void adjustMathMLAttributes(AtomicHTMLToken& token)
</del><ins>+static void adjustMathMLAttributes(AtomicHTMLToken* token)
</ins><span class="cx"> {
</span><span class="cx"> adjustAttributes<MathMLNames::getMathMLAttrs, MathMLNames::MathMLAttrsCount>(token);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void addNamesWithPrefix(HashMap<AtomicString, QualifiedName>& map, const AtomicString& prefix, const QualifiedName* const names[], unsigned length)
</del><ins>+static void addNamesWithPrefix(PrefixedNameToQualifiedNameMap* map, const AtomicString& prefix, const QualifiedName* const names[], size_t length)
</ins><span class="cx"> {
</span><del>- for (unsigned i = 0; i < length; ++i) {
</del><ins>+ for (size_t i = 0; i < length; ++i) {
</ins><span class="cx"> const QualifiedName& name = *names[i];
</span><span class="cx"> const AtomicString& localName = name.localName();
</span><del>- map.add(prefix + ':' + localName, QualifiedName(prefix, localName, name.namespaceURI()));
</del><ins>+ AtomicString prefixColonLocalName = prefix + ':' + localName;
+ QualifiedName nameWithPrefix(prefix, localName, name.namespaceURI());
+ map->add(prefixColonLocalName, nameWithPrefix);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static HashMap<AtomicString, QualifiedName> createForeignAttributesMap()
</del><ins>+static void adjustForeignAttributes(AtomicHTMLToken* token)
</ins><span class="cx"> {
</span><del>- HashMap<AtomicString, QualifiedName> map;
</del><ins>+ static PrefixedNameToQualifiedNameMap* map = 0;
+ if (!map) {
+ map = new PrefixedNameToQualifiedNameMap;
</ins><span class="cx">
</span><del>- addNamesWithPrefix(map, xlinkAtom, XLinkNames::getXLinkAttrs(), XLinkNames::XLinkAttrsCount);
- addNamesWithPrefix(map, xmlAtom, XMLNames::getXMLAttrs(), XMLNames::XMLAttrsCount);
</del><ins>+ addNamesWithPrefix(map, xlinkAtom, XLinkNames::getXLinkAttrs(), XLinkNames::XLinkAttrsCount);
</ins><span class="cx">
</span><del>- map.add(WTF::xmlnsAtom, XMLNSNames::xmlnsAttr);
- map.add("xmlns:xlink", QualifiedName(xmlnsAtom, xlinkAtom, XMLNSNames::xmlnsNamespaceURI));
</del><ins>+ addNamesWithPrefix(map, xmlAtom, XMLNames::getXMLAttrs(), XMLNames::XMLAttrsCount);
</ins><span class="cx">
</span><del>- return map;
-}
</del><ins>+ map->add(WTF::xmlnsAtom, XMLNSNames::xmlnsAttr);
+ map->add("xmlns:xlink", QualifiedName(xmlnsAtom, xlinkAtom, XMLNSNames::xmlnsNamespaceURI));
+ }
</ins><span class="cx">
</span><del>-static void adjustForeignAttributes(AtomicHTMLToken& token)
-{
- static NeverDestroyed<HashMap<AtomicString, QualifiedName>> map = createForeignAttributesMap();
- adjustAttributes(map, token);
</del><ins>+ for (unsigned i = 0; i < token->attributes().size(); ++i) {
+ Attribute& tokenAttribute = token->attributes().at(i);
+ const QualifiedName& name = map->get(tokenAttribute.localName());
+ if (!name.localName().isNull())
+ tokenAttribute.parserSetName(name);
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void HTMLTreeBuilder::processStartTagForInBody(AtomicHTMLToken* token)
</span><span class="lines">@@ -887,15 +896,15 @@
</span><span class="cx"> }
</span><span class="cx"> if (token->name() == MathMLNames::mathTag.localName()) {
</span><span class="cx"> m_tree.reconstructTheActiveFormattingElements();
</span><del>- adjustMathMLAttributes(*token);
- adjustForeignAttributes(*token);
</del><ins>+ adjustMathMLAttributes(token);
+ adjustForeignAttributes(token);
</ins><span class="cx"> m_tree.insertForeignElement(token, MathMLNames::mathmlNamespaceURI);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> if (token->name() == SVGNames::svgTag.localName()) {
</span><span class="cx"> m_tree.reconstructTheActiveFormattingElements();
</span><del>- adjustSVGAttributes(*token);
- adjustForeignAttributes(*token);
</del><ins>+ adjustSVGAttributes(token);
+ adjustForeignAttributes(token);
</ins><span class="cx"> m_tree.insertForeignElement(token, SVGNames::svgNamespaceURI);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -2917,18 +2926,18 @@
</span><span class="cx"> }
</span><span class="cx"> const AtomicString& currentNamespace = m_tree.currentStackItem()->namespaceURI();
</span><span class="cx"> if (currentNamespace == MathMLNames::mathmlNamespaceURI)
</span><del>- adjustMathMLAttributes(*token);
</del><ins>+ adjustMathMLAttributes(token);
</ins><span class="cx"> if (currentNamespace == SVGNames::svgNamespaceURI) {
</span><del>- adjustSVGTagNameCase(*token);
- adjustSVGAttributes(*token);
</del><ins>+ adjustSVGTagNameCase(token);
+ adjustSVGAttributes(token);
</ins><span class="cx"> }
</span><del>- adjustForeignAttributes(*token);
</del><ins>+ adjustForeignAttributes(token);
</ins><span class="cx"> m_tree.insertForeignElement(token, currentNamespace);
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> case HTMLToken::EndTag: {
</span><span class="cx"> if (m_tree.currentStackItem()->namespaceURI() == SVGNames::svgNamespaceURI)
</span><del>- adjustSVGTagNameCase(*token);
</del><ins>+ adjustSVGTagNameCase(token);
</ins><span class="cx">
</span><span class="cx"> if (token->name() == SVGNames::scriptTag && m_tree.currentStackItem()->hasTagName(SVGNames::scriptTag)) {
</span><span class="cx"> if (scriptingContentIsAllowed(m_tree.parserContentPolicy()))
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorStyleSheetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -48,7 +48,6 @@
</span><span class="cx"> #include "InspectorCSSAgent.h"
</span><span class="cx"> #include "InspectorPageAgent.h"
</span><span class="cx"> #include "Node.h"
</span><del>-#include "SVGElement.h"
</del><span class="cx"> #include "SVGNames.h"
</span><span class="cx"> #include "StyleProperties.h"
</span><span class="cx"> #include "StyleResolver.h"
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLElement.h (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLElement.h        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/mathml/MathMLElement.h        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -54,8 +54,6 @@
</span><span class="cx">
</span><span class="cx"> virtual bool isPresentationMathML() const;
</span><span class="cx">
</span><del>- bool hasTagName(const MathMLQualifiedName& name) const { return hasLocalName(name.localName()); }
-
</del><span class="cx"> protected:
</span><span class="cx"> MathMLElement(const QualifiedName& tagName, Document&);
</span><span class="cx">
</span><span class="lines">@@ -65,22 +63,17 @@
</span><span class="cx">
</span><span class="cx"> virtual bool isPresentationAttribute(const QualifiedName&) const override;
</span><span class="cx"> virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStyleProperties&) override;
</span><ins>+private:
</ins><span class="cx">
</span><del>-private:
- virtual void updateSelectedChild() { }
</del><ins>+ virtual void updateSelectedChild() { };
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> void isMathMLElement(const MathMLElement&); // Catch unnecessary runtime check of type known at compile time.
</span><span class="cx"> inline bool isMathMLElement(const Node& node) { return node.isMathMLElement(); }
</span><span class="cx"> NODE_TYPE_CASTS(MathMLElement)
</span><span class="cx">
</span><del>-inline bool Node::hasTagName(const MathMLQualifiedName& name) const
-{
- return isMathMLElement() && toMathMLElement(*this).hasTagName(name);
</del><span class="cx"> }
</span><span class="cx">
</span><del>-}
-
</del><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx">
</span><span class="cx"> #endif // MathMLElement_h
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLInlineContainerElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLInlineContainerElement.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLInlineContainerElement.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/mathml/MathMLInlineContainerElement.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> if (renderer()) {
</span><span class="cx"> if (renderer()->isRenderMathMLRow())
</span><span class="cx"> toRenderMathMLRow(renderer())->updateOperatorProperties();
</span><del>- else if (hasTagName(mathTag) || hasTagName(msqrtTag)) {
</del><ins>+ else if (hasLocalName(mathTag) || hasLocalName(msqrtTag)) {
</ins><span class="cx"> auto childRenderer = renderer()->firstChild();
</span><span class="cx"> if (childRenderer && childRenderer->isRenderMathMLRow())
</span><span class="cx"> toRenderMathMLRow(childRenderer)->updateOperatorProperties();
</span><span class="lines">@@ -71,33 +71,33 @@
</span><span class="cx">
</span><span class="cx"> RenderPtr<RenderElement> MathMLInlineContainerElement::createElementRenderer(PassRef<RenderStyle> style)
</span><span class="cx"> {
</span><del>- if (hasTagName(annotation_xmlTag))
</del><ins>+ if (hasLocalName(annotation_xmlTag))
</ins><span class="cx"> return createRenderer<RenderMathMLRow>(*this, std::move(style));
</span><del>- if (hasTagName(merrorTag) || hasTagName(mphantomTag) || hasTagName(mrowTag) || hasTagName(mstyleTag))
</del><ins>+ if (hasLocalName(merrorTag) || hasLocalName(mphantomTag) || hasLocalName(mrowTag) || hasLocalName(mstyleTag))
</ins><span class="cx"> return createRenderer<RenderMathMLRow>(*this, std::move(style));
</span><del>- if (hasTagName(msubTag))
</del><ins>+ if (hasLocalName(msubTag))
</ins><span class="cx"> return createRenderer<RenderMathMLScripts>(*this, std::move(style));
</span><del>- if (hasTagName(msupTag))
</del><ins>+ if (hasLocalName(msupTag))
</ins><span class="cx"> return createRenderer<RenderMathMLScripts>(*this, std::move(style));
</span><del>- if (hasTagName(msubsupTag))
</del><ins>+ if (hasLocalName(msubsupTag))
</ins><span class="cx"> return createRenderer<RenderMathMLScripts>(*this, std::move(style));
</span><del>- if (hasTagName(mmultiscriptsTag))
</del><ins>+ if (hasLocalName(mmultiscriptsTag))
</ins><span class="cx"> return createRenderer<RenderMathMLScripts>(*this, std::move(style));
</span><del>- if (hasTagName(moverTag))
</del><ins>+ if (hasLocalName(moverTag))
</ins><span class="cx"> return createRenderer<RenderMathMLUnderOver>(*this, std::move(style));
</span><del>- if (hasTagName(munderTag))
</del><ins>+ if (hasLocalName(munderTag))
</ins><span class="cx"> return createRenderer<RenderMathMLUnderOver>(*this, std::move(style));
</span><del>- if (hasTagName(munderoverTag))
</del><ins>+ if (hasLocalName(munderoverTag))
</ins><span class="cx"> return createRenderer<RenderMathMLUnderOver>(*this, std::move(style));
</span><del>- if (hasTagName(mfracTag))
</del><ins>+ if (hasLocalName(mfracTag))
</ins><span class="cx"> return createRenderer<RenderMathMLFraction>(*this, std::move(style));
</span><del>- if (hasTagName(msqrtTag))
</del><ins>+ if (hasLocalName(msqrtTag))
</ins><span class="cx"> return createRenderer<RenderMathMLSquareRoot>(*this, std::move(style));
</span><del>- if (hasTagName(mrootTag))
</del><ins>+ if (hasLocalName(mrootTag))
</ins><span class="cx"> return createRenderer<RenderMathMLRoot>(*this, std::move(style));
</span><del>- if (hasTagName(mfencedTag))
</del><ins>+ if (hasLocalName(mfencedTag))
</ins><span class="cx"> return createRenderer<RenderMathMLFenced>(*this, std::move(style));
</span><del>- if (hasTagName(mtableTag))
</del><ins>+ if (hasLocalName(mtableTag))
</ins><span class="cx"> return createRenderer<RenderMathMLTable>(*this, std::move(style));
</span><span class="cx">
</span><span class="cx"> return createRenderer<RenderMathMLBlock>(*this, std::move(style));
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLSelectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLSelectElement.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLSelectElement.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/mathml/MathMLSelectElement.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx">
</span><span class="cx"> void MathMLSelectElement::attributeChanged(const QualifiedName& name, const AtomicString& oldValue, const AtomicString& newValue, AttributeModificationReason reason)
</span><span class="cx"> {
</span><del>- if (hasTagName(mactionTag) && (name == MathMLNames::actiontypeAttr || name == MathMLNames::selectionAttr))
</del><ins>+ if (hasLocalName(mactionTag) && (name == MathMLNames::actiontypeAttr || name == MathMLNames::selectionAttr))
</ins><span class="cx"> updateSelectedChild();
</span><span class="cx">
</span><span class="cx"> MathMLInlineContainerElement::attributeChanged(name, oldValue, newValue, reason);
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx">
</span><span class="cx"> int MathMLSelectElement::getSelectedActionChildAndIndex(Element*& selectedChild)
</span><span class="cx"> {
</span><del>- ASSERT(hasTagName(mactionTag));
</del><ins>+ ASSERT(hasLocalName(mactionTag));
</ins><span class="cx">
</span><span class="cx"> // We "round up or down to the closest allowable value" of the selection attribute, as suggested by the MathML specification.
</span><span class="cx"> selectedChild = firstElementChild();
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx">
</span><span class="cx"> Element* MathMLSelectElement::getSelectedActionChild()
</span><span class="cx"> {
</span><del>- ASSERT(hasTagName(mactionTag));
</del><ins>+ ASSERT(hasLocalName(mactionTag));
</ins><span class="cx">
</span><span class="cx"> Element* child = firstElementChild();
</span><span class="cx"> if (!child)
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx">
</span><span class="cx"> Element* MathMLSelectElement::getSelectedSemanticsChild()
</span><span class="cx"> {
</span><del>- ASSERT(hasTagName(semanticsTag));
</del><ins>+ ASSERT(hasLocalName(semanticsTag));
</ins><span class="cx">
</span><span class="cx"> Element* child = firstElementChild();
</span><span class="cx"> if (!child)
</span><span class="lines">@@ -143,7 +143,7 @@
</span><span class="cx"> if (!child->isMathMLElement())
</span><span class="cx"> continue;
</span><span class="cx">
</span><del>- if (child->hasTagName(MathMLNames::annotationTag)) {
</del><ins>+ if (child->hasLocalName(MathMLNames::annotationTag)) {
</ins><span class="cx"> // If the <annotation> element has an src attribute then it is a reference to arbitrary binary data and it is not clear whether we can display it. Hence we just ignore the annotation.
</span><span class="cx"> if (child->hasAttribute(MathMLNames::srcAttr))
</span><span class="cx"> continue;
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx"> return child;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (child->hasTagName(MathMLNames::annotation_xmlTag)) {
</del><ins>+ if (child->hasLocalName(MathMLNames::annotation_xmlTag)) {
</ins><span class="cx"> // If the <annotation-xml> element has an src attribute then it is a reference to arbitrary binary data and it is not clear whether we can display it. Hence we just ignore the annotation.
</span><span class="cx"> if (child->hasAttribute(MathMLNames::srcAttr))
</span><span class="cx"> continue;
</span><span class="lines">@@ -175,7 +175,7 @@
</span><span class="cx">
</span><span class="cx"> void MathMLSelectElement::updateSelectedChild()
</span><span class="cx"> {
</span><del>- Element* newSelectedChild = hasTagName(mactionTag) ? getSelectedActionChild() : getSelectedSemanticsChild();
</del><ins>+ Element* newSelectedChild = hasLocalName(mactionTag) ? getSelectedActionChild() : getSelectedSemanticsChild();
</ins><span class="cx">
</span><span class="cx"> if (m_selectedChild == newSelectedChild)
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLTextElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLTextElement.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLTextElement.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/mathml/MathMLTextElement.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -66,11 +66,11 @@
</span><span class="cx">
</span><span class="cx"> RenderPtr<RenderElement> MathMLTextElement::createElementRenderer(PassRef<RenderStyle> style)
</span><span class="cx"> {
</span><del>- if (hasTagName(MathMLNames::moTag))
</del><ins>+ if (hasLocalName(MathMLNames::moTag))
</ins><span class="cx"> return createRenderer<RenderMathMLOperator>(*this, std::move(style));
</span><del>- if (hasTagName(MathMLNames::miTag))
</del><ins>+ if (hasLocalName(MathMLNames::miTag))
</ins><span class="cx"> return createRenderer<RenderMathMLToken>(*this, std::move(style));
</span><del>- if (hasTagName(MathMLNames::mspaceTag))
</del><ins>+ if (hasLocalName(MathMLNames::mspaceTag))
</ins><span class="cx"> return createRenderer<RenderMathMLSpace>(*this, std::move(style));
</span><span class="cx">
</span><span class="cx"> return MathMLElement::createElementRenderer(std::move(style));
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx">
</span><span class="cx"> bool MathMLTextElement::childShouldCreateRenderer(const Node& child) const
</span><span class="cx"> {
</span><del>- return !hasTagName(mspaceTag) && child.isTextNode();
</del><ins>+ return !hasLocalName(mspaceTag) && child.isTextNode();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacHTMLConvertermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/HTMLConverter.mm (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/HTMLConverter.mm        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/platform/mac/HTMLConverter.mm        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx"> #import "Font.h"
</span><span class="cx"> #import "Frame.h"
</span><span class="cx"> #import "FrameLoader.h"
</span><del>-#import "HTMLElement.h"
</del><span class="cx"> #import "HTMLNames.h"
</span><span class="cx"> #import "HTMLParserIdioms.h"
</span><span class="cx"> #import "LoaderNSURLExtras.h"
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #include "Editor.h"
</span><span class="cx"> #include "FloatingObjects.h"
</span><span class="cx"> #include "Frame.h"
</span><del>-#include "HTMLElement.h"
</del><span class="cx"> #include "HitTestLocation.h"
</span><span class="cx"> #include "InlineTextBox.h"
</span><span class="cx"> #include "LayoutRepainter.h"
</span><span class="lines">@@ -47,6 +46,10 @@
</span><span class="cx"> #include "ShapeInsideInfo.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#if ENABLE(IOS_TEXT_AUTOSIZING)
+#include "HTMLElement.h"
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="cx"> bool RenderBlock::s_canPropagateFloatIntoSibling = false;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxModelObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -755,7 +755,7 @@
</span><span class="cx"> HTMLElement* body = document().body();
</span><span class="cx"> if (body) {
</span><span class="cx"> // Can't scroll a frameset document anyway.
</span><del>- isOpaqueRoot = body->hasTagName(framesetTag);
</del><ins>+ isOpaqueRoot = body->hasLocalName(framesetTag);
</ins><span class="cx"> } else {
</span><span class="cx"> // SVG documents and XML documents with SVG root nodes are transparent.
</span><span class="cx"> isOpaqueRoot = !document().hasSVGRootNode();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderElement.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderElement.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/rendering/RenderElement.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -1084,7 +1084,7 @@
</span><span class="cx"> // anonymous blocks created by inline <body> tags etc. We can locate the <body>
</span><span class="cx"> // render object very easily via the DOM.
</span><span class="cx"> if (auto body = document().body()) {
</span><del>- if (body->hasTagName(HTMLNames::bodyTag)) {
</del><ins>+ if (body->hasLocalName(HTMLNames::bodyTag)) {
</ins><span class="cx"> if (auto renderer = body->renderer())
</span><span class="cx"> return *renderer;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerBackingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -1745,7 +1745,7 @@
</span><span class="cx">
</span><span class="cx"> // Now look at the body's renderer.
</span><span class="cx"> HTMLElement* body = renderer().document().body();
</span><del>- RenderObject* bodyObject = (body && body->hasTagName(bodyTag)) ? body->renderer() : 0;
</del><ins>+ RenderObject* bodyObject = (body && body->hasLocalName(bodyTag)) ? body->renderer() : 0;
</ins><span class="cx"> if (!bodyObject)
</span><span class="cx"> return false;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderReplacedcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderReplaced.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderReplaced.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/rendering/RenderReplaced.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #include "FloatRoundedRect.h"
</span><span class="cx"> #include "Frame.h"
</span><span class="cx"> #include "GraphicsContext.h"
</span><del>-#include "HTMLElement.h"
</del><span class="cx"> #include "InlineElementBox.h"
</span><span class="cx"> #include "LayoutRepainter.h"
</span><span class="cx"> #include "Page.h"
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLScriptscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx">
</span><span class="cx"> #include "RenderMathMLScripts.h"
</span><span class="cx">
</span><del>-#include "MathMLElement.h"
</del><ins>+#include "MathMLNames.h"
</ins><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="lines">@@ -61,14 +61,14 @@
</span><span class="cx"> , m_baseWrapper(0)
</span><span class="cx"> {
</span><span class="cx"> // Determine what kind of sub/sup expression we have by element name
</span><del>- if (element.hasTagName(MathMLNames::msubTag))
</del><ins>+ if (element.hasLocalName(MathMLNames::msubTag))
</ins><span class="cx"> m_kind = Sub;
</span><del>- else if (element.hasTagName(MathMLNames::msupTag))
</del><ins>+ else if (element.hasLocalName(MathMLNames::msupTag))
</ins><span class="cx"> m_kind = Super;
</span><del>- else if (element.hasTagName(MathMLNames::msubsupTag))
</del><ins>+ else if (element.hasLocalName(MathMLNames::msubsupTag))
</ins><span class="cx"> m_kind = SubSup;
</span><span class="cx"> else {
</span><del>- ASSERT(element.hasTagName(MathMLNames::mmultiscriptsTag));
</del><ins>+ ASSERT(element.hasLocalName(MathMLNames::mmultiscriptsTag));
</ins><span class="cx"> m_kind = Multiscripts;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLUnderOvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">
</span><span class="cx"> #include "RenderMathMLUnderOver.h"
</span><span class="cx">
</span><del>-#include "MathMLElement.h"
</del><ins>+#include "MathMLNames.h"
</ins><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="lines">@@ -39,12 +39,12 @@
</span><span class="cx"> : RenderMathMLBlock(element, std::move(style))
</span><span class="cx"> {
</span><span class="cx"> // Determine what kind of under/over expression we have by element name
</span><del>- if (element.hasTagName(MathMLNames::munderTag))
</del><ins>+ if (element.hasLocalName(MathMLNames::munderTag))
</ins><span class="cx"> m_kind = Under;
</span><del>- else if (element.hasTagName(MathMLNames::moverTag))
</del><ins>+ else if (element.hasLocalName(MathMLNames::moverTag))
</ins><span class="cx"> m_kind = Over;
</span><span class="cx"> else {
</span><del>- ASSERT(element.hasTagName(MathMLNames::munderoverTag));
</del><ins>+ ASSERT(element.hasLocalName(MathMLNames::munderoverTag));
</ins><span class="cx"> m_kind = UnderOver;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.h (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.h        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/svg/SVGElement.h        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -140,8 +140,6 @@
</span><span class="cx"> virtual bool shouldMoveToFlowThread(const RenderStyle&) const override;
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>- bool hasTagName(const SVGQualifiedName& name) const { return hasLocalName(name.localName()); }
-
</del><span class="cx"> protected:
</span><span class="cx"> SVGElement(const QualifiedName&, Document&);
</span><span class="cx"> virtual ~SVGElement();
</span><span class="lines">@@ -215,11 +213,6 @@
</span><span class="cx">
</span><span class="cx"> NODE_TYPE_CASTS(SVGElement)
</span><span class="cx">
</span><del>-inline bool Node::hasTagName(const SVGQualifiedName& name) const
-{
- return isSVGElement() && toSVGElement(*this).hasTagName(name);
</del><span class="cx"> }
</span><span class="cx">
</span><del>-}
-
</del><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFontFaceSrcElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFontFaceSrcElement.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFontFaceSrcElement.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/svg/SVGFontFaceSrcElement.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx"> void SVGFontFaceSrcElement::childrenChanged(const ChildChange& change)
</span><span class="cx"> {
</span><span class="cx"> SVGElement::childrenChanged(change);
</span><del>- if (parentNode() && isSVGFontFaceElement(parentNode()))
</del><ins>+ if (parentNode() && parentNode()->hasTagName(font_faceTag))
</ins><span class="cx"> toSVGFontFaceElement(parentNode())->rebuildFontFace();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGUseElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGUseElement.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGUseElement.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/svg/SVGUseElement.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -522,15 +522,15 @@
</span><span class="cx"> return createRenderer<RenderSVGTransformableContainer>(*this, std::move(style));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static bool isDirectReference(const SVGElement& element)
</del><ins>+static bool isDirectReference(const Node* node)
</ins><span class="cx"> {
</span><del>- return element.hasTagName(SVGNames::pathTag)
- || element.hasTagName(SVGNames::rectTag)
- || element.hasTagName(SVGNames::circleTag)
- || element.hasTagName(SVGNames::ellipseTag)
- || element.hasTagName(SVGNames::polygonTag)
- || element.hasTagName(SVGNames::polylineTag)
- || element.hasTagName(SVGNames::textTag);
</del><ins>+ return node->hasTagName(SVGNames::pathTag)
+ || node->hasTagName(SVGNames::rectTag)
+ || node->hasTagName(SVGNames::circleTag)
+ || node->hasTagName(SVGNames::ellipseTag)
+ || node->hasTagName(SVGNames::polygonTag)
+ || node->hasTagName(SVGNames::polylineTag)
+ || node->hasTagName(SVGNames::textTag);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void SVGUseElement::toClipPath(Path& path)
</span><span class="lines">@@ -541,12 +541,12 @@
</span><span class="cx"> if (!n)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- if (n->isSVGElement() && toSVGElement(*n).isSVGGraphicsElement()) {
- if (!isDirectReference(toSVGElement(*n))) {
</del><ins>+ if (n->isSVGElement() && toSVGElement(n)->isSVGGraphicsElement()) {
+ if (!isDirectReference(n))
</ins><span class="cx"> // Spec: Indirect references are an error (14.3.5)
</span><span class="cx"> document().accessSVGExtensions()->reportError("Not allowed to use indirect reference in <clip-path>");
</span><del>- } else {
- toSVGGraphicsElement(*n).toClipPath(path);
</del><ins>+ else {
+ toSVGGraphicsElement(n)->toClipPath(path);
</ins><span class="cx"> // FIXME: Avoid manual resolution of x/y here. Its potentially harmful.
</span><span class="cx"> SVGLengthContext lengthContext(this);
</span><span class="cx"> path.translate(FloatSize(x().value(lengthContext), y().value(lengthContext)));
</span><span class="lines">@@ -557,17 +557,14 @@
</span><span class="cx">
</span><span class="cx"> RenderElement* SVGUseElement::rendererClipChild() const
</span><span class="cx"> {
</span><del>- if (!m_targetElementInstance)
- return nullptr;
</del><ins>+ Node* n = m_targetElementInstance ? m_targetElementInstance->shadowTreeElement() : 0;
+ if (!n)
+ return 0;
</ins><span class="cx">
</span><del>- auto* element = m_targetElementInstance->shadowTreeElement();
- if (!element)
- return nullptr;
</del><ins>+ if (n->isSVGElement() && isDirectReference(n))
+ return toSVGElement(n)->renderer();
</ins><span class="cx">
</span><del>- if (!isDirectReference(*element))
- return nullptr;
-
- return element->renderer();
</del><ins>+ return 0;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void SVGUseElement::buildInstanceTree(SVGElement* target, SVGElementInstance* targetInstance, bool& foundProblem, bool foundUse)
</span></span></pre></div>
<a id="trunkSourceWebCorexmlparserXMLDocumentParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/parser/XMLDocumentParser.cpp (165567 => 165568)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/parser/XMLDocumentParser.cpp        2014-03-13 21:50:51 UTC (rev 165567)
+++ trunk/Source/WebCore/xml/parser/XMLDocumentParser.cpp        2014-03-13 21:53:46 UTC (rev 165568)
</span><span class="lines">@@ -275,16 +275,17 @@
</span><span class="cx"> // FIXME: We need to implement the HTML5 XML Fragment parsing algorithm:
</span><span class="cx"> // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-xhtml-syntax.html#xml-fragment-parsing-algorithm
</span><span class="cx"> // For now we have a hack for script/style innerHTML support:
</span><del>- if (contextElement && (contextElement->hasLocalName(HTMLNames::scriptTag.localName()) || contextElement->hasLocalName(HTMLNames::styleTag.localName()))) {
</del><ins>+ if (contextElement && (contextElement->hasLocalName(HTMLNames::scriptTag) || contextElement->hasLocalName(HTMLNames::styleTag))) {
</ins><span class="cx"> fragment.parserAppendChild(fragment.document().createTextNode(chunk));
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RefPtr<XMLDocumentParser> parser = XMLDocumentParser::create(fragment, contextElement, parserContentPolicy);
</span><span class="cx"> bool wellFormed = parser->appendFragmentSource(chunk);
</span><del>- // Do not call finish(). The finish() and doEnd() implementations touch the main document and loader and can cause crashes in the fragment case.
</del><ins>+ // Do not call finish(). Current finish() and doEnd() implementations touch the main Document/loader
+ // and can cause crashes in the fragment case.
</ins><span class="cx"> parser->detach(); // Allows ~DocumentParser to assert it was detached before destruction.
</span><del>- return wellFormed; // appendFragmentSource()'s wellFormed is more permissive than Document::wellFormed().
</del><ins>+ return wellFormed; // appendFragmentSource()'s wellFormed is more permissive than wellFormed().
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre>
</div>
</div>
</body>
</html>