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

script: Implement the FontFaceSet DOM API #32576

Merged
merged 1 commit into from
Jun 26, 2024
Merged

Conversation

mukilan
Copy link
Member

@mukilan mukilan commented Jun 21, 2024

Add a skeleton implementation of FontFaceSet interface with support
for resolving the document.fonts.ready Promise when the loading of
web fonts is completed.

This change exposes new failures in the web platform tests.

These were ERROR before the change because document.fonts.ready caused
a ReferenceError causing the tests to be aborted and they now FAIL:

  • /css/CSS2/linebox/vertical-align-top-bottom-001.html
  • /css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html
  • /css/css-fonts/generic-family-keywords-001.html
  • /css/css-fonts/math-script-level-and-math-style/math-script-level-004.tentative.html
  • /css/css-fonts/math-script-level-and-math-style/math-script-level-002.tentative.html
  • /css/css-text/text-autospace/text-autospace-ligature-001.html
  • /css/css-values/calc-size/calc-size-width.tentative.html

These were TIMEOUT before the change because document.fonts.ready was
a ReferenceError and the tests were asynchronous (reftest-wait). These now
FAIL because the assertions are now executed after fonts are loaded:

  • /css/css-fonts/matching/fixed-stretch-style-over-weight.html
  • /css/css-fonts/matching/range-descriptor-reversed.html
  • /css/css-fonts/matching/stretch-distance-over-weight-distance.html
  • /css/css-fonts/matching/style-ranges-over-weight-direction.html
  • /css/css-fonts/variations/variable-box-font.html
  • /css/css-fonts/variations/variable-gpos-m2b.html
  • /css/css-fonts/variations/variable-gsub.html
  • /css/css-fonts/variations/variable-opsz-size-adjust.html
  • /css/css-position/sticky/position-sticky-change-top.html
  • /css/css-position/sticky/position-sticky-fixed-ancestor.html
  • /css/css-position/sticky/position-sticky-flexbox.html
  • /css/css-position/sticky/position-sticky-grid.html
  • /css/css-position/sticky/position-sticky-inline.html
  • /css/css-position/sticky/position-sticky-rendering.html
  • /css/css-position/sticky/position-sticky-stacking-context.html
  • /css/css-position/sticky/position-sticky-table-td-left.html
  • /css/css-position/sticky/position-sticky-table-td-right.html
  • /css/css-position/sticky/position-sticky-table-tfoot-bottom.html
  • /css/css-position/sticky/position-sticky-table-th-right.html
  • /css/css-position/sticky/position-sticky-table-thead-top.html
  • /css/css-position/sticky/position-sticky-table-tr-bottom.html
  • /css/css-position/sticky/position-sticky-table-tr-top.html
  • /css/css-position/sticky/position-sticky-writing-modes.html
  • /css/css-pseudo/marker-intrinsic-contribution-001.html
  • /css/css-text/hyphens/hyphens-character.html

These tests now PASS due to this patch:

  • FAIL -> PASS
    • /html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html
    • /html/canvas/element/text/2d.text.measure.width.empty.html
  • TIMEOUT -> PASS
    • /css/css-fonts/variations/font-descriptor-range-reversed.html
    • /css/css-fonts/variations/variable-opsz.html
    • /css/css-position/sticky/position-sticky-table-th-left.html
  • ERROR -> PASS
    • /css/css-fonts/generic-family-keywords-002.html
    • /css/css-fonts/generic-family-keywords-003.html
  • These two tests only PASS in Layout 2020:
    • /css/CSS2/positioning/inline-static-position-001.html
    • /css/cssom-view/getBoundingClientRect-empty-inline.html

This test has subtests that PASS intermittenttly:

  • /fetch/metadata/generated/css-font-face.sub.tentative.html

This test seems to have different results on the CI than locally (could
be due to available fonts):

  • /css/css-fonts/generic-family-keywords-001.html

These tests are new TIMEOUTS that used to FAIL because
documents.fonts.ready was a ReferenceError:

  • /resource-timing/TAO-match.html
  • /resource-timing/content-type.html
  • /resource-timing/nextHopProtocol-is-tao-protected.https.html

The failure in /resize-observer/change-layout-in-error.html could be
due to an issue in the ResizeObserver implementation that is now exposed
with this change, but this needs more investigation.

Co-authored-by: Martin Robinson mrobinson@igalia.com
Signed-off-by: Mukilan Thiyagarajan mukilan@igalia.com


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

@mukilan mukilan requested a review from gterzian as a code owner June 21, 2024 05:18
@mukilan mukilan requested a review from mrobinson June 21, 2024 05:19
@mukilan mukilan added the T-full Do a full try run label Jun 21, 2024
@github-actions github-actions bot removed the T-full Do a full try run label Jun 21, 2024
Copy link

🔨 Triggering try run (#9608697235) for Linux WPT, MacOS, Windows, Android, OpenHarmony

Copy link

Test results for linux-wpt-layout-2013 from try job (#9608697235):

Flaky unexpected result (13)
  • TIMEOUT [expected PASS] /css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html
  • FAIL [expected PASS] /css/css-values/vh_not_refreshing_on_chrome.html (#23385, #15570)
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryList-addListener-removeListener.html (#24569)
    • TIMEOUT [expected PASS] subtest: listeners are called correct number of times

      Test timed out
      

    • NOTRUN [expected PASS] subtest: listeners are called in order they were added
    • NOTRUN [expected PASS] subtest: listener that was added twice is called only once
    • NOTRUN [expected PASS] subtest: listeners are called in order their MQLs were created
    • NOTRUN [expected PASS] subtest: removing listener from one MQL doesn't remove it from all MQLs
    • NOTRUN [expected PASS] subtest: MediaQueryList::removeListener removes added listener
  • OK /custom-elements/form-associated/form-disabled-callback.html
    • PASS [expected FAIL] subtest: A disabled form-associated custom element should not submit an entry for it
  • 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_5.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK [expected TIMEOUT] /html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.html (#30970)
  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html (#24066)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in filename (formdata event)
  • OK /html/syntax/parsing/DOMContentLoaded-defer.html (#21550)
    • PASS [expected FAIL] subtest: The end: DOMContentLoaded and defer scripts
  • TIMEOUT /resource-timing/test_resource_timing.html (#25720)
    • FAIL [expected PASS] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img)

      assert_equals: expected 8813312 but got 8813056
      

  • TIMEOUT [expected OK] /webmessaging/with-ports/018.html (#24485)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, javascript:

      Test timed out
      

Stable unexpected results that are known to be intermittent (15)
  • OK /_mozilla/mozilla/detached_layout.html (#32343)
    • FAIL [expected PASS] subtest: Detached layout doesn't panic

      uncaught exception: Error: assert_equals: rectangle should be zero-sized expected 0 but got 284
      

  • PASS [expected TIMEOUT] /css/css-color/animation/opacity-animation-ending-correctly-002.html (#29216)
  • OK [expected ERROR] /css/css-ui/text-overflow-023.html (#19861)
    • PASS [expected FAIL] subtest: Checks hit testing on the ellipsis
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryList-addListener-handleEvent.html (#24571)
    • TIMEOUT [expected PASS] subtest: doesn't look up handleEvent method on callable event listeners

      Test timed out
      

    • NOTRUN [expected PASS] subtest: rethrows errors when getting handleEvent
    • NOTRUN [expected FAIL] subtest: throws if handleEvent is falsy and not callable
    • NOTRUN [expected FAIL] subtest: throws if handleEvent is thruthy and not callable
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryList-extends-EventTarget-interop.html (#25285)
    • TIMEOUT [expected PASS] subtest: removeEventListener (capture) doesn't remove listener added with addListener

      Test timed out
      

    • NOTRUN [expected PASS] subtest: removeListener removes listener added with addEventListener
    • NOTRUN [expected PASS] subtest: removeListener doesn't remove listener added with addEventListener (capture)
    • NOTRUN [expected PASS] subtest: capturing event listener fires before non-capturing listener at target
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryList-extends-EventTarget.html (#25269)
    • TIMEOUT [expected PASS] subtest: listeners with different type are not called

      Test timed out
      

    • NOTRUN [expected PASS] subtest: addEventListener "once" option is respected
    • NOTRUN [expected PASS] subtest: removeEventListener removes listener
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryListEvent.html (#25275)
    • TIMEOUT [expected PASS] subtest: constructor of "change" event

      Test timed out
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
    • PASS [expected FAIL] subtest: aElement.click() before the load event must NOT replace
  • TIMEOUT /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • TIMEOUT [expected FAIL] subtest: Element with tabindex should support autofocus

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Non-HTMLElement should not support autofocus
  • TIMEOUT [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
  • TIMEOUT [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
    • 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
      

  • TIMEOUT /resource-timing/response-status-code.html (#29309)
    • TIMEOUT [expected FAIL] subtest: This test validates the response status of resources. 79

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 80
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 81
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 82
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 83
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 84
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 85
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 86
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 87
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 88
    • And 1 more unexpected results...
  • TIMEOUT [expected OK] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html (#29053)
    • TIMEOUT [expected PASS] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe

      Test timed out
      

Stable unexpected results (22)
  • PASS [expected FAIL] /css/CSS2/text/text-transform-bicameral-018.xht
  • OK /css/css-fonts/generic-family-keywords-001.html
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted serif
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted math
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted fangsong

      assert_equals: quoted fangsong matches  @font-face rule expected 50 but got 30
      

    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted ui-serif

      assert_equals: unquoted ui-serif does not match @font-face rule expected 30 but got 50
      

    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted ui-sans-serif

      assert_equals: unquoted ui-sans-serif does not match @font-face rule expected 30 but got 50
      

    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted ui-monospace

      assert_equals: quoted ui-monospace matches  @font-face rule expected 50 but got 30
      

  • FAIL [expected PASS] /css/css-position/sticky/position-sticky-flexbox.html
  • FAIL [expected PASS] /css/css-position/sticky/position-sticky-rendering.html
  • FAIL [expected PASS] /css/css-position/sticky/position-sticky-stacking-context.html
  • OK /fetch/metadata/generated/css-font-face.sub.tentative.html
    • PASS [expected FAIL] subtest: sec-fetch-mode - Not sent to non-trustworthy same-site destination
    • PASS [expected FAIL] subtest: sec-fetch-mode - Not sent to non-trustworthy cross-site destination
    • FAIL [expected PASS] subtest: sec-fetch-dest - Not sent to non-trustworthy same-origin destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

    • FAIL [expected PASS] subtest: sec-fetch-dest - Not sent to non-trustworthy same-site destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

    • FAIL [expected PASS] subtest: sec-fetch-user - Not sent to non-trustworthy same-origin destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

    • PASS [expected FAIL] subtest: sec-fetch-user - Not sent to non-trustworthy same-site destination
    • FAIL [expected PASS] subtest: sec-fetch-user - Not sent to non-trustworthy cross-site destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

  • OK /resize-observer/calculate-depth-for-node.html
    • FAIL [expected PASS] subtest: "Calculate depth for node" algorithm with Shadow DOM

      ResizeObserver is not defined
      

  • OK /resize-observer/callback-cross-realm-report-exception.html
    • FAIL [expected PASS] subtest: ResizeObserver reports the exception from its callback in the callback's global object

      frames[0].ResizeObserver is not a constructor
      

  • OK /resize-observer/change-layout-in-error.html
    • FAIL [expected PASS] subtest: Changing layout in window error handler should not result in lifecyle loop when resize observer loop limit is reached.

      ResizeObserver is not defined
      

  • FAIL [expected PASS] /resize-observer/devicepixel.html
  • OK /resize-observer/eventloop.html
    • FAIL [expected PASS] subtest: ResizeObserver implemented

      assert_own_property: expected property "ResizeObserver" missing
      

  • ERROR [expected OK] /resize-observer/fragments.html
  • OK /resize-observer/idlharness.window.html
    • FAIL [expected PASS] subtest: idl_test setup

      promise_test: Unhandled rejection with value: object "ReferenceError: ResizeObserver is not defined"
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: existence and properties of interface object

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface object length

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface object name

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: existence and properties of interface prototype object

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: existence and properties of interface prototype object's "constructor" property

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: existence and properties of interface prototype object's @@unscopables property

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: operation observe(Element, optional ResizeObserverOptions)

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: operation unobserve(Element)

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: operation disconnect()

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • And 33 more unexpected results...
  • TIMEOUT [expected PASS] /resize-observer/iframe-same-origin.html
  • ERROR [expected OK] /resize-observer/notify.html
    • FAIL [expected PASS] subtest: ResizeObserver implemented

      assert_own_property: expected property "ResizeObserver" missing
      

  • ERROR [expected OK] /resize-observer/observe.html
    • FAIL [expected PASS] subtest: ResizeObserver implemented

      assert_own_property: expected property "ResizeObserver" missing
      

  • OK /resize-observer/ordering.html
    • FAIL [expected PASS] subtest: ResizeObserver and IntersectionObserver ordering

      ResizeObserver is not defined
      

  • OK /resize-observer/scrollbars-2.html
    • FAIL [expected PASS] subtest: ResizeObserver content-box size and scrollbars

      promise_test: Unhandled rejection with value: object "ReferenceError: ResizeObserver is not defined"
      

  • OK /resize-observer/scrollbars.html
    • FAIL [expected PASS] subtest: ResizeObserver content-box size and scrollbars

      promise_test: Unhandled rejection with value: object "ReferenceError: ResizeObserver is not defined"
      

  • ERROR [expected OK] /resize-observer/svg-with-css-box-001.html
    • FAIL [expected PASS] subtest: ResizeObserver implemented

      assert_implements: undefined
      

  • TIMEOUT [expected OK] /resize-observer/svg-with-css-box-002.svg
  • OK /resize-observer/svg.html
    • FAIL [expected PASS] subtest: ResizeObserver implemented

      assert_own_property: expected property "ResizeObserver" missing
      

Copy link

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

Flaky unexpected result (18)
  • CRASH [expected PASS] /_mozilla/mozilla/webgl/draw_arrays_simple.html
  • CRASH [expected PASS] /_webgl/conformance/glsl/bugs/long-expressions-should-not-crash.html (#19221)
  • CRASH [expected PASS] /_webgl/conformance/glsl/bugs/temp-expressions-should-not-crash.html (#22050)
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Single value - Non-empty name exists
    • PASS [expected FAIL] subtest: Multiple values - name content attribute is ignored
  • 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/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-same-origin.window.html (#29049)
    • FAIL [expected PASS] subtest: Same-origin navigation started from unload handler must be ignored

      assert_equals: expected "?pass" but got "?fail"
      

  • TIMEOUT [expected PASS] /html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html (#30063)
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html (#29087)
    • FAIL [expected TIMEOUT] subtest: <dialog>-contained autofocus element gets focused when the dialog is shown

      promise_test: Unhandled rejection with value: object "TypeError: w.document.querySelector(...).show is not a function"
      

  • TIMEOUT /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • FAIL [expected TIMEOUT] subtest: Element with tabindex should support autofocus

      assert_equals: expected "SPAN" but got "BODY"
      

    • TIMEOUT [expected NOTRUN] subtest: Non-HTMLElement should not support autofocus

      Test timed out
      

  • CRASH [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html (#22667)
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-user-activation-sticky.tentative.sub.window.html (#32154)
    • TIMEOUT [expected FAIL] subtest: Allow top with user activation + user activation

      Test timed out
      

  • OK [expected TIMEOUT] /html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html (#29724)
    • PASS [expected TIMEOUT] subtest: reparent-form-during-planned-navigation-task
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • PASS [expected FAIL] subtest: text/plain: \r\n in value (formdata event)
  • OK /html/syntax/parsing/DOMContentLoaded-defer.html (#21550)
    • FAIL [expected PASS] subtest: The end: DOMContentLoaded and defer scripts

      assert_false: DOMContentLoaded should not have fired before executing a task queued from a defer script expected false got true
      

  • OK /html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html (#27659)
    • FAIL [expected PASS] subtest: async document.write in a module

      assert_true: onload must be called expected true got false
      

  • ERROR [expected OK] /resource-timing/cors-preflight.any.html (#28694)
    • TIMEOUT [expected FAIL] subtest: PerformanceResourceTiming sizes fetch with preflight test

      Test timed out
      

  • TIMEOUT [expected OK] /webmessaging/without-ports/017.html (#24486)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, about:blank

      Test timed out
      

Stable unexpected results that are known to be intermittent (18)
  • OK [expected ERROR] /css/css-ui/text-overflow-023.html (#19861)
  • PASS [expected FAIL] /css/css-values/vh_not_refreshing_on_chrome.html (#23385, #15570)
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryList-addListener-handleEvent.html (#24571)
    • TIMEOUT [expected PASS] subtest: calls handleEvent method of event listener

      Test timed out
      

    • NOTRUN [expected PASS] subtest: looks up handleEvent method on every event dispatch
    • NOTRUN [expected PASS] subtest: doesn't look up handleEvent method on callable event listeners
    • NOTRUN [expected PASS] subtest: rethrows errors when getting handleEvent
    • NOTRUN [expected FAIL] subtest: throws if handleEvent is falsy and not callable
    • NOTRUN [expected FAIL] subtest: throws if handleEvent is thruthy and not callable
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryList-addListener-removeListener.html (#24569)
    • TIMEOUT [expected PASS] subtest: listeners are called correct number of times

      Test timed out
      

    • NOTRUN [expected PASS] subtest: listeners are called in order they were added
    • NOTRUN [expected PASS] subtest: listener that was added twice is called only once
    • NOTRUN [expected PASS] subtest: listeners are called in order their MQLs were created
    • NOTRUN [expected PASS] subtest: removing listener from one MQL doesn't remove it from all MQLs
    • NOTRUN [expected PASS] subtest: MediaQueryList::removeListener removes added listener
  • OK /css/cssom-view/MediaQueryList-extends-EventTarget-interop.html (#25285)
    • FAIL [expected PASS] subtest: removeEventListener (capture) doesn't remove listener added with addListener

      assert_equals: triggerMQLEvent expected 1 but got 0
      

    • FAIL [expected PASS] subtest: removeListener doesn't remove listener added with addEventListener (capture)

      assert_equals: triggerMQLEvent expected 1 but got 0
      

    • FAIL [expected PASS] subtest: capturing event listener fires before non-capturing listener at target

      assert_array_equals: triggerMQLEvent lengths differ, expected array ["addEventListener", "addListener"] length 2, got [] length 0
      

  • TIMEOUT /css/cssom-view/MediaQueryList-extends-EventTarget.html (#25269)
    • TIMEOUT [expected PASS] subtest: onchange removes listener

      Test timed out
      

    • NOTRUN [expected PASS] subtest: listeners for "change" type are called
    • NOTRUN [expected PASS] subtest: listeners with different type are not called
    • NOTRUN [expected TIMEOUT] subtest: addEventListener "once" option is respected
  • OK /css/cssom-view/MediaQueryListEvent.html (#25275)
    • FAIL [expected PASS] subtest: constructor of "change" event

      assert_true: expected true got false
      

  • TIMEOUT /fetch/metadata/generated/element-img-environment-change.https.sub.html (#30111)
    • TIMEOUT [expected FAIL] subtest: sec-fetch-site - Cross-site, no attributes

      Test timed out
      

  • TIMEOUT /fetch/metadata/generated/element-img-environment-change.sub.html (#30111)
    • PASS [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy same-origin destination, no attributes
    • FAIL [expected NOTRUN] subtest: sec-fetch-site - Not sent to non-trustworthy cross-site destination, no attributes

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

    • FAIL [expected NOTRUN] subtest: sec-fetch-mode - Not sent to non-trustworthy same-origin destination, no attributes

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

    • TIMEOUT [expected NOTRUN] subtest: sec-fetch-mode - Not sent to non-trustworthy same-site destination, no attributes

      Test timed out
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html (#29066)
    • FAIL [expected PASS] subtest: Check execution order from nested timeout

      assert_equals: Expected nested setTimeout to run second expected true but got false
      

    • FAIL [expected PASS] subtest: Check execution order on load handler

      assert_equals: Expected onload to run first expected false but got true
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
    • PASS [expected FAIL] subtest: aElement.click() before the load event must NOT replace
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
  • CRASH [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
  • OK /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"
      

  • OK /html/semantics/embedded-content/the-img-element/non-active-document.html (#21544)
    • PASS [expected FAIL] subtest: DOMParser
  • TIMEOUT /resource-timing/response-status-code.html (#29309)
    • TIMEOUT [expected FAIL] subtest: This test validates the response status of resources. 79

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 80
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 81
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 82
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 83
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 84
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 85
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 86
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 87
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 88
    • And 1 more unexpected results...
  • CRASH [expected OK] /url/failure.html (#28574)
Stable unexpected results (3)
  • OK /css/css-fonts/generic-family-keywords-001.html
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted system-ui
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted emoji
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted math
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted ui-rounded

      assert_equals: quoted ui-rounded matches  @font-face rule expected 50 but got 30
      

  • OK /fetch/metadata/generated/css-font-face.sub.tentative.html
    • PASS [expected FAIL] subtest: sec-fetch-dest - Not sent to non-trustworthy cross-site destination
    • FAIL [expected PASS] subtest: sec-fetch-user - Not sent to non-trustworthy same-origin destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

    • FAIL [expected PASS] subtest: sec-fetch-user - Not sent to non-trustworthy cross-site destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

  • OK /resize-observer/change-layout-in-error.html
    • FAIL [expected PASS] subtest: Changing layout in window error handler should not result in lifecyle loop when resize observer loop limit is reached.

      assert_equals: expected 1 but got 2
      

Copy link

⚠️ Try run (#9608697235) failed.

@mukilan mukilan added T-linux-wpt-2013 Do a try run of the WPT (legacy layout) T-linux-wpt-2020 Do a try run of the WPT labels Jun 21, 2024
@github-actions github-actions bot removed T-linux-wpt-2013 Do a try run of the WPT (legacy layout) T-linux-wpt-2020 Do a try run of the WPT labels Jun 21, 2024
Copy link

🔨 Triggering try run (#9609402674) for Linux WPT

Copy link

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

Flaky unexpected result (13)
  • CRASH [expected PASS] /_webgl/conformance/glsl/bugs/nested-functions-should-not-crash.html (#30680)
  • OK /css/css-values/cap-invalidation.html
    • 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
      

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

      Test timed out
      

  • TIMEOUT [expected OK] /custom-elements/reactions/customized-builtins/HTMLMediaElement.html (#31014)
  • 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
  • TIMEOUT [expected OK] /html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.html (#30970)
  • CRASH [expected PASS] /html/semantics/embedded-content/the-img-element/image-loading-lazy-subframe-detached-crash.html (#31572)
  • OK /html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html (#27659)
    • FAIL [expected PASS] subtest: async document.write in a module

      assert_true: onload must be called expected true got false
      

  • TIMEOUT /resource-timing/test_resource_timing.html (#25720)
    • FAIL [expected PASS] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img)

      assert_equals: expected 5155072 but got 5154816
      

  • TIMEOUT [expected OK] /webmessaging/without-ports/017.html (#24486)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, about:blank

      Test timed out
      

  • OK /workers/WorkerGlobalScope-close.html (#23064)
    • PASS [expected FAIL] subtest: Test sending a message after closing.
  • OK [expected ERROR] /workers/constructors/Worker/Worker-constructor.html (#22991)
Stable unexpected results that are known to be intermittent (19)
  • FAIL [expected PASS] /_mozilla/css/dirty_viewport.html (#13731)
  • OK [expected ERROR] /css/css-ui/text-overflow-023.html (#19861)
  • PASS [expected FAIL] /css/css-values/vh_not_refreshing_on_chrome.html (#23385, #15570)
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryList-addListener-removeListener.html (#24569)
    • TIMEOUT [expected PASS] subtest: listeners are called in order they were added

      Test timed out
      

    • NOTRUN [expected PASS] subtest: listener that was added twice is called only once
    • NOTRUN [expected PASS] subtest: listeners are called in order their MQLs were created
    • NOTRUN [expected PASS] subtest: removing listener from one MQL doesn't remove it from all MQLs
    • NOTRUN [expected PASS] subtest: MediaQueryList::removeListener removes added listener
  • OK /css/cssom-view/MediaQueryList-extends-EventTarget-interop.html (#25285)
    • FAIL [expected PASS] subtest: removeListener doesn't remove listener added with addEventListener (capture)

      assert_equals: triggerMQLEvent expected 1 but got 0
      

    • FAIL [expected PASS] subtest: capturing event listener fires before non-capturing listener at target

      assert_array_equals: triggerMQLEvent lengths differ, expected array ["addEventListener", "addListener"] length 2, got [] length 0
      

  • TIMEOUT /css/cssom-view/MediaQueryList-extends-EventTarget.html (#25269)
    • TIMEOUT [expected PASS] subtest: onchange removes listener

      Test timed out
      

    • NOTRUN [expected PASS] subtest: listeners for "change" type are called
    • NOTRUN [expected PASS] subtest: listeners with different type are not called
    • NOTRUN [expected TIMEOUT] subtest: addEventListener "once" option is respected
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryListEvent.html (#25275)
    • TIMEOUT [expected PASS] subtest: argument of onchange

      Test timed out
      

    • NOTRUN [expected PASS] subtest: constructor of "change" event
  • TIMEOUT /fetch/metadata/generated/element-img-environment-change.https.sub.html (#30111)
    • TIMEOUT [expected FAIL] subtest: sec-fetch-site - Cross-site, no attributes

      Test timed out
      

  • TIMEOUT /fetch/metadata/generated/element-img-environment-change.sub.html (#30111)
    • TIMEOUT [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy same-site destination, no attributes

      Test timed out
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html (#29066)
    • FAIL [expected PASS] subtest: Check execution order from nested timeout

      assert_equals: Expected nested setTimeout to run second expected true but got false
      

    • FAIL [expected PASS] subtest: Check execution order on load handler

      assert_equals: Expected onload to run first expected false but got true
      

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

      assert_equals: expected "?pass" but got "?fail"
      

  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html (#29087)
    • FAIL [expected TIMEOUT] subtest: <dialog>-contained autofocus element gets focused when the dialog is shown

      promise_test: Unhandled rejection with value: object "TypeError: w.document.querySelector(...).show is not a function"
      

  • OK /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
    • FAIL [expected TIMEOUT] subtest: Check that popups from a sandboxed iframe escape the sandbox if allow-popups-to-escape-sandbox is used

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

  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
  • TIMEOUT [expected CRASH] /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
  • OK /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"
      

  • OK /html/semantics/embedded-content/the-img-element/non-active-document.html (#21544)
    • PASS [expected FAIL] subtest: DOMParser
  • OK [expected TIMEOUT] /html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html (#29724)
    • PASS [expected TIMEOUT] subtest: reparent-form-during-planned-navigation-task
  • TIMEOUT /resource-timing/response-status-code.html (#29309)
    • TIMEOUT [expected FAIL] subtest: This test validates the response status of resources. 79

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 80
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 81
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 82
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 83
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 84
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 85
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 86
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 87
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 88
    • And 1 more unexpected results...
Stable unexpected results (2)
  • OK /css/css-fonts/generic-family-keywords-001.html
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted system-ui

      assert_equals: quoted system-ui matches  @font-face rule expected 50 but got 30
      

    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted math

      assert_equals: quoted math matches  @font-face rule expected 50 but got 30
      

  • OK /fetch/metadata/generated/css-font-face.sub.tentative.html
    • FAIL [expected PASS] subtest: sec-fetch-mode - Not sent to non-trustworthy same-site destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

    • FAIL [expected PASS] subtest: sec-fetch-user - Not sent to non-trustworthy same-origin destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

    • FAIL [expected PASS] subtest: sec-fetch-user - Not sent to non-trustworthy cross-site destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

Copy link

Test results for linux-wpt-layout-2013 from try job (#9609402674):

Flaky unexpected result (13)
  • 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/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
    • PASS [expected FAIL] subtest: aElement.click() before the load event must NOT replace
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • CRASH [expected OK] /html/canvas/offscreen/canvas-host/2d.canvas.host.size.large.html
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html (#29087)
    • FAIL [expected TIMEOUT] subtest: <dialog>-contained autofocus element gets focused when the dialog is shown

      promise_test: Unhandled rejection with value: object "TypeError: w.document.querySelector(...).show is not a function"
      

  • TIMEOUT [expected OK] /html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html
    • TIMEOUT [expected PASS] subtest: base_target_does_not_affect_location_assignment

      Test timed out
      

  • TIMEOUT [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
    • TIMEOUT [expected FAIL] subtest: Check that popups from a sandboxed iframe escape the sandbox if allow-popups-to-escape-sandbox is used

      Test timed out
      

  • TIMEOUT [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html (#22667)
    • TIMEOUT [expected FAIL] subtest: Check that popups from a sandboxed iframe escape the sandbox if allow-popups-to-escape-sandbox is used

      Test timed out
      

  • 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/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
      

  • TIMEOUT [expected OK] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html (#29053)
    • TIMEOUT [expected PASS] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe

      Test timed out
      

  • OK /workers/WorkerGlobalScope-close.html (#23064)
    • FAIL [expected PASS] subtest: Test sending a message after closing.

      assert_not_equals: got disallowed value "pong"
      

Stable unexpected results that are known to be intermittent (16)
  • OK /_mozilla/mozilla/detached_layout.html (#32343)
    • FAIL [expected PASS] subtest: Detached layout doesn't panic

      uncaught exception: Error: assert_equals: rectangle should be zero-sized expected 0 but got 284
      

  • PASS [expected TIMEOUT] /css/css-color/animation/opacity-animation-ending-correctly-002.html (#29216)
  • OK [expected ERROR] /css/css-ui/text-overflow-023.html (#19861)
    • PASS [expected FAIL] subtest: Checks hit testing on the ellipsis
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryList-addListener-handleEvent.html (#24571)
    • TIMEOUT [expected PASS] subtest: looks up handleEvent method on every event dispatch

      Test timed out
      

    • NOTRUN [expected PASS] subtest: doesn't look up handleEvent method on callable event listeners
    • NOTRUN [expected PASS] subtest: rethrows errors when getting handleEvent
    • NOTRUN [expected FAIL] subtest: throws if handleEvent is falsy and not callable
    • NOTRUN [expected FAIL] subtest: throws if handleEvent is thruthy and not callable
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryList-addListener-removeListener.html (#24569)
    • TIMEOUT [expected PASS] subtest: listeners are called correct number of times

      Test timed out
      

    • NOTRUN [expected PASS] subtest: listeners are called in order they were added
    • NOTRUN [expected PASS] subtest: listener that was added twice is called only once
    • NOTRUN [expected PASS] subtest: listeners are called in order their MQLs were created
    • NOTRUN [expected PASS] subtest: removing listener from one MQL doesn't remove it from all MQLs
    • NOTRUN [expected PASS] subtest: MediaQueryList::removeListener removes added listener
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryList-extends-EventTarget-interop.html (#25285)
    • TIMEOUT [expected PASS] subtest: listener added with addListener and addEventListener is called once

      Test timed out
      

    • NOTRUN [expected PASS] subtest: listener added with addListener and addEventListener (capture) is called twice
    • NOTRUN [expected PASS] subtest: removeEventListener removes listener added with addListener
    • NOTRUN [expected PASS] subtest: removeEventListener (capture) doesn't remove listener added with addListener
    • NOTRUN [expected PASS] subtest: removeListener removes listener added with addEventListener
    • NOTRUN [expected PASS] subtest: removeListener doesn't remove listener added with addEventListener (capture)
    • NOTRUN [expected PASS] subtest: capturing event listener fires before non-capturing listener at target
  • TIMEOUT [expected OK] /css/cssom-view/MediaQueryListEvent.html (#25275)
    • TIMEOUT [expected PASS] subtest: argument of onchange

      Test timed out
      

    • NOTRUN [expected PASS] subtest: constructor of "change" event
  • OK /html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html (#29066)
    • PASS [expected FAIL] subtest: Check execution order on load handler
    • PASS [expected FAIL] subtest: Check execution order from nested timeout
  • OK [expected TIMEOUT] /html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.html (#30970)
  • 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.
  • TIMEOUT /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • TIMEOUT [expected FAIL] subtest: Element with tabindex should support autofocus

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Non-HTMLElement should not support autofocus
  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
    • FAIL [expected TIMEOUT] subtest: Check that popups from a sandboxed iframe escape the sandbox if allow-popups-to-escape-sandbox is used

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

  • TIMEOUT [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • TIMEOUT [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: Basic test (formdata event)
    • 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 name (formdata event)
  • TIMEOUT /resource-timing/response-status-code.html (#29309)
    • TIMEOUT [expected FAIL] subtest: This test validates the response status of resources. 79

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 80
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 81
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 82
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 83
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 84
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 85
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 86
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 87
    • NOTRUN [expected FAIL] subtest: This test validates the response status of resources. 88
    • And 1 more unexpected results...
Stable unexpected results (19)
  • PASS [expected FAIL] /css/CSS2/text/text-transform-bicameral-018.xht
  • OK /css/css-fonts/generic-family-keywords-001.html
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted fangsong

      assert_equals: unquoted fangsong does not match @font-face rule expected 30 but got 50
      

    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted ui-serif

      assert_equals: unquoted ui-serif does not match @font-face rule expected 30 but got 50
      

  • OK /fetch/metadata/generated/css-font-face.sub.tentative.html
    • FAIL [expected PASS] subtest: sec-fetch-dest - Not sent to non-trustworthy same-origin destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

    • FAIL [expected PASS] subtest: sec-fetch-user - Not sent to non-trustworthy same-origin destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

    • FAIL [expected PASS] subtest: sec-fetch-user - Not sent to non-trustworthy cross-site destination

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

  • CRASH [expected OK] /html/canvas/offscreen/canvas-host/2d.canvas.host.size.attributes.parse.minus.html
  • OK /resize-observer/calculate-depth-for-node.html
    • FAIL [expected PASS] subtest: "Calculate depth for node" algorithm with Shadow DOM

      ResizeObserver is not defined
      

  • OK /resize-observer/callback-cross-realm-report-exception.html
    • FAIL [expected PASS] subtest: ResizeObserver reports the exception from its callback in the callback's global object

      frames[0].ResizeObserver is not a constructor
      

  • FAIL [expected PASS] /resize-observer/devicepixel.html
  • OK /resize-observer/eventloop.html
    • FAIL [expected PASS] subtest: ResizeObserver implemented

      assert_own_property: expected property "ResizeObserver" missing
      

  • ERROR [expected OK] /resize-observer/fragments.html
  • OK /resize-observer/idlharness.window.html
    • FAIL [expected PASS] subtest: idl_test setup

      promise_test: Unhandled rejection with value: object "ReferenceError: ResizeObserver is not defined"
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: existence and properties of interface object

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface object length

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface object name

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: existence and properties of interface prototype object

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: existence and properties of interface prototype object's "constructor" property

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: existence and properties of interface prototype object's @@unscopables property

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: operation observe(Element, optional ResizeObserverOptions)

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: operation unobserve(Element)

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • FAIL [expected PASS] subtest: ResizeObserver interface: operation disconnect()

      assert_own_property: self does not have own property "ResizeObserver" expected property "ResizeObserver" missing
      

    • And 33 more unexpected results...
  • TIMEOUT [expected PASS] /resize-observer/iframe-same-origin.html
  • ERROR [expected OK] /resize-observer/notify.html
    • FAIL [expected PASS] subtest: ResizeObserver implemented

      assert_own_property: expected property "ResizeObserver" missing
      

  • ERROR [expected OK] /resize-observer/observe.html
    • FAIL [expected PASS] subtest: ResizeObserver implemented

      assert_own_property: expected property "ResizeObserver" missing
      

  • OK /resize-observer/ordering.html
    • FAIL [expected PASS] subtest: ResizeObserver and IntersectionObserver ordering

      ResizeObserver is not defined
      

  • OK /resize-observer/scrollbars-2.html
    • FAIL [expected PASS] subtest: ResizeObserver content-box size and scrollbars

      promise_test: Unhandled rejection with value: object "ReferenceError: ResizeObserver is not defined"
      

  • OK /resize-observer/scrollbars.html
    • FAIL [expected PASS] subtest: ResizeObserver content-box size and scrollbars

      promise_test: Unhandled rejection with value: object "ReferenceError: ResizeObserver is not defined"
      

  • ERROR [expected OK] /resize-observer/svg-with-css-box-001.html
    • FAIL [expected PASS] subtest: ResizeObserver implemented

      assert_implements: undefined
      

  • TIMEOUT [expected OK] /resize-observer/svg-with-css-box-002.svg
  • OK /resize-observer/svg.html
    • FAIL [expected PASS] subtest: ResizeObserver implemented

      assert_own_property: expected property "ResizeObserver" missing
      

Copy link

⚠️ Try run (#9609402674) failed.

Copy link
Member

@gterzian gterzian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couple of initial comments...

By the way, re the resizeobserver failures in layout 2013: not sure we should run them, and also why the interface is absent when we do. Is it present in 2020 by way of the dir.ini` file in meta

@@ -1980,6 +1980,15 @@ impl Window {
);
}

let document = self.Document();
let pending_web_fonts = self.layout.borrow().waiting_for_web_fonts_to_load();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You want to scope the borrow so that it is dropped before font_face_set.fulfill_ready_promise_if_needed();, because since the promise calls into JS, it is very hard to be sure there will not be another borrow of layout.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't the lifetime of the borrow limited to the end of the statement since the Ref returned is a temporary and waiting_for_web_fonts_to_load() returns a boolean?

Copy link
Member

@gterzian gterzian Jun 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes you're right, and more importantly: I forgot about the promise enqueuing mechanism, so the borrow will have been dropped by the time the microtask runs. Altough I am actually not sure if calling resolve_native goes throught that, I will double check.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EDIT: resolve_native does not go through the microtask stuff...

// `document.fonts.ready` are run by the event loop only when it performs a microtask
// checkpoint. Without the call below, this never happens and the promise is 'stuck'
// waiting to be resolved until another event forces a microtask checkpoint.
self.rendering_opportunity(pipeline_id);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is correct, because the mechanism that resolves the promise is not the microtask checkpoint(which by the way in our wrong implementation is called once after each iteration of the event-loop, so it is called after handling this message as well), but rather the call to reflow, which does happens in the "update the rendering"(not always), but I think in your case the reflow should happen after this(since a pending reflow is added above) as part of

window.reflow(ReflowGoal::Full, ReflowReason::PendingReflow);
. Does the promise not resolve without noting a rendering opp here?

Also, see the other comment at reflow.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

. Does the promise not resolve without noting a rendering opp here?

Yes, that is what we observed. This example exhibits the issue if self.rendering_opportunity() is removed.

<!DOCTYPE html>
<html>
  <head>
  <script>
    document.fonts.ready.then(function() {
      console.log("Promise resolved with", arguments);
    })
  </script>
  <style>
    @font-face {
      font-family: 'FiraSans';
      src: url('https://google.com/'); /* Force font loading to fail due to sanitizer error */
      /* src: url('https://fonts.gstatic.com/s/firasans/v17/va9E4kDNxMZdWfMOD5Vvl4jL.woff2'); */
    }
    div {
      font-family: "FiraSans";
    }
  </style>
  </head>
  <body>
    <div>Test</div>
  </body>
</html>

However, we don't observe the issue when src is a valid font, so there maybe something more going on.

Copy link
Member

@gterzian gterzian Jun 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, thanks for clarifying. In that case, I think your fix is accidental, in that it works but doesn't address what I think is the underlying problem:

So I think the more direct way of addressing the problem, is to resolve the promise right here. Even though we are not in a "task", the micro task checkpoint will run after this. (remaining question: do you need to reflow before the promise callback runs?)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Forget about the above, we don't need the microtask checkpoint. It may still be an idea to resolve the promise already here(and see if the problem is not in the logic around it, like the check for all web fonts having been loaded already).

Also a problem is that it is not clear that the document is fully loaded at this point, but that is a separate problem.

let is_ready_state_complete = document.ReadyState() == DocumentReadyState::Complete;

if !pending_web_fonts && is_ready_state_complete {
font_face_set.fulfill_ready_promise_if_needed();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is correct, instead the promise must be fulfilled as part of the switch-the-fontfaceset-to-loaded. However the queuing of some of the task that call into this mechanism seems to originate in methods on FontFace(the constructor for example), so perhaps some kind of partial implementation of that interface should be part of this PR.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think @mrobinson and I discussed this approach during implementation but decided not to have a new task because currently we are only interested in document.font.ready, so implementing step 3 of switch-the-fontfaceset-to-loaded (Fulfill font face set’s [[ReadyPromise]] attribute’s value with font face set) is necessary but not step 4.

I'm not too familiar with the working of our task queue implementation or the specification, so I'll discuss this again with Martin.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok I see. See my other comment then for a more direct temporary solution.

@gterzian
Copy link
Member

gterzian commented Jun 24, 2024

Ok, to summarize:

  • When we call resolve_native, the promise handler is called immediately, not via a microtask. So the issue at hand is not microtask checkpointing, or the lack thereof. I think it rather relates to two things: 1. waiting_for_web_fonts_to_load(), and 2 is_ready_state_complete, and the lack of synchronization between when these two changes, and the event-loop runs.
  • I had a quick look into the mechanism behind waiting_for_web_fonts_to_load(), and I would look further into the concurrent logic behind it as a potential source for the bug. My guess is that there is a lack of signalling to the script loop for when the underlying state changes. By queueing a task you are forcing another iteration of the event-loop, by which time the underlying value has already been updated, but this is not robust(you are relying on timing being in your favor). So whatever updates the font context, should then signal the event-loop for the promise to be resolved(if the doc is ready, see below).
  • The other potential issue is with the is_ready_state_complete part of the logic, since if the document is not ready, then you need to introduce a second check for unfulfilled promises when it becomes ready. So that is like a second point of synchronization. And again I think it is better not to do all this withing reflow, because that introduces a need to ensure reflow is called. It would be best to try to resolve the promise again when/if the document becomes ready(if web fonts are all loaded by then).

@mukilan
Copy link
Member Author

mukilan commented Jun 24, 2024

When we call resolve_native, the promise handler is called immediately, not via a microtask. So the issue at hand is not microtask checkpointing, or the lack thereof.

@gterzian by 'promise handler' do you mean the callbacks registered from the JS side using promise.then? If so, we observed the opposite behaviour of what you've described. Using the test html shared above in the earlier comment, adding print statements before and after resolve_native, we can see them being printed as expected, but the .then callback is never called until the event loop received another event for example due to mouse being moved over the document.

@gterzian
Copy link
Member

Ok, interesting.

Can you please confirm that it runs via

Microtask::Promise(ref job) => {
?

Also, what happens if you resolve the promise inside handle_web_font_loaded?

Copy link
Member

@gterzian gterzian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok so confirmed about the microtask mechanism being used, and I think loading a web-font actually makes sense as a "rendering opportunity"(even though we probably want to move to the task queuing that the spec does later). LGTM

@mrobinson mrobinson force-pushed the font-ready branch 3 times, most recently from 00fa70f to 96eb265 Compare June 25, 2024 12:12
@mrobinson mrobinson enabled auto-merge June 25, 2024 12:14
@mukilan
Copy link
Member Author

mukilan commented Jun 25, 2024

@gterzian Thanks for the detailed review! We've pushed a small change to get the pending font count before we force a reflow in Window::reflow to handle a race condition where the reflow triggers new loads.

@mrobinson mrobinson added this pull request to the merge queue Jun 25, 2024
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Jun 25, 2024
@mukilan mukilan added this pull request to the merge queue Jun 26, 2024
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Jun 26, 2024
@mukilan
Copy link
Member Author

mukilan commented Jun 26, 2024

@mrobinson : The css/css-fonts/generic-family-keywords-001.html test is also flaky (on CI and locally), so I've updated the its expectations to be [FAIL, PASS]

@mukilan mukilan enabled auto-merge June 26, 2024 06:34
@mukilan mukilan added this pull request to the merge queue Jun 26, 2024
github-merge-queue bot pushed a commit that referenced this pull request Jun 26, 2024
Add a skeleton implementation of FontFaceSet interface with support
for resolving the `document.fonts.ready` Promise when the loading of
web fonts is completed.

This change exposes new failures in the web platform tests.

These were ERROR before the change because `document.fonts.ready` caused
a `ReferenceError` causing the tests to be aborted and they now FAIL:
- /css/CSS2/linebox/vertical-align-top-bottom-001.html
- /css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html
- /css/css-fonts/generic-family-keywords-001.html
- /css/css-fonts/math-script-level-and-math-style/math-script-level-004.tentative.html
- /css/css-fonts/math-script-level-and-math-style/math-script-level-002.tentative.html
- /css/css-text/text-autospace/text-autospace-ligature-001.html
- /css/css-values/calc-size/calc-size-width.tentative.html

These were TIMEOUT before the change because `document.fonts.ready` was
a ReferenceError and the tests were asynchronous (reftest-wait). These now
FAIL because the assertions are now executed after fonts are loaded:
- /css/css-fonts/matching/fixed-stretch-style-over-weight.html
- /css/css-fonts/matching/range-descriptor-reversed.html
- /css/css-fonts/matching/stretch-distance-over-weight-distance.html
- /css/css-fonts/matching/style-ranges-over-weight-direction.html
- /css/css-fonts/variations/variable-box-font.html
- /css/css-fonts/variations/variable-gpos-m2b.html
- /css/css-fonts/variations/variable-gsub.html
- /css/css-fonts/variations/variable-opsz-size-adjust.html
- /css/css-position/sticky/position-sticky-change-top.html
- /css/css-position/sticky/position-sticky-fixed-ancestor.html
- /css/css-position/sticky/position-sticky-flexbox.html
- /css/css-position/sticky/position-sticky-grid.html
- /css/css-position/sticky/position-sticky-inline.html
- /css/css-position/sticky/position-sticky-rendering.html
- /css/css-position/sticky/position-sticky-stacking-context.html
- /css/css-position/sticky/position-sticky-table-td-left.html
- /css/css-position/sticky/position-sticky-table-td-right.html
- /css/css-position/sticky/position-sticky-table-tfoot-bottom.html
- /css/css-position/sticky/position-sticky-table-th-right.html
- /css/css-position/sticky/position-sticky-table-thead-top.html
- /css/css-position/sticky/position-sticky-table-tr-bottom.html
- /css/css-position/sticky/position-sticky-table-tr-top.html
- /css/css-position/sticky/position-sticky-writing-modes.html
- /css/css-pseudo/marker-intrinsic-contribution-001.html
- /css/css-text/hyphens/hyphens-character.html

These tests now PASS due to this patch:
* FAIL -> PASS
  - /html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html
  - /html/canvas/element/text/2d.text.measure.width.empty.html
* TIMEOUT -> PASS
  - /css/css-fonts/variations/font-descriptor-range-reversed.html
  - /css/css-fonts/variations/variable-opsz.html
  - /css/css-position/sticky/position-sticky-table-th-left.html
* ERROR -> PASS
  - /css/css-fonts/generic-family-keywords-002.html
  - /css/css-fonts/generic-family-keywords-003.html
* These two tests only PASS in Layout 2020:
  - /css/CSS2/positioning/inline-static-position-001.html
  - /css/cssom-view/getBoundingClientRect-empty-inline.html

These two tests have subtests that PASS intermittenttly:
- /fetch/metadata/generated/css-font-face.sub.tentative.html
- /css/css-fonts/generic-family-keywords-001.html

These tests are new TIMEOUTS that used to FAIL because
`documents.fonts.ready` was undefined:
- /resource-timing/TAO-match.html
- /resource-timing/content-type.html
- /resource-timing/nextHopProtocol-is-tao-protected.https.html

The failure in `/resize-observer/change-layout-in-error.html` could be
due to an issue in the ResizeObserver implementation that is now exposed
with this change, but this needs more investigation.

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Jun 26, 2024
Add a skeleton implementation of FontFaceSet interface with support
for resolving the `document.fonts.ready` Promise when the loading of
web fonts is completed.

This change exposes new failures in the web platform tests.

These were ERROR before the change because `document.fonts.ready` caused
a `ReferenceError` causing the tests to be aborted and they now FAIL:
- /css/CSS2/linebox/vertical-align-top-bottom-001.html
- /css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html
- /css/css-fonts/generic-family-keywords-001.html
- /css/css-fonts/math-script-level-and-math-style/math-script-level-004.tentative.html
- /css/css-fonts/math-script-level-and-math-style/math-script-level-002.tentative.html
- /css/css-text/text-autospace/text-autospace-ligature-001.html
- /css/css-values/calc-size/calc-size-width.tentative.html

These were TIMEOUT before the change because `document.fonts.ready` was
a ReferenceError and the tests were asynchronous (reftest-wait). These now
FAIL because the assertions are now executed after fonts are loaded:
- /css/css-fonts/matching/fixed-stretch-style-over-weight.html
- /css/css-fonts/matching/range-descriptor-reversed.html
- /css/css-fonts/matching/stretch-distance-over-weight-distance.html
- /css/css-fonts/matching/style-ranges-over-weight-direction.html
- /css/css-fonts/variations/variable-box-font.html
- /css/css-fonts/variations/variable-gpos-m2b.html
- /css/css-fonts/variations/variable-gsub.html
- /css/css-fonts/variations/variable-opsz-size-adjust.html
- /css/css-position/sticky/position-sticky-change-top.html
- /css/css-position/sticky/position-sticky-fixed-ancestor.html
- /css/css-position/sticky/position-sticky-flexbox.html
- /css/css-position/sticky/position-sticky-grid.html
- /css/css-position/sticky/position-sticky-inline.html
- /css/css-position/sticky/position-sticky-rendering.html
- /css/css-position/sticky/position-sticky-stacking-context.html
- /css/css-position/sticky/position-sticky-table-td-left.html
- /css/css-position/sticky/position-sticky-table-td-right.html
- /css/css-position/sticky/position-sticky-table-tfoot-bottom.html
- /css/css-position/sticky/position-sticky-table-th-right.html
- /css/css-position/sticky/position-sticky-table-thead-top.html
- /css/css-position/sticky/position-sticky-table-tr-bottom.html
- /css/css-position/sticky/position-sticky-table-tr-top.html
- /css/css-position/sticky/position-sticky-writing-modes.html
- /css/css-pseudo/marker-intrinsic-contribution-001.html
- /css/css-text/hyphens/hyphens-character.html

These tests now PASS due to this patch:
* FAIL -> PASS
  - /html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html
  - /html/canvas/element/text/2d.text.measure.width.empty.html
* TIMEOUT -> PASS
  - /css/css-fonts/variations/font-descriptor-range-reversed.html
  - /css/css-fonts/variations/variable-opsz.html
  - /css/css-position/sticky/position-sticky-table-th-left.html
* ERROR -> PASS
  - /css/css-fonts/generic-family-keywords-002.html
  - /css/css-fonts/generic-family-keywords-003.html
* These two tests only PASS in Layout 2020:
  - /css/CSS2/positioning/inline-static-position-001.html
  - /css/cssom-view/getBoundingClientRect-empty-inline.html

These two tests have subtests that PASS intermittenttly:
- /fetch/metadata/generated/css-font-face.sub.tentative.html
- /css/css-fonts/generic-family-keywords-001.html

These tests are new TIMEOUTS that used to FAIL because
`documents.fonts.ready` was undefined:
- /resource-timing/TAO-match.html
- /resource-timing/content-type.html
- /resource-timing/nextHopProtocol-is-tao-protected.https.html

The failure in `/resize-observer/change-layout-in-error.html` could be
due to an issue in the ResizeObserver implementation that is now exposed
with this change, but this needs more investigation.

Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
@mukilan mukilan added this pull request to the merge queue Jun 26, 2024
Merged via the queue into servo:main with commit a730469 Jun 26, 2024
10 checks passed
@mukilan mukilan deleted the font-ready branch June 26, 2024 10:55
Gae24 pushed a commit to Gae24/servo that referenced this pull request Jul 1, 2024
Add a skeleton implementation of FontFaceSet interface with support
for resolving the `document.fonts.ready` Promise when the loading of
web fonts is completed.

This change exposes new failures in the web platform tests.

These were ERROR before the change because `document.fonts.ready` caused
a `ReferenceError` causing the tests to be aborted and they now FAIL:
- /css/CSS2/linebox/vertical-align-top-bottom-001.html
- /css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html
- /css/css-fonts/generic-family-keywords-001.html
- /css/css-fonts/math-script-level-and-math-style/math-script-level-004.tentative.html
- /css/css-fonts/math-script-level-and-math-style/math-script-level-002.tentative.html
- /css/css-text/text-autospace/text-autospace-ligature-001.html
- /css/css-values/calc-size/calc-size-width.tentative.html

These were TIMEOUT before the change because `document.fonts.ready` was
a ReferenceError and the tests were asynchronous (reftest-wait). These now
FAIL because the assertions are now executed after fonts are loaded:
- /css/css-fonts/matching/fixed-stretch-style-over-weight.html
- /css/css-fonts/matching/range-descriptor-reversed.html
- /css/css-fonts/matching/stretch-distance-over-weight-distance.html
- /css/css-fonts/matching/style-ranges-over-weight-direction.html
- /css/css-fonts/variations/variable-box-font.html
- /css/css-fonts/variations/variable-gpos-m2b.html
- /css/css-fonts/variations/variable-gsub.html
- /css/css-fonts/variations/variable-opsz-size-adjust.html
- /css/css-position/sticky/position-sticky-change-top.html
- /css/css-position/sticky/position-sticky-fixed-ancestor.html
- /css/css-position/sticky/position-sticky-flexbox.html
- /css/css-position/sticky/position-sticky-grid.html
- /css/css-position/sticky/position-sticky-inline.html
- /css/css-position/sticky/position-sticky-rendering.html
- /css/css-position/sticky/position-sticky-stacking-context.html
- /css/css-position/sticky/position-sticky-table-td-left.html
- /css/css-position/sticky/position-sticky-table-td-right.html
- /css/css-position/sticky/position-sticky-table-tfoot-bottom.html
- /css/css-position/sticky/position-sticky-table-th-right.html
- /css/css-position/sticky/position-sticky-table-thead-top.html
- /css/css-position/sticky/position-sticky-table-tr-bottom.html
- /css/css-position/sticky/position-sticky-table-tr-top.html
- /css/css-position/sticky/position-sticky-writing-modes.html
- /css/css-pseudo/marker-intrinsic-contribution-001.html
- /css/css-text/hyphens/hyphens-character.html

These tests now PASS due to this patch:
* FAIL -> PASS
  - /html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html
  - /html/canvas/element/text/2d.text.measure.width.empty.html
* TIMEOUT -> PASS
  - /css/css-fonts/variations/font-descriptor-range-reversed.html
  - /css/css-fonts/variations/variable-opsz.html
  - /css/css-position/sticky/position-sticky-table-th-left.html
* ERROR -> PASS
  - /css/css-fonts/generic-family-keywords-002.html
  - /css/css-fonts/generic-family-keywords-003.html
* These two tests only PASS in Layout 2020:
  - /css/CSS2/positioning/inline-static-position-001.html
  - /css/cssom-view/getBoundingClientRect-empty-inline.html

These two tests have subtests that PASS intermittenttly:
- /fetch/metadata/generated/css-font-face.sub.tentative.html
- /css/css-fonts/generic-family-keywords-001.html

These tests are new TIMEOUTS that used to FAIL because
`documents.fonts.ready` was undefined:
- /resource-timing/TAO-match.html
- /resource-timing/content-type.html
- /resource-timing/nextHopProtocol-is-tao-protected.https.html

The failure in `/resize-observer/change-layout-in-error.html` could be
due to an issue in the ResizeObserver implementation that is now exposed
with this change, but this needs more investigation.

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
gterzian added a commit that referenced this pull request Jul 22, 2024
* Proper GPUDevice cleanup (#32520)

* Make device cleanup right

* Use weakref for GPUDevice in globalscope

* No need to destroy device on drop

* DeviceReason early return

* make remove_gpu_device to be the only way to remove device

* crown: remove references to workspace manifest (#32567)

The way our shell.nix works requires crown's Cargo.toml to be
self-contained so that it can be built as a nix derivation in
isolation.

Fixes #32552.

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>

* ohos: Add fallback font for serif (#32555)

The fallback behavior seems to have changed recently.
Now we need to explicitly add a fallback for `serif`
otherwise no font is selected.

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* add codeowners file, set gterzian as owner for components/script (#32568)

* config: fix panic in PrefValue to [f64; 4] conversion (#32571)

The `Iterator::all` method consumes the input iterator `f` so when
we reuse `f` in `f.flatten().collect()` it yields an empty Vector
in the case where all the elements are successfully converted using
try_into(). This causes out of bounds access when indexing into
the resulting Vector to extract the individual components.

Fixes #32570.

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>

* android: Remove serde-json build-dependency (#32573)

There is no need to add `serde-json` as a
build-dependency (which causes serde to be built
twice when cross-compiling - once for host and once
for the target)

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>

* layout: Add very basic support for showing text in input boxes (#32365)

This only paints text in input fields. Selection and cursor are still
not painted.

In addition to adding this feature, the change also updates the
user-agent.css with the latest from the HTML specification. Extra
padding and extraneous settings (such as a bogus line-height and
min-height) are also removed from servo.css. This leads to some new
passes.

There are some new passes, this introduces failures as inserting text
reveals issues that were hidden before. Notably:

- failures in `/html/editing/editing-0/spelling-and-grammar-checking/`:
  We do not support spell-checking.
- Most of the rest of the new failures are missing features of input
  boxes that are also missing in legacy layout.

* layout: Simplify `Contents` a little (#32487)

Instead of duplicating some of `NonReplacedContents` in `Contents`,
divide it into either replaced and non-replaced content, since this is
how the layout system processes `Contents` always. In addition, stop
using `TryInto` to match replaced or non-replaced contents, as it is
quite confusing to handle an `Err` as a success case.

* use app unit in box_fragement (#32349)

* DevTools: Implement watcher actor (#32509)

* feat: base for watcher

* feat: some more watcher tests

* feat: implement getWatcher

* refactor: clean up getWatcher

* feat: implement watchTargets

* feat: implement watchResources

* feat: very messy watchTargets fix

* refactor: clean browsing context

* feat: target configuration

* refactor: start cleanup

* refactor: more doc coments

* refactor: clean browsing context

* build(deps): bump displaydoc from 0.2.4 to 0.2.5 (#32578)

Bumps [displaydoc](https://github.com/yaahc/displaydoc) from 0.2.4 to 0.2.5.
- [Changelog](https://github.com/yaahc/displaydoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yaahc/displaydoc/commits/v0.2.5)

---
updated-dependencies:
- dependency-name: displaydoc
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump proc-macro2 from 1.0.85 to 1.0.86 (#32577)

Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.85 to 1.0.86.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.85...1.0.86)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump syn from 2.0.66 to 2.0.67 (#32579)

Bumps [syn](https://github.com/dtolnay/syn) from 2.0.66 to 2.0.67.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.66...2.0.67)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update web-platform-tests to revision b'f46bf6aa167e2838a8b93501a1a998ffde90d879' (#32581)

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>

* Add suppression comments + Suppress lazy_static (#32584)

Co-authored-by: Jonas Zeunert <jonas@zeunert.org>

* Make `crown` optional (#32494)

* Make `crown` optional

Add the optional `--use-crown` flag to mach

* --use-crown for all platforms in CI

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Add documentation for `--use-crown`

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Update python/servo/command_base.py

Co-authored-by: Mukilan Thiyagarajan <mukilanthiagarajan@gmail.com>
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>

* Raise Error if CARGO_BUILD_RUSTC conflicts with --use-crown

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>

* add dummy RUSTFLAG to trigger re-checking

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>

---------

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Co-authored-by: Mukilan Thiyagarajan <mukilanthiagarajan@gmail.com>

* android: Use location_bar_input_to_url instead of re-implementing (#32586)

We can use the same function as the desktop version

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* android: Rename the Android app to reflect servo.org ownership and `servoshell` (#32554)

Signed-off-by: Martin Robinson <mrobinson@igalia.com>

* mach: Expose a `--skip-static-analysis` to `mach boostrap` (#32587)

This should speed up runners which just need to run the WPT tests.

Fixes #32582.

* build(deps): bump libloading from 0.8.3 to 0.8.4 (#32590)

Bumps [libloading](https://github.com/nagisa/rust_libloading) from 0.8.3 to 0.8.4.
- [Commits](https://github.com/nagisa/rust_libloading/compare/0.8.3...0.8.4)

---
updated-dependencies:
- dependency-name: libloading
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump syn from 2.0.67 to 2.0.68 (#32588)

Bumps [syn](https://github.com/dtolnay/syn) from 2.0.67 to 2.0.68.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.67...2.0.68)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Upgrade stylo to 2024-05-31 (#32474)

* Upgrade stylo to 2024-05-31

* Fixup for https://phabricator.services.mozilla.com/D211731

* Fixup for https://phabricator.services.mozilla.com/D207779

* Fixup for https://phabricator.services.mozilla.com/D207781

* Update test expectations

* build(deps): bump lazy_static from 1.4.0 to 1.5.0 (#32591)

Bumps [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/rust-lang-nursery/lazy-static.rs/releases)
- [Commits](https://github.com/rust-lang-nursery/lazy-static.rs/compare/1.4.0...1.5.0)

---
updated-dependencies:
- dependency-name: lazy_static
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* clippy: fix some warnings in desktop and some components (#32583)

* clippy: fix some warnings in ports/servoshell/desktop

Signed-off-by: ItsSunnyMonster <100400733+ItsSunnyMonster@users.noreply.github.com>

* style: fix formatting

Signed-off-by: ItsSunnyMonster <100400733+ItsSunnyMonster@users.noreply.github.com>

* clippy: fix warnings in bluetooth, devtools and servo components

Signed-off-by: ItsSunnyMonster <100400733+ItsSunnyMonster@users.noreply.github.com>

* clippy: remove comments

Signed-off-by: ItsSunnyMonster <100400733+ItsSunnyMonster@users.noreply.github.com>

---------

Signed-off-by: ItsSunnyMonster <100400733+ItsSunnyMonster@users.noreply.github.com>

* Switch flex layout to app units (#32599)

* build(deps): bump uuid from 1.8.0 to 1.9.0 (#32589)

Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.8.0...1.9.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Clean up some unused dependencies (#32600)

* build(deps): bump uuid from 1.9.0 to 1.9.1 (#32608)

Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.9.0 to 1.9.1.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.9.0...1.9.1)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump serde_bytes from 0.11.14 to 0.11.15 (#32610)

Bumps [serde_bytes](https://github.com/serde-rs/bytes) from 0.11.14 to 0.11.15.
- [Release notes](https://github.com/serde-rs/bytes/releases)
- [Commits](https://github.com/serde-rs/bytes/compare/0.11.14...0.11.15)

---
updated-dependencies:
- dependency-name: serde_bytes
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump serde_json from 1.0.117 to 1.0.118 (#32609)

Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.117 to 1.0.118.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.117...v1.0.118)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump icu_properties from 1.5.0 to 1.5.1 (#32612)

Bumps [icu_properties](https://github.com/unicode-org/icu4x) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

---
updated-dependencies:
- dependency-name: icu_properties
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump zerovec from 0.10.2 to 0.10.3 (#32614)

Bumps [zerovec](https://github.com/unicode-org/icu4x) from 0.10.2 to 0.10.3.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

---
updated-dependencies:
- dependency-name: zerovec
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump zerovec-derive from 0.10.2 to 0.10.3 (#32611)

Bumps [zerovec-derive](https://github.com/unicode-org/icu4x) from 0.10.2 to 0.10.3.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

---
updated-dependencies:
- dependency-name: zerovec-derive
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump bitflags from 2.5.0 to 2.6.0 (#32613)

Bumps [bitflags](https://github.com/bitflags/bitflags) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/2.5.0...2.6.0)

---
updated-dependencies:
- dependency-name: bitflags
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add a directory listing feature for `file` URLs (#32580)

Signed-off-by: Bobulous <Bobulous@users.noreply.github.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Bobulous <Bobulous@users.noreply.github.com>

* script: Implement the `FontFaceSet` DOM API (#32576)

Add a skeleton implementation of FontFaceSet interface with support
for resolving the `document.fonts.ready` Promise when the loading of
web fonts is completed.

This change exposes new failures in the web platform tests.

These were ERROR before the change because `document.fonts.ready` caused
a `ReferenceError` causing the tests to be aborted and they now FAIL:
- /css/CSS2/linebox/vertical-align-top-bottom-001.html
- /css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html
- /css/css-fonts/generic-family-keywords-001.html
- /css/css-fonts/math-script-level-and-math-style/math-script-level-004.tentative.html
- /css/css-fonts/math-script-level-and-math-style/math-script-level-002.tentative.html
- /css/css-text/text-autospace/text-autospace-ligature-001.html
- /css/css-values/calc-size/calc-size-width.tentative.html

These were TIMEOUT before the change because `document.fonts.ready` was
a ReferenceError and the tests were asynchronous (reftest-wait). These now
FAIL because the assertions are now executed after fonts are loaded:
- /css/css-fonts/matching/fixed-stretch-style-over-weight.html
- /css/css-fonts/matching/range-descriptor-reversed.html
- /css/css-fonts/matching/stretch-distance-over-weight-distance.html
- /css/css-fonts/matching/style-ranges-over-weight-direction.html
- /css/css-fonts/variations/variable-box-font.html
- /css/css-fonts/variations/variable-gpos-m2b.html
- /css/css-fonts/variations/variable-gsub.html
- /css/css-fonts/variations/variable-opsz-size-adjust.html
- /css/css-position/sticky/position-sticky-change-top.html
- /css/css-position/sticky/position-sticky-fixed-ancestor.html
- /css/css-position/sticky/position-sticky-flexbox.html
- /css/css-position/sticky/position-sticky-grid.html
- /css/css-position/sticky/position-sticky-inline.html
- /css/css-position/sticky/position-sticky-rendering.html
- /css/css-position/sticky/position-sticky-stacking-context.html
- /css/css-position/sticky/position-sticky-table-td-left.html
- /css/css-position/sticky/position-sticky-table-td-right.html
- /css/css-position/sticky/position-sticky-table-tfoot-bottom.html
- /css/css-position/sticky/position-sticky-table-th-right.html
- /css/css-position/sticky/position-sticky-table-thead-top.html
- /css/css-position/sticky/position-sticky-table-tr-bottom.html
- /css/css-position/sticky/position-sticky-table-tr-top.html
- /css/css-position/sticky/position-sticky-writing-modes.html
- /css/css-pseudo/marker-intrinsic-contribution-001.html
- /css/css-text/hyphens/hyphens-character.html

These tests now PASS due to this patch:
* FAIL -> PASS
  - /html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html
  - /html/canvas/element/text/2d.text.measure.width.empty.html
* TIMEOUT -> PASS
  - /css/css-fonts/variations/font-descriptor-range-reversed.html
  - /css/css-fonts/variations/variable-opsz.html
  - /css/css-position/sticky/position-sticky-table-th-left.html
* ERROR -> PASS
  - /css/css-fonts/generic-family-keywords-002.html
  - /css/css-fonts/generic-family-keywords-003.html
* These two tests only PASS in Layout 2020:
  - /css/CSS2/positioning/inline-static-position-001.html
  - /css/cssom-view/getBoundingClientRect-empty-inline.html

These two tests have subtests that PASS intermittenttly:
- /fetch/metadata/generated/css-font-face.sub.tentative.html
- /css/css-fonts/generic-family-keywords-001.html

These tests are new TIMEOUTS that used to FAIL because
`documents.fonts.ready` was undefined:
- /resource-timing/TAO-match.html
- /resource-timing/content-type.html
- /resource-timing/nextHopProtocol-is-tao-protected.https.html

The failure in `/resize-observer/change-layout-in-error.html` could be
due to an issue in the ResizeObserver implementation that is now exposed
with this change, but this needs more investigation.

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>

* Switch replaced layout to app units (#32625)

* layout: Enable parallel layout for tables (#32477)

This simply wraps row and column-based layout of table sells in a
`par_iter()` unconditionally enabling parallel layout for tables. In the
future we can choose to adjust the conditions under which layout is done
in parallel.

* build(deps): bump the gstreamer-related group with 2 updates (#32626)

Bumps the gstreamer-related group with 2 updates: [glib](https://github.com/gtk-rs/gtk-rs-core) and [glib-macros](https://github.com/gtk-rs/gtk-rs-core).


Updates `glib` from 0.19.8 to 0.19.9
- [Release notes](https://github.com/gtk-rs/gtk-rs-core/releases)
- [Changelog](https://github.com/gtk-rs/gtk-rs-core/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gtk-rs/gtk-rs-core/compare/0.19.8...0.19.9)

Updates `glib-macros` from 0.19.8 to 0.19.9
- [Release notes](https://github.com/gtk-rs/gtk-rs-core/releases)
- [Changelog](https://github.com/gtk-rs/gtk-rs-core/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gtk-rs/gtk-rs-core/compare/0.19.8...0.19.9)

---
updated-dependencies:
- dependency-name: glib
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gstreamer-related
- dependency-name: glib-macros
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: gstreamer-related
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* html: Parse a comma-separated list of faces in the `<font>` tag (#32622)

This change parses a comma-separated list of faces in the `<font>` tag
and also moves the parsing code from `stylo` to Servo. This means that
the servo-specific code can be removed from stylo decreasing the
differences between Gecko and Servo's version of `stylo`.

* build(deps): bump either from 1.12.0 to 1.13.0 (#32627)

Bumps [either](https://github.com/rayon-rs/either) from 1.12.0 to 1.13.0.
- [Commits](https://github.com/rayon-rs/either/compare/1.12.0...1.13.0)

---
updated-dependencies:
- dependency-name: either
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Avoid Esc shortcut to close Servo (#32603)

* Avoid Esc shortcut to close Servo

Keep Esc shortcut to leave fullscreen, but avoid to close Servo
(as this is not common in other similar apps,
and can be shortcut used in some web apps for other things).

* Send Esc to the page

* CONTRIBUTING: add AI contributions policy (#32287)

* CONTRIBUTING: add AI contributions policy

Co-authored-by: Martin Robinson <mrobinson@igalia.com>

* Be more explicit about how the policy may be revised

* Reword point about copyright issues

* Fix missing word in ethical issues

---------

Co-authored-by: Martin Robinson <mrobinson@igalia.com>

* use au in AtomicLineItem (#32630)

* webgpu: Update wgpu and revamp computepass (#32575)

* Do not wait on drop, but rather wake poller thread

* Update wgpu and render stuff

* Set some good expectations

* Update wgpu again

* handle IPC error as warning

* More good expectations

* Some more expectations

CTS does not match the spec: https://github.com/gpuweb/cts/issues/3806

* This expectations are due to other changes in servo

also happening on main

* Explain error_command_encoders and remove RefCell around it

* fixup

* store validness of passes

* More good expectations

* More docs

* this assert is wrong

* This is even more right per CTS/spec

Only Command encoder state errors are allowed here, but wgpu does not exposes them.

* More good expectations

* One bad expectation

* Fix my english

* layout: Make `geom.rs` logical geoemetry types more ergonomic (#32633)

Make using the logical geometry types more ergonomic by having them all
implement `Copy` (at most 4 64-bit numbers), similar to what `euclid`
does. In addition add an implementation of `Neg` for `LogicalVec` and
`LogicalSides` as it will be used in upcoming table implementation code.

* Replace null-byte terminated string literals with C-string literals (#32631)

Signed-off-by: Mu Xianming <mu.xianming@lmwn.com>
Co-authored-by: Mu Xianming <mu.xianming@lmwn.com>

* Add OpenHarmony support to servoshell (#32594)

* Generate EGL bindings for ohos

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Adjust servoshell `bin` error message for android/ohos

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* ohos: disable WebGL

offscreen buffers are not implemented yet on ohos.

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Add OpenHarmony support to servoshell

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Share ResourceReaderInstance

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Share android/ohos HostTrait

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Share servo glue

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>

* Pass Init options from ArkTS to Servo

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* f rebase ResourceReaderMethods

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* fixup! Share ResourceReaderInstance

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Fix typo

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Update Cargo.lock

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* ohos: Move WebGL check to webgl thread

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Remove commented code

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Remove commented and duplicate / unused code

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

---------

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>

* build(deps): bump ab_glyph from 0.2.26 to 0.2.27 (#32637)

Bumps [ab_glyph](https://github.com/alexheretic/ab-glyph) from 0.2.26 to 0.2.27.
- [Release notes](https://github.com/alexheretic/ab-glyph/releases)
- [Commits](https://github.com/alexheretic/ab-glyph/compare/ab-glyph-0.2.26...ab-glyph-0.2.27)

---
updated-dependencies:
- dependency-name: ab_glyph
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump zerovec from 0.10.3 to 0.10.4 (#32639)

Bumps [zerovec](https://github.com/unicode-org/icu4x) from 0.10.3 to 0.10.4.
- [Release notes](https://github.com/unicode-org/icu4x/releases)
- [Changelog](https://github.com/unicode-org/icu4x/blob/main/CHANGELOG.md)
- [Commits](https://github.com/unicode-org/icu4x/commits)

---
updated-dependencies:
- dependency-name: zerovec
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump log from 0.4.21 to 0.4.22 (#32638)

Bumps [log](https://github.com/rust-lang/log) from 0.4.21 to 0.4.22.
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.21...0.4.22)

---
updated-dependencies:
- dependency-name: log
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Sync WPT with upstream (30-06-2024) (#32649)

* Update web-platform-tests to revision b'639fa536940371f833fbbcc10104e20f435f9777'

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>

* Delete tests/wpt/meta/css/css-values/cap-invalidation.html.ini

* Update css-font-face.https.sub.tentative.html.ini

---------

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
Co-authored-by: Samson <16504129+sagudev@users.noreply.github.com>

* android: fix application name used in ./mach run (#32652)

This patch also switches the code to python format strings
so that the application name can be interpolated where
needed.

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>

* build(deps): bump object from 0.36.0 to 0.36.1 (#32658)

Bumps [object](https://github.com/gimli-rs/object) from 0.36.0 to 0.36.1.
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.36.0...0.36.1)

---
updated-dependencies:
- dependency-name: object
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump serde_json from 1.0.118 to 1.0.119 (#32661)

Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.118 to 1.0.119.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.118...v1.0.119)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump mime_guess from 2.0.4 to 2.0.5 (#32660)

* build(deps): bump mime_guess from 2.0.4 to 2.0.5

Bumps [mime_guess](https://github.com/abonander/mime_guess) from 2.0.4 to 2.0.5.
- [Commits](https://github.com/abonander/mime_guess/commits)

---
updated-dependencies:
- dependency-name: mime_guess
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Remove libloading from servo-tidy.toml

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alex Touchet <alextouchet@outlook.com>

* mark test/wpt as vendored in .gitattributes (#32663)

although expectation and _mozilla test are ours

* Add production-stripped cargo profile (#32651)

* Add production-stripped cargo profile

Stripping the binary significantly reduces the size
significantly (in my tests to about 1/3 of the original size).
Enabling lto and setting `codegen-units = 1` allows further size
optimizations at the cost of increased compile-time.

Probably not everyone wants a stripped binary, since it makes
backtraces less useful.

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Move lto and cgu option to production profile

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

---------

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* webgpu: Implement ShaderCompilationInfo (#32642)

* ShaderCompilationInfo

* expectations

* Handle CompilationInfo promise in GPUShaderModule

* Fix my english

* fix clippy warning (#32667)

* build(deps): bump serde_json from 1.0.119 to 1.0.120 (#32668)

Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.119 to 1.0.120.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.119...v1.0.120)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump idna from 1.0.1 to 1.0.2 (#32669)

Bumps [idna](https://github.com/servo/rust-url) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/idna-v1.0.1...idna-v1.0.2)

---
updated-dependencies:
- dependency-name: idna
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* use au in TextFragment (#32653)

* layout: Allow rendering LineItems independent of inline box (#32666)

Refactor inline layout to allow rendering line items in the second stage
to be rendered in any order, independent of their parent inline box.
This will allow line items to be reordered, effectively allowing the
splitting of inline boxes, for the purposes of BiDi and any other inline
reordering feature.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Rakhi Sharma <atbrakhi@igalia.com>

* build(deps): bump zerocopy from 0.7.34 to 0.7.35 (#32678)

Bumps [zerocopy](https://github.com/google/zerocopy) from 0.7.34 to 0.7.35.
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/commits)

---
updated-dependencies:
- dependency-name: zerocopy
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump sctk-adwaita from 0.8.1 to 0.8.3 (#32679)

Bumps [sctk-adwaita](https://github.com/PolyMeilex/sctk-adwaita) from 0.8.1 to 0.8.3.
- [Release notes](https://github.com/PolyMeilex/sctk-adwaita/releases)
- [Changelog](https://github.com/PolyMeilex/sctk-adwaita/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PolyMeilex/sctk-adwaita/commits)

---
updated-dependencies:
- dependency-name: sctk-adwaita
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* layout: Add support for table captions (#32657)

This adds initial support for table captions. To do this, the idea of
the table wrapper becomes a bit more concrete. Even so, the wrapper is
still reponsible for allocating space for the grid's border and padding,
as those properties are specified on the wrapper and not grid in CSS.

In order to account for this weirdness of HTML/CSS captions and grid are
now laid out and placed with a negative offset in the table wrapper
content rect.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>

* webgpu: Remove mutex around Identities (#32682)

* servoshell: Update all egui dependencies and group them for dependabot (#32683)

This updates egui, making the necessary changes to maintain behavior. In
addition, it groups dependencies so that they are updated in a single PR
by dependabot, avoiding manual work.

* build(deps): bump windows_i686_gnullvm from 0.52.5 to 0.52.6 (#32689)

Bumps [windows_i686_gnullvm](https://github.com/microsoft/windows-rs) from 0.52.5 to 0.52.6.
- [Release notes](https://github.com/microsoft/windows-rs/releases)
- [Commits](https://github.com/microsoft/windows-rs/commits)

---
updated-dependencies:
- dependency-name: windows_i686_gnullvm
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump wayland-scanner from 0.31.2 to 0.31.3 (#32690)

Bumps [wayland-scanner](https://github.com/smithay/wayland-rs) from 0.31.2 to 0.31.3.
- [Release notes](https://github.com/smithay/wayland-rs/releases)
- [Changelog](https://github.com/Smithay/wayland-rs/blob/master/historical_changelog.md)
- [Commits](https://github.com/smithay/wayland-rs/commits)

---
updated-dependencies:
- dependency-name: wayland-scanner
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump wayland-client from 0.31.3 to 0.31.4 (#32691)

Bumps [wayland-client](https://github.com/smithay/wayland-rs) from 0.31.3 to 0.31.4.
- [Release notes](https://github.com/smithay/wayland-rs/releases)
- [Changelog](https://github.com/Smithay/wayland-rs/blob/master/historical_changelog.md)
- [Commits](https://github.com/smithay/wayland-rs/commits)

---
updated-dependencies:
- dependency-name: wayland-client
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Updated all kill_*_id functions defined in indentityhub.rs to free_*_id naming format for issue 32685 (#32688)

Signed-off-by: newmoneybigbucks <newmoneybigbucks@protonmail.com>

* DevTools: Add parser tool (#32684)

* feat: add devtools parser tool

* feat: improve documentation

* Make task_info as `macos` specific (#32693)

rust-analyzer breaks on Linux (when invoked without mach), because it
tries to compile the c files, and doesn't find `mach_init.h`
Since we don't need task_info on non-mac platforms, just make the
crate empty on other platforms.

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* clippy: Fix a bunch of warnings in `script` (#32680)

This is just a portion of the errors that are remaining to be fixed.

* webgpu: Update wgpu and revamp RenderPass (#32665)

* Update wgpu and revamp RenderPass

* Set good expectations

* Set one bad expectation

* send_render_command

* small fixups

* docs

* doc

* Put RenderPass inside PassState

* Use Pass enum for ComputePass too

* fix docs

* clippy: Fix warnings in `shared` and `config`, `fonts`, `layout`, and `layout_2020` components (#32674)

* build(deps): bump wayland-cursor from 0.31.3 to 0.31.4 (#32701)

Bumps [wayland-cursor](https://github.com/smithay/wayland-rs) from 0.31.3 to 0.31.4.
- [Release notes](https://github.com/smithay/wayland-rs/releases)
- [Changelog](https://github.com/Smithay/wayland-rs/blob/master/historical_changelog.md)
- [Commits](https://github.com/smithay/wayland-rs/commits)

---
updated-dependencies:
- dependency-name: wayland-cursor
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* layout_2013: Remove code preventing writing mode assertion failures (#32698)

It's actually kind of useful that this code crashes, as it points out a
problem. Additionally, we aren't going to be maintaining Layout 2013 any
longer so it is very unlikely that these bugs will ever be fixed. This
allows us to reduce our diff with upstream Stylo.

Closes #30577.

* fonts: Stop using `Stylesheet::effective_font_face_rules` (#32699)

This function doesn't exist in upstream Stylo and is fairly unecessary.
Removing it will help reduce the difference between downstream Stylo and
upstream Stylo.

* build(deps): bump ab_glyph from 0.2.27 to 0.2.28 (#32709)

Bumps [ab_glyph](https://github.com/alexheretic/ab-glyph) from 0.2.27 to 0.2.28.
- [Release notes](https://github.com/alexheretic/ab-glyph/releases)
- [Commits](https://github.com/alexheretic/ab-glyph/compare/ab-glyph-0.2.27...ab-glyph-0.2.28)

---
updated-dependencies:
- dependency-name: ab_glyph
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump emath from 0.28.0 to 0.28.1 (#32710)

Bumps [emath](https://github.com/emilk/egui) from 0.28.0 to 0.28.1.
- [Release notes](https://github.com/emilk/egui/releases)
- [Changelog](https://github.com/emilk/egui/blob/master/CHANGELOG.md)
- [Commits](https://github.com/emilk/egui/compare/0.28.0...0.28.1)

---
updated-dependencies:
- dependency-name: emath
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump the egui-related group with 2 updates (#32708)

Bumps the egui-related group with 2 updates: [egui](https://github.com/emilk/egui) and [egui-winit](https://github.com/emilk/egui).


Updates `egui` from 0.28.0 to 0.28.1
- [Release notes](https://github.com/emilk/egui/releases)
- [Changelog](https://github.com/emilk/egui/blob/master/CHANGELOG.md)
- [Commits](https://github.com/emilk/egui/compare/0.28.0...0.28.1)

Updates `egui-winit` from 0.28.0 to 0.28.1
- [Release notes](https://github.com/emilk/egui/releases)
- [Changelog](https://github.com/emilk/egui/blob/master/CHANGELOG.md)
- [Commits](https://github.com/emilk/egui/compare/0.28.0...0.28.1)

---
updated-dependencies:
- dependency-name: egui
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: egui-related
- dependency-name: egui-winit
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: egui-related
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add more crates to egui Dependabot group (#32711)

* build(deps): bump egui_glow in the egui-related group (#32712)

Bumps the egui-related group with 1 update: [egui_glow](https://github.com/emilk/egui).


Updates `egui_glow` from 0.28.0 to 0.28.1
- [Release notes](https://github.com/emilk/egui/releases)
- [Changelog](https://github.com/emilk/egui/blob/master/CHANGELOG.md)
- [Commits](https://github.com/emilk/egui/compare/0.28.0...0.28.1)

---
updated-dependencies:
- dependency-name: egui_glow
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: egui-related
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* script: Impl cloning of JSPrincipals (#32706)

* Impl cloning of JSPrincipals

* bincode as workspace dependency

* Update mozjs and cc

* Replace null-byte terminated string literals with C-string literals (#32716)

* simple conversion from byte string to c-string

Signed-off-by: Bum Kim <bumcrystlbum@gmail.com>

* convert byte strings to c-strings to c_char ptr

Signed-off-by: Bum Kim <bumcrystlbum@gmail.com>

---------

Signed-off-by: Bum Kim <bumcrystlbum@gmail.com>

* Update web-platform-tests to revision b'4e3b5de2eb8218cf18a1674618994efeb96e2cc0' (#32717)

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>

* Add customElements.getName (#32715)

* Add customElements.getName

* rebaseline

* Set compositor's cursor_pos properly (#32718)

* android: sign release APK with a custom key. (#32721)

This PR adds support for signing all APKs we produce on the CI
with a custom signing key. Currently the logic falls back to
the debug key (which is generated by AGP and not persistent) if
the environment variable for the keystore is not set. This allows
local developer builds to work without requiring a key store.
Once #32720 is resolved, we could sign just the production builds
and remove the conditional logic.

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>

* readme: Clarify that `rust` and `cargo` must be in your path after rustup runs (#32722)

Fixes #32670.

* ci: fix security issue in try job workflow (#32724)

This [issue][1] was reported by GitHub user @RedYetiDev via the Security
Advisory reporting mechanism on GitHub. The fix is also based on their
proposed solution.

The issue is that `refs/pull/{pr_number}/head` points to the latest
commit of a PR and so it could be different than the commit that was
reviewed when the try label was applied. The fix is to use the exact commit
sha at the point when the try job is triggered, which is available in
the `github` context as  `github.event.pull_request.head.sha`.

[1]: https://github.com/servo/servo/security/advisories/GHSA-fxqr-xgh8-3577

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Aviv Keller <38299977+RedYetiDev@users.noreply.github.com>

* DevTools: Replace camel case variable names (#32726)

* refactor: rename to snake case

* refactor: more renaming

* chore: format

* chore: clean

* layout: Improve layout of table captions (#32695)

- Instead of treating captions as a `BlockFormattingContext`, treat it as
  a `NonReplacedFormattingContext`, which allows reusing flow layout for
  captions -- fixing some issues with sizing.
- Pass in the proper size of the containing block when laying out,
  fixing margin calculation.
- Follow the unspecified rules about how various size properties on
  captions affect their size.
- Improve linebreaking around atomics, which is tested by
  caption-related tests. This fixes intrinsic size calculation regarding
  soft wrap opportunities around atomic and also makes the code making
  these actual soft wrap opportunities a bit better.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>

* android/ohos: fonts: Ignore ascii case when searching for font family (#32725)

The input for this function commonly comes from a `LowercaseString`,
while our actual font family name has cases.
Since font family lookup should be case-neutral, we do a compare
ignoring the ascii case.
I'm not too familiar with the CSS standard so I'm not 100% sure
if this is sufficient, or if we need to use a different method
to compare strings for arbitrary non-ascii font names.

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Remove unused ToWebRender implementation (#32729)

* Avoid unnecessary clones for URLs (#32694)

* fonts: Add support for generic font families and font size configuration (#32673)

This adds support for generic font families in Servo and allows for
configuration of them as well as their default font sizes. One
interesting fix here is that now monospace default to 13px, like it does
in other browsers.

In addition to that, this exposes a new interface in Stylo which allows
setting a default style. This is quite useful for fonts, but also for
other kinds of default style settings -- like text zoom.

Fixes #8371.
Fixes #14773.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>

* build(deps): bump gilrs from 0.10.7 to 0.10.8 (#32734)

Bumps [gilrs](https://gitlab.com/gilrs-project/gilrs) from 0.10.7 to 0.10.8.
- [Commits](https://gitlab.com/gilrs-project/gilrs/compare/v0.10.7...v0.10.8)

---
updated-dependencies:
- dependency-name: gilrs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump serde from 1.0.203 to 1.0.204 (#32735)

Bumps [serde](https://github.com/serde-rs/serde) from 1.0.203 to 1.0.204.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.203...v1.0.204)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump syn from 2.0.68 to 2.0.69 (#32738)

Bumps [syn](https://github.com/dtolnay/syn) from 2.0.68 to 2.0.69.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.68...2.0.69)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump cc from 1.0.104 to 1.0.106 (#32739)

Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.104 to 1.0.106.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.0.104...cc-v1.0.106)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump gilrs-core from 0.5.12 to 0.5.13 (#32733)

Bumps [gilrs-core](https://gitlab.com/gilrs-project/gilrs) from 0.5.12 to 0.5.13.
- [Commits](https://gitlab.com/gilrs-project/gilrs/compare/gilrs-core-v0.5.12...gilrs-core-v0.5.13)

---
updated-dependencies:
- dependency-name: gilrs-core
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump clipboard-win from 5.3.1 to 5.4.0 (#32736)

Bumps [clipboard-win](https://github.com/DoumanAsh/clipboard-win) from 5.3.1 to 5.4.0.
- [Commits](https://github.com/DoumanAsh/clipboard-win/commits)

---
updated-dependencies:
- dependency-name: clipboard-win
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump target-lexicon from 0.12.14 to 0.12.15 (#32737)

Bumps [target-lexicon](https://github.com/bytecodealliance/target-lexicon) from 0.12.14 to 0.12.15.
- [Commits](https://github.com/bytecodealliance/target-lexicon/compare/v0.12.14...v0.12.15)

---
updated-dependencies:
- dependency-name: target-lexicon
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix more clippy (#32740)

* Remove media element state changes triggered by network responses (#32643)

* Do not change media element ready state when network response is complete.

* Do not fire multiple error events for the same media content.

* Inform media backend when media response is complete.

* Continue delaying the load event when a complete media response is received.

* Only mark a media response as complete when the response is the active one.

* Update expectations for imagebitmap tests using video element.

* Update fetch ORB video test expectations.

* Update media CSS selector test expectation for non-implemented feature.

* Update expectations for media element tests that now work.

* Updat expected result for failing reftest.

* Update expected failure for test that loads an audio file in a video element.

* Update media test expectation for unimplemented track feature.

* Do not process media element ready state changes that are unchanged.

* Reset media element ready state to Current when playback finishes.

* Set media element ready state to Enough when appropriate player event is received.

* Update test expectations.

* Update in-tree docs to point to the new book (#32743)

* Update in-tree docs to point to the new book

* Revive build setup section in README as quickstart guide

* Apply feedback about titles

* DevTools: Display console messages and errors (#32727)

* feat: add streams to browsing context

* feat: console now works!

* feat: order console messages

* feat: add streams to new browsing contexts

* fix: apply suggestions

Co-authored-by: Martin Robinson <mrobinson@igalia.com>

---------

Co-authored-by: Martin Robinson <mrobinson@igalia.com>

* use au in inline (#32728)

Signed-off-by: atbrakhi <atbrakhi@igalia.com>

* build(deps): bump uuid from 1.9.1 to 1.10.0 (#32751)

Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.9.1 to 1.10.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.9.1...1.10.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Remove unused  implementation (#32754)

Signed-off-by: atbrakhi <atbrakhi@igalia.com>

* build(deps): bump darling from 0.20.9 to 0.20.10 (#32747)

Bumps [darling](https://github.com/TedDriggs/darling) from 0.20.9 to 0.20.10.
- [Release notes](https://github.com/TedDriggs/darling/releases)
- [Changelog](https://github.com/TedDriggs/darling/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TedDriggs/darling/commits/v0.20.10)

---
updated-dependencies:
- dependency-name: darling
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump hyper from 0.14.29 to 0.14.30 (#32750)

Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.29 to 0.14.30.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/v0.14.30/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.29...v0.14.30)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump vergen from 8.3.1 to 8.3.2 (#32748)

Bumps [vergen](https://github.com/rustyhorde/vergen) from 8.3.1 to 8.3.2.
- [Release notes](https://github.com/rustyhorde/vergen/releases)
- [Commits](https://github.com/rustyhorde/vergen/commits)

---
updated-dependencies:
- dependency-name: vergen
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump syn from 2.0.69 to 2.0.70 (#32749)

Bumps [syn](https://github.com/dtolnay/syn) from 2.0.69 to 2.0.70.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.69...2.0.70)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump cc from 1.0.106 to 1.1.0 (#32746)

Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.0.106 to 1.1.0.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.0.106...cc-v1.1.0)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* shell: set `no-wgl` flag in servoshell instead (#32753)

* Set no-wgl flag in servoshell instead

Signed-off-by: Wu Yu Wei <yuweiwu@pm.me>

* Remove unused comment

Signed-off-by: Wu Yu Wei <yuweiwu@pm.me>

---------

Signed-off-by: Wu Yu Wei <yuweiwu@pm.me>

* script: Use the new C string literal in the DOM bindings (#32741)

* simple conversion to cstrings using as_ptr()

Signed-off-by: Bum Kim <bumcrystlbum@gmail.com>

* replaced byte strings with c strings using new helper functions

Signed-off-by: Bum Kim <bumcrystlbum@gmail.com>

* changed &[u8] type parameters to &CStr

Signed-off-by: Bum Kim <bumcrystlbum@gmail.com>

---------

Signed-off-by: Bum Kim <bumcrystlbum@gmail.com>

* canvas: Remove as much usage of `font-kit` as possible (#32758)

Do font selection using Servo's font backend, which is shared with the
rest of layout. In addition, delay the creation of the `font-kit` font
until just before rendering with `raqote`. The idea is that when
`raqote` is no longer used, we can drop the `font-kit` dependency.

This change has the side-effect of fixing text rendering in canvas,
adding support for font fallback in canvas, and also correcting a bug in
font selection with size overrides.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>

* Move legacy layout behind a feature flag (#32759)

* Move legacy layout behind a feature flag

For now the new feature flag would still be enabled by default,
but disabling the `layout_2013` feature, gives the following
binary size improvements for servoshell on Linux:
- in debug mode from 1278MB -> 1201 MB
- in release mode from 144MB -> 140MB
- in production mode from 108MB -> 106MB

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Update components/servo/lib.rs

Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>

---------

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>

* ohos: Add default log filter (#32760)

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* script: `document.visibilityState` and `document.hidden` (#32635)

* Squashed commit of the following:

commit 5e0ea9996cb0d8137c3e1cd04487a1065b61289d
Author: Wu Yu Wei <yuweiwu@pm.me>
Date:   Thu Jul 11 13:37:51 2024 +0900

    Move lint to new_inherited

    Signed-off-by: Wu Yu Wei <yuweiwu@pm.me>

commit a8cbfb1eef2650d153ef41c232d9e80e1118fc37
Merge: b819968f3e 7a33f8f008
Author: Wu Yu Wei <yuweiwu@pm.me>
Date:   Thu Jul 11 13:32:18 2024 +0900

    Merge branch 'main' into visibility

commit b819968f3eaa361c8a2cf3af679943ae2065ab32
Merge: eda2ec4c22 1c6b74e1f1
Author: Wu Wayne <yuweiwu@pm.me>
Date:   Tue Jul 9 14:26:43 2024 +0900

    Merge branch 'main' into visibility

commit eda2ec4c225c63236d6851ea525455cad8874ce5
Author: Wu Wayne <yuweiwu@pm.me>
Date:   Thu Jul 4 14:25:05 2024 +0900

    Include page-visibility tests to wpt

commit 9da7b4ee39b141e59e4a21a64445c4b08499463f
Author: Wu Yu Wei <yuweiwu@pm.me>
Date:   Thu Jul 4 12:50:40 2024 +0900

    Add TODO comment for future update

commit 11f55fea3ead0c8fa07f16557a63cc6a77c15c3f
Author: Wu Yu Wei <yuweiwu@pm.me>
Date:   Wed Jul 3 11:01:51 2024 +0900

    Add spaces between steps

commit 408c3e51f25867e85f894cd77a6355bc32f2aa00
Author: Wu Wayne <yuweiwu@pm.me>
Date:   Tue Jul 2 18:33:53 2024 +0900

    Update MANIFEST.json

commit 679fe4ffdd28554b11b4018395fac22a08ccbc34
Author: Wu Wayne <yuweiwu@pm.me>
Date:   Tue Jul 2 18:27:02 2024 +0900

    Add VisibilityStateEntry to mozilla/interfaces.html

commit 4a456a2b4a473fa795274edf56ecf660616f90eb
Author: Wu Wayne <yuweiwu@pm.me>
Date:   Tue Jul 2 14:28:11 2024 +0900

    Update meta results

commit cd191447ff61de392526e00c13f765c2df7a269e
Merge: 7ff480a698 ad01342f00
Author: Ngo Iok Ui (Wu Yu Wei) <yuweiwu@pm.me>
Date:   Tue Jul 2 13:47:49 2024 +0900

    Merge branch 'main' into visibility

commit 7ff480a698413ac5526edfb1b8731373bb9d04ae
Author: Wu Yu Wei <yuweiwu@pm.me>
Date:   Tue Jul 2 13:12:44 2024 +0900

    Update description text of update_visibility_state

commit 0e496b7bce4fd5476a1919737b00e8f0c9e2fdc8
Author: Wu Yu Wei <yuweiwu@pm.me>
Date:   Tue Jul 2 12:59:40 2024 +0900

    Add specification link to VisibilityStateEntry methods

commit 3e4a061450621bd17f19ff81099dd4daaeaea478
Author: Wu Yu Wei <yuweiwu@pm.me>
Date:   Tue Jul 2 12:31:53 2024 +0900

    Add descriptive text to each step

commit 8bbdfcae97db5002b09e5f5ecec6ae80d080dc95
Author: Wu Wayne <yuweiwu@pm.me>
Date:   Fri Jun 28 19:15:34 2024 +0900

    mach fmt

commit dc1c7a4aec6aba56af7afcfee6feadbee242a643
Author: Wu Wayne <yuweiwu@pm.me>
Date:   Fri Jun 28 19:01:00 2024 +0900

    Add update_visibility_state

commit 6aa18143319044dc084a9585ab064cd853bccc21
Author: Wu Wayne <yuweiwu@pm.me>
Date:   Fri Jun 28 16:06:25 2024 +0900

    Add VisibilityStateEntry.webidl

commit 638ae3cd563004334d35cc3fbdc1f918d29833d0
Author: Wu Yu Wei <yuweiwu@pm.me>
Date:   Fri Jun 28 13:39:29 2024 +0900

    Add visibilityState and hidden in Document.webidl

Signed-off-by: Wu Yu Wei <yuweiwu@pm.me>

* Move creation into reflect call

Signed-off-by: Wu Yu Wei <yuweiwu@pm.me>

---------

Signed-off-by: Wu Yu Wei <yuweiwu@pm.me>

* webgpu: Divide message code into separate files (#32700)

* Spilt webgpu ipc messages even more

* Add license to mod.rs

* file docs

* build(deps): bump cc from 1.1.0 to 1.1.1 (#32765)

Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.0...cc-v1.1.1)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump syn from 2.0.70 to 2.0.71 (#32767)

Bumps [syn](https://github.com/dtolnay/syn) from 2.0.70 to 2.0.71.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.70...2.0.71)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump thiserror from 1.0.61 to 1.0.62 (#32768)

Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.61 to 1.0.62.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.61...1.0.62)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump duplicated nix to 0.29 (#32764)

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* Use mallinfo only on target_env=gnu (#32772)

mallinfo isn't available on musl, causing linking issues on build;
make sure related functions are built only for GNU Libc

Signed-off-by: Patrycja Rosa <git@ptrcnull.me>

* Update web-platform-tests to revision b'f3dd9cba239a9655951ee62ec4dafc8fe37df2c5' (#32774)

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>

* Auto merge all WPT and dependabot PRs (#32775)

* Auto merge all WPT and dependabot PRs

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

* Adjust name of action

Signed-off-by: Martin Robinson <mrobinson@igalia.com>

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>

* build(deps): bump cc from 1.1.1 to 1.1.5 (#32778)

Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.1 to 1.1.5.
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.1...cc-v1.1.5)

---
updated-dependencies:
- dependency-name: cc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump bytes from 1.6.0 to 1.6.1 (#32779)

Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.6.0...v1.6.1)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump document-features from 0.2.8 to 0.2.10 (#32780)

Bumps [document-features](https://github.com/slint-ui/document-features) from 0.2.8 to 0.2.10.
- [Release notes](https://github.com/slint-ui/document-features/releases)
- [Changelog](https://github.com/slint-ui/…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants