<!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 <cdumez@apple.com>
+
+ 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 <roger_fong@apple.com>
</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->getOrCreate(node->renderer());
</span><span class="cx"> while (accessibleObject && accessibleObject->accessibilityIsIgnored()) {
</span><del>- node = NodeTraversal::next(node);
</del><ins>+ node = NodeTraversal::next(*node);
</ins><span class="cx">
</span><span class="cx"> while (node && !node->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->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->heap()->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& 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& 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& type, bool isResolvingStyle)
</del><ins>+static inline bool isFirstOfType(Element& element, const QualifiedName& 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->setAffectsNextSiblingElementStyle();
</span><span class="cx"> if (sibling->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& type)
</del><ins>+static inline bool isLastOfType(const Element& element, const QualifiedName& 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->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& 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->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& type, bool isResolvingStyle)
</del><ins>+static inline int countElementsOfTypeBefore(Element& element, const QualifiedName& 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->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& 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& type)
</del><ins>+static inline int countElementsOfTypeAfter(const Element& element, const QualifiedName& 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->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->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->renderStyle();
</span><span class="cx"> parentElement->setChildrenAffectedByFirstChildRules();
</span><span class="lines">@@ -659,13 +659,13 @@
</span><span class="cx"> if (context.resolvingMode == Mode::ResolvingStyle)
</span><span class="cx"> element->setStyleIsAffectedByPreviousSibling();
</span><span class="cx">
</span><del>- return isFirstOfType(element, element->tagQName(), context.resolvingMode == Mode::ResolvingStyle);
</del><ins>+ return isFirstOfType(*element, element->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->parentElement()) {
</span><del>- bool result = parentElement->isFinishedParsingChildren() && isLastChildElement(element);
</del><ins>+ bool result = parentElement->isFinishedParsingChildren() && isLastChildElement(*element);
</ins><span class="cx"> if (context.resolvingMode == Mode::ResolvingStyle) {
</span><span class="cx"> RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element->renderStyle();
</span><span class="cx"> parentElement->setChildrenAffectedByLastChildRules();
</span><span class="lines">@@ -682,13 +682,13 @@
</span><span class="cx"> parentElement->setChildrenAffectedByBackwardPositionalRules();
</span><span class="cx"> if (!parentElement->isFinishedParsingChildren())
</span><span class="cx"> return false;
</span><del>- return isLastOfType(element, element->tagQName());
</del><ins>+ return isLastOfType(*element, element->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->parentElement()) {
</span><del>- bool firstChild = isFirstChildElement(element);
- bool onlyChild = firstChild && parentElement->isFinishedParsingChildren() && isLastChildElement(element);
</del><ins>+ bool firstChild = isFirstChildElement(*element);
+ bool onlyChild = firstChild && parentElement->isFinishedParsingChildren() && isLastChildElement(*element);
</ins><span class="cx"> if (context.resolvingMode == Mode::ResolvingStyle) {
</span><span class="cx"> RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element->renderStyle();
</span><span class="cx"> parentElement->setChildrenAffectedByFirstChildRules();
</span><span class="lines">@@ -710,7 +710,7 @@
</span><span class="cx"> }
</span><span class="cx"> if (!parentElement->isFinishedParsingChildren())
</span><span class="cx"> return false;
</span><del>- return isFirstOfType(element, element->tagQName(), context.resolvingMode == Mode::ResolvingStyle) && isLastOfType(element, element->tagQName());
</del><ins>+ return isFirstOfType(*element, element->tagQName(), context.resolvingMode == Mode::ResolvingStyle) && isLastOfType(*element, element->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->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->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->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->setStyleIsAffectedByPreviousSibling();
</span><span class="cx">
</span><del>- int count = 1 + countElementsOfTypeBefore(element, element->tagQName(), context.resolvingMode == Mode::ResolvingStyle);
</del><ins>+ int count = 1 + countElementsOfTypeBefore(*element, element->tagQName(), context.resolvingMode == Mode::ResolvingStyle);
</ins><span class="cx"> if (selector->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->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->matchNth(count))
</span><span class="cx"> return true;
</span><span class="lines">@@ -845,7 +845,7 @@
</span><span class="cx"> if (!parentElement->isFinishedParsingChildren())
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- int count = 1 + countElementsOfTypeAfter(element, element->tagQName());
</del><ins>+ int count = 1 + countElementsOfTypeAfter(*element, element->tagQName());
</ins><span class="cx"> if (selector->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(&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()->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()->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(&child);
- change.nextSiblingElement = ElementTraversal::nextSibling(&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<Element>(child) ? ElementRemoved : is<Text>(child) ? TextRemoved : NonContentsChildChanged;
</span><del>- change.previousSiblingElement = (!previousSibling || is<Element>(*previousSibling)) ? downcast<Element>(previousSibling) : ElementTraversal::previousSibling(previousSibling);
- change.nextSiblingElement = (!nextSibling || is<Element>(*nextSibling)) ? downcast<Element>(nextSibling) : ElementTraversal::nextSibling(nextSibling);
</del><ins>+ change.previousSiblingElement = (!previousSibling || is<Element>(*previousSibling)) ? downcast<Element>(previousSibling) : ElementTraversal::previousSibling(*previousSibling);
+ change.nextSiblingElement = (!nextSibling || is<Element>(*nextSibling)) ? downcast<Element>(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->inDocument() && document->hasListenerType(Document::DOMNODEINSERTEDINTODOCUMENT_LISTENER)) {
</span><del>- for (; c; c = NodeTraversal::next(c.get(), &child))
</del><ins>+ for (; c; c = NodeTraversal::next(*c, &child))
</ins><span class="cx"> c->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->inDocument() && document->hasListenerType(Document::DOMNODEREMOVEDFROMDOCUMENT_LISTENER)) {
</span><del>- for (; c; c = NodeTraversal::next(c.get(), &child))
</del><ins>+ for (; c; c = NodeTraversal::next(*c, &child))
</ins><span class="cx"> c->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->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(&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->renderer();
</span><span class="cx"> if (renderer && renderer->style().hasViewportUnits())
</span><span class="cx"> element->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->pastLastNode();
</span><del>- for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> for (auto* marker : markersFor(node)) {
</span><span class="cx"> if (!markerTypes.contains(marker->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->pastLastNode();
</span><span class="cx">
</span><del>- for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> int startOffset = node == startContainer ? range->startOffset() : 0;
</span><span class="cx"> int endOffset = node == endContainer ? range->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->pastLastNode();
</span><del>- for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> for (auto* marker : markersFor(node)) {
</span><span class="cx"> if (!markerTypes.contains(marker->type()))
</span><span class="cx"> continue;
</span><span class="lines">@@ -699,7 +699,7 @@
</span><span class="cx"> Node* endContainer = range->endContainer();
</span><span class="cx">
</span><span class="cx"> Node* pastLastNode = range->pastLastNode();
</span><del>- for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> unsigned startOffset = node == startContainer ? range->startOffset() : 0;
</span><span class="cx"> unsigned endOffset = node == endContainer ? static_cast<unsigned>(range->endOffset()) : std::numeric_limits<unsigned>::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& 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->styleChangeType() >= FullStyleChange)
</del><ins>+ if (parent.styleChangeType() >= 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->childrenAffectedByFirstChildRules() && elementAfterChange) {
</del><ins>+ if (parent.childrenAffectedByFirstChildRules() && 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->childrenAffectedByLastChildRules() && elementBeforeChange) {
</del><ins>+ if (parent.childrenAffectedByLastChildRules() && 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->childrenAffectedByBackwardPositionalRules() && elementBeforeChange)
- parent->setNeedsStyleRecalc();
</del><ins>+ if (parent.childrenAffectedByBackwardPositionalRules() && elementBeforeChange)
+ parent.setNeedsStyleRecalc();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void Element::childrenChanged(const ChildChange& 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->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->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 <typename ElementType>
</span><span class="cx"> inline ElementChildIterator<ElementType> ElementChildIteratorAdapter<ElementType>::begin()
</span><span class="cx"> {
</span><del>- return ElementChildIterator<ElementType>(m_parent, Traversal<ElementType>::firstChild(&m_parent));
</del><ins>+ return ElementChildIterator<ElementType>(m_parent, Traversal<ElementType>::firstChild(m_parent));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="lines">@@ -144,13 +144,13 @@
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> inline ElementType* ElementChildIteratorAdapter<ElementType>::first()
</span><span class="cx"> {
</span><del>- return Traversal<ElementType>::firstChild(&m_parent);
</del><ins>+ return Traversal<ElementType>::firstChild(m_parent);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> inline ElementType* ElementChildIteratorAdapter<ElementType>::last()
</span><span class="cx"> {
</span><del>- return Traversal<ElementType>::lastChild(&m_parent);
</del><ins>+ return Traversal<ElementType>::lastChild(m_parent);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="lines">@@ -171,7 +171,7 @@
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> inline ElementChildConstIterator<ElementType> ElementChildConstIteratorAdapter<ElementType>::begin() const
</span><span class="cx"> {
</span><del>- return ElementChildConstIterator<ElementType>(m_parent, Traversal<ElementType>::firstChild(&m_parent));
</del><ins>+ return ElementChildConstIterator<ElementType>(m_parent, Traversal<ElementType>::firstChild(m_parent));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="lines">@@ -183,13 +183,13 @@
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> inline const ElementType* ElementChildConstIteratorAdapter<ElementType>::first() const
</span><span class="cx"> {
</span><del>- return Traversal<ElementType>::firstChild(&m_parent);
</del><ins>+ return Traversal<ElementType>::firstChild(m_parent);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> inline const ElementType* ElementChildConstIteratorAdapter<ElementType>::last() const
</span><span class="cx"> {
</span><del>- return Traversal<ElementType>::lastChild(&m_parent);
</del><ins>+ return Traversal<ElementType>::lastChild(m_parent);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</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->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(&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(&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(&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(&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<ElementType>::next(m_current, m_root);
</del><ins>+ m_current = Traversal<ElementType>::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<ElementType>::previous(m_current, m_root);
</del><ins>+ m_current = Traversal<ElementType>::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<ElementType>::nextSibling(m_current);
</del><ins>+ m_current = Traversal<ElementType>::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<ElementType>::previousSibling(m_current);
</del><ins>+ m_current = Traversal<ElementType>::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<ElementType>::nextSkippingChildren(m_current, m_root);
</del><ins>+ m_current = Traversal<ElementType>::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<ElementType>::next(m_current, m_root);
</del><ins>+ m_current = Traversal<ElementType>::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<ElementType>::previous(m_current, m_root);
</del><ins>+ m_current = Traversal<ElementType>::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<ElementType>::nextSibling(m_current);
</del><ins>+ m_current = Traversal<ElementType>::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<ElementType>::previousSibling(m_current);
</del><ins>+ m_current = Traversal<ElementType>::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<ElementType>::nextSkippingChildren(m_current, m_root);
</del><ins>+ m_current = Traversal<ElementType>::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&);
+ static ElementType* firstChild(const ContainerNode&);
+ static ElementType* lastChild(const Node&);
+ static ElementType* lastChild(const ContainerNode&);
</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&);
+ static ElementType* firstWithin(const ContainerNode&);
+ static ElementType* lastWithin(const Node&);
+ static ElementType* lastWithin(const ContainerNode&);
</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&);
+ 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);
</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&);
+ static ElementType* previousSibling(const Node&);
</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&);
+ static ElementType* nextSkippingChildren(const Node&, const Node* stayWithin);
</ins><span class="cx">
</span><span class="cx"> private:
</span><del>- template <typename CurrentType> static ElementType* firstChildTemplate(CurrentType*);
- template <typename CurrentType> static ElementType* lastChildTemplate(CurrentType*);
- template <typename CurrentType> static ElementType* firstWithinTemplate(CurrentType*);
- template <typename CurrentType> static ElementType* lastWithinTemplate(CurrentType*);
- template <typename CurrentType> static ElementType* nextTemplate(CurrentType*);
- template <typename CurrentType> static ElementType* nextTemplate(CurrentType*, const Node* stayWithin);
</del><ins>+ template <typename CurrentType> static ElementType* firstChildTemplate(CurrentType&);
+ template <typename CurrentType> static ElementType* lastChildTemplate(CurrentType&);
+ template <typename CurrentType> static ElementType* firstWithinTemplate(CurrentType&);
+ template <typename CurrentType> static ElementType* lastWithinTemplate(CurrentType&);
+ template <typename CurrentType> static ElementType* nextTemplate(CurrentType&);
+ template <typename CurrentType> static ElementType* nextTemplate(CurrentType&, const Node* stayWithin);
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> class ElementTraversal : public Traversal<Element> {
</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&, const Node* = nullptr);
+ static Element* nextIncludingPseudo(const Node&, const Node* = nullptr);
+ static Element* nextIncludingPseudoSkippingChildren(const Node&, 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&);
</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 <>
</span><span class="cx"> template <typename CurrentType>
</span><del>-inline Element* Traversal<Element>::firstWithinTemplate(CurrentType* current)
</del><ins>+inline Element* Traversal<Element>::firstWithinTemplate(CurrentType& 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 <>
</span><span class="cx"> template <typename CurrentType>
</span><del>-inline Element* Traversal<Element>::nextTemplate(CurrentType* current)
</del><ins>+inline Element* Traversal<Element>::nextTemplate(CurrentType& current)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::next(current);
</span><span class="cx"> while (node && !is<Element>(*node))
</span><del>- node = NodeTraversal::nextSkippingChildren(node);
</del><ins>+ node = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx"> return downcast<Element>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <>
</span><span class="cx"> template <typename CurrentType>
</span><del>-inline Element* Traversal<Element>::nextTemplate(CurrentType* current, const Node* stayWithin)
</del><ins>+inline Element* Traversal<Element>::nextTemplate(CurrentType& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::next(current, stayWithin);
</span><span class="cx"> while (node && !is<Element>(*node))
</span><del>- node = NodeTraversal::nextSkippingChildren(node, stayWithin);
</del><ins>+ node = NodeTraversal::nextSkippingChildren(*node, stayWithin);
</ins><span class="cx"> return downcast<Element>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Generic versions.
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> template <typename CurrentType>
</span><del>-inline ElementType* Traversal<ElementType>::firstChildTemplate(CurrentType* current)
</del><ins>+inline ElementType* Traversal<ElementType>::firstChildTemplate(CurrentType& current)
</ins><span class="cx"> {
</span><del>- Node* node = current->firstChild();
</del><ins>+ Node* node = current.firstChild();
</ins><span class="cx"> while (node && !is<ElementType>(*node))
</span><span class="cx"> node = node->nextSibling();
</span><span class="cx"> return downcast<ElementType>(node);
</span><span class="lines">@@ -123,9 +123,9 @@
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> template <typename CurrentType>
</span><del>-inline ElementType* Traversal<ElementType>::lastChildTemplate(CurrentType* current)
</del><ins>+inline ElementType* Traversal<ElementType>::lastChildTemplate(CurrentType& current)
</ins><span class="cx"> {
</span><del>- Node* node = current->lastChild();
</del><ins>+ Node* node = current.lastChild();
</ins><span class="cx"> while (node && !is<ElementType>(*node))
</span><span class="cx"> node = node->previousSibling();
</span><span class="cx"> return downcast<ElementType>(node);
</span><span class="lines">@@ -133,155 +133,155 @@
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> template <typename CurrentType>
</span><del>-inline ElementType* Traversal<ElementType>::firstWithinTemplate(CurrentType* current)
</del><ins>+inline ElementType* Traversal<ElementType>::firstWithinTemplate(CurrentType& current)
</ins><span class="cx"> {
</span><del>- Node* node = current->firstChild();
</del><ins>+ Node* node = current.firstChild();
</ins><span class="cx"> while (node && !is<ElementType>(*node))
</span><del>- node = NodeTraversal::next(node, current);
</del><ins>+ node = NodeTraversal::next(*node, &current);
</ins><span class="cx"> return downcast<ElementType>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> template <typename CurrentType>
</span><del>-inline ElementType* Traversal<ElementType>::lastWithinTemplate(CurrentType* current)
</del><ins>+inline ElementType* Traversal<ElementType>::lastWithinTemplate(CurrentType& current)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::last(current);
</span><span class="cx"> while (node && !is<ElementType>(*node))
</span><del>- node = NodeTraversal::previous(node, current);
</del><ins>+ node = NodeTraversal::previous(*node, &current);
</ins><span class="cx"> return downcast<ElementType>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> template <typename CurrentType>
</span><del>-inline ElementType* Traversal<ElementType>::nextTemplate(CurrentType* current)
</del><ins>+inline ElementType* Traversal<ElementType>::nextTemplate(CurrentType& current)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::next(current);
</span><span class="cx"> while (node && !is<ElementType>(*node))
</span><del>- node = NodeTraversal::next(node);
</del><ins>+ node = NodeTraversal::next(*node);
</ins><span class="cx"> return downcast<ElementType>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> template <typename CurrentType>
</span><del>-inline ElementType* Traversal<ElementType>::nextTemplate(CurrentType* current, const Node* stayWithin)
</del><ins>+inline ElementType* Traversal<ElementType>::nextTemplate(CurrentType& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::next(current, stayWithin);
</span><span class="cx"> while (node && !is<ElementType>(*node))
</span><del>- node = NodeTraversal::next(node, stayWithin);
</del><ins>+ node = NodeTraversal::next(*node, stayWithin);
</ins><span class="cx"> return downcast<ElementType>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::previous(const Node* current)
</del><ins>+inline ElementType* Traversal<ElementType>::previous(const Node& current)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::previous(current);
</span><span class="cx"> while (node && !is<ElementType>(*node))
</span><del>- node = NodeTraversal::previous(node);
</del><ins>+ node = NodeTraversal::previous(*node);
</ins><span class="cx"> return downcast<ElementType>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::previous(const Node* current, const Node* stayWithin)
</del><ins>+inline ElementType* Traversal<ElementType>::previous(const Node& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::previous(current, stayWithin);
</span><span class="cx"> while (node && !is<ElementType>(*node))
</span><del>- node = NodeTraversal::previous(node, stayWithin);
</del><ins>+ node = NodeTraversal::previous(*node, stayWithin);
</ins><span class="cx"> return downcast<ElementType>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::nextSibling(const Node* current)
</del><ins>+inline ElementType* Traversal<ElementType>::nextSibling(const Node& current)
</ins><span class="cx"> {
</span><del>- Node* node = current->nextSibling();
</del><ins>+ Node* node = current.nextSibling();
</ins><span class="cx"> while (node && !is<ElementType>(*node))
</span><span class="cx"> node = node->nextSibling();
</span><span class="cx"> return downcast<ElementType>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::previousSibling(const Node* current)
</del><ins>+inline ElementType* Traversal<ElementType>::previousSibling(const Node& current)
</ins><span class="cx"> {
</span><del>- Node* node = current->previousSibling();
</del><ins>+ Node* node = current.previousSibling();
</ins><span class="cx"> while (node && !is<ElementType>(*node))
</span><span class="cx"> node = node->previousSibling();
</span><span class="cx"> return downcast<ElementType>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::nextSkippingChildren(const Node* current)
</del><ins>+inline ElementType* Traversal<ElementType>::nextSkippingChildren(const Node& current)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::nextSkippingChildren(current);
</span><span class="cx"> while (node && !is<ElementType>(*node))
</span><del>- node = NodeTraversal::nextSkippingChildren(node);
</del><ins>+ node = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx"> return downcast<ElementType>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::nextSkippingChildren(const Node* current, const Node* stayWithin)
</del><ins>+inline ElementType* Traversal<ElementType>::nextSkippingChildren(const Node& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::nextSkippingChildren(current, stayWithin);
</span><span class="cx"> while (node && !is<ElementType>(*node))
</span><del>- node = NodeTraversal::nextSkippingChildren(node, stayWithin);
</del><ins>+ node = NodeTraversal::nextSkippingChildren(*node, stayWithin);
</ins><span class="cx"> return downcast<ElementType>(node);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::firstChild(const ContainerNode* current) { return firstChildTemplate(current); }
</del><ins>+inline ElementType* Traversal<ElementType>::firstChild(const ContainerNode& current) { return firstChildTemplate(current); }
</ins><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::firstChild(const Node* current) { return firstChildTemplate(current); }
</del><ins>+inline ElementType* Traversal<ElementType>::firstChild(const Node& current) { return firstChildTemplate(current); }
</ins><span class="cx"> template <typename ElementType>
</span><span class="cx">
</span><del>-inline ElementType* Traversal<ElementType>::lastChild(const ContainerNode* current) { return lastChildTemplate(current); }
</del><ins>+inline ElementType* Traversal<ElementType>::lastChild(const ContainerNode& current) { return lastChildTemplate(current); }
</ins><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::lastChild(const Node* current) { return lastChildTemplate(current); }
</del><ins>+inline ElementType* Traversal<ElementType>::lastChild(const Node& current) { return lastChildTemplate(current); }
</ins><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::firstWithin(const ContainerNode* current) { return firstWithinTemplate(current); }
</del><ins>+inline ElementType* Traversal<ElementType>::firstWithin(const ContainerNode& current) { return firstWithinTemplate(current); }
</ins><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::firstWithin(const Node* current) { return firstWithinTemplate(current); }
</del><ins>+inline ElementType* Traversal<ElementType>::firstWithin(const Node& current) { return firstWithinTemplate(current); }
</ins><span class="cx"> template <typename ElementType>
</span><span class="cx">
</span><del>-inline ElementType* Traversal<ElementType>::lastWithin(const ContainerNode* current) { return lastWithinTemplate(current); }
</del><ins>+inline ElementType* Traversal<ElementType>::lastWithin(const ContainerNode& current) { return lastWithinTemplate(current); }
</ins><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::lastWithin(const Node* current) { return lastWithinTemplate(current); }
</del><ins>+inline ElementType* Traversal<ElementType>::lastWithin(const Node& current) { return lastWithinTemplate(current); }
</ins><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::next(const ContainerNode* current) { return nextTemplate(current); }
</del><ins>+inline ElementType* Traversal<ElementType>::next(const ContainerNode& current) { return nextTemplate(current); }
</ins><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::next(const Node* current) { return nextTemplate(current); }
</del><ins>+inline ElementType* Traversal<ElementType>::next(const Node& current) { return nextTemplate(current); }
</ins><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::next(const ContainerNode* current, const Node* stayWithin) { return nextTemplate(current, stayWithin); }
</del><ins>+inline ElementType* Traversal<ElementType>::next(const ContainerNode& current, const Node* stayWithin) { return nextTemplate(current, stayWithin); }
</ins><span class="cx"> template <typename ElementType>
</span><del>-inline ElementType* Traversal<ElementType>::next(const Node* current, const Node* stayWithin) { return nextTemplate(current, stayWithin); }
</del><ins>+inline ElementType* Traversal<ElementType>::next(const Node& 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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::previousIncludingPseudo(current, stayWithin);
</span><span class="cx"> while (node && !is<Element>(*node))
</span><del>- node = NodeTraversal::previousIncludingPseudo(node, stayWithin);
</del><ins>+ node = NodeTraversal::previousIncludingPseudo(*node, stayWithin);
</ins><span class="cx"> return downcast<Element>(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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::nextIncludingPseudo(current, stayWithin);
</span><span class="cx"> while (node && !is<Element>(*node))
</span><del>- node = NodeTraversal::nextIncludingPseudo(node, stayWithin);
</del><ins>+ node = NodeTraversal::nextIncludingPseudo(*node, stayWithin);
</ins><span class="cx"> return downcast<Element>(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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::nextIncludingPseudoSkippingChildren(current, stayWithin);
</span><span class="cx"> while (node && !is<Element>(*node))
</span><del>- node = NodeTraversal::nextIncludingPseudoSkippingChildren(node, stayWithin);
</del><ins>+ node = NodeTraversal::nextIncludingPseudoSkippingChildren(*node, stayWithin);
</ins><span class="cx"> return downcast<Element>(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& current)
</ins><span class="cx"> {
</span><del>- Node* node = current->pseudoAwarePreviousSibling();
</del><ins>+ Node* node = current.pseudoAwarePreviousSibling();
</ins><span class="cx"> while (node && !is<Element>(*node))
</span><span class="cx"> node = node->pseudoAwarePreviousSibling();
</span><span class="cx"> return downcast<Element>(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& element)
</span><span class="cx"> {
</span><del>- createSheet(element, TextNodeTraversal::contentsAsString(&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->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->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->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& 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, "%s", 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(&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 && node->isDescendantOf(&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(&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 && node->isDescendantOf(&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(&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 && node->isDescendantOf(&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(&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 && node->isDescendantOf(&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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx"> Node* previous;
</span><del>- if (current == stayWithin)
</del><ins>+ if (&current == stayWithin)
</ins><span class="cx"> return nullptr;
</span><del>- if ((previous = current->pseudoAwarePreviousSibling())) {
</del><ins>+ if ((previous = current.pseudoAwarePreviousSibling())) {
</ins><span class="cx"> while (previous->pseudoAwareLastChild())
</span><span class="cx"> previous = previous->pseudoAwareLastChild();
</span><span class="cx"> return previous;
</span><span class="cx"> }
</span><del>- return is<PseudoElement>(*current) ? downcast<PseudoElement>(*current).hostElement() : current->parentNode();
</del><ins>+ return is<PseudoElement>(current) ? downcast<PseudoElement>(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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx"> Node* next;
</span><del>- if ((next = current->pseudoAwareFirstChild()))
</del><ins>+ if ((next = current.pseudoAwareFirstChild()))
</ins><span class="cx"> return next;
</span><del>- if (current == stayWithin)
</del><ins>+ if (&current == stayWithin)
</ins><span class="cx"> return nullptr;
</span><del>- if ((next = current->pseudoAwareNextSibling()))
</del><ins>+ if ((next = current.pseudoAwareNextSibling()))
</ins><span class="cx"> return next;
</span><del>- current = is<PseudoElement>(*current) ? downcast<PseudoElement>(*current).hostElement() : current->parentNode();
- for (; current; current = current->parentNode()) {
- if (current == stayWithin)
</del><ins>+ const Node* ancestor = is<PseudoElement>(current) ? downcast<PseudoElement>(current).hostElement() : current.parentNode();
+ for (; ancestor; ancestor = ancestor->parentNode()) {
+ if (ancestor == stayWithin)
</ins><span class="cx"> return nullptr;
</span><del>- if ((next = current->pseudoAwareNextSibling()))
</del><ins>+ if ((next = ancestor->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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx"> Node* next;
</span><del>- if (current == stayWithin)
</del><ins>+ if (&current == stayWithin)
</ins><span class="cx"> return nullptr;
</span><del>- if ((next = current->pseudoAwareNextSibling()))
</del><ins>+ if ((next = current.pseudoAwareNextSibling()))
</ins><span class="cx"> return next;
</span><del>- current = is<PseudoElement>(*current) ? downcast<PseudoElement>(*current).hostElement() : current->parentNode();
- for (; current; current = current->parentNode()) {
- if (current == stayWithin)
</del><ins>+ const Node* ancestor = is<PseudoElement>(current) ? downcast<PseudoElement>(current).hostElement() : current.parentNode();
+ for (; ancestor; ancestor = ancestor->parentNode()) {
+ if (ancestor == stayWithin)
</ins><span class="cx"> return nullptr;
</span><del>- if ((next = current->pseudoAwareNextSibling()))
</del><ins>+ if ((next = ancestor->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& current)
</ins><span class="cx"> {
</span><del>- ASSERT(!current->nextSibling());
- for (current = current->parentNode(); current; current = current->parentNode()) {
- if (current->nextSibling())
- return current->nextSibling();
</del><ins>+ ASSERT(!current.nextSibling());
+ for (auto* ancestor = current.parentNode(); ancestor; ancestor = ancestor->parentNode()) {
+ if (ancestor->nextSibling())
+ return ancestor->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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>- ASSERT(!current->nextSibling());
- ASSERT(current != stayWithin);
- for (current = current->parentNode(); current; current = current->parentNode()) {
- if (current == stayWithin)
- return 0;
- if (current->nextSibling())
- return current->nextSibling();
</del><ins>+ ASSERT(!current.nextSibling());
+ ASSERT(&current != stayWithin);
+ for (auto* ancestor = current.parentNode(); ancestor; ancestor = ancestor->parentNode()) {
+ if (ancestor == stayWithin)
+ return nullptr;
+ if (ancestor->nextSibling())
+ return ancestor->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& current)
</ins><span class="cx"> {
</span><del>- Node* node = current->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->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& node)
</ins><span class="cx"> {
</span><del>- while (node->lastChild())
- node = node->lastChild();
- return node;
</del><ins>+ Node* lastChild = &node;
+ while (lastChild->lastChild())
+ lastChild = lastChild->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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>- if (current == stayWithin)
- return 0;
- if (current->previousSibling())
- return current->previousSibling();
- for (current = current->parentNode(); current; current = current->parentNode()) {
- if (current == stayWithin)
- return 0;
- if (current->previousSibling())
- return current->previousSibling();
</del><ins>+ if (&current == stayWithin)
+ return nullptr;
+ if (current.previousSibling())
+ return current.previousSibling();
+ for (auto* ancestor = current.parentNode(); ancestor; ancestor = ancestor->parentNode()) {
+ if (ancestor == stayWithin)
+ return nullptr;
+ if (ancestor->previousSibling())
+ return ancestor->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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>- if (current == stayWithin)
- return 0;
- if (!current->nextSibling())
- return current->parentNode();
- Node* next = current->nextSibling();
</del><ins>+ if (&current == stayWithin)
+ return nullptr;
+ if (!current.nextSibling())
+ return current.parentNode();
+ Node* next = current.nextSibling();
</ins><span class="cx"> while (next->firstChild())
</span><span class="cx"> next = next->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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>- ASSERT(!current->previousSibling());
- for (current = current->parentNode(); current; current = current->parentNode()) {
- if (current == stayWithin)
- return 0;
- if (current->previousSibling())
- return current->previousSibling();
</del><ins>+ ASSERT(!current.previousSibling());
+ for (auto* ancestor = current.parentNode(); ancestor; ancestor = ancestor->parentNode()) {
+ if (ancestor == stayWithin)
+ return nullptr;
+ if (ancestor->previousSibling())
+ return ancestor->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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>- if (current->lastChild())
- return current->lastChild();
- if (current == stayWithin)
- return 0;
- if (current->previousSibling())
- return current->previousSibling();
</del><ins>+ if (current.lastChild())
+ return current.lastChild();
+ if (&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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>- if (current == stayWithin)
- return 0;
- if (current->previousSibling())
- return current->previousSibling();
</del><ins>+ if (&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&);
+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);
</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&);
+Node* nextSkippingChildren(const Node&, 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&);
+Node* previous(const Node&, 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&, 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&, 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&, const Node* stayWithin = nullptr);
+Node* previousSkippingChildrenPostOrder(const Node&, 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&, const Node* = nullptr);
+Node* nextIncludingPseudo(const Node&, const Node* = nullptr);
+Node* nextIncludingPseudoSkippingChildren(const Node&, 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&);
+WEBCORE_EXPORT Node* nextAncestorSibling(const Node&, const Node* stayWithin);
+WEBCORE_EXPORT Node* deepLastChild(Node&);
</ins><span class="cx">
</span><span class="cx"> template <class NodeType>
</span><del>-inline Node* traverseNextTemplate(NodeType* current)
</del><ins>+inline Node* traverseNextTemplate(NodeType& current)
</ins><span class="cx"> {
</span><del>- if (current->firstChild())
- return current->firstChild();
- if (current->nextSibling())
- return current->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& current) { return traverseNextTemplate(current); }
+inline Node* next(const ContainerNode& current) { return traverseNextTemplate(current); }
</ins><span class="cx">
</span><span class="cx"> template <class NodeType>
</span><del>-inline Node* traverseNextTemplate(NodeType* current, const Node* stayWithin)
</del><ins>+inline Node* traverseNextTemplate(NodeType& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>- if (current->firstChild())
- return current->firstChild();
- if (current == stayWithin)
- return 0;
- if (current->nextSibling())
- return current->nextSibling();
</del><ins>+ if (current.firstChild())
+ return current.firstChild();
+ if (&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& current, const Node* stayWithin) { return traverseNextTemplate(current, stayWithin); }
+inline Node* next(const ContainerNode& 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& current)
</ins><span class="cx"> {
</span><del>- if (current->nextSibling())
- return current->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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>- if (current == stayWithin)
- return 0;
- if (current->nextSibling())
- return current->nextSibling();
</del><ins>+ if (&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& current) { return nextSkippingChildren(current); }
+inline Node* next(const Text& 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& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><del>- if (Node* previous = current->previousSibling())
- return deepLastChild(previous);
- if (current->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->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->nodeType() == Node::TEXT_NODE || n->nodeType() == Node::CDATA_SECTION_NODE) {
</span><span class="cx"> const String& data = static_cast<CharacterData*>(n)->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->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()->offsetInCharacters())
</span><span class="cx"> return m_start.container();
</span><span class="cx"> if (Node* child = m_start.container()->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()->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()->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->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->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->renderer() && startContainer->renderer()->style().isFlippedBlocksWritingMode();
</span><span class="cx"> bool containsDifferentWritingModes = false;
</span><del>- for (Node* node = firstNode(); node && node != stopNode; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = firstNode(); node && node != stopNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> RenderObject* renderer = node->renderer();
</span><span class="cx"> // Only ask leaf render objects for their line box rects.
</span><span class="cx"> if (renderer && !renderer->firstChildSlow() && renderer->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<Node*> 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->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->parentNode(); parent; parent = parent->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<Element>(*node) && selectedElementsSet.contains(node) && !selectedElementsSet.contains(node->parentNode())) {
</span><span class="cx"> if (RenderBoxModelObject* renderBoxModelObject = downcast<Element>(*node).renderBoxModelObject()) {
</span><span class="cx"> Vector<FloatQuad> 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(&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->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->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& result)
</del><ins>+void appendContents(const ContainerNode& root, StringBuilder& 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, &root))
</ins><span class="cx"> result.append(text->data());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-String contentsAsString(const ContainerNode* root)
</del><ins>+String contentsAsString(const ContainerNode& 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& root)
</ins><span class="cx"> {
</span><del>- ASSERT(root);
- if (is<Text>(*root))
- return downcast<Text>(*root).data();
- if (is<ContainerNode>(*root))
</del><ins>+ if (is<Text>(root))
+ return downcast<Text>(root).data();
+ if (is<ContainerNode>(root))
</ins><span class="cx"> return contentsAsString(downcast<ContainerNode>(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&);
+Text* firstChild(const ContainerNode&);
</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&);
+Text* firstWithin(const ContainerNode&);
</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&);
+Text* next(const Node&, const Node* stayWithin);
+Text* next(const Text&);
+Text* next(const Text&, 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&);
</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& result);
</del><ins>+String contentsAsString(const Node&);
+String contentsAsString(const ContainerNode&);
+void appendContents(const ContainerNode&, StringBuilder& 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 <class NodeType>
</span><del>-inline Text* firstTextChildTemplate(NodeType* current)
</del><ins>+inline Text* firstTextChildTemplate(NodeType& current)
</ins><span class="cx"> {
</span><del>- Node* node = current->firstChild();
</del><ins>+ Node* node = current.firstChild();
</ins><span class="cx"> while (node && !is<Text>(*node))
</span><span class="cx"> node = node->nextSibling();
</span><span class="cx"> return downcast<Text>(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& current) { return firstTextChildTemplate(current); }
+inline Text* firstChild(const ContainerNode& current) { return firstTextChildTemplate(current); }
</ins><span class="cx">
</span><span class="cx"> template <class NodeType>
</span><del>-inline Text* firstTextWithinTemplate(NodeType* current)
</del><ins>+inline Text* firstTextWithinTemplate(NodeType& current)
</ins><span class="cx"> {
</span><del>- Node* node = current->firstChild();
</del><ins>+ Node* node = current.firstChild();
</ins><span class="cx"> while (node && !is<Text>(*node))
</span><del>- node = NodeTraversal::next(node, current);
</del><ins>+ node = NodeTraversal::next(*node, &current);
</ins><span class="cx"> return downcast<Text>(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& current) { return firstTextWithinTemplate(current); }
+inline Text* firstWithin(const ContainerNode& current) { return firstTextWithinTemplate(current); }
</ins><span class="cx">
</span><span class="cx"> template <class NodeType>
</span><del>-inline Text* traverseNextTextTemplate(NodeType* current)
</del><ins>+inline Text* traverseNextTextTemplate(NodeType& current)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::next(current);
</span><span class="cx"> while (node && !is<Text>(*node))
</span><del>- node = NodeTraversal::next(node);
</del><ins>+ node = NodeTraversal::next(*node);
</ins><span class="cx"> return downcast<Text>(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& current) { return traverseNextTextTemplate(current); }
+inline Text* next(const Text& current) { return traverseNextTextTemplate(current); }
</ins><span class="cx">
</span><span class="cx"> template <class NodeType>
</span><del>-inline Text* traverseNextTextTemplate(NodeType* current, const Node* stayWithin)
</del><ins>+inline Text* traverseNextTextTemplate(NodeType& current, const Node* stayWithin)
</ins><span class="cx"> {
</span><span class="cx"> Node* node = NodeTraversal::next(current, stayWithin);
</span><span class="cx"> while (node && !is<Text>(*node))
</span><del>- node = NodeTraversal::next(node, stayWithin);
</del><ins>+ node = NodeTraversal::next(*node, stayWithin);
</ins><span class="cx"> return downcast<Text>(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& current, const Node* stayWithin) { return traverseNextTextTemplate(current, stayWithin); }
+inline Text* next(const Text& 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& current)
</ins><span class="cx"> {
</span><del>- Node* node = current->nextSibling();
</del><ins>+ Node* node = current.nextSibling();
</ins><span class="cx"> while (node && !is<Text>(*node))
</span><span class="cx"> node = node->nextSibling();
</span><span class="cx"> return downcast<Text>(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->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 && state->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 && state->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 <typename ElementType>
</span><span class="cx"> inline TypedElementDescendantIterator<ElementType> TypedElementDescendantIteratorAdapter<ElementType>::begin()
</span><span class="cx"> {
</span><del>- return TypedElementDescendantIterator<ElementType>(m_root, Traversal<ElementType>::firstWithin(&m_root));
</del><ins>+ return TypedElementDescendantIterator<ElementType>(m_root, Traversal<ElementType>::firstWithin(m_root));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="lines">@@ -155,20 +155,20 @@
</span><span class="cx"> ASSERT(descendant.isDescendantOf(&m_root));
</span><span class="cx"> if (is<ElementType>(descendant))
</span><span class="cx"> return TypedElementDescendantIterator<ElementType>(m_root, downcast<ElementType>(&descendant));
</span><del>- ElementType* next = Traversal<ElementType>::next(&descendant, &m_root);
</del><ins>+ ElementType* next = Traversal<ElementType>::next(descendant, &m_root);
</ins><span class="cx"> return TypedElementDescendantIterator<ElementType>(m_root, next);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> inline ElementType* TypedElementDescendantIteratorAdapter<ElementType>::first()
</span><span class="cx"> {
</span><del>- return Traversal<ElementType>::firstWithin(&m_root);
</del><ins>+ return Traversal<ElementType>::firstWithin(m_root);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> inline ElementType* TypedElementDescendantIteratorAdapter<ElementType>::last()
</span><span class="cx"> {
</span><del>- return Traversal<ElementType>::lastWithin(&m_root);
</del><ins>+ return Traversal<ElementType>::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 <typename ElementType>
</span><span class="cx"> inline TypedElementDescendantConstIterator<ElementType> TypedElementDescendantConstIteratorAdapter<ElementType>::begin() const
</span><span class="cx"> {
</span><del>- return TypedElementDescendantConstIterator<ElementType>(m_root, Traversal<ElementType>::firstWithin(&m_root));
</del><ins>+ return TypedElementDescendantConstIterator<ElementType>(m_root, Traversal<ElementType>::firstWithin(m_root));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="lines">@@ -204,20 +204,20 @@
</span><span class="cx"> ASSERT(descendant.isDescendantOf(&m_root));
</span><span class="cx"> if (is<ElementType>(descendant))
</span><span class="cx"> return TypedElementDescendantConstIterator<ElementType>(m_root, downcast<ElementType>(&descendant));
</span><del>- const ElementType* next = Traversal<ElementType>::next(&descendant, &m_root);
</del><ins>+ const ElementType* next = Traversal<ElementType>::next(descendant, &m_root);
</ins><span class="cx"> return TypedElementDescendantConstIterator<ElementType>(m_root, next);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> inline const ElementType* TypedElementDescendantConstIteratorAdapter<ElementType>::first() const
</span><span class="cx"> {
</span><del>- return Traversal<ElementType>::firstWithin(&m_root);
</del><ins>+ return Traversal<ElementType>::firstWithin(m_root);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename ElementType>
</span><span class="cx"> inline const ElementType* TypedElementDescendantConstIteratorAdapter<ElementType>::last() const
</span><span class="cx"> {
</span><del>- return Traversal<ElementType>::lastWithin(&m_root);
</del><ins>+ return Traversal<ElementType>::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()->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->isTextNode() && start.deprecatedEditingOffset() >= 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<Node*, float> 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<RefPtr<HTMLElement>> 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<HTMLElement> element;
</span><span class="cx"> if (is<HTMLElement>(*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() >= 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)) < 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() >= 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 && start.deprecatedNode()->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 <font color="blue">hello</font>, 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& node)
</ins><span class="cx"> {
</span><del>- if (!node->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->firstChild(); descendent && descendent != sibling; descendent = NodeTraversal::next(descendent)) {
- if (!descendent->hasEditableStyle())
</del><ins>+ for (Node* descendant = node.firstChild(); descendant && descendant != sibling; descendant = NodeTraversal::next(*descendant)) {
+ if (!descendant->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<InlineRunToApplyStyle> runs;
</span><span class="cx"> RefPtr<Node> node = startNode;
</span><span class="cx"> for (RefPtr<Node> next; node && 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->renderer() || !node->hasEditableStyle())
</span><span class="cx"> continue;
</span><span class="lines">@@ -773,7 +773,7 @@
</span><span class="cx"> if (MutableStyleProperties* otherStyle = style->style())
</span><span class="cx"> inlineStyle->mergeAndOverrideOnConflict(*otherStyle);
</span><span class="cx"> setNodeAttribute(&element, styleAttr, inlineStyle->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->hasChildNodes()) {
</span><del>- if (node->contains(pastEndNode.get()) || containsNonEditableRegion(node.get()) || !node->parentNode()->hasEditableStyle())
</del><ins>+ if (node->contains(pastEndNode.get()) || containsNonEditableRegion(*node) || !node->parentNode()->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->nextSibling();
</span><del>- while (sibling && sibling != pastEndNode && !sibling->contains(pastEndNode.get())
- && (!isBlock(sibling) || sibling->hasTagName(brTag))
- && !containsNonEditableRegion(sibling)) {
</del><ins>+ while (sibling && sibling != pastEndNode && !sibling->contains(pastEndNode.get()) && (!isBlock(sibling) || sibling->hasTagName(brTag)) && !containsNonEditableRegion(*sibling)) {
</ins><span class="cx"> runEnd = sibling;
</span><span class="cx"> sibling = runEnd->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 && runStart);
</span><span class="cx">
</span><del>- for (Node* node = runStart; node && node != pastEndNode; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = runStart; node && node != pastEndNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> if (node->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<Node> node = next; node && node->inDocument() && node != pastEndNode; node = next) {
</span><span class="cx"> if (editingIgnoresContent(node.get())) {
</span><span class="cx"> ASSERT(!node->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<HTMLElement>(*node))
</span><span class="cx"> continue;
</span><span class="lines">@@ -1119,30 +1117,30 @@
</span><span class="cx"> RefPtr<Node> next;
</span><span class="cx"> if (editingIgnoresContent(node.get())) {
</span><span class="cx"> ASSERT(node == end.deprecatedNode() || !node->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<HTMLElement>(*node) && nodeFullySelected(node.get(), start, end)) {
</span><del>- RefPtr<HTMLElement> elem = downcast<HTMLElement>(node.get());
- RefPtr<Node> prev = NodeTraversal::previousPostOrder(elem.get());
- RefPtr<Node> next = NodeTraversal::next(elem.get());
</del><ins>+ Ref<HTMLElement> elem = downcast<HTMLElement>(*node);
+ RefPtr<Node> prev = NodeTraversal::previousPostOrder(elem);
+ RefPtr<Node> next = NodeTraversal::next(elem);
</ins><span class="cx"> RefPtr<EditingStyle> styleToPushDown;
</span><span class="cx"> RefPtr<Node> 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->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->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() <= 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<RefPtr<Text>> 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 < 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<Text>(*startNode)) {
</span><span class="cx"> Text& textNode = downcast<Text>(*startNode);
</span><span class="cx"> if ((unsigned)pos.deprecatedEditingOffset() >= 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() > 0)
</span><span class="cx"> splitTextNode(&textNode, pos.deprecatedEditingOffset());
</span><span class="cx"> } else if (pos.deprecatedEditingOffset() > 0) {
</span><span class="cx"> Node* childAtOffset = startNode->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<RefPtr<Text>> 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<Text>(*node))
</span><span class="cx"> nodes.append(downcast<Text>(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<Node> startNode = start.deprecatedNode();
</span><del>- for (RefPtr<Node> node = NodeTraversal::nextSkippingChildren(startNode.get(), outerNode.get()); node; node = NodeTraversal::nextSkippingChildren(node.get(), outerNode.get())) {
</del><ins>+ for (RefPtr<Node> 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<Node> previousListNode = emptyListItem->isElementNode() ? ElementTraversal::previousSibling(emptyListItem.get()): emptyListItem->previousSibling();
- RefPtr<Node> nextListNode = emptyListItem->isElementNode() ? ElementTraversal::nextSibling(emptyListItem.get()): emptyListItem->nextSibling();
</del><ins>+ RefPtr<Node> previousListNode = emptyListItem->isElementNode() ? ElementTraversal::previousSibling(*emptyListItem): emptyListItem->previousSibling();
+ RefPtr<Node> nextListNode = emptyListItem->isElementNode() ? ElementTraversal::nextSibling(*emptyListItem): emptyListItem->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 && !next->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<Range> range = m_selectionToDelete.toNormalizedRange();
</span><span class="cx"> RefPtr<Node> node = range->firstNode();
</span><span class="cx"> while (node && node != range->pastLastNode()) {
</span><del>- RefPtr<Node> nextNode = NodeTraversal::next(node.get());
</del><ins>+ RefPtr<Node> nextNode = NodeTraversal::next(*node);
</ins><span class="cx"> if ((is<HTMLStyleElement>(*node) && !downcast<HTMLStyleElement>(*node).hasAttribute(scopedAttr)) || is<HTMLLinkElement>(*node)) {
</span><del>- nextNode = NodeTraversal::nextSkippingChildren(node.get());
</del><ins>+ nextNode = NodeTraversal::nextSkippingChildren(*node);
</ins><span class="cx"> RefPtr<ContainerNode> rootEditableElement = node->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 && !startOffset && canHaveChildrenForEditing(startNode) && !is<HTMLTableElement>(*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 >= 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& text = downcast<Text>(*node);
</span><span class="cx"> deleteTextFromNode(&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->traverseToChildAt(startOffset);
</span><span class="cx"> }
</span><span class="lines">@@ -521,9 +521,9 @@
</span><span class="cx"> while (node && node != m_downstreamEnd.deprecatedNode()) {
</span><span class="cx"> if (comparePositions(firstPositionInOrBeforeNode(node.get()), m_downstreamEnd) >= 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()->isDescendantOf(node.get())) {
</span><del>- RefPtr<Node> nextNode = NodeTraversal::nextSkippingChildren(node.get());
</del><ins>+ RefPtr<Node> 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->lastDescendant();
</span><span class="cx"> if (m_downstreamEnd.deprecatedNode() == n && m_downstreamEnd.deprecatedEditingOffset() >= 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<Node*>& 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->renderer() && node->hasEditableStyle()) {
</span><span class="cx"> ComputedStyleExtractor computedStyle(node);
</span><span class="cx"> TriState nodeState = triStateOfStyle(computedStyle, node->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())->pastLastNode();
</span><del>- for (Node* n = node; n && n != pastLast; n = NodeTraversal::next(n)) {
</del><ins>+ for (Node* n = node; n && n != pastLast; n = NodeTraversal::next(*n)) {
</ins><span class="cx"> if (!n->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 && 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& url, const String& 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 <span></span>. Should we?
</span><del>- RefPtr<Element> previousList = ElementTraversal::previousSibling(selectedListItem.get());
- RefPtr<Element> nextList = ElementTraversal::nextSibling(selectedListItem.get());
</del><ins>+ RefPtr<Element> previousList = ElementTraversal::previousSibling(*selectedListItem);
+ RefPtr<Element> nextList = ElementTraversal::nextSibling(*selectedListItem);
</ins><span class="cx">
</span><span class="cx"> RefPtr<Element> newList = document().createElement(listNode->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<HTMLElement>(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->isTextNode() && insertionPosition.offsetInContainerNode() >= 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<RefPtr<Node>> unrendered;
</span><span class="cx">
</span><del>- for (Node* node = holder->firstChild(); node; node = NodeTraversal::next(node, holder))
</del><ins>+ for (Node* node = holder->firstChild(); node; node = NodeTraversal::next(*node, holder)) {
</ins><span class="cx"> if (!isNodeRendered(node) && !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 < n; ++i)
</span><span class="lines">@@ -320,9 +321,9 @@
</span><span class="cx">
</span><span class="cx"> node = container->firstChild();
</span><span class="cx"> while (node) {
</span><del>- RefPtr<Node> next = NodeTraversal::next(node);
</del><ins>+ RefPtr<Node> 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->lastChild() ? node->lastChild() : NodeTraversal::nextSkippingChildren(node);
</del><ins>+ m_lastNodeInserted = node->lastChild() ? node->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<Node> node = insertedNodes.firstNodeInserted(); node && node != pastEndNode; node = next) {
</span><span class="cx"> // FIXME: <rdar://problem/5371536> 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<StyledElement>(*node))
</span><span class="cx"> continue;
</span><span class="cx">
</span><span class="lines">@@ -624,7 +625,7 @@
</span><span class="cx"> RefPtr<Node> pastEndNode = insertedNodes.pastLastLeaf();
</span><span class="cx"> RefPtr<Node> next;
</span><span class="cx"> for (RefPtr<Node> node = insertedNodes.firstNodeInserted(); node && 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<HTMLElement>(*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<HTMLElement>(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->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<Node> 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 && node != m_nodeAfterLast; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = m_firstNode.get(); node && node != m_nodeAfterLast; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> if (node->firstChild() || (node->isTextNode() && node->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->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->parentOrShadowHostNode();
</span><span class="cx"> while (!next && parentNode) {
</span><span class="cx"> if ((pastEnd && parentNode == m_endContainer) || m_endContainer->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 = &node;
</span><del>- while ((subsequentNode = NodeTraversal::nextSkippingChildren(subsequentNode))) {
</del><ins>+ while ((subsequentNode = NodeTraversal::nextSkippingChildren(*subsequentNode))) {
</ins><span class="cx"> if (subsequentNode->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 && n->hasEditableStyle() != startNode->hasEditableStyle())
</span><del>- n = NodeTraversal::previousPostOrder(n, startBlock);
</del><ins>+ n = NodeTraversal::previousPostOrder(*n, startBlock);
</ins><span class="cx"> if (!n || !n->isDescendantOf(highestRoot))
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> RenderObject* r = n->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& style = r->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->previousSibling() ? n->previousSibling() : NodeTraversal::previousPostOrder(n, startBlock);
</del><ins>+ n = n->previousSibling() ? n->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 && n->hasEditableStyle() != startNode->hasEditableStyle())
</span><del>- n = NodeTraversal::next(n, stayInsideBlock);
</del><ins>+ n = NodeTraversal::next(*n, stayInsideBlock);
</ins><span class="cx"> if (!n || !n->isDescendantOf(highestRoot))
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RenderObject* r = n->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& style = r->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->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<HTMLMetaElement>::firstChild(&element); child; child = Traversal<HTMLMetaElement>::nextSibling(child)) {
</del><ins>+ for (HTMLMetaElement* child = Traversal<HTMLMetaElement>::firstChild(element); child; child = Traversal<HTMLMetaElement>::nextSibling(*child)) {
</ins><span class="cx"> NSString *name = child->name();
</span><span class="cx"> NSString *content = child->content();
</span><span class="cx"> if (name && 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->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->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->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 && node != pastEnd; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = startNode; node && node != pastEnd; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> auto renderer = node->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->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 && node != pastEnd; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = startNode; node && node != pastEnd; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> auto renderer = node->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<Node*> 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 <rdar://problem/5730668>, 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) && canHaveChildrenForEditing(n) && 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->renderer() && !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 && pastEnd->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& base, Element& element, bool onlyIncludeDirectChildren)
</span><span class="cx"> {
</span><del>- return onlyIncludeDirectChildren ? ElementTraversal::previousSibling(&element) : ElementTraversal::previous(&element, &base);
</del><ins>+ return onlyIncludeDirectChildren ? ElementTraversal::previousSibling(element) : ElementTraversal::previous(element, &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& collection, ContainerNode& root)
</span><span class="cx"> {
</span><del>- Element* element = ElementTraversal::firstWithin(&root);
</del><ins>+ Element* element = ElementTraversal::firstWithin(root);
</ins><span class="cx"> while (element && !isMatchingElement(collection, *element))
</span><del>- element = ElementTraversal::next(element, &root);
</del><ins>+ element = ElementTraversal::next(*element, &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 = &element;
</span><span class="cx"> do {
</span><del>- next = ElementTraversal::next(next, &root);
</del><ins>+ next = ElementTraversal::next(*next, &root);
</ins><span class="cx"> } while (next && !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& nodeList, ContainerNode& root)
</span><span class="cx"> {
</span><del>- Element* element = ElementTraversal::firstWithin(&root);
</del><ins>+ Element* element = ElementTraversal::firstWithin(root);
</ins><span class="cx"> while (element && !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 = &element;
</span><span class="cx"> do {
</span><del>- next = ElementTraversal::nextSibling(next);
</del><ins>+ next = ElementTraversal::nextSibling(*next);
</ins><span class="cx"> } while (next && !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& root = rootNode();
</span><del>- Element* last = m_shouldOnlyIncludeDirectChildren ? ElementTraversal::lastChild(&root) : ElementTraversal::lastWithin(&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 && 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& root = rootNode();
</span><span class="cx"> for (; count && current; --count)
</span><del>- current = iterateForPreviousElement(ElementTraversal::previous(current, &root));
</del><ins>+ current = iterateForPreviousElement(ElementTraversal::previous(*current, &root));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void HTMLCollection::invalidateCache(Document& 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->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->nodeName(), "bdi") || node->hasTagName(scriptTag) || node->hasTagName(styleTag)
</span><span class="cx"> || (is<Element>(*node) && downcast<Element>(*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<Element>(*node)) {
</span><span class="cx"> AtomicString dirAttributeValue = downcast<Element>(*node).fastGetAttribute(dirAttr);
</span><span class="cx"> if (isLTROrRTLIgnoringCase(dirAttributeValue) || equalIgnoringCase(dirAttributeValue, "auto")) {
</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->nextSibling();
</del><ins>+ oldMarkedNode = changeType == ElementInserted ? ElementTraversal::nextSibling(*beforeChange) : beforeChange->nextSibling();
</ins><span class="cx">
</span><span class="cx"> while (oldMarkedNode && elementAffectsDirectionality(*oldMarkedNode))
</span><span class="cx"> oldMarkedNode = oldMarkedNode->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<HTMLFormControlElement>(startNode))
</span><span class="cx"> control = &downcast<HTMLFormControlElement>(startNode);
</span><span class="cx"> else
</span><del>- control = Traversal<HTMLFormControlElement>::firstWithin(&startNode);
</del><ins>+ control = Traversal<HTMLFormControlElement>::firstWithin(startNode);
</ins><span class="cx"> while (control) {
</span><span class="cx"> control->setAncestorDisabled(isDisabled);
</span><span class="cx"> // Don't call setAncestorDisabled(false) on form contorls inside disabled fieldsets.
</span><span class="cx"> if (is<HTMLFieldSetElement>(*control) && control->fastHasAttribute(disabledAttr))
</span><del>- control = Traversal<HTMLFormControlElement>::nextSkippingChildren(control, &startNode);
</del><ins>+ control = Traversal<HTMLFormControlElement>::nextSkippingChildren(*control, &startNode);
</ins><span class="cx"> else
</span><del>- control = Traversal<HTMLFormControlElement>::next(control, &startNode);
</del><ins>+ control = Traversal<HTMLFormControlElement>::next(*control, &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<HTMLElement>::firstChild(this); control; control = Traversal<HTMLElement>::nextSibling(control)) {
</del><ins>+ for (HTMLElement* control = Traversal<HTMLElement>::firstChild(*this); control; control = Traversal<HTMLElement>::nextSibling(*control)) {
</ins><span class="cx"> if (!hasSeenFirstLegendElement && is<HTMLLegendElement>(*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<HTMLLegendElement>::firstChild(this);
</del><ins>+ HTMLLegendElement* legend = Traversal<HTMLLegendElement>::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<HTMLLegendElement>::nextSibling(legend)))
</del><ins>+ while ((legend = Traversal<HTMLLegendElement>::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->nodeValue());
</span><span class="cx"> // Text nodes inside script elements are not part of the option text.
</span><span class="cx"> if (is<Element>(*node) && toScriptElementIfPossible(downcast<Element>(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<HTMLElement>(*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& current = downcast<HTMLElement>(*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<HTMLOptGroupElement>(current)) {
</span><span class="cx"> m_listItems.append(&current);
</span><del>- if (Element* nextElement = ElementTraversal::firstWithin(&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 <div> have been added but we
</span><span class="cx"> // handle this because such tags have already been removed from the
</span><span class="cx"> // <select>'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 && m_size <= 1 && firstOption && !firstOption->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<HTMLTableRowElement> lastRow = 0;
</span><span class="cx"> RefPtr<HTMLTableRowElement> 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 <= 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 <= 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& 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->parentNode() == table)
</del><ins>+ if (row->parentNode() == &table)
</ins><span class="cx"> return;
</span><span class="cx"> ASSERT(row->parentNode());
</span><span class="cx"> ASSERT(row->parentNode()->hasTagName(theadTag) || row->parentNode()->hasTagName(tbodyTag) || row->parentNode()->hasTagName(tfootTag));
</span><del>- ASSERT(row->parentNode()->parentNode() == table);
</del><ins>+ ASSERT(row->parentNode()->parentNode() == &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<HTMLElement>(*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& 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 && previous->parentNode() != table) {
</del><ins>+ if (previous && previous->parentNode() != &table) {
</ins><span class="cx"> auto childRows = childrenOfType<HTMLTableRowElement>(*previous->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->parentNode());
- for (; child; child = ElementTraversal::nextSibling(child)) {
</del><ins>+ child = ElementTraversal::nextSibling(*previous->parentNode());
+ for (; child; child = ElementTraversal::nextSibling(*child)) {
</ins><span class="cx"> if (child->hasTagName(theadTag)) {
</span><span class="cx"> if (auto row = childrenOfType<HTMLTableRowElement>(*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->parentNode() == table)
- child = ElementTraversal::nextSibling(previous);
</del><ins>+ else if (previous->parentNode() == &table)
+ child = ElementTraversal::nextSibling(*previous);
</ins><span class="cx"> else if (isInSection(*previous, tbodyTag))
</span><del>- child = ElementTraversal::nextSibling(previous->parentNode());
- for (; child; child = ElementTraversal::nextSibling(child)) {
</del><ins>+ child = ElementTraversal::nextSibling(*previous->parentNode());
+ for (; child; child = ElementTraversal::nextSibling(*child)) {
</ins><span class="cx"> if (is<HTMLTableRowElement>(*child))
</span><span class="cx"> return downcast<HTMLTableRowElement>(child);
</span><span class="cx"> if (child->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->parentNode());
- for (; child; child = ElementTraversal::nextSibling(child)) {
</del><ins>+ child = ElementTraversal::nextSibling(*previous->parentNode());
+ for (; child; child = ElementTraversal::nextSibling(*child)) {
</ins><span class="cx"> if (child->hasTagName(tfootTag)) {
</span><span class="cx"> if (auto row = childrenOfType<HTMLTableRowElement>(*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& 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->hasTagName(tfootTag)) {
</span><span class="cx"> if (auto* row = childrenOfType<HTMLTableRowElement>(*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<HTMLTableRowElement>(*child))
</span><span class="cx"> return downcast<HTMLTableRowElement>(child);
</span><span class="cx"> if (child->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->hasTagName(theadTag)) {
</span><span class="cx"> if (auto* row = childrenOfType<HTMLTableRowElement>(*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<HTMLTableElement*>(&tableElement()), downcast<HTMLTableRowElement>(previous));
</del><ins>+ return rowAfter(const_cast<HTMLTableElement&>(tableElement()), downcast<HTMLTableRowElement>(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& tableElement() { return downcast<HTMLTableElement>(ownerNode()); }
</span><span class="cx"> const HTMLTableElement& tableElement() const { return downcast<HTMLTableElement>(ownerNode()); }
</span><span class="cx">
</span><del>- static HTMLTableRowElement* rowAfter(HTMLTableElement*, HTMLTableRowElement*);
- static HTMLTableRowElement* lastRow(HTMLTableElement*);
</del><ins>+ static HTMLTableRowElement* rowAfter(HTMLTableElement&, HTMLTableRowElement*);
+ static HTMLTableRowElement* lastRow(HTMLTableElement&);
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> explicit HTMLTableRowsCollection(HTMLTableElement&);
</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& 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<RefPtr<Text>> 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<Range> 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 <= 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->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->firstChild(); node; node = NodeTraversal::next(node, innerText)) {
</del><ins>+ Node* startNode = nullptr;
+ Node* endNode = nullptr;
+ for (Node* node = innerText->firstChild(); node; node = NodeTraversal::next(*node, innerText)) {
</ins><span class="cx"> ASSERT(!node->firstChild());
</span><span class="cx"> ASSERT(node->isTextNode() || node->hasTagName(brTag));
</span><span class="cx"> int length = node->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& innerText)
</span><span class="cx"> {
</span><span class="cx"> StringBuilder result;
</span><del>- for (Node* node = innerText.firstChild(); node; node = NodeTraversal::next(node, &innerText)) {
</del><ins>+ for (Node* node = innerText.firstChild(); node; node = NodeTraversal::next(*node, &innerText)) {
</ins><span class="cx"> if (is<HTMLBRElement>(*node))
</span><span class="cx"> result.append(newlineCharacter);
</span><span class="cx"> else if (is<Text>(*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->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->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<Text>(*node)) {
</span><span class="cx"> unsigned length = downcast<Text>(*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->firstChild(); node; node = NodeTraversal::next(node, innerText)) {
</del><ins>+ for (Node* node = innerText->firstChild(); node; node = NodeTraversal::next(*node, innerText)) {
</ins><span class="cx"> if (is<HTMLBRElement>(*node))
</span><span class="cx"> result.append(newlineCharacter);
</span><span class="cx"> else if (is<Text>(*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 = &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<HTMLFormElement>(*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->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->firstChild(); node; node = NodeTraversal::next(node, m_webVTTNodeTree.get())) {
</del><ins>+ for (Node* node = m_webVTTNodeTree->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->isTextNode() || node->localName() == rtTag)
</span><span class="cx"> continue;
</span><span class="lines">@@ -755,7 +755,7 @@
</span><span class="cx"> if (currentTimestamp > movieTime)
</span><span class="cx"> isPastNode = false;
</span><span class="cx">
</span><del>- for (Node* child = root->firstChild(); child; child = NodeTraversal::next(child, root)) {
</del><ins>+ for (Node* child = root->firstChild(); child; child = NodeTraversal::next(*child, root)) {
</ins><span class="cx"> if (child->nodeName() == timestampTag) {
</span><span class="cx"> MediaTime currentTimestamp;
</span><span class="cx"> bool check = WebVTTParser::collectTimeStamp(child->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->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& startingRect, FocusDirection direction, KeyboardEvent* event, FocusCandidate& closest)
</del><ins>+void FocusController::findFocusCandidateInContainer(Node& container, const LayoutRect& startingRect, FocusDirection direction, KeyboardEvent* event, FocusCandidate& closest)
</ins><span class="cx"> {
</span><del>- ASSERT(container);
</del><span class="cx"> Node* focusedNode = (focusedFrame() && focusedFrame()->document()) ? focusedFrame()->document()->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->isFrameOwnerElement() || canScrollInDirection(element, direction))
</span><del>- ? ElementTraversal::nextSkippingChildren(element, container)
- : ElementTraversal::next(element, container)) {
</del><ins>+ ? ElementTraversal::nextSkippingChildren(*element, &container)
+ : ElementTraversal::next(*element, &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 = &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& startingRect, FocusDirection, KeyboardEvent*);
</span><del>- void findFocusCandidateInContainer(Node* container, const LayoutRect& startingRect, FocusDirection, KeyboardEvent*, FocusCandidate& closest);
</del><ins>+ void findFocusCandidateInContainer(Node& container, const LayoutRect& startingRect, FocusDirection, KeyboardEvent*, FocusCandidate& 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->renderer() || textNode->renderer()->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&.
</ins><span class="cx"> String Frame::searchForLabelsBeforeElement(const Vector<String>& 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 && lengthSearched < charsSearchedThreshold; n = NodeTraversal::previous(n)) {
</del><ins>+ for (n = NodeTraversal::previous(*element); n && lengthSearched < 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<HTMLFormElement>(*n) || is<HTMLFormControlElement>(*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->pastLastNode();
</span><del>- for (Node* node = rangeOfRootContents->firstNode(); node != pastLastNode; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = rangeOfRootContents->firstNode(); node != pastLastNode; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> for (auto* marker : document()->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->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& 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 && !previous->renderer())
</span><del>- previous = ElementTraversal::previousIncludingPseudo(previous);
</del><ins>+ previous = ElementTraversal::previousIncludingPseudo(*previous);
</ins><span class="cx"> return previous ? previous->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& 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 && !previous->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->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& renderer, const Element* stayWithin, bool skipDescendants = false)
</span><span class="cx"> {
</span><del>- Element* self = renderer.element();
</del><ins>+ ASSERT(renderer.element());
+ Element& self = *renderer.element();
</ins><span class="cx"> Element* next = skipDescendants ? ElementTraversal::nextIncludingPseudoSkippingChildren(self, stayWithin) : ElementTraversal::nextIncludingPseudo(self, stayWithin);
</span><span class="cx"> while (next && !next->renderer())
</span><del>- next = skipDescendants ? ElementTraversal::nextIncludingPseudoSkippingChildren(next, stayWithin) : ElementTraversal::nextIncludingPseudo(next, stayWithin);
- return next ? next->renderer() : 0;
</del><ins>+ next = skipDescendants ? ElementTraversal::nextIncludingPseudoSkippingChildren(*next, stayWithin) : ElementTraversal::nextIncludingPseudo(*next, stayWithin);
+ return next ? next->renderer() : nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static bool planCounter(RenderElement& renderer, const AtomicString& identifier, bool& isReset, int& 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& listNode, const Element& element)
</span><span class="cx"> {
</span><del>- for (const Element* next = ElementTraversal::nextIncludingPseudo(&element, &listNode); next; ) {
</del><ins>+ for (const Element* next = ElementTraversal::nextIncludingPseudo(element, &listNode); next; ) {
</ins><span class="cx"> auto* renderer = next->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, &listNode);
</del><ins>+ next = ElementTraversal::nextIncludingPseudoSkippingChildren(*next, &listNode);
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (is<RenderListItem>(*renderer))
</span><span class="cx"> return downcast<RenderListItem>(renderer);
</span><span class="cx">
</span><del>- next = ElementTraversal::nextIncludingPseudo(next, &listNode);
</del><ins>+ next = ElementTraversal::nextIncludingPseudo(*next, &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& item)
</span><span class="cx"> {
</span><del>- for (const Element* current = ElementTraversal::previousIncludingPseudo(&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->renderer();
</span><span class="cx"> if (!is<RenderListItem>(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& currNode, const Element* contentElement)
</ins><span class="cx"> {
</span><del>- ASSERT(currNode);
</del><span class="cx"> ASSERT(contentElement && contentElement->isNamedFlowContentNode());
</span><span class="cx">
</span><del>- if (currNode->renderer() && currNode->renderer()->isSVGRoot())
</del><ins>+ if (currNode.renderer() && currNode.renderer()->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->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 && end) {
</span><span class="cx"> Node* startNode = start->node();
</span><span class="cx"> Node* endNode = end->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->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<RefPtr<Node>> 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, &context)) {
</del><ins>+ for (Node* node = context.firstChild(); node; node = NodeTraversal::next(*node, &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<Attr&>(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->nextSibling(); node; node = node->nextSibling()) {
</span><span class="cx"> if (nodeMatches(*node, FollowingAxis, m_nodeTest))
</span><span class="cx"> nodes.append(node);
</span><del>- for (Node* child = node->firstChild(); child; child = NodeTraversal::next(child, node)) {
</del><ins>+ for (Node* child = node->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 = &context;
</span><span class="cx"> while (ContainerNode* parent = node->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(&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, &context)) {
</del><ins>+ for (Node* node = context.firstChild(); node; node = NodeTraversal::next(*node, &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->nodeValue();
</span><span class="cx"> default:
</span><span class="cx"> if (isRootDomNode(node) || node->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 <cdumez@apple.com>
+
+ 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 <mmaxfield@apple.com>
</span><span class="cx">
</span><span class="cx"> [iOS] [SVG -> 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->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&.
</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 && lengthSearched < charsSearchedThreshold;
- n = NodeTraversal::previous(n)) {
</del><ins>+ for (n = NodeTraversal::previous(*element); n && lengthSearched < charsSearchedThreshold; n = NodeTraversal::previous(*n)) {
</ins><span class="cx"> if (is<HTMLFormElement>(*n) || is<HTMLFormControlElement>(*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 <cdumez@apple.com>
+
+ 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 <bdakin@apple.com>
</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->documentElement(); node; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = document->documentElement(); node; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> if (!is<Element>(*node))
</span><span class="cx"> continue;
</span><span class="cx"> if (is<HTMLFormElement>(*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->documentElement(); node; node = NodeTraversal::next(node)) {
</del><ins>+ for (Node* node = document->documentElement(); node; node = NodeTraversal::next(*node)) {
</ins><span class="cx"> if (!is<Element>(*node))
</span><span class="cx"> continue;
</span><span class="cx"> if (is<HTMLInputElement>(*node) || is<HTMLSelectElement>(*node) || is<HTMLTextAreaElement>(*node))
</span></span></pre>
</div>
</div>
</body>
</html>