Skip to content

script: Start implementation of shared attribute processing for iframes#42254

Merged
TimvdLippe merged 1 commit intoservo:mainfrom
TimvdLippe:start-implementation-shared-loading-steps
Feb 7, 2026
Merged

script: Start implementation of shared attribute processing for iframes#42254
TimvdLippe merged 1 commit intoservo:mainfrom
TimvdLippe:start-implementation-shared-loading-steps

Conversation

@TimvdLippe
Copy link
Copy Markdown
Contributor

Start with implementing the new algorithms per the spec. This fixes the case where the load event should be fired, but only if a src exists and it is about:blank and it is connected for the very first time.

Part of #31973

@TimvdLippe TimvdLippe requested a review from gterzian as a code owner January 30, 2026 10:46
@TimvdLippe TimvdLippe added the T-linux-wpt Do a try run of the WPT label Jan 30, 2026
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Jan 30, 2026
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Jan 30, 2026
@github-actions
Copy link
Copy Markdown

🔨 Triggering try run (#21513151315) for Linux (WPT)

@github-actions
Copy link
Copy Markdown

⚠️ Try run (#21513151315) failed!

@TimvdLippe TimvdLippe force-pushed the start-implementation-shared-loading-steps branch from 561de28 to 1d92643 Compare January 30, 2026 13:50
@TimvdLippe TimvdLippe added the T-linux-wpt Do a try run of the WPT label Jan 30, 2026
@TimvdLippe TimvdLippe marked this pull request as draft January 30, 2026 13:50
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Jan 30, 2026
@github-actions
Copy link
Copy Markdown

🔨 Triggering try run (#21518061886) for Linux (WPT)

@github-actions
Copy link
Copy Markdown

Test results for linux-wpt from try job (#21518061886):

Flaky unexpected result (34)
  • OK /FileAPI/file/send-file-form-controls.html
    • FAIL [expected PASS] subtest: Upload file-for-upload-in-form-BS-[�].txt (ASCII) in UTF-8 form

      assert_greater_than: file-for-upload-in-form-BS-[�].txt: multipart form data must have at least 3 lines: "" expected a number greater than 2 but got 0
      

    • FAIL [expected PASS] subtest: Upload file-for-upload-in-form-VT-[�].txt (ASCII) in UTF-8 form

      assert_greater_than: file-for-upload-in-form-VT-[�].txt: multipart form data must have at least 3 lines: "" expected a number greater than 2 but got 0
      

  • OK /FileAPI/file/send-file-form-utf-8.html
    • FAIL [expected PASS] subtest: Upload file-for-upload-in-form-☺😂.txt (windows-1252) in UTF-8 form

      assert_greater_than: file-for-upload-in-form-☺😂.txt: multipart form data must have at least 3 lines: "" expected a number greater than 2 but got 0
      

    • PASS [expected FAIL] subtest: Upload file-for-upload-in-form-☺😂.txt (Unicode) in UTF-8 form
  • OK /IndexedDB/idbfactory-open-error-properties.any.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • OK /IndexedDB/idbfactory-open-error-properties.any.worker.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • OK /_mozilla/mozilla/getBoundingClientRect.html (#39668)
    • FAIL [expected PASS] subtest: getBoundingClientRect 1

      assert_equals: expected 62 but got 60.35
      

  • CRASH [expected PASS] /_mozilla/shadow-dom/move-element-with-ua-shadow-tree-crash.html (#39473)
  • CRASH [expected OK] /_webgl/conformance/attribs/gl-bindAttribLocation-matrix.html
  • CRASH [expected OK] /_webgl/conformance2/wasm/readpixels-2gb-in-4gb-wasm-memory.html
  • FAIL [expected PASS] /css/css-backgrounds/background-size-042.html
  • FAIL [expected PASS] /css/css-ui/compute-kind-widget-generated/grouped-kind-of-widget-fallback-border-top-left-radius-001.html
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Single value - empty name exists
    • PASS [expected FAIL] subtest: Single value - Non-empty name exists
  • OK /fetch/fetch-later/iframe.https.window.html
    • FAIL [expected PASS] subtest: A blank iframe can trigger fetchLater.

      assert_equals: Number of sent beacons does not match expected count: expected 1 but got 2
      

  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/accumulated-oversized-payload.https.window.html (#41705)
  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/sandboxed-iframe.https.window.html (#41704)
  • OK /fetch/metadata/generated/css-font-face.sub.tentative.html (#34624)
    • FAIL [expected PASS] subtest: sec-fetch-storage-access - Not sent to non-trustworthy same-site destination

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

  • TIMEOUT /fetch/metadata/generated/css-images.https.sub.tentative.html (#42229)
    • FAIL [expected PASS] subtest: content sec-fetch-site - Same-Origin -> Same Origin

      assert_unreached: Reached unreachable code
      

  • CRASH [expected TIMEOUT] /html/browsers/browsing-the-web/history-traversal/history-traversal-navigates-multiple-frames.html
  • 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_2.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /html/browsers/history/the-history-interface/traverse_the_history_3.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html (#29087)
    • TIMEOUT [expected FAIL] subtest: <dialog>-contained autofocus element gets focused when the dialog is shown

      Test timed out
      

  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/update-the-rendering.html (#24145)
    • FAIL [expected TIMEOUT] subtest: "Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks

      assert_array_equals: animationFrame lengths differ, expected array ["autofocus", "scroll", "animationFrame"] length 3, got ["animationFrame"] length 1
      

  • OK /html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html (#39694)
    • PASS [expected FAIL] subtest: Meta refresh is blocked by the allow-scripts sandbox flag at its creation time, not when refresh comes due
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigate_other_frame_popup.sub.html (#39702)
    • TIMEOUT [expected FAIL] subtest: Sandboxed iframe can not navigate other frame's popup

      Test timed out
      

  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • FAIL [expected PASS] subtest: multipart/form-data: Basic File test (normal form)

      assert_equals: expected "\r\nContent-Disposition: form-data; name=\"basic\"; filename=\"file-test.txt\"\r\nContent-Type: text/plain\r\n\r\n\r\n--\r\n" but got ""
      

    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in name (formdata event)
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in name (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in value (formdata event)
  • 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 [expected ERROR] /html/user-activation/no-activation-thru-escape-key.html (#40343)
  • OK /mixed-content/tentative/autoupgrades/video-upgrade.https.sub.html (#41135)
    • FAIL [expected PASS] subtest: Video autoupgraded

      assert_equals: Length. expected 1 but got Infinity
      

    • FAIL [expected PASS] subtest: Video of other host autoupgraded

      assert_equals: Length. Other host expected 1 but got Infinity
      

  • CRASH [expected OK] /preload/subresource-integrity-partial-image.html
  • OK /service-workers/service-worker/fetch-event.https.html (#36234)
    • PASS [expected FAIL] subtest: Service Worker falls back to network in fetch event with POST form
  • TIMEOUT /trusted-types/trusted-types-navigation.html?06-10 (#37920)
    • PASS [expected FAIL] subtest: Navigate a frame via anchor with javascript:-urls in report-only mode.
  • PASS [expected TIMEOUT] /visual-viewport/viewport-apply-initial-scale-after-navigation.html (#41582)
  • OK /wasm/webapi/abort.any.html (#39966)
    • FAIL [expected PASS] subtest: instantiateStreaming() asynchronously racing with abort should succeed or reject with AbortError

      assert_equals: expected "AbortError" but got "CompileError"
      

Stable unexpected results that are known to be intermittent (35)
  • TIMEOUT /FileAPI/url/url-in-tags-revoke.window.html (#19978)
    • TIMEOUT [expected PASS] subtest: Fetching a blob URL immediately before revoking it works in <script> tags.

      Test timed out
      

  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.worker.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbobjectstore_getAll.any.html (#39276)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbobjectstore_getAll.any.worker.html (#39400)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbrequest-onupgradeneeded.any.html (#38895)
    • PASS [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess
  • OK /IndexedDB/idbrequest-onupgradeneeded.any.worker.html (#38971)
    • PASS [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess
  • OK /IndexedDB/key-conversion-exceptions.any.html (#39305)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() => {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

    • FAIL [expected PASS] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() => {
            cursor.update(value);
          }" threw object "TypeError: cursor.update is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • OK /IndexedDB/key-conversion-exceptions.any.worker.html (#39284)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() => {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

    • FAIL [expected PASS] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() => {
            cursor.update(value);
          }" threw object "TypeError: cursor.update is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • FAIL [expected PASS] /_mozilla/mozilla/sslfail.html (#10760)
  • TIMEOUT [expected OK] /_mozilla/mozilla/window_resize_event.html (#36741)
    • TIMEOUT [expected PASS] subtest: Popup onresize event fires after resizeTo

      Test timed out
      

  • TIMEOUT /content-security-policy/inheritance/location-reload.html (#38983)
    • FAIL [expected PASS] subtest: location.reload() of empty iframe.

      assert_equals: Image should be blocked by CSP after reload. expected "img blocked" but got "img loaded"
      

  • OK /css/css-cascade/layer-font-face-override.html (#35935)
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 1
  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted fantasy (drawing text in a canvas)

      assert_equals: quoted fantasy matches  @font-face rule expected 125 but got 40
      

    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(nastaliq) (drawing text in a canvas)
  • OK /css/cssom-view/offsetTopLeft-border-box.html (#40826)
    • PASS [expected FAIL] subtest: container: 0
    • PASS [expected FAIL] subtest: container: 1
  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/multiple-iframes.https.window.html (#35176)
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • FAIL [expected PASS] subtest: sec-fetch-mode

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

    • FAIL [expected PASS] subtest: sec-fetch-user

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

  • TIMEOUT /fetch/metadata/generated/css-images.sub.tentative.html (#29047)
    • PASS [expected FAIL] subtest: content sec-fetch-site - HTTPS downgrade-upgrade
  • ERROR /fetch/metadata/generated/serviceworker.https.sub.html (#36247)
    • FAIL [expected PASS] subtest: sec-fetch-site - Same origin, no options - registration

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

  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html (#29048)
    • PASS [expected FAIL] subtest: Navigating to a different document with link click
    • PASS [expected FAIL] subtest: Navigating to a different document with form submission
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html (#28681)
    • FAIL [expected PASS] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src=''

      assert_unreached: load should not be fired Reached unreachable code
      

    • FAIL [expected PASS] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank'

      assert_unreached: load should not be fired Reached unreachable code
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html (#28691)
    • FAIL [expected PASS] subtest: load event does not fire on window.open('about:blank')

      assert_unreached: load should not be fired Reached unreachable code
      

  • 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 /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 TIMEOUT] subtest: Non-HTMLElement should not support autofocus
  • TIMEOUT /html/semantics/embedded-content/media-elements/autoplay-allowed-by-feature-policy.https.sub.html (#41404)
    • TIMEOUT [expected PASS] subtest: Feature-Policy header: autoplay * allows same-origin iframes.

      Test timed out
      

  • TIMEOUT [expected ERROR] /html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base.html (#40347)
  • OK /html/webappapis/user-prompts/print-during-unload.html (#35944)
    • FAIL [expected PASS] subtest: print() during unload

      assert_array_equals: expected property 1 to be "destination" but got "error: window.print is not a function" (expected array ["start", "destination"] got ["start", "error: window.print is not a function"])
      

  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • PASS [expected FAIL] subtest: Reload domComplete > Original domComplete
    • PASS [expected FAIL] subtest: Reload domContentLoadedEventEnd > Original domContentLoadedEventEnd
    • PASS [expected FAIL] subtest: Reload domContentLoadedEventStart > Original domContentLoadedEventStart
    • PASS [expected FAIL] subtest: Reload fetchStart > Original fetchStart
    • PASS [expected FAIL] subtest: Reload loadEventEnd > Original loadEventEnd
    • PASS [expected FAIL] subtest: Reload loadEventStart > Original loadEventStart
  • OK [expected TIMEOUT] /resource-timing/test_resource_timing.html (#25720)
    • PASS [expected TIMEOUT] subtest: window.performance.getEntriesByName() and window.performance.getEntriesByNameType() return same data (link)
    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (link)

      assert_equals: expected 5.34 but got 5.33
      

    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct order of timing attributes (link)

      assert_greater_than_equal: domainLookupEnd after domainLookupStart expected a number greater than or equal to 23.44 but got 0
      

    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct network transfer attributes (link)

      assert_equals: encodedBodySize size expected 44 but got 0
      

    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct protocol attribute (link)

      assert_equals: expected protocol expected "http/1.1" but got ""
      

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

      assert_equals: expected 18.869999999999997 but got 18.87
      

    • PASS [expected TIMEOUT] subtest: window.performance.getEntriesByName() and window.performance.getEntriesByNameType() return same data (link)
    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (link)

      assert_equals: expected 16.150000000000006 but got 16.14
      

    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct order of timing attributes (link)

      assert_greater_than_equal: domainLookupEnd after domainLookupStart expected a number greater than or equal to 48.72 but got 0
      

    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct network transfer attributes (link)

      assert_equals: encodedBodySize size expected 44 but got 0
      

    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct protocol attribute (link)

      assert_equals: expected protocol expected "http/1.1" but got ""
      

    • PASS [expected FAIL] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (xmlhttprequest)
  • TIMEOUT [expected OK] /trusted-types/trusted-types-navigation.html?01-05 (#38975)
    • TIMEOUT [expected PASS] subtest: Navigate a window via anchor with javascript:-urls in report-only mode.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Navigate a window via anchor with javascript:-urls w/ default policy in report-only mode.
    • NOTRUN [expected PASS] subtest: Navigate a frame via anchor with javascript:-urls in enforcing mode.
  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?26-30 (#38807)
    • PASS [expected TIMEOUT] subtest: Navigate a window via form-submission with javascript:-urls in report-only mode.
    • PASS [expected NOTRUN] subtest: Navigate a window via form-submission with javascript:-urls w/ default policy in report-only mode.
    • PASS [expected NOTRUN] subtest: Navigate a frame via form-submission with javascript:-urls in enforcing mode.
    • PASS [expected NOTRUN] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in enforcing mode.
  • OK [expected TIMEOUT] /webmessaging/with-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • OK [expected TIMEOUT] /webmessaging/without-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • ERROR [expected OK] /webxr/render_state_update.https.html (#27535)
Stable unexpected results (52)
  • ERROR [expected OK] /css/cssom-view/matchMedia-display-none-iframe.html
  • ERROR [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html
    • 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/initial-empty-document/iframe-src-aboutblank-wait-for-load.html
    • PASS [expected FAIL] subtest: Navigating to a different document with src
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/initial-content-replacement.html
    • PASS [expected FAIL] subtest: Content synchronously added to <iframe> with src='' won't get replaced
    • PASS [expected FAIL] subtest: Content synchronously added to <iframe> with src='about:blank' won't get replaced
    • PASS [expected FAIL] subtest: Content synchronously added to <iframe> with src='about:blank#foo' won't get replaced
    • PASS [expected FAIL] subtest: Content synchronously added to <iframe> with src='about:blank?foo' won't get replaced
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-event-iframe-element.html
    • PASS [expected FAIL] subtest: load event fires synchronously on <iframe> element created with no src
    • PASS [expected FAIL] subtest: load event fires synchronously on <iframe> element created with src=''
    • PASS [expected FAIL] subtest: load event fires synchronously on <iframe> element created with src='about:blank'
  • OK /html/browsers/history/joint-session-history/joint-session-history-remove-iframe.html
    • PASS [expected FAIL] subtest: Joint session history length does not include entries from a removed iframe.
  • OK /html/browsers/the-window-object/window-reuse-in-nested-browsing-contexts.tentative.html
    • FAIL [expected PASS] subtest: after the first iframe load event, navigate iframe with initial src == "".

      assert_true: Not expecting event, but got load event expected true got false
      

    • FAIL [expected PASS] subtest: after the first iframe load event, navigate iframe with initial src == "about:blank".

      assert_true: Not expecting event, but got load event expected true got false
      

  • OK [expected TIMEOUT] /html/infrastructure/urls/base-url/document-base-url-changes-about-srcdoc-2.https.html
    • PASS [expected TIMEOUT] subtest: wrapper promise test for timeout.
  • OK /html/semantics/embedded-content/the-iframe-element/iframe-nosrc.html
    • FAIL [expected PASS] subtest: load event of iframe should not be fired after processing the element

      assert_unreached: Reached unreachable code
      

  • ERROR [expected OK] /html/webappapis/structured-clone/structured-clone-cross-realm-method.html
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/fetch.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/img-tag.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for img-tag to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects blocked for img-tag to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for img-tag to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for img-tag to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects blocked for img-tag to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for img-tag to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-classic.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-classic to same-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-classic to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-classic to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-import to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for sharedworker-module to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/websocket.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for websocket to cross-ws-downgrade origin and no-redirect redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for websocket to same-ws-downgrade origin and no-redirect redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-classic.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-classic to same-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-classic to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-classic to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-import-data.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-import.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-import to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-module.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-module to same-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-module to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worker-module to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-animation-import-data.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-animation.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-animation to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-audio-import-data.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-audio.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-audio to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-layout-import-data.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-layout.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-layout to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-paint-import-data.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-paint.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for worklet-paint to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/xhr.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for xhr to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for xhr to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for xhr to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for xhr to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for xhr to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for xhr to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/fetch.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for fetch to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for fetch to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for fetch to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for fetch to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for fetch to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for fetch to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/iframe-tag.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for iframe-tag to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for iframe-tag to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for iframe-tag to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for iframe-tag to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for iframe-tag to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for iframe-tag to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/img-tag.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for img-tag to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for img-tag to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for img-tag to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for img-tag to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for img-tag to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for img-tag to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-classic.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-classic to same-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-classic to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-classic to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-import to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/websocket.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for websocket to cross-ws-downgrade origin and no-redirect redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for websocket to same-ws-downgrade origin and no-redirect redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-classic.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-classic to same-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-classic to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-classic to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-import-data.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-import.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-import to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-module.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-module to same-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-module to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for worker-module to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation-import-data.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-animation to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-audio-import-data.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-audio.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-audio to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-layout-import-data.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-layout.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-layout to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-paint-import-data.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint-import-data to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint-import-data to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint-import-data to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint-import-data to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint-import-data to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint-import-data to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-paint.https.html
    • TIMEOUT [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected FAIL] subtest: Upgrade-Insecure-Requests: Expects allowed for worklet-paint to same-https origin and downgrade redirection from https context.
  • TIMEOUT [expected OK] /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/xhr.https.html
    • TIMEOUT [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for xhr to cross-http-downgrade origin and downgrade redirection from https context.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for xhr to cross-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for xhr to cross-https origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for xhr to same-http-downgrade origin and downgrade redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for xhr to same-http-downgrade origin and no-redirect redirection from https context.
    • NOTRUN [expected PASS] subtest: Upgrade-Insecure-Requests: Expects allowed for xhr to same-https origin and downgrade redirection from https context.
  • CRASH [expected OK] /xhr/open-url-multi-window-6.htm

@github-actions
Copy link
Copy Markdown

⚠️ Try run (#21518061886) failed!

@TimvdLippe TimvdLippe force-pushed the start-implementation-shared-loading-steps branch from 1d92643 to 419e2bf Compare January 30, 2026 15:37
@TimvdLippe
Copy link
Copy Markdown
Contributor Author

@jdm I got pretty close with this one, but would appreciate your debugging skills again. These /upgrade-insecure-requests/gen/iframe-blank-inherit.meta/ tests started timing out. Some of them work, but others don't.

I get the sense that it is related to how pipelines are stored for iframes. I think it reuses iframe pipelines and then they get stuck in an invalid state. However, this is purely guess and I don't really know where I would need to start investigating.

Overall the test improvements look hopeful that this is another step in the right direction. So I think we are just missing one small part of the puzzle to make these test not start to fail.

[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank#foo']
expected: FAIL

[load & pageshow events do not fire on contentWindow of <iframe> element created with src='']
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I don't think we are firing pageshow events yet when finalizing a document, so these are failing just like the other ones.

Copy link
Copy Markdown
Member

@gterzian gterzian Feb 6, 2026

Choose a reason for hiding this comment

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

The page show event is fired in components/script/dom/document.rs

I think the main point is firing the load event on the document, versus the load event on the iframe element in the load steps.

So when a blank frame is created, the load should fire on the frame and return; we should not continue with a navigation. But what makes this hard in servo is that we always create a first blank frame, and then navigate in most cases. The way the spec is written is that in such a case we should only create the frame and not navigate it. But last time I tried, not navigating it results in all sorts of timeouts.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I think the note at https://html.spec.whatwg.org/multipage/document-lifecycle.html#loading-documents:create-a-new-child-navigable explains what's going on here.

Turns out that pageshow isn't the issue, load is. We have a frame_element() that is Some(iframe), whereas it should be None given it is about:blank. Still, I think this the case for the other subsets in this file as well, which is why I think it is acceptable for the new failures. Once we fix frame_element() to be spec-compliant, I expect all subtsets in this file to start passing.

Copy link
Copy Markdown
Member

@gterzian gterzian Feb 6, 2026

Choose a reason for hiding this comment

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

Your're right that in the intial about blank case, the load event steps are fired earlier as part of the synchronous steps you now implemented.

But the tests here is about the event fired not on the iframe but on the window inside the iframe. The problem is that when we create the nested BC for the initial about blank, we still do the whole document load thing.

still not completely sure why they started failing now, but anyway the fact they were passing was sort of random I would say.

@TimvdLippe TimvdLippe force-pushed the start-implementation-shared-loading-steps branch from 419e2bf to c01a792 Compare February 3, 2026 08:51
@TimvdLippe TimvdLippe added the T-linux-wpt Do a try run of the WPT label Feb 3, 2026
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Feb 3, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 3, 2026

🔨 Triggering try run (#21623497132) for Linux (WPT)

@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 3, 2026

Test results for linux-wpt from try job (#21623497132):

Flaky unexpected result (23)
  • TIMEOUT /FileAPI/url/url-in-tags-revoke.window.html (#19978)
    • TIMEOUT [expected PASS] subtest: Fetching a blob URL immediately before revoking it works in &lt;script&gt; tags.

      Test timed out
      

  • OK /IndexedDB/idbfactory-open-error-properties.any.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • OK /IndexedDB/idbfactory-open-error-properties.any.worker.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • CRASH [expected OK] /_webgl/conformance2/wasm/readpixels-2gb-in-4gb-wasm-memory.html
  • FAIL [expected PASS] /css/css-backgrounds/background-size-042.html
  • OK /css/cssom-view/offsetTopLeft-border-box.html (#40826)
    • PASS [expected FAIL] subtest: container: 0
    • PASS [expected FAIL] subtest: container: 1
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • FAIL [expected PASS] subtest: sec-fetch-mode

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

    • FAIL [expected PASS] subtest: sec-fetch-user

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

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

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

  • CRASH [expected OK] /html/browsers/browsing-the-web/history-traversal/event-order/before-load-hash.html
  • CRASH [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/008.html (#24456)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html (#28691)
    • FAIL [expected PASS] subtest: load event does not fire on window.open('about:blank')

      assert_unreached: load should not be fired Reached unreachable code
      

  • CRASH [expected OK] /html/browsers/history/the-history-interface/012.html
  • OK /html/browsers/history/the-history-interface/traverse_the_history_4.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • CRASH [expected OK] /html/browsers/windows/browsing-context-names/choose-_parent-004.html
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/update-the-rendering.html (#24145)
    • FAIL [expected TIMEOUT] subtest: "Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks

      assert_array_equals: animationFrame lengths differ, expected array ["autofocus", "scroll", "animationFrame"] length 3, got ["animationFrame"] length 1
      

  • OK /html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html (#39694)
    • PASS [expected FAIL] subtest: Meta refresh is blocked by the allow-scripts sandbox flag at its creation time, not when refresh comes due
  • TIMEOUT /html/semantics/embedded-content/media-elements/autoplay-allowed-by-feature-policy.https.sub.html (#41404)
    • TIMEOUT [expected PASS] subtest: Feature-Policy header: autoplay * allows same-origin iframes.

      Test timed out
      

  • TIMEOUT /html/semantics/embedded-content/media-elements/autoplay-default-feature-policy.https.sub.html (#41193)
    • PASS [expected TIMEOUT] subtest: Default "autoplay" feature policy ["self"] allows same-origin iframes.
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigate_other_frame_popup.sub.html (#39702)
    • TIMEOUT [expected FAIL] subtest: Sandboxed iframe can not navigate other frame's popup

      Test timed out
      

  • OK /html/semantics/forms/form-submission-0/jsurl-form-submit.tentative.html (#36489)
    • PASS [expected FAIL] subtest: Verifies that form submissions scheduled inside javascript: urls take precedence over the javascript: url's return value.
  • CRASH [expected OK] /imagebitmap-renderingcontext/toBlob-origin-clean-offscreen.sub.html
  • TIMEOUT /trusted-types/trusted-types-navigation.html?31-35 (#38034)
    • TIMEOUT [expected PASS] subtest: Navigate a frame via form-submission with javascript:-urls in report-only mode.

      Test timed out
      

    • NOTRUN [expected TIMEOUT] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in report-only mode.
  • OK /webxr/xrSession_features_deviceSupport.https.html (#24357)
    • FAIL [expected PASS] subtest: Immersive XRSession requests with no supported device should reject

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

Stable unexpected results that are known to be intermittent (38)
  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.worker.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbobjectstore_getAll.any.html (#39276)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbobjectstore_getAll.any.worker.html (#39400)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbrequest-onupgradeneeded.any.html (#38895)
    • PASS [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess
  • OK /IndexedDB/idbrequest-onupgradeneeded.any.worker.html (#38971)
    • PASS [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess
  • OK /IndexedDB/key-conversion-exceptions.any.html (#39305)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

    • FAIL [expected PASS] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() =&gt; {
            cursor.update(value);
          }" threw object "TypeError: cursor.update is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • OK /IndexedDB/key-conversion-exceptions.any.worker.html (#39284)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

    • FAIL [expected PASS] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() =&gt; {
            cursor.update(value);
          }" threw object "TypeError: cursor.update is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • FAIL [expected PASS] /_mozilla/mozilla/sslfail.html (#10760)
  • TIMEOUT [expected OK] /_mozilla/mozilla/window_resize_event.html (#36741)
    • TIMEOUT [expected PASS] subtest: Popup onresize event fires after resizeTo

      Test timed out
      

  • CRASH [expected PASS] /_mozilla/shadow-dom/move-element-with-ua-shadow-tree-crash.html (#39473)
  • OK /_webgl/conformance/textures/misc/texture-upload-size.html (#21770)
    • FAIL [expected PASS] subtest: WebGL test #45

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #47

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #49

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #51

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • PASS [expected FAIL] subtest: WebGL test #53
    • PASS [expected FAIL] subtest: WebGL test #55
    • PASS [expected FAIL] subtest: WebGL test #57
    • PASS [expected FAIL] subtest: WebGL test #59
    • FAIL [expected PASS] subtest: WebGL test #61

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #63

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • And 6 more unexpected results...
  • TIMEOUT /content-security-policy/inheritance/location-reload.html (#38983)
    • FAIL [expected PASS] subtest: location.reload() of empty iframe.

      assert_equals: Image should be blocked by CSP after reload. expected "img blocked" but got "img loaded"
      

  • OK /css/css-cascade/layer-cssom-order-reverse.html (#36094)
    • PASS [expected FAIL] subtest: Delete layer invalidates @font-face
  • OK /css/css-cascade/layer-font-face-override.html (#35935)
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 1
  • OK /css/css-fonts/generic-family-keywords-001.html (#37467)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(nastaliq)

      assert_equals: quoted generic(nastaliq) matches  @font-face rule expected 50 but got 30
      

  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(khmer-mul) (drawing text in a canvas)
  • TIMEOUT [expected OK] /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • TIMEOUT [expected FAIL] subtest: Single value - empty name exists

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Single value - Non-empty name exists
    • NOTRUN [expected FAIL] subtest: Null value should submit nothing
    • NOTRUN [expected FAIL] subtest: Multiple values - name content attribute is ignored
    • NOTRUN [expected FAIL] subtest: setFormValue with an empty FormData should submit nothing
    • NOTRUN [expected FAIL] subtest: Newline normalization - \n in name (urlencoded)
    • NOTRUN [expected FAIL] subtest: Newline normalization - \n in name (formdata)
    • NOTRUN [expected FAIL] subtest: Newline normalization - \r in name (urlencoded)
    • NOTRUN [expected FAIL] subtest: Newline normalization - \r in name (formdata)
    • NOTRUN [expected FAIL] subtest: Newline normalization - \r\n in name (urlencoded)
    • And 43 more unexpected results...
  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/accumulated-oversized-payload.https.window.html (#41705)
  • ERROR [expected OK] /fetch/fetch-later/quota/same-origin-iframe/multiple-iframes.https.window.html (#35176)
  • TIMEOUT /fetch/metadata/generated/css-images.https.sub.tentative.html (#42229)
    • PASS [expected FAIL] subtest: content sec-fetch-site - Cross-Site -&gt; Same Origin
  • OK /fetch/metadata/generated/element-iframe.https.sub.html (#40341)
    • PASS [expected FAIL] subtest: sec-fetch-user with user activation
  • ERROR /fetch/metadata/generated/serviceworker.https.sub.html (#36247)
    • FAIL [expected PASS] subtest: sec-fetch-site - Same origin, no options - registration

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

  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
    • FAIL [expected PASS] subtest: aElement.click() before the load event must NOT replace

      assert_equals: expected "http://web-platform.test:8000/common/blank.html?thereplacement" but got "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/resources/code-injector.html?pipe=sub(none)&amp;code=%0A%20%20%20%20const%20a%20%3D%20document.createElement(%22a%22)%3B%0A%20%20%20%20a.href%20%3D%20%22%2Fcommon%2Fblank.html%3Fthereplacement%22%3B%0A%20%20%20%20document.currentScript.before(a)%3B%0A%20%20%20%20a.click()%3B%0A%20%20"
      

  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/document-with-fragment-empty.html (#28259)
    • TIMEOUT [expected FAIL] subtest: Autofocus elements in top-level browsing context's documents with empty fragments should work.

      Test timed out
      

  • TIMEOUT /html/semantics/embedded-content/media-elements/autoplay-disabled-by-feature-policy.https.sub.html (#41221)
    • TIMEOUT [expected FAIL] subtest: Feature-Policy header: autoplay "none" disallows same-origin iframes.

      Test timed out
      

  • TIMEOUT [expected OK] /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • TIMEOUT [expected PASS] subtest: multipart/form-data: Basic test (formdata event)

      Test timed out
      

    • NOTRUN [expected PASS] subtest: multipart/form-data: Basic File test (normal form)
    • NOTRUN [expected FAIL] subtest: multipart/form-data: Basic File test (formdata event)
    • NOTRUN [expected FAIL] subtest: multipart/form-data: 0x00 in name (normal form)
    • NOTRUN [expected FAIL] subtest: multipart/form-data: 0x00 in name (formdata event)
    • NOTRUN [expected FAIL] subtest: multipart/form-data: 0x00 in value (normal form)
    • NOTRUN [expected FAIL] subtest: multipart/form-data: 0x00 in value (formdata event)
    • NOTRUN [expected FAIL] subtest: multipart/form-data: 0x00 in filename (normal form)
    • NOTRUN [expected FAIL] subtest: multipart/form-data: 0x00 in filename (formdata event)
    • NOTRUN [expected FAIL] subtest: multipart/form-data: \n in name (normal form)
    • And 51 more unexpected results...
  • TIMEOUT [expected OK] /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • TIMEOUT [expected FAIL] subtest: text/plain: Basic File test (formdata event)

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: text/plain: 0x00 in name (normal form)
    • NOTRUN [expected FAIL] subtest: text/plain: 0x00 in name (formdata event)
    • NOTRUN [expected FAIL] subtest: text/plain: 0x00 in value (normal form)
    • NOTRUN [expected FAIL] subtest: text/plain: 0x00 in value (formdata event)
    • NOTRUN [expected FAIL] subtest: text/plain: 0x00 in filename (normal form)
    • NOTRUN [expected FAIL] subtest: text/plain: 0x00 in filename (formdata event)
    • NOTRUN [expected FAIL] subtest: text/plain: \n in name (normal form)
    • NOTRUN [expected FAIL] subtest: text/plain: \n in name (formdata event)
    • NOTRUN [expected FAIL] subtest: text/plain: \r in name (normal form)
    • And 49 more unexpected results...
  • TIMEOUT [expected OK] /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • TIMEOUT [expected PASS] subtest: application/x-www-form-urlencoded: Basic File test (normal form)

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: application/x-www-form-urlencoded: Basic File test (formdata event)
    • NOTRUN [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in name (normal form)
    • NOTRUN [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in name (formdata event)
    • NOTRUN [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (normal form)
    • NOTRUN [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (formdata event)
    • NOTRUN [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in filename (normal form)
    • NOTRUN [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in filename (formdata event)
    • NOTRUN [expected FAIL] subtest: application/x-www-form-urlencoded: \n in name (normal form)
    • NOTRUN [expected FAIL] subtest: application/x-www-form-urlencoded: \n in name (formdata event)
    • And 50 more unexpected results...
  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • PASS [expected FAIL] subtest: Reload domContentLoadedEventStart &gt; Original domContentLoadedEventStart
    • PASS [expected FAIL] subtest: Reload domInteractive &gt; Original domInteractive
    • PASS [expected FAIL] subtest: Reload fetchStart &gt; Original fetchStart
  • OK /resource-timing/test_resource_timing.html (#25720)
    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (link)

      assert_equals: expected 8.850000000000001 but got 8.84
      

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

      assert_equals: expected 20.689999999999998 but got 20.68
      

  • OK /service-workers/service-worker/fetch-event.https.html (#36234)
    • PASS [expected FAIL] subtest: Service Worker falls back to network in fetch event with POST form
  • OK /touch-events/single-tap-when-touchend-listener-use-sync-xhr.html (#41175)
    • PASS [expected FAIL] subtest: Click event should be fired when touchend opens synchronous XHR
  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?26-30 (#38807)
    • PASS [expected TIMEOUT] subtest: Navigate a window via form-submission with javascript:-urls in report-only mode.
    • PASS [expected NOTRUN] subtest: Navigate a window via form-submission with javascript:-urls w/ default policy in report-only mode.
    • PASS [expected NOTRUN] subtest: Navigate a frame via form-submission with javascript:-urls in enforcing mode.
    • PASS [expected NOTRUN] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in enforcing mode.
  • OK [expected TIMEOUT] /webmessaging/with-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • OK [expected TIMEOUT] /webmessaging/without-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • TIMEOUT [expected OK] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.html (#29053)
    • TIMEOUT [expected PASS] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe

      Test timed out
      

Stable unexpected results (9)
  • TIMEOUT [expected OK] /FileAPI/file/send-file-form-controls.html
    • TIMEOUT [expected FAIL] subtest: Upload file-for-upload-in-form-LF-[ ].txt (ASCII) in UTF-8 form

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: `Upload file-for-upload-in-form-LF-CR-[

      ].txt (ASCII) in UTF-8 form</span></li><li><span>NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-CR-[
      ].txt (ASCII) in UTF-8 form</span></li><li><span>NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-CR-LF-[
      ].txt (ASCII) in UTF-8 form</span></li><li><span>NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-HT-[ ].txt (ASCII) in UTF-8 form</span></li><li><span>NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-FF-[ ].txt (ASCII) in UTF-8 form</span></li><li><span>NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-DEL-[�].txt (ASCII) in UTF-8 form</span></li><li><span>NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-ESC-[�].txt (ASCII) in UTF-8 form</span></li><li><span>NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-SPACE-[ ].txt (ASCII) in UTF-8 form</span></li></ul></li><li><span>TIMEOUT [expected OK] /FileAPI/file/send-file-form-iso-2022-jp.html</span><ul><li><span>TIMEOUT [expected FAIL] subtest: Upload file-for-upload-in-form-.txt (x-user-defined) in ISO-2022-JP form`

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-☺😂.txt (windows-1252) in ISO-2022-JP form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-★星★.txt (JIS X 0201 and JIS X 0208) in ISO-2022-JP form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-☺😂.txt (Unicode) in ISO-2022-JP form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ.txt (Unicode) in ISO-2022-JP form
  • TIMEOUT [expected OK] /FileAPI/file/send-file-form-punctuation.html
    • TIMEOUT [expected FAIL] subtest: Upload file-for-upload-in-form-EXCLAMATION-MARK-[!].txt (ASCII) in UTF-8 form

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-DOLLAR-SIGN-[$].txt (ASCII) in UTF-8 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-PERCENT-SIGN-[%].txt (ASCII) in UTF-8 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-AMPERSAND-[&amp;].txt (ASCII) in UTF-8 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-APOSTROPHE-['].txt (ASCII) in UTF-8 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-LEFT-PARENTHESIS-[(].txt (ASCII) in UTF-8 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-RIGHT-PARENTHESIS-[)].txt (ASCII) in UTF-8 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-ASTERISK-[*].txt (ASCII) in UTF-8 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-PLUS-SIGN-[+].txt (ASCII) in UTF-8 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-COMMA-[,].txt (ASCII) in UTF-8 form
    • And 14 more unexpected results...
  • TIMEOUT [expected OK] /FileAPI/file/send-file-form-utf-8.html
    • TIMEOUT [expected PASS] subtest: Upload file-for-upload-in-form-.txt (x-user-defined) in UTF-8 form

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Upload file-for-upload-in-form-☺😂.txt (windows-1252) in UTF-8 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-★星★.txt (JIS X 0201 and JIS X 0208) in UTF-8 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-☺😂.txt (Unicode) in UTF-8 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ.txt (Unicode) in UTF-8 form
  • TIMEOUT [expected OK] /FileAPI/file/send-file-form-windows-1252.html
    • TIMEOUT [expected FAIL] subtest: Upload file-for-upload-in-form-★星★.txt (JIS X 0201 and JIS X 0208) in windows-1252 form

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-☺😂.txt (Unicode) in windows-1252 form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ.txt (Unicode) in windows-1252 form
  • TIMEOUT [expected OK] /FileAPI/file/send-file-form-x-user-defined.html
    • TIMEOUT [expected FAIL] subtest: Upload file-for-upload-in-form-★星★.txt (JIS X 0201 and JIS X 0208) in x-user-defined form

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-☺😂.txt (Unicode) in x-user-defined form
    • NOTRUN [expected FAIL] subtest: Upload file-for-upload-in-form-ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ.txt (Unicode) in x-user-defined form
  • OK /html/browsers/the-window-object/window-reuse-in-nested-browsing-contexts.tentative.html
    • FAIL [expected PASS] subtest: after the first iframe load event, navigate iframe with initial src == "".

      assert_true: Not expecting event, but got load event expected true got false
      

    • FAIL [expected PASS] subtest: after the first iframe load event, navigate iframe with initial src == "about:blank".

      assert_true: Not expecting event, but got load event expected true got false
      

  • OK [expected ERROR] /shadow-dom/focus/focus-method-delegatesFocus-nested-browsing-context.html
  • CRASH [expected OK] /xhr/open-url-multi-window-6.htm

@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 3, 2026

⚠️ Try run (#21623497132) failed!

@TimvdLippe
Copy link
Copy Markdown
Contributor Author

TimvdLippe commented Feb 4, 2026

Okay, I figured out why /FileAPI/file/send-file-form-controls.html is timing out. It always times out on the fourth test, no matter which test that is. E.g. if you run tests in isolation, they work. If you run 3 of them, they work. If you run >= 4, then the fourth one will timeout.

The reason is that

// Note the pending form navigation if this is an iframe;
// necessary for deciding whether to run the iframe load event steps.
if let Some(window_proxy) = target.undiscarded_window_proxy() {
if let Some(frame) = window_proxy
.frame_element()
.and_then(|e| e.downcast::<HTMLIFrameElement>())
{
frame.note_pending_navigation()
}
}
doesn't run, since frame_element() is None. We encountered this before, where this is None, even though it is a same-origin element.

It isn't related to my changes, but my changes uncover the issue. The reason is that with my changes, the load event fires earlier. On the tests 1-3 that's no problem, since my patch also suppresses them. However, on the fourth one, since note_pending_navigation isn't called, self.pending_navigation.get() is false. Before my patch, this would then fire the load event and all is well. With my patch, it wouldn't fire a second time and then the test trips up.

Another issue with this patch: the load events can run after the browsing context is destroyed, after which pending_pipeline_id and about_blank_pipeline_id are both None. Then is_initial_blank_document() returns true, despite both being None. To fix that, I locally changed it to

self.about_blank_pipeline_id.get().is_some_and(|about_blank_pipeline_id| self.pending_pipeline_id.get() == Some(about_blank_pipeline_id))

This is required for debugging the tests, but doesn't fix them per the note_pending_navigation above.

@TimvdLippe
Copy link
Copy Markdown
Contributor Author

Here are my logs of a timeout on the fourth one (the first three logs are the expected values):

Details
 0:03.81 pid:30505 Loading url about:blank
 0:03.82 pid:30505 Synchronously firing load event
 0:03.82 pid:30505 Form noting pending navigation, was: false
 0:03.83 pid:30505 Is initial about blank document
 0:03.83 pid:30505 Should fire event: false really: false
 0:03.83 pid:30505 Resetting for navigation
 0:03.86 pid:30505 Should fire event: true really: true
 0:03.87 pid:30505 Loading url about:blank
 0:03.87 pid:30505 Synchronously firing load event
 0:03.87 pid:30505 Form noting pending navigation, was: false
 0:03.88 pid:30505 Is initial about blank document
 0:03.88 pid:30505 Should fire event: false really: false
 0:03.92 pid:30505 Resetting for navigation
 0:03.95 pid:30505 Should fire event: true really: true
 0:03.96 pid:30505 Loading url about:blank
 0:03.96 pid:30505 Synchronously firing load event
 0:03.96 pid:30505 Form noting pending navigation, was: false
 0:03.97 pid:30505 Is initial about blank document
 0:03.97 pid:30505 Should fire event: false really: false
 0:03.97 pid:30505 Resetting for navigation
 0:04.00 pid:30505 Should fire event: true really: true
 0:04.01 pid:30505 Loading url about:blank
 0:04.01 pid:30505 Synchronously firing load event
 0:04.02 pid:30505 Is initial about blank document
 0:04.02 pid:30505 Should fire event: true really: false
 0:13.82 TEST_END: Test TIMEOUT, expected OK. Subtests passed 3/4. Unexpected 1

Debugging diff:

Details
diff --git a/components/script/dom/html/htmliframeelement.rs b/components/script/dom/html/htmliframeelement.rs
index 203c1934598..f6e4ba3859d 100644
--- a/components/script/dom/html/htmliframeelement.rs
+++ b/components/script/dom/html/htmliframeelement.rs
@@ -137,6 +137,7 @@ impl HTMLIFrameElement {
         history_handling: NavigationHistoryBehavior,
         can_gc: CanGc,
     ) {
+        println!("Resetting for navigation");
         // In case we fired a synchronous load event, but navigate away
         // in the event listener of that event, then we should still
         // fire a second asynchronous load event when that navigation
@@ -287,7 +288,7 @@ impl HTMLIFrameElement {
     /// This initial synchronous load should have no noticeable effect in script.
     /// See the note in `iframe_load_event_steps`.
     pub(crate) fn is_initial_blank_document(&self) -> bool {
-        self.pending_pipeline_id.get() == self.about_blank_pipeline_id.get()
+        self.about_blank_pipeline_id.get().is_some_and(|about_blank_pipeline_id| self.pending_pipeline_id.get() == Some(about_blank_pipeline_id))
     }
 
     /// <https://html.spec.whatwg.org/multipage/#process-the-iframe-attributes>
@@ -344,12 +345,15 @@ impl HTMLIFrameElement {
         // for iframe and frame elements given element and initialInsertion.
         let Some(url) = self.shared_attribute_processing_steps_for_iframe_and_frame_elements()
         else {
+            println!("No url computed");
             // Step 2.2. If url is null, then return.
             return;
         };
+        println!("Loading url {}", url);
 
         // Step 2.3. If url matches about:blank and initialInsertion is true, then:
         if url.matches_about_blank() && mode == ProcessingMode::FirstTime {
+            println!("Synchronously firing load event");
             // We should **not** send a load event in `iframe_load_event_steps`.
             self.already_fired_synchronous_load_event.set(true);
             // Step 2.3.1. Run the iframe load event steps given element.
@@ -490,6 +494,8 @@ impl HTMLIFrameElement {
         self.about_blank_pipeline_id.set(None);
         self.webview_id.set(None);
         self.browsing_context_id.set(None);
+        self.already_fired_synchronous_load_event.set(false);
+        self.pending_navigation.set(false);
     }
 
     pub(crate) fn update_pipeline_id(
@@ -594,6 +600,7 @@ impl HTMLIFrameElement {
     /// This is used to ignore the async load event steps for
     /// the initial blank document if those haven't run yet.
     pub(crate) fn note_pending_navigation(&self) {
+        println!("Form noting pending navigation, was: {}", self.pending_navigation.get());
         self.pending_navigation.set(true);
     }
 
@@ -634,21 +641,23 @@ impl HTMLIFrameElement {
         //
         // TODO: run these step synchronously as part of processing the iframe attributes.
         let should_fire_event = if self.is_initial_blank_document() {
+            println!("Is initial about blank document");
             // If this is the initial blank doc:
             // do not fire if there is a pending navigation,
             // or if the iframe has an src.
-            !self.pending_navigation.get() &&
+            !self.pending_navigation.replace(false) &&
                 !self.upcast::<Element>().has_attribute(&local_name!("src"))
         } else {
             // If this is not the initial blank doc:
             // do not fire if there is a pending navigation.
-            !self.pending_navigation.get()
+            !self.pending_navigation.replace(false)
         };
         // If we already fired a synchronous load event, we shouldn't fire another
         // one in this method.
-        let should_fire_event =
+        let should_really_fire_event =
             !self.already_fired_synchronous_load_event.replace(false) && should_fire_event;
-        if should_fire_event {
+        println!("Should fire event: {} really: {}", should_fire_event, should_really_fire_event);
+        if should_really_fire_event {
             // Step 6. Fire an event named load at element.
             self.upcast::<EventTarget>()
                 .fire_event(atom!("load"), can_gc);
@@ -1056,7 +1065,7 @@ impl<'a> IframeContext<'a> {
             element,
             url: element
                 .shared_attribute_processing_steps_for_iframe_and_frame_elements()
-                .unwrap_or_else("about:blank".into()),
+                .unwrap_or_else(|| ServoUrl::parse("about:blank").unwrap()),
         }
     }
 }

@jdm
Copy link
Copy Markdown
Member

jdm commented Feb 4, 2026

The reason for the timeouts is very silly—each subtest creates an iframe and gives it a name, then uses the name to target that iframe when submitting the form, but the names are not unique. The test that times out tries to submit in an iframe that has already been cleaned up, instead of the one created for that subtest.

The following diff:

diff --git a/tests/wpt/tests/FileAPI/support/send-file-form-helper.js b/tests/wpt/tests/FileAPI/support/send-file-form-helper.js
index d6adf21ec33..39784cd98fb 100644
--- a/tests/wpt/tests/FileAPI/support/send-file-form-helper.js
+++ b/tests/wpt/tests/FileAPI/support/send-file-form-helper.js
@@ -114,6 +114,8 @@ const kTestFallbackXUserDefined = kTestChars.replace(
   (x) => `&#${x.codePointAt(0)};`,
 );

+let frameSuffix = 0;
+
 // formPostFileUploadTest - verifies multipart upload structure and
 // numeric character reference replacement for filenames, field names,
 // and field values using form submission.
@@ -152,7 +154,7 @@ const formPostFileUploadTest = ({
     }

     const formTargetFrame = Object.assign(document.createElement('iframe'), {
-      name: 'formtargetframe',
+      name: 'formtargetframe' + frameSuffix++,
     });
     document.body.append(formTargetFrame);
     testCase.add_cleanup(() => {

yields the following results:

  ▶ OK /FileAPI/file/send-file-form-utf-8.html
  │   ▶ PASS [expected FAIL] Upload file-for-upload-in-form-\u2605\u661f\u2605.txt (JIS X 0201 and JIS X 0208) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-\u263a\U0001f602.txt (Unicode) in UTF-8 form
  └   └ PASS [expected FAIL] Upload file-for-upload-in-form-ABC~\u203e\xa5\u2248\xa4\uff65\u30fb\u2022\u2219\xb7\u263c\u2605\u661f\U0001f31f\u661f\u2605\u263c\xb7\u2219\u2022\u30fb\uff65\xa4\u2248\xa5\u203e~XYZ.txt (Unicode) in UTF-8 form

  ▶ OK /FileAPI/file/send-file-form-controls.html
  │   ▶ PASS [expected FAIL] Upload file-for-upload-in-form-HT-[\t].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-FF-[\x0c].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-DEL-[\x7f].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-ESC-[\x1b].txt (ASCII) in UTF-8 form
  └   └ PASS [expected FAIL] Upload file-for-upload-in-form-SPACE-[ ].txt (ASCII) in UTF-8 form

  ▶ OK /FileAPI/file/send-file-form-punctuation.html
  │   ▶ PASS [expected FAIL] Upload file-for-upload-in-form-EXCLAMATION-MARK-[!].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-DOLLAR-SIGN-[$].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-PERCENT-SIGN-[%].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-AMPERSAND-[&].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-APOSTROPHE-['].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-LEFT-PARENTHESIS-[(].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-RIGHT-PARENTHESIS-[)].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-ASTERISK-[*].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-PLUS-SIGN-[+].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-COMMA-[,].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-FULL-STOP-[.].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-SOLIDUS-[/].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-COLON-[:].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-SEMICOLON-[;].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-EQUALS-SIGN-[=].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-QUESTION-MARK-[?].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-CIRCUMFLEX-ACCENT-[^].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-LEFT-SQUARE-BRACKET-[[].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-RIGHT-SQUARE-BRACKET-[]].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-LEFT-CURLY-BRACKET-[{].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-VERTICAL-LINE-[|].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-RIGHT-CURLY-BRACKET-[}].txt (ASCII) in UTF-8 form
  │   │ PASS [expected FAIL] Upload file-for-upload-in-form-TILDE-[~].txt (ASCII) in UTF-8 form
  └   └ PASS [expected FAIL] Upload 'file-for-upload-in-form-single-quoted.txt' (ASCII) in UTF-8 form

@jdm
Copy link
Copy Markdown
Member

jdm commented Feb 4, 2026

We don't implement the target selection for named targets according to the spec. https://html.spec.whatwg.org/multipage/document-sequences.html#find-a-navigable-by-target-name has a bunch of steps that describe a tree-order based lookup, but we just invoke

pub(crate) fn find_window_proxy_by_name(
&self,
name: &DOMString,
) -> Option<DomRoot<WindowProxy>> {
for (_, proxy) in self.map.borrow().iter() {
if proxy.get_name() == *name {
return Some(DomRoot::from_ref(&**proxy));
}
}
None
}
.

filed #42343.

@jdm
Copy link
Copy Markdown
Member

jdm commented Feb 4, 2026

Oh, there's another reason why this occurs: our map of window proxies never has elements removed from it: #15258

@jdm
Copy link
Copy Markdown
Member

jdm commented Feb 4, 2026

#42344 causes the same tests to pass without any changes to the tests.

[open-url-multi-window-6.htm]
[XMLHttpRequest: open() in document that is not fully active (but may be active) should throw]
expected: FAIL
expected: CRASH
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Seems like there is something funky going on with XMLHttpRequest and documents that aren't fully active. Given that the test was already failing, I don't think this is a big issue and we need to investigate further in a follow-up PR, given that the test fails in all browsers: https://wpt.fyi/results/xhr/open-url-multi-window-6.htm?label=master&product=chrome%5Bexperimental%5D&product=edge%5Bexperimental%5D&product=firefox%5Bexperimental%5D&product=safari%5Bexperimental%5D&product=servo&aligned

Details
pid:14349 assertion `left == right` failed: Attempt to use script or layout while DOM not in a stable state
 0:01.64 pid:14349   left: 1
 0:01.64 pid:14349  right: 0 (thread Script#4, at components/script/dom/document.rs:3984)
 0:04.49 pid:14349    0: servoshell::backtrace::print
 0:04.49 pid:14349              at /home/tvanderlippe/Projects/servo/ports/servoshell/backtrace.rs:18:5
 0:04.49 pid:14349    1: servoshell::panic_hook::panic_hook
 0:04.49 pid:14349              at /home/tvanderlippe/Projects/servo/ports/servoshell/panic_hook.rs:40:17
 0:04.54 pid:14349    2: core::ops::function::Fn::call
 0:04.54 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:79:5
 0:04.61 pid:14349    3: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call
 0:04.61 pid:14349              at /rustc/f8297e351a40c1439a467bbbb6879088047f50b3/library/alloc/src/boxed.rs:1999:9
 0:04.61 pid:14349       std::panicking::panic_with_hook
 0:04.61 pid:14349              at /rustc/f8297e351a40c1439a467bbbb6879088047f50b3/library/std/src/panicking.rs:842:13
 0:04.61 pid:14349    4: std::panicking::panic_handler::{{closure}}
 0:04.61 pid:14349              at /rustc/f8297e351a40c1439a467bbbb6879088047f50b3/library/std/src/panicking.rs:707:13
 0:04.61 pid:14349    5: std::sys::backtrace::__rust_end_short_backtrace
 0:04.61 pid:14349              at /rustc/f8297e351a40c1439a467bbbb6879088047f50b3/library/std/src/sys/backtrace.rs:174:18
 0:04.61 pid:14349    6: __rustc::rust_begin_unwind
 0:04.61 pid:14349              at /rustc/f8297e351a40c1439a467bbbb6879088047f50b3/library/std/src/panicking.rs:698:5
 0:04.63 pid:14349    7: core::panicking::panic_fmt
 0:04.63 pid:14349              at /rustc/f8297e351a40c1439a467bbbb6879088047f50b3/library/core/src/panicking.rs:75:14
 0:04.63 pid:14349    8: core::panicking::assert_failed_inner
 0:04.63 pid:14349              at /rustc/f8297e351a40c1439a467bbbb6879088047f50b3/library/core/src/panicking.rs:434:23
 0:04.63 pid:14349    9: core::panicking::assert_failed
 0:04.63 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs:394:5
 0:04.68 pid:14349   10: script::dom::document::Document::ensure_safe_to_run_script_or_layout
 0:04.68 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/document.rs:3984:9
 0:04.68 pid:14349   11: <script::dom::document::Document as script_bindings::interfaces::DocumentHelpers>::ensure_safe_to_run_script_or_layout
 0:04.68 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/document.rs:6733:9
 0:04.72 pid:14349   12: script_bindings::callback::CallSetup<D>::new
 0:04.72 pid:14349              at /home/tvanderlippe/Projects/servo/components/script_bindings/callback.rs:282:31
 0:04.77 pid:14349   13: script_bindings::codegen::GenericBindings::EventHandlerBinding::EventHandlerNonNull<D>::Call_
 0:04.77 pid:14349              at /home/tvanderlippe/Projects/servo/target/debug/build/script_bindings-a9454c66c35db46d/out/Bindings/EventHandlerBinding.rs:35:17
 0:04.82 pid:14349   14: script::dom::eventtarget::CompiledEventListener::call_or_handle_event
 0:04.82 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/eventtarget.rs:401:49
 0:04.87 pid:14349   15: script::dom::event::inner_invoke
 0:04.87 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/event.rs:1371:27
 0:04.87 pid:14349   16: script::dom::event::invoke
 0:04.87 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/event.rs:1254:17
 0:04.87 pid:14349   17: script::dom::event::Event::dispatch
 0:04.87 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/event.rs:588:17
 0:04.87 pid:14349   18: script::dom::eventtarget::EventTarget::dispatch_event
 0:04.87 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/eventtarget.rs:556:15
 0:04.87 pid:14349   19: script::dom::event::Event::fire
 0:04.87 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/event.rs:731:16
 0:04.87 pid:14349   20: script::dom::eventtarget::EventTarget::fire_event_with_params
 0:04.87 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/eventtarget.rs:941:15
 0:04.87 pid:14349   21: script::dom::eventtarget::EventTarget::fire_event
 0:04.87 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/eventtarget.rs:888:14
 0:04.92 pid:14349   22: script::dom::html::htmliframeelement::HTMLIFrameElement::process_the_iframe_attributes
 0:04.92 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/html/htmliframeelement.rs:363:18
 0:04.92 pid:14349   23: <script::dom::html::htmliframeelement::HTMLIFrameElement as script::dom::virtualmethods::VirtualMethods>::post_connection_steps
 0:04.92 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/html/htmliframeelement.rs:1024:14
 0:04.97 pid:14349   24: script::dom::node::Node::insert::{{closure}}
 0:04.97 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/node.rs:2723:39
 0:05.44 pid:14349   25: core::ops::function::FnOnce::call_once
 0:05.44 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
 0:05.44 pid:14349   26: <script::dom::node::Node::insert::PostConnectionSteps<F> as script::task::NonSendTaskOnce>::run_once
 0:05.44 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/task.rs:81:17
 0:05.44 pid:14349   27: <T as script::task::NonSendTaskBox>::run_box
 0:05.44 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/task.rs:141:14
 0:05.44 pid:14349   28: script::dom::document::Document::remove_script_and_layout_blocker
 0:05.44 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/document.rs:3972:18
 0:05.48 pid:14349   29: script::dom::node::Node::insert
 0:05.48 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/node.rs:2728:25
 0:05.48 pid:14349   30: script::dom::node::Node::pre_insert
 0:05.48 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/node.rs:2528:9
 0:05.48 pid:14349   31: <script::dom::node::Node as script_bindings::codegen::GenericBindings::NodeBinding::Node_Binding::NodeMethods<script::dom::bindings::codegen::DomTypeHolder::DomTypeHolder>>::AppendChild
 0:05.48 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/node.rs:3575:9
 0:05.53 pid:14349   32: script_bindings::codegen::GenericBindings::NodeBinding::Node_Binding::appendChild::{{closure}}::{{closure}}
 0:05.53 pid:14349              at /home/tvanderlippe/Projects/servo/target/debug/build/script_bindings-a9454c66c35db46d/out/Bindings/NodeBinding.rs:1678:60
 0:05.53 pid:14349   33: script_bindings::codegen::GenericBindings::NodeBinding::Node_Binding::appendChild::{{closure}}
 0:05.53 pid:14349              at /home/tvanderlippe/Projects/servo/target/debug/build/script_bindings-a9454c66c35db46d/out/Bindings/NodeBinding.rs:1651:33
 0:05.53 pid:14349   34: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
 0:05.53 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:310:21
 0:05.53 pid:14349   35: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
 0:05.53 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:274:9
 0:05.53 pid:14349   36: std::panicking::catch_unwind::do_call
 0:05.53 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:590:40
 0:05.53 pid:14349   37: __rust_try
 0:05.54 pid:14349   38: std::panicking::catch_unwind
 0:05.54 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:553:19
 0:05.54 pid:14349       std::panic::catch_unwind
 0:05.54 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
 0:05.54 pid:14349   39: mozjs::panic::wrap_panic
 0:05.54 pid:14349              at /home/tvanderlippe/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mozjs-0.14.8/src/panic.rs:22:11
 0:05.54 pid:14349   40: script_bindings::codegen::GenericBindings::NodeBinding::Node_Binding::appendChild
 0:05.54 pid:14349              at /home/tvanderlippe/Projects/servo/target/debug/build/script_bindings-a9454c66c35db46d/out/Bindings/NodeBinding.rs:1651:5
 0:05.56 pid:14349   41: CallJitMethodOp
 0:05.56 pid:14349              at /home/runner/work/mozjs/mozjs/mozjs-sys/./src/jsglue.cpp:682:22
 0:05.57 pid:14349   42: script_bindings::utils::generic_call
 0:05.57 pid:14349              at /home/tvanderlippe/Projects/servo/components/script_bindings/utils.rs:402:5
 0:05.62 pid:14349   43: script_bindings::utils::generic_method
 0:05.62 pid:14349              at /home/tvanderlippe/Projects/servo/components/script_bindings/utils.rs:422:5
 0:05.62 pid:14349   44: _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
 0:05.62 pid:14349   45: _ZN2js9InterpretEP9JSContextRNS_8RunStateE
 0:05.62 pid:14349   46: _ZN2js9RunScriptEP9JSContextRNS_8RunStateE
 0:05.62 pid:14349   47: _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
 0:05.62 pid:14349   48: _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE
 0:05.62 pid:14349   49: _ZN2js9fun_applyEP9JSContextjPN2JS5ValueE
 0:05.62 pid:14349   50: _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
 0:05.62 pid:14349   51: _ZN2js9InterpretEP9JSContextRNS_8RunStateE
 0:05.62 pid:14349   52: _ZN2js9RunScriptEP9JSContextRNS_8RunStateE
 0:05.62 pid:14349   53: _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
 0:05.62 pid:14349   54: _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE
 0:05.62 pid:14349   55: _ZN2JS4CallEP9JSContextNS_6HandleINS_5ValueEEES4_RKNS_16HandleValueArrayENS_13MutableHandleIS3_EE
 0:05.67 pid:14349   56: mozjs::rust::wrappers::Call
 0:05.67 pid:14349              at /home/tvanderlippe/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mozjs-0.14.8/src/rust.rs:1272:51
 0:05.71 pid:14349   57: script_bindings::codegen::GenericBindings::FunctionBinding::Function<D>::Call
 0:05.71 pid:14349              at /home/tvanderlippe/Projects/servo/target/debug/build/script_bindings-a9454c66c35db46d/out/Bindings/FunctionBinding.rs:57:18
 0:05.71 pid:14349   58: script_bindings::codegen::GenericBindings::FunctionBinding::Function<D>::Call_
 0:05.71 pid:14349              at /home/tvanderlippe/Projects/servo/target/debug/build/script_bindings-a9454c66c35db46d/out/Bindings/FunctionBinding.rs:35:23
 0:05.75 pid:14349   59: script::timers::JsTimerTask::invoke
 0:05.75 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/timers.rs:826:34
 0:05.75 pid:14349   60: script::timers::OneshotTimerCallback::invoke
 0:05.75 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/timers.rs:150:57
 0:05.80 pid:14349   61: script::timers::OneshotTimers::fire_timer
 0:05.80 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/timers.rs:424:24
 0:05.84 pid:14349   62: script::dom::globalscope::GlobalScope::fire_timer
 0:05.84 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/dom/globalscope.rs:2935:23
 0:05.84 pid:14349   63: script::timers::TimerListener::handle::{{closure}}
 0:05.84 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/timers.rs:897:24
 0:05.84 pid:14349   64: core::ops::function::FnOnce::call_once
 0:05.84 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
 0:05.84 pid:14349   65: <script::timers::TimerListener::handle::timer_event<F> as script::task::TaskOnce>::run_once
 0:05.84 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/task.rs:54:17
 0:05.91 pid:14349   66: <script::task::CancellableTask<T> as script::task::TaskOnce>::run_once
 0:05.91 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/task.rs:203:24
 0:05.91 pid:14349   67: <T as script::task::TaskBox>::run_box
 0:05.91 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/task.rs:154:14
 0:05.95 pid:14349   68: script::script_thread::ScriptThread::handle_msg_from_script
 0:05.95 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/script_thread.rs:2067:22
 0:05.95 pid:14349   69: script::script_thread::ScriptThread::handle_msgs::{{closure}}
 0:05.95 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/script_thread.rs:1477:30
 0:05.95 pid:14349   70: script::script_thread::ScriptThread::profile_event
 0:05.95 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/script_thread.rs:1712:13
 0:05.95 pid:14349   71: script::script_thread::ScriptThread::handle_msgs
 0:05.95 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/script_thread.rs:1467:32
 0:05.95 pid:14349   72: script::script_thread::ScriptThread::start
 0:05.95 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/script_thread.rs:1082:20
 0:05.95 pid:14349   73: <script::script_thread::ScriptThread as layout_api::ScriptThreadFactory>::create::{{closure}}::{{closure}}
 0:05.95 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/script_thread.rs:504:38
 0:05.99 pid:14349   74: profile_traits::mem::ProfilerChan::run_with_memory_reporting
 0:05.99 pid:14349              at /home/tvanderlippe/Projects/servo/components/shared/profile/mem.rs:143:9
 0:05.99 pid:14349   75: <script::script_thread::ScriptThread as layout_api::ScriptThreadFactory>::create::{{closure}}
 0:05.99 pid:14349              at /home/tvanderlippe/Projects/servo/components/script/script_thread.rs:503:40
 0:06.04 pid:14349   76: std::sys::backtrace::__rust_begin_short_backtrace
 0:06.04 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs:158:18
 0:06.08 pid:14349   77: std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}
 0:06.08 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:559:17
 0:06.12 pid:14349   78: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
 0:06.12 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:274:9
 0:06.17 pid:14349   79: std::panicking::catch_unwind::do_call
 0:06.17 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:590:40
 0:06.17 pid:14349   80: __rust_try
 0:06.17 pid:14349   81: std::panicking::catch_unwind
 0:06.17 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:553:19
 0:06.17 pid:14349       std::panic::catch_unwind
 0:06.17 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
 0:06.17 pid:14349       std::thread::Builder::spawn_unchecked_::{{closure}}
 0:06.17 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:557:30
 0:06.17 pid:14349   82: core::ops::function::FnOnce::call_once{{vtable.shim}}
 0:06.17 pid:14349              at /home/tvanderlippe/.rustup/toolchains/1.91.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
 0:06.17 pid:14349   83: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
 0:06.17 pid:14349              at /rustc/f8297e351a40c1439a467bbbb6879088047f50b3/library/alloc/src/boxed.rs:1985:9
 0:06.17 pid:14349       std::sys::thread::unix::Thread::new::thread_start
 0:06.17 pid:14349              at /rustc/f8297e351a40c1439a467bbbb6879088047f50b3/library/std/src/sys/thread/unix.rs:126:17
 0:06.17 pid:14349   84: <unknown>
 0:06.17 pid:14349   85: <unknown>

[synchronously navigate iframe with initial src == "".]
expected: FAIL

[after the first iframe load event, navigate iframe with initial src == "".]
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This test is considered broken:

// This test is outdated, see
// https://github.com/whatwg/html/issues/3267#issuecomment-2788132131

@TimvdLippe TimvdLippe added the T-linux-wpt Do a try run of the WPT label Feb 6, 2026
@TimvdLippe TimvdLippe requested a review from jdm February 6, 2026 09:50
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Feb 6, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 6, 2026

🔨 Triggering try run (#21746202097) for Linux (WPT)

@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 6, 2026

Test results for linux-wpt from try job (#21746202097):

Flaky unexpected result (31)
  • OK /IndexedDB/idbfactory-open-error-properties.any.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • OK /IndexedDB/idbfactory-open-error-properties.any.worker.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • OK /_mozilla/mozilla/getBoundingClientRect.html (#39668)
    • FAIL [expected PASS] subtest: getBoundingClientRect 1

      assert_equals: expected 62 but got 60.35
      

  • TIMEOUT [expected OK] /_mozilla/mozilla/img_load_more_than_cache.html
    • TIMEOUT [expected PASS] subtest: Test Loading more images than keys obtained in a batch by the image cache

      Test timed out
      

  • CRASH [expected OK] /_webgl/conformance/extensions/webgl-compressed-texture-s3tc-srgb.html
  • CRASH [expected OK] /_webgl/conformance2/wasm/readpixels-2gb-in-4gb-wasm-memory.html
  • OK /content-security-policy/frame-ancestors/frame-ancestors-path-ignored.window.html (#36468)
    • PASS [expected FAIL] subtest: A 'frame-ancestors' CSP directive with a URL that includes a path should be ignored.
  • OK /css/css-shadow/font-face-007.html
    • FAIL [expected PASS] subtest: @font-face from shadow applies to :host

      assert_equals: expected 160 but got 100
      

  • TIMEOUT [expected OK] /fetch/api/redirect/redirect-keepalive.https.any.html (#32153)
    • TIMEOUT [expected PASS] subtest: [keepalive][iframe][load] mixed content redirect; setting up

      Test timed out
      

  • ERROR [expected OK] /fetch/fetch-later/quota/same-origin-iframe/multiple-iframes.https.window.html (#35176)
  • TIMEOUT /fetch/metadata/generated/css-images.sub.tentative.html (#29047)
    • FAIL [expected PASS] subtest: content sec-fetch-site - HTTPS downgrade-upgrade

      assert_unreached: Reached unreachable code
      

  • ERROR [expected TIMEOUT] /html/browsers/browsing-the-web/history-traversal/pageswap/pageswap-initial-navigation.html (#40387)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/005.html (#27062)
    • PASS [expected FAIL] subtest: Link with onclick navigation and href navigation
  • CRASH [expected TIMEOUT] /html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.tentative.w.html
  • TIMEOUT /html/semantics/embedded-content/media-elements/autoplay-allowed-by-feature-policy.https.sub.html (#41404)
    • TIMEOUT [expected PASS] subtest: Feature-Policy header: autoplay * allows same-origin iframes.

      Test timed out
      

  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigate_other_frame_popup.sub.html (#39702)
    • TIMEOUT [expected FAIL] subtest: Sandboxed iframe can not navigate other frame's popup

      Test timed out
      

  • OK /html/semantics/forms/form-submission-0/jsurl-form-submit.tentative.html (#36489)
    • PASS [expected FAIL] subtest: Verifies that form submissions scheduled inside javascript: urls take precedence over the javascript: url's return value.
  • TIMEOUT [expected OK] /html/user-activation/navigation-state-reset-sameorigin.html
    • TIMEOUT [expected PASS] subtest: Post-navigation state reset.

      Test timed out
      

  • OK /html/webappapis/user-prompts/print-during-unload.html (#35944)
    • FAIL [expected PASS] subtest: print() during unload

      assert_array_equals: expected property 1 to be "destination" but got "error: window.print is not a function" (expected array ["start", "destination"] got ["start", "error: window.print is not a function"])
      

  • CRASH [expected OK] /import-maps/multiple-import-maps/url-resolution-conflict.html
  • OK /paint-timing/fcp-only/fcp-video-frame.html (#42360)
    • FAIL [expected PASS] subtest: Video should become contentful when first frame is loaded

      assert_equals: First contentful paint marked too early.  expected 0 but got 1
      

  • ERROR [expected TIMEOUT] /performance-timeline/not-restored-reasons/abort-block-bfcache.window.html
  • TIMEOUT /trusted-types/trusted-types-navigation.html?06-10 (#37920)
    • TIMEOUT [expected FAIL] subtest: Navigate a frame via anchor with javascript:-urls in report-only mode.

      Test timed out
      

    • NOTRUN [expected TIMEOUT] subtest: Navigate a frame via anchor with javascript:-urls w/ default policy in report-only mode.
  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?26-30 (#38807)
    • PASS [expected TIMEOUT] subtest: Navigate a window via form-submission with javascript:-urls in report-only mode.
    • PASS [expected NOTRUN] subtest: Navigate a window via form-submission with javascript:-urls w/ default policy in report-only mode.
    • PASS [expected NOTRUN] subtest: Navigate a frame via form-submission with javascript:-urls in enforcing mode.
    • PASS [expected NOTRUN] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in enforcing mode.
  • OK /webdriver/tests/classic/element_click/center_point.py
    • FAIL [expected PASS] subtest: test_entirely_in_view

      webdriver.error.NoSuchWindowException: no such window (404): No such window
      

  • OK /webdriver/tests/classic/element_click/file_upload.py
    • FAIL [expected PASS] subtest: test_file_upload_state

      webdriver.error.NoSuchWindowException: no such window (404): No such window
      

  • OK /webdriver/tests/classic/get_window_handles/user_prompts.py
    • FAIL [expected PASS] subtest: test_accept[alert]

      webdriver.error.NoSuchWindowException: no such window (404): No such window
      

  • OK [expected ERROR] /webxr/render_state_update.https.html (#27535)
  • CRASH [expected OK] /webxr/xrSession_sameObject.https.html
  • CRASH [expected OK] /xhr/content-type-unmodified.any.html
  • OK /xhr/send-redirect.htm (#32026)
    • FAIL [expected PASS] subtest: XMLHttpRequest: send() - Redirects (basics) (307, GET, content.py)

      assert_equals: expected (string) "GET" but got (object) null
      

Stable unexpected results that are known to be intermittent (41)
  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.worker.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbobjectstore_getAll.any.html (#39276)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbobjectstore_getAll.any.worker.html (#39400)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbrequest-onupgradeneeded.any.html (#38895)
    • PASS [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess
  • OK /IndexedDB/idbrequest-onupgradeneeded.any.worker.html (#38971)
    • PASS [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess
  • OK /IndexedDB/key-conversion-exceptions.any.html (#39305)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

    • FAIL [expected PASS] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() =&gt; {
            cursor.update(value);
          }" threw object "TypeError: cursor.update is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • OK /IndexedDB/key-conversion-exceptions.any.worker.html (#39284)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

    • FAIL [expected PASS] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() =&gt; {
            cursor.update(value);
          }" threw object "TypeError: cursor.update is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • FAIL [expected PASS] /_mozilla/mozilla/sslfail.html (#10760)
  • TIMEOUT [expected OK] /_mozilla/mozilla/window_resize_event.html (#36741)
    • TIMEOUT [expected PASS] subtest: Popup onresize event fires after resizeTo

      Test timed out
      

  • TIMEOUT /content-security-policy/inheritance/location-reload.html (#38983)
    • FAIL [expected PASS] subtest: location.reload() of empty iframe.

      assert_equals: Image should be blocked by CSP after reload. expected "img blocked" but got "img loaded"
      

  • TIMEOUT [expected OK] /credential-management/credentialscontainer-frame-basics.https.html (#39430)
    • TIMEOUT [expected FAIL] subtest: navigator.credentials should be undefined in documents generated from data: URLs.

      Test timed out
      

  • OK /css/css-cascade/layer-cssom-order-reverse.html (#36094)
    • PASS [expected FAIL] subtest: Delete layer invalidates @font-face
  • OK /css/css-cascade/layer-font-face-override.html (#35935)
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 1
  • OK /css/css-fonts/generic-family-keywords-001.html (#37467)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(nastaliq)

      assert_equals: quoted generic(nastaliq) matches  @font-face rule expected 50 but got 30
      

  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-sans-serif (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-rounded (drawing text in a canvas)
  • OK /css/cssom-view/offsetTopLeft-border-box.html (#40826)
    • PASS [expected FAIL] subtest: container: 0
    • PASS [expected FAIL] subtest: container: 1
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Single value - empty name exists
    • PASS [expected FAIL] subtest: Single value - Non-empty name exists
    • PASS [expected FAIL] subtest: Null value should submit nothing
    • PASS [expected FAIL] subtest: Multiple values - name content attribute is ignored
    • PASS [expected FAIL] subtest: setFormValue with an empty FormData should submit nothing
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in name (urlencoded)
    • PASS [expected FAIL] subtest: Newline normalization - \n in value (formdata)
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in value (urlencoded)
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in value (formdata)
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in filename (urlencoded)
    • And 5 more unexpected results...
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • FAIL [expected PASS] subtest: sec-fetch-mode

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

    • PASS [expected FAIL] subtest: sec-fetch-dest
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Cross-site
  • OK /fetch/metadata/generated/css-font-face.sub.tentative.html (#34624)
    • FAIL [expected PASS] subtest: sec-fetch-storage-access - 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-storage-access - Not sent to non-trustworthy cross-site destination

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

  • OK /fetch/metadata/generated/element-iframe.https.sub.html (#40341)
    • PASS [expected FAIL] subtest: sec-fetch-user with user activation
  • 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)
    • FAIL [expected PASS] subtest: aElement.click() before the load event must NOT replace

      assert_equals: expected "http://web-platform.test:8000/common/blank.html?thereplacement" but got "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/resources/code-injector.html?pipe=sub(none)&amp;code=%0A%20%20%20%20const%20a%20%3D%20document.createElement(%22a%22)%3B%0A%20%20%20%20a.href%20%3D%20%22%2Fcommon%2Fblank.html%3Fthereplacement%22%3B%0A%20%20%20%20document.currentScript.before(a)%3B%0A%20%20%20%20a.click()%3B%0A%20%20"
      

  • OK /html/browsers/history/the-history-interface/traverse_the_history_4.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • 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 TIMEOUT] subtest: Non-HTMLElement should not support autofocus
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/update-the-rendering.html (#24145)
    • FAIL [expected TIMEOUT] subtest: "Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks

      assert_array_equals: animationFrame lengths differ, expected array ["autofocus", "scroll", "animationFrame"] length 3, got ["animationFrame"] length 1
      

  • OK /html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html (#39694)
    • PASS [expected FAIL] subtest: Meta refresh is blocked by the allow-scripts sandbox flag at its creation time, not when refresh comes due
  • OK /html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html (#39703)
    • PASS [expected FAIL] subtest: Meta refresh of the original iframe is not blocked if moved into a sandboxed iframe
  • TIMEOUT /html/semantics/embedded-content/media-elements/autoplay-disabled-by-feature-policy.https.sub.html (#41221)
    • TIMEOUT [expected FAIL] subtest: Feature-Policy header: autoplay "none" disallows same-origin iframes.

      Test timed out
      

  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • PASS [expected FAIL] subtest: multipart/form-data: Basic File test (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in name (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in name (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in value (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in value (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in filename (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in filename (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: \n in value (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: \n in value (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: \r\n in value (normal form)
    • And 19 more unexpected results...
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • PASS [expected FAIL] subtest: text/plain: Basic File test (formdata event)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in name (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in name (formdata event)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in value (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in value (formdata event)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in filename (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in filename (formdata event)
    • PASS [expected FAIL] subtest: text/plain: \r\n in name (normal form)
    • PASS [expected FAIL] subtest: text/plain: \r\n in name (formdata event)
    • PASS [expected FAIL] subtest: text/plain: \r\n in value (normal form)
    • And 25 more unexpected results...
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: Basic File test (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in name (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in name (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in filename (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in filename (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \r\n in name (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \r\n in name (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \r\n in value (normal form)
    • And 31 more unexpected results...
  • TIMEOUT [expected ERROR] /html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base.html (#40347)
  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • PASS [expected FAIL] subtest: Reload domContentLoadedEventStart &gt; Original domContentLoadedEventStart
    • PASS [expected FAIL] subtest: Reload domInteractive &gt; Original domInteractive
    • PASS [expected FAIL] subtest: Reload fetchStart &gt; Original fetchStart
  • OK /paint-timing/fcp-only/fcp-with-rtl.html (#42357)
    • FAIL [expected PASS] subtest: FCP should fire when coordinates are negative, if within document scrollable area

      assert_equals: First contentful paint marked too early.  expected 0 but got 1
      

  • OK /resource-timing/test_resource_timing.html (#25720)
    • PASS [expected FAIL] subtest: window.performance.getEntriesByName() and window.performance.getEntriesByNameType() return same data (iframe)
    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (link)

      assert_equals: expected 4.07 but got 4.06
      

  • OK /resource-timing/test_resource_timing.https.html (#25216)
    • PASS [expected FAIL] subtest: window.performance.getEntriesByName() and window.performance.getEntriesByNameType() return same data (iframe)
  • OK /service-workers/service-worker/fetch-event.https.html (#36234)
    • PASS [expected FAIL] subtest: Service Worker falls back to network in fetch event with POST form
  • OK [expected TIMEOUT] /webmessaging/with-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • OK [expected TIMEOUT] /webmessaging/without-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
Stable unexpected results (1)
  • OK /html/user-activation/detached-iframe.html
    • FAIL [expected PASS] subtest: navigator.userActivation retains state even if global is removed

      promise_test: Unhandled rejection with value: object "Error: element click intercepted error"
      

@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 6, 2026

⚠️ Try run (#21746202097) failed!

Copy link
Copy Markdown
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.

Quick note on one of the newly failing test.

Copy link
Copy Markdown
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.

Another comment

// If we already fired a synchronous load event, we shouldn't fire another
// one in this method.
let should_fire_event =
!self.already_fired_synchronous_load_event.replace(false) && should_fire_event;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

So I think the point is not so much to prevent a second load event on the frame, but rather to prevent a load to fire on the document inside the frame.

So this method here is called as part of a message sent to the constellation from the document load steps, and the thing is we should call into this method synchronously and then return, so skipping the whole navigation and document load part. But last time I tried this causes lots of timeouts.

So in this PR you are firing the event synchronously and then skipping it later, but actually we should skip the whole navigation part in that case.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I am confused about your comment

but actually we should skip the whole navigation part in that case.

We are skipping the navigation part. It early-returns, so it never calls navigate_or_reload_child_browsing_context in process_the_iframe_attributes.

The reason we need to have this here is that in post_connection_steps we are calling create_nested_browsing_context when then eventually calls iframe_load_event_steps. That's the part where it does the InitialAboutBlank which should be unobservable. Since it must be unobservable, we should suppress the load event.

A prior version of this PR actually did an early-return in iframe_load_event_steps, but that doesn't work since we still need to call LoadBlocker::terminate and such. Otherwise, it would never finish the WPT test.

Copy link
Copy Markdown
Member

@gterzian gterzian Feb 6, 2026

Choose a reason for hiding this comment

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

Yes you do an early return so you prevent the navigation, which is good(I realized this later, see my other comment).

But, this is only after having created the nested browsing context, which does the whole maybe_queue_document_completion thing.

So ideally we should only create the browsing context and run the iframe load event steps.

self.upcast::<EventTarget>()
.fire_event(atom!("load"), can_gc);
// Step 2.3.2. Return.
return;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

So this is good because it means we are indeed not navigating further.

Not sure why that one test started failing, since it means the load event is fires on window where previously it wasn't

}
}

if mode == ProcessingMode::FirstTime && !element.has_attribute(&local_name!("src")) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Ok so this removal might what got those two load event tests to start failing.

Spec wise I'm not sure what to do. You could leave a separate early return here.

The new method always returns some, where this early return checks if src is set, so you're not hitting it now.

expected: FAIL

[load event does not fire on window.open('about:blank')]
expected: FAIL
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I don't understand how the changes in this pr would affect window.open

@TimvdLippe
Copy link
Copy Markdown
Contributor Author

/html/user-activation/detached-iframe.html fails because its viewport is (0, 0). I assume that's because it hasn't been recomputed yet.

The computed center point is (50, 75.06666666666666), which fails this check:

if x < 0.0 || y < 0.0 || x > viewport.width || y > viewport.height {

@mrobinson Can you help me out here? This particular WPT test was enabled 2 days ago, so unfortunate timing for this PR 😅 Still, I would like to fix it, but I can't seem to trigger a reflow. Things I tried:

self.upcast::<Node>().dirty(NodeDamage::Other);

self.GetContentDocument().expect("Must always have a document initialized").update_the_rendering(can_gc);

if let Some(document) = self.GetContentDocument() {
    document.window().allow_layout_if_necessary();
}

if mode == ProcessingMode::FirstTime && !element.has_attribute(&local_name!("src")) {
// Step 2.1. Let url be the result of running the shared attribute processing steps
// for iframe and frame elements given element and initialInsertion.
let Some(url) = self.shared_attribute_processing_steps_for_iframe_and_frame_elements()
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Ok so I would say your implementation is closer to the spec than what there was before, but the tests at load-pageshow-events-iframe-contentWindow.htm started failing because here you are always returning a url, whereas before there would be an early return if there was no src.

So to pass the tests in load-pageshow-events-iframe-contentWindow.htm, we would need to not run the document load steps for the about blank initial iframe, but that is for another day.

Copy link
Copy Markdown
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.

LGTM with one nit(method signature); other comments are mostly for follow-ups. Thanks for moving us one step closer to compliance with the spec.

@TimvdLippe
Copy link
Copy Markdown
Contributor Author

Okay, I now know why /html/user-activation/detached-iframe.html is failing:

  1. The steps for elements_from_point are in the wrong order if layout hasn't happened. The step to check what the size of the viewport is happens before the self.layout_reflow(QueryMsg::ElementsFromPoint); which means that the viewport might not have been calculated
  2. Since we fire the load event a lot earlier, the ScriptToConstellationMessage::IFrameSizes hasn't been processed yet by the constellation. That's why the iframe doesn't have the update for the size of its viewport.

I don't know if it is possible to say: "hey, wait for the constellation to have finished processing the message"? I can send a message to the constellation and wait for its receiver, but in almost all cases that seems redundant.

@TimvdLippe
Copy link
Copy Markdown
Contributor Author

Also, do we consider this PR blocked on /html/user-activation/detached-iframe.html? I am not sure if I can fix this issue in this PR and don't know how much work it would be to fix it. I would prefer to get this PR across the finish line, since it's already been quite a journey. Given that the test was recently enabled, I don't think it's a big thing, but also want to make sure I create some sort of precedent here to start marking test as failing for the sake of progress.

@jdm
Copy link
Copy Markdown
Member

jdm commented Feb 7, 2026

I'm ok with filing an issue with the investigation work that you've done and accepting the known failure for the time being.

Start with implementing the new algorithms per the spec.
This fixes the case where the load event should be fired,
but only if a src exists and it is about:blank and it is
connected for the very first time.

Part of servo#31973

Signed-off-by: Tim van der Lippe <[email protected]>
@TimvdLippe TimvdLippe force-pushed the start-implementation-shared-loading-steps branch from 303547d to 2691762 Compare February 7, 2026 08:42
@TimvdLippe TimvdLippe marked this pull request as ready for review February 7, 2026 08:42
@TimvdLippe TimvdLippe enabled auto-merge February 7, 2026 08:42
@TimvdLippe TimvdLippe added this pull request to the merge queue Feb 7, 2026
@servo-highfive servo-highfive added the S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. label Feb 7, 2026
Merged via the queue into servo:main with commit cc0e98d Feb 7, 2026
30 checks passed
@TimvdLippe TimvdLippe deleted the start-implementation-shared-loading-steps branch February 7, 2026 09:24
@servo-highfive servo-highfive removed the S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. label Feb 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-awaiting-review There is new code that needs to be reviewed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants