Skip to content

Base: Implement GenericReceiverSet#41071

Merged
jdm merged 14 commits intoservo:mainfrom
Narfinger:gener-channel-set
Jan 7, 2026
Merged

Base: Implement GenericReceiverSet#41071
jdm merged 14 commits intoservo:mainfrom
Narfinger:gener-channel-set

Conversation

@Narfinger
Copy link
Copy Markdown
Contributor

@Narfinger Narfinger commented Dec 5, 2025

This implements GenericReceiverSet similar to IpcReceiverSet. This allows us to wait on a group of channels.

IpcReceiverSet was allowed to use IpcReceivers of different type, i.e., IpcReceiver<Foo> and IpcReceiver<Bar> in the same select query. This changes with GenericReceiverSet to only allow one type, i.e., GenericReceiver<Foo>. As this functionality was only used in the CoreResourceThread, we changed the setup slightly for the memory reporter.

With this we also change the implementation of CoreResourceThread to now use the GenericReceiverSet.

Signed-off-by: Narfinger [email protected]

Testing: New testcases were added to GenericReceiverSet and browsing works normally.

@Narfinger Narfinger marked this pull request as ready for review December 5, 2025 11:03
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Dec 5, 2025
@jschwe
Copy link
Copy Markdown
Member

jschwe commented Dec 6, 2025

FYI, you need to use backticks, with single quotes Foo<bar> will render as 'Foo' (note the missing <bar>). I edited the description for you.

@Narfinger Narfinger force-pushed the gener-channel-set branch 4 times, most recently from 47c25cf to 8f47b63 Compare December 11, 2025 09:18
Copy link
Copy Markdown
Member

@jdm jdm left a comment

Choose a reason for hiding this comment

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

Implementation looks good; I just have a few questions about the unit tests.

@servo-highfive servo-highfive removed the S-awaiting-review There is new code that needs to be reviewed. label Dec 13, 2025
@jdm jdm added the S-awaiting-answer Someone asked a question that requires an answer. label Dec 13, 2025
@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 Dec 15, 2025
@servo-highfive servo-highfive removed the S-needs-rebase There are merge conflict errors. label Dec 15, 2025
@jdm jdm added this pull request to the merge queue Dec 15, 2025
@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 Dec 15, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Dec 15, 2025
@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 Dec 15, 2025
@servo-highfive servo-highfive removed the S-tests-failed The changes caused existing tests to fail. label Dec 15, 2025
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Dec 15, 2025

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
831 1 830 0
View the top 1 failed test(s) by shortest run time
libservo::site_data::test_clear_cookies
Stack Traces | 0.277s run time
thread 'test_clear_cookies' (25738) panicked at .../servo/tests/site_data.rs:57:5:
assertion `left == right` failed
  left: Err(EvaluationFailure(None))
 right: Ok(String(""))
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::assert_failed_inner
   3: core::panicking::assert_failed
   4: core::ops::function::FnOnce::call_once
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@yezhizhen yezhizhen enabled auto-merge December 16, 2025 08:33
@yezhizhen
Copy link
Copy Markdown
Member

The UT is stuck.. I've rerun multiple times but still...

@yezhizhen
Copy link
Copy Markdown
Member

I clicked "update branch" in UI. UT finally starts to run.

@yezhizhen
Copy link
Copy Markdown
Member

Emm the same test is still failing.
TRY 3 FAIL [ 0.176s] (223/831) libservo::site_data test_clear_cookies:

stderr ───
    error: XDG_RUNTIME_DIR not set in the environment.
    libEGL warning: egl: failed to create dri2 screen

    thread 'ResourceManager' (28112) panicked at components/net/resource_thread.rs:278:33:
    assertion `left == right` failed
      left: 0
     right: 2
    stack backtrace:
       0: __rustc::rust_begin_unwind
       1: core::panicking::panic_fmt
       2: core::panicking::assert_failed_inner
       3: core::panicking::assert_failed
       4: net::resource_thread::ResourceChannelManager::start
       5: profile_traits::mem::ProfilerChan::run_with_memory_reporting
    note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

    thread 'Script#1' (28158) panicked at components/script/dom/document.rs:5565:33:
    called `Result::unwrap()` on an `Err` value: Disconnected

@Narfinger
Copy link
Copy Markdown
Contributor Author

Ok let me check out the test.

@Narfinger
Copy link
Copy Markdown
Contributor Author

I added your suggestion and reverted the wpt expected values. Perhaps there is something wrong with the WPT testing on my machine. Can you update the expectations?

We add some channels and wait for at least one of the channels to send a
message.
Under the hood it uses crossbeam select and IpcReceiverSet.

We changes the implementation of IpcReceiverSet to use
GenericReceiverSet in the CoreResourceThread setup.

Signed-off-by: Narfinger <[email protected]>
@jdm jdm added the T-linux-wpt Do a try run of the WPT label Jan 6, 2026
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Jan 6, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Jan 6, 2026

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

@github-actions
Copy link
Copy Markdown

github-actions bot commented Jan 6, 2026

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

Flaky unexpected result (31)
  • CRASH [expected PASS] /_mozilla/shadow-dom/move-element-with-ua-shadow-tree-crash.html (#39473)
  • OK /_mozilla/webxr/create_session.https.html
    • FAIL [expected PASS] subtest: create_session

      can't access property "simulateDeviceConnection", navigator.xr.test is undefined
      

  • OK /_mozilla/webxr/obtain_frame.https.html
    • FAIL [expected PASS] subtest: obtain_frame

      promise_test: Unhandled rejection with value: object "TypeError: can't access property "simulateDeviceConnection", navigator.xr.test is undefined"
      

  • OK /_webgl/conformance/textures/misc/texture-upload-size.html (#21770)
    • FAIL [expected PASS] subtest: WebGL test #77

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

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

      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 #81

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

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

      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
      

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

  • FAIL [expected PASS] /css/css-backgrounds/background-size-041.html
  • FAIL [expected PASS] /css/css-backgrounds/border-image-repeat-space-9.html
  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted cursive (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(nastaliq) (drawing text in a canvas)
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Single value - empty name exists
  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/sandboxed-iframe.https.window.html (#41704)
  • TIMEOUT /fetch/metadata/generated/css-images.sub.tentative.html (#29047)
    • TIMEOUT [expected PASS] subtest: background-image sec-fetch-user - Not sent to non-trustworthy same-site destination

      Test timed out
      

  • CRASH [expected OK] /html/browsers/browsing-the-web/overlapping-navigations-and-traversals/nav-cancelation-1.html
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • CRASH [expected OK] /html/browsers/history/the-location-interface/replace-with-nested-iframe.html
  • TIMEOUT [expected OK] /html/semantics/embedded-content/media-elements/audio_loop_base.html (#41122)
    • NOTRUN [expected PASS] subtest: Check if audio.loop is set to true that expecting the seeking event is fired more than once
  • OK /html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-nav-location-assign.html (#32863)
    • FAIL [expected PASS] subtest: Navigating iframe loading='lazy' before it is loaded: location.assign

      uncaught exception: Error: assert_equals: expected "http://web-platform.test:8000/html/semantics/embedded-content/the-iframe-element/support/blank.htm?nav" but got "http://web-platform.test:8000/html/semantics/embedded-content/the-iframe-element/support/blank.htm?src"
      

  • 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/text-plain.window.html (#28687)
    • FAIL [expected PASS] subtest: text/plain: Basic File test (normal form)

      assert_equals: expected "basic=file-test.txt\r\n" but got ""
      

    • PASS [expected FAIL] subtest: text/plain: \r\n in name (normal form)
    • PASS [expected FAIL] subtest: text/plain: \r\n in value (formdata event)
  • OK /html/webappapis/user-prompts/print-during-unload.html (#35944)
    • PASS [expected FAIL] subtest: print() during unload
  • OK /mixed-content/tentative/autoupgrades/mixed-content-cors.https.sub.html (#41123)
    • FAIL [expected PASS] subtest: Cross-Origin video should get upgraded even if CORS is set

      assert_equals: Length. Other host expected 1 but got Infinity
      

  • PASS [expected FAIL] /png/apng/fcTL-dispose-none.html
  • OK /preload/prefetch-document.html (#37210)
    • PASS [expected FAIL] subtest: different-site document prefetch with 'as=document' should not be consumed
  • 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?06-10 (#37920)
    • PASS [expected TIMEOUT] subtest: Navigate a frame via anchor with javascript:-urls w/ default policy in report-only mode.
    • FAIL [expected NOTRUN] subtest: Navigate a window via anchor 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 anchor 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!\""
      

  • 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.
  • CRASH [expected OK] /url/url-setters.any.worker.html?include=javascript
  • CRASH [expected OK] /wasm/core/memory64/call_indirect64.wast.js.html
  • OK [expected TIMEOUT] /webmessaging/without-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • 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
      

  • ERROR [expected OK] /workers/baseurl/alpha/sharedworker-in-worker.html (#21315)
  • OK /xhr/send-redirect.htm (#32026)
    • FAIL [expected PASS] subtest: XMLHttpRequest: send() - Redirects (basics) (307, POST, content.py)

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

Stable unexpected results that are known to be intermittent (25)
  • 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
      

  • 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-fonts/generic-family-keywords-001.html (#37467)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(nastaliq)
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • PASS [expected FAIL] subtest: sec-fetch-mode
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Same site
  • ERROR /fetch/metadata/generated/serviceworker.https.sub.html (#36247)
    • PASS [expected FAIL] subtest: sec-fetch-site - Same origin, no options - registration
  • ERROR [expected OK] /focus/focus-event-after-switching-iframes.sub.html (#40368)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html (#28691)
    • PASS [expected FAIL] subtest: load event does not fire on window.open('about:blank')
  • OK [expected TIMEOUT] /html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.html (#30970)
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus should support autofocus

      assert_equals: expected Element node &lt;div autofocus=""&gt;&lt;/div&gt; but got Element node &lt;body&gt;&lt;/body&gt;
      

    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus including no focusable descendants should be skipped

      assert_equals: expected Element node &lt;input autofocus=""&gt;&lt;/input&gt; but got Element node &lt;body&gt;&lt;div autofocus=""&gt;&lt;/div&gt;&lt;input autofocus=""&gt;&lt;/body&gt;
      

    • FAIL [expected NOTRUN] subtest: Area element should support autofocus

      promise_test: Unhandled rejection with value: object "TypeError: can't access property "appendChild", w.document.querySelector(...) is null"
      

  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • PASS [expected FAIL] subtest: Reload domComplete &gt; Original domComplete
    • PASS [expected FAIL] subtest: Reload domContentLoadedEventEnd &gt; Original domContentLoadedEventEnd
    • PASS [expected FAIL] subtest: Reload domContentLoadedEventStart &gt; Original domContentLoadedEventStart
    • PASS [expected FAIL] subtest: Reload fetchStart &gt; Original fetchStart
    • PASS [expected FAIL] subtest: Reload loadEventEnd &gt; Original loadEventEnd
    • PASS [expected FAIL] subtest: Reload loadEventStart &gt; Original loadEventStart
  • FAIL [expected PASS] /png/apng/acTL-plays-one.html (#41218)
  • OK /preload/preload-error.sub.html (#37177)
    • PASS [expected FAIL] subtest: 404 (image): main
    • FAIL [expected PASS] subtest: 404 (style): main

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • FAIL [expected PASS] subtest: 404 (script): main

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • PASS [expected FAIL] subtest: CORS (fetch): main
  • CRASH [expected OK] /resource-timing/render-blocking-status-link.html (#41664)
  • TIMEOUT /resource-timing/test_resource_timing.html (#25720)
    • PASS [expected FAIL] subtest: window.performance.getEntriesByName() and window.performance.getEntriesByNameType() return same data (xmlhttprequest)
    • PASS [expected FAIL] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (xmlhttprequest)
  • TIMEOUT /resource-timing/test_resource_timing.https.html (#25216)
    • PASS [expected FAIL] subtest: window.performance.getEntriesByName() and window.performance.getEntriesByNameType() return same data (xmlhttprequest)
  • 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
Stable unexpected results (4)
  • OK /_mozilla/mozilla/interfaces.https.html
    • FAIL [expected PASS] subtest: Interfaces exposed on the window

      assert_true: If this is failing: DANGER, are you sure you want to expose the new interface VisualViewport to all webpages as a property on the global? expected true got false
      

  • OK [expected TIMEOUT] /cookiestore/cookieStore_delete_arguments.https.any.html
    • PASS [expected TIMEOUT] subtest: cookieStore.delete with positional empty name
    • PASS [expected NOTRUN] subtest: cookieStore.delete with empty name in options
    • PASS [expected NOTRUN] subtest: cookieStore.delete with maximum cookie name size
    • FAIL [expected NOTRUN] subtest: cookieStore.delete with a __Host- prefix should not have a domain

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • PASS [expected NOTRUN] subtest: cookieStore.delete with whitespace
  • CRASH [expected TIMEOUT] /cookiestore/cookieStore_set_arguments.https.any.html
  • OK [expected TIMEOUT] /cookiestore/cookieStore_special_names.https.any.html
    • FAIL [expected TIMEOUT] subtest: cookieStore.set a nameless cookie cannot have __Host- prefix

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • FAIL [expected NOTRUN] subtest: cookieStore.set a nameless cookie cannot have __Secure- prefix

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • FAIL [expected NOTRUN] subtest: cookieStore.set a nameless cookie cannot have __Http- prefix

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • FAIL [expected NOTRUN] subtest: cookieStore.set a nameless cookie cannot have __Host-Http- prefix

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • FAIL [expected NOTRUN] subtest: cookieStore.set a nameless cookie cannot have __Host- prefix

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • FAIL [expected NOTRUN] subtest: cookieStore.set a nameless cookie cannot have __Host- prefix

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • FAIL [expected NOTRUN] subtest: cookieStore.set a nameless cookie cannot have __Secure- prefix

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • FAIL [expected NOTRUN] subtest: cookieStore.set a nameless cookie cannot have __Secure- prefix

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • FAIL [expected NOTRUN] subtest: cookieStore.set a nameless cookie cannot have __Http- prefix

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • FAIL [expected NOTRUN] subtest: cookieStore.set a nameless cookie cannot have __Http- prefix

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

    • And 2 more unexpected results...

@github-actions
Copy link
Copy Markdown

github-actions bot commented Jan 6, 2026

⚠️ Try run (#20755628182) failed!

Signed-off-by: Josh Matthews <[email protected]>
@jdm
Copy link
Copy Markdown
Member

jdm commented Jan 6, 2026

FWIW, it's now possible to do ./mach update-wpt https://github.com/servo/servo/actions/runs/20755628182 after #41257.

Signed-off-by: Josh Matthews <[email protected]>
@jdm jdm enabled auto-merge January 6, 2026 17:49
Signed-off-by: Josh Matthews <[email protected]>
@jdm jdm added this pull request to the merge queue Jan 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 Jan 7, 2026
Merged via the queue into servo:main with commit 384db99 Jan 7, 2026
29 checks passed
@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 Jan 7, 2026
@Narfinger Narfinger deleted the gener-channel-set branch January 7, 2026 08:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-awaiting-answer Someone asked a question that requires an answer. 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.

6 participants