<!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>[179143] trunk/Source</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/179143">179143</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2015-01-26 14:36:36 -0800 (Mon, 26 Jan 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>First argument to DOM traversal functions should be a reference
https://bugs.webkit.org/show_bug.cgi?id=140895

Reviewed by Antti Koivisto.

First argument to DOM traversal functions should be a reference instead
of a pointer as it is dereferenced without null-check.</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="#trunkSourceWebCoreaccessibilityAccessibilityObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDocumentCustomcpp">trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorecssSelectorCheckercpp">trunk/Source/WebCore/css/SelectorChecker.cpp</a></li>
<li><a href="#trunkSourceWebCoredomAttrcpp">trunk/Source/WebCore/dom/Attr.cpp</a></li>
<li><a href="#trunkSourceWebCoredomCharacterDatacpp">trunk/Source/WebCore/dom/CharacterData.cpp</a></li>
<li><a href="#trunkSourceWebCoredomContainerNodecpp">trunk/Source/WebCore/dom/ContainerNode.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentMarkerControllercpp">trunk/Source/WebCore/dom/DocumentMarkerController.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementChildIteratorh">trunk/Source/WebCore/dom/ElementChildIterator.h</a></li>
<li><a href="#trunkSourceWebCoredomElementDescendantIteratorh">trunk/Source/WebCore/dom/ElementDescendantIterator.h</a></li>
<li><a href="#trunkSourceWebCoredomElementIteratorh">trunk/Source/WebCore/dom/ElementIterator.h</a></li>
<li><a href="#trunkSourceWebCoredomElementTraversalh">trunk/Source/WebCore/dom/ElementTraversal.h</a></li>
<li><a href="#trunkSourceWebCoredomInlineStyleSheetOwnercpp">trunk/Source/WebCore/dom/InlineStyleSheetOwner.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodecpp">trunk/Source/WebCore/dom/Node.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodeIteratorcpp">trunk/Source/WebCore/dom/NodeIterator.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodeTraversalcpp">trunk/Source/WebCore/dom/NodeTraversal.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodeTraversalh">trunk/Source/WebCore/dom/NodeTraversal.h</a></li>
<li><a href="#trunkSourceWebCoredomRangecpp">trunk/Source/WebCore/dom/Range.cpp</a></li>
<li><a href="#trunkSourceWebCoredomScriptElementcpp">trunk/Source/WebCore/dom/ScriptElement.cpp</a></li>
<li><a href="#trunkSourceWebCoredomShadowRootcpp">trunk/Source/WebCore/dom/ShadowRoot.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTextcpp">trunk/Source/WebCore/dom/Text.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTextNodeTraversalcpp">trunk/Source/WebCore/dom/TextNodeTraversal.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTextNodeTraversalh">trunk/Source/WebCore/dom/TextNodeTraversal.h</a></li>
<li><a href="#trunkSourceWebCoredomTreeScopeAdoptercpp">trunk/Source/WebCore/dom/TreeScopeAdopter.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTreeWalkercpp">trunk/Source/WebCore/dom/TreeWalker.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTypedElementDescendantIteratorh">trunk/Source/WebCore/dom/TypedElementDescendantIterator.h</a></li>
<li><a href="#trunkSourceWebCoreeditingApplyStyleCommandcpp">trunk/Source/WebCore/editing/ApplyStyleCommand.cpp</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="#trunkSourceWebCoreeditingEditCommandcpp">trunk/Source/WebCore/editing/EditCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingEditingStylecpp">trunk/Source/WebCore/editing/EditingStyle.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingEditorcpp">trunk/Source/WebCore/editing/Editor.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingIndentOutdentCommandcpp">trunk/Source/WebCore/editing/IndentOutdentCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingInsertListCommandcpp">trunk/Source/WebCore/editing/InsertListCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingInsertParagraphSeparatorCommandcpp">trunk/Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingReplaceSelectionCommandcpp">trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingReplaceSelectionCommandh">trunk/Source/WebCore/editing/ReplaceSelectionCommand.h</a></li>
<li><a href="#trunkSourceWebCoreeditingSimplifyMarkupCommandcpp">trunk/Source/WebCore/editing/SimplifyMarkupCommand.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="#trunkSourceWebCoreeditinghtmleditingcpp">trunk/Source/WebCore/editing/htmlediting.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingiosEditorIOSmm">trunk/Source/WebCore/editing/ios/EditorIOS.mm</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="#trunkSourceWebCorehtmlHTMLFieldSetElementcpp">trunk/Source/WebCore/html/HTMLFieldSetElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionElementcpp">trunk/Source/WebCore/html/HTMLOptionElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSelectElementcpp">trunk/Source/WebCore/html/HTMLSelectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableElementcpp">trunk/Source/WebCore/html/HTMLTableElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableRowsCollectioncpp">trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableRowsCollectionh">trunk/Source/WebCore/html/HTMLTableRowsCollection.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextAreaElementcpp">trunk/Source/WebCore/html/HTMLTextAreaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextFormControlElementcpp">trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTitleElementcpp">trunk/Source/WebCore/html/HTMLTitleElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlRadioInputTypecpp">trunk/Source/WebCore/html/RadioInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlTextFieldInputTypecpp">trunk/Source/WebCore/html/TextFieldInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackVTTCuecpp">trunk/Source/WebCore/html/track/VTTCue.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorNodeFindercpp">trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFocusControllercpp">trunk/Source/WebCore/page/FocusController.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFocusControllerh">trunk/Source/WebCore/page/FocusController.h</a></li>
<li><a href="#trunkSourceWebCorepageFramecpp">trunk/Source/WebCore/page/Frame.cpp</a></li>
<li><a href="#trunkSourceWebCorepageiosFrameIOSmm">trunk/Source/WebCore/page/ios/FrameIOS.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderCountercpp">trunk/Source/WebCore/rendering/RenderCounter.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderListItemcpp">trunk/Source/WebCore/rendering/RenderListItem.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderNamedFlowThreadcpp">trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderViewcpp">trunk/Source/WebCore/rendering/RenderView.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathNodeSetcpp">trunk/Source/WebCore/xml/XPathNodeSet.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathStepcpp">trunk/Source/WebCore/xml/XPathStep.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXPathUtilcpp">trunk/Source/WebCore/xml/XPathUtil.cpp</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebFramemm">trunk/Source/WebKit/mac/WebView/WebFrame.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebHTMLRepresentationmm">trunk/Source/WebKit/mac/WebView/WebHTMLRepresentation.mm</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebFramecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/ChangeLog        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2015-01-26  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        First argument to DOM traversal functions should be a reference
+        https://bugs.webkit.org/show_bug.cgi?id=140895
+
+        Reviewed by Antti Koivisto.
+
+        First argument to DOM traversal functions should be a reference instead
+        of a pointer as it is dereferenced without null-check.
+
</ins><span class="cx"> 2015-01-26  Roger Fong  &lt;roger_fong@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [WebGL2] Update IDL for WebGL2.
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/WebCore.exp.in        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -339,9 +339,9 @@
</span><span class="cx"> __ZN7WebCore13MachSendRight6createEj
</span><span class="cx"> __ZN7WebCore13MachSendRightD1Ev
</span><span class="cx"> __ZN7WebCore13MachSendRightaSEOS0_
</span><del>-__ZN7WebCore13NodeTraversal13deepLastChildEPNS_4NodeE
-__ZN7WebCore13NodeTraversal19nextAncestorSiblingEPKNS_4NodeE
-__ZN7WebCore13NodeTraversal19nextAncestorSiblingEPKNS_4NodeES3_
</del><ins>+__ZN7WebCore13NodeTraversal13deepLastChildERNS_4NodeE
+__ZN7WebCore13NodeTraversal19nextAncestorSiblingERKNS_4NodeE
+__ZN7WebCore13NodeTraversal19nextAncestorSiblingERKNS_4NodeEPS2_
</ins><span class="cx"> __ZN7WebCore13ResourceErrorC1EP7NSError
</span><span class="cx"> __ZN7WebCore13ResourceErrorC1EP9__CFError
</span><span class="cx"> __ZN7WebCore13SQLResultDoneE
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -467,10 +467,10 @@
</span><span class="cx">     
</span><span class="cx">     AccessibilityObject* accessibleObject = cache-&gt;getOrCreate(node-&gt;renderer());
</span><span class="cx">     while (accessibleObject &amp;&amp; accessibleObject-&gt;accessibilityIsIgnored()) {
</span><del>-        node = NodeTraversal::next(node);
</del><ins>+        node = NodeTraversal::next(*node);
</ins><span class="cx"> 
</span><span class="cx">         while (node &amp;&amp; !node-&gt;renderer())
</span><del>-            node = NodeTraversal::nextSkippingChildren(node);
</del><ins>+            node = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx"> 
</span><span class="cx">         if (!node)
</span><span class="cx">             return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDocumentCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -106,7 +106,7 @@
</span><span class="cx">     // back/forward cache.
</span><span class="cx">     if (!document-&gt;frame()) {
</span><span class="cx">         size_t nodeCount = 0;
</span><del>-        for (Node* n = document; n; n = NodeTraversal::next(n))
</del><ins>+        for (Node* n = document; n; n = NodeTraversal::next(*n))
</ins><span class="cx">             nodeCount++;
</span><span class="cx">         
</span><span class="cx">         exec-&gt;heap()-&gt;reportExtraMemoryCost(nodeCount * sizeof(Node));
</span></span></pre></div>
<a id="trunkSourceWebCorecssSelectorCheckercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/SelectorChecker.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/SelectorChecker.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/css/SelectorChecker.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -87,19 +87,19 @@
</span><span class="cx">     bool hasSelectionPseudo;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static inline bool isFirstChildElement(const Element* element)
</del><ins>+static inline bool isFirstChildElement(const Element&amp; element)
</ins><span class="cx"> {
</span><span class="cx">     return !ElementTraversal::previousSibling(element);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline bool isLastChildElement(const Element* element)
</del><ins>+static inline bool isLastChildElement(const Element&amp; element)
</ins><span class="cx"> {
</span><span class="cx">     return !ElementTraversal::nextSibling(element);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline bool isFirstOfType(Element* element, const QualifiedName&amp; type, bool isResolvingStyle)
</del><ins>+static inline bool isFirstOfType(Element&amp; element, const QualifiedName&amp; type, bool isResolvingStyle)
</ins><span class="cx"> {
</span><del>-    for (Element* sibling = ElementTraversal::previousSibling(element); sibling; sibling = ElementTraversal::previousSibling(sibling)) {
</del><ins>+    for (Element* sibling = ElementTraversal::previousSibling(element); sibling; sibling = ElementTraversal::previousSibling(*sibling)) {
</ins><span class="cx">         if (isResolvingStyle)
</span><span class="cx">             sibling-&gt;setAffectsNextSiblingElementStyle();
</span><span class="cx">         if (sibling-&gt;hasTagName(type))
</span><span class="lines">@@ -108,19 +108,19 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline bool isLastOfType(const Element* element, const QualifiedName&amp; type)
</del><ins>+static inline bool isLastOfType(const Element&amp; element, const QualifiedName&amp; type)
</ins><span class="cx"> {
</span><del>-    for (const Element* sibling = ElementTraversal::nextSibling(element); sibling; sibling = ElementTraversal::nextSibling(sibling)) {
</del><ins>+    for (const Element* sibling = ElementTraversal::nextSibling(element); sibling; sibling = ElementTraversal::nextSibling(*sibling)) {
</ins><span class="cx">         if (sibling-&gt;hasTagName(type))
</span><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline int countElementsBefore(Element* element, bool isResolvingStyle)
</del><ins>+static inline int countElementsBefore(Element&amp; element, bool isResolvingStyle)
</ins><span class="cx"> {
</span><span class="cx">     int count = 0;
</span><del>-    for (Element* sibling = ElementTraversal::previousSibling(element); sibling; sibling = ElementTraversal::previousSibling(sibling)) {
</del><ins>+    for (Element* sibling = ElementTraversal::previousSibling(element); sibling; sibling = ElementTraversal::previousSibling(*sibling)) {
</ins><span class="cx">         if (isResolvingStyle)
</span><span class="cx">             sibling-&gt;setAffectsNextSiblingElementStyle();
</span><span class="cx"> 
</span><span class="lines">@@ -134,10 +134,10 @@
</span><span class="cx">     return count;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline int countElementsOfTypeBefore(Element* element, const QualifiedName&amp; type, bool isResolvingStyle)
</del><ins>+static inline int countElementsOfTypeBefore(Element&amp; element, const QualifiedName&amp; type, bool isResolvingStyle)
</ins><span class="cx"> {
</span><span class="cx">     int count = 0;
</span><del>-    for (Element* sibling = ElementTraversal::previousSibling(element); sibling; sibling = ElementTraversal::previousSibling(sibling)) {
</del><ins>+    for (Element* sibling = ElementTraversal::previousSibling(element); sibling; sibling = ElementTraversal::previousSibling(*sibling)) {
</ins><span class="cx">         if (isResolvingStyle)
</span><span class="cx">             sibling-&gt;setAffectsNextSiblingElementStyle();
</span><span class="cx"> 
</span><span class="lines">@@ -147,18 +147,18 @@
</span><span class="cx">     return count;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline int countElementsAfter(const Element* element)
</del><ins>+static inline int countElementsAfter(const Element&amp; element)
</ins><span class="cx"> {
</span><span class="cx">     int count = 0;
</span><del>-    for (const Element* sibling = ElementTraversal::nextSibling(element); sibling; sibling = ElementTraversal::nextSibling(sibling))
</del><ins>+    for (const Element* sibling = ElementTraversal::nextSibling(element); sibling; sibling = ElementTraversal::nextSibling(*sibling))
</ins><span class="cx">         ++count;
</span><span class="cx">     return count;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline int countElementsOfTypeAfter(const Element* element, const QualifiedName&amp; type)
</del><ins>+static inline int countElementsOfTypeAfter(const Element&amp; element, const QualifiedName&amp; type)
</ins><span class="cx"> {
</span><span class="cx">     int count = 0;
</span><del>-    for (const Element* sibling = ElementTraversal::nextSibling(element); sibling; sibling = ElementTraversal::nextSibling(sibling)) {
</del><ins>+    for (const Element* sibling = ElementTraversal::nextSibling(element); sibling; sibling = ElementTraversal::nextSibling(*sibling)) {
</ins><span class="cx">         if (sibling-&gt;hasTagName(type))
</span><span class="cx">             ++count;
</span><span class="cx">     }
</span><span class="lines">@@ -643,7 +643,7 @@
</span><span class="cx">         case CSSSelector::PseudoClassFirstChild:
</span><span class="cx">             // first-child matches the first child that is an element
</span><span class="cx">             if (Element* parentElement = element-&gt;parentElement()) {
</span><del>-                bool result = isFirstChildElement(element);
</del><ins>+                bool result = isFirstChildElement(*element);
</ins><span class="cx">                 if (context.resolvingMode == Mode::ResolvingStyle) {
</span><span class="cx">                     RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element-&gt;renderStyle();
</span><span class="cx">                     parentElement-&gt;setChildrenAffectedByFirstChildRules();
</span><span class="lines">@@ -659,13 +659,13 @@
</span><span class="cx">                 if (context.resolvingMode == Mode::ResolvingStyle)
</span><span class="cx">                     element-&gt;setStyleIsAffectedByPreviousSibling();
</span><span class="cx"> 
</span><del>-                return isFirstOfType(element, element-&gt;tagQName(), context.resolvingMode == Mode::ResolvingStyle);
</del><ins>+                return isFirstOfType(*element, element-&gt;tagQName(), context.resolvingMode == Mode::ResolvingStyle);
</ins><span class="cx">             }
</span><span class="cx">             break;
</span><span class="cx">         case CSSSelector::PseudoClassLastChild:
</span><span class="cx">             // last-child matches the last child that is an element
</span><span class="cx">             if (Element* parentElement = element-&gt;parentElement()) {
</span><del>-                bool result = parentElement-&gt;isFinishedParsingChildren() &amp;&amp; isLastChildElement(element);
</del><ins>+                bool result = parentElement-&gt;isFinishedParsingChildren() &amp;&amp; isLastChildElement(*element);
</ins><span class="cx">                 if (context.resolvingMode == Mode::ResolvingStyle) {
</span><span class="cx">                     RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element-&gt;renderStyle();
</span><span class="cx">                     parentElement-&gt;setChildrenAffectedByLastChildRules();
</span><span class="lines">@@ -682,13 +682,13 @@
</span><span class="cx">                     parentElement-&gt;setChildrenAffectedByBackwardPositionalRules();
</span><span class="cx">                 if (!parentElement-&gt;isFinishedParsingChildren())
</span><span class="cx">                     return false;
</span><del>-                return isLastOfType(element, element-&gt;tagQName());
</del><ins>+                return isLastOfType(*element, element-&gt;tagQName());
</ins><span class="cx">             }
</span><span class="cx">             break;
</span><span class="cx">         case CSSSelector::PseudoClassOnlyChild:
</span><span class="cx">             if (Element* parentElement = element-&gt;parentElement()) {
</span><del>-                bool firstChild = isFirstChildElement(element);
-                bool onlyChild = firstChild &amp;&amp; parentElement-&gt;isFinishedParsingChildren() &amp;&amp; isLastChildElement(element);
</del><ins>+                bool firstChild = isFirstChildElement(*element);
+                bool onlyChild = firstChild &amp;&amp; parentElement-&gt;isFinishedParsingChildren() &amp;&amp; isLastChildElement(*element);
</ins><span class="cx">                 if (context.resolvingMode == Mode::ResolvingStyle) {
</span><span class="cx">                     RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element-&gt;renderStyle();
</span><span class="cx">                     parentElement-&gt;setChildrenAffectedByFirstChildRules();
</span><span class="lines">@@ -710,7 +710,7 @@
</span><span class="cx">                 }
</span><span class="cx">                 if (!parentElement-&gt;isFinishedParsingChildren())
</span><span class="cx">                     return false;
</span><del>-                return isFirstOfType(element, element-&gt;tagQName(), context.resolvingMode == Mode::ResolvingStyle) &amp;&amp; isLastOfType(element, element-&gt;tagQName());
</del><ins>+                return isFirstOfType(*element, element-&gt;tagQName(), context.resolvingMode == Mode::ResolvingStyle) &amp;&amp; isLastOfType(*element, element-&gt;tagQName());
</ins><span class="cx">             }
</span><span class="cx">             break;
</span><span class="cx">         case CSSSelector::PseudoClassMatches:
</span><span class="lines">@@ -770,7 +770,7 @@
</span><span class="cx"> 
</span><span class="cx">                 int count = 1;
</span><span class="cx">                 if (const CSSSelectorList* selectorList = selector-&gt;selectorList()) {
</span><del>-                    for (Element* sibling = ElementTraversal::previousSibling(element); sibling; sibling = ElementTraversal::previousSibling(sibling)) {
</del><ins>+                    for (Element* sibling = ElementTraversal::previousSibling(*element); sibling; sibling = ElementTraversal::previousSibling(*sibling)) {
</ins><span class="cx">                         if (context.resolvingMode == Mode::ResolvingStyle)
</span><span class="cx">                             sibling-&gt;setAffectsNextSiblingElementStyle();
</span><span class="cx"> 
</span><span class="lines">@@ -779,7 +779,7 @@
</span><span class="cx">                             ++count;
</span><span class="cx">                     }
</span><span class="cx">                 } else {
</span><del>-                    count += countElementsBefore(element, context.resolvingMode == Mode::ResolvingStyle);
</del><ins>+                    count += countElementsBefore(*element, context.resolvingMode == Mode::ResolvingStyle);
</ins><span class="cx">                     if (context.resolvingMode == Mode::ResolvingStyle)
</span><span class="cx">                         element-&gt;setChildIndex(count);
</span><span class="cx">                 }
</span><span class="lines">@@ -796,7 +796,7 @@
</span><span class="cx">                 if (context.resolvingMode == Mode::ResolvingStyle)
</span><span class="cx">                     element-&gt;setStyleIsAffectedByPreviousSibling();
</span><span class="cx"> 
</span><del>-                int count = 1 + countElementsOfTypeBefore(element, element-&gt;tagQName(), context.resolvingMode == Mode::ResolvingStyle);
</del><ins>+                int count = 1 + countElementsOfTypeBefore(*element, element-&gt;tagQName(), context.resolvingMode == Mode::ResolvingStyle);
</ins><span class="cx">                 if (selector-&gt;matchNth(count))
</span><span class="cx">                     return true;
</span><span class="cx">             }
</span><span class="lines">@@ -824,13 +824,13 @@
</span><span class="cx"> 
</span><span class="cx">                 int count = 1;
</span><span class="cx">                 if (const CSSSelectorList* selectorList = selector-&gt;selectorList()) {
</span><del>-                    for (Element* sibling = ElementTraversal::nextSibling(element); sibling; sibling = ElementTraversal::nextSibling(sibling)) {
</del><ins>+                    for (Element* sibling = ElementTraversal::nextSibling(*element); sibling; sibling = ElementTraversal::nextSibling(*sibling)) {
</ins><span class="cx">                         unsigned ignoredSpecificity;
</span><span class="cx">                         if (matchSelectorList(context, *sibling, *selectorList, ignoredSpecificity))
</span><span class="cx">                             ++count;
</span><span class="cx">                     }
</span><span class="cx">                 } else
</span><del>-                    count += countElementsAfter(element);
</del><ins>+                    count += countElementsAfter(*element);
</ins><span class="cx"> 
</span><span class="cx">                 if (selector-&gt;matchNth(count))
</span><span class="cx">                     return true;
</span><span class="lines">@@ -845,7 +845,7 @@
</span><span class="cx">                 if (!parentElement-&gt;isFinishedParsingChildren())
</span><span class="cx">                     return false;
</span><span class="cx"> 
</span><del>-                int count = 1 + countElementsOfTypeAfter(element, element-&gt;tagQName());
</del><ins>+                int count = 1 + countElementsOfTypeAfter(*element, element-&gt;tagQName());
</ins><span class="cx">                 if (selector-&gt;matchNth(count))
</span><span class="cx">                     return true;
</span><span class="cx">             }
</span></span></pre></div>
<a id="trunkSourceWebCoredomAttrcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Attr.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Attr.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/Attr.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx">     invalidateNodeListAndCollectionCachesInAncestors(&amp;qualifiedName(), m_element);
</span><span class="cx"> 
</span><span class="cx">     StringBuilder valueBuilder;
</span><del>-    TextNodeTraversal::appendContents(this, valueBuilder);
</del><ins>+    TextNodeTraversal::appendContents(*this, valueBuilder);
</ins><span class="cx"> 
</span><span class="cx">     AtomicString oldValue = value();
</span><span class="cx">     AtomicString newValue = valueBuilder.toAtomicString();
</span></span></pre></div>
<a id="trunkSourceWebCoredomCharacterDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/CharacterData.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/CharacterData.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/CharacterData.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -97,8 +97,8 @@
</span><span class="cx">     if (parentNode()) {
</span><span class="cx">         ContainerNode::ChildChange change = {
</span><span class="cx">             ContainerNode::TextChanged,
</span><del>-            ElementTraversal::previousSibling(this),
-            ElementTraversal::nextSibling(this),
</del><ins>+            ElementTraversal::previousSibling(*this),
+            ElementTraversal::nextSibling(*this),
</ins><span class="cx">             ContainerNode::ChildChangeSourceParser
</span><span class="cx">         };
</span><span class="cx">         parentNode()-&gt;childrenChanged(change);
</span><span class="lines">@@ -217,14 +217,14 @@
</span><span class="cx">         if (parentNode()) {
</span><span class="cx">             ContainerNode::ChildChange change = {
</span><span class="cx">                 ContainerNode::TextChanged,
</span><del>-                ElementTraversal::previousSibling(this),
-                ElementTraversal::nextSibling(this),
</del><ins>+                ElementTraversal::previousSibling(*this),
+                ElementTraversal::nextSibling(*this),
</ins><span class="cx">                 ContainerNode::ChildChangeSourceAPI
</span><span class="cx">             };
</span><span class="cx">             parentNode()-&gt;childrenChanged(change);
</span><span class="cx">         }
</span><span class="cx">         if (document().hasListenerType(Document::DOMCHARACTERDATAMODIFIED_LISTENER))
</span><del>-            dispatchScopedEvent(MutationEvent::create(eventNames().DOMCharacterDataModifiedEvent, true, 0, oldData, m_data));
</del><ins>+            dispatchScopedEvent(MutationEvent::create(eventNames().DOMCharacterDataModifiedEvent, true, nullptr, oldData, m_data));
</ins><span class="cx">         dispatchSubtreeModifiedEvent();
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomContainerNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ContainerNode.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ContainerNode.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/ContainerNode.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -331,8 +331,8 @@
</span><span class="cx"> {
</span><span class="cx">     ChildChange change;
</span><span class="cx">     change.type = child.isElementNode() ? ElementInserted : child.isTextNode() ? TextInserted : NonContentsChildChanged;
</span><del>-    change.previousSiblingElement = ElementTraversal::previousSibling(&amp;child);
-    change.nextSiblingElement = ElementTraversal::nextSibling(&amp;child);
</del><ins>+    change.previousSiblingElement = ElementTraversal::previousSibling(child);
+    change.nextSiblingElement = ElementTraversal::nextSibling(child);
</ins><span class="cx">     change.source = source;
</span><span class="cx"> 
</span><span class="cx">     childrenChanged(change);
</span><span class="lines">@@ -342,8 +342,8 @@
</span><span class="cx"> {
</span><span class="cx">     ChildChange change;
</span><span class="cx">     change.type = is&lt;Element&gt;(child) ? ElementRemoved : is&lt;Text&gt;(child) ? TextRemoved : NonContentsChildChanged;
</span><del>-    change.previousSiblingElement = (!previousSibling || is&lt;Element&gt;(*previousSibling)) ? downcast&lt;Element&gt;(previousSibling) : ElementTraversal::previousSibling(previousSibling);
-    change.nextSiblingElement = (!nextSibling || is&lt;Element&gt;(*nextSibling)) ? downcast&lt;Element&gt;(nextSibling) : ElementTraversal::nextSibling(nextSibling);
</del><ins>+    change.previousSiblingElement = (!previousSibling || is&lt;Element&gt;(*previousSibling)) ? downcast&lt;Element&gt;(previousSibling) : ElementTraversal::previousSibling(*previousSibling);
+    change.nextSiblingElement = (!nextSibling || is&lt;Element&gt;(*nextSibling)) ? downcast&lt;Element&gt;(nextSibling) : ElementTraversal::nextSibling(*nextSibling);
</ins><span class="cx">     change.source = source;
</span><span class="cx"> 
</span><span class="cx">     childrenChanged(change);
</span><span class="lines">@@ -809,7 +809,7 @@
</span><span class="cx"> 
</span><span class="cx">     // dispatch the DOMNodeInsertedIntoDocument event to all descendants
</span><span class="cx">     if (c-&gt;inDocument() &amp;&amp; document-&gt;hasListenerType(Document::DOMNODEINSERTEDINTODOCUMENT_LISTENER)) {
</span><del>-        for (; c; c = NodeTraversal::next(c.get(), &amp;child))
</del><ins>+        for (; c; c = NodeTraversal::next(*c, &amp;child))
</ins><span class="cx">             c-&gt;dispatchScopedEvent(MutationEvent::create(eventNames().DOMNodeInsertedIntoDocumentEvent, false));
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -835,7 +835,7 @@
</span><span class="cx"> 
</span><span class="cx">     // dispatch the DOMNodeRemovedFromDocument event to all descendants
</span><span class="cx">     if (c-&gt;inDocument() &amp;&amp; document-&gt;hasListenerType(Document::DOMNODEREMOVEDFROMDOCUMENT_LISTENER)) {
</span><del>-        for (; c; c = NodeTraversal::next(c.get(), &amp;child))
</del><ins>+        for (; c; c = NodeTraversal::next(*c, &amp;child))
</ins><span class="cx">             c-&gt;dispatchScopedEvent(MutationEvent::create(eventNames().DOMNodeRemovedFromDocumentEvent, false));
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/Document.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -2155,7 +2155,7 @@
</span><span class="cx"> #if ENABLE(IOS_TOUCH_EVENTS)
</span><span class="cx">     clearTouchEventListeners();
</span><span class="cx"> #endif
</span><del>-    for (Node* node = firstChild(); node; node = NodeTraversal::next(node))
</del><ins>+    for (Node* node = firstChild(); node; node = NodeTraversal::next(*node))
</ins><span class="cx">         node-&gt;removeAllEventListeners();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3272,7 +3272,7 @@
</span><span class="cx">     ensureStyleResolver().clearCachedPropertiesAffectedByViewportUnits();
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Ideally, we should save the list of elements that have viewport units and only iterate over those.
</span><del>-    for (Element* element = ElementTraversal::firstWithin(&amp;rootNode()); element; element = ElementTraversal::nextIncludingPseudo(element)) {
</del><ins>+    for (Element* element = ElementTraversal::firstWithin(rootNode()); element; element = ElementTraversal::nextIncludingPseudo(*element)) {
</ins><span class="cx">         auto* renderer = element-&gt;renderer();
</span><span class="cx">         if (renderer &amp;&amp; renderer-&gt;style().hasViewportUnits())
</span><span class="cx">             element-&gt;setNeedsStyleRecalc(InlineStyleChange);
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentMarkerControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DocumentMarkerController.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DocumentMarkerController.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/DocumentMarkerController.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -404,7 +404,7 @@
</span><span class="cx">     ASSERT(endContainer);
</span><span class="cx"> 
</span><span class="cx">     Node* pastLastNode = range-&gt;pastLastNode();
</span><del>-    for (Node* node = range-&gt;firstNode(); node != pastLastNode; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = range-&gt;firstNode(); node != pastLastNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         for (auto* marker : markersFor(node)) {
</span><span class="cx">             if (!markerTypes.contains(marker-&gt;type()))
</span><span class="cx">                 continue;
</span><span class="lines">@@ -629,7 +629,7 @@
</span><span class="cx"> 
</span><span class="cx">     Node* pastLastNode = range-&gt;pastLastNode();
</span><span class="cx"> 
</span><del>-    for (Node* node = range-&gt;firstNode(); node != pastLastNode; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = range-&gt;firstNode(); node != pastLastNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         int startOffset = node == startContainer ? range-&gt;startOffset() : 0;
</span><span class="cx">         int endOffset = node == endContainer ? range-&gt;endOffset() : INT_MAX;
</span><span class="cx">         setMarkersActive(node, startOffset, endOffset, active);
</span><span class="lines">@@ -675,7 +675,7 @@
</span><span class="cx">     ASSERT(endContainer);
</span><span class="cx"> 
</span><span class="cx">     Node* pastLastNode = range-&gt;pastLastNode();
</span><del>-    for (Node* node = range-&gt;firstNode(); node != pastLastNode; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = range-&gt;firstNode(); node != pastLastNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         for (auto* marker : markersFor(node)) {
</span><span class="cx">             if (!markerTypes.contains(marker-&gt;type()))
</span><span class="cx">                 continue;
</span><span class="lines">@@ -699,7 +699,7 @@
</span><span class="cx">     Node* endContainer = range-&gt;endContainer();
</span><span class="cx"> 
</span><span class="cx">     Node* pastLastNode = range-&gt;pastLastNode();
</span><del>-    for (Node* node = range-&gt;firstNode(); node != pastLastNode; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = range-&gt;firstNode(); node != pastLastNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         unsigned startOffset = node == startContainer ? range-&gt;startOffset() : 0;
</span><span class="cx">         unsigned endOffset = node == endContainer ? static_cast&lt;unsigned&gt;(range-&gt;endOffset()) : std::numeric_limits&lt;unsigned&gt;::max();
</span><span class="cx">         MarkerList* list = m_markers.get(node);
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/Element.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -1558,18 +1558,18 @@
</span><span class="cx"> 
</span><span class="cx"> enum SiblingCheckType { FinishedParsingChildren, SiblingElementRemoved, Other };
</span><span class="cx"> 
</span><del>-static void checkForSiblingStyleChanges(Element* parent, SiblingCheckType checkType, Element* elementBeforeChange, Element* elementAfterChange)
</del><ins>+static void checkForSiblingStyleChanges(Element&amp; parent, SiblingCheckType checkType, Element* elementBeforeChange, Element* elementAfterChange)
</ins><span class="cx"> {
</span><span class="cx">     // :empty selector.
</span><del>-    checkForEmptyStyleChange(*parent);
</del><ins>+    checkForEmptyStyleChange(parent);
</ins><span class="cx"> 
</span><del>-    if (parent-&gt;styleChangeType() &gt;= FullStyleChange)
</del><ins>+    if (parent.styleChangeType() &gt;= FullStyleChange)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // :first-child.  In the parser callback case, we don't have to check anything, since we were right the first time.
</span><span class="cx">     // In the DOM case, we only need to do something if |afterChange| is not 0.
</span><span class="cx">     // |afterChange| is 0 in the parser case, so it works out that we'll skip this block.
</span><del>-    if (parent-&gt;childrenAffectedByFirstChildRules() &amp;&amp; elementAfterChange) {
</del><ins>+    if (parent.childrenAffectedByFirstChildRules() &amp;&amp; elementAfterChange) {
</ins><span class="cx">         // Find our new first child.
</span><span class="cx">         Element* newFirstElement = ElementTraversal::firstChild(parent);
</span><span class="cx">         // Find the first element node following |afterChange|
</span><span class="lines">@@ -1591,7 +1591,7 @@
</span><span class="cx"> 
</span><span class="cx">     // :last-child.  In the parser callback case, we don't have to check anything, since we were right the first time.
</span><span class="cx">     // In the DOM case, we only need to do something if |afterChange| is not 0.
</span><del>-    if (parent-&gt;childrenAffectedByLastChildRules() &amp;&amp; elementBeforeChange) {
</del><ins>+    if (parent.childrenAffectedByLastChildRules() &amp;&amp; elementBeforeChange) {
</ins><span class="cx">         // Find our new last child.
</span><span class="cx">         Element* newLastElement = ElementTraversal::lastChild(parent);
</span><span class="cx"> 
</span><span class="lines">@@ -1630,8 +1630,8 @@
</span><span class="cx">     // |afterChange| is 0 in the parser callback case, so we won't do any work for the forward case if we don't have to.
</span><span class="cx">     // For performance reasons we just mark the parent node as changed, since we don't want to make childrenChanged O(n^2) by crawling all our kids
</span><span class="cx">     // here.  recalcStyle will then force a walk of the children when it sees that this has happened.
</span><del>-    if (parent-&gt;childrenAffectedByBackwardPositionalRules() &amp;&amp; elementBeforeChange)
-        parent-&gt;setNeedsStyleRecalc();
</del><ins>+    if (parent.childrenAffectedByBackwardPositionalRules() &amp;&amp; elementBeforeChange)
+        parent.setNeedsStyleRecalc();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Element::childrenChanged(const ChildChange&amp; change)
</span><span class="lines">@@ -1641,7 +1641,7 @@
</span><span class="cx">         checkForEmptyStyleChange(*this);
</span><span class="cx">     else {
</span><span class="cx">         SiblingCheckType checkType = change.type == ElementRemoved ? SiblingElementRemoved : Other;
</span><del>-        checkForSiblingStyleChanges(this, checkType, change.previousSiblingElement, change.nextSiblingElement);
</del><ins>+        checkForSiblingStyleChanges(*this, checkType, change.previousSiblingElement, change.nextSiblingElement);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (ShadowRoot* shadowRoot = this-&gt;shadowRoot())
</span><span class="lines">@@ -1666,7 +1666,7 @@
</span><span class="cx"> {
</span><span class="cx">     ContainerNode::finishParsingChildren();
</span><span class="cx">     setIsParsingChildrenFinished();
</span><del>-    checkForSiblingStyleChanges(this, FinishedParsingChildren, ElementTraversal::lastChild(this), nullptr);
</del><ins>+    checkForSiblingStyleChanges(*this, FinishedParsingChildren, ElementTraversal::lastChild(*this), nullptr);
</ins><span class="cx">     if (auto styleResolver = document().styleResolverIfExists())
</span><span class="cx">         styleResolver-&gt;popParentElement(this);
</span><span class="cx"> }
</span><span class="lines">@@ -2375,22 +2375,22 @@
</span><span class="cx"> // ElementTraversal API
</span><span class="cx"> Element* Element::firstElementChild() const
</span><span class="cx"> {
</span><del>-    return ElementTraversal::firstChild(this);
</del><ins>+    return ElementTraversal::firstChild(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Element* Element::lastElementChild() const
</span><span class="cx"> {
</span><del>-    return ElementTraversal::lastChild(this);
</del><ins>+    return ElementTraversal::lastChild(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Element* Element::previousElementSibling() const
</span><span class="cx"> {
</span><del>-    return ElementTraversal::previousSibling(this);
</del><ins>+    return ElementTraversal::previousSibling(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Element* Element::nextElementSibling() const
</span><span class="cx"> {
</span><del>-    return ElementTraversal::nextSibling(this);
</del><ins>+    return ElementTraversal::nextSibling(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> unsigned Element::childElementCount() const
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementChildIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ElementChildIterator.h (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ElementChildIterator.h        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/ElementChildIterator.h        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -132,7 +132,7 @@
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline ElementChildIterator&lt;ElementType&gt; ElementChildIteratorAdapter&lt;ElementType&gt;::begin()
</span><span class="cx"> {
</span><del>-    return ElementChildIterator&lt;ElementType&gt;(m_parent, Traversal&lt;ElementType&gt;::firstChild(&amp;m_parent));
</del><ins>+    return ElementChildIterator&lt;ElementType&gt;(m_parent, Traversal&lt;ElementType&gt;::firstChild(m_parent));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="lines">@@ -144,13 +144,13 @@
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline ElementType* ElementChildIteratorAdapter&lt;ElementType&gt;::first()
</span><span class="cx"> {
</span><del>-    return Traversal&lt;ElementType&gt;::firstChild(&amp;m_parent);
</del><ins>+    return Traversal&lt;ElementType&gt;::firstChild(m_parent);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline ElementType* ElementChildIteratorAdapter&lt;ElementType&gt;::last()
</span><span class="cx"> {
</span><del>-    return Traversal&lt;ElementType&gt;::lastChild(&amp;m_parent);
</del><ins>+    return Traversal&lt;ElementType&gt;::lastChild(m_parent);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="lines">@@ -171,7 +171,7 @@
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline ElementChildConstIterator&lt;ElementType&gt; ElementChildConstIteratorAdapter&lt;ElementType&gt;::begin() const
</span><span class="cx"> {
</span><del>-    return ElementChildConstIterator&lt;ElementType&gt;(m_parent, Traversal&lt;ElementType&gt;::firstChild(&amp;m_parent));
</del><ins>+    return ElementChildConstIterator&lt;ElementType&gt;(m_parent, Traversal&lt;ElementType&gt;::firstChild(m_parent));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="lines">@@ -183,13 +183,13 @@
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline const ElementType* ElementChildConstIteratorAdapter&lt;ElementType&gt;::first() const
</span><span class="cx"> {
</span><del>-    return Traversal&lt;ElementType&gt;::firstChild(&amp;m_parent);
</del><ins>+    return Traversal&lt;ElementType&gt;::firstChild(m_parent);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline const ElementType* ElementChildConstIteratorAdapter&lt;ElementType&gt;::last() const
</span><span class="cx"> {
</span><del>-    return Traversal&lt;ElementType&gt;::lastChild(&amp;m_parent);
</del><ins>+    return Traversal&lt;ElementType&gt;::lastChild(m_parent);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementDescendantIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ElementDescendantIterator.h (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ElementDescendantIterator.h        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/ElementDescendantIterator.h        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -121,8 +121,8 @@
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><span class="cx"> 
</span><del>-    Element* firstChild = ElementTraversal::firstChild(m_current);
-    Element* nextSibling = ElementTraversal::nextSibling(m_current);
</del><ins>+    Element* firstChild = ElementTraversal::firstChild(*m_current);
+    Element* nextSibling = ElementTraversal::nextSibling(*m_current);
</ins><span class="cx"> 
</span><span class="cx">     if (firstChild) {
</span><span class="cx">         if (nextSibling)
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><span class="cx"> 
</span><del>-    Element* previousSibling = ElementTraversal::previousSibling(m_current);
</del><ins>+    Element* previousSibling = ElementTraversal::previousSibling(*m_current);
</ins><span class="cx"> 
</span><span class="cx">     if (!previousSibling) {
</span><span class="cx">         m_current = m_current-&gt;parentElement();
</span><span class="lines">@@ -163,7 +163,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     Element* deepestSibling = previousSibling;
</span><del>-    while (Element* lastChild = ElementTraversal::lastChild(deepestSibling))
</del><ins>+    while (Element* lastChild = ElementTraversal::lastChild(*deepestSibling))
</ins><span class="cx">         deepestSibling = lastChild;
</span><span class="cx">     ASSERT(deepestSibling);
</span><span class="cx"> 
</span><span class="lines">@@ -224,8 +224,8 @@
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><span class="cx"> 
</span><del>-    Element* firstChild = ElementTraversal::firstChild(m_current);
-    Element* nextSibling = ElementTraversal::nextSibling(m_current);
</del><ins>+    Element* firstChild = ElementTraversal::firstChild(*m_current);
+    Element* nextSibling = ElementTraversal::nextSibling(*m_current);
</ins><span class="cx"> 
</span><span class="cx">     if (firstChild) {
</span><span class="cx">         if (nextSibling)
</span><span class="lines">@@ -284,7 +284,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline ElementDescendantIterator ElementDescendantIteratorAdapter::begin()
</span><span class="cx"> {
</span><del>-    return ElementDescendantIterator(ElementTraversal::firstChild(&amp;m_root));
</del><ins>+    return ElementDescendantIterator(ElementTraversal::firstChild(m_root));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline ElementDescendantIterator ElementDescendantIteratorAdapter::end()
</span><span class="lines">@@ -294,7 +294,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline ElementDescendantIterator ElementDescendantIteratorAdapter::last()
</span><span class="cx"> {
</span><del>-    return ElementDescendantIterator(ElementTraversal::lastWithin(&amp;m_root));
</del><ins>+    return ElementDescendantIterator(ElementTraversal::lastWithin(m_root));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ElementDescendantConstIteratorAdapter
</span><span class="lines">@@ -306,7 +306,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline ElementDescendantConstIterator ElementDescendantConstIteratorAdapter::begin() const
</span><span class="cx"> {
</span><del>-    return ElementDescendantConstIterator(ElementTraversal::firstChild(&amp;m_root));
</del><ins>+    return ElementDescendantConstIterator(ElementTraversal::firstChild(m_root));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline ElementDescendantConstIterator ElementDescendantConstIteratorAdapter::end() const
</span><span class="lines">@@ -316,7 +316,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline ElementDescendantConstIterator ElementDescendantConstIteratorAdapter::last() const
</span><span class="cx"> {
</span><del>-    return ElementDescendantConstIterator(ElementTraversal::lastWithin(&amp;m_root));
</del><ins>+    return ElementDescendantConstIterator(ElementTraversal::lastWithin(m_root));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Standalone functions
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ElementIterator.h (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ElementIterator.h        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/ElementIterator.h        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><del>-    m_current = Traversal&lt;ElementType&gt;::next(m_current, m_root);
</del><ins>+    m_current = Traversal&lt;ElementType&gt;::next(*m_current, m_root);
</ins><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     // Drop the assertion when the iterator reaches the end.
</span><span class="cx">     if (!m_current)
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><del>-    m_current = Traversal&lt;ElementType&gt;::previous(m_current, m_root);
</del><ins>+    m_current = Traversal&lt;ElementType&gt;::previous(*m_current, m_root);
</ins><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     // Drop the assertion when the iterator reaches the end.
</span><span class="cx">     if (!m_current)
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><del>-    m_current = Traversal&lt;ElementType&gt;::nextSibling(m_current);
</del><ins>+    m_current = Traversal&lt;ElementType&gt;::nextSibling(*m_current);
</ins><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     // Drop the assertion when the iterator reaches the end.
</span><span class="cx">     if (!m_current)
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><del>-    m_current = Traversal&lt;ElementType&gt;::previousSibling(m_current);
</del><ins>+    m_current = Traversal&lt;ElementType&gt;::previousSibling(*m_current);
</ins><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     // Drop the assertion when the iterator reaches the end.
</span><span class="cx">     if (!m_current)
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><del>-    m_current = Traversal&lt;ElementType&gt;::nextSkippingChildren(m_current, m_root);
</del><ins>+    m_current = Traversal&lt;ElementType&gt;::nextSkippingChildren(*m_current, m_root);
</ins><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     // Drop the assertion when the iterator reaches the end.
</span><span class="cx">     if (!m_current)
</span><span class="lines">@@ -264,7 +264,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><del>-    m_current = Traversal&lt;ElementType&gt;::next(m_current, m_root);
</del><ins>+    m_current = Traversal&lt;ElementType&gt;::next(*m_current, m_root);
</ins><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     // Drop the assertion when the iterator reaches the end.
</span><span class="cx">     if (!m_current)
</span><span class="lines">@@ -278,7 +278,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><del>-    m_current = Traversal&lt;ElementType&gt;::previous(m_current, m_root);
</del><ins>+    m_current = Traversal&lt;ElementType&gt;::previous(*m_current, m_root);
</ins><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     // Drop the assertion when the iterator reaches the end.
</span><span class="cx">     if (!m_current)
</span><span class="lines">@@ -292,7 +292,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><del>-    m_current = Traversal&lt;ElementType&gt;::nextSibling(m_current);
</del><ins>+    m_current = Traversal&lt;ElementType&gt;::nextSibling(*m_current);
</ins><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     // Drop the assertion when the iterator reaches the end.
</span><span class="cx">     if (!m_current)
</span><span class="lines">@@ -306,7 +306,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><del>-    m_current = Traversal&lt;ElementType&gt;::previousSibling(m_current);
</del><ins>+    m_current = Traversal&lt;ElementType&gt;::previousSibling(*m_current);
</ins><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     // Drop the assertion when the iterator reaches the end.
</span><span class="cx">     if (!m_current)
</span><span class="lines">@@ -320,7 +320,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_current);
</span><span class="cx">     ASSERT(!m_assertions.domTreeHasMutated());
</span><del>-    m_current = Traversal&lt;ElementType&gt;::nextSkippingChildren(m_current, m_root);
</del><ins>+    m_current = Traversal&lt;ElementType&gt;::nextSkippingChildren(*m_current, m_root);
</ins><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     // Drop the assertion when the iterator reaches the end.
</span><span class="cx">     if (!m_current)
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementTraversalh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ElementTraversal.h (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ElementTraversal.h        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/ElementTraversal.h        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -34,88 +34,88 @@
</span><span class="cx"> class Traversal {
</span><span class="cx"> public:
</span><span class="cx">     // First or last ElementType child of the node.
</span><del>-    static ElementType* firstChild(const Node*);
-    static ElementType* firstChild(const ContainerNode*);
-    static ElementType* lastChild(const Node*);
-    static ElementType* lastChild(const ContainerNode*);
</del><ins>+    static ElementType* firstChild(const Node&amp;);
+    static ElementType* firstChild(const ContainerNode&amp;);
+    static ElementType* lastChild(const Node&amp;);
+    static ElementType* lastChild(const ContainerNode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     // First or last ElementType descendant of the node. For Elements firstWithin is always the same as first child.
</span><del>-    static ElementType* firstWithin(const Node*);
-    static ElementType* firstWithin(const ContainerNode*);
-    static ElementType* lastWithin(const Node*);
-    static ElementType* lastWithin(const ContainerNode*);
</del><ins>+    static ElementType* firstWithin(const Node&amp;);
+    static ElementType* firstWithin(const ContainerNode&amp;);
+    static ElementType* lastWithin(const Node&amp;);
+    static ElementType* lastWithin(const ContainerNode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     // Pre-order traversal skipping non-ElementType nodes.
</span><del>-    static ElementType* next(const Node*);
-    static ElementType* next(const Node*, const Node* stayWithin);
-    static ElementType* next(const ContainerNode*);
-    static ElementType* next(const ContainerNode*, const Node* stayWithin);
-    static ElementType* previous(const Node*);
-    static ElementType* previous(const Node*, const Node* stayWithin);
</del><ins>+    static ElementType* next(const Node&amp;);
+    static ElementType* next(const Node&amp;, const Node* stayWithin);
+    static ElementType* next(const ContainerNode&amp;);
+    static ElementType* next(const ContainerNode&amp;, const Node* stayWithin);
+    static ElementType* previous(const Node&amp;);
+    static ElementType* previous(const Node&amp;, const Node* stayWithin);
</ins><span class="cx"> 
</span><span class="cx">     // Next or previous ElementType sibling if there is one.
</span><del>-    static ElementType* nextSibling(const Node*);
-    static ElementType* previousSibling(const Node*);
</del><ins>+    static ElementType* nextSibling(const Node&amp;);
+    static ElementType* previousSibling(const Node&amp;);
</ins><span class="cx"> 
</span><span class="cx">     // Like next, but skips children.
</span><del>-    static ElementType* nextSkippingChildren(const Node*);
-    static ElementType* nextSkippingChildren(const Node*, const Node* stayWithin);
</del><ins>+    static ElementType* nextSkippingChildren(const Node&amp;);
+    static ElementType* nextSkippingChildren(const Node&amp;, const Node* stayWithin);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    template &lt;typename CurrentType&gt; static ElementType* firstChildTemplate(CurrentType*);
-    template &lt;typename CurrentType&gt; static ElementType* lastChildTemplate(CurrentType*);
-    template &lt;typename CurrentType&gt; static ElementType* firstWithinTemplate(CurrentType*);
-    template &lt;typename CurrentType&gt; static ElementType* lastWithinTemplate(CurrentType*);
-    template &lt;typename CurrentType&gt; static ElementType* nextTemplate(CurrentType*);
-    template &lt;typename CurrentType&gt; static ElementType* nextTemplate(CurrentType*, const Node* stayWithin);
</del><ins>+    template &lt;typename CurrentType&gt; static ElementType* firstChildTemplate(CurrentType&amp;);
+    template &lt;typename CurrentType&gt; static ElementType* lastChildTemplate(CurrentType&amp;);
+    template &lt;typename CurrentType&gt; static ElementType* firstWithinTemplate(CurrentType&amp;);
+    template &lt;typename CurrentType&gt; static ElementType* lastWithinTemplate(CurrentType&amp;);
+    template &lt;typename CurrentType&gt; static ElementType* nextTemplate(CurrentType&amp;);
+    template &lt;typename CurrentType&gt; static ElementType* nextTemplate(CurrentType&amp;, const Node* stayWithin);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class ElementTraversal : public Traversal&lt;Element&gt; {
</span><span class="cx"> public:
</span><span class="cx">     // FIXME: These should go somewhere else.
</span><span class="cx">     // Pre-order traversal including the pseudo-elements.
</span><del>-    static Element* previousIncludingPseudo(const Node*, const Node* = 0);
-    static Element* nextIncludingPseudo(const Node*, const Node* = 0);
-    static Element* nextIncludingPseudoSkippingChildren(const Node*, const Node* = 0);
</del><ins>+    static Element* previousIncludingPseudo(const Node&amp;, const Node* = nullptr);
+    static Element* nextIncludingPseudo(const Node&amp;, const Node* = nullptr);
+    static Element* nextIncludingPseudoSkippingChildren(const Node&amp;, const Node* = nullptr);
</ins><span class="cx"> 
</span><span class="cx">     // Utility function to traverse only the element and pseudo-element siblings of a node.
</span><del>-    static Element* pseudoAwarePreviousSibling(const Node*);
</del><ins>+    static Element* pseudoAwarePreviousSibling(const Node&amp;);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> // Specialized for pure Element to exploit the fact that Elements parent is always either another Element or the root.
</span><span class="cx"> template &lt;&gt;
</span><span class="cx"> template &lt;typename CurrentType&gt;
</span><del>-inline Element* Traversal&lt;Element&gt;::firstWithinTemplate(CurrentType* current)
</del><ins>+inline Element* Traversal&lt;Element&gt;::firstWithinTemplate(CurrentType&amp; current)
</ins><span class="cx"> {
</span><span class="cx">     return firstChildTemplate(current);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;&gt;
</span><span class="cx"> template &lt;typename CurrentType&gt;
</span><del>-inline Element* Traversal&lt;Element&gt;::nextTemplate(CurrentType* current)
</del><ins>+inline Element* Traversal&lt;Element&gt;::nextTemplate(CurrentType&amp; current)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::next(current);
</span><span class="cx">     while (node &amp;&amp; !is&lt;Element&gt;(*node))
</span><del>-        node = NodeTraversal::nextSkippingChildren(node);
</del><ins>+        node = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx">     return downcast&lt;Element&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;&gt;
</span><span class="cx"> template &lt;typename CurrentType&gt;
</span><del>-inline Element* Traversal&lt;Element&gt;::nextTemplate(CurrentType* current, const Node* stayWithin)
</del><ins>+inline Element* Traversal&lt;Element&gt;::nextTemplate(CurrentType&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::next(current, stayWithin);
</span><span class="cx">     while (node &amp;&amp; !is&lt;Element&gt;(*node))
</span><del>-        node = NodeTraversal::nextSkippingChildren(node, stayWithin);
</del><ins>+        node = NodeTraversal::nextSkippingChildren(*node, stayWithin);
</ins><span class="cx">     return downcast&lt;Element&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Generic versions.
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> template &lt;typename CurrentType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::firstChildTemplate(CurrentType* current)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::firstChildTemplate(CurrentType&amp; current)
</ins><span class="cx"> {
</span><del>-    Node* node = current-&gt;firstChild();
</del><ins>+    Node* node = current.firstChild();
</ins><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><span class="cx">         node = node-&gt;nextSibling();
</span><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="lines">@@ -123,9 +123,9 @@
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> template &lt;typename CurrentType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::lastChildTemplate(CurrentType* current)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::lastChildTemplate(CurrentType&amp; current)
</ins><span class="cx"> {
</span><del>-    Node* node = current-&gt;lastChild();
</del><ins>+    Node* node = current.lastChild();
</ins><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><span class="cx">         node = node-&gt;previousSibling();
</span><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="lines">@@ -133,155 +133,155 @@
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> template &lt;typename CurrentType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::firstWithinTemplate(CurrentType* current)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::firstWithinTemplate(CurrentType&amp; current)
</ins><span class="cx"> {
</span><del>-    Node* node = current-&gt;firstChild();
</del><ins>+    Node* node = current.firstChild();
</ins><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><del>-        node = NodeTraversal::next(node, current);
</del><ins>+        node = NodeTraversal::next(*node, &amp;current);
</ins><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> template &lt;typename CurrentType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::lastWithinTemplate(CurrentType* current)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::lastWithinTemplate(CurrentType&amp; current)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::last(current);
</span><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><del>-        node = NodeTraversal::previous(node, current);
</del><ins>+        node = NodeTraversal::previous(*node, &amp;current);
</ins><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> template &lt;typename CurrentType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::nextTemplate(CurrentType* current)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::nextTemplate(CurrentType&amp; current)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::next(current);
</span><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><del>-        node = NodeTraversal::next(node);
</del><ins>+        node = NodeTraversal::next(*node);
</ins><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> template &lt;typename CurrentType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::nextTemplate(CurrentType* current, const Node* stayWithin)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::nextTemplate(CurrentType&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::next(current, stayWithin);
</span><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><del>-        node = NodeTraversal::next(node, stayWithin);
</del><ins>+        node = NodeTraversal::next(*node, stayWithin);
</ins><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::previous(const Node* current)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::previous(const Node&amp; current)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::previous(current);
</span><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><del>-        node = NodeTraversal::previous(node);
</del><ins>+        node = NodeTraversal::previous(*node);
</ins><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::previous(const Node* current, const Node* stayWithin)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::previous(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::previous(current, stayWithin);
</span><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><del>-        node = NodeTraversal::previous(node, stayWithin);
</del><ins>+        node = NodeTraversal::previous(*node, stayWithin);
</ins><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::nextSibling(const Node* current)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::nextSibling(const Node&amp; current)
</ins><span class="cx"> {
</span><del>-    Node* node = current-&gt;nextSibling();
</del><ins>+    Node* node = current.nextSibling();
</ins><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><span class="cx">         node = node-&gt;nextSibling();
</span><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::previousSibling(const Node* current)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::previousSibling(const Node&amp; current)
</ins><span class="cx"> {
</span><del>-    Node* node = current-&gt;previousSibling();
</del><ins>+    Node* node = current.previousSibling();
</ins><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><span class="cx">         node = node-&gt;previousSibling();
</span><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::nextSkippingChildren(const Node* current)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::nextSkippingChildren(const Node&amp; current)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::nextSkippingChildren(current);
</span><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><del>-        node = NodeTraversal::nextSkippingChildren(node);
</del><ins>+        node = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::nextSkippingChildren(const Node* current, const Node* stayWithin)
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::nextSkippingChildren(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::nextSkippingChildren(current, stayWithin);
</span><span class="cx">     while (node &amp;&amp; !is&lt;ElementType&gt;(*node))
</span><del>-        node = NodeTraversal::nextSkippingChildren(node, stayWithin);
</del><ins>+        node = NodeTraversal::nextSkippingChildren(*node, stayWithin);
</ins><span class="cx">     return downcast&lt;ElementType&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::firstChild(const ContainerNode* current) { return firstChildTemplate(current); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::firstChild(const ContainerNode&amp; current) { return firstChildTemplate(current); }
</ins><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::firstChild(const Node* current) { return firstChildTemplate(current); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::firstChild(const Node&amp; current) { return firstChildTemplate(current); }
</ins><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> 
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::lastChild(const ContainerNode* current) { return lastChildTemplate(current); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::lastChild(const ContainerNode&amp; current) { return lastChildTemplate(current); }
</ins><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::lastChild(const Node* current) { return lastChildTemplate(current); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::lastChild(const Node&amp; current) { return lastChildTemplate(current); }
</ins><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::firstWithin(const ContainerNode* current) { return firstWithinTemplate(current); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::firstWithin(const ContainerNode&amp; current) { return firstWithinTemplate(current); }
</ins><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::firstWithin(const Node* current) { return firstWithinTemplate(current); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::firstWithin(const Node&amp; current) { return firstWithinTemplate(current); }
</ins><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> 
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::lastWithin(const ContainerNode* current) { return lastWithinTemplate(current); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::lastWithin(const ContainerNode&amp; current) { return lastWithinTemplate(current); }
</ins><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::lastWithin(const Node* current) { return lastWithinTemplate(current); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::lastWithin(const Node&amp; current) { return lastWithinTemplate(current); }
</ins><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::next(const ContainerNode* current) { return nextTemplate(current); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::next(const ContainerNode&amp; current) { return nextTemplate(current); }
</ins><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::next(const Node* current) { return nextTemplate(current); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::next(const Node&amp; current) { return nextTemplate(current); }
</ins><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::next(const ContainerNode* current, const Node* stayWithin) { return nextTemplate(current, stayWithin); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::next(const ContainerNode&amp; current, const Node* stayWithin) { return nextTemplate(current, stayWithin); }
</ins><span class="cx"> template &lt;typename ElementType&gt;
</span><del>-inline ElementType* Traversal&lt;ElementType&gt;::next(const Node* current, const Node* stayWithin) { return nextTemplate(current, stayWithin); }
</del><ins>+inline ElementType* Traversal&lt;ElementType&gt;::next(const Node&amp; current, const Node* stayWithin) { return nextTemplate(current, stayWithin); }
</ins><span class="cx"> 
</span><span class="cx"> // FIXME: These should go somewhere else.
</span><del>-inline Element* ElementTraversal::previousIncludingPseudo(const Node* current, const Node* stayWithin)
</del><ins>+inline Element* ElementTraversal::previousIncludingPseudo(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::previousIncludingPseudo(current, stayWithin);
</span><span class="cx">     while (node &amp;&amp; !is&lt;Element&gt;(*node))
</span><del>-        node = NodeTraversal::previousIncludingPseudo(node, stayWithin);
</del><ins>+        node = NodeTraversal::previousIncludingPseudo(*node, stayWithin);
</ins><span class="cx">     return downcast&lt;Element&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline Element* ElementTraversal::nextIncludingPseudo(const Node* current, const Node* stayWithin)
</del><ins>+inline Element* ElementTraversal::nextIncludingPseudo(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::nextIncludingPseudo(current, stayWithin);
</span><span class="cx">     while (node &amp;&amp; !is&lt;Element&gt;(*node))
</span><del>-        node = NodeTraversal::nextIncludingPseudo(node, stayWithin);
</del><ins>+        node = NodeTraversal::nextIncludingPseudo(*node, stayWithin);
</ins><span class="cx">     return downcast&lt;Element&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline Element* ElementTraversal::nextIncludingPseudoSkippingChildren(const Node* current, const Node* stayWithin)
</del><ins>+inline Element* ElementTraversal::nextIncludingPseudoSkippingChildren(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::nextIncludingPseudoSkippingChildren(current, stayWithin);
</span><span class="cx">     while (node &amp;&amp; !is&lt;Element&gt;(*node))
</span><del>-        node = NodeTraversal::nextIncludingPseudoSkippingChildren(node, stayWithin);
</del><ins>+        node = NodeTraversal::nextIncludingPseudoSkippingChildren(*node, stayWithin);
</ins><span class="cx">     return downcast&lt;Element&gt;(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline Element* ElementTraversal::pseudoAwarePreviousSibling(const Node* current)
</del><ins>+inline Element* ElementTraversal::pseudoAwarePreviousSibling(const Node&amp; current)
</ins><span class="cx"> {
</span><del>-    Node* node = current-&gt;pseudoAwarePreviousSibling();
</del><ins>+    Node* node = current.pseudoAwarePreviousSibling();
</ins><span class="cx">     while (node &amp;&amp; !is&lt;Element&gt;(*node))
</span><span class="cx">         node = node-&gt;pseudoAwarePreviousSibling();
</span><span class="cx">     return downcast&lt;Element&gt;(node);
</span></span></pre></div>
<a id="trunkSourceWebCoredomInlineStyleSheetOwnercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/InlineStyleSheetOwner.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/InlineStyleSheetOwner.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/InlineStyleSheetOwner.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InlineStyleSheetOwner::createSheetFromTextContents(Element&amp; element)
</span><span class="cx"> {
</span><del>-    createSheet(element, TextNodeTraversal::contentsAsString(&amp;element));
</del><ins>+    createSheet(element, TextNodeTraversal::contentsAsString(element));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InlineStyleSheetOwner::clearSheet()
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/Node.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -476,7 +476,7 @@
</span><span class="cx">             break;
</span><span class="cx"> 
</span><span class="cx">         if (type != TEXT_NODE) {
</span><del>-            node = NodeTraversal::nextPostOrder(node.get());
</del><ins>+            node = NodeTraversal::nextPostOrder(*node);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -485,7 +485,7 @@
</span><span class="cx">         // Remove empty text nodes.
</span><span class="cx">         if (!text-&gt;length()) {
</span><span class="cx">             // Care must be taken to get the next node before removing the current node.
</span><del>-            node = NodeTraversal::nextPostOrder(node.get());
</del><ins>+            node = NodeTraversal::nextPostOrder(*node);
</ins><span class="cx">             text-&gt;remove(IGNORE_EXCEPTION);
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="lines">@@ -509,7 +509,7 @@
</span><span class="cx">             nextText-&gt;remove(IGNORE_EXCEPTION);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        node = NodeTraversal::nextPostOrder(node.get());
</del><ins>+        node = NodeTraversal::nextPostOrder(*node);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1597,7 +1597,7 @@
</span><span class="cx"> 
</span><span class="cx"> static void traverseTreeAndMark(const String&amp; baseIndent, const Node* rootNode, const Node* markedNode1, const char* markedLabel1, const Node* markedNode2, const char* markedLabel2)
</span><span class="cx"> {
</span><del>-    for (const Node* node = rootNode; node; node = NodeTraversal::next(node)) {
</del><ins>+    for (const Node* node = rootNode; node; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         if (node == markedNode1)
</span><span class="cx">             fprintf(stderr, &quot;%s&quot;, markedLabel1);
</span><span class="cx">         if (node == markedNode2)
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/NodeIterator.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/NodeIterator.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/NodeIterator.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">         isPointerBeforeNode = false;
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><del>-    node = NodeTraversal::next(node.get(), root);
</del><ins>+    node = NodeTraversal::next(*node, root);
</ins><span class="cx">     return node;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">         node = nullptr;
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><del>-    node = NodeTraversal::previous(node.get());
</del><ins>+    node = NodeTraversal::previous(*node);
</ins><span class="cx">     return node;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -175,22 +175,22 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (referenceNode.isPointerBeforeNode) {
</span><del>-        Node* node = NodeTraversal::next(&amp;removedNode, root());
</del><ins>+        Node* node = NodeTraversal::next(removedNode, root());
</ins><span class="cx">         if (node) {
</span><span class="cx">             // Move out from under the node being removed if the new reference
</span><span class="cx">             // node is a descendant of the node being removed.
</span><span class="cx">             while (node &amp;&amp; node-&gt;isDescendantOf(&amp;removedNode))
</span><del>-                node = NodeTraversal::next(node, root());
</del><ins>+                node = NodeTraversal::next(*node, root());
</ins><span class="cx">             if (node)
</span><span class="cx">                 referenceNode.node = node;
</span><span class="cx">         } else {
</span><del>-            node = NodeTraversal::previous(&amp;removedNode);
</del><ins>+            node = NodeTraversal::previous(removedNode);
</ins><span class="cx">             if (node) {
</span><span class="cx">                 // Move out from under the node being removed if the reference node is
</span><span class="cx">                 // a descendant of the node being removed.
</span><span class="cx">                 if (willRemoveReferenceNodeAncestor) {
</span><span class="cx">                     while (node &amp;&amp; node-&gt;isDescendantOf(&amp;removedNode))
</span><del>-                        node = NodeTraversal::previous(node);
</del><ins>+                        node = NodeTraversal::previous(*node);
</ins><span class="cx">                 }
</span><span class="cx">                 if (node) {
</span><span class="cx">                     // Removing last node.
</span><span class="lines">@@ -202,24 +202,24 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     } else {
</span><del>-        Node* node = NodeTraversal::previous(&amp;removedNode);
</del><ins>+        Node* node = NodeTraversal::previous(removedNode);
</ins><span class="cx">         if (node) {
</span><span class="cx">             // Move out from under the node being removed if the reference node is
</span><span class="cx">             // a descendant of the node being removed.
</span><span class="cx">             if (willRemoveReferenceNodeAncestor) {
</span><span class="cx">                 while (node &amp;&amp; node-&gt;isDescendantOf(&amp;removedNode))
</span><del>-                    node = NodeTraversal::previous(node);
</del><ins>+                    node = NodeTraversal::previous(*node);
</ins><span class="cx">             }
</span><span class="cx">             if (node)
</span><span class="cx">                 referenceNode.node = node;
</span><span class="cx">         } else {
</span><span class="cx">             // FIXME: This branch doesn't appear to have any LayoutTests.
</span><del>-            node = NodeTraversal::next(&amp;removedNode, root());
</del><ins>+            node = NodeTraversal::next(removedNode, root());
</ins><span class="cx">             // Move out from under the node being removed if the reference node is
</span><span class="cx">             // a descendant of the node being removed.
</span><span class="cx">             if (willRemoveReferenceNodeAncestor) {
</span><span class="cx">                 while (node &amp;&amp; node-&gt;isDescendantOf(&amp;removedNode))
</span><del>-                    node = NodeTraversal::previous(node);
</del><ins>+                    node = NodeTraversal::previous(*node);
</ins><span class="cx">             }
</span><span class="cx">             if (node)
</span><span class="cx">                 referenceNode.node = node;
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeTraversalcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/NodeTraversal.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/NodeTraversal.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/NodeTraversal.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -31,81 +31,81 @@
</span><span class="cx"> 
</span><span class="cx"> namespace NodeTraversal {
</span><span class="cx"> 
</span><del>-Node* previousIncludingPseudo(const Node* current, const Node* stayWithin)
</del><ins>+Node* previousIncludingPseudo(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx">     Node* previous;
</span><del>-    if (current == stayWithin)
</del><ins>+    if (&amp;current == stayWithin)
</ins><span class="cx">         return nullptr;
</span><del>-    if ((previous = current-&gt;pseudoAwarePreviousSibling())) {
</del><ins>+    if ((previous = current.pseudoAwarePreviousSibling())) {
</ins><span class="cx">         while (previous-&gt;pseudoAwareLastChild())
</span><span class="cx">             previous = previous-&gt;pseudoAwareLastChild();
</span><span class="cx">         return previous;
</span><span class="cx">     }
</span><del>-    return is&lt;PseudoElement&gt;(*current) ? downcast&lt;PseudoElement&gt;(*current).hostElement() : current-&gt;parentNode();
</del><ins>+    return is&lt;PseudoElement&gt;(current) ? downcast&lt;PseudoElement&gt;(current).hostElement() : current.parentNode();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* nextIncludingPseudo(const Node* current, const Node* stayWithin)
</del><ins>+Node* nextIncludingPseudo(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx">     Node* next;
</span><del>-    if ((next = current-&gt;pseudoAwareFirstChild()))
</del><ins>+    if ((next = current.pseudoAwareFirstChild()))
</ins><span class="cx">         return next;
</span><del>-    if (current == stayWithin)
</del><ins>+    if (&amp;current == stayWithin)
</ins><span class="cx">         return nullptr;
</span><del>-    if ((next = current-&gt;pseudoAwareNextSibling()))
</del><ins>+    if ((next = current.pseudoAwareNextSibling()))
</ins><span class="cx">         return next;
</span><del>-    current = is&lt;PseudoElement&gt;(*current) ? downcast&lt;PseudoElement&gt;(*current).hostElement() : current-&gt;parentNode();
-    for (; current; current = current-&gt;parentNode()) {
-        if (current == stayWithin)
</del><ins>+    const Node* ancestor = is&lt;PseudoElement&gt;(current) ? downcast&lt;PseudoElement&gt;(current).hostElement() : current.parentNode();
+    for (; ancestor; ancestor = ancestor-&gt;parentNode()) {
+        if (ancestor == stayWithin)
</ins><span class="cx">             return nullptr;
</span><del>-        if ((next = current-&gt;pseudoAwareNextSibling()))
</del><ins>+        if ((next = ancestor-&gt;pseudoAwareNextSibling()))
</ins><span class="cx">             return next;
</span><span class="cx">     }
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* nextIncludingPseudoSkippingChildren(const Node* current, const Node* stayWithin)
</del><ins>+Node* nextIncludingPseudoSkippingChildren(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx">     Node* next;
</span><del>-    if (current == stayWithin)
</del><ins>+    if (&amp;current == stayWithin)
</ins><span class="cx">         return nullptr;
</span><del>-    if ((next = current-&gt;pseudoAwareNextSibling()))
</del><ins>+    if ((next = current.pseudoAwareNextSibling()))
</ins><span class="cx">         return next;
</span><del>-    current = is&lt;PseudoElement&gt;(*current) ? downcast&lt;PseudoElement&gt;(*current).hostElement() : current-&gt;parentNode();
-    for (; current; current = current-&gt;parentNode()) {
-        if (current == stayWithin)
</del><ins>+    const Node* ancestor = is&lt;PseudoElement&gt;(current) ? downcast&lt;PseudoElement&gt;(current).hostElement() : current.parentNode();
+    for (; ancestor; ancestor = ancestor-&gt;parentNode()) {
+        if (ancestor == stayWithin)
</ins><span class="cx">             return nullptr;
</span><del>-        if ((next = current-&gt;pseudoAwareNextSibling()))
</del><ins>+        if ((next = ancestor-&gt;pseudoAwareNextSibling()))
</ins><span class="cx">             return next;
</span><span class="cx">     }
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* nextAncestorSibling(const Node* current)
</del><ins>+Node* nextAncestorSibling(const Node&amp; current)
</ins><span class="cx"> {
</span><del>-    ASSERT(!current-&gt;nextSibling());
-    for (current = current-&gt;parentNode(); current; current = current-&gt;parentNode()) {
-        if (current-&gt;nextSibling())
-            return current-&gt;nextSibling();
</del><ins>+    ASSERT(!current.nextSibling());
+    for (auto* ancestor = current.parentNode(); ancestor; ancestor = ancestor-&gt;parentNode()) {
+        if (ancestor-&gt;nextSibling())
+            return ancestor-&gt;nextSibling();
</ins><span class="cx">     }
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* nextAncestorSibling(const Node* current, const Node* stayWithin)
</del><ins>+Node* nextAncestorSibling(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>-    ASSERT(!current-&gt;nextSibling());
-    ASSERT(current != stayWithin);
-    for (current = current-&gt;parentNode(); current; current = current-&gt;parentNode()) {
-        if (current == stayWithin)
-            return 0;
-        if (current-&gt;nextSibling())
-            return current-&gt;nextSibling();
</del><ins>+    ASSERT(!current.nextSibling());
+    ASSERT(&amp;current != stayWithin);
+    for (auto* ancestor = current.parentNode(); ancestor; ancestor = ancestor-&gt;parentNode()) {
+        if (ancestor == stayWithin)
+            return nullptr;
+        if (ancestor-&gt;nextSibling())
+            return ancestor-&gt;nextSibling();
</ins><span class="cx">     }
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* last(const ContainerNode* current)
</del><ins>+Node* last(const ContainerNode&amp; current)
</ins><span class="cx"> {
</span><del>-    Node* node = current-&gt;lastChild();
</del><ins>+    Node* node = current.lastChild();
</ins><span class="cx">     if (!node)
</span><span class="cx">         return nullptr;
</span><span class="cx">     while (node-&gt;lastChild())
</span><span class="lines">@@ -113,69 +113,70 @@
</span><span class="cx">     return node;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* deepLastChild(Node* node)
</del><ins>+Node* deepLastChild(Node&amp; node)
</ins><span class="cx"> {
</span><del>-    while (node-&gt;lastChild())
-        node = node-&gt;lastChild();
-    return node;
</del><ins>+    Node* lastChild = &amp;node;
+    while (lastChild-&gt;lastChild())
+        lastChild = lastChild-&gt;lastChild();
+    return lastChild;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* previousSkippingChildren(const Node* current, const Node* stayWithin)
</del><ins>+Node* previousSkippingChildren(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>-    if (current == stayWithin)
-        return 0;
-    if (current-&gt;previousSibling())
-        return current-&gt;previousSibling();
-    for (current = current-&gt;parentNode(); current; current = current-&gt;parentNode()) {
-        if (current == stayWithin)
-            return 0;
-        if (current-&gt;previousSibling())
-            return current-&gt;previousSibling();
</del><ins>+    if (&amp;current == stayWithin)
+        return nullptr;
+    if (current.previousSibling())
+        return current.previousSibling();
+    for (auto* ancestor = current.parentNode(); ancestor; ancestor = ancestor-&gt;parentNode()) {
+        if (ancestor == stayWithin)
+            return nullptr;
+        if (ancestor-&gt;previousSibling())
+            return ancestor-&gt;previousSibling();
</ins><span class="cx">     }
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* nextPostOrder(const Node* current, const Node* stayWithin)
</del><ins>+Node* nextPostOrder(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>-    if (current == stayWithin)
-        return 0;
-    if (!current-&gt;nextSibling())
-        return current-&gt;parentNode();
-    Node* next = current-&gt;nextSibling();
</del><ins>+    if (&amp;current == stayWithin)
+        return nullptr;
+    if (!current.nextSibling())
+        return current.parentNode();
+    Node* next = current.nextSibling();
</ins><span class="cx">     while (next-&gt;firstChild())
</span><span class="cx">         next = next-&gt;firstChild();
</span><span class="cx">     return next;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static Node* previousAncestorSiblingPostOrder(const Node* current, const Node* stayWithin)
</del><ins>+static Node* previousAncestorSiblingPostOrder(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>-    ASSERT(!current-&gt;previousSibling());
-    for (current = current-&gt;parentNode(); current; current = current-&gt;parentNode()) {
-        if (current == stayWithin)
-            return 0;
-        if (current-&gt;previousSibling())
-            return current-&gt;previousSibling();
</del><ins>+    ASSERT(!current.previousSibling());
+    for (auto* ancestor = current.parentNode(); ancestor; ancestor = ancestor-&gt;parentNode()) {
+        if (ancestor == stayWithin)
+            return nullptr;
+        if (ancestor-&gt;previousSibling())
+            return ancestor-&gt;previousSibling();
</ins><span class="cx">     }
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* previousPostOrder(const Node* current, const Node* stayWithin)
</del><ins>+Node* previousPostOrder(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>-    if (current-&gt;lastChild())
-        return current-&gt;lastChild();
-    if (current == stayWithin)
-        return 0;
-    if (current-&gt;previousSibling())
-        return current-&gt;previousSibling();
</del><ins>+    if (current.lastChild())
+        return current.lastChild();
+    if (&amp;current == stayWithin)
+        return nullptr;
+    if (current.previousSibling())
+        return current.previousSibling();
</ins><span class="cx">     return previousAncestorSiblingPostOrder(current, stayWithin);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Node* previousSkippingChildrenPostOrder(const Node* current, const Node* stayWithin)
</del><ins>+Node* previousSkippingChildrenPostOrder(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>-    if (current == stayWithin)
-        return 0;
-    if (current-&gt;previousSibling())
-        return current-&gt;previousSibling();
</del><ins>+    if (&amp;current == stayWithin)
+        return nullptr;
+    if (current.previousSibling())
+        return current.previousSibling();
</ins><span class="cx">     return previousAncestorSiblingPostOrder(current, stayWithin);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeTraversalh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/NodeTraversal.h (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/NodeTraversal.h        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/NodeTraversal.h        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -35,96 +35,96 @@
</span><span class="cx"> // This uses the same order that tags appear in the source file. If the stayWithin
</span><span class="cx"> // argument is non-null, the traversal will stop once the specified node is reached.
</span><span class="cx"> // This can be used to restrict traversal to a particular sub-tree.
</span><del>-Node* next(const Node*);
-Node* next(const Node*, const Node* stayWithin);
-Node* next(const ContainerNode*);
-Node* next(const ContainerNode*, const Node* stayWithin);
-Node* next(const Text*);
-Node* next(const Text*, const Node* stayWithin);
</del><ins>+Node* next(const Node&amp;);
+Node* next(const Node&amp;, const Node* stayWithin);
+Node* next(const ContainerNode&amp;);
+Node* next(const ContainerNode&amp;, const Node* stayWithin);
+Node* next(const Text&amp;);
+Node* next(const Text&amp;, const Node* stayWithin);
</ins><span class="cx"> 
</span><span class="cx"> // Like next, but skips children and starts with the next sibling.
</span><del>-Node* nextSkippingChildren(const Node*);
-Node* nextSkippingChildren(const Node*, const Node* stayWithin);
</del><ins>+Node* nextSkippingChildren(const Node&amp;);
+Node* nextSkippingChildren(const Node&amp;, const Node* stayWithin);
</ins><span class="cx"> 
</span><span class="cx"> // Does a reverse pre-order traversal to find the node that comes before the current one in document order
</span><del>-Node* last(const ContainerNode*);
-Node* previous(const Node*, const Node* stayWithin = 0);
</del><ins>+Node* last(const ContainerNode&amp;);
+Node* previous(const Node&amp;, const Node* stayWithin = nullptr);
</ins><span class="cx"> 
</span><span class="cx"> // Like previous, but skips children and starts with the next sibling.
</span><del>-Node* previousSkippingChildren(const Node*, const Node* stayWithin = 0);
</del><ins>+Node* previousSkippingChildren(const Node&amp;, const Node* stayWithin = nullptr);
</ins><span class="cx"> 
</span><span class="cx"> // Like next, but visits parents after their children.
</span><del>-Node* nextPostOrder(const Node*, const Node* stayWithin = 0);
</del><ins>+Node* nextPostOrder(const Node&amp;, const Node* stayWithin = nullptr);
</ins><span class="cx"> 
</span><span class="cx"> // Like previous/previousSkippingChildren, but visits parents before their children.
</span><del>-Node* previousPostOrder(const Node*, const Node* stayWithin = 0);
-Node* previousSkippingChildrenPostOrder(const Node*, const Node* stayWithin = 0);
</del><ins>+Node* previousPostOrder(const Node&amp;, const Node* stayWithin = nullptr);
+Node* previousSkippingChildrenPostOrder(const Node&amp;, const Node* stayWithin = nullptr);
</ins><span class="cx"> 
</span><span class="cx"> // Pre-order traversal including the pseudo-elements.
</span><del>-Node* previousIncludingPseudo(const Node*, const Node* = 0);
-Node* nextIncludingPseudo(const Node*, const Node* = 0);
-Node* nextIncludingPseudoSkippingChildren(const Node*, const Node* = 0);
</del><ins>+Node* previousIncludingPseudo(const Node&amp;, const Node* = nullptr);
+Node* nextIncludingPseudo(const Node&amp;, const Node* = nullptr);
+Node* nextIncludingPseudoSkippingChildren(const Node&amp;, const Node* = nullptr);
</ins><span class="cx"> 
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace NodeTraversal {
</span><span class="cx"> 
</span><del>-WEBCORE_EXPORT Node* nextAncestorSibling(const Node*);
-WEBCORE_EXPORT Node* nextAncestorSibling(const Node*, const Node* stayWithin);
-WEBCORE_EXPORT Node* deepLastChild(Node*);
</del><ins>+WEBCORE_EXPORT Node* nextAncestorSibling(const Node&amp;);
+WEBCORE_EXPORT Node* nextAncestorSibling(const Node&amp;, const Node* stayWithin);
+WEBCORE_EXPORT Node* deepLastChild(Node&amp;);
</ins><span class="cx"> 
</span><span class="cx"> template &lt;class NodeType&gt;
</span><del>-inline Node* traverseNextTemplate(NodeType* current)
</del><ins>+inline Node* traverseNextTemplate(NodeType&amp; current)
</ins><span class="cx"> {
</span><del>-    if (current-&gt;firstChild())
-        return current-&gt;firstChild();
-    if (current-&gt;nextSibling())
-        return current-&gt;nextSibling();
</del><ins>+    if (current.firstChild())
+        return current.firstChild();
+    if (current.nextSibling())
+        return current.nextSibling();
</ins><span class="cx">     return nextAncestorSibling(current);
</span><span class="cx"> }
</span><del>-inline Node* next(const Node* current) { return traverseNextTemplate(current); }
-inline Node* next(const ContainerNode* current) { return traverseNextTemplate(current); }
</del><ins>+inline Node* next(const Node&amp; current) { return traverseNextTemplate(current); }
+inline Node* next(const ContainerNode&amp; current) { return traverseNextTemplate(current); }
</ins><span class="cx"> 
</span><span class="cx"> template &lt;class NodeType&gt;
</span><del>-inline Node* traverseNextTemplate(NodeType* current, const Node* stayWithin)
</del><ins>+inline Node* traverseNextTemplate(NodeType&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>-    if (current-&gt;firstChild())
-        return current-&gt;firstChild();
-    if (current == stayWithin)
-        return 0;
-    if (current-&gt;nextSibling())
-        return current-&gt;nextSibling();
</del><ins>+    if (current.firstChild())
+        return current.firstChild();
+    if (&amp;current == stayWithin)
+        return nullptr;
+    if (current.nextSibling())
+        return current.nextSibling();
</ins><span class="cx">     return nextAncestorSibling(current, stayWithin);
</span><span class="cx"> }
</span><del>-inline Node* next(const Node* current, const Node* stayWithin) { return traverseNextTemplate(current, stayWithin); }
-inline Node* next(const ContainerNode* current, const Node* stayWithin) { return traverseNextTemplate(current, stayWithin); }
</del><ins>+inline Node* next(const Node&amp; current, const Node* stayWithin) { return traverseNextTemplate(current, stayWithin); }
+inline Node* next(const ContainerNode&amp; current, const Node* stayWithin) { return traverseNextTemplate(current, stayWithin); }
</ins><span class="cx"> 
</span><del>-inline Node* nextSkippingChildren(const Node* current)
</del><ins>+inline Node* nextSkippingChildren(const Node&amp; current)
</ins><span class="cx"> {
</span><del>-    if (current-&gt;nextSibling())
-        return current-&gt;nextSibling();
</del><ins>+    if (current.nextSibling())
+        return current.nextSibling();
</ins><span class="cx">     return nextAncestorSibling(current);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline Node* nextSkippingChildren(const Node* current, const Node* stayWithin)
</del><ins>+inline Node* nextSkippingChildren(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>-    if (current == stayWithin)
-        return 0;
-    if (current-&gt;nextSibling())
-        return current-&gt;nextSibling();
</del><ins>+    if (&amp;current == stayWithin)
+        return nullptr;
+    if (current.nextSibling())
+        return current.nextSibling();
</ins><span class="cx">     return nextAncestorSibling(current, stayWithin);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline Node* next(const Text* current) { return nextSkippingChildren(current); }
-inline Node* next(const Text* current, const Node* stayWithin) { return nextSkippingChildren(current, stayWithin); }
</del><ins>+inline Node* next(const Text&amp; current) { return nextSkippingChildren(current); }
+inline Node* next(const Text&amp; current, const Node* stayWithin) { return nextSkippingChildren(current, stayWithin); }
</ins><span class="cx"> 
</span><del>-inline Node* previous(const Node* current, const Node* stayWithin)
</del><ins>+inline Node* previous(const Node&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>-    if (Node* previous = current-&gt;previousSibling())
-        return deepLastChild(previous);
-    if (current-&gt;parentNode() == stayWithin)
</del><ins>+    if (Node* previous = current.previousSibling())
+        return deepLastChild(*previous);
+    if (current.parentNode() == stayWithin)
</ins><span class="cx">         return nullptr;
</span><del>-    return current-&gt;parentNode();
</del><ins>+    return current.parentNode();
</ins><span class="cx"> }
</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 (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Range.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/Range.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -1071,7 +1071,7 @@
</span><span class="cx">     StringBuilder builder;
</span><span class="cx"> 
</span><span class="cx">     Node* pastLast = pastLastNode();
</span><del>-    for (Node* n = firstNode(); n != pastLast; n = NodeTraversal::next(n)) {
</del><ins>+    for (Node* n = firstNode(); n != pastLast; n = NodeTraversal::next(*n)) {
</ins><span class="cx">         if (n-&gt;nodeType() == Node::TEXT_NODE || n-&gt;nodeType() == Node::CDATA_SECTION_NODE) {
</span><span class="cx">             const String&amp; data = static_cast&lt;CharacterData*&gt;(n)-&gt;data();
</span><span class="cx">             int length = data.length();
</span><span class="lines">@@ -1513,7 +1513,7 @@
</span><span class="cx">         return;
</span><span class="cx">         
</span><span class="cx">     Node* pastLast = pastLastNode();
</span><del>-    for (Node* n = firstNode(); n != pastLast; n = NodeTraversal::next(n)) {
</del><ins>+    for (Node* n = firstNode(); n != pastLast; n = NodeTraversal::next(*n)) {
</ins><span class="cx">         if (n-&gt;isReadOnlyNode()) {
</span><span class="cx">             ec = NO_MODIFICATION_ALLOWED_ERR;
</span><span class="cx">             return;
</span><span class="lines">@@ -1546,14 +1546,14 @@
</span><span class="cx"> Node* Range::firstNode() const
</span><span class="cx"> {
</span><span class="cx">     if (!m_start.container())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     if (m_start.container()-&gt;offsetInCharacters())
</span><span class="cx">         return m_start.container();
</span><span class="cx">     if (Node* child = m_start.container()-&gt;traverseToChildAt(m_start.offset()))
</span><span class="cx">         return child;
</span><span class="cx">     if (!m_start.offset())
</span><span class="cx">         return m_start.container();
</span><del>-    return NodeTraversal::nextSkippingChildren(m_start.container());
</del><ins>+    return NodeTraversal::nextSkippingChildren(*m_start.container());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ShadowRoot* Range::shadowRoot() const
</span><span class="lines">@@ -1564,12 +1564,12 @@
</span><span class="cx"> Node* Range::pastLastNode() const
</span><span class="cx"> {
</span><span class="cx">     if (!m_start.container() || !m_end.container())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     if (m_end.container()-&gt;offsetInCharacters())
</span><del>-        return NodeTraversal::nextSkippingChildren(m_end.container());
</del><ins>+        return NodeTraversal::nextSkippingChildren(*m_end.container());
</ins><span class="cx">     if (Node* child = m_end.container()-&gt;traverseToChildAt(m_end.offset()))
</span><span class="cx">         return child;
</span><del>-    return NodeTraversal::nextSkippingChildren(m_end.container());
</del><ins>+    return NodeTraversal::nextSkippingChildren(*m_end.container());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> IntRect Range::boundingBox() const
</span><span class="lines">@@ -1598,7 +1598,7 @@
</span><span class="cx">     bool someFixed = false;
</span><span class="cx"> 
</span><span class="cx">     Node* stopNode = pastLastNode();
</span><del>-    for (Node* node = firstNode(); node != stopNode; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = firstNode(); node != stopNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         RenderObject* renderer = node-&gt;renderer();
</span><span class="cx">         if (!renderer)
</span><span class="cx">             continue;
</span><span class="lines">@@ -1634,7 +1634,7 @@
</span><span class="cx">     bool someFixed = false;
</span><span class="cx"> 
</span><span class="cx">     Node* stopNode = pastLastNode();
</span><del>-    for (Node* node = firstNode(); node != stopNode; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = firstNode(); node != stopNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         RenderObject* renderer = node-&gt;renderer();
</span><span class="cx">         if (!renderer)
</span><span class="cx">             continue;
</span><span class="lines">@@ -1715,7 +1715,7 @@
</span><span class="cx">     Node* stopNode = pastLastNode();
</span><span class="cx">     bool hasFlippedWritingMode = startContainer-&gt;renderer() &amp;&amp; startContainer-&gt;renderer()-&gt;style().isFlippedBlocksWritingMode();
</span><span class="cx">     bool containsDifferentWritingModes = false;
</span><del>-    for (Node* node = firstNode(); node &amp;&amp; node != stopNode; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = firstNode(); node &amp;&amp; node != stopNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         RenderObject* renderer = node-&gt;renderer();
</span><span class="cx">         // Only ask leaf render objects for their line box rects.
</span><span class="cx">         if (renderer &amp;&amp; !renderer-&gt;firstChildSlow() &amp;&amp; renderer-&gt;style().userSelect() != SELECT_NONE) {
</span><span class="lines">@@ -2197,7 +2197,7 @@
</span><span class="cx">     Node* stopNode = pastLastNode();
</span><span class="cx"> 
</span><span class="cx">     HashSet&lt;Node*&gt; selectedElementsSet;
</span><del>-    for (Node* node = firstNode(); node != stopNode; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = firstNode(); node != stopNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         if (node-&gt;isElementNode())
</span><span class="cx">             selectedElementsSet.add(node);
</span><span class="cx">     }
</span><span class="lines">@@ -2207,7 +2207,7 @@
</span><span class="cx">     for (Node* parent = lastNode-&gt;parentNode(); parent; parent = parent-&gt;parentNode())
</span><span class="cx">         selectedElementsSet.remove(parent);
</span><span class="cx"> 
</span><del>-    for (Node* node = firstNode(); node != stopNode; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = firstNode(); node != stopNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         if (is&lt;Element&gt;(*node) &amp;&amp; selectedElementsSet.contains(node) &amp;&amp; !selectedElementsSet.contains(node-&gt;parentNode())) {
</span><span class="cx">             if (RenderBoxModelObject* renderBoxModelObject = downcast&lt;Element&gt;(*node).renderBoxModelObject()) {
</span><span class="cx">                 Vector&lt;FloatQuad&gt; elementQuads;
</span></span></pre></div>
<a id="trunkSourceWebCoredomScriptElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ScriptElement.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ScriptElement.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/ScriptElement.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -377,7 +377,7 @@
</span><span class="cx"> 
</span><span class="cx"> String ScriptElement::scriptContent() const
</span><span class="cx"> {
</span><del>-    return TextNodeTraversal::contentsAsString(&amp;m_element);
</del><ins>+    return TextNodeTraversal::contentsAsString(m_element);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ScriptElement* toScriptElementIfPossible(Element* element)
</span></span></pre></div>
<a id="trunkSourceWebCoredomShadowRootcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ShadowRoot.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ShadowRoot.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/ShadowRoot.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx"> void ShadowRoot::removeAllEventListeners()
</span><span class="cx"> {
</span><span class="cx">     DocumentFragment::removeAllEventListeners();
</span><del>-    for (Node* node = firstChild(); node; node = NodeTraversal::next(node))
</del><ins>+    for (Node* node = firstChild(); node; node = NodeTraversal::next(*node))
</ins><span class="cx">         node-&gt;removeAllEventListeners();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Text.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Text.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/Text.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -111,10 +111,11 @@
</span><span class="cx"> {
</span><span class="cx">     const Text* startText = earliestLogicallyAdjacentTextNode(this);
</span><span class="cx">     const Text* endText = latestLogicallyAdjacentTextNode(this);
</span><del>-    const Node* onePastEndText = TextNodeTraversal::nextSibling(endText);
</del><ins>+    ASSERT(endText);
+    const Node* onePastEndText = TextNodeTraversal::nextSibling(*endText);
</ins><span class="cx"> 
</span><span class="cx">     StringBuilder result;
</span><del>-    for (const Text* text = startText; text != onePastEndText; text = TextNodeTraversal::nextSibling(text))
</del><ins>+    for (const Text* text = startText; text != onePastEndText; text = TextNodeTraversal::nextSibling(*text))
</ins><span class="cx">         result.append(text-&gt;data());
</span><span class="cx">     return result.toString();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomTextNodeTraversalcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TextNodeTraversal.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TextNodeTraversal.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/TextNodeTraversal.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -32,25 +32,24 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> namespace TextNodeTraversal {
</span><span class="cx"> 
</span><del>-void appendContents(const ContainerNode* root, StringBuilder&amp; result)
</del><ins>+void appendContents(const ContainerNode&amp; root, StringBuilder&amp; result)
</ins><span class="cx"> {
</span><del>-    for (Text* text = TextNodeTraversal::firstWithin(root); text; text = TextNodeTraversal::next(text, root))
</del><ins>+    for (Text* text = TextNodeTraversal::firstWithin(root); text; text = TextNodeTraversal::next(*text, &amp;root))
</ins><span class="cx">         result.append(text-&gt;data());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String contentsAsString(const ContainerNode* root)
</del><ins>+String contentsAsString(const ContainerNode&amp; root)
</ins><span class="cx"> {
</span><span class="cx">     StringBuilder result;
</span><span class="cx">     appendContents(root, result);
</span><span class="cx">     return result.toString();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String contentsAsString(const Node* root)
</del><ins>+String contentsAsString(const Node&amp; root)
</ins><span class="cx"> {
</span><del>-    ASSERT(root);
-    if (is&lt;Text&gt;(*root))
-        return downcast&lt;Text&gt;(*root).data();
-    if (is&lt;ContainerNode&gt;(*root))
</del><ins>+    if (is&lt;Text&gt;(root))
+        return downcast&lt;Text&gt;(root).data();
+    if (is&lt;ContainerNode&gt;(root))
</ins><span class="cx">         return contentsAsString(downcast&lt;ContainerNode&gt;(root));
</span><span class="cx">     return String();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomTextNodeTraversalh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TextNodeTraversal.h (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TextNodeTraversal.h        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/TextNodeTraversal.h        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -37,78 +37,78 @@
</span><span class="cx"> namespace TextNodeTraversal {
</span><span class="cx"> 
</span><span class="cx"> // First text child of the node.
</span><del>-Text* firstChild(const Node*);
-Text* firstChild(const ContainerNode*);
</del><ins>+Text* firstChild(const Node&amp;);
+Text* firstChild(const ContainerNode&amp;);
</ins><span class="cx"> 
</span><span class="cx"> // First text descendant of the node.
</span><del>-Text* firstWithin(const Node*);
-Text* firstWithin(const ContainerNode*);
</del><ins>+Text* firstWithin(const Node&amp;);
+Text* firstWithin(const ContainerNode&amp;);
</ins><span class="cx"> 
</span><span class="cx"> // Pre-order traversal skipping non-text nodes.
</span><del>-Text* next(const Node*);
-Text* next(const Node*, const Node* stayWithin);
-Text* next(const Text*);
-Text* next(const Text*, const Node* stayWithin);
</del><ins>+Text* next(const Node&amp;);
+Text* next(const Node&amp;, const Node* stayWithin);
+Text* next(const Text&amp;);
+Text* next(const Text&amp;, const Node* stayWithin);
</ins><span class="cx"> 
</span><span class="cx"> // Next text sibling.
</span><del>-Text* nextSibling(const Node*);
</del><ins>+Text* nextSibling(const Node&amp;);
</ins><span class="cx"> 
</span><span class="cx"> // Concatenated text contents of a subtree.
</span><del>-String contentsAsString(const Node*);
-String contentsAsString(const ContainerNode*);
-void appendContents(const ContainerNode*, StringBuilder&amp; result);
</del><ins>+String contentsAsString(const Node&amp;);
+String contentsAsString(const ContainerNode&amp;);
+void appendContents(const ContainerNode&amp;, StringBuilder&amp; result);
</ins><span class="cx"> 
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace TextNodeTraversal {
</span><span class="cx"> 
</span><span class="cx"> template &lt;class NodeType&gt;
</span><del>-inline Text* firstTextChildTemplate(NodeType* current)
</del><ins>+inline Text* firstTextChildTemplate(NodeType&amp; current)
</ins><span class="cx"> {
</span><del>-    Node* node = current-&gt;firstChild();
</del><ins>+    Node* node = current.firstChild();
</ins><span class="cx">     while (node &amp;&amp; !is&lt;Text&gt;(*node))
</span><span class="cx">         node = node-&gt;nextSibling();
</span><span class="cx">     return downcast&lt;Text&gt;(node);
</span><span class="cx"> }
</span><del>-inline Text* firstChild(const Node* current) { return firstTextChildTemplate(current); }
-inline Text* firstChild(const ContainerNode* current) { return firstTextChildTemplate(current); }
</del><ins>+inline Text* firstChild(const Node&amp; current) { return firstTextChildTemplate(current); }
+inline Text* firstChild(const ContainerNode&amp; current) { return firstTextChildTemplate(current); }
</ins><span class="cx"> 
</span><span class="cx"> template &lt;class NodeType&gt;
</span><del>-inline Text* firstTextWithinTemplate(NodeType* current)
</del><ins>+inline Text* firstTextWithinTemplate(NodeType&amp; current)
</ins><span class="cx"> {
</span><del>-    Node* node = current-&gt;firstChild();
</del><ins>+    Node* node = current.firstChild();
</ins><span class="cx">     while (node &amp;&amp; !is&lt;Text&gt;(*node))
</span><del>-        node = NodeTraversal::next(node, current);
</del><ins>+        node = NodeTraversal::next(*node, &amp;current);
</ins><span class="cx">     return downcast&lt;Text&gt;(node);
</span><span class="cx"> }
</span><del>-inline Text* firstWithin(const Node* current) { return firstTextWithinTemplate(current); }
-inline Text* firstWithin(const ContainerNode* current) { return firstTextWithinTemplate(current); }
</del><ins>+inline Text* firstWithin(const Node&amp; current) { return firstTextWithinTemplate(current); }
+inline Text* firstWithin(const ContainerNode&amp; current) { return firstTextWithinTemplate(current); }
</ins><span class="cx"> 
</span><span class="cx"> template &lt;class NodeType&gt;
</span><del>-inline Text* traverseNextTextTemplate(NodeType* current)
</del><ins>+inline Text* traverseNextTextTemplate(NodeType&amp; current)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::next(current);
</span><span class="cx">     while (node &amp;&amp; !is&lt;Text&gt;(*node))
</span><del>-        node = NodeTraversal::next(node);
</del><ins>+        node = NodeTraversal::next(*node);
</ins><span class="cx">     return downcast&lt;Text&gt;(node);
</span><span class="cx"> }
</span><del>-inline Text* next(const Node* current) { return traverseNextTextTemplate(current); }
-inline Text* next(const Text* current) { return traverseNextTextTemplate(current); }
</del><ins>+inline Text* next(const Node&amp; current) { return traverseNextTextTemplate(current); }
+inline Text* next(const Text&amp; current) { return traverseNextTextTemplate(current); }
</ins><span class="cx"> 
</span><span class="cx"> template &lt;class NodeType&gt;
</span><del>-inline Text* traverseNextTextTemplate(NodeType* current, const Node* stayWithin)
</del><ins>+inline Text* traverseNextTextTemplate(NodeType&amp; current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = NodeTraversal::next(current, stayWithin);
</span><span class="cx">     while (node &amp;&amp; !is&lt;Text&gt;(*node))
</span><del>-        node = NodeTraversal::next(node, stayWithin);
</del><ins>+        node = NodeTraversal::next(*node, stayWithin);
</ins><span class="cx">     return downcast&lt;Text&gt;(node);
</span><span class="cx"> }
</span><del>-inline Text* next(const Node* current, const Node* stayWithin) { return traverseNextTextTemplate(current, stayWithin); }
-inline Text* next(const Text* current, const Node* stayWithin) { return traverseNextTextTemplate(current, stayWithin); }
</del><ins>+inline Text* next(const Node&amp; current, const Node* stayWithin) { return traverseNextTextTemplate(current, stayWithin); }
+inline Text* next(const Text&amp; current, const Node* stayWithin) { return traverseNextTextTemplate(current, stayWithin); }
</ins><span class="cx"> 
</span><del>-inline Text* nextSibling(const Node* current)
</del><ins>+inline Text* nextSibling(const Node&amp; current)
</ins><span class="cx"> {
</span><del>-    Node* node = current-&gt;nextSibling();
</del><ins>+    Node* node = current.nextSibling();
</ins><span class="cx">     while (node &amp;&amp; !is&lt;Text&gt;(*node))
</span><span class="cx">         node = node-&gt;nextSibling();
</span><span class="cx">     return downcast&lt;Text&gt;(node);
</span></span></pre></div>
<a id="trunkSourceWebCoredomTreeScopeAdoptercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TreeScopeAdopter.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TreeScopeAdopter.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/TreeScopeAdopter.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">         oldDocument.incDOMTreeVersion();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    for (Node* node = root; node; node = NodeTraversal::next(node, root)) {
</del><ins>+    for (Node* node = root; node; node = NodeTraversal::next(*node, root)) {
</ins><span class="cx">         updateTreeScope(node);
</span><span class="cx"> 
</span><span class="cx">         if (willMoveToNewDocument)
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx"> 
</span><span class="cx"> void TreeScopeAdopter::moveShadowTreeToNewDocument(ShadowRoot* shadowRoot, Document* oldDocument, Document* newDocument) const
</span><span class="cx"> {
</span><del>-    for (Node* node = shadowRoot; node; node = NodeTraversal::next(node, shadowRoot)) {
</del><ins>+    for (Node* node = shadowRoot; node; node = NodeTraversal::next(*node, shadowRoot)) {
</ins><span class="cx">         moveNodeToNewDocument(node, oldDocument, newDocument);
</span><span class="cx">         if (ShadowRoot* shadow = node-&gt;shadowRoot())
</span><span class="cx">             moveShadowTreeToNewDocument(shadow, oldDocument, newDocument);
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> static bool didMoveToNewDocumentWasCalled = false;
</span><del>-static Document* oldDocumentDidMoveToNewDocumentWasCalledWith = 0;
</del><ins>+static Document* oldDocumentDidMoveToNewDocumentWasCalledWith = nullptr;
</ins><span class="cx"> 
</span><span class="cx"> void TreeScopeAdopter::ensureDidMoveToNewDocumentWasCalled(Document* oldDocument)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoredomTreeWalkercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TreeWalker.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TreeWalker.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/TreeWalker.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -257,23 +257,23 @@
</span><span class="cx">         node = firstChild;
</span><span class="cx">         short acceptNodeResult = acceptNode(state, node.get());
</span><span class="cx">         if (state &amp;&amp; state-&gt;hadException())
</span><del>-            return 0;
</del><ins>+            return nullptr;
</ins><span class="cx">         if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
</span><span class="cx">             return setCurrent(node.release());
</span><span class="cx">         if (acceptNodeResult == NodeFilter::FILTER_REJECT)
</span><span class="cx">             break;
</span><span class="cx">     }
</span><del>-    while (Node* nextSibling = NodeTraversal::nextSkippingChildren(node.get(), root())) {
</del><ins>+    while (Node* nextSibling = NodeTraversal::nextSkippingChildren(*node, root())) {
</ins><span class="cx">         node = nextSibling;
</span><span class="cx">         short acceptNodeResult = acceptNode(state, node.get());
</span><span class="cx">         if (state &amp;&amp; state-&gt;hadException())
</span><del>-            return 0;
</del><ins>+            return nullptr;
</ins><span class="cx">         if (acceptNodeResult == NodeFilter::FILTER_ACCEPT)
</span><span class="cx">             return setCurrent(node.release());
</span><span class="cx">         if (acceptNodeResult == NodeFilter::FILTER_SKIP)
</span><span class="cx">             goto Children;
</span><span class="cx">     }
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoredomTypedElementDescendantIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TypedElementDescendantIterator.h (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TypedElementDescendantIterator.h        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/dom/TypedElementDescendantIterator.h        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -133,7 +133,7 @@
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline TypedElementDescendantIterator&lt;ElementType&gt; TypedElementDescendantIteratorAdapter&lt;ElementType&gt;::begin()
</span><span class="cx"> {
</span><del>-    return TypedElementDescendantIterator&lt;ElementType&gt;(m_root, Traversal&lt;ElementType&gt;::firstWithin(&amp;m_root));
</del><ins>+    return TypedElementDescendantIterator&lt;ElementType&gt;(m_root, Traversal&lt;ElementType&gt;::firstWithin(m_root));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="lines">@@ -155,20 +155,20 @@
</span><span class="cx">     ASSERT(descendant.isDescendantOf(&amp;m_root));
</span><span class="cx">     if (is&lt;ElementType&gt;(descendant))
</span><span class="cx">         return TypedElementDescendantIterator&lt;ElementType&gt;(m_root, downcast&lt;ElementType&gt;(&amp;descendant));
</span><del>-    ElementType* next = Traversal&lt;ElementType&gt;::next(&amp;descendant, &amp;m_root);
</del><ins>+    ElementType* next = Traversal&lt;ElementType&gt;::next(descendant, &amp;m_root);
</ins><span class="cx">     return TypedElementDescendantIterator&lt;ElementType&gt;(m_root, next);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline ElementType* TypedElementDescendantIteratorAdapter&lt;ElementType&gt;::first()
</span><span class="cx"> {
</span><del>-    return Traversal&lt;ElementType&gt;::firstWithin(&amp;m_root);
</del><ins>+    return Traversal&lt;ElementType&gt;::firstWithin(m_root);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline ElementType* TypedElementDescendantIteratorAdapter&lt;ElementType&gt;::last()
</span><span class="cx"> {
</span><del>-    return Traversal&lt;ElementType&gt;::lastWithin(&amp;m_root);
</del><ins>+    return Traversal&lt;ElementType&gt;::lastWithin(m_root);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // TypedElementDescendantConstIteratorAdapter
</span><span class="lines">@@ -182,7 +182,7 @@
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline TypedElementDescendantConstIterator&lt;ElementType&gt; TypedElementDescendantConstIteratorAdapter&lt;ElementType&gt;::begin() const
</span><span class="cx"> {
</span><del>-    return TypedElementDescendantConstIterator&lt;ElementType&gt;(m_root, Traversal&lt;ElementType&gt;::firstWithin(&amp;m_root));
</del><ins>+    return TypedElementDescendantConstIterator&lt;ElementType&gt;(m_root, Traversal&lt;ElementType&gt;::firstWithin(m_root));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="lines">@@ -204,20 +204,20 @@
</span><span class="cx">     ASSERT(descendant.isDescendantOf(&amp;m_root));
</span><span class="cx">     if (is&lt;ElementType&gt;(descendant))
</span><span class="cx">         return TypedElementDescendantConstIterator&lt;ElementType&gt;(m_root, downcast&lt;ElementType&gt;(&amp;descendant));
</span><del>-    const ElementType* next = Traversal&lt;ElementType&gt;::next(&amp;descendant, &amp;m_root);
</del><ins>+    const ElementType* next = Traversal&lt;ElementType&gt;::next(descendant, &amp;m_root);
</ins><span class="cx">     return TypedElementDescendantConstIterator&lt;ElementType&gt;(m_root, next);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline const ElementType* TypedElementDescendantConstIteratorAdapter&lt;ElementType&gt;::first() const
</span><span class="cx"> {
</span><del>-    return Traversal&lt;ElementType&gt;::firstWithin(&amp;m_root);
</del><ins>+    return Traversal&lt;ElementType&gt;::firstWithin(m_root);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename ElementType&gt;
</span><span class="cx"> inline const ElementType* TypedElementDescendantConstIteratorAdapter&lt;ElementType&gt;::last() const
</span><span class="cx"> {
</span><del>-    return Traversal&lt;ElementType&gt;::lastWithin(&amp;m_root);
</del><ins>+    return Traversal&lt;ElementType&gt;::lastWithin(m_root);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Standalone functions
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingApplyStyleCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ApplyStyleCommand.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ApplyStyleCommand.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/ApplyStyleCommand.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -359,26 +359,26 @@
</span><span class="cx">     // an ancestor of the start node), we gather nodes up to the next sibling of the end node
</span><span class="cx">     Node *beyondEnd;
</span><span class="cx">     if (start.deprecatedNode()-&gt;isDescendantOf(end.deprecatedNode()))
</span><del>-        beyondEnd = NodeTraversal::nextSkippingChildren(end.deprecatedNode());
</del><ins>+        beyondEnd = NodeTraversal::nextSkippingChildren(*end.deprecatedNode());
</ins><span class="cx">     else
</span><del>-        beyondEnd = NodeTraversal::next(end.deprecatedNode());
</del><ins>+        beyondEnd = NodeTraversal::next(*end.deprecatedNode());
</ins><span class="cx">     
</span><span class="cx">     start = start.upstream(); // Move upstream to ensure we do not add redundant spans.
</span><span class="cx">     Node* startNode = start.deprecatedNode();
</span><span class="cx">     if (startNode-&gt;isTextNode() &amp;&amp; start.deprecatedEditingOffset() &gt;= caretMaxOffset(startNode)) // Move out of text node if range does not include its characters.
</span><del>-        startNode = NodeTraversal::next(startNode);
</del><ins>+        startNode = NodeTraversal::next(*startNode);
</ins><span class="cx"> 
</span><span class="cx">     // Store away font size before making any changes to the document.
</span><span class="cx">     // This ensures that changes to one node won't effect another.
</span><span class="cx">     HashMap&lt;Node*, float&gt; startingFontSizes;
</span><del>-    for (Node *node = startNode; node != beyondEnd; node = NodeTraversal::next(node))
</del><ins>+    for (Node *node = startNode; node != beyondEnd; node = NodeTraversal::next(*node))
</ins><span class="cx">         startingFontSizes.set(node, computedFontSize(node));
</span><span class="cx"> 
</span><span class="cx">     // These spans were added by us. If empty after font size changes, they can be removed.
</span><span class="cx">     Vector&lt;RefPtr&lt;HTMLElement&gt;&gt; unstyledSpans;
</span><span class="cx">     
</span><span class="cx">     Node* lastStyledNode = 0;
</span><del>-    for (Node* node = startNode; node != beyondEnd; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = startNode; node != beyondEnd; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         RefPtr&lt;HTMLElement&gt; element;
</span><span class="cx">         if (is&lt;HTMLElement&gt;(*node)) {
</span><span class="cx">             // Only work on fully selected nodes.
</span><span class="lines">@@ -683,19 +683,19 @@
</span><span class="cx">     Node* startNode = start.deprecatedNode();
</span><span class="cx"> 
</span><span class="cx">     if (start.deprecatedEditingOffset() &gt;= caretMaxOffset(start.deprecatedNode())) {
</span><del>-        startNode = NodeTraversal::next(startNode);
</del><ins>+        startNode = NodeTraversal::next(*startNode);
</ins><span class="cx">         if (!startNode || comparePositions(end, firstPositionInOrBeforeNode(startNode)) &lt; 0)
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     Node* pastEndNode = end.deprecatedNode();
</span><span class="cx">     if (end.deprecatedEditingOffset() &gt;= caretMaxOffset(end.deprecatedNode()))
</span><del>-        pastEndNode = NodeTraversal::nextSkippingChildren(end.deprecatedNode());
</del><ins>+        pastEndNode = NodeTraversal::nextSkippingChildren(*end.deprecatedNode());
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Callers should perform this operation on a Range that includes the br
</span><span class="cx">     // if they want style applied to the empty line.
</span><span class="cx">     if (start == end &amp;&amp; start.deprecatedNode()-&gt;hasTagName(brTag))
</span><del>-        pastEndNode = NodeTraversal::next(start.deprecatedNode());
</del><ins>+        pastEndNode = NodeTraversal::next(*start.deprecatedNode());
</ins><span class="cx"> 
</span><span class="cx">     // Start from the highest fully selected ancestor so that we can modify the fully selected node.
</span><span class="cx">     // e.g. When applying font-size: large on &lt;font color=&quot;blue&quot;&gt;hello&lt;/font&gt;, we need to include the font element in our run
</span><span class="lines">@@ -710,14 +710,14 @@
</span><span class="cx">     applyInlineStyleToNodeRange(style, startNode, pastEndNode);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool containsNonEditableRegion(Node* node)
</del><ins>+static bool containsNonEditableRegion(Node&amp; node)
</ins><span class="cx"> {
</span><del>-    if (!node-&gt;hasEditableStyle())
</del><ins>+    if (!node.hasEditableStyle())
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     Node* sibling = NodeTraversal::nextSkippingChildren(node);
</span><del>-    for (Node* descendent = node-&gt;firstChild(); descendent &amp;&amp; descendent != sibling; descendent = NodeTraversal::next(descendent)) {
-        if (!descendent-&gt;hasEditableStyle())
</del><ins>+    for (Node* descendant = node.firstChild(); descendant &amp;&amp; descendant != sibling; descendant = NodeTraversal::next(*descendant)) {
+        if (!descendant-&gt;hasEditableStyle())
</ins><span class="cx">             return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -756,7 +756,7 @@
</span><span class="cx">     Vector&lt;InlineRunToApplyStyle&gt; runs;
</span><span class="cx">     RefPtr&lt;Node&gt; node = startNode;
</span><span class="cx">     for (RefPtr&lt;Node&gt; next; node &amp;&amp; node != pastEndNode; node = next) {
</span><del>-        next = NodeTraversal::next(node.get());
</del><ins>+        next = NodeTraversal::next(*node);
</ins><span class="cx"> 
</span><span class="cx">         if (!node-&gt;renderer() || !node-&gt;hasEditableStyle())
</span><span class="cx">             continue;
</span><span class="lines">@@ -773,7 +773,7 @@
</span><span class="cx">             if (MutableStyleProperties* otherStyle = style-&gt;style())
</span><span class="cx">                 inlineStyle-&gt;mergeAndOverrideOnConflict(*otherStyle);
</span><span class="cx">             setNodeAttribute(&amp;element, styleAttr, inlineStyle-&gt;asText());
</span><del>-            next = NodeTraversal::nextSkippingChildren(node.get());
</del><ins>+            next = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx">         
</span><span class="lines">@@ -781,10 +781,10 @@
</span><span class="cx">             continue;
</span><span class="cx">         
</span><span class="cx">         if (node-&gt;hasChildNodes()) {
</span><del>-            if (node-&gt;contains(pastEndNode.get()) || containsNonEditableRegion(node.get()) || !node-&gt;parentNode()-&gt;hasEditableStyle())
</del><ins>+            if (node-&gt;contains(pastEndNode.get()) || containsNonEditableRegion(*node) || !node-&gt;parentNode()-&gt;hasEditableStyle())
</ins><span class="cx">                 continue;
</span><span class="cx">             if (editingIgnoresContent(node.get())) {
</span><del>-                next = NodeTraversal::nextSkippingChildren(node.get());
</del><ins>+                next = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx">                 continue;
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="lines">@@ -792,15 +792,13 @@
</span><span class="cx">         Node* runStart = node.get();
</span><span class="cx">         Node* runEnd = node.get();
</span><span class="cx">         Node* sibling = node-&gt;nextSibling();
</span><del>-        while (sibling &amp;&amp; sibling != pastEndNode &amp;&amp; !sibling-&gt;contains(pastEndNode.get())
-               &amp;&amp; (!isBlock(sibling) || sibling-&gt;hasTagName(brTag))
-               &amp;&amp; !containsNonEditableRegion(sibling)) {
</del><ins>+        while (sibling &amp;&amp; sibling != pastEndNode &amp;&amp; !sibling-&gt;contains(pastEndNode.get()) &amp;&amp; (!isBlock(sibling) || sibling-&gt;hasTagName(brTag)) &amp;&amp; !containsNonEditableRegion(*sibling)) {
</ins><span class="cx">             runEnd = sibling;
</span><span class="cx">             sibling = runEnd-&gt;nextSibling();
</span><span class="cx">         }
</span><del>-        next = NodeTraversal::nextSkippingChildren(runEnd);
</del><ins>+        next = NodeTraversal::nextSkippingChildren(*runEnd);
</ins><span class="cx"> 
</span><del>-        Node* pastEndNode = NodeTraversal::nextSkippingChildren(runEnd);
</del><ins>+        Node* pastEndNode = NodeTraversal::nextSkippingChildren(*runEnd);
</ins><span class="cx">         if (!shouldApplyInlineStyleToRun(style, runStart, pastEndNode))
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="lines">@@ -837,7 +835,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(style &amp;&amp; runStart);
</span><span class="cx"> 
</span><del>-    for (Node* node = runStart; node &amp;&amp; node != pastEndNode; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = runStart; node &amp;&amp; node != pastEndNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         if (node-&gt;hasChildNodes())
</span><span class="cx">             continue;
</span><span class="cx">         // We don't consider m_isInlineElementToRemoveFunction here because we never apply style when m_isInlineElementToRemoveFunction is specified
</span><span class="lines">@@ -856,9 +854,9 @@
</span><span class="cx">     for (RefPtr&lt;Node&gt; node = next; node &amp;&amp; node-&gt;inDocument() &amp;&amp; node != pastEndNode; node = next) {
</span><span class="cx">         if (editingIgnoresContent(node.get())) {
</span><span class="cx">             ASSERT(!node-&gt;contains(pastEndNode.get()));
</span><del>-            next = NodeTraversal::nextSkippingChildren(node.get());
</del><ins>+            next = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx">         } else
</span><del>-            next = NodeTraversal::next(node.get());
</del><ins>+            next = NodeTraversal::next(*node);
</ins><span class="cx"> 
</span><span class="cx">         if (!is&lt;HTMLElement&gt;(*node))
</span><span class="cx">             continue;
</span><span class="lines">@@ -1119,30 +1117,30 @@
</span><span class="cx">         RefPtr&lt;Node&gt; next;
</span><span class="cx">         if (editingIgnoresContent(node.get())) {
</span><span class="cx">             ASSERT(node == end.deprecatedNode() || !node-&gt;contains(end.deprecatedNode()));
</span><del>-            next = NodeTraversal::nextSkippingChildren(node.get());
</del><ins>+            next = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx">         } else
</span><del>-            next = NodeTraversal::next(node.get());
</del><ins>+            next = NodeTraversal::next(*node);
</ins><span class="cx"> 
</span><span class="cx">         if (is&lt;HTMLElement&gt;(*node) &amp;&amp; nodeFullySelected(node.get(), start, end)) {
</span><del>-            RefPtr&lt;HTMLElement&gt; elem = downcast&lt;HTMLElement&gt;(node.get());
-            RefPtr&lt;Node&gt; prev = NodeTraversal::previousPostOrder(elem.get());
-            RefPtr&lt;Node&gt; next = NodeTraversal::next(elem.get());
</del><ins>+            Ref&lt;HTMLElement&gt; elem = downcast&lt;HTMLElement&gt;(*node);
+            RefPtr&lt;Node&gt; prev = NodeTraversal::previousPostOrder(elem);
+            RefPtr&lt;Node&gt; next = NodeTraversal::next(elem);
</ins><span class="cx">             RefPtr&lt;EditingStyle&gt; styleToPushDown;
</span><span class="cx">             RefPtr&lt;Node&gt; childNode;
</span><del>-            if (isStyledInlineElementToRemove(elem.get())) {
</del><ins>+            if (isStyledInlineElementToRemove(elem.ptr())) {
</ins><span class="cx">                 styleToPushDown = EditingStyle::create();
</span><span class="cx">                 childNode = elem-&gt;firstChild();
</span><span class="cx">             }
</span><span class="cx"> 
</span><del>-            removeInlineStyleFromElement(style, elem.get(), RemoveIfNeeded, styleToPushDown.get());
</del><ins>+            removeInlineStyleFromElement(style, elem.ptr(), RemoveIfNeeded, styleToPushDown.get());
</ins><span class="cx">             if (!elem-&gt;inDocument()) {
</span><del>-                if (s.deprecatedNode() == elem) {
</del><ins>+                if (s.deprecatedNode() == elem.ptr()) {
</ins><span class="cx">                     // Since elem must have been fully selected, and it is at the start
</span><span class="cx">                     // of the selection, it is clear we can set the new s offset to 0.
</span><span class="cx">                     ASSERT(s.anchorType() == Position::PositionIsBeforeAnchor || s.offsetInContainerNode() &lt;= 0);
</span><span class="cx">                     s = firstPositionInOrBeforeNode(next.get());
</span><span class="cx">                 }
</span><del>-                if (e.deprecatedNode() == elem) {
</del><ins>+                if (e.deprecatedNode() == elem.ptr()) {
</ins><span class="cx">                     // Since elem must have been fully selected, and it is at the end
</span><span class="cx">                     // of the selection, it is clear we can set the new e offset to
</span><span class="cx">                     // the max range offset of prev.
</span><span class="lines">@@ -1525,7 +1523,7 @@
</span><span class="cx">     Position newEnd = end;
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;RefPtr&lt;Text&gt;&gt; textNodes;
</span><del>-    for (Text* textNode = TextNodeTraversal::firstChild(node); textNode; textNode = TextNodeTraversal::nextSibling(textNode))
</del><ins>+    for (Text* textNode = TextNodeTraversal::firstChild(*node); textNode; textNode = TextNodeTraversal::nextSibling(*textNode))
</ins><span class="cx">         textNodes.append(textNode);
</span><span class="cx"> 
</span><span class="cx">     for (size_t i = 0; i &lt; textNodes.size(); ++i) {
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingBreakBlockquoteCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/BreakBlockquoteCommand.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/BreakBlockquoteCommand.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/BreakBlockquoteCommand.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -109,13 +109,13 @@
</span><span class="cx">     if (is&lt;Text&gt;(*startNode)) {
</span><span class="cx">         Text&amp; textNode = downcast&lt;Text&gt;(*startNode);
</span><span class="cx">         if ((unsigned)pos.deprecatedEditingOffset() &gt;= textNode.length()) {
</span><del>-            startNode = NodeTraversal::next(startNode);
</del><ins>+            startNode = NodeTraversal::next(*startNode);
</ins><span class="cx">             ASSERT(startNode);
</span><span class="cx">         } else if (pos.deprecatedEditingOffset() &gt; 0)
</span><span class="cx">             splitTextNode(&amp;textNode, pos.deprecatedEditingOffset());
</span><span class="cx">     } else if (pos.deprecatedEditingOffset() &gt; 0) {
</span><span class="cx">         Node* childAtOffset = startNode-&gt;traverseToChildAt(pos.deprecatedEditingOffset());
</span><del>-        startNode = childAtOffset ? childAtOffset : NodeTraversal::next(startNode);
</del><ins>+        startNode = childAtOffset ? childAtOffset : NodeTraversal::next(*startNode);
</ins><span class="cx">         ASSERT(startNode);
</span><span class="cx">     }
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingCompositeEditCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/CompositeEditCommand.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -859,7 +859,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;RefPtr&lt;Text&gt;&gt; nodes;
</span><del>-    for (Node* node = start.deprecatedNode(); node; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = start.deprecatedNode(); node; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         if (is&lt;Text&gt;(*node))
</span><span class="cx">             nodes.append(downcast&lt;Text&gt;(node));
</span><span class="cx">         if (node == end.deprecatedNode())
</span><span class="lines">@@ -1071,7 +1071,7 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;Node&gt; startNode = start.deprecatedNode();
</span><del>-        for (RefPtr&lt;Node&gt; node = NodeTraversal::nextSkippingChildren(startNode.get(), outerNode.get()); node; node = NodeTraversal::nextSkippingChildren(node.get(), outerNode.get())) {
</del><ins>+        for (RefPtr&lt;Node&gt; node = NodeTraversal::nextSkippingChildren(*startNode, outerNode.get()); node; node = NodeTraversal::nextSkippingChildren(*node, outerNode.get())) {
</ins><span class="cx">             // Move lastNode up in the tree as much as node was moved up in the
</span><span class="cx">             // tree by NodeTraversal::nextSkippingChildren, so that the relative depth between
</span><span class="cx">             // node and the original start node is maintained in the clone.
</span><span class="lines">@@ -1350,8 +1350,8 @@
</span><span class="cx">     if (!newBlock)
</span><span class="cx">         newBlock = createDefaultParagraphElement(document());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;Node&gt; previousListNode = emptyListItem-&gt;isElementNode() ? ElementTraversal::previousSibling(emptyListItem.get()): emptyListItem-&gt;previousSibling();
-    RefPtr&lt;Node&gt; nextListNode = emptyListItem-&gt;isElementNode() ? ElementTraversal::nextSibling(emptyListItem.get()): emptyListItem-&gt;nextSibling();
</del><ins>+    RefPtr&lt;Node&gt; previousListNode = emptyListItem-&gt;isElementNode() ? ElementTraversal::previousSibling(*emptyListItem): emptyListItem-&gt;previousSibling();
+    RefPtr&lt;Node&gt; nextListNode = emptyListItem-&gt;isElementNode() ? ElementTraversal::nextSibling(*emptyListItem): emptyListItem-&gt;nextSibling();
</ins><span class="cx">     if (isListItem(nextListNode.get()) || isListElement(nextListNode.get())) {
</span><span class="cx">         // If emptyListItem follows another list item or nested list, split the list node.
</span><span class="cx">         if (isListItem(previousListNode.get()) || isListElement(previousListNode.get()))
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingDeleteSelectionCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -344,7 +344,7 @@
</span><span class="cx">     ASSERT(node);
</span><span class="cx">     Node* next = node;
</span><span class="cx">     while (next &amp;&amp; !next-&gt;hasEditableStyle())
</span><del>-        next = NodeTraversal::next(next, node);
</del><ins>+        next = NodeTraversal::next(*next, node);
</ins><span class="cx">     return next ? firstPositionInOrBeforeNode(next) : Position();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -436,9 +436,9 @@
</span><span class="cx">     RefPtr&lt;Range&gt; range = m_selectionToDelete.toNormalizedRange();
</span><span class="cx">     RefPtr&lt;Node&gt; node = range-&gt;firstNode();
</span><span class="cx">     while (node &amp;&amp; node != range-&gt;pastLastNode()) {
</span><del>-        RefPtr&lt;Node&gt; nextNode = NodeTraversal::next(node.get());
</del><ins>+        RefPtr&lt;Node&gt; nextNode = NodeTraversal::next(*node);
</ins><span class="cx">         if ((is&lt;HTMLStyleElement&gt;(*node) &amp;&amp; !downcast&lt;HTMLStyleElement&gt;(*node).hasAttribute(scopedAttr)) || is&lt;HTMLLinkElement&gt;(*node)) {
</span><del>-            nextNode = NodeTraversal::nextSkippingChildren(node.get());
</del><ins>+            nextNode = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx">             RefPtr&lt;ContainerNode&gt; rootEditableElement = node-&gt;rootEditableElement();
</span><span class="cx">             if (rootEditableElement) {
</span><span class="cx">                 removeNode(node);
</span><span class="lines">@@ -462,7 +462,7 @@
</span><span class="cx">     // Never remove the start block unless it's a table, in which case we won't merge content in.
</span><span class="cx">     if (startNode == m_startBlock &amp;&amp; !startOffset &amp;&amp; canHaveChildrenForEditing(startNode) &amp;&amp; !is&lt;HTMLTableElement&gt;(*startNode)) {
</span><span class="cx">         startOffset = 0;
</span><del>-        startNode = NodeTraversal::next(startNode);
</del><ins>+        startNode = NodeTraversal::next(*startNode);
</ins><span class="cx">         if (!startNode)
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="lines">@@ -474,7 +474,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (startOffset &gt;= lastOffsetForEditing(startNode)) {
</span><del>-        startNode = NodeTraversal::nextSkippingChildren(startNode);
</del><ins>+        startNode = NodeTraversal::nextSkippingChildren(*startNode);
</ins><span class="cx">         startOffset = 0;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -508,7 +508,7 @@
</span><span class="cx">                 // in a text node that needs to be trimmed
</span><span class="cx">                 Text&amp; text = downcast&lt;Text&gt;(*node);
</span><span class="cx">                 deleteTextFromNode(&amp;text, startOffset, text.length() - startOffset);
</span><del>-                node = NodeTraversal::next(node.get());
</del><ins>+                node = NodeTraversal::next(*node);
</ins><span class="cx">             } else {
</span><span class="cx">                 node = startNode-&gt;traverseToChildAt(startOffset);
</span><span class="cx">             }
</span><span class="lines">@@ -521,9 +521,9 @@
</span><span class="cx">         while (node &amp;&amp; node != m_downstreamEnd.deprecatedNode()) {
</span><span class="cx">             if (comparePositions(firstPositionInOrBeforeNode(node.get()), m_downstreamEnd) &gt;= 0) {
</span><span class="cx">                 // NodeTraversal::nextSkippingChildren just blew past the end position, so stop deleting
</span><del>-                node = 0;
</del><ins>+                node = nullptr;
</ins><span class="cx">             } else if (!m_downstreamEnd.deprecatedNode()-&gt;isDescendantOf(node.get())) {
</span><del>-                RefPtr&lt;Node&gt; nextNode = NodeTraversal::nextSkippingChildren(node.get());
</del><ins>+                RefPtr&lt;Node&gt; nextNode = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx">                 // if we just removed a node from the end container, update end position so the
</span><span class="cx">                 // check above will work
</span><span class="cx">                 updatePositionForNodeRemoval(m_downstreamEnd, *node);
</span><span class="lines">@@ -533,9 +533,9 @@
</span><span class="cx">                 Node* n = node-&gt;lastDescendant();
</span><span class="cx">                 if (m_downstreamEnd.deprecatedNode() == n &amp;&amp; m_downstreamEnd.deprecatedEditingOffset() &gt;= caretMaxOffset(n)) {
</span><span class="cx">                     removeNode(node.get());
</span><del>-                    node = 0;
</del><ins>+                    node = nullptr;
</ins><span class="cx">                 } else
</span><del>-                    node = NodeTraversal::next(node.get());
</del><ins>+                    node = NodeTraversal::next(*node);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">         
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/EditCommand.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/EditCommand.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/EditCommand.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> void SimpleEditCommand::addNodeAndDescendants(Node* startNode, HashSet&lt;Node*&gt;&amp; nodes)
</span><span class="cx"> {
</span><del>-    for (Node* node = startNode; node; node = NodeTraversal::next(node, startNode))
</del><ins>+    for (Node* node = startNode; node; node = NodeTraversal::next(*node, startNode))
</ins><span class="cx">         nodes.add(node);
</span><span class="cx"> }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditingStylecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/EditingStyle.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/EditingStyle.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/EditingStyle.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -674,7 +674,7 @@
</span><span class="cx"> 
</span><span class="cx">     TriState state = FalseTriState;
</span><span class="cx">     bool nodeIsStart = true;
</span><del>-    for (Node* node = selection.start().deprecatedNode(); node; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = selection.start().deprecatedNode(); node; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         if (node-&gt;renderer() &amp;&amp; node-&gt;hasEditableStyle()) {
</span><span class="cx">             ComputedStyleExtractor computedStyle(node);
</span><span class="cx">             TriState nodeState = triStateOfStyle(computedStyle, node-&gt;isTextNode() ? EditingStyle::DoNotIgnoreTextOnlyProperties : EditingStyle::IgnoreTextOnlyProperties);
</span><span class="lines">@@ -1306,7 +1306,7 @@
</span><span class="cx">         end = selection.end().upstream();
</span><span class="cx"> 
</span><span class="cx">         Node* pastLast = Range::create(*end.document(), position.parentAnchoredEquivalent(), end.parentAnchoredEquivalent())-&gt;pastLastNode();
</span><del>-        for (Node* n = node; n &amp;&amp; n != pastLast; n = NodeTraversal::next(n)) {
</del><ins>+        for (Node* n = node; n &amp;&amp; n != pastLast; n = NodeTraversal::next(*n)) {
</ins><span class="cx">             if (!n-&gt;isStyledElement())
</span><span class="cx">                 continue;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/Editor.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/Editor.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/Editor.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -1324,12 +1324,12 @@
</span><span class="cx">         // check if start node is before endNode
</span><span class="cx">         Node* node = startNode;
</span><span class="cx">         while (node &amp;&amp; node != endNode)
</span><del>-            node = NodeTraversal::next(node);
</del><ins>+            node = NodeTraversal::next(*node);
</ins><span class="cx">         if (!node)
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    applyCommand(SimplifyMarkupCommand::create(document(), startNode, (endNode) ? NodeTraversal::next(endNode) : 0));
</del><ins>+    applyCommand(SimplifyMarkupCommand::create(document(), startNode, endNode ? NodeTraversal::next(*endNode) : nullptr));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Editor::copyURL(const URL&amp; url, const String&amp; title)
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingIndentOutdentCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/IndentOutdentCommand.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/IndentOutdentCommand.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/IndentOutdentCommand.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -70,8 +70,8 @@
</span><span class="cx">         return false;
</span><span class="cx">     
</span><span class="cx">     // FIXME: previousElementSibling does not ignore non-rendered content like &lt;span&gt;&lt;/span&gt;.  Should we?
</span><del>-    RefPtr&lt;Element&gt; previousList = ElementTraversal::previousSibling(selectedListItem.get());
-    RefPtr&lt;Element&gt; nextList = ElementTraversal::nextSibling(selectedListItem.get());
</del><ins>+    RefPtr&lt;Element&gt; previousList = ElementTraversal::previousSibling(*selectedListItem);
+    RefPtr&lt;Element&gt; nextList = ElementTraversal::nextSibling(*selectedListItem);
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Element&gt; newList = document().createElement(listNode-&gt;tagQName(), false);
</span><span class="cx">     insertNodeBefore(newList, selectedListItem);
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingInsertListCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/InsertListCommand.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/InsertListCommand.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/InsertListCommand.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (!list)
</span><span class="cx">         return nullptr;
</span><del>-    Element* sibling = ElementTraversal::nextSibling(list.get());
</del><ins>+    Element* sibling = ElementTraversal::nextSibling(*list);
</ins><span class="cx">     if (!is&lt;HTMLElement&gt;(sibling))
</span><span class="cx">         return list;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingInsertParagraphSeparatorCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -378,7 +378,7 @@
</span><span class="cx">         else {
</span><span class="cx">             Node* splitTo = insertionPosition.containerNode();
</span><span class="cx">             if (splitTo-&gt;isTextNode() &amp;&amp; insertionPosition.offsetInContainerNode() &gt;= caretMaxOffset(splitTo))
</span><del>-                splitTo = NodeTraversal::next(splitTo, startBlock.get());
</del><ins>+                splitTo = NodeTraversal::next(*splitTo, startBlock.get());
</ins><span class="cx">             ASSERT(splitTo);
</span><span class="cx">             splitTreeToNode(splitTo, startBlock.get());
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingReplaceSelectionCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -279,9 +279,10 @@
</span><span class="cx"> {
</span><span class="cx">     Vector&lt;RefPtr&lt;Node&gt;&gt; unrendered;
</span><span class="cx"> 
</span><del>-    for (Node* node = holder-&gt;firstChild(); node; node = NodeTraversal::next(node, holder))
</del><ins>+    for (Node* node = holder-&gt;firstChild(); node; node = NodeTraversal::next(*node, holder)) {
</ins><span class="cx">         if (!isNodeRendered(node) &amp;&amp; !isTableStructureNode(node))
</span><span class="cx">             unrendered.append(node);
</span><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">     size_t n = unrendered.size();
</span><span class="cx">     for (size_t i = 0; i &lt; n; ++i)
</span><span class="lines">@@ -320,9 +321,9 @@
</span><span class="cx">     
</span><span class="cx">     node = container-&gt;firstChild();
</span><span class="cx">     while (node) {
</span><del>-        RefPtr&lt;Node&gt; next = NodeTraversal::next(node);
</del><ins>+        RefPtr&lt;Node&gt; next = NodeTraversal::next(*node);
</ins><span class="cx">         if (isInterchangeConvertedSpaceSpan(node)) {
</span><del>-            next = NodeTraversal::nextSkippingChildren(node);
</del><ins>+            next = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx">             removeNodePreservingChildren(node);
</span><span class="cx">         }
</span><span class="cx">         node = next.get();
</span><span class="lines">@@ -343,9 +344,9 @@
</span><span class="cx"> inline void ReplaceSelectionCommand::InsertedNodes::willRemoveNodePreservingChildren(Node* node)
</span><span class="cx"> {
</span><span class="cx">     if (m_firstNodeInserted == node)
</span><del>-        m_firstNodeInserted = NodeTraversal::next(node);
</del><ins>+        m_firstNodeInserted = NodeTraversal::next(*node);
</ins><span class="cx">     if (m_lastNodeInserted == node)
</span><del>-        m_lastNodeInserted = node-&gt;lastChild() ? node-&gt;lastChild() : NodeTraversal::nextSkippingChildren(node);
</del><ins>+        m_lastNodeInserted = node-&gt;lastChild() ? node-&gt;lastChild() : NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline void ReplaceSelectionCommand::InsertedNodes::willRemoveNode(Node* node)
</span><span class="lines">@@ -354,9 +355,9 @@
</span><span class="cx">         m_firstNodeInserted = 0;
</span><span class="cx">         m_lastNodeInserted = 0;
</span><span class="cx">     } else if (m_firstNodeInserted == node)
</span><del>-        m_firstNodeInserted = NodeTraversal::nextSkippingChildren(m_firstNodeInserted.get());
</del><ins>+        m_firstNodeInserted = NodeTraversal::nextSkippingChildren(*m_firstNodeInserted);
</ins><span class="cx">     else if (m_lastNodeInserted == node)
</span><del>-        m_lastNodeInserted = NodeTraversal::previousSkippingChildren(m_lastNodeInserted.get());
</del><ins>+        m_lastNodeInserted = NodeTraversal::previousSkippingChildren(*m_lastNodeInserted);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline void ReplaceSelectionCommand::InsertedNodes::didReplaceNode(Node* node, Node* newNode)
</span><span class="lines">@@ -479,7 +480,7 @@
</span><span class="cx">     for (RefPtr&lt;Node&gt; node = insertedNodes.firstNodeInserted(); node &amp;&amp; node != pastEndNode; node = next) {
</span><span class="cx">         // FIXME: &lt;rdar://problem/5371536&gt; Style rules that match pasted content can change it's appearance
</span><span class="cx"> 
</span><del>-        next = NodeTraversal::next(node.get());
</del><ins>+        next = NodeTraversal::next(*node);
</ins><span class="cx">         if (!is&lt;StyledElement&gt;(*node))
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="lines">@@ -624,7 +625,7 @@
</span><span class="cx">     RefPtr&lt;Node&gt; pastEndNode = insertedNodes.pastLastLeaf();
</span><span class="cx">     RefPtr&lt;Node&gt; next;
</span><span class="cx">     for (RefPtr&lt;Node&gt; node = insertedNodes.firstNodeInserted(); node &amp;&amp; node != pastEndNode; node = next) {
</span><del>-        next = NodeTraversal::next(node.get());
</del><ins>+        next = NodeTraversal::next(*node);
</ins><span class="cx"> 
</span><span class="cx">         if (!is&lt;HTMLElement&gt;(*node))
</span><span class="cx">             continue;
</span><span class="lines">@@ -776,7 +777,7 @@
</span><span class="cx">     // The style span that contains the source document's default style should be at
</span><span class="cx">     // the top of the fragment, but Mail sometimes adds a wrapper (for Paste As Quotation),
</span><span class="cx">     // so search for the top level style span instead of assuming it's at the top.
</span><del>-    for (Node* node = insertedNodes.firstNodeInserted(); node; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = insertedNodes.firstNodeInserted(); node; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         if (isLegacyAppleStyleSpan(node)) {
</span><span class="cx">             wrappingStyleSpan = downcast&lt;HTMLElement&gt;(node);
</span><span class="cx">             break;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingReplaceSelectionCommandh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ReplaceSelectionCommand.h (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ReplaceSelectionCommand.h        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/ReplaceSelectionCommand.h        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -68,7 +68,14 @@
</span><span class="cx"> 
</span><span class="cx">         Node* firstNodeInserted() const { return m_firstNodeInserted.get(); }
</span><span class="cx">         Node* lastLeafInserted() const { return m_lastNodeInserted-&gt;lastDescendant(); }
</span><del>-        Node* pastLastLeaf() const { return m_lastNodeInserted ? NodeTraversal::next(lastLeafInserted()) : 0; }
</del><ins>+        Node* pastLastLeaf() const
+        {
+            if (m_lastNodeInserted) {
+                ASSERT(lastLeafInserted());
+                return NodeTraversal::next(*lastLeafInserted());
+            }
+            return nullptr;
+        }
</ins><span class="cx"> 
</span><span class="cx">     private:
</span><span class="cx">         RefPtr&lt;Node&gt; m_firstNodeInserted;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingSimplifyMarkupCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/SimplifyMarkupCommand.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/SimplifyMarkupCommand.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/SimplifyMarkupCommand.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">     // without affecting the style. The goal is to produce leaner markup even when starting
</span><span class="cx">     // from a verbose fragment.
</span><span class="cx">     // We look at inline elements as well as non top level divs that don't have attributes. 
</span><del>-    for (Node* node = m_firstNode.get(); node &amp;&amp; node != m_nodeAfterLast; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = m_firstNode.get(); node &amp;&amp; node != m_nodeAfterLast; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         if (node-&gt;firstChild() || (node-&gt;isTextNode() &amp;&amp; node-&gt;nextSibling()))
</span><span class="cx">             continue;
</span><span class="cx">         
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingTextIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/TextIterator.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/TextIterator.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/TextIterator.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -449,7 +449,7 @@
</span><span class="cx">         if (!next) {
</span><span class="cx">             next = m_node-&gt;nextSibling();
</span><span class="cx">             if (!next) {
</span><del>-                bool pastEnd = NodeTraversal::next(m_node) == m_pastEndNode;
</del><ins>+                bool pastEnd = NodeTraversal::next(*m_node) == m_pastEndNode;
</ins><span class="cx">                 Node* parentNode = m_node-&gt;parentOrShadowHostNode();
</span><span class="cx">                 while (!next &amp;&amp; parentNode) {
</span><span class="cx">                     if ((pastEnd &amp;&amp; parentNode == m_endContainer) || m_endContainer-&gt;isDescendantOf(parentNode))
</span><span class="lines">@@ -861,7 +861,7 @@
</span><span class="cx">     // Check if this is the very last renderer in the document.
</span><span class="cx">     // If so, then we should not emit a newline.
</span><span class="cx">     Node* subsequentNode = &amp;node;
</span><del>-    while ((subsequentNode = NodeTraversal::nextSkippingChildren(subsequentNode))) {
</del><ins>+    while ((subsequentNode = NodeTraversal::nextSkippingChildren(*subsequentNode))) {
</ins><span class="cx">         if (subsequentNode-&gt;renderer())
</span><span class="cx">             return true;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingVisibleUnitscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/VisibleUnits.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/VisibleUnits.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/VisibleUnits.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -1124,18 +1124,18 @@
</span><span class="cx">             break;
</span><span class="cx">         if (boundaryCrossingRule == CanSkipOverEditingBoundary) {
</span><span class="cx">             while (n &amp;&amp; n-&gt;hasEditableStyle() != startNode-&gt;hasEditableStyle())
</span><del>-                n = NodeTraversal::previousPostOrder(n, startBlock);
</del><ins>+                n = NodeTraversal::previousPostOrder(*n, startBlock);
</ins><span class="cx">             if (!n || !n-&gt;isDescendantOf(highestRoot))
</span><span class="cx">                 break;
</span><span class="cx">         }
</span><span class="cx">         RenderObject* r = n-&gt;renderer();
</span><span class="cx">         if (!r) {
</span><del>-            n = NodeTraversal::previousPostOrder(n, startBlock);
</del><ins>+            n = NodeTraversal::previousPostOrder(*n, startBlock);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx">         const RenderStyle&amp; style = r-&gt;style();
</span><span class="cx">         if (style.visibility() != VISIBLE) {
</span><del>-            n = NodeTraversal::previousPostOrder(n, startBlock);
</del><ins>+            n = NodeTraversal::previousPostOrder(*n, startBlock);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx">         
</span><span class="lines">@@ -1158,13 +1158,13 @@
</span><span class="cx">             }
</span><span class="cx">             node = n;
</span><span class="cx">             offset = 0;
</span><del>-            n = NodeTraversal::previousPostOrder(n, startBlock);
</del><ins>+            n = NodeTraversal::previousPostOrder(*n, startBlock);
</ins><span class="cx">         } else if (editingIgnoresContent(n) || isRenderedTable(n)) {
</span><span class="cx">             node = n;
</span><span class="cx">             type = Position::PositionIsBeforeAnchor;
</span><del>-            n = n-&gt;previousSibling() ? n-&gt;previousSibling() : NodeTraversal::previousPostOrder(n, startBlock);
</del><ins>+            n = n-&gt;previousSibling() ? n-&gt;previousSibling() : NodeTraversal::previousPostOrder(*n, startBlock);
</ins><span class="cx">         } else
</span><del>-            n = NodeTraversal::previousPostOrder(n, startBlock);
</del><ins>+            n = NodeTraversal::previousPostOrder(*n, startBlock);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (type == Position::PositionIsOffsetInAnchor) {
</span><span class="lines">@@ -1204,19 +1204,19 @@
</span><span class="cx">             break;
</span><span class="cx">         if (boundaryCrossingRule == CanSkipOverEditingBoundary) {
</span><span class="cx">             while (n &amp;&amp; n-&gt;hasEditableStyle() != startNode-&gt;hasEditableStyle())
</span><del>-                n = NodeTraversal::next(n, stayInsideBlock);
</del><ins>+                n = NodeTraversal::next(*n, stayInsideBlock);
</ins><span class="cx">             if (!n || !n-&gt;isDescendantOf(highestRoot))
</span><span class="cx">                 break;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         RenderObject* r = n-&gt;renderer();
</span><span class="cx">         if (!r) {
</span><del>-            n = NodeTraversal::next(n, stayInsideBlock);
</del><ins>+            n = NodeTraversal::next(*n, stayInsideBlock);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx">         const RenderStyle&amp; style = r-&gt;style();
</span><span class="cx">         if (style.visibility() != VISIBLE) {
</span><del>-            n = NodeTraversal::next(n, stayInsideBlock);
</del><ins>+            n = NodeTraversal::next(*n, stayInsideBlock);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx">         
</span><span class="lines">@@ -1239,13 +1239,13 @@
</span><span class="cx">             }
</span><span class="cx">             node = n;
</span><span class="cx">             offset = r-&gt;caretMaxOffset();
</span><del>-            n = NodeTraversal::next(n, stayInsideBlock);
</del><ins>+            n = NodeTraversal::next(*n, stayInsideBlock);
</ins><span class="cx">         } else if (editingIgnoresContent(n) || isRenderedTable(n)) {
</span><span class="cx">             node = n;
</span><span class="cx">             type = Position::PositionIsAfterAnchor;
</span><del>-            n = NodeTraversal::nextSkippingChildren(n, stayInsideBlock);
</del><ins>+            n = NodeTraversal::nextSkippingChildren(*n, stayInsideBlock);
</ins><span class="cx">         } else
</span><del>-            n = NodeTraversal::next(n, stayInsideBlock);
</del><ins>+            n = NodeTraversal::next(*n, stayInsideBlock);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (type == Position::PositionIsOffsetInAnchor)
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingcocoaHTMLConvertermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/cocoa/HTMLConverter.mm (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/cocoa/HTMLConverter.mm        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/cocoa/HTMLConverter.mm        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -1805,7 +1805,7 @@
</span><span class="cx"> {
</span><span class="cx">     // FIXME: Should gather data from other sources e.g. Word, but for that we would need to be able to get comments from DOM
</span><span class="cx">     
</span><del>-    for (HTMLMetaElement* child = Traversal&lt;HTMLMetaElement&gt;::firstChild(&amp;element); child; child = Traversal&lt;HTMLMetaElement&gt;::nextSibling(child)) {
</del><ins>+    for (HTMLMetaElement* child = Traversal&lt;HTMLMetaElement&gt;::firstChild(element); child; child = Traversal&lt;HTMLMetaElement&gt;::nextSibling(*child)) {
</ins><span class="cx">         NSString *name = child-&gt;name();
</span><span class="cx">         NSString *content = child-&gt;content();
</span><span class="cx">         if (name &amp;&amp; content)
</span></span></pre></div>
<a id="trunkSourceWebCoreeditinghtmleditingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/htmlediting.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/htmlediting.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/htmlediting.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -604,12 +604,12 @@
</span><span class="cx"> {
</span><span class="cx">     for (Node* n = node-&gt;firstChild(); n;) {
</span><span class="cx">         if (n == excludedNode) {
</span><del>-            n = NodeTraversal::nextSkippingChildren(n, node);
</del><ins>+            n = NodeTraversal::nextSkippingChildren(*n, node);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx">         if (n-&gt;renderer())
</span><span class="cx">             return true;
</span><del>-        n = NodeTraversal::next(n, node);
</del><ins>+        n = NodeTraversal::next(*n, node);
</ins><span class="cx">     }
</span><span class="cx">     return false;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingiosEditorIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ios/EditorIOS.mm (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ios/EditorIOS.mm        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/ios/EditorIOS.mm        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -230,7 +230,7 @@
</span><span class="cx">         Node* pastEnd = range-&gt;pastLastNode();
</span><span class="cx">         // In the loop below, n should eventually match pastEnd and not become nil, but we've seen at least one
</span><span class="cx">         // unreproducible case where this didn't happen, so check for null also.
</span><del>-        for (Node* node = startNode; node &amp;&amp; node != pastEnd; node = NodeTraversal::next(node)) {
</del><ins>+        for (Node* node = startNode; node &amp;&amp; node != pastEnd; node = NodeTraversal::next(*node)) {
</ins><span class="cx">             auto renderer = node-&gt;renderer();
</span><span class="cx">             if (!renderer)
</span><span class="cx">                 continue;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmacEditorMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/mac/EditorMac.mm (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/mac/EditorMac.mm        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/mac/EditorMac.mm        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx">         Node* pastEnd = range-&gt;pastLastNode();
</span><span class="cx">         // In the loop below, n should eventually match pastEnd and not become nil, but we've seen at least one
</span><span class="cx">         // unreproducible case where this didn't happen, so check for null also.
</span><del>-        for (Node* node = startNode; node &amp;&amp; node != pastEnd; node = NodeTraversal::next(node)) {
</del><ins>+        for (Node* node = startNode; node &amp;&amp; node != pastEnd; node = NodeTraversal::next(*node)) {
</ins><span class="cx">             auto renderer = node-&gt;renderer();
</span><span class="cx">             if (!renderer)
</span><span class="cx">                 continue;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmarkupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/markup.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/markup.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/editing/markup.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -367,7 +367,7 @@
</span><span class="cx">     const bool shouldEmit = traversalMode == EmitString;
</span><span class="cx">     Vector&lt;Node*&gt; ancestorsToClose;
</span><span class="cx">     Node* next;
</span><del>-    Node* lastClosed = 0;
</del><ins>+    Node* lastClosed = nullptr;
</ins><span class="cx">     for (Node* n = startNode; n != pastEnd; n = next) {
</span><span class="cx">         // According to &lt;rdar://problem/5730668&gt;, it is possible for n to blow
</span><span class="cx">         // past pastEnd and become null here. This shouldn't be possible.
</span><span class="lines">@@ -377,7 +377,7 @@
</span><span class="cx">         if (!n)
</span><span class="cx">             break;
</span><span class="cx">         
</span><del>-        next = NodeTraversal::next(n);
</del><ins>+        next = NodeTraversal::next(*n);
</ins><span class="cx">         bool openedTag = false;
</span><span class="cx"> 
</span><span class="cx">         if (isBlock(n) &amp;&amp; canHaveChildrenForEditing(n) &amp;&amp; next == pastEnd)
</span><span class="lines">@@ -385,7 +385,7 @@
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="cx">         if (!n-&gt;renderer() &amp;&amp; !enclosingElementWithTag(firstPositionInOrBeforeNode(n), selectTag)) {
</span><del>-            next = NodeTraversal::nextSkippingChildren(n);
</del><ins>+            next = NodeTraversal::nextSkippingChildren(*n);
</ins><span class="cx">             // Don't skip over pastEnd.
</span><span class="cx">             if (pastEnd &amp;&amp; pastEnd-&gt;isDescendantOf(n))
</span><span class="cx">                 next = pastEnd;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLCollection.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLCollection.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/HTMLCollection.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -235,7 +235,7 @@
</span><span class="cx"> 
</span><span class="cx"> static inline Element* previousElement(ContainerNode&amp; base, Element&amp; element, bool onlyIncludeDirectChildren)
</span><span class="cx"> {
</span><del>-    return onlyIncludeDirectChildren ? ElementTraversal::previousSibling(&amp;element) : ElementTraversal::previous(&amp;element, &amp;base);
</del><ins>+    return onlyIncludeDirectChildren ? ElementTraversal::previousSibling(element) : ElementTraversal::previous(element, &amp;base);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ALWAYS_INLINE Element* HTMLCollection::iterateForPreviousElement(Element* element) const
</span><span class="lines">@@ -251,9 +251,9 @@
</span><span class="cx"> 
</span><span class="cx"> static inline Element* firstMatchingElement(const HTMLCollection&amp; collection, ContainerNode&amp; root)
</span><span class="cx"> {
</span><del>-    Element* element = ElementTraversal::firstWithin(&amp;root);
</del><ins>+    Element* element = ElementTraversal::firstWithin(root);
</ins><span class="cx">     while (element &amp;&amp; !isMatchingElement(collection, *element))
</span><del>-        element = ElementTraversal::next(element, &amp;root);
</del><ins>+        element = ElementTraversal::next(*element, &amp;root);
</ins><span class="cx">     return element;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -261,7 +261,7 @@
</span><span class="cx"> {
</span><span class="cx">     Element* next = &amp;element;
</span><span class="cx">     do {
</span><del>-        next = ElementTraversal::next(next, &amp;root);
</del><ins>+        next = ElementTraversal::next(*next, &amp;root);
</ins><span class="cx">     } while (next &amp;&amp; !isMatchingElement(collection, *next));
</span><span class="cx">     return next;
</span><span class="cx"> }
</span><span class="lines">@@ -296,9 +296,9 @@
</span><span class="cx"> 
</span><span class="cx"> static inline Element* firstMatchingChildElement(const HTMLCollection&amp; nodeList, ContainerNode&amp; root)
</span><span class="cx"> {
</span><del>-    Element* element = ElementTraversal::firstWithin(&amp;root);
</del><ins>+    Element* element = ElementTraversal::firstWithin(root);
</ins><span class="cx">     while (element &amp;&amp; !isMatchingElement(nodeList, *element))
</span><del>-        element = ElementTraversal::nextSibling(element);
</del><ins>+        element = ElementTraversal::nextSibling(*element);
</ins><span class="cx">     return element;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -306,7 +306,7 @@
</span><span class="cx"> {
</span><span class="cx">     Element* next = &amp;element;
</span><span class="cx">     do {
</span><del>-        next = ElementTraversal::nextSibling(next);
</del><ins>+        next = ElementTraversal::nextSibling(*next);
</ins><span class="cx">     } while (next &amp;&amp; !isMatchingElement(nodeList, *next));
</span><span class="cx">     return next;
</span><span class="cx"> }
</span><span class="lines">@@ -359,7 +359,7 @@
</span><span class="cx"> {
</span><span class="cx">     // FIXME: This should be optimized similarly to the forward case.
</span><span class="cx">     auto&amp; root = rootNode();
</span><del>-    Element* last = m_shouldOnlyIncludeDirectChildren ? ElementTraversal::lastChild(&amp;root) : ElementTraversal::lastWithin(&amp;root);
</del><ins>+    Element* last = m_shouldOnlyIncludeDirectChildren ? ElementTraversal::lastChild(root) : ElementTraversal::lastWithin(root);
</ins><span class="cx">     return iterateForPreviousElement(last);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -373,12 +373,12 @@
</span><span class="cx">     // FIXME: This should be optimized similarly to the forward case.
</span><span class="cx">     if (m_shouldOnlyIncludeDirectChildren) {
</span><span class="cx">         for (; count &amp;&amp; current; --count)
</span><del>-            current = iterateForPreviousElement(ElementTraversal::previousSibling(current));
</del><ins>+            current = iterateForPreviousElement(ElementTraversal::previousSibling(*current));
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; root = rootNode();
</span><span class="cx">     for (; count &amp;&amp; current; --count)
</span><del>-        current = iterateForPreviousElement(ElementTraversal::previous(current, &amp;root));
</del><ins>+        current = iterateForPreviousElement(ElementTraversal::previous(*current, &amp;root));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLCollection::invalidateCache(Document&amp; document) const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/HTMLElement.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -827,13 +827,13 @@
</span><span class="cx">         if (elementAffectsDirectionality(*node)) {
</span><span class="cx">             if (node == lastNode)
</span><span class="cx">                 return;
</span><del>-            node = NodeTraversal::nextSkippingChildren(node, firstNode);
</del><ins>+            node = NodeTraversal::nextSkippingChildren(*node, firstNode);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx">         node-&gt;setSelfOrAncestorHasDirAutoAttribute(flag);
</span><span class="cx">         if (node == lastNode)
</span><span class="cx">             return;
</span><del>-        node = NodeTraversal::next(node, firstNode);
</del><ins>+        node = NodeTraversal::next(*node, firstNode);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -876,7 +876,7 @@
</span><span class="cx">         // Skip bdi, script, style and text form controls.
</span><span class="cx">         if (equalIgnoringCase(node-&gt;nodeName(), &quot;bdi&quot;) || node-&gt;hasTagName(scriptTag) || node-&gt;hasTagName(styleTag) 
</span><span class="cx">             || (is&lt;Element&gt;(*node) &amp;&amp; downcast&lt;Element&gt;(*node).isTextFormControl())) {
</span><del>-            node = NodeTraversal::nextSkippingChildren(node, this);
</del><ins>+            node = NodeTraversal::nextSkippingChildren(*node, this);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -884,7 +884,7 @@
</span><span class="cx">         if (is&lt;Element&gt;(*node)) {
</span><span class="cx">             AtomicString dirAttributeValue = downcast&lt;Element&gt;(*node).fastGetAttribute(dirAttr);
</span><span class="cx">             if (isLTROrRTLIgnoringCase(dirAttributeValue) || equalIgnoringCase(dirAttributeValue, &quot;auto&quot;)) {
</span><del>-                node = NodeTraversal::nextSkippingChildren(node, this);
</del><ins>+                node = NodeTraversal::nextSkippingChildren(*node, this);
</ins><span class="cx">                 continue;
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="lines">@@ -898,7 +898,7 @@
</span><span class="cx">                 return (textDirection == U_LEFT_TO_RIGHT) ? LTR : RTL;
</span><span class="cx">             }
</span><span class="cx">         }
</span><del>-        node = NodeTraversal::next(node, this);
</del><ins>+        node = NodeTraversal::next(*node, this);
</ins><span class="cx">     }
</span><span class="cx">     if (strongDirectionalityTextNode)
</span><span class="cx">         *strongDirectionalityTextNode = nullptr;
</span><span class="lines">@@ -950,7 +950,7 @@
</span><span class="cx"> 
</span><span class="cx">     Node* oldMarkedNode = nullptr;
</span><span class="cx">     if (beforeChange)
</span><del>-        oldMarkedNode = changeType == ElementInserted ? ElementTraversal::nextSibling(beforeChange) : beforeChange-&gt;nextSibling();
</del><ins>+        oldMarkedNode = changeType == ElementInserted ? ElementTraversal::nextSibling(*beforeChange) : beforeChange-&gt;nextSibling();
</ins><span class="cx"> 
</span><span class="cx">     while (oldMarkedNode &amp;&amp; elementAffectsDirectionality(*oldMarkedNode))
</span><span class="cx">         oldMarkedNode = oldMarkedNode-&gt;nextSibling();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFieldSetElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFieldSetElement.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFieldSetElement.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/HTMLFieldSetElement.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -61,14 +61,14 @@
</span><span class="cx">     if (is&lt;HTMLFormControlElement&gt;(startNode))
</span><span class="cx">         control = &amp;downcast&lt;HTMLFormControlElement&gt;(startNode);
</span><span class="cx">     else
</span><del>-        control = Traversal&lt;HTMLFormControlElement&gt;::firstWithin(&amp;startNode);
</del><ins>+        control = Traversal&lt;HTMLFormControlElement&gt;::firstWithin(startNode);
</ins><span class="cx">     while (control) {
</span><span class="cx">         control-&gt;setAncestorDisabled(isDisabled);
</span><span class="cx">         // Don't call setAncestorDisabled(false) on form contorls inside disabled fieldsets.
</span><span class="cx">         if (is&lt;HTMLFieldSetElement&gt;(*control) &amp;&amp; control-&gt;fastHasAttribute(disabledAttr))
</span><del>-            control = Traversal&lt;HTMLFormControlElement&gt;::nextSkippingChildren(control, &amp;startNode);
</del><ins>+            control = Traversal&lt;HTMLFormControlElement&gt;::nextSkippingChildren(*control, &amp;startNode);
</ins><span class="cx">         else
</span><del>-            control = Traversal&lt;HTMLFormControlElement&gt;::next(control, &amp;startNode);
</del><ins>+            control = Traversal&lt;HTMLFormControlElement&gt;::next(*control, &amp;startNode);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx"> 
</span><span class="cx">     bool thisFieldsetIsDisabled = fastHasAttribute(disabledAttr);
</span><span class="cx">     bool hasSeenFirstLegendElement = false;
</span><del>-    for (HTMLElement* control = Traversal&lt;HTMLElement&gt;::firstChild(this); control; control = Traversal&lt;HTMLElement&gt;::nextSibling(control)) {
</del><ins>+    for (HTMLElement* control = Traversal&lt;HTMLElement&gt;::firstChild(*this); control; control = Traversal&lt;HTMLElement&gt;::nextSibling(*control)) {
</ins><span class="cx">         if (!hasSeenFirstLegendElement &amp;&amp; is&lt;HTMLLegendElement&gt;(*control)) {
</span><span class="cx">             hasSeenFirstLegendElement = true;
</span><span class="cx">             updateFromControlElementsAncestorDisabledStateUnder(*control, false /* isDisabled */);
</span><span class="lines">@@ -108,13 +108,13 @@
</span><span class="cx">     if (!fastHasAttribute(disabledAttr))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    HTMLLegendElement* legend = Traversal&lt;HTMLLegendElement&gt;::firstChild(this);
</del><ins>+    HTMLLegendElement* legend = Traversal&lt;HTMLLegendElement&gt;::firstChild(*this);
</ins><span class="cx">     if (!legend)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // We only care about the first legend element (in which form contorls are not disabled by this element) changing here.
</span><span class="cx">     updateFromControlElementsAncestorDisabledStateUnder(*legend, false /* isDisabled */);
</span><del>-    while ((legend = Traversal&lt;HTMLLegendElement&gt;::nextSibling(legend)))
</del><ins>+    while ((legend = Traversal&lt;HTMLLegendElement&gt;::nextSibling(*legend)))
</ins><span class="cx">         updateFromControlElementsAncestorDisabledStateUnder(*legend, true);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionElement.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionElement.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/HTMLOptionElement.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -342,9 +342,9 @@
</span><span class="cx">             text.append(node-&gt;nodeValue());
</span><span class="cx">         // Text nodes inside script elements are not part of the option text.
</span><span class="cx">         if (is&lt;Element&gt;(*node) &amp;&amp; toScriptElementIfPossible(downcast&lt;Element&gt;(node)))
</span><del>-            node = NodeTraversal::nextSkippingChildren(node, this);
</del><ins>+            node = NodeTraversal::nextSkippingChildren(*node, this);
</ins><span class="cx">         else
</span><del>-            node = NodeTraversal::next(node, this);
</del><ins>+            node = NodeTraversal::next(*node, this);
</ins><span class="cx">     }
</span><span class="cx">     return text.toString();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/HTMLSelectElement.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -785,9 +785,9 @@
</span><span class="cx"> 
</span><span class="cx">     HTMLOptionElement* foundSelected = 0;
</span><span class="cx">     HTMLOptionElement* firstOption = 0;
</span><del>-    for (Element* currentElement = ElementTraversal::firstWithin(this); currentElement; ) {
</del><ins>+    for (Element* currentElement = ElementTraversal::firstWithin(*this); currentElement; ) {
</ins><span class="cx">         if (!is&lt;HTMLElement&gt;(*currentElement)) {
</span><del>-            currentElement = ElementTraversal::nextSkippingChildren(currentElement, this);
</del><ins>+            currentElement = ElementTraversal::nextSkippingChildren(*currentElement, this);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx">         HTMLElement&amp; current = downcast&lt;HTMLElement&gt;(*currentElement);
</span><span class="lines">@@ -797,7 +797,7 @@
</span><span class="cx">         // (http://www.w3.org/TR/html401/interact/forms.html#h-17.6)
</span><span class="cx">         if (is&lt;HTMLOptGroupElement&gt;(current)) {
</span><span class="cx">             m_listItems.append(&amp;current);
</span><del>-            if (Element* nextElement = ElementTraversal::firstWithin(&amp;current)) {
</del><ins>+            if (Element* nextElement = ElementTraversal::firstWithin(current)) {
</ins><span class="cx">                 currentElement = nextElement;
</span><span class="cx">                 continue;
</span><span class="cx">             }
</span><span class="lines">@@ -830,7 +830,7 @@
</span><span class="cx">         // with the case where odd tags like a &lt;div&gt; have been added but we
</span><span class="cx">         // handle this because such tags have already been removed from the
</span><span class="cx">         // &lt;select&gt;'s subtree at this point.
</span><del>-        currentElement = ElementTraversal::nextSkippingChildren(currentElement, this);
</del><ins>+        currentElement = ElementTraversal::nextSkippingChildren(*currentElement, this);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!foundSelected &amp;&amp; m_size &lt;= 1 &amp;&amp; firstOption &amp;&amp; !firstOption-&gt;selected())
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableElement.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableElement.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/HTMLTableElement.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -195,10 +195,10 @@
</span><span class="cx">     RefPtr&lt;HTMLTableRowElement&gt; lastRow = 0;
</span><span class="cx">     RefPtr&lt;HTMLTableRowElement&gt; row = 0;
</span><span class="cx">     if (index == -1)
</span><del>-        lastRow = HTMLTableRowsCollection::lastRow(this);
</del><ins>+        lastRow = HTMLTableRowsCollection::lastRow(*this);
</ins><span class="cx">     else {
</span><span class="cx">         for (int i = 0; i &lt;= index; ++i) {
</span><del>-            row = HTMLTableRowsCollection::rowAfter(this, lastRow.get());
</del><ins>+            row = HTMLTableRowsCollection::rowAfter(*this, lastRow.get());
</ins><span class="cx">             if (!row) {
</span><span class="cx">                 if (i != index) {
</span><span class="cx">                     ec = INDEX_SIZE_ERR;
</span><span class="lines">@@ -233,10 +233,10 @@
</span><span class="cx"> {
</span><span class="cx">     HTMLTableRowElement* row = 0;
</span><span class="cx">     if (index == -1)
</span><del>-        row = HTMLTableRowsCollection::lastRow(this);
</del><ins>+        row = HTMLTableRowsCollection::lastRow(*this);
</ins><span class="cx">     else {
</span><span class="cx">         for (int i = 0; i &lt;= index; ++i) {
</span><del>-            row = HTMLTableRowsCollection::rowAfter(this, row);
</del><ins>+            row = HTMLTableRowsCollection::rowAfter(*this, row);
</ins><span class="cx">             if (!row)
</span><span class="cx">                 break;
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableRowsCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/HTMLTableRowsCollection.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="cx"> 
</span><del>-static inline void assertRowIsInTable(HTMLTableElement* table, HTMLTableRowElement* row)
</del><ins>+static inline void assertRowIsInTable(HTMLTableElement&amp; table, HTMLTableRowElement* row)
</ins><span class="cx"> {
</span><span class="cx"> #if !ASSERT_DISABLED
</span><span class="cx">     UNUSED_PARAM(table);
</span><span class="lines">@@ -46,11 +46,11 @@
</span><span class="cx"> #else
</span><span class="cx">     if (!row)
</span><span class="cx">         return;
</span><del>-    if (row-&gt;parentNode() == table)
</del><ins>+    if (row-&gt;parentNode() == &amp;table)
</ins><span class="cx">         return;
</span><span class="cx">     ASSERT(row-&gt;parentNode());
</span><span class="cx">     ASSERT(row-&gt;parentNode()-&gt;hasTagName(theadTag) || row-&gt;parentNode()-&gt;hasTagName(tbodyTag) || row-&gt;parentNode()-&gt;hasTagName(tfootTag));
</span><del>-    ASSERT(row-&gt;parentNode()-&gt;parentNode() == table);
</del><ins>+    ASSERT(row-&gt;parentNode()-&gt;parentNode() == &amp;table);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -61,14 +61,14 @@
</span><span class="cx">     return downcast&lt;HTMLElement&gt;(*row.parentNode()).hasTagName(sectionTag);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-HTMLTableRowElement* HTMLTableRowsCollection::rowAfter(HTMLTableElement* table, HTMLTableRowElement* previous)
</del><ins>+HTMLTableRowElement* HTMLTableRowsCollection::rowAfter(HTMLTableElement&amp; table, HTMLTableRowElement* previous)
</ins><span class="cx"> {
</span><span class="cx">     // The HTMLCollection caching mechanism, along with the code in this class, will guarantee that the previous row
</span><span class="cx">     // is an immediate child of either the table, or a table section that is itself an immediate child of the table.
</span><span class="cx">     assertRowIsInTable(table, previous);
</span><span class="cx"> 
</span><span class="cx">     // Start by looking for the next row in this section. Continue only if there is none.
</span><del>-    if (previous &amp;&amp; previous-&gt;parentNode() != table) {
</del><ins>+    if (previous &amp;&amp; previous-&gt;parentNode() != &amp;table) {
</ins><span class="cx">         auto childRows = childrenOfType&lt;HTMLTableRowElement&gt;(*previous-&gt;parentNode());
</span><span class="cx">         auto row = childRows.beginAt(*previous);
</span><span class="cx">         if (++row != childRows.end())
</span><span class="lines">@@ -81,8 +81,8 @@
</span><span class="cx">     if (!previous)
</span><span class="cx">         child = ElementTraversal::firstChild(table);
</span><span class="cx">     else if (isInSection(*previous, theadTag))
</span><del>-        child = ElementTraversal::nextSibling(previous-&gt;parentNode());
-    for (; child; child = ElementTraversal::nextSibling(child)) {
</del><ins>+        child = ElementTraversal::nextSibling(*previous-&gt;parentNode());
+    for (; child; child = ElementTraversal::nextSibling(*child)) {
</ins><span class="cx">         if (child-&gt;hasTagName(theadTag)) {
</span><span class="cx">             if (auto row = childrenOfType&lt;HTMLTableRowElement&gt;(*child).first())
</span><span class="cx">                 return row;
</span><span class="lines">@@ -92,11 +92,11 @@
</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><span class="cx">     if (!previous || isInSection(*previous, theadTag))
</span><span class="cx">         child = ElementTraversal::firstChild(table);
</span><del>-    else if (previous-&gt;parentNode() == table)
-        child = ElementTraversal::nextSibling(previous);
</del><ins>+    else if (previous-&gt;parentNode() == &amp;table)
+        child = ElementTraversal::nextSibling(*previous);
</ins><span class="cx">     else if (isInSection(*previous, tbodyTag))
</span><del>-        child = ElementTraversal::nextSibling(previous-&gt;parentNode());
-    for (; child; child = ElementTraversal::nextSibling(child)) {
</del><ins>+        child = ElementTraversal::nextSibling(*previous-&gt;parentNode());
+    for (; child; child = ElementTraversal::nextSibling(*child)) {
</ins><span class="cx">         if (is&lt;HTMLTableRowElement&gt;(*child))
</span><span class="cx">             return downcast&lt;HTMLTableRowElement&gt;(child);
</span><span class="cx">         if (child-&gt;hasTagName(tbodyTag)) {
</span><span class="lines">@@ -109,8 +109,8 @@
</span><span class="cx">     if (!previous || !isInSection(*previous, tfootTag))
</span><span class="cx">         child = ElementTraversal::firstChild(table);
</span><span class="cx">     else
</span><del>-        child = ElementTraversal::nextSibling(previous-&gt;parentNode());
-    for (; child; child = ElementTraversal::nextSibling(child)) {
</del><ins>+        child = ElementTraversal::nextSibling(*previous-&gt;parentNode());
+    for (; child; child = ElementTraversal::nextSibling(*child)) {
</ins><span class="cx">         if (child-&gt;hasTagName(tfootTag)) {
</span><span class="cx">             if (auto row = childrenOfType&lt;HTMLTableRowElement&gt;(*child).first())
</span><span class="cx">                 return row;
</span><span class="lines">@@ -120,16 +120,16 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-HTMLTableRowElement* HTMLTableRowsCollection::lastRow(HTMLTableElement* table)
</del><ins>+HTMLTableRowElement* HTMLTableRowsCollection::lastRow(HTMLTableElement&amp; table)
</ins><span class="cx"> {
</span><del>-    for (auto* child = ElementTraversal::lastChild(table); child; child = ElementTraversal::previousSibling(child)) {
</del><ins>+    for (auto* child = ElementTraversal::lastChild(table); child; child = ElementTraversal::previousSibling(*child)) {
</ins><span class="cx">         if (child-&gt;hasTagName(tfootTag)) {
</span><span class="cx">             if (auto* row = childrenOfType&lt;HTMLTableRowElement&gt;(*child).last())
</span><span class="cx">                 return row;
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    for (auto* child = ElementTraversal::lastChild(table); child; child = ElementTraversal::previousSibling(child)) {
</del><ins>+    for (auto* child = ElementTraversal::lastChild(table); child; child = ElementTraversal::previousSibling(*child)) {
</ins><span class="cx">         if (is&lt;HTMLTableRowElement&gt;(*child))
</span><span class="cx">             return downcast&lt;HTMLTableRowElement&gt;(child);
</span><span class="cx">         if (child-&gt;hasTagName(tbodyTag)) {
</span><span class="lines">@@ -138,7 +138,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    for (auto* child = ElementTraversal::lastChild(table); child; child = ElementTraversal::previousSibling(child)) {
</del><ins>+    for (auto* child = ElementTraversal::lastChild(table); child; child = ElementTraversal::previousSibling(*child)) {
</ins><span class="cx">         if (child-&gt;hasTagName(theadTag)) {
</span><span class="cx">             if (auto* row = childrenOfType&lt;HTMLTableRowElement&gt;(*child).last())
</span><span class="cx">                 return row;
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx"> 
</span><span class="cx"> Element* HTMLTableRowsCollection::customElementAfter(Element* previous) const
</span><span class="cx"> {
</span><del>-    return rowAfter(const_cast&lt;HTMLTableElement*&gt;(&amp;tableElement()), downcast&lt;HTMLTableRowElement&gt;(previous));
</del><ins>+    return rowAfter(const_cast&lt;HTMLTableElement&amp;&gt;(tableElement()), downcast&lt;HTMLTableRowElement&gt;(previous));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableRowsCollectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableRowsCollection.h (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableRowsCollection.h        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/HTMLTableRowsCollection.h        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -43,8 +43,8 @@
</span><span class="cx">     HTMLTableElement&amp; tableElement() { return downcast&lt;HTMLTableElement&gt;(ownerNode()); }
</span><span class="cx">     const HTMLTableElement&amp; tableElement() const { return downcast&lt;HTMLTableElement&gt;(ownerNode()); }
</span><span class="cx"> 
</span><del>-    static HTMLTableRowElement* rowAfter(HTMLTableElement*, HTMLTableRowElement*);
-    static HTMLTableRowElement* lastRow(HTMLTableElement*);
</del><ins>+    static HTMLTableRowElement* rowAfter(HTMLTableElement&amp;, HTMLTableRowElement*);
+    static HTMLTableRowElement* lastRow(HTMLTableElement&amp;);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     explicit HTMLTableRowsCollection(HTMLTableElement&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextAreaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -399,7 +399,7 @@
</span><span class="cx"> 
</span><span class="cx"> String HTMLTextAreaElement::defaultValue() const
</span><span class="cx"> {
</span><del>-    return TextNodeTraversal::contentsAsString(this);
</del><ins>+    return TextNodeTraversal::contentsAsString(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTextAreaElement::setDefaultValue(const String&amp; defaultValue)
</span><span class="lines">@@ -408,7 +408,7 @@
</span><span class="cx"> 
</span><span class="cx">     // To preserve comments, remove only the text nodes, then add a single text node.
</span><span class="cx">     Vector&lt;RefPtr&lt;Text&gt;&gt; textNodes;
</span><del>-    for (Text* textNode = TextNodeTraversal::firstChild(this); textNode; textNode = TextNodeTraversal::nextSibling(textNode))
</del><ins>+    for (Text* textNode = TextNodeTraversal::firstChild(*this); textNode; textNode = TextNodeTraversal::nextSibling(*textNode))
</ins><span class="cx">         textNodes.append(textNode);
</span><span class="cx"> 
</span><span class="cx">     size_t size = textNodes.size();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextFormControlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -431,7 +431,7 @@
</span><span class="cx"> PassRefPtr&lt;Range&gt; HTMLTextFormControlElement::selection() const
</span><span class="cx"> {
</span><span class="cx">     if (!renderer() || !isTextFormControl() || !hasCachedSelection())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     int start = m_cachedSelectionStart;
</span><span class="cx">     int end = m_cachedSelectionEnd;
</span><span class="lines">@@ -439,15 +439,15 @@
</span><span class="cx">     ASSERT(start &lt;= end);
</span><span class="cx">     TextControlInnerTextElement* innerText = innerTextElement();
</span><span class="cx">     if (!innerText)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     if (!innerText-&gt;firstChild())
</span><span class="cx">         return Range::create(document(), innerText, 0, innerText, 0);
</span><span class="cx"> 
</span><span class="cx">     int offset = 0;
</span><del>-    Node* startNode = 0;
-    Node* endNode = 0;
-    for (Node* node = innerText-&gt;firstChild(); node; node = NodeTraversal::next(node, innerText)) {
</del><ins>+    Node* startNode = nullptr;
+    Node* endNode = nullptr;
+    for (Node* node = innerText-&gt;firstChild(); node; node = NodeTraversal::next(*node, innerText)) {
</ins><span class="cx">         ASSERT(!node-&gt;firstChild());
</span><span class="cx">         ASSERT(node-&gt;isTextNode() || node-&gt;hasTagName(brTag));
</span><span class="cx">         int length = node-&gt;isTextNode() ? lastOffsetInNode(node) : 1;
</span><span class="lines">@@ -464,7 +464,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!startNode || !endNode)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     return Range::create(document(), startNode, start, endNode, end);
</span><span class="cx"> }
</span><span class="lines">@@ -532,7 +532,7 @@
</span><span class="cx"> static String innerTextValueFrom(TextControlInnerTextElement&amp; innerText)
</span><span class="cx"> {
</span><span class="cx">     StringBuilder result;
</span><del>-    for (Node* node = innerText.firstChild(); node; node = NodeTraversal::next(node, &amp;innerText)) {
</del><ins>+    for (Node* node = innerText.firstChild(); node; node = NodeTraversal::next(*node, &amp;innerText)) {
</ins><span class="cx">         if (is&lt;HTMLBRElement&gt;(*node))
</span><span class="cx">             result.append(newlineCharacter);
</span><span class="cx">         else if (is&lt;Text&gt;(*node))
</span><span class="lines">@@ -574,7 +574,7 @@
</span><span class="cx"> {
</span><span class="cx">     unsigned remainingCharactersToMoveForward = index;
</span><span class="cx">     Node* lastBrOrText = innerText;
</span><del>-    for (Node* node = innerText; node; node = NodeTraversal::next(node, innerText)) {
</del><ins>+    for (Node* node = innerText; node; node = NodeTraversal::next(*node, innerText)) {
</ins><span class="cx">         if (node-&gt;hasTagName(brTag)) {
</span><span class="cx">             if (!remainingCharactersToMoveForward)
</span><span class="cx">                 return positionBeforeNode(node);
</span><span class="lines">@@ -607,7 +607,7 @@
</span><span class="cx">     ASSERT(startNode);
</span><span class="cx">     ASSERT(innerText-&gt;contains(startNode));
</span><span class="cx"> 
</span><del>-    for (Node* node = startNode; node; node = NodeTraversal::previous(node, innerText)) {
</del><ins>+    for (Node* node = startNode; node; node = NodeTraversal::previous(*node, innerText)) {
</ins><span class="cx">         if (is&lt;Text&gt;(*node)) {
</span><span class="cx">             unsigned length = downcast&lt;Text&gt;(*node).length();
</span><span class="cx">             if (node == passedPosition.containerNode())
</span><span class="lines">@@ -685,7 +685,7 @@
</span><span class="cx">     getNextSoftBreak(line, breakNode, breakOffset);
</span><span class="cx"> 
</span><span class="cx">     StringBuilder result;
</span><del>-    for (Node* node = innerText-&gt;firstChild(); node; node = NodeTraversal::next(node, innerText)) {
</del><ins>+    for (Node* node = innerText-&gt;firstChild(); node; node = NodeTraversal::next(*node, innerText)) {
</ins><span class="cx">         if (is&lt;HTMLBRElement&gt;(*node))
</span><span class="cx">             result.append(newlineCharacter);
</span><span class="cx">         else if (is&lt;Text&gt;(*node)) {
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTitleElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTitleElement.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTitleElement.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/HTMLTitleElement.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx"> 
</span><span class="cx"> String HTMLTitleElement::text() const
</span><span class="cx"> {
</span><del>-    return TextNodeTraversal::contentsAsString(this);
</del><ins>+    return TextNodeTraversal::contentsAsString(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> StringWithDirection HTMLTitleElement::textWithDirection()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlRadioInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/RadioInputType.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/RadioInputType.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/RadioInputType.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx">     // We can only stay within the form's children if the form hasn't been demoted to a leaf because
</span><span class="cx">     // of malformed HTML.
</span><span class="cx">     Node* node = &amp;element();
</span><del>-    while ((node = (forward ? NodeTraversal::next(node) : NodeTraversal::previous(node)))) {
</del><ins>+    while ((node = (forward ? NodeTraversal::next(*node) : NodeTraversal::previous(*node)))) {
</ins><span class="cx">         // Once we encounter a form element, we know we're through.
</span><span class="cx">         if (is&lt;HTMLFormElement&gt;(*node))
</span><span class="cx">             break;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlTextFieldInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TextFieldInputType.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TextFieldInputType.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/TextFieldInputType.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx">     TextControlInnerTextElement* innerText = innerTextElement();
</span><span class="cx">     ASSERT(innerText);
</span><span class="cx"> 
</span><del>-    for (Text* text = TextNodeTraversal::firstWithin(innerText); text; text = TextNodeTraversal::next(text, innerText)) {
</del><ins>+    for (Text* text = TextNodeTraversal::firstWithin(*innerText); text; text = TextNodeTraversal::next(*text, innerText)) {
</ins><span class="cx">         if (text-&gt;length())
</span><span class="cx">             return false;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVTTCuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VTTCue.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VTTCue.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/html/track/VTTCue.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -614,7 +614,7 @@
</span><span class="cx">     // pre-order, depth-first traversal, excluding WebVTT Ruby Text Objects and
</span><span class="cx">     // their descendants.
</span><span class="cx">     StringBuilder paragraphBuilder;
</span><del>-    for (Node* node = m_webVTTNodeTree-&gt;firstChild(); node; node = NodeTraversal::next(node, m_webVTTNodeTree.get())) {
</del><ins>+    for (Node* node = m_webVTTNodeTree-&gt;firstChild(); node; node = NodeTraversal::next(*node, m_webVTTNodeTree.get())) {
</ins><span class="cx">         // FIXME: The code does not match the comment above. This does not actually exclude Ruby Text Object descendant.
</span><span class="cx">         if (!node-&gt;isTextNode() || node-&gt;localName() == rtTag)
</span><span class="cx">             continue;
</span><span class="lines">@@ -755,7 +755,7 @@
</span><span class="cx">     if (currentTimestamp &gt; movieTime)
</span><span class="cx">         isPastNode = false;
</span><span class="cx">     
</span><del>-    for (Node* child = root-&gt;firstChild(); child; child = NodeTraversal::next(child, root)) {
</del><ins>+    for (Node* child = root-&gt;firstChild(); child; child = NodeTraversal::next(*child, root)) {
</ins><span class="cx">         if (child-&gt;nodeName() == timestampTag) {
</span><span class="cx">             MediaTime currentTimestamp;
</span><span class="cx">             bool check = WebVTTParser::collectTimeStamp(child-&gt;nodeValue(), currentTimestamp);
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorNodeFindercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/inspector/InspectorNodeFinder.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx"> void InspectorNodeFinder::searchUsingDOMTreeTraversal(Node* parentNode)
</span><span class="cx"> {
</span><span class="cx">     // Manual plain text search.
</span><del>-    for (auto* node = parentNode; node; node = NodeTraversal::next(node, parentNode)) {
</del><ins>+    for (auto* node = parentNode; node; node = NodeTraversal::next(*node, parentNode)) {
</ins><span class="cx">         switch (node-&gt;nodeType()) {
</span><span class="cx">         case Node::TEXT_NODE:
</span><span class="cx">         case Node::COMMENT_NODE:
</span></span></pre></div>
<a id="trunkSourceWebCorepageFocusControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FocusController.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FocusController.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/page/FocusController.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -756,9 +756,8 @@
</span><span class="cx">         closest = candidate;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FocusController::findFocusCandidateInContainer(Node* container, const LayoutRect&amp; startingRect, FocusDirection direction, KeyboardEvent* event, FocusCandidate&amp; closest)
</del><ins>+void FocusController::findFocusCandidateInContainer(Node&amp; container, const LayoutRect&amp; startingRect, FocusDirection direction, KeyboardEvent* event, FocusCandidate&amp; closest)
</ins><span class="cx"> {
</span><del>-    ASSERT(container);
</del><span class="cx">     Node* focusedNode = (focusedFrame() &amp;&amp; focusedFrame()-&gt;document()) ? focusedFrame()-&gt;document()-&gt;focusedElement() : 0;
</span><span class="cx"> 
</span><span class="cx">     Element* element = ElementTraversal::firstWithin(container);
</span><span class="lines">@@ -769,8 +768,8 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned candidateCount = 0;
</span><span class="cx">     for (; element; element = (element-&gt;isFrameOwnerElement() || canScrollInDirection(element, direction))
</span><del>-        ? ElementTraversal::nextSkippingChildren(element, container)
-        : ElementTraversal::next(element, container)) {
</del><ins>+        ? ElementTraversal::nextSkippingChildren(*element, &amp;container)
+        : ElementTraversal::next(*element, &amp;container)) {
</ins><span class="cx">         if (element == focusedNode)
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="lines">@@ -785,7 +784,7 @@
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="cx">         candidateCount++;
</span><del>-        candidate.enclosingScrollableBox = container;
</del><ins>+        candidate.enclosingScrollableBox = &amp;container;
</ins><span class="cx">         updateFocusCandidateIfNeeded(direction, current, candidate, closest);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -809,7 +808,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Find the closest node within current container in the direction of the navigation.
</span><span class="cx">     FocusCandidate focusCandidate;
</span><del>-    findFocusCandidateInContainer(container, newStartingRect, direction, event, focusCandidate);
</del><ins>+    findFocusCandidateInContainer(*container, newStartingRect, direction, event, focusCandidate);
</ins><span class="cx"> 
</span><span class="cx">     if (focusCandidate.isNull()) {
</span><span class="cx">         // Nothing to focus, scroll if possible.
</span></span></pre></div>
<a id="trunkSourceWebCorepageFocusControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FocusController.h (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FocusController.h        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/page/FocusController.h        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx">     Element* findElementWithExactTabIndex(Node* start, int tabIndex, KeyboardEvent*, FocusDirection);
</span><span class="cx"> 
</span><span class="cx">     bool advanceFocusDirectionallyInContainer(Node* container, const LayoutRect&amp; startingRect, FocusDirection, KeyboardEvent*);
</span><del>-    void findFocusCandidateInContainer(Node* container, const LayoutRect&amp; startingRect, FocusDirection, KeyboardEvent*, FocusCandidate&amp; closest);
</del><ins>+    void findFocusCandidateInContainer(Node&amp; container, const LayoutRect&amp; startingRect, FocusDirection, KeyboardEvent*, FocusCandidate&amp; closest);
</ins><span class="cx"> 
</span><span class="cx">     void focusRepaintTimerFired();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Frame.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Frame.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/page/Frame.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -348,7 +348,7 @@
</span><span class="cx">     if (aboveCell) {
</span><span class="cx">         // search within the above cell we found for a match
</span><span class="cx">         size_t lengthSearched = 0;    
</span><del>-        for (Text* textNode = TextNodeTraversal::firstWithin(aboveCell); textNode; textNode = TextNodeTraversal::next(textNode, aboveCell)) {
</del><ins>+        for (Text* textNode = TextNodeTraversal::firstWithin(*aboveCell); textNode; textNode = TextNodeTraversal::next(*textNode, aboveCell)) {
</ins><span class="cx">             if (!textNode-&gt;renderer() || textNode-&gt;renderer()-&gt;style().visibility() != VISIBLE)
</span><span class="cx">                 continue;
</span><span class="cx">             // For each text chunk, run the regexp
</span><span class="lines">@@ -369,8 +369,10 @@
</span><span class="cx">     return String();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+// FIXME: This should take an Element&amp;.
</ins><span class="cx"> String Frame::searchForLabelsBeforeElement(const Vector&lt;String&gt;&amp; labels, Element* element, size_t* resultDistance, bool* resultIsInCellAbove)
</span><span class="cx"> {
</span><ins>+    ASSERT(element);
</ins><span class="cx">     JSC::Yarr::RegularExpression regExp = createRegExpForLabels(labels);
</span><span class="cx">     // We stop searching after we've seen this many chars
</span><span class="cx">     const unsigned int charsSearchedThreshold = 500;
</span><span class="lines">@@ -389,7 +391,7 @@
</span><span class="cx">     // walk backwards in the node tree, until another element, or form, or end of tree
</span><span class="cx">     int unsigned lengthSearched = 0;
</span><span class="cx">     Node* n;
</span><del>-    for (n = NodeTraversal::previous(element); n &amp;&amp; lengthSearched &lt; charsSearchedThreshold; n = NodeTraversal::previous(n)) {
</del><ins>+    for (n = NodeTraversal::previous(*element); n &amp;&amp; lengthSearched &lt; charsSearchedThreshold; n = NodeTraversal::previous(*n)) {
</ins><span class="cx">         // We hit another form element or the start of the form - bail out
</span><span class="cx">         if (is&lt;HTMLFormElement&gt;(*n) || is&lt;HTMLFormControlElement&gt;(*n))
</span><span class="cx">             break;
</span></span></pre></div>
<a id="trunkSourceWebCorepageiosFrameIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/ios/FrameIOS.mm (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/ios/FrameIOS.mm        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/page/ios/FrameIOS.mm        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -768,7 +768,7 @@
</span><span class="cx">     unsigned combinationsSoFar = 1;
</span><span class="cx"> 
</span><span class="cx">     Node* pastLastNode = rangeOfRootContents-&gt;pastLastNode();
</span><del>-    for (Node* node = rangeOfRootContents-&gt;firstNode(); node != pastLastNode; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = rangeOfRootContents-&gt;firstNode(); node != pastLastNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         for (auto* marker : document()-&gt;markers().markersFor(node, DocumentMarker::MarkerTypes(DocumentMarker::DictationPhraseWithAlternatives))) {
</span><span class="cx">             // First, add text that precede the marker.
</span><span class="cx">             if (precedingTextStartPosition != createLegacyEditingPosition(node, marker-&gt;startOffset())) {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderCountercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderCounter.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderCounter.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/rendering/RenderCounter.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -58,9 +58,10 @@
</span><span class="cx"> // including pseudo elements as defined in CSS 2.1.
</span><span class="cx"> static RenderElement* previousInPreOrder(const RenderElement&amp; renderer)
</span><span class="cx"> {
</span><del>-    Element* previous = ElementTraversal::previousIncludingPseudo(renderer.element());
</del><ins>+    ASSERT(renderer.element());
+    Element* previous = ElementTraversal::previousIncludingPseudo(*renderer.element());
</ins><span class="cx">     while (previous &amp;&amp; !previous-&gt;renderer())
</span><del>-        previous = ElementTraversal::previousIncludingPseudo(previous);
</del><ins>+        previous = ElementTraversal::previousIncludingPseudo(*previous);
</ins><span class="cx">     return previous ? previous-&gt;renderer() : 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -75,9 +76,10 @@
</span><span class="cx"> // including pseudo elements as defined in CSS 2.1.
</span><span class="cx"> static RenderElement* previousSiblingOrParent(const RenderElement&amp; renderer)
</span><span class="cx"> {
</span><del>-    Element* previous = ElementTraversal::pseudoAwarePreviousSibling(renderer.element());
</del><ins>+    ASSERT(renderer.element());
+    Element* previous = ElementTraversal::pseudoAwarePreviousSibling(*renderer.element());
</ins><span class="cx">     while (previous &amp;&amp; !previous-&gt;renderer())
</span><del>-        previous = ElementTraversal::pseudoAwarePreviousSibling(previous);
</del><ins>+        previous = ElementTraversal::pseudoAwarePreviousSibling(*previous);
</ins><span class="cx">     if (previous)
</span><span class="cx">         return previous-&gt;renderer();
</span><span class="cx">     previous = parentOrPseudoHostElement(renderer);
</span><span class="lines">@@ -93,11 +95,12 @@
</span><span class="cx"> // including pseudo elements as defined in CSS 2.1.
</span><span class="cx"> static RenderElement* nextInPreOrder(const RenderElement&amp; renderer, const Element* stayWithin, bool skipDescendants = false)
</span><span class="cx"> {
</span><del>-    Element* self = renderer.element();
</del><ins>+    ASSERT(renderer.element());
+    Element&amp; self = *renderer.element();
</ins><span class="cx">     Element* next = skipDescendants ? ElementTraversal::nextIncludingPseudoSkippingChildren(self, stayWithin) : ElementTraversal::nextIncludingPseudo(self, stayWithin);
</span><span class="cx">     while (next &amp;&amp; !next-&gt;renderer())
</span><del>-        next = skipDescendants ? ElementTraversal::nextIncludingPseudoSkippingChildren(next, stayWithin) : ElementTraversal::nextIncludingPseudo(next, stayWithin);
-    return next ? next-&gt;renderer() : 0;
</del><ins>+        next = skipDescendants ? ElementTraversal::nextIncludingPseudoSkippingChildren(*next, stayWithin) : ElementTraversal::nextIncludingPseudo(*next, stayWithin);
+    return next ? next-&gt;renderer() : nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool planCounter(RenderElement&amp; renderer, const AtomicString&amp; identifier, bool&amp; isReset, int&amp; value)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderListItemcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderListItem.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderListItem.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/rendering/RenderListItem.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -126,18 +126,18 @@
</span><span class="cx"> // Returns the next list item with respect to the DOM order.
</span><span class="cx"> static RenderListItem* nextListItem(const Element&amp; listNode, const Element&amp; element)
</span><span class="cx"> {
</span><del>-    for (const Element* next = ElementTraversal::nextIncludingPseudo(&amp;element, &amp;listNode); next; ) {
</del><ins>+    for (const Element* next = ElementTraversal::nextIncludingPseudo(element, &amp;listNode); next; ) {
</ins><span class="cx">         auto* renderer = next-&gt;renderer();
</span><span class="cx">         if (!renderer || isHTMLListElement(*next)) {
</span><span class="cx">             // We've found a nested, independent list or an unrendered Element : nothing to do here.
</span><del>-            next = ElementTraversal::nextIncludingPseudoSkippingChildren(next, &amp;listNode);
</del><ins>+            next = ElementTraversal::nextIncludingPseudoSkippingChildren(*next, &amp;listNode);
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (is&lt;RenderListItem&gt;(*renderer))
</span><span class="cx">             return downcast&lt;RenderListItem&gt;(renderer);
</span><span class="cx"> 
</span><del>-        next = ElementTraversal::nextIncludingPseudo(next, &amp;listNode);
</del><ins>+        next = ElementTraversal::nextIncludingPseudo(*next, &amp;listNode);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return nullptr;
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx"> // Returns the previous list item with respect to the DOM order.
</span><span class="cx"> static RenderListItem* previousListItem(const Element* listNode, const RenderListItem&amp; item)
</span><span class="cx"> {
</span><del>-    for (const Element* current = ElementTraversal::previousIncludingPseudo(&amp;item.element(), listNode); current; current = ElementTraversal::previousIncludingPseudo(current, listNode)) {
</del><ins>+    for (const Element* current = ElementTraversal::previousIncludingPseudo(item.element(), listNode); current; current = ElementTraversal::previousIncludingPseudo(*current, listNode)) {
</ins><span class="cx">         RenderElement* renderer = current-&gt;renderer();
</span><span class="cx">         if (!is&lt;RenderListItem&gt;(renderer))
</span><span class="cx">             continue;
</span><span class="lines">@@ -169,7 +169,7 @@
</span><span class="cx">         // be a list item itself. We need to examine it, so we do this to counteract
</span><span class="cx">         // the previousIncludingPseudo() that will be done by the loop.
</span><span class="cx">         if (otherList)
</span><del>-            current = ElementTraversal::nextIncludingPseudo(otherList);
</del><ins>+            current = ElementTraversal::nextIncludingPseudo(*otherList);
</ins><span class="cx">     }
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderNamedFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -614,12 +614,11 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Retrieve the next node to be visited while computing the ranges inside a region.
</span><del>-static Node* nextNodeInsideContentElement(const Node* currNode, const Element* contentElement)
</del><ins>+static Node* nextNodeInsideContentElement(const Node&amp; currNode, const Element* contentElement)
</ins><span class="cx"> {
</span><del>-    ASSERT(currNode);
</del><span class="cx">     ASSERT(contentElement &amp;&amp; contentElement-&gt;isNamedFlowContentNode());
</span><span class="cx"> 
</span><del>-    if (currNode-&gt;renderer() &amp;&amp; currNode-&gt;renderer()-&gt;isSVGRoot())
</del><ins>+    if (currNode.renderer() &amp;&amp; currNode.renderer()-&gt;isSVGRoot())
</ins><span class="cx">         return NodeTraversal::nextSkippingChildren(currNode, contentElement);
</span><span class="cx"> 
</span><span class="cx">     return NodeTraversal::next(currNode, contentElement);
</span><span class="lines">@@ -660,7 +659,7 @@
</span><span class="cx">         bool skipOverOutsideNodes = false;
</span><span class="cx">         Node* lastEndNode = nullptr;
</span><span class="cx"> 
</span><del>-        for (Node* node = contentElement; node; node = nextNodeInsideContentElement(node, contentElement)) {
</del><ins>+        for (Node* node = contentElement; node; node = nextNodeInsideContentElement(*node, contentElement)) {
</ins><span class="cx">             RenderObject* renderer = node-&gt;renderer();
</span><span class="cx">             if (!renderer)
</span><span class="cx">                 continue;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderView.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderView.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/rendering/RenderView.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -890,9 +890,10 @@
</span><span class="cx">     if (start &amp;&amp; end) {
</span><span class="cx">         Node* startNode = start-&gt;node();
</span><span class="cx">         Node* endNode = end-&gt;node();
</span><del>-        Node* stopNode = NodeTraversal::nextSkippingChildren(endNode);
</del><ins>+        ASSERT(endNode);
+        Node* stopNode = NodeTraversal::nextSkippingChildren(*endNode);
</ins><span class="cx"> 
</span><del>-        for (Node* node = startNode; node != stopNode; node = NodeTraversal::next(node)) {
</del><ins>+        for (Node* node = startNode; node != stopNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx">             RenderObject* renderer = node-&gt;renderer();
</span><span class="cx">             if (!renderer)
</span><span class="cx">                 continue;
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathNodeSetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathNodeSet.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathNodeSet.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/xml/XPathNodeSet.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -207,7 +207,7 @@
</span><span class="cx">     Vector&lt;RefPtr&lt;Node&gt;&gt; sortedNodes;
</span><span class="cx">     sortedNodes.reserveInitialCapacity(nodeCount);
</span><span class="cx"> 
</span><del>-    for (Node* node = findRootNode(m_nodes.first().get()); node; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = findRootNode(m_nodes.first().get()); node; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         if (nodes.contains(node))
</span><span class="cx">             sortedNodes.append(node);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathStepcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathStep.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathStep.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/xml/XPathStep.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -260,7 +260,7 @@
</span><span class="cx">         case DescendantAxis:
</span><span class="cx">             if (context.isAttributeNode()) // In XPath model, attribute nodes do not have children.
</span><span class="cx">                 return;
</span><del>-            for (Node* node = context.firstChild(); node; node = NodeTraversal::next(node, &amp;context)) {
</del><ins>+            for (Node* node = context.firstChild(); node; node = NodeTraversal::next(*node, &amp;context)) {
</ins><span class="cx">                 if (nodeMatches(*node, DescendantAxis, m_nodeTest))
</span><span class="cx">                     nodes.append(node);
</span><span class="cx">             }
</span><span class="lines">@@ -310,7 +310,7 @@
</span><span class="cx">         case FollowingAxis:
</span><span class="cx">             if (context.isAttributeNode()) {
</span><span class="cx">                 Node* node = static_cast&lt;Attr&amp;&gt;(context).ownerElement();
</span><del>-                while ((node = NodeTraversal::next(node))) {
</del><ins>+                while ((node = NodeTraversal::next(*node))) {
</ins><span class="cx">                     if (nodeMatches(*node, FollowingAxis, m_nodeTest))
</span><span class="cx">                         nodes.append(node);
</span><span class="cx">                 }
</span><span class="lines">@@ -319,7 +319,7 @@
</span><span class="cx">                     for (Node* node = parent-&gt;nextSibling(); node; node = node-&gt;nextSibling()) {
</span><span class="cx">                         if (nodeMatches(*node, FollowingAxis, m_nodeTest))
</span><span class="cx">                             nodes.append(node);
</span><del>-                        for (Node* child = node-&gt;firstChild(); child; child = NodeTraversal::next(child, node)) {
</del><ins>+                        for (Node* child = node-&gt;firstChild(); child; child = NodeTraversal::next(*child, node)) {
</ins><span class="cx">                             if (nodeMatches(*child, FollowingAxis, m_nodeTest))
</span><span class="cx">                                 nodes.append(child);
</span><span class="cx">                         }
</span><span class="lines">@@ -334,7 +334,7 @@
</span><span class="cx">             else
</span><span class="cx">                 node = &amp;context;
</span><span class="cx">             while (ContainerNode* parent = node-&gt;parentNode()) {
</span><del>-                for (node = NodeTraversal::previous(node); node != parent; node = NodeTraversal::previous(node)) {
</del><ins>+                for (node = NodeTraversal::previous(*node); node != parent; node = NodeTraversal::previous(*node)) {
</ins><span class="cx">                     if (nodeMatches(*node, PrecedingAxis, m_nodeTest))
</span><span class="cx">                         nodes.append(node);
</span><span class="cx">                 }
</span><span class="lines">@@ -381,7 +381,7 @@
</span><span class="cx">                 nodes.append(&amp;context);
</span><span class="cx">             if (context.isAttributeNode()) // In XPath model, attribute nodes do not have children.
</span><span class="cx">                 return;
</span><del>-            for (Node* node = context.firstChild(); node; node = NodeTraversal::next(node, &amp;context)) {
</del><ins>+            for (Node* node = context.firstChild(); node; node = NodeTraversal::next(*node, &amp;context)) {
</ins><span class="cx">                 if (nodeMatches(*node, DescendantOrSelfAxis, m_nodeTest))
</span><span class="cx">                     nodes.append(node);
</span><span class="cx">             }
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXPathUtilcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XPathUtil.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XPathUtil.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebCore/xml/XPathUtil.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx">             return node-&gt;nodeValue();
</span><span class="cx">         default:
</span><span class="cx">             if (isRootDomNode(node) || node-&gt;isElementNode())
</span><del>-                return TextNodeTraversal::contentsAsString(node);
</del><ins>+                return TextNodeTraversal::contentsAsString(*node);
</ins><span class="cx">     }
</span><span class="cx">     return String();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebKit/mac/ChangeLog        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2015-01-26  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        First argument to DOM traversal functions should be a reference
+        https://bugs.webkit.org/show_bug.cgi?id=140895
+
+        Reviewed by Antti Koivisto.
+
+        First argument to DOM traversal functions should be a reference instead
+        of a pointer as it is dereferenced without null-check.
+
</ins><span class="cx"> 2015-01-26  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] [SVG -&gt; OTF Converter] Flip the switch off on iOS
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebFramemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebFrame.mm (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebFrame.mm        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebKit/mac/WebView/WebFrame.mm        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -1763,7 +1763,7 @@
</span><span class="cx">     DOMRange *previousDOMRange = nil;
</span><span class="cx">     id previousMetadata = nil;
</span><span class="cx">     
</span><del>-    for (Node* node = root; node; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = root; node; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         auto markers = document-&gt;markers().markersFor(node);
</span><span class="cx">         for (auto marker : markers) {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebHTMLRepresentationmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebHTMLRepresentation.mm (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebHTMLRepresentation.mm        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebKit/mac/WebView/WebHTMLRepresentation.mm        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -424,8 +424,10 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+// FIXME: This should take an Element&amp;.
</ins><span class="cx"> static NSString* searchForLabelsBeforeElement(Frame* frame, NSArray* labels, Element* element, size_t* resultDistance, bool* resultIsInCellAbove)
</span><span class="cx"> {
</span><ins>+    ASSERT(element);
</ins><span class="cx">     RegularExpression* regExp = regExpForLabels(labels);
</span><span class="cx">     // We stop searching after we've seen this many chars
</span><span class="cx">     const unsigned int charsSearchedThreshold = 500;
</span><span class="lines">@@ -444,9 +446,7 @@
</span><span class="cx">     // walk backwards in the node tree, until another element, or form, or end of tree
</span><span class="cx">     unsigned lengthSearched = 0;
</span><span class="cx">     Node* n;
</span><del>-    for (n = NodeTraversal::previous(element);
-        n &amp;&amp; lengthSearched &lt; charsSearchedThreshold;
-        n = NodeTraversal::previous(n)) {
</del><ins>+    for (n = NodeTraversal::previous(*element); n &amp;&amp; lengthSearched &lt; charsSearchedThreshold; n = NodeTraversal::previous(*n)) {
</ins><span class="cx">         if (is&lt;HTMLFormElement&gt;(*n) || is&lt;HTMLFormControlElement&gt;(*n)) {
</span><span class="cx">             // We hit another form element or the start of the form - bail out
</span><span class="cx">             break;
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebKit2/ChangeLog        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2015-01-26  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        First argument to DOM traversal functions should be a reference
+        https://bugs.webkit.org/show_bug.cgi?id=140895
+
+        Reviewed by Antti Koivisto.
+
+        First argument to DOM traversal functions should be a reference instead
+        of a pointer as it is dereferenced without null-check.
+
</ins><span class="cx"> 2015-01-26  Beth Dakin  &lt;bdakin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Blacklist iBooks for WebKit's default immediate actions
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp (179142 => 179143)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp        2015-01-26 22:03:00 UTC (rev 179142)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp        2015-01-26 22:36:36 UTC (rev 179143)
</span><span class="lines">@@ -613,7 +613,7 @@
</span><span class="cx">     if (!document)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    for (Node* node = document-&gt;documentElement(); node; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = document-&gt;documentElement(); node; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         if (!is&lt;Element&gt;(*node))
</span><span class="cx">             continue;
</span><span class="cx">         if (is&lt;HTMLFormElement&gt;(*node))
</span><span class="lines">@@ -631,7 +631,7 @@
</span><span class="cx">     if (!document)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    for (Node* node = document-&gt;documentElement(); node; node = NodeTraversal::next(node)) {
</del><ins>+    for (Node* node = document-&gt;documentElement(); node; node = NodeTraversal::next(*node)) {
</ins><span class="cx">         if (!is&lt;Element&gt;(*node))
</span><span class="cx">             continue;
</span><span class="cx">         if (is&lt;HTMLInputElement&gt;(*node) || is&lt;HTMLSelectElement&gt;(*node) || is&lt;HTMLTextAreaElement&gt;(*node))
</span></span></pre>
</div>
</div>

</body>
</html>