Skip to content

script: Update media to include fix for AudioBufferSourceNode.loop#41075

Merged
jdm merged 2 commits intoservo:mainfrom
Taym95:fix-bufferSource-loop
Dec 10, 2025
Merged

script: Update media to include fix for AudioBufferSourceNode.loop#41075
jdm merged 2 commits intoservo:mainfrom
Taym95:fix-bufferSource-loop

Conversation

@Taym95
Copy link
Copy Markdown
Member

@Taym95 Taym95 commented Dec 5, 2025

Fix in servo/media#476:

Previously:
the moment we set bufferSource.loop = true, the node hit the early “extreme edge case” check, decided “I refuse to output”, triggered onended, and returned silence. So the loop never got a chance to run.

Now:

Early bailout is removed(no idea why was there in first place).
The per tick offset is guaranteed to be a sensible value with respect to the loop range (wrapped if extreme).
The normal mixing code runs, updating pos each tick and respecting the loop region

Testing: I tested this manually, it would be nice to add a test for it, and I’m surprised there isn’t one yet.
Fixes: #41073

@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Dec 5, 2025
@Taym95 Taym95 added the T-linux-wpt Do a try run of the WPT label Dec 5, 2025
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Dec 5, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 5, 2025

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

@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 5, 2025

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

Flaky unexpected result (30)
  • OK /IndexedDB/idbfactory_open.any.html
    • FAIL [expected PASS] subtest: Calling open() with version argument 1.5 should not throw.

      assert_equals: version expected 1 but got 9007199254740991
      

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

      assert_equals: expected 62 but got 60.35
      

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

  • ERROR [expected TIMEOUT] /_mozilla/webxr/sessionavailable.https.html
  • OK /content-security-policy/frame-ancestors/frame-ancestors-path-ignored.window.html (#36468)
    • FAIL [expected PASS] subtest: A 'frame-ancestors' CSP directive with a URL that includes a path should be ignored.

      assert_unreached: The IFrame should have been blocked (or cross-origin). It wasn't. Reached unreachable code
      

  • 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-042.html
  • OK /css/css-cascade/layer-cssom-order-reverse.html (#36094)
    • PASS [expected FAIL] subtest: Delete layer invalidates @font-face
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Null value should submit nothing
  • 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."
      

  • CRASH [expected OK] /html/anonymous-iframe/local-storage.tentative.https.window.html
  • 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='about:blank'

      assert_unreached: load should not be fired Reached unreachable code
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
    • PASS [expected FAIL] subtest: aElement.click() before the load event must NOT replace
  • TIMEOUT [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 /html/semantics/embedded-content/media-elements/audio_loop_seek_to_eos.html
    • FAIL [expected PASS] subtest: seeking to the end of looping audio

      promise_test: Unhandled rejection with value: object "TypeError: this argument is not a finite floating-point value"
      

  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: Basic File test (normal form)

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

    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: single quote in name (normal form)
  • OK /html/semantics/scripting-1/the-script-element/execution-timing/077.html (#22139)
    • FAIL [expected PASS] subtest: adding several types of scripts through the DOM and removing some of them confuses scheduler

      assert_array_equals: expected property 1 to be "Script #1 ran" but got "Script #3 ran" (expected array ["Script #2 ran", "Script #1 ran", "Script #3 ran", "Script #4 ran"] got ["Script #2 ran", "Script #3 ran", "Script #4 ran", "Script #1 ran"])
      

  • CRASH [expected OK] /html/webappapis/timers/cleartimeout-clearinterval.any.html
  • OK /mixed-content/tentative/autoupgrades/audio-upgrade.https.sub.html
    • FAIL [expected PASS] subtest: Audio autoupgraded

      assert_equals: Length expected 1 but got Infinity
      

  • OK /preload/preload-invalid-resources.html (#39091)
    • PASS [expected FAIL] subtest: Preloading an invalid image (missing) should preload and not re-fetch
  • CRASH [expected TIMEOUT] /referrer-policy/gen/top.meta/unsafe-url/svg-a-tag.http.html
  • CRASH [expected OK] /resource-timing/initiator-type/embed.html
  • CRASH [expected TIMEOUT] /trusted-types/navigate-to-javascript-url-csp-headers.html
  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?01-05 (#38975)
    • PASS [expected TIMEOUT] subtest: Navigate a window via anchor with javascript:-urls in report-only mode.
    • PASS [expected NOTRUN] subtest: Navigate a window via anchor with javascript:-urls w/ default policy in report-only mode.
    • PASS [expected NOTRUN] subtest: Navigate a frame via anchor with javascript:-urls in enforcing mode.
  • CRASH [expected OK] /trusted-types/trusted-types-reporting-for-DedicatedWorker-ServiceWorkerContainer-register.https.html
  • CRASH [expected TIMEOUT] /uievents/mouse/cancel-mousedown-in-subframe.html
  • CRASH [expected OK] /webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html
  • OK /webdriver/tests/classic/delete_session/delete.py
    • FAIL [expected PASS] subtest: test_accepted_beforeunload_prompt

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

  • OK /webdriver/tests/classic/perform_actions/wheel.py
    • FAIL [expected PASS] subtest: test_null_response_value

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

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

    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(nastaliq)
  • OK /css/css-fonts/generic-family-keywords-002.html (#40929)
    • PASS [expected FAIL] subtest: font-family: -webkit-serif treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-sans-serif treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-cursive treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-fantasy treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-monospace treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-system-ui treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-math treated as <font-family>, not <generic-name>
    • FAIL [expected PASS] subtest: font-family: -webkit-generic(fangsong) treated as <font-family>, not <generic-name>

      assert_equals: expected 50 but got 30
      

    • FAIL [expected PASS] subtest: font-family: -webkit-generic(kai) treated as <font-family>, not <generic-name>

      assert_equals: expected 50 but got 30
      

    • FAIL [expected PASS] subtest: font-family: -webkit-generic(khmer-mul) treated as <font-family>, not <generic-name>

      assert_equals: expected 50 but got 30
      

    • And 12 more unexpected results...
  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(nastaliq) (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-sans-serif (drawing text in a canvas)
  • OK [expected TIMEOUT] /fetch/api/redirect/redirect-keepalive.https.any.html (#32153)
    • PASS [expected TIMEOUT] subtest: [keepalive][iframe][load] mixed content redirect; setting up
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • PASS [expected FAIL] subtest: sec-fetch-mode
    • FAIL [expected PASS] subtest: sec-fetch-storage-access - Cross-site

      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-origin destination

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

  • OK /fetch/metadata/generated/element-img-environment-change.https.sub.html (#30111)
    • PASS [expected FAIL] subtest: sec-fetch-site - Same origin, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Cross-Site -> Same Origin, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Cross-Site -> Cross-Site, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Same-Origin -> Same-Site, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Same-Origin -> Cross-Site, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Same-Site -> Same-Site, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Same-Site -> Cross-Site, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-mode - no attributes
    • PASS [expected FAIL] subtest: sec-fetch-mode - attributes: crossorigin
    • And 4 more unexpected results...
  • OK /fetch/metadata/generated/element-img-environment-change.sub.html (#30111)
    • PASS [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy same-origin destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy same-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy cross-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-mode - Not sent to non-trustworthy same-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-mode - Not sent to non-trustworthy cross-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-dest - Not sent to non-trustworthy same-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-dest - Not sent to non-trustworthy cross-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-user - Not sent to non-trustworthy same-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Not sent to non-trustworthy same-site destination, no attributes
  • 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-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/refresh/same-document-refresh.html (#34597)
    • FAIL [expected PASS] subtest: Same-Document Referrer from Refresh

      assert_equals: original page loads expected "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section" but got "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section#section"
      

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

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Host element with delegatesFocus should support autofocus
    • NOTRUN [expected FAIL] subtest: Host element with delegatesFocus including no focusable descendants should be skipped
    • NOTRUN [expected FAIL] subtest: Area element should support autofocus
  • 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 /navigation-timing/test-navigation-type-reload.html (#33334)
    • PASS [expected FAIL] subtest: Reload domComplete > Original domComplete
    • PASS [expected FAIL] subtest: Reload domContentLoadedEventStart > Original domContentLoadedEventStart
    • PASS [expected FAIL] subtest: Reload domInteractive > Original domInteractive
    • 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 /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 /preload/preload-error.sub.html (#37177)
    • FAIL [expected PASS] subtest: success (fetch): main

      assert_greater_than: http://web-platform.test:8000/preload/resources/dummy.xml?label=fetch should be loaded expected a number greater than 0 but got 0
      

  • 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
      

  • OK [expected ERROR] /webxr/render_state_update.https.html (#27535)
Stable unexpected results (8)
  • OK /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-one-sample-loop.html
    • FAIL [expected PASS] subtest: X Rendered data: Expected 1 for all values but found 1000 unexpected values: Index Actual [0] 0 [1] 0 [2] 0 [3] 0 ...and 996 more errors.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: < [one-sample-loop] 1 out of 1 assertions were failed.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: # AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.

      assert_true: expected true got false
      

  • OK /webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiosource-time-limits.html
    • FAIL [expected PASS] subtest: buffersource: huge stop time

      assert_array_equals: Output from AudioBufferSource.stop(1e+300) expected property 0 to be 1 but got 0 (expected array object "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" got object "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0")
      

  • OK /webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html
    • FAIL [expected PASS] subtest: Test correct signal flow and output value after chaining .connect() on gain nodes

      assert_array_approx_equals: Output of chained gain nodes should be input * 0.5 * 0.25 = 0.125 property 0, expected 0.125 +/- 0.000001, expected 0.125 but got 0
      

  • OK /webaudio/the-audio-api/the-audioparam-interface/audioparam-cancel-and-hold.html
    • FAIL [expected PASS] subtest: X Expected value for cancelling linearRampToValueAtTime: linearRampToValue(0, 0.5) at time 0.25 is not close to 0.5102040767669678 within a relative error of 0.000083998 (RelErr=1). Got 0.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: < [linear] 1 out of 3 assertions were failed.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: X Expected value for cancelling exponentialRampToValue(0.001, 0.5) at time 0.25 is not close to 0.033932216465473175 within a relative error of 0.0000018664 (RelErr=1). Got 0.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: < [exponential] 1 out of 3 assertions were failed.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: X Expected value for cancelling setValueCurveAtTime([1,0], 0.01, 0.49) at time 0.25 is not close to 0.510204081632653 within a relative error of 9.5368e-9 (RelErr=1). Got 0.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: X Expected value for cancelling setTargetAtTime(0, 0.01, 0.1) at time 0.25 is not close to 0.09071795642375946 within a relative error of 0.000003121 (RelErr=1). Got 0.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: X Expected value for cancelling Post cancellation linearRampToValueAtTime: linearRampToValue(0, 0.5) at time 0.25 is not close to 0.5102040767669678 within a relative error of 0.000083998 (RelErr=1). Got 0.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: < [post cancel: Linear] 1 out of 4 assertions were failed.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: X Expected value for cancelling Post cancel exponentialRampToValueAtTime: linearRampToValue(0, 0.5) at time 0.25 is not close to 0.5102040767669678 within a relative error of 0.000083998 (RelErr=1). Got 0.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: < [post cancel: Exponential] 1 out of 4 assertions were failed.

      assert_true: expected true got false
      

    • And 6 more unexpected results...
  • OK /webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html
    • FAIL [expected PASS] subtest: X Handled setValueCurve exception so output: Expected 1 for all values but found 6000 unexpected values: Index Actual [0] 0 [1] 0 [2] 0 [3] 0 ...and 5996 more errors.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: < [catch-exception] 1 out of 1 assertions were failed.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: # AUDIT TASK RUNNER FINISHED: 5 out of 7 tasks were failed.

      assert_true: expected true got false
      

  • OK /webaudio/the-audio-api/the-audioparam-interface/setTargetAtTime-after-event-within-block.html
    • FAIL [expected PASS] subtest: setTargetAtTime() after setValueAtTime()

      assert_equals: default gain at sample 0 expected 1 but got 0
      

  • OK /webaudio/the-audio-api/the-audioparam-interface/setValueAtTime-within-block.html
    • FAIL [expected PASS] subtest: Test setValueAtTime with start time not on a block boundary

      assert_equals: default gain at sample 0 expected 1 but got 0
      

  • OK /webaudio/the-audio-api/the-pannernode-interface/panner-automation-position.html
    • FAIL [expected PASS] subtest: X 1-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, left channel does not equal [-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304,-0.7071067690849304...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. Index Actual Expected AbsError RelError Test threshold [0] 0.0000000000000000e+0 -7.0710676908493042e-1 7.0710676908493042e-1 1.0000000000000000e+0 0.0000000000000000e+0 [1] 0.0000000000000000e+0 -7.0710676908493042e-1 7.0710676908493042e-1 1.0000000000000000e+0 0.0000000000000000e+0 [2] 0.0000000000000000e+0 -7.0710676908493042e-1 7.0710676908493042e-1 1.0000000000000000e+0 0.0000000000000000e+0 [3] 0.0000000000000000e+0 -7.0710676908493042e-1 7.0710676908493042e-1 1.0000000000000000e+0 0.0000000000000000e+0 [4] 0.0000000000000000e+0 -7.0710676908493042e-1 7.0710676908493042e-1 1.0000000000000000e+0 0.0000000000000000e+0 ...and 251 more errors. Max AbsError of 7.0710676908493042e-1 at index of 0. Max RelError of 1.0000000000000000e+0 at index of 0.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: X 1-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, right channel does not equal [0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304,0.7071067690849304...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. Index Actual Expected AbsError RelError Test threshold [0] 0.0000000000000000e+0 7.0710676908493042e-1 7.0710676908493042e-1 1.0000000000000000e+0 0.0000000000000000e+0 [1] 0.0000000000000000e+0 7.0710676908493042e-1 7.0710676908493042e-1 1.0000000000000000e+0 0.0000000000000000e+0 [2] 0.0000000000000000e+0 7.0710676908493042e-1 7.0710676908493042e-1 1.0000000000000000e+0 0.0000000000000000e+0 [3] 0.0000000000000000e+0 7.0710676908493042e-1 7.0710676908493042e-1 1.0000000000000000e+0 0.0000000000000000e+0 [4] 0.0000000000000000e+0 7.0710676908493042e-1 7.0710676908493042e-1 1.0000000000000000e+0 0.0000000000000000e+0 ...and 251 more errors. Max AbsError of 7.0710676908493042e-1 at index of 0. Max RelError of 1.0000000000000000e+0 at index of 0.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: X 2-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, left channel does not equal [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. Index Actual Expected AbsError RelError Test threshold [0] 0.0000000000000000e+0 -1.0000000000000000e+0 1.0000000000000000e+0 1.0000000000000000e+0 0.0000000000000000e+0 [1] 0.0000000000000000e+0 -1.0000000000000000e+0 1.0000000000000000e+0 1.0000000000000000e+0 0.0000000000000000e+0 [2] 0.0000000000000000e+0 -1.0000000000000000e+0 1.0000000000000000e+0 1.0000000000000000e+0 0.0000000000000000e+0 [3] 0.0000000000000000e+0 -1.0000000000000000e+0 1.0000000000000000e+0 1.0000000000000000e+0 0.0000000000000000e+0 [4] 0.0000000000000000e+0 -1.0000000000000000e+0 1.0000000000000000e+0 1.0000000000000000e+0 0.0000000000000000e+0 ...and 251 more errors. Max AbsError of 1.0000000000000000e+0 at index of 0. Max RelError of 1.0000000000000000e+0 at index of 0.

      assert_true: expected true got false
      

    • FAIL [expected PASS] subtest: X 2-channel [0, 0, 1] -> [0, 0, 10000]: distanceModel: inverse, rolloff: 1, right channel does not equal [2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16,2.4492937051703357e-16...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. Index Actual Expected AbsError RelError Test threshold [0] 0.0000000000000000e+0 2.4492937051703357e-16 2.4492937051703357e-16 1.0000000000000000e+0 0.0000000000000000e+0 [1] 0.0000000000000000e+0 2.4492937051703357e-16 2.4492937051703357e-16 1.0000000000000000e+0 0.0000000000000000e+0 [2] 0.0000000000000000e+0 2.4492937051703357e-16 2.4492937051703357e-16 1.0000000000000000e+0 0.0000000000000000e+0 [3] 0.0000000000000000e+0 2.4492937051703357e-16 2.4492937051703357e-16 1.0000000000000000e+0 0.0000000000000000e+0 [4] 0.0000000000000000e+0 2.4492937051703357e-16 2.4492937051703357e-16 1.0000000000000000e+0 0.0000000000000000e+0 ...and 251 more errors. Max AbsError of 2.4492937051703357e-16 at index of 0. Max RelError of 1.0000000000000000e+0 at index of 0.

      assert_true: expected true got false
      

@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 5, 2025

⚠️ Try run (#19963896814) failed.

@Taym95 Taym95 marked this pull request as draft December 5, 2025 14:22
@mrobinson
Copy link
Copy Markdown
Member

mrobinson commented Dec 5, 2025

Looks like this is still a draft and doesn't include the changes, but please include a description of the fix made in in the commit description and title. The motivation is this: if we end up having the fix bufferSource.loop more than once, a title describing what exactly was fixed will allow someone reading the commit log to understand the difference between the two:

From https://book.servo.org/pr-description.html:

Try to avoid generic verbs such as "fix", "correct", or "improve" and instead describe what the fix does. Code can be fixed multiple times, but the message should more uniquely identify the change.

Thank you!

@Taym95
Copy link
Copy Markdown
Member Author

Taym95 commented Dec 5, 2025

Looks like this is still a draft and doesn't include the changes, but please include a description of the fix made in in the commit description and title. The motivation is this: if we end up having the fix bufferSource.loop more than once, a title describing what exactly was fixed will allow someone reading the commit log to understand the difference between the two:

From https://book.servo.org/pr-description.html:

Try to avoid generic verbs such as "fix", "correct", or "improve" and instead describe what the fix does. Code can be fixed multiple times, but the message should more uniquely identify the change.

Thank you!

This is still a draft, and I am still figuring things out. Do you want me to close the draft PR for now?
Once things are clearer, I will add a proper title and description.
This does include the changes but fix is in the media repository: servo/media#476

@Taym95 Taym95 closed this Dec 5, 2025
@mrobinson
Copy link
Copy Markdown
Member

This is still a draft, and I am still figuring things out. Do you want me to close the draft PR for now? Once things are clearer, I will add a proper title and description. This does include the changes but fix is in the media repository: servo/media#476

Sorry, you don't have to close the draft. It was just a reminder.

@Taym95 Taym95 reopened this Dec 9, 2025
@Taym95 Taym95 force-pushed the fix-bufferSource-loop branch from c17193a to 658c7ae Compare December 9, 2025 01:14
@Taym95 Taym95 added the T-linux-wpt Do a try run of the WPT label Dec 9, 2025
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Dec 9, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 9, 2025

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

@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 9, 2025

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

Flaky unexpected result (40)
  • OK /IndexedDB/idbfactory_open.any.html
    • FAIL [expected PASS] subtest: Calling open() with version argument 1.5 should not throw.

      assert_equals: version expected 1 but got 9007199254740991
      

  • CRASH [expected OK] /_mozilla/mozilla/img_load_more_than_cache.html
  • 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"
      

  • ERROR [expected TIMEOUT] /_mozilla/webxr/sessionavailable.https.html
  • ERROR [expected CRASH] /_webgl/conformance2/misc/uninitialized-test-2.html
  • CRASH [expected OK] /_webgl/conformance2/wasm/readpixels-2gb-in-4gb-wasm-memory.html
  • FAIL [expected PASS] /css/css-backgrounds/border-image-repeat-space-9.html
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Single value - empty name exists
  • 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 OK] /html/browsers/browsing-the-web/navigating-across-documents/014.html
  • 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-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/refresh/same-document-refresh.html (#34597)
    • FAIL [expected PASS] subtest: Same-Document Referrer from Refresh

      assert_equals: original page loads expected "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section" but got "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section#section"
      

  • 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_4.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted

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

  • CRASH [expected OK] /html/canvas/element/canvas-host/2d.canvas.host.size.attributes.setAttribute.whitespace.html
  • CRASH [expected TIMEOUT] /html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.tentative.w.html
  • OK [expected TIMEOUT] /html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.html (#30970)
  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/update-the-rendering.html (#24145)
    • TIMEOUT [expected FAIL] subtest: "Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks

      Test timed out
      

  • CRASH [expected OK] /html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.cross.html
  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in value (formdata event)
  • 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: backslash in filename (normal form)
  • CRASH [expected OK] /html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash.html
  • 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 /mixed-content/tentative/autoupgrades/video-upgrade.https.sub.html (#41135)
    • FAIL [expected PASS] subtest: Video of other host autoupgraded

      assert_equals: Length. Other host expected 1 but got Infinity
      

  • ERROR [expected TIMEOUT] /performance-timeline/not-restored-reasons/abort-block-bfcache.window.html
  • FAIL [expected PASS] /png/apng/fcTL-dispose-previous-final.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
  • CRASH [expected OK] /trusted-types/Element-setAttribute-setAttributeNS-sinks.tentative.html
  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?01-05 (#38975)
    • PASS [expected TIMEOUT] subtest: Navigate a window via anchor with javascript:-urls in report-only mode.
    • PASS [expected NOTRUN] subtest: Navigate a window via anchor with javascript:-urls w/ default policy in report-only mode.
    • PASS [expected NOTRUN] 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 FAIL] subtest: Navigate a frame via anchor with javascript:-urls in report-only mode.
    • 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?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.
    • TIMEOUT [expected NOTRUN] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in enforcing mode.

      Test timed out
      

  • CRASH [expected OK] /upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/worklet-animation-import-data.https.html
  • CRASH [expected TIMEOUT] /wasm/webapi/invalid-code.any.worker.html
  • CRASH [expected OK] /webaudio/the-audio-api/the-audioparam-interface/k-rate-oscillator.html
  • 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
      

  • OK [expected ERROR] /webxr/render_state_update.https.html (#27535)
  • ERROR [expected OK] /workers/baseurl/alpha/import-in-moduleworker.html (#21315)
Stable unexpected results that are known to be intermittent (19)
  • 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()
  • 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 /css/css-cascade/layer-font-face-override.html (#35935)
    • FAIL [expected PASS] subtest: @font-face override update with appended sheet 1

      assert_equals: expected "80px" but got "38.3166666666667px"
      

    • FAIL [expected PASS] subtest: @font-face override update with appended sheet 2

      assert_equals: expected "80px" but got "38.3166666666667px"
      

  • 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
      

  • OK /css/css-fonts/generic-family-keywords-002.html (#40929)
    • PASS [expected FAIL] subtest: font-family: -webkit-serif treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-sans-serif treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-cursive treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-fantasy treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-monospace treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-system-ui treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-math treated as <font-family>, not <generic-name>
    • FAIL [expected PASS] subtest: font-family: -webkit-generic(fangsong) treated as <font-family>, not <generic-name>

      assert_equals: expected 50 but got 30
      

    • FAIL [expected PASS] subtest: font-family: -webkit-generic(kai) treated as <font-family>, not <generic-name>

      assert_equals: expected 50 but got 30
      

    • FAIL [expected PASS] subtest: font-family: -webkit-generic(khmer-mul) treated as <font-family>, not <generic-name>

      assert_equals: expected 50 but got 30
      

    • And 12 more unexpected results...
  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted serif (drawing text in a canvas)

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

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

      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-origin destination

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

  • OK /fetch/metadata/generated/element-img-environment-change.https.sub.html (#30111)
    • PASS [expected FAIL] subtest: sec-fetch-site - Same origin, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Cross-Site -> Same Origin, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Cross-Site -> Cross-Site, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Same-Origin -> Same-Site, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Same-Origin -> Cross-Site, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Same-Site -> Same-Site, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Same-Site -> Cross-Site, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-mode - no attributes
    • PASS [expected FAIL] subtest: sec-fetch-mode - attributes: crossorigin
    • And 4 more unexpected results...
  • OK /fetch/metadata/generated/element-img-environment-change.sub.html (#30111)
    • PASS [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy same-origin destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy same-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-site - Not sent to non-trustworthy cross-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-mode - Not sent to non-trustworthy same-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-mode - Not sent to non-trustworthy cross-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-dest - Not sent to non-trustworthy same-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-dest - Not sent to non-trustworthy cross-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-user - Not sent to non-trustworthy same-site destination, no attributes
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Not sent to non-trustworthy same-site destination, no attributes
  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • TIMEOUT [expected NOTRUN] subtest: Non-HTMLElement should not support autofocus

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Host element with delegatesFocus should support autofocus
    • NOTRUN [expected FAIL] subtest: Host element with delegatesFocus including no focusable descendants should be skipped
    • NOTRUN [expected FAIL] subtest: Area element should support autofocus
  • 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
      

  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • PASS [expected FAIL] subtest: Reload domComplete > Original domComplete
    • PASS [expected FAIL] subtest: Reload domContentLoadedEventStart > Original domContentLoadedEventStart
    • PASS [expected FAIL] subtest: Reload domInteractive > Original domInteractive
    • 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 /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 /preload/preload-invalid-resources.html (#39091)
    • PASS [expected FAIL] subtest: Preloading an invalid image (missing) should preload and not re-fetch
  • 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!\""
      

@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 9, 2025

✨ Try run (#20048459851) succeeded.

@Taym95 Taym95 marked this pull request as ready for review December 9, 2025 01:59
@servo-highfive servo-highfive added the S-needs-rebase There are merge conflict errors. label Dec 9, 2025
@Taym95 Taym95 force-pushed the fix-bufferSource-loop branch from 658c7ae to 8205aba Compare December 9, 2025 10:01
@servo-highfive servo-highfive added S-needs-rebase There are merge conflict errors. and removed S-needs-rebase There are merge conflict errors. labels Dec 9, 2025
@Taym95 Taym95 closed this Dec 9, 2025
@Taym95 Taym95 force-pushed the fix-bufferSource-loop branch from 8205aba to 224ca77 Compare December 9, 2025 10:11
@servo-highfive servo-highfive removed the S-needs-rebase There are merge conflict errors. label Dec 9, 2025
@Taym95
Copy link
Copy Markdown
Member Author

Taym95 commented Dec 9, 2025

why I can not reopen this PR?

Previously:
the moment we set bufferSource.loop = true, the node hit the early “extreme edge case” check, decided “I refuse to output”, triggered onended, and returned silence. So the loop never got a chance to run.

Now:

Early bailout is removed(no idea why was there in first place).
The per tick offset is guaranteed to be a sensible value with respect to the loop range (wrapped if extreme).
The normal mixing code runs, updating pos each tick and respecting the loop region

Signed-off-by: Taym Haddadi <[email protected]>
@Taym95 Taym95 reopened this Dec 9, 2025
@Taym95
Copy link
Copy Markdown
Member Author

Taym95 commented Dec 9, 2025

why I can not reopen this PR?

never mind, I removed my commits

@Taym95 Taym95 requested a review from jdm December 9, 2025 13:19
@servo-highfive servo-highfive removed the S-awaiting-review There is new code that needs to be reviewed. label Dec 9, 2025
@jdm
Copy link
Copy Markdown
Member

jdm commented Dec 9, 2025

Why are there no changes to test results?

@Taym95
Copy link
Copy Markdown
Member Author

Taym95 commented Dec 9, 2025

Why are there no changes to test results?

I am also confused, I think there is not test for this, I will have a look

@Taym95 Taym95 added the T-linux-wpt Do a try run of the WPT label Dec 9, 2025
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Dec 9, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 9, 2025

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

@mrobinson mrobinson changed the title FIx WebAudio bufferSource.loop script: Update media to include fix for WebAudio bufferSource.loop Dec 9, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 9, 2025

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

Flaky unexpected result (36)
  • OK /IndexedDB/idbfactory_open.any.html
    • FAIL [expected PASS] subtest: Calling open() with version argument 1.5 should not throw.

      assert_equals: version expected 1 but got 9007199254740991
      

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

  • ERROR [expected TIMEOUT] /_mozilla/webxr/sessionavailable.https.html
  • OK /_webgl/conformance/textures/misc/texture-upload-size.html (#21770)
    • PASS [expected FAIL] subtest: WebGL test #45
    • PASS [expected FAIL] subtest: WebGL test #47
    • PASS [expected FAIL] subtest: WebGL test #49
    • PASS [expected FAIL] subtest: WebGL test #51
    • FAIL [expected PASS] subtest: WebGL test #53

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

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

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

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

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

      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 #61
    • PASS [expected FAIL] subtest: WebGL test #63
    • And 6 more unexpected results...
  • OK /css/css-animations/event-order.tentative.html (#39000)
    • PASS [expected FAIL] subtest: Same events on pseudo-elements follow the prescribed order
  • FAIL [expected PASS] /css/css-backgrounds/background-size-042.html
  • OK /css/css-cascade/layer-cssom-order-reverse.html (#36094)
    • FAIL [expected PASS] subtest: Delete layer invalidates @font-face

      assert_equals: expected "220px" but got "133px"
      

  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in filename (urlencoded)
  • OK /fetch/metadata/window-open.https.sub.html (#40339)
    • FAIL [expected PASS] subtest: Same-site window, forced, reloaded

      The operation is insecure.
      

  • CRASH [expected OK] /html/anonymous-iframe/embedding.tentative.https.window.html?7-7
  • CRASH [expected OK] /html/anonymous-iframe/local-storage.tentative.https.window.html
  • OK /html/browsers/browsing-the-web/navigating-across-documents/refresh/same-document-refresh.html (#34597)
    • FAIL [expected PASS] subtest: Same-Document Referrer from Refresh

      assert_equals: original page loads expected "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section" but got "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section#section"
      

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

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

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

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

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Non-HTMLElement should not support autofocus
    • NOTRUN [expected FAIL] subtest: Host element with delegatesFocus should support autofocus
    • NOTRUN [expected FAIL] subtest: Host element with delegatesFocus including no focusable descendants should be skipped
    • NOTRUN [expected FAIL] subtest: Area element should support autofocus
  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/update-the-rendering.html (#24145)
    • TIMEOUT [expected FAIL] subtest: "Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks

      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
  • 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/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • FAIL [expected PASS] subtest: multipart/form-data: Basic test (formdata event)

      assert_equals: expected "\r\nContent-Disposition: form-data; name=\"basic\"\r\n\r\ntest\r\n--\r\n" but got ""
      

    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in value (formdata event)
  • 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: 0x00 in name (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in value (normal form)
    • 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/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: Basic test (formdata event)

      assert_equals: expected "basic=test" but got ""
      

    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: Basic File test (normal form)

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

    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: Basic File test (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (formdata event)
  • OK /html/semantics/scripting-1/the-script-element/module/dynamic-import/blob-url.any.worker.html (#33909)
    • FAIL [expected PASS] subtest: Revoking a blob URL immediately after calling import will not fail

      promise_test: Unhandled rejection with value: object "TypeError: Dynamic import failed"
      

  • OK [expected ERROR] /html/user-activation/no-activation-thru-escape-key.html (#40343)
  • CRASH [expected OK] /html/webappapis/dynamic-markup-insertion/opening-the-input-stream/remove-initial-about-blankness.window.html (#28684)
  • CRASH [expected TIMEOUT] /preload/link-header-modulepreload.html
  • CRASH [expected OK] /trusted-types/eval-function-constructor.html
  • 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.
  • 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 ERROR] /wasm/webapi/empty-body.any.serviceworker.html
  • OK /webdriver/tests/classic/dismiss_alert/dismiss.py (#39098)
    • FAIL [expected PASS] subtest: test_dismiss_in_popup_window

      AssertionError: no such alert (404): No user prompt is currently active.
      

  • 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
      

  • ERROR [expected OK] /webxr/render_state_update.https.html (#27535)
  • CRASH [expected OK] /workers/WorkerLocation_search_fragment.htm
Stable unexpected results that are known to be intermittent (20)
  • 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/transaction-deactivation-timing.any.worker.html (#38808)
    • PASS [expected FAIL] subtest: New transactions are deactivated before next task
  • 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 /css/css-fonts/generic-family-keywords-001.html (#37467)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(kai)
    • 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
      

  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted system-ui (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(nastaliq) (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-serif (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-monospace (drawing text in a canvas)
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • PASS [expected FAIL] subtest: sec-fetch-mode
  • 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-origin destination

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

    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Not sent to non-trustworthy same-site destination
  • 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."
      

  • ERROR [expected OK] /focus/focus-event-after-switching-iframes.sub.html (#40368)
  • 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/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
      

  • OK /html/semantics/embedded-content/media-elements/media_fragment_seek.html (#24114)
    • PASS [expected FAIL] subtest: Video should seek to time specified in media fragment syntax
  • CRASH [expected OK] /html/semantics/forms/the-fieldset-element/disabled-003.html (#31730, #39631)
  • 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 domComplete &gt; Original domComplete
    • FAIL [expected PASS] subtest: Reload domContentLoadedEventEnd &gt; Original domContentLoadedEventEnd

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

    • PASS [expected FAIL] subtest: Reload loadEventEnd &gt; Original loadEventEnd
    • PASS [expected FAIL] subtest: Reload loadEventStart &gt; Original loadEventStart
  • OK /preload/link-header-preload-delay-onload.html (#39622)
    • PASS [expected FAIL] subtest: Makes sure that Link headers preload resources and block window.onload after resource discovery
  • OK /preload/preload-error.sub.html (#37177)
    • FAIL [expected PASS] subtest: success (fetch): main

      assert_greater_than: http://web-platform.test:8000/preload/resources/dummy.xml?label=fetch should be loaded expected a number greater than 0 but got 0
      

  • TIMEOUT [expected OK] /trusted-types/trusted-types-navigation.html?26-30 (#38807)
    • TIMEOUT [expected PASS] subtest: Navigate a window via form-submission with javascript:-urls in report-only mode.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Navigate a window via form-submission with javascript:-urls w/ default policy in report-only mode.
    • NOTRUN [expected PASS] subtest: Navigate a frame via form-submission with javascript:-urls in enforcing mode.
    • NOTRUN [expected PASS] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in enforcing mode.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Dec 9, 2025

✨ Try run (#20065100291) succeeded.

@mrobinson mrobinson changed the title script: Update media to include fix for WebAudio bufferSource.loop script: Update media to include fix for AudioBufferSourceNode.loop Dec 9, 2025
@mrobinson
Copy link
Copy Markdown
Member

mrobinson commented Dec 9, 2025

Updated the title: bufferSource is the name of the variable in the failing test case, but the actual WebAudio API type is called AudioBufferSourceNode.

@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Dec 9, 2025
@Taym95
Copy link
Copy Markdown
Member Author

Taym95 commented Dec 9, 2025

Why are there no changes to test results?

@jdm this case was not covered by test, I added new WPT test, can you have a quick look? test is passing now and was failing for servo before this changes.

@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

🤖 Opened new upstream WPT pull request (web-platform-tests/wpt#56621) with upstreamable changes.

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.

Nice test!

@servo-highfive servo-highfive removed the S-awaiting-review There is new code that needs to be reviewed. label Dec 10, 2025
@jdm jdm added this pull request to the merge queue Dec 10, 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 10, 2025
Merged via the queue into servo:main with commit b7263e7 Dec 10, 2025
32 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 Dec 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

WebAudio: looping audio using bufferSource.loop doesn't work

5 participants