<!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>[173684] 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/173684">173684</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2014-09-16 19:00:40 -0700 (Tue, 16 Sep 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Rename Node::childNode(index) to traverseToChildAt(index) for clarity
https://bugs.webkit.org/show_bug.cgi?id=136825
Reviewed by Benjamin Poulain.
Rename Node::childNode(index) to traverseToChildAt(index) to make it
clearer that the method is actually traversing the children and thus
potentially expensive.
This patch also avoids calling traverseToChildAt() in a couple of
easily avoidable cases.
No new tests, no behavior change.
* WebCore.exp.in:
* WebCore.order:
Remove symbol for ContainerNode::childNode() as it was renamed. It does
not seem we need to expose ContainerNode::traverseToChildAt().
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::stringForVisiblePositionRange):
(WebCore::AccessibilityObject::lengthForVisiblePositionRange):
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper arrayOfTextForTextMarkers:attributed:]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:]):
Mechanical renaming.
* dom/ContainerNode.cpp:
(WebCore::ContainerNode::traverseToChildAt):
(WebCore::ContainerNode::childNode): Deleted.
* dom/ContainerNode.h:
(WebCore::Node::traverseToChildAt):
(WebCore::Node::childNode): Deleted.
* dom/Node.h:
- Rename Node / ContainerNode's childNode(index) to
traverseToChildAt(index) to make it clear that it is actually
traversing the children and thus potentially expensive.
- Clean up the implementation of ContainerNode::traverseToChildAt()
to avoid the use of an extra |i| variable.
* dom/Position.cpp:
(WebCore::Position::computeNodeBeforePosition):
Avoid calling traverseToChildAt(-1). Relying on the unsigned argument
wrapping and the method returning null in this case is a bit obscure
and causes unnecessary traversal of all children.
(WebCore::Position::computeNodeAfterPosition):
(WebCore::Position::previous):
(WebCore::Position::next):
Mechanical renaming and update variable names to stop using
abbreviations as per coding style.
* dom/PositionIterator.h:
(WebCore::PositionIterator::PositionIterator):
* dom/Range.cpp:
(WebCore::Range::insertNode):
(WebCore::Range::checkNodeWOffset):
(WebCore::Range::firstNode):
(WebCore::Range::pastLastNode):
* dom/RangeBoundaryPoint.h:
(WebCore::RangeBoundaryPoint::set):
* editing/BreakBlockquoteCommand.cpp:
(WebCore::BreakBlockquoteCommand::doApply):
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::removeChildrenInRange):
* editing/DeleteSelectionCommand.cpp:
(WebCore::DeleteSelectionCommand::handleGeneralDelete):
* editing/InsertParagraphSeparatorCommand.cpp:
(WebCore::InsertParagraphSeparatorCommand::doApply):
* editing/TextIterator.cpp:
(WebCore::nextInPreOrderCrossingShadowBoundaries):
(WebCore::TextIterator::node):
(WebCore::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator):
* editing/VisibleUnits.cpp:
(WebCore::nextLinePosition):
* editing/cocoa/HTMLConverter.mm:
(WebCore::editingAttributedStringFromRange):
Mechanical renaming.
* inspector/DOMPatchSupport.cpp:
(WebCore::DOMPatchSupport::innerPatchChildren):
Iterate over children while incrementing the |i| variable to avoid
calling traverseToChildAt(index) repeatedly and thus traversing the
children from the beginning every time.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebCoreWebCoreorder">trunk/Source/WebCore/WebCore.order</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityiosWebAccessibilityObjectWrapperIOSmm">trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm</a></li>
<li><a href="#trunkSourceWebCoreaccessibilitymacWebAccessibilityObjectWrapperMacmm">trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm</a></li>
<li><a href="#trunkSourceWebCoredomContainerNodecpp">trunk/Source/WebCore/dom/ContainerNode.cpp</a></li>
<li><a href="#trunkSourceWebCoredomContainerNodeh">trunk/Source/WebCore/dom/ContainerNode.h</a></li>
<li><a href="#trunkSourceWebCoredomNodeh">trunk/Source/WebCore/dom/Node.h</a></li>
<li><a href="#trunkSourceWebCoredomPositioncpp">trunk/Source/WebCore/dom/Position.cpp</a></li>
<li><a href="#trunkSourceWebCoredomPositionIteratorh">trunk/Source/WebCore/dom/PositionIterator.h</a></li>
<li><a href="#trunkSourceWebCoredomRangecpp">trunk/Source/WebCore/dom/Range.cpp</a></li>
<li><a href="#trunkSourceWebCoredomRangeBoundaryPointh">trunk/Source/WebCore/dom/RangeBoundaryPoint.h</a></li>
<li><a href="#trunkSourceWebCoreeditingBreakBlockquoteCommandcpp">trunk/Source/WebCore/editing/BreakBlockquoteCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingCompositeEditCommandcpp">trunk/Source/WebCore/editing/CompositeEditCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingDeleteSelectionCommandcpp">trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingInsertParagraphSeparatorCommandcpp">trunk/Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingTextIteratorcpp">trunk/Source/WebCore/editing/TextIterator.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingVisibleUnitscpp">trunk/Source/WebCore/editing/VisibleUnits.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingcocoaHTMLConvertermm">trunk/Source/WebCore/editing/cocoa/HTMLConverter.mm</a></li>
<li><a href="#trunkSourceWebCoreinspectorDOMPatchSupportcpp">trunk/Source/WebCore/inspector/DOMPatchSupport.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/ChangeLog        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -1,3 +1,91 @@
</span><ins>+2014-09-16 Chris Dumez <cdumez@apple.com>
+
+ Rename Node::childNode(index) to traverseToChildAt(index) for clarity
+ https://bugs.webkit.org/show_bug.cgi?id=136825
+
+ Reviewed by Benjamin Poulain.
+
+ Rename Node::childNode(index) to traverseToChildAt(index) to make it
+ clearer that the method is actually traversing the children and thus
+ potentially expensive.
+
+ This patch also avoids calling traverseToChildAt() in a couple of
+ easily avoidable cases.
+
+ No new tests, no behavior change.
+
+ * WebCore.exp.in:
+ * WebCore.order:
+ Remove symbol for ContainerNode::childNode() as it was renamed. It does
+ not seem we need to expose ContainerNode::traverseToChildAt().
+
+ * accessibility/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::stringForVisiblePositionRange):
+ (WebCore::AccessibilityObject::lengthForVisiblePositionRange):
+ * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+ (-[WebAccessibilityObjectWrapper arrayOfTextForTextMarkers:attributed:]):
+ * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+ (-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:]):
+ Mechanical renaming.
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::traverseToChildAt):
+ (WebCore::ContainerNode::childNode): Deleted.
+ * dom/ContainerNode.h:
+ (WebCore::Node::traverseToChildAt):
+ (WebCore::Node::childNode): Deleted.
+ * dom/Node.h:
+ - Rename Node / ContainerNode's childNode(index) to
+ traverseToChildAt(index) to make it clear that it is actually
+ traversing the children and thus potentially expensive.
+ - Clean up the implementation of ContainerNode::traverseToChildAt()
+ to avoid the use of an extra |i| variable.
+
+ * dom/Position.cpp:
+ (WebCore::Position::computeNodeBeforePosition):
+ Avoid calling traverseToChildAt(-1). Relying on the unsigned argument
+ wrapping and the method returning null in this case is a bit obscure
+ and causes unnecessary traversal of all children.
+
+ (WebCore::Position::computeNodeAfterPosition):
+ (WebCore::Position::previous):
+ (WebCore::Position::next):
+ Mechanical renaming and update variable names to stop using
+ abbreviations as per coding style.
+
+ * dom/PositionIterator.h:
+ (WebCore::PositionIterator::PositionIterator):
+ * dom/Range.cpp:
+ (WebCore::Range::insertNode):
+ (WebCore::Range::checkNodeWOffset):
+ (WebCore::Range::firstNode):
+ (WebCore::Range::pastLastNode):
+ * dom/RangeBoundaryPoint.h:
+ (WebCore::RangeBoundaryPoint::set):
+ * editing/BreakBlockquoteCommand.cpp:
+ (WebCore::BreakBlockquoteCommand::doApply):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::removeChildrenInRange):
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::DeleteSelectionCommand::handleGeneralDelete):
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+ * editing/TextIterator.cpp:
+ (WebCore::nextInPreOrderCrossingShadowBoundaries):
+ (WebCore::TextIterator::node):
+ (WebCore::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator):
+ * editing/VisibleUnits.cpp:
+ (WebCore::nextLinePosition):
+ * editing/cocoa/HTMLConverter.mm:
+ (WebCore::editingAttributedStringFromRange):
+ Mechanical renaming.
+
+ * inspector/DOMPatchSupport.cpp:
+ (WebCore::DOMPatchSupport::innerPatchChildren):
+ Iterate over children while incrementing the |i| variable to avoid
+ calling traverseToChildAt(index) repeatedly and thus traversing the
+ children from the beginning every time.
+
</ins><span class="cx"> 2014-09-16 Joseph Pecoraro <pecoraro@apple.com>
</span><span class="cx">
</span><span class="cx"> Web Inspector: Reduce a bit of churn setting initial remote inspection state
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/WebCore.exp.in        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -1626,7 +1626,6 @@
</span><span class="cx"> __ZNK7WebCore12TextIterator4nodeEv
</span><span class="cx"> __ZNK7WebCore12TextIterator5rangeEv
</span><span class="cx"> __ZNK7WebCore13ContainerNode15countChildNodesEv
</span><del>-__ZNK7WebCore13ContainerNode9childNodeEj
</del><span class="cx"> __ZNK7WebCore13GraphicsLayer18accumulatedOpacityEv
</span><span class="cx"> __ZNK7WebCore13GraphicsLayer18getDebugBorderInfoERNS_5ColorERf
</span><span class="cx"> __ZNK7WebCore13GraphicsLayer26backingStoreMemoryEstimateEv
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreorder"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.order (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.order        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/WebCore.order        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -8133,7 +8133,6 @@
</span><span class="cx"> __ZN7WebCore5Range14setStartBeforeEPNS_4NodeERi
</span><span class="cx"> __ZNK7WebCore4Node16computeNodeIndexEv
</span><span class="cx"> __ZN7WebCore5Range8setStartEN3WTF10PassRefPtrINS_4NodeEEEiRi
</span><del>-__ZNK7WebCore13ContainerNode9childNodeEj
</del><span class="cx"> __ZN7WebCoreL30checkForDifferentRootContainerERKNS_18RangeBoundaryPointES2_
</span><span class="cx"> __ZN7WebCore5Range21compareBoundaryPointsEPNS_4NodeEiS2_iRi
</span><span class="cx"> __ZN7WebCore5Range8collapseEbRi
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -1139,7 +1139,7 @@
</span><span class="cx"> Node* node = it.range()->startContainer();
</span><span class="cx"> ASSERT(node == it.range()->endContainer());
</span><span class="cx"> int offset = it.range()->startOffset();
</span><del>- if (replacedNodeNeedsCharacter(node->childNode(offset)))
</del><ins>+ if (replacedNodeNeedsCharacter(node->traverseToChildAt(offset)))
</ins><span class="cx"> builder.append(objectReplacementCharacter);
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -1166,7 +1166,7 @@
</span><span class="cx"> ASSERT(node == it.range()->endContainer(exception));
</span><span class="cx"> int offset = it.range()->startOffset(exception);
</span><span class="cx">
</span><del>- if (replacedNodeNeedsCharacter(node->childNode(offset)))
</del><ins>+ if (replacedNodeNeedsCharacter(node->traverseToChildAt(offset)))
</ins><span class="cx"> length++;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityiosWebAccessibilityObjectWrapperIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -1844,7 +1844,7 @@
</span><span class="cx"> [attrString release];
</span><span class="cx"> }
</span><span class="cx"> } else {
</span><del>- Node* replacedNode = node->childNode(offset);
</del><ins>+ Node* replacedNode = node->traverseToChildAt(offset);
</ins><span class="cx"> if (replacedNode) {
</span><span class="cx"> AccessibilityObject* obj = m_object->axObjectCache()->getOrCreate(replacedNode->renderer());
</span><span class="cx"> if (obj && !obj->accessibilityIsIgnored())
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilitymacWebAccessibilityObjectWrapperMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -1102,7 +1102,7 @@
</span><span class="cx"> AXAttributedStringAppendText(attrString, node, listMarkerText);
</span><span class="cx"> AXAttributedStringAppendText(attrString, node, it.text());
</span><span class="cx"> } else {
</span><del>- Node* replacedNode = node->childNode(offset);
</del><ins>+ Node* replacedNode = node->traverseToChildAt(offset);
</ins><span class="cx"> NSString *attachmentString = nsStringForReplacedNode(replacedNode);
</span><span class="cx"> if (attachmentString) {
</span><span class="cx"> NSRange attrStringRange = NSMakeRange([attrString length], [attachmentString length]);
</span></span></pre></div>
<a id="trunkSourceWebCoredomContainerNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ContainerNode.cpp (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ContainerNode.cpp        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/dom/ContainerNode.cpp        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -939,13 +939,12 @@
</span><span class="cx"> return count;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-Node *ContainerNode::childNode(unsigned index) const
</del><ins>+Node* ContainerNode::traverseToChildAt(unsigned index) const
</ins><span class="cx"> {
</span><del>- unsigned i;
- Node *n = firstChild();
- for (i = 0; n != 0 && i < index; i++)
- n = n->nextSibling();
- return n;
</del><ins>+ Node* child = firstChild();
+ for (; child && index > 0; --index)
+ child = child->nextSibling();
+ return child;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static void dispatchChildInsertionEvents(Node& child)
</span></span></pre></div>
<a id="trunkSourceWebCoredomContainerNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ContainerNode.h (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ContainerNode.h        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/dom/ContainerNode.h        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx"> void setDirectChildNeedsStyleRecalc() { setFlag(DirectChildNeedsStyleRecalcFlag); }
</span><span class="cx">
</span><span class="cx"> WEBCORE_EXPORT unsigned countChildNodes() const;
</span><del>- WEBCORE_EXPORT Node* childNode(unsigned index) const;
</del><ins>+ WEBCORE_EXPORT Node* traverseToChildAt(unsigned) const;
</ins><span class="cx">
</span><span class="cx"> bool insertBefore(PassRefPtr<Node> newChild, Node* refChild, ExceptionCode& = ASSERT_NO_EXCEPTION);
</span><span class="cx"> bool replaceChild(PassRefPtr<Node> newChild, Node* oldChild, ExceptionCode& = ASSERT_NO_EXCEPTION);
</span><span class="lines">@@ -192,11 +192,11 @@
</span><span class="cx"> return toContainerNode(this)->countChildNodes();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline Node* Node::childNode(unsigned index) const
</del><ins>+inline Node* Node::traverseToChildAt(unsigned index) const
</ins><span class="cx"> {
</span><span class="cx"> if (!isContainerNode())
</span><span class="cx"> return 0;
</span><del>- return toContainerNode(this)->childNode(index);
</del><ins>+ return toContainerNode(this)->traverseToChildAt(index);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> inline Node* Node::firstChild() const
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.h (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.h        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/dom/Node.h        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -417,7 +417,7 @@
</span><span class="cx"> bool isDocumentTypeNode() const { return nodeType() == DOCUMENT_TYPE_NODE; }
</span><span class="cx"> virtual bool childTypeAllowed(NodeType) const { return false; }
</span><span class="cx"> unsigned countChildNodes() const;
</span><del>- Node* childNode(unsigned index) const;
</del><ins>+ Node* traverseToChildAt(unsigned) const;
</ins><span class="cx">
</span><span class="cx"> void checkSetPrefix(const AtomicString& prefix, ExceptionCode&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoredomPositioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Position.cpp (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Position.cpp        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/dom/Position.cpp        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -246,7 +246,7 @@
</span><span class="cx"> case PositionIsAfterChildren:
</span><span class="cx"> return m_anchorNode->lastChild();
</span><span class="cx"> case PositionIsOffsetInAnchor:
</span><del>- return m_anchorNode->childNode(m_offset - 1); // -1 converts to childNode((unsigned)-1) and returns null.
</del><ins>+ return m_offset ? m_anchorNode->traverseToChildAt(m_offset - 1) : nullptr;
</ins><span class="cx"> case PositionIsBeforeAnchor:
</span><span class="cx"> return m_anchorNode->previousSibling();
</span><span class="cx"> case PositionIsAfterAnchor:
</span><span class="lines">@@ -267,7 +267,7 @@
</span><span class="cx"> case PositionIsAfterChildren:
</span><span class="cx"> return 0;
</span><span class="cx"> case PositionIsOffsetInAnchor:
</span><del>- return m_anchorNode->childNode(m_offset);
</del><ins>+ return m_anchorNode->traverseToChildAt(m_offset);
</ins><span class="cx"> case PositionIsBeforeAnchor:
</span><span class="cx"> return m_anchorNode.get();
</span><span class="cx"> case PositionIsAfterAnchor:
</span><span class="lines">@@ -298,17 +298,16 @@
</span><span class="cx">
</span><span class="cx"> Position Position::previous(PositionMoveType moveType) const
</span><span class="cx"> {
</span><del>- Node* n = deprecatedNode();
- if (!n)
</del><ins>+ Node* node = deprecatedNode();
+ if (!node)
</ins><span class="cx"> return *this;
</span><span class="cx">
</span><del>- int o = deprecatedEditingOffset();
</del><ins>+ int offset = deprecatedEditingOffset();
</ins><span class="cx"> // FIXME: Negative offsets shouldn't be allowed. We should catch this earlier.
</span><del>- ASSERT(o >= 0);
</del><ins>+ ASSERT(offset >= 0);
</ins><span class="cx">
</span><del>- if (o > 0) {
- Node* child = n->childNode(o - 1);
- if (child)
</del><ins>+ if (offset > 0) {
+ if (Node* child = node->traverseToChildAt(offset - 1))
</ins><span class="cx"> return lastPositionInOrAfterNode(child);
</span><span class="cx">
</span><span class="cx"> // There are two reasons child might be 0:
</span><span class="lines">@@ -318,35 +317,35 @@
</span><span class="cx"> // Going from 1 to 0 is correct.
</span><span class="cx"> switch (moveType) {
</span><span class="cx"> case CodePoint:
</span><del>- return createLegacyEditingPosition(n, o - 1);
</del><ins>+ return createLegacyEditingPosition(node, offset - 1);
</ins><span class="cx"> case Character:
</span><del>- return createLegacyEditingPosition(n, uncheckedPreviousOffset(n, o));
</del><ins>+ return createLegacyEditingPosition(node, uncheckedPreviousOffset(node, offset));
</ins><span class="cx"> case BackwardDeletion:
</span><del>- return createLegacyEditingPosition(n, uncheckedPreviousOffsetForBackwardDeletion(n, o));
</del><ins>+ return createLegacyEditingPosition(node, uncheckedPreviousOffsetForBackwardDeletion(node, offset));
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- ContainerNode* parent = findParent(n);
</del><ins>+ ContainerNode* parent = findParent(node);
</ins><span class="cx"> if (!parent)
</span><span class="cx"> return *this;
</span><span class="cx">
</span><del>- return createLegacyEditingPosition(parent, n->computeNodeIndex());
</del><ins>+ return createLegacyEditingPosition(parent, node->computeNodeIndex());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> Position Position::next(PositionMoveType moveType) const
</span><span class="cx"> {
</span><span class="cx"> ASSERT(moveType != BackwardDeletion);
</span><span class="cx">
</span><del>- Node* n = deprecatedNode();
- if (!n)
</del><ins>+ Node* node = deprecatedNode();
+ if (!node)
</ins><span class="cx"> return *this;
</span><span class="cx">
</span><del>- int o = deprecatedEditingOffset();
</del><ins>+ int offset = deprecatedEditingOffset();
</ins><span class="cx"> // FIXME: Negative offsets shouldn't be allowed. We should catch this earlier.
</span><del>- ASSERT(o >= 0);
</del><ins>+ ASSERT(offset >= 0);
</ins><span class="cx">
</span><del>- Node* child = n->childNode(o);
- if (child || (!n->hasChildNodes() && o < lastOffsetForEditing(n))) {
</del><ins>+ Node* child = node->traverseToChildAt(offset);
+ if (child || (!node->hasChildNodes() && offset < lastOffsetForEditing(node))) {
</ins><span class="cx"> if (child)
</span><span class="cx"> return firstPositionInOrBeforeNode(child);
</span><span class="cx">
</span><span class="lines">@@ -355,14 +354,14 @@
</span><span class="cx"> // Going forward one character at a time is correct.
</span><span class="cx"> // 2) The new offset is a bogus offset like (<br>, 1), and there is no child.
</span><span class="cx"> // Going from 0 to 1 is correct.
</span><del>- return createLegacyEditingPosition(n, (moveType == Character) ? uncheckedNextOffset(n, o) : o + 1);
</del><ins>+ return createLegacyEditingPosition(node, (moveType == Character) ? uncheckedNextOffset(node, offset) : offset + 1);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- ContainerNode* parent = findParent(n);
</del><ins>+ ContainerNode* parent = findParent(node);
</ins><span class="cx"> if (!parent)
</span><span class="cx"> return *this;
</span><span class="cx">
</span><del>- return createLegacyEditingPosition(parent, n->computeNodeIndex() + 1);
</del><ins>+ return createLegacyEditingPosition(parent, node->computeNodeIndex() + 1);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> int Position::uncheckedPreviousOffset(const Node* n, int current)
</span></span></pre></div>
<a id="trunkSourceWebCoredomPositionIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/PositionIterator.h (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/PositionIterator.h        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/dom/PositionIterator.h        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx">
</span><span class="cx"> PositionIterator(const Position& pos)
</span><span class="cx"> : m_anchorNode(pos.anchorNode())
</span><del>- , m_nodeAfterPositionInAnchor(m_anchorNode->childNode(pos.deprecatedEditingOffset()))
</del><ins>+ , m_nodeAfterPositionInAnchor(m_anchorNode->traverseToChildAt(pos.deprecatedEditingOffset()))
</ins><span class="cx"> , m_offsetInAnchor(m_nodeAfterPositionInAnchor ? 0 : pos.deprecatedEditingOffset())
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomRangecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Range.cpp (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Range.cpp        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/dom/Range.cpp        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -1056,7 +1056,7 @@
</span><span class="cx"> container = m_start.container();
</span><span class="cx"> RefPtr<Node> firstInsertedChild = newNodeType == Node::DOCUMENT_FRAGMENT_NODE ? newNode->firstChild() : newNode;
</span><span class="cx"> RefPtr<Node> lastInsertedChild = newNodeType == Node::DOCUMENT_FRAGMENT_NODE ? newNode->lastChild() : newNode;
</span><del>- RefPtr<Node> childAfterInsertedContent = container->childNode(m_start.offset());
</del><ins>+ RefPtr<Node> childAfterInsertedContent = container->traverseToChildAt(m_start.offset());
</ins><span class="cx"> container->insertBefore(newNode.release(), childAfterInsertedContent.get(), ec);
</span><span class="cx"> if (ec)
</span><span class="cx"> return;
</span><span class="lines">@@ -1171,7 +1171,7 @@
</span><span class="cx"> case Node::XPATH_NAMESPACE_NODE: {
</span><span class="cx"> if (!offset)
</span><span class="cx"> return 0;
</span><del>- Node* childBefore = n->childNode(offset - 1);
</del><ins>+ Node* childBefore = n->traverseToChildAt(offset - 1);
</ins><span class="cx"> if (!childBefore)
</span><span class="cx"> ec = INDEX_SIZE_ERR;
</span><span class="cx"> return childBefore;
</span><span class="lines">@@ -1568,7 +1568,7 @@
</span><span class="cx"> return 0;
</span><span class="cx"> if (m_start.container()->offsetInCharacters())
</span><span class="cx"> return m_start.container();
</span><del>- if (Node* child = m_start.container()->childNode(m_start.offset()))
</del><ins>+ if (Node* child = m_start.container()->traverseToChildAt(m_start.offset()))
</ins><span class="cx"> return child;
</span><span class="cx"> if (!m_start.offset())
</span><span class="cx"> return m_start.container();
</span><span class="lines">@@ -1586,7 +1586,7 @@
</span><span class="cx"> return 0;
</span><span class="cx"> if (m_end.container()->offsetInCharacters())
</span><span class="cx"> return NodeTraversal::nextSkippingChildren(m_end.container());
</span><del>- if (Node* child = m_end.container()->childNode(m_end.offset()))
</del><ins>+ if (Node* child = m_end.container()->traverseToChildAt(m_end.offset()))
</ins><span class="cx"> return child;
</span><span class="cx"> return NodeTraversal::nextSkippingChildren(m_end.container());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomRangeBoundaryPointh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/RangeBoundaryPoint.h (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/RangeBoundaryPoint.h        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/dom/RangeBoundaryPoint.h        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(container);
</span><span class="cx"> ASSERT(offset >= 0);
</span><del>- ASSERT(childBefore == (offset ? container->childNode(offset - 1) : 0));
</del><ins>+ ASSERT(childBefore == (offset ? container->traverseToChildAt(offset - 1) : 0));
</ins><span class="cx"> m_containerNode = container;
</span><span class="cx"> m_offsetInContainer = offset;
</span><span class="cx"> m_childBeforeBoundary = childBefore;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingBreakBlockquoteCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/BreakBlockquoteCommand.cpp (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/BreakBlockquoteCommand.cpp        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/editing/BreakBlockquoteCommand.cpp        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx"> } else if (pos.deprecatedEditingOffset() > 0)
</span><span class="cx"> splitTextNode(textNode, pos.deprecatedEditingOffset());
</span><span class="cx"> } else if (pos.deprecatedEditingOffset() > 0) {
</span><del>- Node* childAtOffset = startNode->childNode(pos.deprecatedEditingOffset());
</del><ins>+ Node* childAtOffset = startNode->traverseToChildAt(pos.deprecatedEditingOffset());
</ins><span class="cx"> startNode = childAtOffset ? childAtOffset : NodeTraversal::next(startNode);
</span><span class="cx"> ASSERT(startNode);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingCompositeEditCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/CompositeEditCommand.cpp (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -396,7 +396,7 @@
</span><span class="cx"> void CompositeEditCommand::removeChildrenInRange(PassRefPtr<Node> node, unsigned from, unsigned to)
</span><span class="cx"> {
</span><span class="cx"> Vector<RefPtr<Node>> children;
</span><del>- Node* child = node->childNode(from);
</del><ins>+ Node* child = node->traverseToChildAt(from);
</ins><span class="cx"> for (unsigned i = from; child && i < to; i++, child = child->nextSibling())
</span><span class="cx"> children.append(child);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingDeleteSelectionCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -507,7 +507,7 @@
</span><span class="cx"> deleteTextFromNode(text, startOffset, text->length() - startOffset);
</span><span class="cx"> node = NodeTraversal::next(node.get());
</span><span class="cx"> } else {
</span><del>- node = startNode->childNode(startOffset);
</del><ins>+ node = startNode->traverseToChildAt(startOffset);
</ins><span class="cx"> }
</span><span class="cx"> } else if (startNode == m_upstreamEnd.deprecatedNode() && startNode->isTextNode()) {
</span><span class="cx"> Text* text = toText(m_upstreamEnd.deprecatedNode());
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingInsertParagraphSeparatorCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -267,7 +267,7 @@
</span><span class="cx"> refNode = startBlock->firstChild();
</span><span class="cx"> }
</span><span class="cx"> else if (insertionPosition.deprecatedNode() == startBlock && nestNewBlock) {
</span><del>- refNode = startBlock->childNode(insertionPosition.deprecatedEditingOffset());
</del><ins>+ refNode = startBlock->traverseToChildAt(insertionPosition.deprecatedEditingOffset());
</ins><span class="cx"> ASSERT(refNode); // must be true or we'd be in the end of block case
</span><span class="cx"> } else
</span><span class="cx"> refNode = insertionPosition.deprecatedNode();
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingTextIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/TextIterator.cpp (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/TextIterator.cpp        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/editing/TextIterator.cpp        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -193,7 +193,7 @@
</span><span class="cx"> static Node* nextInPreOrderCrossingShadowBoundaries(Node& rangeEndContainer, int rangeEndOffset)
</span><span class="cx"> {
</span><span class="cx"> if (rangeEndOffset >= 0 && !rangeEndContainer.offsetInCharacters()) {
</span><del>- if (Node* next = rangeEndContainer.childNode(rangeEndOffset))
</del><ins>+ if (Node* next = rangeEndContainer.traverseToChildAt(rangeEndOffset))
</ins><span class="cx"> return next;
</span><span class="cx"> }
</span><span class="cx"> for (Node* node = &rangeEndContainer; node; node = node->parentOrShadowHostNode()) {
</span><span class="lines">@@ -1111,7 +1111,7 @@
</span><span class="cx"> if (node->offsetInCharacters())
</span><span class="cx"> return node;
</span><span class="cx">
</span><del>- return node->childNode(textRange->startOffset());
</del><ins>+ return node->traverseToChildAt(textRange->startOffset());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // --------
</span><span class="lines">@@ -1147,13 +1147,13 @@
</span><span class="cx">
</span><span class="cx"> if (!startNode->offsetInCharacters()) {
</span><span class="cx"> if (startOffset >= 0 && startOffset < static_cast<int>(startNode->countChildNodes())) {
</span><del>- startNode = startNode->childNode(startOffset);
</del><ins>+ startNode = startNode->traverseToChildAt(startOffset);
</ins><span class="cx"> startOffset = 0;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> if (!endNode->offsetInCharacters()) {
</span><span class="cx"> if (endOffset > 0 && endOffset <= static_cast<int>(endNode->countChildNodes())) {
</span><del>- endNode = endNode->childNode(endOffset - 1);
</del><ins>+ endNode = endNode->traverseToChildAt(endOffset - 1);
</ins><span class="cx"> endOffset = lastOffsetInNode(endNode);
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingVisibleUnitscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/VisibleUnits.cpp (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/VisibleUnits.cpp        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/editing/VisibleUnits.cpp        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -1013,7 +1013,7 @@
</span><span class="cx">
</span><span class="cx"> if (!root) {
</span><span class="cx"> // FIXME: We need do the same in previousLinePosition.
</span><del>- Node* child = node->childNode(p.deprecatedEditingOffset());
</del><ins>+ Node* child = node->traverseToChildAt(p.deprecatedEditingOffset());
</ins><span class="cx"> node = child ? child : node->lastDescendant();
</span><span class="cx"> Position position = nextRootInlineBoxCandidatePosition(node, visiblePosition, editableType);
</span><span class="cx"> if (position.isNotNull()) {
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingcocoaHTMLConvertermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/cocoa/HTMLConverter.mm (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/cocoa/HTMLConverter.mm        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/editing/cocoa/HTMLConverter.mm        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -2569,7 +2569,7 @@
</span><span class="cx"> int endOffset = currentTextRange->endOffset();
</span><span class="cx">
</span><span class="cx"> if (startContainer == endContainer && (startOffset == endOffset - 1)) {
</span><del>- Node* node = startContainer->childNode(startOffset);
</del><ins>+ Node* node = startContainer->traverseToChildAt(startOffset);
</ins><span class="cx"> if (node && node->hasTagName(imgTag)) {
</span><span class="cx"> NSFileWrapper* fileWrapper = fileWrapperForElement(toElement(node));
</span><span class="cx"> NSTextAttachment* attachment = [[NSTextAttachment alloc] initWithFileWrapper:fileWrapper];
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorDOMPatchSupportcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/DOMPatchSupport.cpp (173683 => 173684)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/DOMPatchSupport.cpp        2014-09-17 00:49:20 UTC (rev 173683)
+++ trunk/Source/WebCore/inspector/DOMPatchSupport.cpp        2014-09-17 02:00:40 UTC (rev 173684)
</span><span class="lines">@@ -377,10 +377,11 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // 3. Insert missing nodes.
</span><del>- for (size_t i = 0; i < newMap.size(); ++i) {
</del><ins>+ Node* node = parentNode->firstChild();
+ for (unsigned i = 0; node && i < newMap.size(); ++i, node = node->nextSibling()) {
</ins><span class="cx"> if (newMap[i].first || merges.contains(newList[i].get()))
</span><span class="cx"> continue;
</span><del>- if (!insertBeforeAndMarkAsUsed(parentNode, newList[i].get(), parentNode->childNode(i), ec))
</del><ins>+ if (!insertBeforeAndMarkAsUsed(parentNode, newList[i].get(), node, ec))
</ins><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -389,7 +390,7 @@
</span><span class="cx"> if (!oldMap[i].first)
</span><span class="cx"> continue;
</span><span class="cx"> RefPtr<Node> node = oldMap[i].first->m_node;
</span><del>- Node* anchorNode = parentNode->childNode(oldMap[i].second);
</del><ins>+ Node* anchorNode = parentNode->traverseToChildAt(oldMap[i].second);
</ins><span class="cx"> if (node.get() == anchorNode)
</span><span class="cx"> continue;
</span><span class="cx"> if (node->hasTagName(bodyTag) || node->hasTagName(headTag))
</span></span></pre>
</div>
</div>
</body>
</html>