Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add width and height presentational hints for table-related elements #33405

Merged
merged 1 commit into from
Sep 12, 2024

Conversation

Loirooriol
Copy link
Contributor

@Loirooriol Loirooriol commented Sep 11, 2024

We were only parsing the width attribute as a presentation hint for <table>, <td> and <th>. This patch also handles <colgroup> and <col>.

Also, we weren't parsing height at all, now we do it for <table>, <td>, <th>, <tr>, <tbody>, <thead> and <tfoot>.

One test is now crashing, but this was an existing issue: #33423


  • ./mach build -d does not report any errors
  • ./mach test-tidy does not report any errors
  • There are tests for these changes

@Loirooriol Loirooriol added A-layout/table A-layout/2020 https://github.com/servo/servo/wiki/Layout-2020 T-linux-wpt-2020 Do a try run of the WPT labels Sep 11, 2024
@github-actions github-actions bot removed the T-linux-wpt-2020 Do a try run of the WPT label Sep 11, 2024
Copy link

🔨 Triggering try run (#10815737864) for Linux WPT

@Loirooriol
Copy link
Contributor Author

Loirooriol commented Sep 11, 2024

We may need to handle zero especially in some cases:

The table element's height attribute maps to the dimension property 'height' on the table element.

The table element's width attribute maps to the dimension property (ignoring zero) 'width' on the table element.

The col element's width attribute maps to the dimension property 'width' on the col element.

The thead, tbody, and tfoot elements' height attribute maps to the dimension property 'height' on the element.

The tr element's height attribute maps to the dimension property 'height' on the tr element.

The td and th elements' height attributes map to the dimension property (ignoring zero) 'height' on the element.

The td and th elements' width attributes map to the dimension property (ignoring zero) 'width' on the element.

Edit: addressed in #33425

Copy link

Test results for linux-wpt-layout-2020 from try job (#10815737864):

Flaky unexpected result (27)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-uniform-packing-restrictions.html (#28103)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-with-non-reserved-words.html (#16216)
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/out-of-bounds-uniform-array-access.html (#26225)
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected PASS] /css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html (#32849)
  • CRASH [expected FAIL] /css/css-masking/clip-path/clip-path-scaled-video.html
  • OK /css/css-values/cap-invalidation.html (#32757)
    • FAIL [expected PASS] subtest: CSS Values and Units Test: cap invalidation

      uncaught exception: Error: assert_not_equals: expect the capital height of Ahem and sans-serif to be different got disallowed value 371.3333333333333
      

  • FAIL [expected PASS] /css/css-values/vh_not_refreshing_on_chrome.html (#23385, #15570)
  • OK /css/cssom-view/MediaQueryList-addListener-handleEvent.html (#24571)
    • FAIL [expected PASS] subtest: looks up handleEvent method on every event dispatch

      assert_equals: expected 1 but got 0
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html (#29048)
    • PASS [expected FAIL] subtest: Navigating to a different document with link click
  • OK /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html (#28066)
    • FAIL [expected PASS] subtest: 0041 set in href="" targeting a frame and clicked

      assert_equals: expected "A" but got ""
      

    • FAIL [expected PASS] subtest: 0080 00FF set in href="" targeting a frame and clicked

      assert_equals: expected "�ÿ" but got ""
      

    • FAIL [expected PASS] subtest: 0080 00FF 0100 set in href="" targeting a frame and clicked

      assert_equals: expected "�ÿĀ" but got ""
      

    • FAIL [expected PASS] subtest: D83D DE0D set in href="" targeting a frame and clicked

      assert_equals: expected "😍" but got ""
      

    • FAIL [expected PASS] subtest: DE0D 0041 set in href="" targeting a frame and clicked

      assert_equals: expected "\ufffdA" but got ""
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • FAIL [expected PASS] subtest: Cross-origin navigation started from unload handler must be ignored

      promise_test: Unhandled rejection with value: object "SecurityError: The operation is insecure."
      

  • OK /html/browsers/history/the-history-interface/traverse_the_history_4.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted

      assert_array_equals: Pages opened during history navigation expected property 1 to be 5 but got 3 (expected array [6, 5] got [6, 3])
      

  • OK /html/browsers/windows/embedded-opener-remove-frame.html (#23867)
    • PASS [expected FAIL] subtest: opener of discarded auxiliary browsing context
  • OK /html/interaction/focus/the-autofocus-attribute/document-with-fragment-valid.html (#28259)
    • PASS [expected FAIL] subtest: Autofocus elements in top-level browsing context's documents with URL fragments should be skipped.
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html (#24066)
    • FAIL [expected NOTRUN] subtest: Check that popups from a sandboxed iframe do not escape the sandbox

      assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
      

  • TIMEOUT [expected OK] /html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html (#29724)
    • TIMEOUT [expected PASS] subtest: reparent-form-during-planned-navigation-task

      Test timed out
      

  • OK /html/semantics/forms/historical.html (#28568)
    • PASS [expected FAIL] subtest: &lt;input name=isindex&gt; should not be supported
  • CRASH [expected OK] /html/semantics/forms/the-fieldset-element/disabled-003.html (#31730)
  • OK /html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html (#23205)
    • PASS [expected FAIL] subtest: Check that rel=noopener with target=_self does a normal load
  • OK /html/syntax/parsing/DOMContentLoaded-defer.html (#21550)
    • PASS [expected FAIL] subtest: The end: DOMContentLoaded and defer scripts
  • OK /html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html (#26243)
    • FAIL [expected PASS] subtest: document.write in an imported module

      assert_true: onload must be called expected true got false
      

  • OK /quirks/table-cell-width-calculation.html
    • FAIL [expected PASS] subtest: The table cell width calculation quirk, non-auto width on cell

      assert_equals: img 1 offsetLeft, almost standards mode expected 2 but got 1
      

  • OK /resize-observer/change-layout-in-error.html (#32629)
    • PASS [expected FAIL] subtest: Changing layout in window error handler should not result in lifecyle loop when resize observer loop limit is reached.
  • TIMEOUT /resize-observer/eventloop.html
    • FAIL [expected PASS] subtest: test0: multiple notifications inside same event loop

      assert_equals: new loop expected 1 but got 0
      

  • TIMEOUT /resource-timing/test_resource_timing.https.html (#25216)
    • PASS [expected FAIL] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img)
  • TIMEOUT [expected OK] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.html (#29053)
    • TIMEOUT [expected PASS] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe

      Test timed out
      

Stable unexpected results that are known to be intermittent (15)
  • FAIL [expected PASS] /_mozilla/css/iframe/hide_and_show.html (#15265)
  • OK /css/cssom-view/MediaQueryList-addListener-removeListener.html (#24569)
    • PASS [expected FAIL] subtest: listeners are called correct number of times
    • FAIL [expected PASS] subtest: listeners are called in order they were added

      assert_array_equals: lengths differ, expected array ["1st", "2nd"] length 2, got [] length 0
      

    • FAIL [expected PASS] subtest: removing listener from one MQL doesn't remove it from all MQLs

      assert_equals: expected 1 but got 0
      

  • OK /css/cssom-view/MediaQueryList-extends-EventTarget-interop.html (#25285)
    • FAIL [expected PASS] subtest: listener added with addListener and addEventListener is called once

      assert_equals: triggerMQLEvent expected 1 but got 0
      

    • PASS [expected FAIL] subtest: capturing event listener fires before non-capturing listener at target
  • OK /css/cssom-view/MediaQueryListEvent.html (#25275)
    • PASS [expected FAIL] subtest: argument of addListener
  • TIMEOUT /fetch/metadata/generated/css-images.sub.tentative.html (#29047)
    • TIMEOUT [expected PASS] subtest: background-image sec-fetch-site - HTTPS downgrade (header not sent)

      Test timed out
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • PASS [expected FAIL] subtest: Same-origin navigation started from unload handler must be ignored
  • TIMEOUT [expected ERROR] /html/canvas/element/manual/imagebitmap/createImageBitmap-invalid-args.html (#32745)
    • TIMEOUT [expected FAIL] subtest: createImageBitmap with an HTMLVideoElement from a data URL source and sw set to 0

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: createImageBitmap with an HTMLVideoElement from a data URL source and sh set to 0
    • NOTRUN [expected FAIL] subtest: createImageBitmap with an HTMLVideoElement from a data URL source and oversized (unallocatable) crop region
    • NOTRUN [expected FAIL] subtest: createImageBitmap with an HTMLVideoElement from a data URL source and a value of 0 int resizeWidth
    • NOTRUN [expected FAIL] subtest: createImageBitmap with an HTMLVideoElement from a data URL source and a value of 0 in resizeHeight
    • NOTRUN [expected FAIL] subtest: createImageBitmap with an HTMLVideoElement from a data URL source and a value between 0 and 1 in resizeWidth
    • NOTRUN [expected FAIL] subtest: createImageBitmap with an HTMLVideoElement from a data URL source and a value between 0 and 1 in resizeHeight
    • NOTRUN [expected FAIL] subtest: createImageBitmap with a bitmap HTMLImageElement source and sw set to 0
    • NOTRUN [expected FAIL] subtest: createImageBitmap with a bitmap HTMLImageElement source and sh set to 0
    • NOTRUN [expected FAIL] subtest: createImageBitmap with a bitmap HTMLImageElement source and oversized (unallocatable) crop region
    • And 12 more unexpected results...
  • CRASH [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html (#22667)
  • CRASH [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
  • TIMEOUT /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • TIMEOUT [expected PASS] /html/semantics/embedded-content/the-img-element/image-loading-lazy-subframe-detached-crash.html (#31572)
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • PASS [expected FAIL] subtest: text/plain: non-ASCII in filename (formdata event)
  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • FAIL [expected PASS] subtest: Reload domContentLoadedEventStart &gt; Original domContentLoadedEventStart

      assert_true: Reload domContentLoadedEventStart &gt; Original domContentLoadedEventStart expected true got false
      

    • FAIL [expected PASS] subtest: Reload fetchStart &gt; Original fetchStart

      assert_true: Reload fetchStart &gt; Original fetchStart expected true got false
      

  • OK [expected TIMEOUT] /resource-timing/nested-context-navigations-iframe.html (#24311)
    • PASS [expected NOTRUN] subtest: Test that iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that crossorigin iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that cross-site iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that iframe refreshes are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that crossorigin iframe refreshes are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that cross-site iframe refreshes are not observable by the parent
  • ERROR [expected OK] /webxr/render_state_update.https.html (#27535)
Stable unexpected results (10)
  • PASS [expected FAIL] /css/CSS2/floats/floats-wrap-bfc-005.xht
  • PASS [expected FAIL] /css/CSS2/normal-flow/inline-block-valign-001.xht
  • PASS [expected FAIL] /css/css-backgrounds/border-image-repeat-002.htm
  • PASS [expected FAIL] /css/css-backgrounds/border-image-repeat-004.htm
  • PASS [expected FAIL] /css/css-backgrounds/css3-border-image-repeat-repeat.html
  • CRASH [expected PASS] /css/css-tables/crashtests/large-col-widths.html
  • OK /css/css-tables/tentative/colgroup-col.html
    • PASS [expected FAIL] subtest: table 1
    • PASS [expected FAIL] subtest: table 2
  • OK /html/rendering/dimension-attributes.html
    • PASS [expected FAIL] subtest: &lt;td height="200"&gt; mapping to &lt;td&gt; height property
    • PASS [expected FAIL] subtest: &lt;td height="1007"&gt; mapping to &lt;td&gt; height property
    • PASS [expected FAIL] subtest: &lt;td height=" 00523 "&gt; mapping to &lt;td&gt; height property
    • PASS [expected FAIL] subtest: &lt;td height="200.25"&gt; mapping to &lt;td&gt; height property
    • PASS [expected FAIL] subtest: &lt;td height="200.7"&gt; mapping to &lt;td&gt; height property
    • PASS [expected FAIL] subtest: &lt;td height="200."&gt; mapping to &lt;td&gt; height property
    • PASS [expected FAIL] subtest: &lt;td height="200in"&gt; mapping to &lt;td&gt; height property
    • PASS [expected FAIL] subtest: &lt;td height="200.25in"&gt; mapping to &lt;td&gt; height property
    • PASS [expected FAIL] subtest: &lt;td height="200 %"&gt; mapping to &lt;td&gt; height property
    • PASS [expected FAIL] subtest: &lt;td height="200 abc"&gt; mapping to &lt;td&gt; height property
    • And 54 more unexpected results...
  • OK /html/rendering/non-replaced-elements/tables/table-attribute.html
    • PASS [expected FAIL] subtest: tr height attribute pixel is correct
    • PASS [expected FAIL] subtest: table_tr height attribute percentage is correct
    • PASS [expected FAIL] subtest: table height attribute pixel is correct
    • PASS [expected FAIL] subtest: table height attribute 90% is correct
    • PASS [expected FAIL] subtest: table col width attribute is correct
  • PASS [expected FAIL] /html/rendering/non-replaced-elements/tables/table-row-group-height.html

Copy link

⚠️ Try run (#10815737864) failed.

@Loirooriol
Copy link
Contributor Author

Oh, we are crashing the assert from #33098

A deviation of more than one Au per column is unlikely to be caused by float imprecision

@Loirooriol Loirooriol added the T-linux-wpt-2020 Do a try run of the WPT label Sep 12, 2024
@github-actions github-actions bot removed the T-linux-wpt-2020 Do a try run of the WPT label Sep 12, 2024
Copy link

🔨 Triggering try run (#10831392427) for Linux WPT

Copy link

Test results for linux-wpt-layout-2020 from try job (#10831392427):

Flaky unexpected result (17)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-uniform-packing-restrictions.html (#28103)
  • TIMEOUT [expected PASS] /css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html (#32849)
  • TIMEOUT [expected PASS] /css/compositing/mix-blend-mode/mix-blend-mode-video.html (#32763)
  • OK /css/css-fonts/variations/at-font-face-font-matching.html (#20684)
    • FAIL [expected PASS] subtest: Matching font-weight: '500' should prefer '500' over '450 460'

      assert_equals: Unexpected font on test element expected 487 but got 532
      

    • FAIL [expected PASS] subtest: Matching font-style: 'oblique 20deg' should prefer 'oblique 40deg 50deg' over 'oblique 10deg'

      assert_equals: Unexpected font on test element expected 487 but got 532
      

    • FAIL [expected PASS] subtest: Matching font-style: 'oblique -10deg' should prefer 'italic' over 'oblique 0deg 10deg'

      assert_equals: Unexpected font on test element expected 487 but got 532
      

  • OK /css/css-values/calc-in-media-queries-with-mixed-units.html (#31731)
    • FAIL [expected PASS] subtest: box should be orange if the calc between px-em in @media was correct

      assert_equals: expected "rgb(255, 165, 0)" but got "rgb(0, 0, 255)"
      

    • FAIL [expected PASS] subtest: box should be orange if the calc between vw+px in @media was correct

      assert_equals: expected "rgb(255, 165, 0)" but got "rgb(0, 0, 255)"
      

  • FAIL [expected PASS] /css/css-values/vh_not_refreshing_on_chrome.html (#23385, #15570)
  • OK /css/cssom-view/MediaQueryList-change-event-matches-value.html (#27973)
    • FAIL [expected PASS] subtest: MediaQueryList.changed is correct for all lists in the document even during a change event handler

      assert_equals: Should've fired the change event in both MediaQueryLists expected 2 but got 0
      

  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Null value should submit nothing
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html (#28691)
    • PASS [expected FAIL] subtest: load event does not fire on window.open('about:blank')
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • FAIL [expected PASS] subtest: Cross-origin navigation started from unload handler must be ignored

      promise_test: Unhandled rejection with value: object "SecurityError: The operation is insecure."
      

  • OK /html/browsers/history/the-history-interface/traverse_the_history_3.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • ERROR [expected TIMEOUT] /html/canvas/element/manual/imagebitmap/createImageBitmap-flipY.html (#32745)
  • OK /html/semantics/embedded-content/the-img-element/non-active-document.html (#21544)
    • FAIL [expected PASS] subtest: DOMParser

      assert_unreached: got unexpected load event Reached unreachable code
      

    • FAIL [expected PASS] subtest: createHTMLDocument

      assert_unreached: got unexpected error event Reached unreachable code
      

    • FAIL [expected PASS] subtest: &lt;template&gt;

      assert_unreached: got unexpected error event Reached unreachable code
      

  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: Basic File test (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (normal form)
  • OK /html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html (#29137)
    • FAIL [expected PASS] subtest: document.write in an imported module

      assert_true: onload must be called expected true got false
      

  • OK /resize-observer/change-layout-in-error.html (#32629)
    • PASS [expected FAIL] subtest: Changing layout in window error handler should not result in lifecyle loop when resize observer loop limit is reached.
  • OK /workers/WorkerGlobalScope-close.html (#23064)
    • PASS [expected FAIL] subtest: Test sending a message after closing.
Stable unexpected results that are known to be intermittent (13)
  • FAIL [expected PASS] /_mozilla/css/dirty_viewport.html (#13731)
  • FAIL [expected PASS] /_mozilla/css/iframe/hide_and_show.html (#15265)
  • OK /css/cssom-view/MediaQueryList-addListener-handleEvent.html (#24571)
    • FAIL [expected PASS] subtest: looks up handleEvent method on every event dispatch

      assert_equals: expected 2 but got 1
      

  • OK /css/cssom-view/MediaQueryList-addListener-removeListener.html (#24569)
    • PASS [expected FAIL] subtest: listeners are called correct number of times
  • OK /css/cssom-view/MediaQueryListEvent.html (#25275)
    • PASS [expected FAIL] subtest: argument of addListener
  • TIMEOUT [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html (#29048)
    • TIMEOUT [expected FAIL] subtest: Navigating to a different document with link click

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Navigating to a different document with form submission
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted

      assert_array_equals: Pages opened during history navigation lengths differ, expected array [6, 5] length 2, got [6, 3, 3] length 3
      

  • CRASH [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
  • TIMEOUT [expected PASS] /html/semantics/embedded-content/the-img-element/image-loading-lazy-subframe-detached-crash.html (#31572)
  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • FAIL [expected PASS] subtest: Reload domComplete &gt; Original domComplete

      assert_true: Reload domComplete &gt; Original domComplete expected true got false
      

    • FAIL [expected PASS] subtest: Reload domContentLoadedEventEnd &gt; Original domContentLoadedEventEnd

      assert_true: Reload domContentLoadedEventEnd &gt; Original domContentLoadedEventEnd expected true got false
      

    • FAIL [expected PASS] subtest: Reload domContentLoadedEventStart &gt; Original domContentLoadedEventStart

      assert_true: Reload domContentLoadedEventStart &gt; Original domContentLoadedEventStart expected true got false
      

    • FAIL [expected PASS] subtest: Reload fetchStart &gt; Original fetchStart

      assert_true: Reload fetchStart &gt; Original fetchStart expected true got false
      

    • FAIL [expected PASS] subtest: Reload loadEventEnd &gt; Original loadEventEnd

      assert_true: Reload loadEventEnd &gt; Original loadEventEnd expected true got false
      

    • FAIL [expected PASS] subtest: Reload loadEventStart &gt; Original loadEventStart

      assert_true: Reload loadEventStart &gt; Original loadEventStart expected true got false
      

  • OK [expected TIMEOUT] /resource-timing/nested-context-navigations-iframe.html (#24311)
    • PASS [expected NOTRUN] subtest: Test that iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that crossorigin iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that cross-site iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that iframe refreshes are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that crossorigin iframe refreshes are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that cross-site iframe refreshes are not observable by the parent
  • ERROR [expected OK] /webxr/render_state_update.https.html (#27535)
  • ERROR [expected OK] /workers/constructors/Worker/Worker-constructor.html (#22991)

Copy link

✨ Try run (#10831392427) succeeded.

@Loirooriol Loirooriol added this pull request to the merge queue Sep 12, 2024
We were only parsing the `width` attribute as a presentation hint for
`<table>`, `<td>` and `<th>`. This patch also handles `<colgroup>` and
`<col>`.

Also, we weren't parsing `height` at all, now we do it for `<table>`,
`<td>`, `<th>`, `<tr>`, `<tbody>`, `<thead>` and `<tfoot>`.

One test is now crashing, but this was an existing issue: servo#33423

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Merged via the queue into servo:main with commit 4839cdf Sep 12, 2024
11 checks passed
@Loirooriol Loirooriol deleted the table-preshints branch September 12, 2024 14:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-layout/table A-layout/2020 https://github.com/servo/servo/wiki/Layout-2020
Projects
Development

Successfully merging this pull request may close these issues.

2 participants