Skip to content

script: Align javascript: URL evaluation closer to the spec.#43496

Merged
jdm merged 3 commits intoservo:mainfrom
jdm:js-eval-result
Mar 26, 2026
Merged

script: Align javascript: URL evaluation closer to the spec.#43496
jdm merged 3 commits intoservo:mainfrom
jdm:js-eval-result

Conversation

@jdm
Copy link
Copy Markdown
Member

@jdm jdm commented Mar 20, 2026

The commit contains several related changes:

  • iframes that load javascript: URLs as part of the initial insertion (ie. <iframe src='javascript:...'>) get a synchronous load event dispatched
  • javascript: URL evaluation that does not result in a string no longer treated like a 204 response
  • iframes that perform a javascript: URL navigation that does not result in a new document no longer block the parent document load event

Testing: Lots of new tests passing.
Fixes: #24901

@jdm jdm changed the title script: Align javscript: URL evaluation closer to the spec. script: Align javascript: URL evaluation closer to the spec. Mar 20, 2026
@jdm
Copy link
Copy Markdown
Member Author

jdm commented Mar 20, 2026

This is in draft status because I need to figure out how to land the changes in #43490 (which I'm fairly confident result in some new test result changes) as well as rebase on top of my other PRs like #43489 and #43491. I think it's still worth doing an initial review of this work, though.

@jdm jdm requested a review from TimvdLippe March 20, 2026 19:09
@jdm
Copy link
Copy Markdown
Member Author

jdm commented Mar 20, 2026

I think the next biggest improvements here will be:

  • Merge Window::load_url with ScriptThread::navigate #43494
  • doing the work to migrate uses of HTMLIFrameElement::navigate_or_reload_child_browsing_context to ScriptThread::navigate
  • replacing the ScriptThread::navigate_to_javascript_url call in HTMLIFrameElement to use ScriptThread::navigate
  • implementing ongoing navigation checks

In short, unifying our various partial algorithm inlining in various places with the full algorithm so we can follow the logic better.

@jdm jdm added the T-linux-wpt Do a try run of the WPT label Mar 20, 2026
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Mar 20, 2026
@github-actions
Copy link
Copy Markdown

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

@github-actions
Copy link
Copy Markdown

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

Flaky unexpected result (44)
  • 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 /FileAPI/url/url-with-fetch.any.html (#21517)
    • PASS [expected FAIL] subtest: Revoke blob URL after calling fetch, fetch should succeed
  • PASS [expected FAIL] /_mozilla/css/linear_gradients_reverse_a.html
  • OK /_mozilla/css/offset_properties_inline.html (#40543)
    • FAIL [expected PASS] subtest: offsetTop

      assert_equals: offsetTop of #inline-1 should be 0. expected 0 but got -1
      

    • FAIL [expected PASS] subtest: offsetLeft

      assert_equals: offsetLeft of #inline-2 should be 40. expected 40 but got 25
      

  • OK /_mozilla/mozilla/getBoundingClientRect.html (#39668)
    • FAIL [expected PASS] subtest: getBoundingClientRect 1

      assert_equals: expected 62 but got 60.35
      

  • ERROR [expected OK] /_mozilla/mozilla/img_find_non_sibling_map.html
  • CRASH [expected PASS] /_mozilla/shadow-dom/move-element-with-ua-shadow-tree-crash.html (#39473)
  • FAIL [expected PASS] /css/css-backgrounds/background-size-042.html
  • OK /css/css-cascade/layer-font-face-override.html (#35935)
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 1
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 2
  • OK /css/css-fonts/variations/at-font-face-font-matching.html (#20684)
    • FAIL [expected PASS] subtest: Matching font-style: 'oblique 0deg' should prefer 'oblique 0deg' over 'oblique 5deg'

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

    • PASS [expected FAIL] subtest: Matching font-style: 'oblique 0deg' should prefer 'oblique -40deg -30deg' over 'italic'
  • 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
      

  • OK [expected ERROR] /fetch/fetch-later/quota/cross-origin-iframe/multiple-iframes.https.window.html
  • OK /fetch/metadata/generated/css-font-face.sub.tentative.html (#34624)
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Not sent to non-trustworthy same-site destination
  • 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 OK] /focus/focus-event-after-switching-iframes.sub.html (#40368)
  • CRASH [expected ERROR] /html/anonymous-iframe/fenced-frame.tentative.https.window.html
  • OK /html/browsers/browsing-the-web/navigating-across-documents/005.html (#27062)
    • PASS [expected FAIL] subtest: Link with onclick navigation and href navigation
  • 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/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • PASS [expected FAIL] subtest: Cross-origin navigation started from unload handler must be ignored
  • OK /html/browsers/history/the-history-interface/traverse_the_history_4.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted

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

  • CRASH [expected TIMEOUT] /html/browsers/history/the-location-interface/location_replace_session_history.html (#41896)
  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html (#29087)
    • TIMEOUT [expected FAIL] subtest: &lt;dialog&gt;-contained autofocus element gets focused when the dialog is shown

      Test timed out
      

  • 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)
    • FAIL [expected PASS] subtest: Meta refresh of the original iframe is not blocked if moved into a sandboxed iframe

      uncaught exception: Error: assert_unreached: The iframe into which the meta was moved must not refresh Reached unreachable code
      

  • TIMEOUT /html/semantics/embedded-content/media-elements/preserves-pitch.html (#40352)
    • PASS [expected TIMEOUT] subtest: Speed-ups should not change the pitch when preservesPitch=true
    • PASS [expected NOTRUN] subtest: Slow-downs should not change the pitch when preservesPitch=true
    • TIMEOUT [expected NOTRUN] subtest: Speed-ups should change the pitch when preservesPitch=false

      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.
  • OK /html/semantics/scripting-1/the-script-element/module/dynamic-import/blob-url.any.html (#33948)
    • FAIL [expected PASS] subtest: Revoking a blob URL immediately after calling import will not fail

      promise_test: Unhandled rejection with value: object "TypeError: Module fetching failed"
      

  • 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/dynamic-markup-insertion/document-write/iframe_005.html
    • FAIL [expected PASS] subtest: document.write external script into iframe write back into parent

      assert_array_equals: lengths differ, expected array [1, 2, 3, 4, 5] length 5, got [1, 2] length 2
      

  • 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"])
      

  • ERROR [expected OK] /intersection-observer/v2/animated-opacity.html (#40827)
  • TIMEOUT [expected OK] /preload/modulepreload-sri.html (#43354)
    • TIMEOUT [expected PASS] subtest: Script should not be loaded if modulepreload's integrity is invalid

      Test timed out
      

  • CRASH [expected OK] /resource-timing/render-blocking-status-link.html (#41664)
  • 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.
  • 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.
  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?31-35 (#38034)
    • PASS [expected TIMEOUT] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in report-only mode.
    • FAIL [expected NOTRUN] subtest: Navigate a window via form-submission with javascript:-urls w/ a default policy throwing an exception in enforcing mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

    • FAIL [expected NOTRUN] subtest: Navigate a window via form-submission with javascript:-urls w/ a default policy throwing an exception in report-only mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

    • FAIL [expected NOTRUN] subtest: Navigate a window via form-submission with javascript:-urls w/ a default policy making the URL invalid in enforcing mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

  • OK /visual-viewport/resize-event-order.html (#41981)
    • PASS [expected FAIL] subtest: Popup: DOMWindow resize fired before VisualViewport.
  • OK /webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html (#22849)
    • FAIL [expected PASS] subtest: buffer-stitching-2

      assert_approx_equals: Stitched sine‑wave buffers at sample rate 43800 sample[36942] |0.003651134204119444 - -0.49443739652633667| = 0.4980885307304561 &gt; 0.0038986 expected -0.49443739652633667 +/- 0.0038986 but got 0.003651134204119444
      

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

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

  • OK /webdriver/tests/classic/element_send_keys/scroll_into_view.py
    • FAIL [expected PASS] subtest: test_element_outside_of_not_scrollable_viewport

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

  • OK /webdriver/tests/classic/take_element_screenshot/screenshot.py
    • ERROR [expected PASS] subtest: test_no_top_browsing_context

      setup error: webdriver.error.NoSuchElementException: no such element (404)
      

  • TIMEOUT [expected OK] /webidl/ecmascript-binding/legacy-factor-function-subclass.window.html
  • 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 (20)
  • 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
      

  • OK [expected TIMEOUT] /content-security-policy/inheritance/document-write-iframe.html (#41195)
    • PASS [expected TIMEOUT] subtest: document.open() keeps inherited CSPs on transient about:blank.
  • OK /css/css-cascade/layer-cssom-order-reverse.html (#36094)
    • PASS [expected FAIL] subtest: Delete layer invalidates @font-face
  • OK /css/css-fonts/generic-family-keywords-001.html (#37467)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(fangsong)

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

    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(khmer-mul)

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

    • 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)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted sans-serif (drawing text in a canvas)

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

    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(khmer-mul) (drawing text in a canvas)

      assert_equals: quoted generic(khmer-mul) matches  @font-face rule expected 125 but got 40
      

    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted ui-serif (drawing text in a canvas)

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

    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-sans-serif (drawing text in a canvas)
  • ERROR [expected OK] /fetch/fetch-later/quota/same-origin-iframe/accumulated-oversized-payload.https.window.html (#41705)
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • PASS [expected FAIL] subtest: sec-fetch-dest
  • ERROR /fetch/metadata/generated/serviceworker.https.sub.html (#36247)
    • PASS [expected FAIL] subtest: sec-fetch-site - Same origin, no options - registration
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html (#20768)
    • PASS [expected FAIL] subtest: Tests that a fragment navigation in the unload handler will not block the initial navigation
  • 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_5.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/document-with-fragment-top.html (#28259)
    • FAIL [expected TIMEOUT] subtest: Autofocus elements in top-level browsing context's documents with "top" fragments should work.

      assert_not_equals: got disallowed value Element node &lt;body&gt;&lt;/body&gt;
      

  • TIMEOUT /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • PASS [expected TIMEOUT] subtest: Non-HTMLElement should not support autofocus
    • TIMEOUT [expected NOTRUN] subtest: Host element with delegatesFocus should support autofocus

      Test timed out
      

  • TIMEOUT [expected OK] /preload/modulepreload-sri-importmap.html (#43354)
    • TIMEOUT [expected PASS] subtest: Script should not be loaded if modulepreload's integrity is invalid

      Test timed out
      

  • OK /preload/prefetch-document.html (#37210)
    • FAIL [expected PASS] subtest: different-site document prefetch with 'as=document' should not be consumed

      assert_equals: expected 2 but got 1
      

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

      assert_equals: expected 59.69 but got 59.68
      

  • OK [expected TIMEOUT] /webmessaging/with-ports/018.html (#24485)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, javascript:
  • OK [expected TIMEOUT] /webmessaging/without-ports/018.html (#24485)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, javascript:
Stable unexpected results (19)
  • OK [expected TIMEOUT] /fullscreen/api/element-ready-check-containing-iframe.html
    • FAIL [expected TIMEOUT] subtest: Element ready check for containing iframe

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

  • OK /html/browsers/browsing-the-web/navigating-across-documents/013.html
    • FAIL [expected PASS] subtest: Link with onclick navigation to javascript url with delayed document.write and href navigation

      assert_array_equals: lengths differ, expected array ["after script", "javascript"] length 2, got ["after script"] length 1
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/014.html
    • FAIL [expected PASS] subtest: Link with javascript onclick form submission script order

      assert_array_equals: lengths differ, expected array ["after script", "submit"] length 2, got ["after script"] length 1
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/015.html
    • FAIL [expected PASS] subtest: Link with javascript onclick and href script order

      assert_array_equals: lengths differ, expected array ["click", "after script", "href"] length 3, got ["click", "after script"] length 2
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-security-check-multi-globals.sub.html
    • FAIL [expected PASS] subtest: Using iframeEl.src

      promise_test: Unhandled rejection with value: object "TypeError: can't access property "body", innerIframe.contentDocument is null"
      

    • FAIL [expected PASS] subtest: Using location.href

      promise_test: Unhandled rejection with value: object "TypeError: can't access property "body", innerIframe.contentDocument is null"
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-task-queuing.html
    • PASS [expected FAIL] subtest: Navigating an iframe via src="" to a javascript: URL before insertion must queue a task
    • PASS [expected FAIL] subtest: Navigating an iframe via src="" to a javascript: URL after insertion must queue a task
  • OK /html/browsers/history/the-location-interface/location_reload_javascript_url.html
    • PASS [expected FAIL] subtest: location_reload_javascript_url
  • OK /html/infrastructure/urls/terminology-0/nontraditional-about-srcdoc.html
    • PASS [expected FAIL] subtest: about:srcdoc navigated via a javascript: URL is treated like a normal about:srcdoc document
  • OK /html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_01.htm
    • PASS [expected FAIL] subtest: javascript: URL creating a document in an about:blank iframe
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_in_src.htm
    • PASS [expected TIMEOUT] subtest: String object: javascript:new String("foo")
    • PASS [expected TIMEOUT] subtest: undefined: javascript:void(0)
    • PASS [expected TIMEOUT] subtest: number: javascript:1
    • PASS [expected TIMEOUT] subtest: boolean: javascript:true
    • PASS [expected TIMEOUT] subtest: null: javascript:null
    • PASS [expected TIMEOUT] subtest: global: javascript:window
    • PASS [expected TIMEOUT] subtest: host object: javascript:document
    • PASS [expected TIMEOUT] subtest: function: javascript:(() =&gt; { return function() {}; })()
    • PASS [expected TIMEOUT] subtest: regexp: javascript:/foo/
    • PASS [expected TIMEOUT] subtest: array: javascript:["foo"]
    • And 3 more unexpected results...
  • OK /html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_initial_insertion.html
    • PASS [expected FAIL] subtest: javascript: URL in iframe src, initial insertion check
  • OK /html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_not_about_blank.html
    • PASS [expected FAIL] subtest: javascript: URL in iframe src, initial src is not about:blank
  • OK /html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_remove_srcdoc.html
    • PASS [expected FAIL] subtest: javascript: URL in iframe src, removing srcdoc
  • OK /html/semantics/embedded-content/the-iframe-element/iframe_javascript_url_xhr.html
    • PASS [expected FAIL] subtest: Image load should not trigger load event for non-initial javascript URL load
    • PASS [expected FAIL] subtest: Load event for initial javascript URL load should be fired after script execution
  • OK /html/semantics/forms/form-submission-0/jsurl-navigation-then-form-submit.html
    • FAIL [expected PASS] subtest: Verifies that form submissions cancel javascript navigations to prevent duplicate load events.

      assert_equals: expected "/formaction.html" but got "blank"
      

  • OK /html/semantics/scripting-1/the-script-element/execution-timing/040.html
    • PASS [expected FAIL] subtest: scheduler: IFRAMEs added with DOM (innerHTML), javascript: URL
  • OK /html/semantics/scripting-1/the-script-element/execution-timing/108.html
    • PASS [expected FAIL] subtest: scheduler: javascript URL in iframe
  • OK /html/semantics/scripting-1/the-script-element/execution-timing/109.html
    • PASS [expected FAIL] subtest: scheduler: javascript URL in iframe, src set via DOM
  • OK /referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html
    • PASS [expected FAIL] subtest: Referrer Policy: iframes with javascript url reuse referrer policy 2
    • FAIL [expected PASS] subtest: Referrer Policy: iframes with javascript url reuse referrer policy 3

      assert_equals: expected (undefined) undefined but got (string) "http://web-platform.test:8000/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html"
      

@github-actions
Copy link
Copy Markdown

⚠️ Try run (#23358873141) failed!

Copy link
Copy Markdown
Contributor

@TimvdLippe TimvdLippe left a comment

Choose a reason for hiding this comment

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

Nice work! Only some nits, the rest I was able to follow as well. Exciting to see so many new tests passing.

@jdm
Copy link
Copy Markdown
Member Author

jdm commented Mar 24, 2026

I'm not going to try to merge #43489 ahead of this one. That test isn't related to javascript: URLs at all; it just fails now due to timing changes with fewer tasks involved.

@jdm
Copy link
Copy Markdown
Member Author

jdm commented Mar 24, 2026

And #43490 doesn't actually affect the test results here at all either. I'm going to deal with that separately, in that case! Full steam ahead!

@jdm jdm marked this pull request as ready for review March 24, 2026 17:53
@jdm jdm requested a review from gterzian as a code owner March 24, 2026 17:53
@servo-highfive servo-highfive added S-awaiting-review There is new code that needs to be reviewed. S-needs-rebase There are merge conflict errors. labels Mar 24, 2026
@jdm jdm added S-needs-code-changes Changes have not yet been made that were requested by a reviewer. and removed S-awaiting-review There is new code that needs to be reviewed. labels Mar 24, 2026
@jdm jdm force-pushed the js-eval-result branch from 58533d2 to 7c3e673 Compare March 24, 2026 18:54
@servo-highfive servo-highfive added S-awaiting-review There is new code that needs to be reviewed. and removed S-needs-code-changes Changes have not yet been made that were requested by a reviewer. S-needs-rebase There are merge conflict errors. labels Mar 24, 2026
@jdm
Copy link
Copy Markdown
Member Author

jdm commented Mar 24, 2026

With the prior test failure analysis from #24901 (comment) I'm going to merge this.

@jdm jdm enabled auto-merge March 24, 2026 18:55
@jdm jdm added this pull request to the merge queue Mar 24, 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 Mar 24, 2026
@yezhizhen yezhizhen removed this pull request from the merge queue due to a manual request Mar 25, 2026
@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 Mar 25, 2026
@TimvdLippe TimvdLippe added this pull request to the merge queue Mar 25, 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 Mar 25, 2026
@TimvdLippe TimvdLippe removed this pull request from the merge queue due to a manual request Mar 25, 2026
@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 Mar 25, 2026
@TimvdLippe TimvdLippe added this pull request to the merge queue Mar 25, 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 Mar 25, 2026
@yezhizhen yezhizhen removed this pull request from the merge queue due to a manual request Mar 25, 2026
@servo-highfive servo-highfive added S-needs-rebase There are merge conflict errors. and removed S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. labels Mar 25, 2026
@yezhizhen
Copy link
Copy Markdown
Member

Merge conflict. Aborting early to avoid bloating.

@jdm jdm force-pushed the js-eval-result branch from 7c3e673 to 73c9428 Compare March 26, 2026 00:58
@servo-highfive servo-highfive removed the S-needs-rebase There are merge conflict errors. label Mar 26, 2026
@jdm jdm enabled auto-merge March 26, 2026 00:58
@jdm jdm added this pull request to the merge queue Mar 26, 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 Mar 26, 2026
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Mar 26, 2026
@servo-highfive servo-highfive added S-tests-failed The changes caused existing tests to fail. and removed S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. labels Mar 26, 2026
@jdm jdm added this pull request to the merge queue Mar 26, 2026
@servo-highfive servo-highfive added S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. and removed S-tests-failed The changes caused existing tests to fail. labels Mar 26, 2026
Merged via the queue into servo:main with commit db3daa4 Mar 26, 2026
36 checks passed
@jdm jdm deleted the js-eval-result branch March 26, 2026 04:13
@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 Mar 26, 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

4 participants