<?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>200654</bug_id>
          
          <creation_ts>2019-08-12 20:05:42 -0700</creation_ts>
          <short_desc>[LFC][TFC] Add rowSpan and colSpan to Box</short_desc>
          <delta_ts>2019-08-13 08:12:01 -0700</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>commit-queue</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>1560666</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-08-12 20:05:42 -0700</bug_when>
    <thetext>they are part of the random DOM things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560667</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-12 20:06:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/54239281&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560694</commentid>
    <comment_count>2</comment_count>
      <attachid>376135</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-08-12 21:08:48 -0700</bug_when>
    <thetext>Created attachment 376135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560775</commentid>
    <comment_count>3</comment_count>
      <attachid>376135</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-08-13 07:33:11 -0700</bug_when>
    <thetext>Comment on attachment 376135
Patch

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

&gt; Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp:193
&gt; +    if (is&lt;RenderTableCell&gt;(renderer)) {
&gt; +        auto&amp; cellElement = downcast&lt;HTMLTableCellElement&gt;(*renderer.element());
&gt; +        auto rowSpan = cellElement.rowSpan();
&gt; +        if (rowSpan &gt; 1)
&gt; +            childLayoutBox-&gt;setRowSpan(rowSpan);
&gt; +
&gt; +        auto columnSpan = cellElement.colSpan();
&gt; +        if (columnSpan &gt; 1)
&gt; +            childLayoutBox-&gt;setColumnSpan(columnSpan);
&gt; +    }

You will probably also need invalidation for dynamic changes. See RenderTableCell::colSpanOrRowSpanChanged and callers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560778</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-08-13 07:53:39 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 376135 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376135&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/layouttree/LayoutTreeBuilder.cpp:193
&gt; &gt; +    if (is&lt;RenderTableCell&gt;(renderer)) {
&gt; &gt; +        auto&amp; cellElement = downcast&lt;HTMLTableCellElement&gt;(*renderer.element());
&gt; &gt; +        auto rowSpan = cellElement.rowSpan();
&gt; &gt; +        if (rowSpan &gt; 1)
&gt; &gt; +            childLayoutBox-&gt;setRowSpan(rowSpan);
&gt; &gt; +
&gt; &gt; +        auto columnSpan = cellElement.colSpan();
&gt; &gt; +        if (columnSpan &gt; 1)
&gt; &gt; +            childLayoutBox-&gt;setColumnSpan(columnSpan);
&gt; &gt; +    }
&gt; 
&gt; You will probably also need invalidation for dynamic changes. See
&gt; RenderTableCell::colSpanOrRowSpanChanged and callers.
Absolutely. At this point LFC does not deal with incremental changes. Each layout frame starts from scratch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560780</commentid>
    <comment_count>5</comment_count>
      <attachid>376135</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-13 08:11:59 -0700</bug_when>
    <thetext>Comment on attachment 376135
Patch

Clearing flags on attachment: 376135

Committed r248594: &lt;https://trac.webkit.org/changeset/248594&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560781</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-13 08:12:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376135</attachid>
            <date>2019-08-12 21:08:48 -0700</date>
            <delta_ts>2019-08-13 08:11:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200654-20190812210837.patch</filename>
            <type>text/plain</type>
            <size>4431</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGM3MjEzNDJmNDY1NWQ2
YTEzM2ZkYWUxYjExMTBhOGQyZmNlZGJhZS4uMzE5MzA1OTMzMjkwOTE5MTRkNzQ2ZmRhYTZkNjQ4
YmMxYzY0ZTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA4LTEyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bVEZDXSBBZGQgcm93
U3BhbiBhbmQgY29sU3BhbiB0byBCb3gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDY1NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQyMzkyODE+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgY29sU3Bh
biBhbmQgcm93U3BhbiBhcmUgbm90IHBhcnQgb2YgdGhlIFJlbmRlclN0eWxlLiBXZSBldmVudHVh
bGx5IG5lZWQgdG8gZmluZCBhIG1vcmUgYXBwcm9wcmlhdGUgcGxhY2UgZm9yIHRoZSAicmFuZG9t
IERPTSB0aGluZ3MiLgorCisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpzZXRSb3dTcGFuKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Qm94OjpzZXRDb2x1bW5TcGFuKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Qm94Ojpyb3dTcGFuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Qm94Ojpjb2x1bW5TcGFuIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRCb3guaDoKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRC
b3gpOgorCiAyMDE5LTA4LTEwICBUaGliYXVsdCBTYXVuaWVyICA8dHNhdW5pZXJAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1N0cmVhbWVyXVtXZWJSVENdIFJlbW92ZSB1bnVzZWQgR3N0QWRhcHRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKaW5k
ZXggZWRmMmQ0YjI3NjYyMmM4OTVkMTc3OTcxNGNmN2NmMjA4YWNkOWM0Mi4uODA4NGUyYmI2OWU4
YzkyYWFhOWI3YmU2ZDhhMTRiNzc5NTI5MTIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCkBAIC00MDgsNiArNDA4LDMwIEBAIFJlcGxhY2Vk
KiBCb3g6OnJlcGxhY2VkKCkKICAgICByZXR1cm4gcmFyZURhdGEoKS5yZXBsYWNlZC5nZXQoKTsK
IH0KIAordm9pZCBCb3g6OnNldFJvd1NwYW4odW5zaWduZWQgcm93U3BhbikKK3sKKyAgICBlbnN1
cmVSYXJlRGF0YSgpLnJvd1NwYW4gPSByb3dTcGFuOworfQorCit2b2lkIEJveDo6c2V0Q29sdW1u
U3Bhbih1bnNpZ25lZCBjb2x1bW5TcGFuKQoreworICAgIGVuc3VyZVJhcmVEYXRhKCkuY29sdW1u
U3BhbiA9IGNvbHVtblNwYW47Cit9CisKK3Vuc2lnbmVkIEJveDo6cm93U3BhbigpIGNvbnN0Cit7
CisgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4g
cmFyZURhdGEoKS5yb3dTcGFuOworfQorCit1bnNpZ25lZCBCb3g6OmNvbHVtblNwYW4oKSBjb25z
dAoreworICAgIGlmICghaGFzUmFyZURhdGEoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0
dXJuIHJhcmVEYXRhKCkuY29sdW1uU3BhbjsKK30KKwogQm94OjpSYXJlRGF0YU1hcCYgQm94Ojpy
YXJlRGF0YU1hcCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJhcmVEYXRhTWFwPiBt
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCmluZGV4
IDMwYzQ0MWQ5MjBiYTE2M2Q3NWExYzMyOWIyYTExMzllOTQ4ZmU3NzUuLjc2YzY5MjUyMmFiODMz
MGIyMmIwN2U5N2UyNWQwNzgyMDMyOWZlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC0xNDYsNiArMTQ2LDEyIEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1RleHRDb250ZW50KCkgY29uc3Q7CiAgICAgU3RyaW5nIHRleHRDb250ZW50KCkgY29u
c3Q7CiAKKyAgICAvLyBGSVhNRTogRmluZCBhIGJldHRlciBwbGFjZSBmb3IgcmFuZG9tIERPTSB0
aGluZ3MuCisgICAgdm9pZCBzZXRSb3dTcGFuKHVuc2lnbmVkKTsKKyAgICB2b2lkIHNldENvbHVt
blNwYW4odW5zaWduZWQpOworICAgIHVuc2lnbmVkIHJvd1NwYW4oKSBjb25zdDsKKyAgICB1bnNp
Z25lZCBjb2x1bW5TcGFuKCkgY29uc3Q7CisKICAgICB2b2lkIHNldFBhcmVudChDb250YWluZXIm
IHBhcmVudCkgeyBtX3BhcmVudCA9ICZwYXJlbnQ7IH0KICAgICB2b2lkIHNldE5leHRTaWJsaW5n
KEJveCYgbmV4dFNpYmxpbmcpIHsgbV9uZXh0U2libGluZyA9ICZuZXh0U2libGluZzsgfQogICAg
IHZvaWQgc2V0UHJldmlvdXNTaWJsaW5nKEJveCYgcHJldmlvdXNTaWJsaW5nKSB7IG1fcHJldmlv
dXNTaWJsaW5nID0gJnByZXZpb3VzU2libGluZzsgfQpAQCAtMTYzLDYgKzE2OSw4IEBAIHByaXZh
dGU6CiAKICAgICAgICAgU3RyaW5nIHRleHRDb250ZW50OwogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVwbGFjZWQ+IHJlcGxhY2VkOworICAgICAgICB1bnNpZ25lZCByb3dTcGFuIHsgMSB9Owor
ICAgICAgICB1bnNpZ25lZCBjb2x1bW5TcGFuIHsgMSB9OwogICAgIH07CiAKICAgICBib29sIGhh
c1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmlu
ZGV4IDVmZWVjZWU3MmYwOGM0ODUwODhlZTQ4NTE5NDVjNjY0MGNmZTU3ZDMuLjAwMjdkZDBiZWUx
NTJmODQyMGMyZDRkZTUwODg4NTU2YjgxYWNmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJEaXNwbGF5UnVuLmgi
CisjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRD
aGlsZEl0ZXJhdG9yLmgiCkBAIC00Niw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUu
aCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2FwdGlv
bi5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTE3OCw2ICsxODAsMTgg
QEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChjb25z
dCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICBpZiAoaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcikpIHsK
KyAgICAgICAgYXV0byYgY2VsbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MVGFibGVDZWxsRWxlbWVu
dD4oKnJlbmRlcmVyLmVsZW1lbnQoKSk7CisgICAgICAgIGF1dG8gcm93U3BhbiA9IGNlbGxFbGVt
ZW50LnJvd1NwYW4oKTsKKyAgICAgICAgaWYgKHJvd1NwYW4gPiAxKQorICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3gtPnNldFJvd1NwYW4ocm93U3Bhbik7CisKKyAgICAgICAgYXV0byBjb2x1bW5T
cGFuID0gY2VsbEVsZW1lbnQuY29sU3BhbigpOworICAgICAgICBpZiAoY29sdW1uU3BhbiA+IDEp
CisgICAgICAgICAgICBjaGlsZExheW91dEJveC0+c2V0Q29sdW1uU3Bhbihjb2x1bW5TcGFuKTsK
KyAgICB9CisKICAgICByZXR1cm4gY2hpbGRMYXlvdXRCb3g7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>