<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>205362</bug_id>
          
          <creation_ts>2019-12-17 16:04:23 -0800</creation_ts>
          <short_desc>[LFC][IFC] Add lastInlineItemWithContent to LineBreaker::Content::isAtSoftWrapOpportunity</short_desc>
          <delta_ts>2019-12-18 07:34:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1599603</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-12-17 16:04:23 -0800</bug_when>
    <thetext>This is in preparation for LineBreaker::Content::isAtSoftWrapOpportunity being able to return a previous run index as soft wrap opportunity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599604</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-17 16:04:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/58025349&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599605</commentid>
    <comment_count>2</comment_count>
      <attachid>385927</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-12-17 16:07:09 -0800</bug_when>
    <thetext>Created attachment 385927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599781</commentid>
    <comment_count>3</comment_count>
      <attachid>385927</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-18 06:58:53 -0800</bug_when>
    <thetext>Comment on attachment 385927
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=385927&amp;action=review

&gt; Source/WebCore/layout/inlineformatting/InlineLineBreaker.cpp:299
&gt; +        for (auto i = priorContent.size(); i--;) {
&gt; +            auto&amp; previousInlineItem = runs[i].inlineItem;

This could uses range for and WTF::makeReversedRange

&gt; Source/WebCore/layout/inlineformatting/InlineLineBreaker.cpp:304
&gt; +            ASSERT_NOT_REACHED();

I still prefer for loops looping over the main body.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599782</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-12-18 06:59:47 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 385927 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385927&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/inlineformatting/InlineLineBreaker.cpp:299
&gt; &gt; +        for (auto i = priorContent.size(); i--;) {
&gt; &gt; +            auto&amp; previousInlineItem = runs[i].inlineItem;
&gt; 
&gt; This could uses range for and WTF::makeReversedRange
&gt; 
&gt; &gt; Source/WebCore/layout/inlineformatting/InlineLineBreaker.cpp:304
&gt; &gt; +            ASSERT_NOT_REACHED();
&gt; 
&gt; I still prefer for loops looping over the main body.
oops, my bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599791</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-12-18 07:34:53 -0800</bug_when>
    <thetext>Committed r253681: &lt;https://trac.webkit.org/changeset/253681&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385927</attachid>
            <date>2019-12-17 16:07:09 -0800</date>
            <delta_ts>2019-12-18 06:58:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205362-20191217160709.patch</filename>
            <type>text/plain</type>
            <size>5257</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc1MTBjNDU0NjUwOGM3
YWMzODExNWVlYzEwMWZlMDAxOWJiNmM4ZC4uMGM3MGMyMTQyNzFkZmUzMjNmNjQ2N2RkYjRjZjlm
YWFhN2IwMDVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEyLTE3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBBZGQgbGFz
dElubGluZUl0ZW1XaXRoQ29udGVudCB0byBMaW5lQnJlYWtlcjo6Q29udGVudDo6aXNBdFNvZnRX
cmFwT3Bwb3J0dW5pdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNTM2MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgwMjUzNDk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVw
YXJhdGlvbiBmb3IgYmVpbmcgYWJsZSB0byByZXR1cm4gYSBwcmV2aW91cyBydW4gaW5kZXggYXMg
dGhlIHNvZnQgd3JhcHBpbmcgb3Bwb3J0dW5pdHkuCisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OmVuZHNXaXRoU29mdFdyYXBPcHBvcnR1bml0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVCcmVha2VyOjpDb250ZW50Ojppc0F0U29mdFdyYXBPcHBvcnR1bml0eSk6CisKIDIw
MTktMTItMTcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgbWFjQ2F0YWx5c3Q6IEN1cnNvciBzaG91bGQgdXBkYXRlIG9uIG1vdXNlIG1vdmVtZW50IGFu
ZCBzdHlsZSBjaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcAppbmRleCA2YjljMWE1ZjQ2NWIw
Yzc2ODY0ZTc2MzBjYWU2YWFkMjQ1MTkwYjhjLi5iMjBlMWIzYzE4NGEzMDc3NjE5YWNlMjZkMTE2
ZDE5ZTQ0NjA3ZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3BwCkBAIC0yNjEsNiArMjYxLDkg
QEAgc3RhdGljIGJvb2wgZW5kc1dpdGhTb2Z0V3JhcE9wcG9ydHVuaXR5KGNvbnN0IElubGluZVRl
eHRJdGVtJiBwcmV2aW91c1RleHRJdGVtLAogICAgIC8vIHRoZXkgYXJlIHNwbGl0IGF0IGEgc29m
dCBicmVha2luZyBvcHBvcnR1bml0eS4gU2VlIElubGluZVRleHRJdGVtOjptb3ZlVG9OZXh0QnJl
YWthYmxlUG9zaXRpb24uCiAgICAgaWYgKCZwcmV2aW91c1RleHRJdGVtLmxheW91dEJveCgpID09
ICZuZXh0SW5saW5lVGV4dEl0ZW0ubGF5b3V0Qm94KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIC8vIFdlIGFyZSBhdCB0aGUgcG9zaXRpb24gYWZ0ZXIgYSB3aGl0ZXNwYWNlLgorICAgIGlm
IChwcmV2aW91c1RleHRJdGVtLmlzV2hpdGVzcGFjZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAvLyBOb3cgd2UgbmVlZCB0byBjb2xsZWN0IGF0IGxlYXN0IDMgYWRqYWNlbnQgY2hhcmFj
dGVycyB0byBiZSBhYmxlIHRvIG1ha2UgYSBkZXNjaXNpb24gd2hldGhlciB0aGUgcHJldmlvdXMg
dGV4dCBpdGVtIGVuZHMgd2l0aCBicmVha2luZyBvcHBvcnR1bml0eS4KICAgICAvLyBbZXgtXVth
bXBsZV0gPC0gc2Vjb25kIHRvIGxhc3RbeF0gbGFzdFstXSBjdXJyZW50W2FdCiAgICAgLy8gV2Ug
bmVlZCBhdCBsZWFzdCAxIGNoYXJhY3RlciBpbiB0aGUgY3VycmVudCBpbmxpbmUgdGV4dCBpdGVt
IGFuZCAyIG1vcmUgZnJvbSBwcmV2aW91cyBpbmxpbmUgaXRlbXMuCkBAIC0yODksNiArMjkyLDIw
IEBAIGJvb2wgTGluZUJyZWFrZXI6OkNvbnRlbnQ6OmlzQXRTb2Z0V3JhcE9wcG9ydHVuaXR5KGNv
bnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sCiAgICAgICAgIC8vIENhbid0IGRlY2lkZSBpdCB5
ZXQuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisKKyAgICBhdXRvIGxhc3RJbmxpbmVJ
dGVtV2l0aENvbnRlbnQgPSBbJl0gKCkgLT4gY29uc3QgSW5saW5lSXRlbSogeworICAgICAgICBh
dXRvJiBydW5zID0gcHJpb3JDb250ZW50LnJ1bnMoKTsKKyAgICAgICAgZm9yIChhdXRvIGkgPSBw
cmlvckNvbnRlbnQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBhdXRvJiBwcmV2aW91c0lu
bGluZUl0ZW0gPSBydW5zW2ldLmlubGluZUl0ZW07CisgICAgICAgICAgICBpZiAocHJldmlvdXNJ
bmxpbmVJdGVtLmlzQ29udGFpbmVyU3RhcnQoKSB8fCBwcmV2aW91c0lubGluZUl0ZW0uaXNDb250
YWluZXJFbmQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChw
cmV2aW91c0lubGluZUl0ZW0uaXNUZXh0KCkgfHwgcHJldmlvdXNJbmxpbmVJdGVtLmlzQm94KCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuICZwcmV2aW91c0lubGluZUl0ZW07CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9OworCiAgICAgYXV0byogbGFzdFVuY29taXR0ZWRDb250ZW50ID0gJnByaW9yQ29u
dGVudC5ydW5zKCkubGFzdCgpLmlubGluZUl0ZW07CiAgICAgaWYgKGlubGluZUl0ZW0uaXNUZXh0
KCkpIHsKICAgICAgICAgaWYgKGlubGluZUl0ZW0uc3R5bGUoKS5saW5lQnJlYWsoKSA9PSBMaW5l
QnJlYWs6OkFueXdoZXJlKSB7CkBAIC0zMTUsMzEgKzMzMiwxNyBAQCBib29sIExpbmVCcmVha2Vy
OjpDb250ZW50Ojppc0F0U29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLAogICAgICAgICAgICAgLy8gZS5nLgogICAgICAgICAgICAgLy8gW3RleHRdW2NvbnRh
aW5lciBlbmRdW3RleHRdICh0ZXh0PC9zcGFuPnRleHQpIDogdGhlcmUncyBubyBzb2Z0IHdyYXAg
b3Bwb3J0dW5pdHkgaGVyZS4KICAgICAgICAgICAgIC8vIFtpbmxpbmUgYm94XVtjb250YWluZXIg
ZW5kXVt0ZXh0XSAoPGltZz48L3NwYW4+dGV4dCkgOiBhZnRlciBbY29udGFpbmVyIGVuZF0gcG9z
aXRpb24gaXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCi0gICAgICAgICAgICBhdXRvJiBydW5z
ID0gcHJpb3JDb250ZW50LnJ1bnMoKTsKLSAgICAgICAgICAgIGF1dG8gZGlkRmluZENvbnRlbnQg
PSBmYWxzZTsKLSAgICAgICAgICAgIGZvciAoYXV0byBpID0gcHJpb3JDb250ZW50LnNpemUoKTsg
aS0tOykgewotICAgICAgICAgICAgICAgIGF1dG8mIHByZXZpb3VzSW5saW5lSXRlbSA9IHJ1bnNb
aV0uaW5saW5lSXRlbTsKLSAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNJbmxpbmVJdGVtLmlz
Q29udGFpbmVyU3RhcnQoKSB8fCBwcmV2aW91c0lubGluZUl0ZW0uaXNDb250YWluZXJFbmQoKSkK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKHByZXZp
b3VzSW5saW5lSXRlbS5pc1RleHQoKSB8fCBwcmV2aW91c0lubGluZUl0ZW0uaXNCb3goKSkgewot
ICAgICAgICAgICAgICAgICAgICBsYXN0VW5jb21pdHRlZENvbnRlbnQgPSAmcHJldmlvdXNJbmxp
bmVJdGVtOwotICAgICAgICAgICAgICAgICAgICBkaWRGaW5kQ29udGVudCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIERp
ZCBub3QgZmluZCBhbnkgY29udGVudCBhdCBhbGwgKGUuZy4gW2NvbnRhaW5lciBzdGFydF1bY29u
dGFpbmVyIGVuZF1bdGV4dF0gKDxzcGFuPjwvc3Bhbj50ZXh0KSkuCi0gICAgICAgICAgICBpZiAo
IWRpZEZpbmRDb250ZW50KQorICAgICAgICAgICAgbGFzdFVuY29taXR0ZWRDb250ZW50ID0gbGFz
dElubGluZUl0ZW1XaXRoQ29udGVudCgpOworICAgICAgICAgICAgaWYgKCFsYXN0VW5jb21pdHRl
ZENvbnRlbnQpIHsKKyAgICAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgYW55IGNvbnRlbnQg
YXQgYWxsIChlLmcuIFtjb250YWluZXIgc3RhcnRdW2NvbnRhaW5lciBlbmRdW3RleHRdICg8c3Bh
bj48L3NwYW4+dGV4dCkpLgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAobGFzdFVuY29taXR0ZWRDb250ZW50LT5pc1Rl
eHQoKSkgewogICAgICAgICAgICAgLy8gW3RleHRdW3RleHRdIDogaXMgYSBjb250aW51b3VzIGNv
bnRlbnQuCiAgICAgICAgICAgICAvLyBbdGV4dC1dW3RleHRdIDogYWZ0ZXIgW2h5cGhlbl0gcG9z
aXRpb24gaXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCiAgICAgICAgICAgICAvLyBbIF1bdGV4
dF0gOiBhZnRlciBbd2hpdGVzcGFjZV0gcG9zaXRpb24gaXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5p
dHkuCi0gICAgICAgICAgICBhdXRvJiBsYXN0SW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxp
bmVUZXh0SXRlbT4oKmxhc3RVbmNvbWl0dGVkQ29udGVudCk7Ci0gICAgICAgICAgICBpZiAobGFz
dElubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgcmV0dXJuIGVuZHNXaXRoU29mdFdyYXBPcHBvcnR1bml0eShsYXN0
SW5saW5lVGV4dEl0ZW0sIGRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKSk7Cisg
ICAgICAgICAgICByZXR1cm4gZW5kc1dpdGhTb2Z0V3JhcE9wcG9ydHVuaXR5KGRvd25jYXN0PElu
bGluZVRleHRJdGVtPigqbGFzdFVuY29taXR0ZWRDb250ZW50KSwgZG93bmNhc3Q8SW5saW5lVGV4
dEl0ZW0+KGlubGluZUl0ZW0pKTsKICAgICAgICAgfQogICAgICAgICBpZiAobGFzdFVuY29taXR0
ZWRDb250ZW50LT5pc0JveCgpKSB7CiAgICAgICAgICAgICAvLyBbaW5saW5lIGJveF1bdGV4dF0g
KDxpbWc+dGV4dCkgOiBhZnRlciBbaW5saW5lIGJveF0gcG9zaXRpb24gaXMgYSBzb2Z0IHdyYXAg
b3Bwb3J0dW5pdHkuCg==
</data>
<flag name="review"
          id="401728"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>