<!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>[168279] releases/WebKitGTK/webkit-2.4/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/168279">168279</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2014-05-05 04:32:34 -0700 (Mon, 05 May 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/167447">r167447</a> - Tidy up isIsolatedInline() and highestContainingIsolateWithinRoot()
&lt;http://webkit.org/b/131117&gt;

Reviewed by Daniel Bates.

Based on review feedback for <a href="http://trac.webkit.org/projects/webkit/changeset/166650">r166650</a>.

* rendering/InlineIterator.h:
(WebCore::isIsolatedInline):
- Switch argument to a reference since it is never called with a
  nullptr.
(WebCore::highestContainingIsolateWithinRoot):
- Switch first argument to a reference since it's never a
  nullptr.
- Use nullptr for pointer initialization.
- Switch while() loop to for() loop. Pass reference to
  isIsolatedInline().
(WebCore::numberOfIsolateAncestors):
- Switch while() loop to for() loop. Pass reference to
  isIsolatedInline().
* rendering/RenderBlockLineLayout.cpp:
(WebCore::constructBidiRunsForSegment):
- Rename startObj to startObject.
- No longer need to pass the address of startObject here.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit24SourceWebCoreChangeLog">releases/WebKitGTK/webkit-2.4/Source/WebCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit24SourceWebCorerenderingInlineIteratorh">releases/WebKitGTK/webkit-2.4/Source/WebCore/rendering/InlineIterator.h</a></li>
<li><a href="#releasesWebKitGTKwebkit24SourceWebCorerenderingRenderBlockLineLayoutcpp">releases/WebKitGTK/webkit-2.4/Source/WebCore/rendering/RenderBlockLineLayout.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit24SourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.4/Source/WebCore/ChangeLog (168278 => 168279)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.4/Source/WebCore/ChangeLog        2014-05-05 11:23:51 UTC (rev 168278)
+++ releases/WebKitGTK/webkit-2.4/Source/WebCore/ChangeLog        2014-05-05 11:32:34 UTC (rev 168279)
</span><span class="lines">@@ -1,3 +1,30 @@
</span><ins>+2014-04-17  David Kilzer  &lt;ddkilzer@apple.com&gt;
+
+        Tidy up isIsolatedInline() and highestContainingIsolateWithinRoot()
+        &lt;http://webkit.org/b/131117&gt;
+
+        Reviewed by Daniel Bates.
+
+        Based on review feedback for r166650.
+
+        * rendering/InlineIterator.h:
+        (WebCore::isIsolatedInline):
+        - Switch argument to a reference since it is never called with a
+          nullptr.
+        (WebCore::highestContainingIsolateWithinRoot):
+        - Switch first argument to a reference since it's never a
+          nullptr.
+        - Use nullptr for pointer initialization.
+        - Switch while() loop to for() loop. Pass reference to
+          isIsolatedInline().
+        (WebCore::numberOfIsolateAncestors):
+        - Switch while() loop to for() loop. Pass reference to
+          isIsolatedInline().
+        * rendering/RenderBlockLineLayout.cpp:
+        (WebCore::constructBidiRunsForSegment):
+        - Rename startObj to startObject.
+        - No longer need to pass the address of startObject here.
+
</ins><span class="cx"> 2014-04-02  David Kilzer  &lt;ddkilzer@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Use outermost containing isolate when constructing bidi runs
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit24SourceWebCorerenderingInlineIteratorh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.4/Source/WebCore/rendering/InlineIterator.h (168278 => 168279)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.4/Source/WebCore/rendering/InlineIterator.h        2014-05-05 11:23:51 UTC (rev 168278)
+++ releases/WebKitGTK/webkit-2.4/Source/WebCore/rendering/InlineIterator.h        2014-05-05 11:32:34 UTC (rev 168279)
</span><span class="lines">@@ -408,35 +408,28 @@
</span><span class="cx">     m_current.increment(this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline bool isIsolatedInline(RenderObject* object)
</del><ins>+static inline bool isIsolatedInline(RenderObject&amp; object)
</ins><span class="cx"> {
</span><del>-    ASSERT(object);
-    return object-&gt;isRenderInline() &amp;&amp; isIsolated(object-&gt;style().unicodeBidi());
</del><ins>+    return object.isRenderInline() &amp;&amp; isIsolated(object.style().unicodeBidi());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline RenderObject* highestContainingIsolateWithinRoot(RenderObject* object, RenderObject* root)
</del><ins>+static inline RenderObject* highestContainingIsolateWithinRoot(RenderObject&amp; initialObject, RenderObject* root)
</ins><span class="cx"> {
</span><del>-    ASSERT(object);
-    RenderObject* containingIsolateObject = 0;
-    while (object &amp;&amp; object != root) {
-        if (isIsolatedInline(object))
</del><ins>+    RenderObject* containingIsolateObject = nullptr;
+    for (RenderObject* object = &amp;initialObject; object &amp;&amp; object != root; object = object-&gt;parent()) {
+        if (isIsolatedInline(*object))
</ins><span class="cx">             containingIsolateObject = object;
</span><del>-
-        object = object-&gt;parent();
</del><span class="cx">     }
</span><span class="cx">     return containingIsolateObject;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline unsigned numberOfIsolateAncestors(const InlineIterator&amp; iter)
</span><span class="cx"> {
</span><del>-    RenderObject* object = iter.renderer();
-    if (!object)
-        return 0;
</del><span class="cx">     unsigned count = 0;
</span><del>-    while (object &amp;&amp; object != iter.root()) {
-        if (isIsolatedInline(object))
</del><ins>+    typedef RenderObject* RenderObjectPtr;
+    for (RenderObjectPtr object = iter.renderer(), root = iter.root(); object &amp;&amp; object != root; object = object-&gt;parent()) {
+        if (isIsolatedInline(*object))
</ins><span class="cx">             count++;
</span><del>-        object = object-&gt;parent();
</del><span class="cx">     }
</span><span class="cx">     return count;
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit24SourceWebCorerenderingRenderBlockLineLayoutcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.4/Source/WebCore/rendering/RenderBlockLineLayout.cpp (168278 => 168279)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.4/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2014-05-05 11:23:51 UTC (rev 168278)
+++ releases/WebKitGTK/webkit-2.4/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2014-05-05 11:32:34 UTC (rev 168279)
</span><span class="lines">@@ -896,14 +896,14 @@
</span><span class="cx">         BidiRun* isolatedRun = topResolver.isolatedRuns().last();
</span><span class="cx">         topResolver.isolatedRuns().removeLast();
</span><span class="cx"> 
</span><del>-        RenderObject&amp; startObj = isolatedRun-&gt;renderer();
</del><ins>+        RenderObject&amp; startObject = isolatedRun-&gt;renderer();
</ins><span class="cx"> 
</span><span class="cx">         // Only inlines make sense with unicode-bidi: isolate (blocks are already isolated).
</span><span class="cx">         // FIXME: Because enterIsolate is not passed a RenderObject, we have to crawl up the
</span><span class="cx">         // tree to see which parent inline is the isolate. We could change enterIsolate
</span><span class="cx">         // to take a RenderObject and do this logic there, but that would be a layering
</span><span class="cx">         // violation for BidiResolver (which knows nothing about RenderObject).
</span><del>-        RenderInline* isolatedInline = toRenderInline(highestContainingIsolateWithinRoot(&amp;startObj, currentRoot));
</del><ins>+        RenderInline* isolatedInline = toRenderInline(highestContainingIsolateWithinRoot(startObject, currentRoot));
</ins><span class="cx">         ASSERT(isolatedInline);
</span><span class="cx"> 
</span><span class="cx">         InlineBidiResolver isolatedResolver;
</span><span class="lines">@@ -917,12 +917,12 @@
</span><span class="cx">         }
</span><span class="cx">         isolatedResolver.setStatus(BidiStatus(direction, isOverride(unicodeBidi)));
</span><span class="cx"> 
</span><del>-        setUpResolverToResumeInIsolate(isolatedResolver, isolatedInline, &amp;startObj);
</del><ins>+        setUpResolverToResumeInIsolate(isolatedResolver, isolatedInline, &amp;startObject);
</ins><span class="cx"> 
</span><span class="cx">         // The starting position is the beginning of the first run within the isolate that was identified
</span><span class="cx">         // during the earlier call to createBidiRunsForLine. This can be but is not necessarily the
</span><span class="cx">         // first run within the isolate.
</span><del>-        InlineIterator iter = InlineIterator(isolatedInline, &amp;startObj, isolatedRun-&gt;m_start);
</del><ins>+        InlineIterator iter = InlineIterator(isolatedInline, &amp;startObject, isolatedRun-&gt;m_start);
</ins><span class="cx">         isolatedResolver.setPositionIgnoringNestedIsolates(iter);
</span><span class="cx"> 
</span><span class="cx">         // We stop at the next end of line; we may re-enter this isolate in the next call to constructBidiRuns().
</span></span></pre>
</div>
</div>

</body>
</html>