Skip to content

script: fix BorrowError in (new Blob).slice(0,0).text()#29451

Merged
bors-servo merged 2 commits intomasterfrom
fix-blob-slice-text
Mar 2, 2023
Merged

script: fix BorrowError in (new Blob).slice(0,0).text()#29451
bors-servo merged 2 commits intomasterfrom
fix-blob-slice-text

Conversation

@delan
Copy link
Copy Markdown
Member

@delan delan commented Mar 1, 2023

When getting the text of a sliced Blob, we call GlobalScope.get_blob_url_id, which borrows the blob_state field mutably and calls the get_blob_size method (aka Blob#size), which tries to borrow the same field immutably, causing a panic.

This patch inlines the relevant parts of get_blob_size into get_blob_url_id, so we can reuse the mutable borrow.

  • /FileAPI/Blob-methods-from-detached-frame.html was 4/4 FAIL, will be 4/4 PASS once HTML #named-access-on-the-window-object #29396 also lands
  • /fetch/api/basic/scheme-blob.sub.any.html was CRASH, now 10/17 PASS and 7/17 FAIL
  • /fetch/api/basic/scheme-blob.sub.any.worker.html was CRASH, now 10/17 PASS and 7/17 FAIL

  • There are tests for these changes OR
  • These changes do not require tests because ___

@delan delan added the A-content/script Related to the script thread label Mar 1, 2023
@delan delan requested review from Loirooriol and mukilan March 1, 2023 12:24
Copy link
Copy Markdown
Contributor

@Loirooriol Loirooriol left a comment

Choose a reason for hiding this comment

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

get_blob_size and get_blob_url_id look quite similar (not just the code inlined in this PR), so maybe it would be good to try to refactor them to share the common logic, but for now I think it's fine as-is.

The description says "There are tests for these changes" but I don't know if that's the right option if the tests depend on #29396

@delan
Copy link
Copy Markdown
Member Author

delan commented Mar 1, 2023

Thanks! I guess we can refactor them the next time we need to change that logic in a way that affects both methods.

@bors-servo r=Loirooriol

@bors-servo
Copy link
Copy Markdown
Contributor

📌 Commit 55203d7 has been approved by Loirooriol

@bors-servo
Copy link
Copy Markdown
Contributor

⌛ Testing commit 55203d7 with merge 9c5b702...

bors-servo added a commit that referenced this pull request Mar 1, 2023
script: fix BorrowError in (new Blob).slice(0,0).text()

When getting the text of a sliced Blob, we call GlobalScope.get_blob_url_id, which borrows the blob_state field mutably and calls the get_blob_size method (aka [Blob#size](https://w3c.github.io/FileAPI/#dfn-size)), which tries to borrow the same field immutably, causing a panic.

This patch inlines the relevant parts of get_blob_size into get_blob_url_id, so we can reuse the mutable borrow. As a result, /FileAPI/Blob-methods-from-detached-frame.html will pass once #29396 also lands.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #29450

<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because there are already tests for this that are blocked by #29396
@bors-servo
Copy link
Copy Markdown
Contributor

💡 This pull request was already approved, no need to approve it again.

  • This pull request is currently being tested. If there's no response from the continuous integration service, you may use retry to trigger a build again.

@bors-servo
Copy link
Copy Markdown
Contributor

📌 Commit 55203d7 has been approved by Loirooriol

@bors-servo
Copy link
Copy Markdown
Contributor

⌛ Testing commit 55203d7 with merge 908c57f...

bors-servo added a commit that referenced this pull request Mar 1, 2023
script: fix BorrowError in (new Blob).slice(0,0).text()

When getting the text of a sliced Blob, we call GlobalScope.get_blob_url_id, which borrows the blob_state field mutably and calls the get_blob_size method (aka [Blob#size](https://w3c.github.io/FileAPI/#dfn-size)), which tries to borrow the same field immutably, causing a panic.

This patch inlines the relevant parts of get_blob_size into get_blob_url_id, so we can reuse the mutable borrow. As a result, /FileAPI/Blob-methods-from-detached-frame.html will pass once #29396 also lands.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #29450

<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because there are already tests for this that are blocked by #29396
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 1, 2023

Results from try job (#4303762036):

Flaky unexpected result (15)
  • TIMEOUT /FileAPI/url/url-in-tags-revoke.window.html (#19978)
    • TIMEOUT [expected FAIL] subtest: Opening a blob URL in a new window immediately before revoking it works.
  • OK /css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html (#29052)
    • PASS [expected FAIL] subtest: block-in-inline-hittest-relpos-zindex
  • TIMEOUT [expected PASS] /css/css-backgrounds/background-origin-004.html
  • OK /css/css-flexbox/hittest-anonymous-box.html (#27091)
    • FAIL [expected PASS] subtest: Hit-testing within an anonymous flex-item should return the flexbox as the hittest result.
  • OK /css/cssom-view/elementFromPoint-float-in-relative.html (#27753)
    • PASS [expected FAIL] subtest: elementFromPoint-float-in-relative
  • OK /css/cssom-view/elementFromPoint-float-in-table.html (#27002)
    • PASS [expected FAIL] subtest: float-in-div
  • OK /css/cssom-view/elementFromPoint-subpixel.html (#23623)
    • FAIL [expected PASS] subtest: Hit test top left corner of box
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html (#29048)
    • PASS [expected FAIL] subtest: Navigating to a different document with link click
  • 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=''
    • FAIL [expected PASS] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank'
  • TIMEOUT [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html (#29050)
    • TIMEOUT [expected FAIL] subtest: location.href setter throws a SyntaxError DOMException for unparseable URLs
    • NOTRUN [expected FAIL] subtest: <a> tag navigate fails for unparseable URLs
  • 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/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-submit-button-click.html (#28765)
    • TIMEOUT [expected FAIL] subtest: Replace before load, triggered by submitButton.click()
  • 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/syntax/parsing/DOMContentLoaded-defer.html (#21550)
    • PASS [expected FAIL] subtest: The end: DOMContentLoaded and defer scripts
  • TIMEOUT [expected OK] /html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html (#26371)
    • TIMEOUT [expected FAIL] subtest: delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire
Stable unexpected results that are known to be intermittent (24)
  • OK [expected TIMEOUT] /FileAPI/url/url-charset.window.html (#26997)
    • PASS [expected TIMEOUT] subtest: Blob charset should override any auto-detected charset.
  • OK /css/CSS2/floats/hit-test-floats-001.html (#23693)
    • PASS [expected FAIL] subtest: hit-test-floats-001
  • OK /css/CSS2/floats/hit-test-floats-003.html (#25733)
    • FAIL [expected PASS] subtest: Miss float below something else
  • OK /css/CSS2/floats/hit-test-floats-004.html (#25804)
    • FAIL [expected PASS] subtest: Miss float below something else
  • OK /css/CSS2/normal-flow/block-in-inline-hittest-001.html (#29064)
    • FAIL [expected PASS] subtest: block-in-inline-hittest-001
  • OK /css/cssom-view/elementFromPoint-001.html (#22452)
    • PASS [expected FAIL] subtest: CSSOM View - 5 - extensions to the Document interface
  • OK /css/cssom-view/elementsFromPoint-invalid-cases.html (#21338)
    • FAIL [expected PASS] subtest: The root element is the last element returned for otherwise empty queries within the viewport
  • TIMEOUT /fetch/metadata/generated/css-images.sub.tentative.html (#29047)
    • PASS [expected TIMEOUT] subtest: background-image sec-fetch-site - HTTPS downgrade (header not sent)
  • OK /fetch/private-network-access/worker-blob-fetch.window.html (#29389)
    • FAIL [expected PASS] subtest: public to public: success.
    • PASS [expected FAIL] subtest: treat-as-public to public: success.
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/navigating-across-documents/005.html (#27062)
  • TIMEOUT [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.html (#29081)
    • TIMEOUT [expected PASS] subtest: no-referrer referrer policy used to create the starting page
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • PASS [expected FAIL] subtest: Cross-origin navigation started from unload handler must be ignored
  • OK [expected TIMEOUT] /html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html (#29046)
    • FAIL [expected TIMEOUT] subtest: first argument: absolute url
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • FAIL [expected TIMEOUT] subtest: Element with tabindex should support autofocus
    • PASS [expected NOTRUN] subtest: Non-HTMLElement should not support autofocus
    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus should support autofocus
    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus including no focusable descendants should be skipped
    • FAIL [expected NOTRUN] subtest: Area element should support autofocus
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
    • TIMEOUT [expected FAIL] subtest: Check that popups from a sandboxed iframe escape the sandbox if
      allow-popups-to-escape-sandbox is used
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
    • FAIL [expected NOTRUN] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • OK /html/semantics/embedded-content/the-img-element/non-active-document.html (#21544)
    • FAIL [expected PASS] subtest: createHTMLDocument
    • FAIL [expected PASS] subtest: <template>
  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • FAIL [expected PASS] subtest: multipart/form-data: Basic test (formdata event)
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • FAIL [expected PASS] subtest: text/plain: Basic File test (formdata event)
    • FAIL [expected PASS] subtest: text/plain: 0x00 in name (formdata event)
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: 0x00 in name (normal form)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: \r\n in filename (formdata event)
  • OK /html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html (#23205)
    • PASS [expected FAIL] subtest: Check that rel=noopener with target=_self does a normal load
  • TIMEOUT [expected OK] /html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html (#25805)
    • TIMEOUT [expected FAIL] subtest: Fulfillment handler on fulfilled promise
    • TIMEOUT [expected FAIL] subtest: Fulfillment handler on pending-then-fulfilled promise
    • TIMEOUT [expected FAIL] subtest: Rejection handler on pending-then-rejected promise
  • TIMEOUT [expected OK] /html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html (#25805)
    • TIMEOUT [expected FAIL] subtest: Fulfillment handler on pending-then-fulfilled promise
    • TIMEOUT [expected FAIL] subtest: Rejection handler on pending-then-rejected promise
  • ERROR [expected OK] /workers/constructors/Worker/Worker-constructor.html (#22991)
Stable unexpected results (2)
  • OK [expected CRASH] /fetch/api/basic/scheme-blob.sub.any.html
    • FAIL [expected PASS] subtest: Fetching URL.createObjectURL(empty_blob) is OK
    • FAIL [expected PASS] subtest: Fetching URL.createObjectURL(empty_type_blob) is OK
    • FAIL [expected PASS] subtest: Blob content is not sniffed for a content type [image/png]
    • FAIL [expected PASS] subtest: Blob content is not sniffed for a content type [text/xml]
    • FAIL [expected PASS] subtest: Set content type to the empty string for slice with invalid content type
    • FAIL [expected PASS] subtest: Set content type to the empty string for slice with no content type
    • FAIL [expected PASS] subtest: Blob.slice should not sniff the content for a content type
  • OK [expected CRASH] /fetch/api/basic/scheme-blob.sub.any.worker.html
    • FAIL [expected PASS] subtest: Fetching URL.createObjectURL(empty_blob) is OK
    • FAIL [expected PASS] subtest: Fetching URL.createObjectURL(empty_type_blob) is OK
    • FAIL [expected PASS] subtest: Blob content is not sniffed for a content type [image/png]
    • FAIL [expected PASS] subtest: Blob content is not sniffed for a content type [text/xml]
    • FAIL [expected PASS] subtest: Set content type to the empty string for slice with invalid content type
    • FAIL [expected PASS] subtest: Set content type to the empty string for slice with no content type
    • FAIL [expected PASS] subtest: Blob.slice should not sniff the content for a content type

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 1, 2023

Results from try job (#4303783592):

Flaky unexpected result (17)
  • TIMEOUT [expected PASS] /_mozilla/css/iframe/hide_after_load.html (#14337)
  • OK /_webgl/conformance/state/state-uneffected-after-compositing.html (#26839)
  • OK /css/CSS2/floats/hit-test-floats-001.html (#23693)
    • PASS [expected FAIL] subtest: hit-test-floats-001
  • OK /css/CSS2/normal-flow/block-in-inline-hittest-001.html (#29064)
    • FAIL [expected PASS] subtest: block-in-inline-hittest-001
  • TIMEOUT [expected PASS] /css/css-color/animation/opacity-animation-ending-correctly-001.html (#29215)
  • OK /css/css-flexbox/hittest-before-pseudo.html (#26521)
    • FAIL [expected PASS] subtest: Hit-testing text within a pseudo-element flex-item should return the flexbox as the hittest result.
  • OK /css/css-transforms/transform-scale-hittest.html (#24667)
    • FAIL [expected PASS] subtest: Hit test within unscaled box
  • OK /css/cssom-view/elementFromPoint-subpixel.html (#23623)
    • FAIL [expected PASS] subtest: Hit test top left corner of box
  • OK /css/cssom-view/elementFromPoint-visibility-hidden-resizer.html (#28695)
    • FAIL [expected PASS] subtest: elementFromPoint on resizer area of an element with visibility:hidden
  • TIMEOUT [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.html (#29081)
    • TIMEOUT [expected PASS] subtest: no-referrer referrer policy used to create the starting page
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • PASS [expected FAIL] subtest: Cross-origin navigation started from unload handler must be ignored
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html (#24066)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • OK /html/semantics/forms/historical.html (#28568)
    • PASS [expected FAIL] subtest: <input name=isindex> should not be supported
  • TIMEOUT /html/webappapis/scripting/events/compile-event-handler-settings-objects.html (#24246)
    • PASS [expected FAIL] subtest: The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document
  • TIMEOUT [expected OK] /html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html (#25805)
    • TIMEOUT [expected FAIL] subtest: Fulfillment handler on pending-then-fulfilled promise
    • TIMEOUT [expected FAIL] subtest: Rejection handler on pending-then-rejected promise
  • TIMEOUT [expected OK] /webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html (#21743)
  • TIMEOUT [expected OK] /webmessaging/without-ports/017.html (#24486)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, about:blank
Stable unexpected results that are known to be intermittent (21)
  • OK [expected TIMEOUT] /FileAPI/url/url-charset.window.html (#26997)
    • PASS [expected TIMEOUT] subtest: Blob charset should override any auto-detected charset.
  • OK /_mozilla/mozilla/scrollBy.html (#21321)
    • PASS [expected FAIL] subtest: Ensure that the window.scrollBy function affects scroll position as expected
  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/out-of-bounds-uniform-array-access.html (#26225)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /css/CSS2/floats/hit-test-floats-002.html (#25733)
    • PASS [expected FAIL] subtest: Hit test float
  • OK /css/CSS2/floats/hit-test-floats-003.html (#25733)
    • FAIL [expected PASS] subtest: Miss float below something else
  • OK /css/CSS2/floats/hit-test-floats-005.html (#25804)
    • PASS [expected FAIL] subtest: Miss clipped float
  • OK /css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html (#29052)
    • PASS [expected FAIL] subtest: block-in-inline-hittest-relpos-zindex
  • OK /css/css-transitions/properties-value-inherit-003.html (#26435)
    • PASS [expected FAIL] subtest: border-top-width length-em(em) / events
    • PASS [expected FAIL] subtest: border-right-width length-em(em) / events
    • PASS [expected FAIL] subtest: border-bottom-width length-em(em) / events
    • PASS [expected FAIL] subtest: border-left-width length-em(em) / events
    • PASS [expected FAIL] subtest: padding-bottom length-em(em) / events
    • PASS [expected FAIL] subtest: padding-left length-em(em) / events
    • PASS [expected FAIL] subtest: padding-right length-em(em) / events
    • PASS [expected FAIL] subtest: padding-top length-em(em) / events
    • PASS [expected FAIL] subtest: margin-bottom length-em(em) / events
    • PASS [expected FAIL] subtest: margin-left length-em(em) / events
    • And 19 more unexpected results...
  • OK /css/cssom-view/elementFromPoint-001.html (#22452)
    • PASS [expected FAIL] subtest: CSSOM View - 5 - extensions to the Document interface
  • OK /css/cssom-view/elementFromPosition.html (#21295)
    • PASS [expected FAIL] subtest: test some point of the element: top left corner
    • PASS [expected FAIL] subtest: test the top of layer
  • TIMEOUT /fetch/metadata/generated/css-images.sub.tentative.html (#29047)
    • PASS [expected TIMEOUT] subtest: background-image sec-fetch-site - HTTPS downgrade (header not sent)
    • FAIL [expected PASS] subtest: border-image sec-fetch-site - HTTPS downgrade (header not sent)
  • OK /fetch/private-network-access/worker-blob-fetch.window.html (#29389)
    • FAIL [expected PASS] subtest: public to public: success.
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/navigating-across-documents/005.html (#27062)
  • 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'
  • OK [expected TIMEOUT] /html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html (#29046)
    • FAIL [expected TIMEOUT] subtest: first argument: absolute url
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • FAIL [expected TIMEOUT] subtest: Element with tabindex should support autofocus
    • PASS [expected NOTRUN] subtest: Non-HTMLElement should not support autofocus
    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus should support autofocus
    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus including no focusable descendants should be skipped
    • FAIL [expected NOTRUN] subtest: Area element should support autofocus
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
    • FAIL [expected TIMEOUT] subtest: Check that popups from a sandboxed iframe escape the sandbox if
      allow-popups-to-escape-sandbox is used
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
    • FAIL [expected NOTRUN] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • FAIL [expected PASS] subtest: multipart/form-data: Basic test (formdata event)
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • FAIL [expected PASS] subtest: text/plain: Basic File test (formdata event)
    • FAIL [expected PASS] subtest: text/plain: 0x00 in name (formdata event)
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: 0x00 in name (normal form)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: \r\n in filename (formdata event)
Stable unexpected results (2)
  • OK [expected CRASH] /fetch/api/basic/scheme-blob.sub.any.html
    • FAIL [expected PASS] subtest: Fetching URL.createObjectURL(empty_blob) is OK
    • FAIL [expected PASS] subtest: Fetching URL.createObjectURL(empty_type_blob) is OK
    • FAIL [expected PASS] subtest: Blob content is not sniffed for a content type [image/png]
    • FAIL [expected PASS] subtest: Blob content is not sniffed for a content type [text/xml]
    • FAIL [expected PASS] subtest: Set content type to the empty string for slice with invalid content type
    • FAIL [expected PASS] subtest: Set content type to the empty string for slice with no content type
    • FAIL [expected PASS] subtest: Blob.slice should not sniff the content for a content type
  • OK [expected CRASH] /fetch/api/basic/scheme-blob.sub.any.worker.html
    • FAIL [expected PASS] subtest: Fetching URL.createObjectURL(empty_blob) is OK
    • FAIL [expected PASS] subtest: Fetching URL.createObjectURL(empty_type_blob) is OK
    • FAIL [expected PASS] subtest: Blob content is not sniffed for a content type [image/png]
    • FAIL [expected PASS] subtest: Blob content is not sniffed for a content type [text/xml]
    • FAIL [expected PASS] subtest: Set content type to the empty string for slice with invalid content type
    • FAIL [expected PASS] subtest: Set content type to the empty string for slice with no content type
    • FAIL [expected PASS] subtest: Blob.slice should not sniff the content for a content type

@bors-servo
Copy link
Copy Markdown
Contributor

💔 Test failed - checks-github

@delan
Copy link
Copy Markdown
Member Author

delan commented Mar 2, 2023

@Loirooriol i’ve updated expectations to include new passes, ok to merge?

@Loirooriol
Copy link
Copy Markdown
Contributor

Sure, not crashing is good.

@delan
Copy link
Copy Markdown
Member Author

delan commented Mar 2, 2023

@bors-servo r=Loirooriol

@bors-servo
Copy link
Copy Markdown
Contributor

📌 Commit 24812f1 has been approved by Loirooriol

@bors-servo
Copy link
Copy Markdown
Contributor

⌛ Testing commit 24812f1 with merge 37f26f5...

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 2, 2023

Results from try job (#4315894919):

Flaky unexpected result (17)
  • OK /css/CSS2/floats/hit-test-floats-001.html (#23693)
    • PASS [expected FAIL] subtest: hit-test-floats-001
  • TIMEOUT [expected PASS] /css/css-color/animation/opacity-animation-ending-correctly-002.html (#29216)
  • OK /css/css-flexbox/text-as-flexitem-size-001.html (#28726)
    • FAIL [expected PASS] subtest: .flexbox > div 1
    • FAIL [expected PASS] subtest: .flexbox > div 2
    • FAIL [expected PASS] subtest: .flexbox > div 5
    • FAIL [expected PASS] subtest: .flexbox > div 8
    • FAIL [expected PASS] subtest: .flexbox > div 11
  • OK /css/cssom-view/MediaQueryList-extends-EventTarget-interop.html (#25285)
    • FAIL [expected PASS] subtest: capturing event listener fires before non-capturing listener at target
  • OK /css/cssom-view/MediaQueryList-extends-EventTarget.html (#25269)
    • FAIL [expected PASS] subtest: onchange removes listener
  • OK /css/cssom-view/elementFromPoint-001.html (#22452)
    • FAIL [expected PASS] subtest: CSSOM View - 5 - extensions to the Document interface
  • OK /css/cssom-view/elementFromPoint-dynamic-anon-box.html (#22337)
    • PASS [expected FAIL] subtest: Link should be clickable after hiding a scrollbox with an anonymous table inside
  • OK /css/cssom-view/elementFromPoint-float-in-relative.html (#27753)
    • PASS [expected FAIL] subtest: elementFromPoint-float-in-relative
  • TIMEOUT /fetch/metadata/generated/css-images.sub.tentative.html (#29047)
    • TIMEOUT [expected PASS] subtest: background-image sec-fetch-dest - Not sent to non-trustworthy cross-site destination
    • FAIL [expected PASS] subtest: border-image sec-fetch-dest - Not sent to non-trustworthy cross-site destination
    • FAIL [expected PASS] subtest: border-image sec-fetch-site - HTTPS downgrade (header not sent)
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html (#29048)
    • FAIL [expected TIMEOUT] subtest: Navigating to a different document with form submission
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html (#28681)
    • FAIL [expected PASS] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src=''
    • FAIL [expected PASS] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank'
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.html (#29081)
    • PASS [expected TIMEOUT] subtest: no-referrer referrer policy used to create the starting page
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • FAIL [expected PASS] subtest: Cross-origin navigation started from unload handler must be ignored
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • FAIL [expected PASS] subtest: Same-origin navigation started from unload handler must be ignored
  • OK /html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html (#23205)
    • PASS [expected FAIL] subtest: Check that rel=noopener with target=_self does a normal load
  • TIMEOUT /resource-timing/response-status-code.html (#29309)
    • TIMEOUT [expected FAIL] subtest: This test validates the response status of resources. 88
    • NOTRUN [expected TIMEOUT] subtest: This test validates the response status of resources. 89
  • OK [expected TIMEOUT] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html (#29053)
    • PASS [expected TIMEOUT] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe
Stable unexpected results that are known to be intermittent (13)
  • OK /_mozilla/css/stylesheet_media_queries.html (#17159)
    • PASS [expected FAIL] subtest: Media queries within stylesheets
  • OK /css/CSS2/floats/hit-test-floats-002.html (#25733)
    • FAIL [expected PASS] subtest: Hit test float
  • OK /css/cssom-view/CaretPosition-001.html (#21338)
    • FAIL [expected PASS] subtest: Element at (400, 100)
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/history-traversal/srcdoc/consecutive-srcdoc.html (#29084)
    • FAIL [expected TIMEOUT] subtest: changing srcdoc to about:srcdoc#yo then another srcdoc does two push navigations and we can navigate back
  • OK [expected TIMEOUT] /html/browsers/history/the-history-interface/traverse-during-unload.html (#28688)
    • PASS [expected TIMEOUT] subtest: Traversing the history during unload
  • CRASH [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.html (#29069)
  • OK /html/syntax/parsing/DOMContentLoaded-defer.html (#21550)
    • FAIL [expected PASS] subtest: The end: DOMContentLoaded and defer scripts
  • OK /html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html (#27659)
    • PASS [expected FAIL] subtest: async document.write in a module
  • TIMEOUT [expected OK] /webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html (#27664)
  • TIMEOUT [expected OK] /webmessaging/with-ports/017.html (#24486)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, about:blank
  • TIMEOUT [expected OK] /webmessaging/with-ports/018.html (#24485)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, javascript:
  • OK [expected TIMEOUT] /webmessaging/without-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank

@bors-servo
Copy link
Copy Markdown
Contributor

☀️ Test successful - checks-github
Approved by: Loirooriol
Pushing 37f26f5 to master...

@bors-servo bors-servo merged commit 37f26f5 into master Mar 2, 2023
@bors-servo bors-servo deleted the fix-blob-slice-text branch March 2, 2023 18:12
@delan delan mentioned this pull request Mar 3, 2023
23 tasks
bors-servo added a commit that referenced this pull request Mar 3, 2023
HTML #named-access-on-the-window-object

(see also #27952, #25562, #21869, #19904)

* [x] updates #27952, resolving conflicts related to #29079 and #28546 (5ae0ca4)
* [x] fixes “Servo exited with return value 11” (1e24ffd)
* [x] fixes “Assertion failure: CurrentThreadCanAccessRuntime(cx->runtime())” (5a2f05a)

<details><summary>130× tests that now pass</summary>

* /cors/script-304.html
* /css/CSS2/abspos/adjacent-to-relpos-inline-in-inline-that-had-block.html
* /css/CSS2/abspos/adjacent-to-relpos-inline-that-had-block.html
* /css/CSS2/floats-clear/remove-block-before-self-collapsing-sibling-with-clearance.html
* /css/CSS2/floats/computed-float-position-absolute.html
* /css/CSS2/normal-flow/block-in-inline-hittest-float-001.html
* /css/CSS2/normal-flow/block-in-inline-insert-018.html
* /css/CSS2/normal-flow/margin-collapse-through-percentage-padding.html
* /css/CSS2/positioning/abspos-change-in-inline-block.html
* /css/CSS2/positioning/abspos-width-change-inline-container-001.html
* /css/CSS2/positioning/detach-abspos-before-layout.html
* /css/CSS2/positioning/relpos-percentage-left-in-scrollable-2.html
* /css/CSS2/positioning/relpos-percentage-left-in-scrollable.html
* /css/CSS2/stacking-context/composite-change-after-scroll-preserves-stacking-order.html
* /css/CSS2/stacking-context/opacity-change-parent-stacking-context.html
* /css/CSS2/stacking-context/opacity-change-twice-stacking-context.html
* /css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html
* /css/css-animations/animation-base-response-002.html
* /css/css-animations/style-animation-parsing.html
* /css/css-backgrounds/background-clip-color-repaint.html
* /css/css-backgrounds/background-image-gradient-currentcolor-conic-repaint.html
* /css/css-backgrounds/background-image-gradient-currentcolor-linear-repaint.html
* /css/css-backgrounds/background-image-gradient-currentcolor-radial-repaint.html
* /css/css-backgrounds/background-image-none-gradient-repaint.html
* /css/css-backgrounds/border-radius-dynamic-from-no-radius.html
* /css/css-backgrounds/child-move-reveals-parent-background.html
* /css/css-color/filters-under-will-change-opacity.html
* /css/css-flexbox/anonymous-flex-item-001.html
* /css/css-flexbox/anonymous-flex-item-003.html
* /css/css-flexbox/dynamic-bsize-change.html
* /css/css-flexbox/flex-aspect-ratio-img-row-016.html
* /css/cssom/at-namespace.html
* /css/cssom/computed-style-002.html
* /css/cssom/getComputedStyle-display-none-002.html
* /css/cssom/getComputedStyle-display-none-003.html
* /css/cssom/preferred-stylesheet-reversed-order.html
* /css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html
* /css/cssom-view/pt-to-px-width.html
* /css/cssom-view/scroll-back-to-initial-position.html
* /css/css-text-decor/text-decoration-color-recalc-002.html
* /css/css-text-decor/text-decoration-line-grammar-error-color-dynamic-001.optional.html
* /css/css-text-decor/text-decoration-line-spelling-error-color-dynamic-001.optional.html
* /css/css-text/text-indent/percentage-value-intrinsic-size.html
* /css/css-text/white-space/display-contents-remove-whitespace-change.html
* /css/css-text/white-space/white-space-empty-text-sibling.html
* /css/css-transforms/change-perspective-property.html
* /css/css-transforms/change-scale-wide-range.html
* /css/css-transforms/change-transform-origin-property.html
* /css/css-transforms/dynamic-fixed-pos-cb-change.html
* /css/css-transforms/individual-transform/change-rotate-property.html
* /css/css-transforms/individual-transform/change-scale-property.html
* /css/css-transforms/paint-order-with-transform-change.html
* /css/css-transforms/size-change-under-backface-visibility-hidden.html
* /css/css-transforms/subpixel-transform-changes-001.html
* /css/css-transforms/subpixel-transform-changes-002.html
* /css/css-transforms/subpixel-transform-changes-003.html
* /css/css-transforms/subpixel-transform-changes-004.html
* /css/css-transitions/transition-reparented.html
* /css/css-ui/historical/moz-user-modify-01.html
* /css/css-ui/historical/user-modify-01.html
* /css/css-ui/historical/webkit-user-modify-01.html
* /css/css-ui/resize-change-margin.html
* /css/css-ui/text-overflow-change-color.html
* /css/css-ui/text-overflow-ellipsis-width-001.html
* /css/css-values/animations/line-height-lh-transition.html
* /css/css-values/calc-nesting.html
* /css/css-values/update-subpixel-rem-unit.html
* /css/css-values/viewport-units-modify.html
* /css/css-variables/css-variable-change-style-001.html
* /css/css-variables/css-variable-change-style-002.html
* /css/css-variables/variable-cycles.html
* /css/selectors/attribute-selectors/style-attribute-selector.html
* /css/selectors/i18n/lang-pseudo-class-disconnected.html
* /css/selectors/invalidation/attribute.html
* /css/selectors/invalidation/class-id-attr.html
* /css/selectors/invalidation/defined.html
* /css/selectors/invalidation/sheet-going-away-001.html
* /css/selectors/invalidation/sibling.html
* /css/selectors/missing-right-token.html
* /css/selectors/not-complex.html
* /css/selectors/not-specificity.html
* /css/selectors/nth-of-type-namespace.html
* /css/selectors/selectors-case-sensitive-001.html
* /css/selectors/visited-inheritance.html
* /custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html
* /dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html
* /dom/nodes/remove-and-adopt-thcrash.html
* /FileAPI/Blob-methods-from-detached-frame.html done #29450 #29451
* /html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html
* /html/browsers/history/the-history-interface/history_back_cross_realm_method.html
* /html/browsers/history/the-history-interface/history_forward_cross_realm_method.html
* /html/browsers/history/the-history-interface/history_go_cross_realm_method.html
* /html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html
* /html/dom/elements/images/bypass-cache-revalidation.html
* /html/rendering/non-replaced-elements/tables/table-ua-stylesheet.html
* /html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-alt-crash-001.html
* /html/rendering/replaced-elements/embedded-content/change-src-while-not-displayed.html
* /html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html
* /html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html
* /html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html
* /html/rendering/widgets/the-select-element/select-invalidation.html
* /html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html
* /html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html
* /html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus.html
* /html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html
* /html/semantics/embedded-content/the-iframe-element/iframe-network-error.sub.html
* /html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html
* /html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html
* /html/semantics/embedded-content/the-img-element/image-compositing-change.html
* /html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html
* /html/semantics/embedded-content/the-img-element/image-loading-lazy-clip-path.html
* /html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html
* /html/semantics/embedded-content/the-img-element/image-loading-subpixel-clip.html
* /html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html
* /html/semantics/forms/form-submission-0/form-submit-iframe-then-location-navigate.html
* /html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html
* /html/semantics/forms/the-button-element/button-willvalidate-readonly-attribute.html
* /html/semantics/forms/the-input-element/datetime-local-trailing-zeros.html
* /html/semantics/forms/the-input-element/radio-morphed.html
* /html/semantics/forms/the-progress-element/progress.html
* /html/semantics/forms/the-select-element/select-willvalidate-readonly-attribute.html
* /html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html
* /html/syntax/serializing-html-fragments/initial-linefeed-pre.html
* /html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-errorevent.html
* /html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-event.html
* /quirks/unitless-length/excluded-properties-001.html
* /quirks/unitless-length/excluded-properties-003.html
* /selection/caret/empty-elements.html
* /selection/contenteditable/cefalse-on-boundaries.html
* /selection/textcontrols/onselectionchange-content-attribute.html
</details>

<details><summary>94× tests that improve but still fail in a way that’s clearly the subject of the test</summary>

* **/css/css-animations/animation-base-response-001.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-visited.html**
* **/css/css-backgrounds/inheritance.sub.html**
* **/css/css-backgrounds/local-attachment-content-box-scroll.html**
* **/css/css-color/canvas-change-opacity.html**
* **/css/css-color/color-initial-canvastext.html**
* **/css/css-flexbox/flex-aspect-ratio-img-column-010.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-004.html**
* **/css/css-fonts/parsing/font-face-src-format.html**
  getter works but insertRule does nothing
* **/css/css-fonts/parsing/font-face-src-list.html**
  as above
* **/css/css-fonts/parsing/font-face-src-local.html**
  as above, but also delayed length change?
* **/css/css-fonts/parsing/font-face-src-tech.html**
  as above
* **/css/css-text/white-space/trailing-space-before-br-001.html**
* **/css/css-transforms/3d-rendering-context-behavior.html**
  failures are subject of test, but also blank page?
* **/css/css-transforms/individual-transform/change-translate-property.html**
* **/css/css-transforms/preserve-3d-flat-grouping-properties.html**
* **/css/css-transforms/transforms-support-calc.html**
* **/css/css-transitions/inherit-height-transition.html**
* **/css/css-ui/inheritance.html**
* **/css/css-ui/parsing/outline-width-computed.html**
  failures are subject of test; https://drafts.csswg.org/css-values-4/#snap-a-length-as-a-border-width
* **/css/css-values/lh-unit-003.html**
* **/css/css-values/viewport-units-compute.html**
* **/css/css-values/viewport-units-keyframes.html**
* **/css/css-values/viewport-units-media-queries.html**
* **/css/css-values/viewport-units-writing-mode.html**
* **/css/cssom-view/elementsFromPoint-table.html**
* **/css/cssom-view/scroll-behavior-default-css.html**
* **/css/cssom-view/scroll-behavior-element.html**
* **/css/cssom-view/scroll-behavior-main-frame-root.html**
* **/css/cssom-view/scroll-behavior-main-frame-window.html**
* **/css/cssom-view/scroll-behavior-smooth-navigation.html**
* **/css/cssom-view/scroll-behavior-subframe-root.html**
* **/css/cssom/computed-style-003.html**
* **/css/cssom/computed-style-004.html**
* **/css/cssom/font-variant-shorthand-serialization.html**
* **/css/selectors/dir-selector-auto.html**
* **/css/selectors/has-argument-with-explicit-scope.html**
* **/css/selectors/has-basic.html**
* **/css/selectors/has-relative-argument.html**
* **/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html**
* **/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/dir-pseudo-class-in-has.html**
* **/css/selectors/invalidation/empty-pseudo-in-has.html**
* **/css/selectors/invalidation/has-in-adjacent-position.html**
* **/css/selectors/invalidation/has-in-ancestor-position.html**
* **/css/selectors/invalidation/has-in-parent-position.html**
* **/css/selectors/invalidation/has-in-sibling-position.html**
* **/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html**
* **/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html**
* **/css/selectors/invalidation/has-sibling.html**
* **/css/selectors/invalidation/has-with-not.html**
* **/css/selectors/invalidation/has-with-pseudo-class.html**
* **/css/selectors/invalidation/input-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/lang-pseudo-class-in-has.html**
* **/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/is-where-basic.html**
* **/css/selectors/is-where-not.html**
* **/html/rendering/non-replaced-elements/tables/form-in-tables.html**
* /html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html**
* **/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html**
* **/html/semantics/popovers/popover-stacking.html**
* **/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html**
* **/resource-timing/resource-reload-TAO.html**
* **/selection/bidi/modify.tentative.html**
* **/selection/contenteditable/modify.tentative.html**
* **/selection/textcontrols/selectionchange.html**
* **/css/CSS2/normal-flow/block-in-inline-client-rects-001.html**
* **/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html**
* **/css/css-animations/computed-style-animation-parsing.html**
* **/css/css-variables/variables-substitute-guaranteed-invalid.html**
* **/css/cssom-view/elementsFromPoint-simple.html**
* **/css/cssom/CSSStyleSheet-modify-after-removal.html**
* **/css/cssom/getComputedStyle-display-none-001.html**
* **/css/selectors/focus-visible-script-focus-001.html**
* **/css/selectors/has-specificity.html**
* **/css/selectors/invalidation/is.html**
* **/css/selectors/invalidation/not-002.html**
* **/dom/events/EventListener-handleEvent-cross-realm.html**
* **/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html**
* **/html/browsers/the-window-object/window-properties.https.html**
* **/html/browsers/the-window-object/window-prototype-chain.html**
* **/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html**
* **/html/dom/aria-element-reflection.html**
* **/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-with-border-object-fit.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-multiple-targets.html**
* **/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe.html**
* **/html/webappapis/scripting/events/compile-event-handler-lexical-scopes-form-owner.html**
* **/quirks/unitless-length/excluded-properties-002.html**
</details>

<details open><summary>22× tests with failures that looked interesting</summary>

* 1× CRASH [expected ...]
    * **/css/css-fonts/crash-large-grapheme-cluster.html**
      crash is subject of test
* 6× FAIL [expected PASS] /... (reftest)
    * **/css/css-flexbox/anonymous-flex-item-005.html**
      old pass was spurious
    * **/css/css-flexbox/anonymous-flex-item-006.html**
      old pass was spurious
    * **/css/css-text-decor/text-decoration-line-recalc.html**
      old pass was spurious; ‘text-decoration’ shorthand unimplemented
    * **/css/css-ui/appearance-auto-non-html-namespace-001.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html**
      old pass was spurious
* 13× TIMEOUT [expected ...]
    * **/css/css-fonts/font-size-monospace-adjust.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/css/cssom-view/background-change-during-smooth-scroll.html**
      timeout is subject of test
    * **/css/selectors/invalidation/has-complexity.html**
      timeout is subject of test
    * **/css/selectors/invalidation/media-loading-pseudo-classes-in-has.html**
      timeout is subject of test; :has() unimplemented
    * **/fetch/stale-while-revalidate/stale-image.html**
      timeout is subject of test
    * **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigates-multiple-frames.html**
      timeout is subject of test
    * **/html/rendering/widgets/appearance/appearance-animation-001.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-animation-002.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-transition-001.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-002.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-003.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/resource-timing/opaque-origin.html**
      timeout is subject of test
    * **/selection/textcontrols/selectionchange-bubble.html**
      timeout is subject of test
* **/webidl/ecmascript-binding/invalid-this-value-cross-realm.html**
  ‘HTMLDocument’ unimplemented
* **/webidl/ecmascript-binding/window-named-properties-object.html**
  potentially interesting?
</details>

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [ ] `./mach build -d` does not report any errors
- [ ] `./mach test-tidy` does not report any errors
- [ ] These changes fix #27949 (GitHub issue number if applicable)

<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because ___
bors-servo added a commit that referenced this pull request Mar 23, 2023
HTML #named-access-on-the-window-object

This patch implements [named access on the window object](https://html.spec.whatwg.org/#named-access-on-the-window-object) based on @pylbrecht’s and @yvt’s previous work (see also #27952, #25562, #21869, #19904).

That work makes 130 tests pass, and I’ve made some additional changes to make [the test for the feature itself](https://wpt.live/webidl/ecmascript-binding/window-named-properties-object.html) pass too, but I haven’t worked with mozjs before, so I have no idea if I’ve gone about my changes the Right Way.

In particular, this patch:

* [x] applies @pylbrecht’s patch (#27952)
* [x] resolves conflicts related to #29079 and #28546 (5ae0ca4)
* [x] applies @yvt’s patch to the segfault in getPrototypeIfOrdinary (1e24ffd)
* [x] reverts the change introducing Untransplantable (76dc35a), since #28534 was abandoned in favour of #28536
* [x] triages the unexpected WPT results, updating expectations as needed (see below)
* [x] fixes the failures in /webidl/ecmascript-binding/window-named-properties-object.html (3844f69)
    * [x] fixes the failures in the [[GetOwnProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[DefineOwnProperty]] subtest (e4e7a14)
    * [x] fixes the failures in the [[HasProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[Get]] subtest (4bafb27)
    * [x] fixes the failures in the [[Set]] (direct) subtest (e4e7a14)
    * [x] fixes the failures in the [[Delete]] subtest (4bafb27)
    * [x] fixes the failures in the [[OwnPropertyKeys]] subtest (afcd24a)
* [x] resolves the todos and fixmes
    * [x] Document: handle exposed objects ×3 (ed3e37b)
    * [x] Window::NamedGetter: document.get_elements_with_id() (618ef57)
    * [x] get_own_property_descriptor: check for interactions with indexed access (b906fae)
    * [x] create trap: pass proper classp (618ef57)

<details><summary>131× tests that now pass</summary>

* **/webidl/ecmascript-binding/window-named-properties-object.html**
  *directly relevant to this patch*
* **/FileAPI/Blob-methods-from-detached-frame.html**
  done #29450 #29451
* **/cors/script-304.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-in-inline-that-had-block.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-that-had-block.html**
* **/css/CSS2/floats-clear/remove-block-before-self-collapsing-sibling-with-clearance.html**
* **/css/CSS2/floats/computed-float-position-absolute.html**
* **/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html**
* **/css/CSS2/normal-flow/block-in-inline-insert-018.html**
* **/css/CSS2/normal-flow/margin-collapse-through-percentage-padding.html**
* **/css/CSS2/positioning/abspos-change-in-inline-block.html**
* **/css/CSS2/positioning/abspos-width-change-inline-container-001.html**
* **/css/CSS2/positioning/detach-abspos-before-layout.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable-2.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable.html**
* **/css/CSS2/stacking-context/composite-change-after-scroll-preserves-stacking-order.html**
* **/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-change-twice-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html**
* **/css/css-animations/animation-base-response-002.html**
* **/css/css-animations/style-animation-parsing.html**
* **/css/css-backgrounds/background-clip-color-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-conic-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-linear-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-radial-repaint.html**
* **/css/css-backgrounds/background-image-none-gradient-repaint.html**
* **/css/css-backgrounds/border-radius-dynamic-from-no-radius.html**
* **/css/css-backgrounds/child-move-reveals-parent-background.html**
* **/css/css-color/filters-under-will-change-opacity.html**
* **/css/css-flexbox/anonymous-flex-item-001.html**
* **/css/css-flexbox/anonymous-flex-item-003.html**
* **/css/css-flexbox/dynamic-bsize-change.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-016.html**
* **/css/cssom/at-namespace.html**
* **/css/cssom/computed-style-002.html**
* **/css/cssom/getComputedStyle-display-none-002.html**
* **/css/cssom/getComputedStyle-display-none-003.html**
* **/css/cssom/preferred-stylesheet-reversed-order.html**
* **/css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html**
* **/css/cssom-view/pt-to-px-width.html**
* **/css/cssom-view/scroll-back-to-initial-position.html**
* **/css/css-text-decor/text-decoration-color-recalc-002.html**
* **/css/css-text-decor/text-decoration-line-grammar-error-color-dynamic-001.optional.html**
* **/css/css-text-decor/text-decoration-line-spelling-error-color-dynamic-001.optional.html**
* **/css/css-text/text-indent/percentage-value-intrinsic-size.html**
* **/css/css-text/white-space/display-contents-remove-whitespace-change.html**
* **/css/css-text/white-space/white-space-empty-text-sibling.html**
* **/css/css-transforms/change-perspective-property.html**
* **/css/css-transforms/change-scale-wide-range.html**
* **/css/css-transforms/change-transform-origin-property.html**
* **/css/css-transforms/dynamic-fixed-pos-cb-change.html**
* **/css/css-transforms/individual-transform/change-rotate-property.html**
* **/css/css-transforms/individual-transform/change-scale-property.html**
* **/css/css-transforms/paint-order-with-transform-change.html**
* **/css/css-transforms/size-change-under-backface-visibility-hidden.html**
* **/css/css-transforms/subpixel-transform-changes-001.html**
* **/css/css-transforms/subpixel-transform-changes-002.html**
* **/css/css-transforms/subpixel-transform-changes-003.html**
* **/css/css-transforms/subpixel-transform-changes-004.html**
* **/css/css-transitions/transition-reparented.html**
* **/css/css-ui/historical/moz-user-modify-01.html**
* **/css/css-ui/historical/user-modify-01.html**
* **/css/css-ui/historical/webkit-user-modify-01.html**
* **/css/css-ui/resize-change-margin.html**
* **/css/css-ui/text-overflow-change-color.html**
* **/css/css-ui/text-overflow-ellipsis-width-001.html**
* **/css/css-values/animations/line-height-lh-transition.html**
* **/css/css-values/calc-nesting.html**
* **/css/css-values/update-subpixel-rem-unit.html**
* **/css/css-values/viewport-units-modify.html**
* **/css/css-variables/css-variable-change-style-001.html**
* **/css/css-variables/css-variable-change-style-002.html**
* **/css/css-variables/variable-cycles.html**
* **/css/selectors/attribute-selectors/style-attribute-selector.html**
* **/css/selectors/i18n/lang-pseudo-class-disconnected.html**
* **/css/selectors/invalidation/attribute.html**
* **/css/selectors/invalidation/class-id-attr.html**
* **/css/selectors/invalidation/defined.html**
* **/css/selectors/invalidation/sheet-going-away-001.html**
* **/css/selectors/invalidation/sibling.html**
* **/css/selectors/missing-right-token.html**
* **/css/selectors/not-complex.html**
* **/css/selectors/not-specificity.html**
* **/css/selectors/nth-of-type-namespace.html**
* **/css/selectors/selectors-case-sensitive-001.html**
* **/css/selectors/visited-inheritance.html**
* **/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html**
* **/dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html**
* **/dom/nodes/remove-and-adopt-thcrash.html**
* **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html**
* **/html/browsers/history/the-history-interface/history_back_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_forward_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_go_cross_realm_method.html**
* **/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html**
* **/html/dom/elements/images/bypass-cache-revalidation.html**
* **/html/rendering/non-replaced-elements/tables/table-ua-stylesheet.html**
* **/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-alt-crash-001.html**
* **/html/rendering/replaced-elements/embedded-content/change-src-while-not-displayed.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html**
* **/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html**
* **/html/rendering/widgets/the-select-element/select-invalidation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html**
* **/html/semantics/embedded-content/the-iframe-element/iframe-network-error.sub.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-change.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-clip-path.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-subpixel-clip.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html**
* **/html/semantics/forms/form-submission-0/form-submit-iframe-then-location-navigate.html**
* **/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html**
* **/html/semantics/forms/the-button-element/button-willvalidate-readonly-attribute.html**
* **/html/semantics/forms/the-input-element/datetime-local-trailing-zeros.html**
* **/html/semantics/forms/the-input-element/radio-morphed.html**
* **/html/semantics/forms/the-progress-element/progress.html**
* **/html/semantics/forms/the-select-element/select-willvalidate-readonly-attribute.html**
* **/html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html**
* **/html/syntax/serializing-html-fragments/initial-linefeed-pre.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-errorevent.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-event.html**
* **/quirks/unitless-length/excluded-properties-001.html**
* **/quirks/unitless-length/excluded-properties-003.html**
* **/selection/caret/empty-elements.html**
* **/selection/contenteditable/cefalse-on-boundaries.html**
* **/selection/textcontrols/onselectionchange-content-attribute.html**
</details>

<details><summary>94× tests that improve but still fail in a way that’s clearly the subject of the test</summary>

* **/css/css-animations/animation-base-response-001.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-visited.html**
* **/css/css-backgrounds/inheritance.sub.html**
* **/css/css-backgrounds/local-attachment-content-box-scroll.html**
* **/css/css-color/canvas-change-opacity.html**
* **/css/css-color/color-initial-canvastext.html**
* **/css/css-flexbox/flex-aspect-ratio-img-column-010.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-004.html**
* **/css/css-fonts/parsing/font-face-src-format.html**
  getter works but insertRule does nothing
* **/css/css-fonts/parsing/font-face-src-list.html**
  as above
* **/css/css-fonts/parsing/font-face-src-local.html**
  as above, but also delayed length change?
* **/css/css-fonts/parsing/font-face-src-tech.html**
  as above
* **/css/css-text/white-space/trailing-space-before-br-001.html**
* **/css/css-transforms/3d-rendering-context-behavior.html**
  failures are subject of test, but also blank page?
* **/css/css-transforms/individual-transform/change-translate-property.html**
* **/css/css-transforms/preserve-3d-flat-grouping-properties.html**
* **/css/css-transforms/transforms-support-calc.html**
* **/css/css-transitions/inherit-height-transition.html**
* **/css/css-ui/inheritance.html**
* **/css/css-ui/parsing/outline-width-computed.html**
  failures are subject of test; https://drafts.csswg.org/css-values-4/#snap-a-length-as-a-border-width
* **/css/css-values/lh-unit-003.html**
* **/css/css-values/viewport-units-compute.html**
* **/css/css-values/viewport-units-keyframes.html**
* **/css/css-values/viewport-units-media-queries.html**
* **/css/css-values/viewport-units-writing-mode.html**
* **/css/cssom-view/elementsFromPoint-table.html**
* **/css/cssom-view/scroll-behavior-default-css.html**
* **/css/cssom-view/scroll-behavior-element.html**
* **/css/cssom-view/scroll-behavior-main-frame-root.html**
* **/css/cssom-view/scroll-behavior-main-frame-window.html**
* **/css/cssom-view/scroll-behavior-smooth-navigation.html**
* **/css/cssom-view/scroll-behavior-subframe-root.html**
* **/css/cssom/computed-style-003.html**
* **/css/cssom/computed-style-004.html**
* **/css/cssom/font-variant-shorthand-serialization.html**
* **/css/selectors/dir-selector-auto.html**
* **/css/selectors/has-argument-with-explicit-scope.html**
* **/css/selectors/has-basic.html**
* **/css/selectors/has-relative-argument.html**
* **/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html**
* **/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/dir-pseudo-class-in-has.html**
* **/css/selectors/invalidation/empty-pseudo-in-has.html**
* **/css/selectors/invalidation/has-in-adjacent-position.html**
* **/css/selectors/invalidation/has-in-ancestor-position.html**
* **/css/selectors/invalidation/has-in-parent-position.html**
* **/css/selectors/invalidation/has-in-sibling-position.html**
* **/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html**
* **/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html**
* **/css/selectors/invalidation/has-sibling.html**
* **/css/selectors/invalidation/has-with-not.html**
* **/css/selectors/invalidation/has-with-pseudo-class.html**
* **/css/selectors/invalidation/input-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/lang-pseudo-class-in-has.html**
* **/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/is-where-basic.html**
* **/css/selectors/is-where-not.html**
* **/html/rendering/non-replaced-elements/tables/form-in-tables.html**
* /html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html**
* **/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html**
* **/html/semantics/popovers/popover-stacking.html**
* **/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html**
* **/resource-timing/resource-reload-TAO.html**
* **/selection/bidi/modify.tentative.html**
* **/selection/contenteditable/modify.tentative.html**
* **/selection/textcontrols/selectionchange.html**
* **/css/CSS2/normal-flow/block-in-inline-client-rects-001.html**
* **/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html**
* **/css/css-animations/computed-style-animation-parsing.html**
* **/css/css-variables/variables-substitute-guaranteed-invalid.html**
* **/css/cssom-view/elementsFromPoint-simple.html**
* **/css/cssom/CSSStyleSheet-modify-after-removal.html**
* **/css/cssom/getComputedStyle-display-none-001.html**
* **/css/selectors/focus-visible-script-focus-001.html**
* **/css/selectors/has-specificity.html**
* **/css/selectors/invalidation/is.html**
* **/css/selectors/invalidation/not-002.html**
* **/dom/events/EventListener-handleEvent-cross-realm.html**
* **/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html**
* **/html/browsers/the-window-object/window-properties.https.html**
* **/html/browsers/the-window-object/window-prototype-chain.html**
* **/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html**
* **/html/dom/aria-element-reflection.html**
* **/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-with-border-object-fit.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-multiple-targets.html**
* **/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe.html**
* **/html/webappapis/scripting/events/compile-event-handler-lexical-scopes-form-owner.html**
* **/quirks/unitless-length/excluded-properties-002.html**
</details>

<details><summary>22× tests with failures that looked interesting</summary>

* 1× CRASH [expected ...]
    * **/css/css-fonts/crash-large-grapheme-cluster.html**
      crash is subject of test
* 6× FAIL [expected PASS] /... (reftest)
    * **/css/css-flexbox/anonymous-flex-item-005.html**
      old pass was spurious
    * **/css/css-flexbox/anonymous-flex-item-006.html**
      old pass was spurious
    * **/css/css-text-decor/text-decoration-line-recalc.html**
      old pass was spurious; ‘text-decoration’ shorthand unimplemented
    * **/css/css-ui/appearance-auto-non-html-namespace-001.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html**
      old pass was spurious
* 13× TIMEOUT [expected ...]
    * **/css/css-fonts/font-size-monospace-adjust.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/css/cssom-view/background-change-during-smooth-scroll.html**
      timeout is subject of test
    * **/css/selectors/invalidation/has-complexity.html**
      timeout is subject of test
    * **/css/selectors/invalidation/media-loading-pseudo-classes-in-has.html**
      timeout is subject of test; :has() unimplemented
    * **/fetch/stale-while-revalidate/stale-image.html**
      timeout is subject of test
    * **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigates-multiple-frames.html**
      timeout is subject of test
    * **/html/rendering/widgets/appearance/appearance-animation-001.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-animation-002.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-transition-001.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-002.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-003.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/resource-timing/opaque-origin.html**
      timeout is subject of test
    * **/selection/textcontrols/selectionchange-bubble.html**
      timeout is subject of test
* **/webidl/ecmascript-binding/invalid-this-value-cross-realm.html**
  ‘HTMLDocument’ unimplemented
</details>

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27949 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because ___
bors-servo added a commit that referenced this pull request Mar 27, 2023
HTML #named-access-on-the-window-object

This patch implements [named access on the window object](https://html.spec.whatwg.org/#named-access-on-the-window-object) based on @pylbrecht’s and @yvt’s previous work (see also #27952, #25562, #21869, #19904).

That work makes 130 tests pass, and I’ve made some additional changes to make [the test for the feature itself](https://wpt.live/webidl/ecmascript-binding/window-named-properties-object.html) pass too, but I haven’t worked with mozjs before, so I have no idea if I’ve gone about my changes the Right Way.

In particular, this patch:

* [x] applies @pylbrecht’s patch (#27952)
* [x] resolves conflicts related to #29079 and #28546 (5ae0ca4)
* [x] applies @yvt’s patch to the segfault in getPrototypeIfOrdinary (1e24ffd)
* [x] reverts the change introducing Untransplantable (76dc35a), since #28534 was abandoned in favour of #28536
* [x] triages the unexpected WPT results, updating expectations as needed (see below)
* [x] fixes the failures in /webidl/ecmascript-binding/window-named-properties-object.html (3844f69)
    * [x] fixes the failures in the [[GetOwnProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[DefineOwnProperty]] subtest (e4e7a14)
    * [x] fixes the failures in the [[HasProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[Get]] subtest (4bafb27)
    * [x] fixes the failures in the [[Set]] (direct) subtest (e4e7a14)
    * [x] fixes the failures in the [[Delete]] subtest (4bafb27)
    * [x] fixes the failures in the [[OwnPropertyKeys]] subtest (afcd24a)
* [x] resolves the todos and fixmes
    * [x] Document: handle exposed objects ×3 (ed3e37b)
    * [x] Window::NamedGetter: document.get_elements_with_id() (618ef57)
    * [x] get_own_property_descriptor: check for interactions with indexed access (b906fae)
    * [x] create trap: pass proper classp (618ef57)

<details><summary>131× tests that now pass</summary>

* **/webidl/ecmascript-binding/window-named-properties-object.html**
  *directly relevant to this patch*
* **/FileAPI/Blob-methods-from-detached-frame.html**
  done #29450 #29451
* **/cors/script-304.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-in-inline-that-had-block.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-that-had-block.html**
* **/css/CSS2/floats-clear/remove-block-before-self-collapsing-sibling-with-clearance.html**
* **/css/CSS2/floats/computed-float-position-absolute.html**
* **/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html**
* **/css/CSS2/normal-flow/block-in-inline-insert-018.html**
* **/css/CSS2/normal-flow/margin-collapse-through-percentage-padding.html**
* **/css/CSS2/positioning/abspos-change-in-inline-block.html**
* **/css/CSS2/positioning/abspos-width-change-inline-container-001.html**
* **/css/CSS2/positioning/detach-abspos-before-layout.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable-2.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable.html**
* **/css/CSS2/stacking-context/composite-change-after-scroll-preserves-stacking-order.html**
* **/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-change-twice-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html**
* **/css/css-animations/animation-base-response-002.html**
* **/css/css-animations/style-animation-parsing.html**
* **/css/css-backgrounds/background-clip-color-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-conic-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-linear-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-radial-repaint.html**
* **/css/css-backgrounds/background-image-none-gradient-repaint.html**
* **/css/css-backgrounds/border-radius-dynamic-from-no-radius.html**
* **/css/css-backgrounds/child-move-reveals-parent-background.html**
* **/css/css-color/filters-under-will-change-opacity.html**
* **/css/css-flexbox/anonymous-flex-item-001.html**
* **/css/css-flexbox/anonymous-flex-item-003.html**
* **/css/css-flexbox/dynamic-bsize-change.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-016.html**
* **/css/cssom/at-namespace.html**
* **/css/cssom/computed-style-002.html**
* **/css/cssom/getComputedStyle-display-none-002.html**
* **/css/cssom/getComputedStyle-display-none-003.html**
* **/css/cssom/preferred-stylesheet-reversed-order.html**
* **/css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html**
* **/css/cssom-view/pt-to-px-width.html**
* **/css/cssom-view/scroll-back-to-initial-position.html**
* **/css/css-text-decor/text-decoration-color-recalc-002.html**
* **/css/css-text-decor/text-decoration-line-grammar-error-color-dynamic-001.optional.html**
* **/css/css-text-decor/text-decoration-line-spelling-error-color-dynamic-001.optional.html**
* **/css/css-text/text-indent/percentage-value-intrinsic-size.html**
* **/css/css-text/white-space/display-contents-remove-whitespace-change.html**
* **/css/css-text/white-space/white-space-empty-text-sibling.html**
* **/css/css-transforms/change-perspective-property.html**
* **/css/css-transforms/change-scale-wide-range.html**
* **/css/css-transforms/change-transform-origin-property.html**
* **/css/css-transforms/dynamic-fixed-pos-cb-change.html**
* **/css/css-transforms/individual-transform/change-rotate-property.html**
* **/css/css-transforms/individual-transform/change-scale-property.html**
* **/css/css-transforms/paint-order-with-transform-change.html**
* **/css/css-transforms/size-change-under-backface-visibility-hidden.html**
* **/css/css-transforms/subpixel-transform-changes-001.html**
* **/css/css-transforms/subpixel-transform-changes-002.html**
* **/css/css-transforms/subpixel-transform-changes-003.html**
* **/css/css-transforms/subpixel-transform-changes-004.html**
* **/css/css-transitions/transition-reparented.html**
* **/css/css-ui/historical/moz-user-modify-01.html**
* **/css/css-ui/historical/user-modify-01.html**
* **/css/css-ui/historical/webkit-user-modify-01.html**
* **/css/css-ui/resize-change-margin.html**
* **/css/css-ui/text-overflow-change-color.html**
* **/css/css-ui/text-overflow-ellipsis-width-001.html**
* **/css/css-values/animations/line-height-lh-transition.html**
* **/css/css-values/calc-nesting.html**
* **/css/css-values/update-subpixel-rem-unit.html**
* **/css/css-values/viewport-units-modify.html**
* **/css/css-variables/css-variable-change-style-001.html**
* **/css/css-variables/css-variable-change-style-002.html**
* **/css/css-variables/variable-cycles.html**
* **/css/selectors/attribute-selectors/style-attribute-selector.html**
* **/css/selectors/i18n/lang-pseudo-class-disconnected.html**
* **/css/selectors/invalidation/attribute.html**
* **/css/selectors/invalidation/class-id-attr.html**
* **/css/selectors/invalidation/defined.html**
* **/css/selectors/invalidation/sheet-going-away-001.html**
* **/css/selectors/invalidation/sibling.html**
* **/css/selectors/missing-right-token.html**
* **/css/selectors/not-complex.html**
* **/css/selectors/not-specificity.html**
* **/css/selectors/nth-of-type-namespace.html**
* **/css/selectors/selectors-case-sensitive-001.html**
* **/css/selectors/visited-inheritance.html**
* **/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html**
* **/dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html**
* **/dom/nodes/remove-and-adopt-thcrash.html**
* **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html**
* **/html/browsers/history/the-history-interface/history_back_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_forward_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_go_cross_realm_method.html**
* **/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html**
* **/html/dom/elements/images/bypass-cache-revalidation.html**
* **/html/rendering/non-replaced-elements/tables/table-ua-stylesheet.html**
* **/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-alt-crash-001.html**
* **/html/rendering/replaced-elements/embedded-content/change-src-while-not-displayed.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html**
* **/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html**
* **/html/rendering/widgets/the-select-element/select-invalidation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html**
* **/html/semantics/embedded-content/the-iframe-element/iframe-network-error.sub.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-change.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-clip-path.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-subpixel-clip.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html**
* **/html/semantics/forms/form-submission-0/form-submit-iframe-then-location-navigate.html**
* **/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html**
* **/html/semantics/forms/the-button-element/button-willvalidate-readonly-attribute.html**
* **/html/semantics/forms/the-input-element/datetime-local-trailing-zeros.html**
* **/html/semantics/forms/the-input-element/radio-morphed.html**
* **/html/semantics/forms/the-progress-element/progress.html**
* **/html/semantics/forms/the-select-element/select-willvalidate-readonly-attribute.html**
* **/html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html**
* **/html/syntax/serializing-html-fragments/initial-linefeed-pre.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-errorevent.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-event.html**
* **/quirks/unitless-length/excluded-properties-001.html**
* **/quirks/unitless-length/excluded-properties-003.html**
* **/selection/caret/empty-elements.html**
* **/selection/contenteditable/cefalse-on-boundaries.html**
* **/selection/textcontrols/onselectionchange-content-attribute.html**
</details>

<details><summary>94× tests that improve but still fail in a way that’s clearly the subject of the test</summary>

* **/css/css-animations/animation-base-response-001.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-visited.html**
* **/css/css-backgrounds/inheritance.sub.html**
* **/css/css-backgrounds/local-attachment-content-box-scroll.html**
* **/css/css-color/canvas-change-opacity.html**
* **/css/css-color/color-initial-canvastext.html**
* **/css/css-flexbox/flex-aspect-ratio-img-column-010.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-004.html**
* **/css/css-fonts/parsing/font-face-src-format.html**
  getter works but insertRule does nothing
* **/css/css-fonts/parsing/font-face-src-list.html**
  as above
* **/css/css-fonts/parsing/font-face-src-local.html**
  as above, but also delayed length change?
* **/css/css-fonts/parsing/font-face-src-tech.html**
  as above
* **/css/css-text/white-space/trailing-space-before-br-001.html**
* **/css/css-transforms/3d-rendering-context-behavior.html**
  failures are subject of test, but also blank page?
* **/css/css-transforms/individual-transform/change-translate-property.html**
* **/css/css-transforms/preserve-3d-flat-grouping-properties.html**
* **/css/css-transforms/transforms-support-calc.html**
* **/css/css-transitions/inherit-height-transition.html**
* **/css/css-ui/inheritance.html**
* **/css/css-ui/parsing/outline-width-computed.html**
  failures are subject of test; https://drafts.csswg.org/css-values-4/#snap-a-length-as-a-border-width
* **/css/css-values/lh-unit-003.html**
* **/css/css-values/viewport-units-compute.html**
* **/css/css-values/viewport-units-keyframes.html**
* **/css/css-values/viewport-units-media-queries.html**
* **/css/css-values/viewport-units-writing-mode.html**
* **/css/cssom-view/elementsFromPoint-table.html**
* **/css/cssom-view/scroll-behavior-default-css.html**
* **/css/cssom-view/scroll-behavior-element.html**
* **/css/cssom-view/scroll-behavior-main-frame-root.html**
* **/css/cssom-view/scroll-behavior-main-frame-window.html**
* **/css/cssom-view/scroll-behavior-smooth-navigation.html**
* **/css/cssom-view/scroll-behavior-subframe-root.html**
* **/css/cssom/computed-style-003.html**
* **/css/cssom/computed-style-004.html**
* **/css/cssom/font-variant-shorthand-serialization.html**
* **/css/selectors/dir-selector-auto.html**
* **/css/selectors/has-argument-with-explicit-scope.html**
* **/css/selectors/has-basic.html**
* **/css/selectors/has-relative-argument.html**
* **/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html**
* **/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/dir-pseudo-class-in-has.html**
* **/css/selectors/invalidation/empty-pseudo-in-has.html**
* **/css/selectors/invalidation/has-in-adjacent-position.html**
* **/css/selectors/invalidation/has-in-ancestor-position.html**
* **/css/selectors/invalidation/has-in-parent-position.html**
* **/css/selectors/invalidation/has-in-sibling-position.html**
* **/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html**
* **/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html**
* **/css/selectors/invalidation/has-sibling.html**
* **/css/selectors/invalidation/has-with-not.html**
* **/css/selectors/invalidation/has-with-pseudo-class.html**
* **/css/selectors/invalidation/input-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/lang-pseudo-class-in-has.html**
* **/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/is-where-basic.html**
* **/css/selectors/is-where-not.html**
* **/html/rendering/non-replaced-elements/tables/form-in-tables.html**
* /html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html**
* **/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html**
* **/html/semantics/popovers/popover-stacking.html**
* **/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html**
* **/resource-timing/resource-reload-TAO.html**
* **/selection/bidi/modify.tentative.html**
* **/selection/contenteditable/modify.tentative.html**
* **/selection/textcontrols/selectionchange.html**
* **/css/CSS2/normal-flow/block-in-inline-client-rects-001.html**
* **/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html**
* **/css/css-animations/computed-style-animation-parsing.html**
* **/css/css-variables/variables-substitute-guaranteed-invalid.html**
* **/css/cssom-view/elementsFromPoint-simple.html**
* **/css/cssom/CSSStyleSheet-modify-after-removal.html**
* **/css/cssom/getComputedStyle-display-none-001.html**
* **/css/selectors/focus-visible-script-focus-001.html**
* **/css/selectors/has-specificity.html**
* **/css/selectors/invalidation/is.html**
* **/css/selectors/invalidation/not-002.html**
* **/dom/events/EventListener-handleEvent-cross-realm.html**
* **/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html**
* **/html/browsers/the-window-object/window-properties.https.html**
* **/html/browsers/the-window-object/window-prototype-chain.html**
* **/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html**
* **/html/dom/aria-element-reflection.html**
* **/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-with-border-object-fit.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-multiple-targets.html**
* **/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe.html**
* **/html/webappapis/scripting/events/compile-event-handler-lexical-scopes-form-owner.html**
* **/quirks/unitless-length/excluded-properties-002.html**
</details>

<details><summary>22× tests with failures that looked interesting</summary>

* 1× CRASH [expected ...]
    * **/css/css-fonts/crash-large-grapheme-cluster.html**
      crash is subject of test
* 6× FAIL [expected PASS] /... (reftest)
    * **/css/css-flexbox/anonymous-flex-item-005.html**
      old pass was spurious
    * **/css/css-flexbox/anonymous-flex-item-006.html**
      old pass was spurious
    * **/css/css-text-decor/text-decoration-line-recalc.html**
      old pass was spurious; ‘text-decoration’ shorthand unimplemented
    * **/css/css-ui/appearance-auto-non-html-namespace-001.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html**
      old pass was spurious
* 13× TIMEOUT [expected ...]
    * **/css/css-fonts/font-size-monospace-adjust.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/css/cssom-view/background-change-during-smooth-scroll.html**
      timeout is subject of test
    * **/css/selectors/invalidation/has-complexity.html**
      timeout is subject of test
    * **/css/selectors/invalidation/media-loading-pseudo-classes-in-has.html**
      timeout is subject of test; :has() unimplemented
    * **/fetch/stale-while-revalidate/stale-image.html**
      timeout is subject of test
    * **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigates-multiple-frames.html**
      timeout is subject of test
    * **/html/rendering/widgets/appearance/appearance-animation-001.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-animation-002.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-transition-001.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-002.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-003.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/resource-timing/opaque-origin.html**
      timeout is subject of test
    * **/selection/textcontrols/selectionchange-bubble.html**
      timeout is subject of test
* **/webidl/ecmascript-binding/invalid-this-value-cross-realm.html**
  ‘HTMLDocument’ unimplemented
</details>

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27949 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because ___
bors-servo added a commit that referenced this pull request Mar 27, 2023
HTML #named-access-on-the-window-object

This patch implements [named access on the window object](https://html.spec.whatwg.org/#named-access-on-the-window-object) based on @pylbrecht’s and @yvt’s previous work (see also #27952, #25562, #21869, #19904).

That work makes 130 tests pass, and I’ve made some additional changes to make [the test for the feature itself](https://wpt.live/webidl/ecmascript-binding/window-named-properties-object.html) pass too, but I haven’t worked with mozjs before, so I have no idea if I’ve gone about my changes the Right Way.

In particular, this patch:

* [x] applies @pylbrecht’s patch (#27952)
* [x] resolves conflicts related to #29079 and #28546 (5ae0ca4)
* [x] applies @yvt’s patch to the segfault in getPrototypeIfOrdinary (1e24ffd)
* [x] reverts the change introducing Untransplantable (76dc35a), since #28534 was abandoned in favour of #28536
* [x] triages the unexpected WPT results, updating expectations as needed (see below)
* [x] fixes the failures in /webidl/ecmascript-binding/window-named-properties-object.html (3844f69)
    * [x] fixes the failures in the [[GetOwnProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[DefineOwnProperty]] subtest (e4e7a14)
    * [x] fixes the failures in the [[HasProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[Get]] subtest (4bafb27)
    * [x] fixes the failures in the [[Set]] (direct) subtest (e4e7a14)
    * [x] fixes the failures in the [[Delete]] subtest (4bafb27)
    * [x] fixes the failures in the [[OwnPropertyKeys]] subtest (afcd24a)
* [x] resolves the todos and fixmes
    * [x] Document: handle exposed objects ×3 (ed3e37b)
    * [x] Window::NamedGetter: document.get_elements_with_id() (618ef57)
    * [x] get_own_property_descriptor: check for interactions with indexed access (b906fae)
    * [x] create trap: pass proper classp (618ef57)

<details><summary>131× tests that now pass</summary>

* **/webidl/ecmascript-binding/window-named-properties-object.html**
  *directly relevant to this patch*
* **/FileAPI/Blob-methods-from-detached-frame.html**
  done #29450 #29451
* **/cors/script-304.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-in-inline-that-had-block.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-that-had-block.html**
* **/css/CSS2/floats-clear/remove-block-before-self-collapsing-sibling-with-clearance.html**
* **/css/CSS2/floats/computed-float-position-absolute.html**
* **/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html**
* **/css/CSS2/normal-flow/block-in-inline-insert-018.html**
* **/css/CSS2/normal-flow/margin-collapse-through-percentage-padding.html**
* **/css/CSS2/positioning/abspos-change-in-inline-block.html**
* **/css/CSS2/positioning/abspos-width-change-inline-container-001.html**
* **/css/CSS2/positioning/detach-abspos-before-layout.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable-2.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable.html**
* **/css/CSS2/stacking-context/composite-change-after-scroll-preserves-stacking-order.html**
* **/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-change-twice-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html**
* **/css/css-animations/animation-base-response-002.html**
* **/css/css-animations/style-animation-parsing.html**
* **/css/css-backgrounds/background-clip-color-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-conic-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-linear-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-radial-repaint.html**
* **/css/css-backgrounds/background-image-none-gradient-repaint.html**
* **/css/css-backgrounds/border-radius-dynamic-from-no-radius.html**
* **/css/css-backgrounds/child-move-reveals-parent-background.html**
* **/css/css-color/filters-under-will-change-opacity.html**
* **/css/css-flexbox/anonymous-flex-item-001.html**
* **/css/css-flexbox/anonymous-flex-item-003.html**
* **/css/css-flexbox/dynamic-bsize-change.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-016.html**
* **/css/cssom/at-namespace.html**
* **/css/cssom/computed-style-002.html**
* **/css/cssom/getComputedStyle-display-none-002.html**
* **/css/cssom/getComputedStyle-display-none-003.html**
* **/css/cssom/preferred-stylesheet-reversed-order.html**
* **/css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html**
* **/css/cssom-view/pt-to-px-width.html**
* **/css/cssom-view/scroll-back-to-initial-position.html**
* **/css/css-text-decor/text-decoration-color-recalc-002.html**
* **/css/css-text-decor/text-decoration-line-grammar-error-color-dynamic-001.optional.html**
* **/css/css-text-decor/text-decoration-line-spelling-error-color-dynamic-001.optional.html**
* **/css/css-text/text-indent/percentage-value-intrinsic-size.html**
* **/css/css-text/white-space/display-contents-remove-whitespace-change.html**
* **/css/css-text/white-space/white-space-empty-text-sibling.html**
* **/css/css-transforms/change-perspective-property.html**
* **/css/css-transforms/change-scale-wide-range.html**
* **/css/css-transforms/change-transform-origin-property.html**
* **/css/css-transforms/dynamic-fixed-pos-cb-change.html**
* **/css/css-transforms/individual-transform/change-rotate-property.html**
* **/css/css-transforms/individual-transform/change-scale-property.html**
* **/css/css-transforms/paint-order-with-transform-change.html**
* **/css/css-transforms/size-change-under-backface-visibility-hidden.html**
* **/css/css-transforms/subpixel-transform-changes-001.html**
* **/css/css-transforms/subpixel-transform-changes-002.html**
* **/css/css-transforms/subpixel-transform-changes-003.html**
* **/css/css-transforms/subpixel-transform-changes-004.html**
* **/css/css-transitions/transition-reparented.html**
* **/css/css-ui/historical/moz-user-modify-01.html**
* **/css/css-ui/historical/user-modify-01.html**
* **/css/css-ui/historical/webkit-user-modify-01.html**
* **/css/css-ui/resize-change-margin.html**
* **/css/css-ui/text-overflow-change-color.html**
* **/css/css-ui/text-overflow-ellipsis-width-001.html**
* **/css/css-values/animations/line-height-lh-transition.html**
* **/css/css-values/calc-nesting.html**
* **/css/css-values/update-subpixel-rem-unit.html**
* **/css/css-values/viewport-units-modify.html**
* **/css/css-variables/css-variable-change-style-001.html**
* **/css/css-variables/css-variable-change-style-002.html**
* **/css/css-variables/variable-cycles.html**
* **/css/selectors/attribute-selectors/style-attribute-selector.html**
* **/css/selectors/i18n/lang-pseudo-class-disconnected.html**
* **/css/selectors/invalidation/attribute.html**
* **/css/selectors/invalidation/class-id-attr.html**
* **/css/selectors/invalidation/defined.html**
* **/css/selectors/invalidation/sheet-going-away-001.html**
* **/css/selectors/invalidation/sibling.html**
* **/css/selectors/missing-right-token.html**
* **/css/selectors/not-complex.html**
* **/css/selectors/not-specificity.html**
* **/css/selectors/nth-of-type-namespace.html**
* **/css/selectors/selectors-case-sensitive-001.html**
* **/css/selectors/visited-inheritance.html**
* **/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html**
* **/dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html**
* **/dom/nodes/remove-and-adopt-thcrash.html**
* **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html**
* **/html/browsers/history/the-history-interface/history_back_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_forward_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_go_cross_realm_method.html**
* **/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html**
* **/html/dom/elements/images/bypass-cache-revalidation.html**
* **/html/rendering/non-replaced-elements/tables/table-ua-stylesheet.html**
* **/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-alt-crash-001.html**
* **/html/rendering/replaced-elements/embedded-content/change-src-while-not-displayed.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html**
* **/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html**
* **/html/rendering/widgets/the-select-element/select-invalidation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html**
* **/html/semantics/embedded-content/the-iframe-element/iframe-network-error.sub.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-change.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-clip-path.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-subpixel-clip.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html**
* **/html/semantics/forms/form-submission-0/form-submit-iframe-then-location-navigate.html**
* **/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html**
* **/html/semantics/forms/the-button-element/button-willvalidate-readonly-attribute.html**
* **/html/semantics/forms/the-input-element/datetime-local-trailing-zeros.html**
* **/html/semantics/forms/the-input-element/radio-morphed.html**
* **/html/semantics/forms/the-progress-element/progress.html**
* **/html/semantics/forms/the-select-element/select-willvalidate-readonly-attribute.html**
* **/html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html**
* **/html/syntax/serializing-html-fragments/initial-linefeed-pre.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-errorevent.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-event.html**
* **/quirks/unitless-length/excluded-properties-001.html**
* **/quirks/unitless-length/excluded-properties-003.html**
* **/selection/caret/empty-elements.html**
* **/selection/contenteditable/cefalse-on-boundaries.html**
* **/selection/textcontrols/onselectionchange-content-attribute.html**
</details>

<details><summary>94× tests that improve but still fail in a way that’s clearly the subject of the test</summary>

* **/css/css-animations/animation-base-response-001.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-visited.html**
* **/css/css-backgrounds/inheritance.sub.html**
* **/css/css-backgrounds/local-attachment-content-box-scroll.html**
* **/css/css-color/canvas-change-opacity.html**
* **/css/css-color/color-initial-canvastext.html**
* **/css/css-flexbox/flex-aspect-ratio-img-column-010.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-004.html**
* **/css/css-fonts/parsing/font-face-src-format.html**
  getter works but insertRule does nothing
* **/css/css-fonts/parsing/font-face-src-list.html**
  as above
* **/css/css-fonts/parsing/font-face-src-local.html**
  as above, but also delayed length change?
* **/css/css-fonts/parsing/font-face-src-tech.html**
  as above
* **/css/css-text/white-space/trailing-space-before-br-001.html**
* **/css/css-transforms/3d-rendering-context-behavior.html**
  failures are subject of test, but also blank page?
* **/css/css-transforms/individual-transform/change-translate-property.html**
* **/css/css-transforms/preserve-3d-flat-grouping-properties.html**
* **/css/css-transforms/transforms-support-calc.html**
* **/css/css-transitions/inherit-height-transition.html**
* **/css/css-ui/inheritance.html**
* **/css/css-ui/parsing/outline-width-computed.html**
  failures are subject of test; https://drafts.csswg.org/css-values-4/#snap-a-length-as-a-border-width
* **/css/css-values/lh-unit-003.html**
* **/css/css-values/viewport-units-compute.html**
* **/css/css-values/viewport-units-keyframes.html**
* **/css/css-values/viewport-units-media-queries.html**
* **/css/css-values/viewport-units-writing-mode.html**
* **/css/cssom-view/elementsFromPoint-table.html**
* **/css/cssom-view/scroll-behavior-default-css.html**
* **/css/cssom-view/scroll-behavior-element.html**
* **/css/cssom-view/scroll-behavior-main-frame-root.html**
* **/css/cssom-view/scroll-behavior-main-frame-window.html**
* **/css/cssom-view/scroll-behavior-smooth-navigation.html**
* **/css/cssom-view/scroll-behavior-subframe-root.html**
* **/css/cssom/computed-style-003.html**
* **/css/cssom/computed-style-004.html**
* **/css/cssom/font-variant-shorthand-serialization.html**
* **/css/selectors/dir-selector-auto.html**
* **/css/selectors/has-argument-with-explicit-scope.html**
* **/css/selectors/has-basic.html**
* **/css/selectors/has-relative-argument.html**
* **/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html**
* **/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/dir-pseudo-class-in-has.html**
* **/css/selectors/invalidation/empty-pseudo-in-has.html**
* **/css/selectors/invalidation/has-in-adjacent-position.html**
* **/css/selectors/invalidation/has-in-ancestor-position.html**
* **/css/selectors/invalidation/has-in-parent-position.html**
* **/css/selectors/invalidation/has-in-sibling-position.html**
* **/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html**
* **/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html**
* **/css/selectors/invalidation/has-sibling.html**
* **/css/selectors/invalidation/has-with-not.html**
* **/css/selectors/invalidation/has-with-pseudo-class.html**
* **/css/selectors/invalidation/input-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/lang-pseudo-class-in-has.html**
* **/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/is-where-basic.html**
* **/css/selectors/is-where-not.html**
* **/html/rendering/non-replaced-elements/tables/form-in-tables.html**
* /html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html**
* **/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html**
* **/html/semantics/popovers/popover-stacking.html**
* **/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html**
* **/resource-timing/resource-reload-TAO.html**
* **/selection/bidi/modify.tentative.html**
* **/selection/contenteditable/modify.tentative.html**
* **/selection/textcontrols/selectionchange.html**
* **/css/CSS2/normal-flow/block-in-inline-client-rects-001.html**
* **/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html**
* **/css/css-animations/computed-style-animation-parsing.html**
* **/css/css-variables/variables-substitute-guaranteed-invalid.html**
* **/css/cssom-view/elementsFromPoint-simple.html**
* **/css/cssom/CSSStyleSheet-modify-after-removal.html**
* **/css/cssom/getComputedStyle-display-none-001.html**
* **/css/selectors/focus-visible-script-focus-001.html**
* **/css/selectors/has-specificity.html**
* **/css/selectors/invalidation/is.html**
* **/css/selectors/invalidation/not-002.html**
* **/dom/events/EventListener-handleEvent-cross-realm.html**
* **/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html**
* **/html/browsers/the-window-object/window-properties.https.html**
* **/html/browsers/the-window-object/window-prototype-chain.html**
* **/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html**
* **/html/dom/aria-element-reflection.html**
* **/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-with-border-object-fit.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-multiple-targets.html**
* **/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe.html**
* **/html/webappapis/scripting/events/compile-event-handler-lexical-scopes-form-owner.html**
* **/quirks/unitless-length/excluded-properties-002.html**
</details>

<details><summary>22× tests with failures that looked interesting</summary>

* 1× CRASH [expected ...]
    * **/css/css-fonts/crash-large-grapheme-cluster.html**
      crash is subject of test
* 6× FAIL [expected PASS] /... (reftest)
    * **/css/css-flexbox/anonymous-flex-item-005.html**
      old pass was spurious
    * **/css/css-flexbox/anonymous-flex-item-006.html**
      old pass was spurious
    * **/css/css-text-decor/text-decoration-line-recalc.html**
      old pass was spurious; ‘text-decoration’ shorthand unimplemented
    * **/css/css-ui/appearance-auto-non-html-namespace-001.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html**
      old pass was spurious
* 13× TIMEOUT [expected ...]
    * **/css/css-fonts/font-size-monospace-adjust.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/css/cssom-view/background-change-during-smooth-scroll.html**
      timeout is subject of test
    * **/css/selectors/invalidation/has-complexity.html**
      timeout is subject of test
    * **/css/selectors/invalidation/media-loading-pseudo-classes-in-has.html**
      timeout is subject of test; :has() unimplemented
    * **/fetch/stale-while-revalidate/stale-image.html**
      timeout is subject of test
    * **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigates-multiple-frames.html**
      timeout is subject of test
    * **/html/rendering/widgets/appearance/appearance-animation-001.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-animation-002.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-transition-001.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-002.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-003.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/resource-timing/opaque-origin.html**
      timeout is subject of test
    * **/selection/textcontrols/selectionchange-bubble.html**
      timeout is subject of test
* **/webidl/ecmascript-binding/invalid-this-value-cross-realm.html**
  ‘HTMLDocument’ unimplemented
</details>

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27949 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because ___
bors-servo added a commit that referenced this pull request Mar 27, 2023
HTML #named-access-on-the-window-object

This patch implements [named access on the window object](https://html.spec.whatwg.org/#named-access-on-the-window-object) based on @pylbrecht’s and @yvt’s previous work (see also #27952, #25562, #21869, #19904).

That work makes 130 tests pass, and I’ve made some additional changes to make [the test for the feature itself](https://wpt.live/webidl/ecmascript-binding/window-named-properties-object.html) pass too, but I haven’t worked with mozjs before, so I have no idea if I’ve gone about my changes the Right Way.

In particular, this patch:

* [x] applies @pylbrecht’s patch (#27952)
* [x] resolves conflicts related to #29079 and #28546 (5ae0ca4)
* [x] applies @yvt’s patch to the segfault in getPrototypeIfOrdinary (1e24ffd)
* [x] reverts the change introducing Untransplantable (76dc35a), since #28534 was abandoned in favour of #28536
* [x] triages the unexpected WPT results, updating expectations as needed (see below)
* [x] fixes the failures in /webidl/ecmascript-binding/window-named-properties-object.html (3844f69)
    * [x] fixes the failures in the [[GetOwnProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[DefineOwnProperty]] subtest (e4e7a14)
    * [x] fixes the failures in the [[HasProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[Get]] subtest (4bafb27)
    * [x] fixes the failures in the [[Set]] (direct) subtest (e4e7a14)
    * [x] fixes the failures in the [[Delete]] subtest (4bafb27)
    * [x] fixes the failures in the [[OwnPropertyKeys]] subtest (afcd24a)
* [x] resolves the todos and fixmes
    * [x] Document: handle exposed objects ×3 (ed3e37b)
    * [x] Window::NamedGetter: document.get_elements_with_id() (618ef57)
    * [x] get_own_property_descriptor: check for interactions with indexed access (b906fae)
    * [x] create trap: pass proper classp (618ef57)

<details><summary>131× tests that now pass</summary>

* **/webidl/ecmascript-binding/window-named-properties-object.html**
  *directly relevant to this patch*
* **/FileAPI/Blob-methods-from-detached-frame.html**
  done #29450 #29451
* **/cors/script-304.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-in-inline-that-had-block.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-that-had-block.html**
* **/css/CSS2/floats-clear/remove-block-before-self-collapsing-sibling-with-clearance.html**
* **/css/CSS2/floats/computed-float-position-absolute.html**
* **/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html**
* **/css/CSS2/normal-flow/block-in-inline-insert-018.html**
* **/css/CSS2/normal-flow/margin-collapse-through-percentage-padding.html**
* **/css/CSS2/positioning/abspos-change-in-inline-block.html**
* **/css/CSS2/positioning/abspos-width-change-inline-container-001.html**
* **/css/CSS2/positioning/detach-abspos-before-layout.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable-2.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable.html**
* **/css/CSS2/stacking-context/composite-change-after-scroll-preserves-stacking-order.html**
* **/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-change-twice-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html**
* **/css/css-animations/animation-base-response-002.html**
* **/css/css-animations/style-animation-parsing.html**
* **/css/css-backgrounds/background-clip-color-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-conic-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-linear-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-radial-repaint.html**
* **/css/css-backgrounds/background-image-none-gradient-repaint.html**
* **/css/css-backgrounds/border-radius-dynamic-from-no-radius.html**
* **/css/css-backgrounds/child-move-reveals-parent-background.html**
* **/css/css-color/filters-under-will-change-opacity.html**
* **/css/css-flexbox/anonymous-flex-item-001.html**
* **/css/css-flexbox/anonymous-flex-item-003.html**
* **/css/css-flexbox/dynamic-bsize-change.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-016.html**
* **/css/cssom/at-namespace.html**
* **/css/cssom/computed-style-002.html**
* **/css/cssom/getComputedStyle-display-none-002.html**
* **/css/cssom/getComputedStyle-display-none-003.html**
* **/css/cssom/preferred-stylesheet-reversed-order.html**
* **/css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html**
* **/css/cssom-view/pt-to-px-width.html**
* **/css/cssom-view/scroll-back-to-initial-position.html**
* **/css/css-text-decor/text-decoration-color-recalc-002.html**
* **/css/css-text-decor/text-decoration-line-grammar-error-color-dynamic-001.optional.html**
* **/css/css-text-decor/text-decoration-line-spelling-error-color-dynamic-001.optional.html**
* **/css/css-text/text-indent/percentage-value-intrinsic-size.html**
* **/css/css-text/white-space/display-contents-remove-whitespace-change.html**
* **/css/css-text/white-space/white-space-empty-text-sibling.html**
* **/css/css-transforms/change-perspective-property.html**
* **/css/css-transforms/change-scale-wide-range.html**
* **/css/css-transforms/change-transform-origin-property.html**
* **/css/css-transforms/dynamic-fixed-pos-cb-change.html**
* **/css/css-transforms/individual-transform/change-rotate-property.html**
* **/css/css-transforms/individual-transform/change-scale-property.html**
* **/css/css-transforms/paint-order-with-transform-change.html**
* **/css/css-transforms/size-change-under-backface-visibility-hidden.html**
* **/css/css-transforms/subpixel-transform-changes-001.html**
* **/css/css-transforms/subpixel-transform-changes-002.html**
* **/css/css-transforms/subpixel-transform-changes-003.html**
* **/css/css-transforms/subpixel-transform-changes-004.html**
* **/css/css-transitions/transition-reparented.html**
* **/css/css-ui/historical/moz-user-modify-01.html**
* **/css/css-ui/historical/user-modify-01.html**
* **/css/css-ui/historical/webkit-user-modify-01.html**
* **/css/css-ui/resize-change-margin.html**
* **/css/css-ui/text-overflow-change-color.html**
* **/css/css-ui/text-overflow-ellipsis-width-001.html**
* **/css/css-values/animations/line-height-lh-transition.html**
* **/css/css-values/calc-nesting.html**
* **/css/css-values/update-subpixel-rem-unit.html**
* **/css/css-values/viewport-units-modify.html**
* **/css/css-variables/css-variable-change-style-001.html**
* **/css/css-variables/css-variable-change-style-002.html**
* **/css/css-variables/variable-cycles.html**
* **/css/selectors/attribute-selectors/style-attribute-selector.html**
* **/css/selectors/i18n/lang-pseudo-class-disconnected.html**
* **/css/selectors/invalidation/attribute.html**
* **/css/selectors/invalidation/class-id-attr.html**
* **/css/selectors/invalidation/defined.html**
* **/css/selectors/invalidation/sheet-going-away-001.html**
* **/css/selectors/invalidation/sibling.html**
* **/css/selectors/missing-right-token.html**
* **/css/selectors/not-complex.html**
* **/css/selectors/not-specificity.html**
* **/css/selectors/nth-of-type-namespace.html**
* **/css/selectors/selectors-case-sensitive-001.html**
* **/css/selectors/visited-inheritance.html**
* **/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html**
* **/dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html**
* **/dom/nodes/remove-and-adopt-thcrash.html**
* **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html**
* **/html/browsers/history/the-history-interface/history_back_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_forward_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_go_cross_realm_method.html**
* **/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html**
* **/html/dom/elements/images/bypass-cache-revalidation.html**
* **/html/rendering/non-replaced-elements/tables/table-ua-stylesheet.html**
* **/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-alt-crash-001.html**
* **/html/rendering/replaced-elements/embedded-content/change-src-while-not-displayed.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html**
* **/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html**
* **/html/rendering/widgets/the-select-element/select-invalidation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html**
* **/html/semantics/embedded-content/the-iframe-element/iframe-network-error.sub.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-change.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-clip-path.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-subpixel-clip.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html**
* **/html/semantics/forms/form-submission-0/form-submit-iframe-then-location-navigate.html**
* **/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html**
* **/html/semantics/forms/the-button-element/button-willvalidate-readonly-attribute.html**
* **/html/semantics/forms/the-input-element/datetime-local-trailing-zeros.html**
* **/html/semantics/forms/the-input-element/radio-morphed.html**
* **/html/semantics/forms/the-progress-element/progress.html**
* **/html/semantics/forms/the-select-element/select-willvalidate-readonly-attribute.html**
* **/html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html**
* **/html/syntax/serializing-html-fragments/initial-linefeed-pre.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-errorevent.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-event.html**
* **/quirks/unitless-length/excluded-properties-001.html**
* **/quirks/unitless-length/excluded-properties-003.html**
* **/selection/caret/empty-elements.html**
* **/selection/contenteditable/cefalse-on-boundaries.html**
* **/selection/textcontrols/onselectionchange-content-attribute.html**
</details>

<details><summary>94× tests that improve but still fail in a way that’s clearly the subject of the test</summary>

* **/css/css-animations/animation-base-response-001.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-visited.html**
* **/css/css-backgrounds/inheritance.sub.html**
* **/css/css-backgrounds/local-attachment-content-box-scroll.html**
* **/css/css-color/canvas-change-opacity.html**
* **/css/css-color/color-initial-canvastext.html**
* **/css/css-flexbox/flex-aspect-ratio-img-column-010.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-004.html**
* **/css/css-fonts/parsing/font-face-src-format.html**
  getter works but insertRule does nothing
* **/css/css-fonts/parsing/font-face-src-list.html**
  as above
* **/css/css-fonts/parsing/font-face-src-local.html**
  as above, but also delayed length change?
* **/css/css-fonts/parsing/font-face-src-tech.html**
  as above
* **/css/css-text/white-space/trailing-space-before-br-001.html**
* **/css/css-transforms/3d-rendering-context-behavior.html**
  failures are subject of test, but also blank page?
* **/css/css-transforms/individual-transform/change-translate-property.html**
* **/css/css-transforms/preserve-3d-flat-grouping-properties.html**
* **/css/css-transforms/transforms-support-calc.html**
* **/css/css-transitions/inherit-height-transition.html**
* **/css/css-ui/inheritance.html**
* **/css/css-ui/parsing/outline-width-computed.html**
  failures are subject of test; https://drafts.csswg.org/css-values-4/#snap-a-length-as-a-border-width
* **/css/css-values/lh-unit-003.html**
* **/css/css-values/viewport-units-compute.html**
* **/css/css-values/viewport-units-keyframes.html**
* **/css/css-values/viewport-units-media-queries.html**
* **/css/css-values/viewport-units-writing-mode.html**
* **/css/cssom-view/elementsFromPoint-table.html**
* **/css/cssom-view/scroll-behavior-default-css.html**
* **/css/cssom-view/scroll-behavior-element.html**
* **/css/cssom-view/scroll-behavior-main-frame-root.html**
* **/css/cssom-view/scroll-behavior-main-frame-window.html**
* **/css/cssom-view/scroll-behavior-smooth-navigation.html**
* **/css/cssom-view/scroll-behavior-subframe-root.html**
* **/css/cssom/computed-style-003.html**
* **/css/cssom/computed-style-004.html**
* **/css/cssom/font-variant-shorthand-serialization.html**
* **/css/selectors/dir-selector-auto.html**
* **/css/selectors/has-argument-with-explicit-scope.html**
* **/css/selectors/has-basic.html**
* **/css/selectors/has-relative-argument.html**
* **/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html**
* **/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/dir-pseudo-class-in-has.html**
* **/css/selectors/invalidation/empty-pseudo-in-has.html**
* **/css/selectors/invalidation/has-in-adjacent-position.html**
* **/css/selectors/invalidation/has-in-ancestor-position.html**
* **/css/selectors/invalidation/has-in-parent-position.html**
* **/css/selectors/invalidation/has-in-sibling-position.html**
* **/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html**
* **/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html**
* **/css/selectors/invalidation/has-sibling.html**
* **/css/selectors/invalidation/has-with-not.html**
* **/css/selectors/invalidation/has-with-pseudo-class.html**
* **/css/selectors/invalidation/input-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/lang-pseudo-class-in-has.html**
* **/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/is-where-basic.html**
* **/css/selectors/is-where-not.html**
* **/html/rendering/non-replaced-elements/tables/form-in-tables.html**
* /html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html**
* **/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html**
* **/html/semantics/popovers/popover-stacking.html**
* **/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html**
* **/resource-timing/resource-reload-TAO.html**
* **/selection/bidi/modify.tentative.html**
* **/selection/contenteditable/modify.tentative.html**
* **/selection/textcontrols/selectionchange.html**
* **/css/CSS2/normal-flow/block-in-inline-client-rects-001.html**
* **/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html**
* **/css/css-animations/computed-style-animation-parsing.html**
* **/css/css-variables/variables-substitute-guaranteed-invalid.html**
* **/css/cssom-view/elementsFromPoint-simple.html**
* **/css/cssom/CSSStyleSheet-modify-after-removal.html**
* **/css/cssom/getComputedStyle-display-none-001.html**
* **/css/selectors/focus-visible-script-focus-001.html**
* **/css/selectors/has-specificity.html**
* **/css/selectors/invalidation/is.html**
* **/css/selectors/invalidation/not-002.html**
* **/dom/events/EventListener-handleEvent-cross-realm.html**
* **/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html**
* **/html/browsers/the-window-object/window-properties.https.html**
* **/html/browsers/the-window-object/window-prototype-chain.html**
* **/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html**
* **/html/dom/aria-element-reflection.html**
* **/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-with-border-object-fit.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-multiple-targets.html**
* **/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe.html**
* **/html/webappapis/scripting/events/compile-event-handler-lexical-scopes-form-owner.html**
* **/quirks/unitless-length/excluded-properties-002.html**
</details>

<details><summary>22× tests with failures that looked interesting</summary>

* 1× CRASH [expected ...]
    * **/css/css-fonts/crash-large-grapheme-cluster.html**
      crash is subject of test
* 6× FAIL [expected PASS] /... (reftest)
    * **/css/css-flexbox/anonymous-flex-item-005.html**
      old pass was spurious
    * **/css/css-flexbox/anonymous-flex-item-006.html**
      old pass was spurious
    * **/css/css-text-decor/text-decoration-line-recalc.html**
      old pass was spurious; ‘text-decoration’ shorthand unimplemented
    * **/css/css-ui/appearance-auto-non-html-namespace-001.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html**
      old pass was spurious
* 13× TIMEOUT [expected ...]
    * **/css/css-fonts/font-size-monospace-adjust.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/css/cssom-view/background-change-during-smooth-scroll.html**
      timeout is subject of test
    * **/css/selectors/invalidation/has-complexity.html**
      timeout is subject of test
    * **/css/selectors/invalidation/media-loading-pseudo-classes-in-has.html**
      timeout is subject of test; :has() unimplemented
    * **/fetch/stale-while-revalidate/stale-image.html**
      timeout is subject of test
    * **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigates-multiple-frames.html**
      timeout is subject of test
    * **/html/rendering/widgets/appearance/appearance-animation-001.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-animation-002.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-transition-001.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-002.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-003.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/resource-timing/opaque-origin.html**
      timeout is subject of test
    * **/selection/textcontrols/selectionchange-bubble.html**
      timeout is subject of test
* **/webidl/ecmascript-binding/invalid-this-value-cross-realm.html**
  ‘HTMLDocument’ unimplemented
</details>

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27949 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because ___
bors-servo added a commit that referenced this pull request Mar 27, 2023
HTML #named-access-on-the-window-object

This patch implements [named access on the window object](https://html.spec.whatwg.org/#named-access-on-the-window-object) based on @pylbrecht’s and @yvt’s previous work (see also #27952, #25562, #21869, #19904).

That work makes 130 tests pass, and I’ve made some additional changes to make [the test for the feature itself](https://wpt.live/webidl/ecmascript-binding/window-named-properties-object.html) pass too, but I haven’t worked with mozjs before, so I have no idea if I’ve gone about my changes the Right Way.

In particular, this patch:

* [x] applies @pylbrecht’s patch (#27952)
* [x] resolves conflicts related to #29079 and #28546 (5ae0ca4)
* [x] applies @yvt’s patch to the segfault in getPrototypeIfOrdinary (1e24ffd)
* [x] reverts the change introducing Untransplantable (76dc35a), since #28534 was abandoned in favour of #28536
* [x] triages the unexpected WPT results, updating expectations as needed (see below)
* [x] fixes the failures in /webidl/ecmascript-binding/window-named-properties-object.html (3844f69)
    * [x] fixes the failures in the [[GetOwnProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[DefineOwnProperty]] subtest (e4e7a14)
    * [x] fixes the failures in the [[HasProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[Get]] subtest (4bafb27)
    * [x] fixes the failures in the [[Set]] (direct) subtest (e4e7a14)
    * [x] fixes the failures in the [[Delete]] subtest (4bafb27)
    * [x] fixes the failures in the [[OwnPropertyKeys]] subtest (afcd24a)
* [x] resolves the todos and fixmes
    * [x] Document: handle exposed objects ×3 (ed3e37b)
    * [x] Window::NamedGetter: document.get_elements_with_id() (618ef57)
    * [x] get_own_property_descriptor: check for interactions with indexed access (b906fae)
    * [x] create trap: pass proper classp (618ef57)

<details><summary>131× tests that now pass</summary>

* **/webidl/ecmascript-binding/window-named-properties-object.html**
  *directly relevant to this patch*
* **/FileAPI/Blob-methods-from-detached-frame.html**
  done #29450 #29451
* **/cors/script-304.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-in-inline-that-had-block.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-that-had-block.html**
* **/css/CSS2/floats-clear/remove-block-before-self-collapsing-sibling-with-clearance.html**
* **/css/CSS2/floats/computed-float-position-absolute.html**
* **/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html**
* **/css/CSS2/normal-flow/block-in-inline-insert-018.html**
* **/css/CSS2/normal-flow/margin-collapse-through-percentage-padding.html**
* **/css/CSS2/positioning/abspos-change-in-inline-block.html**
* **/css/CSS2/positioning/abspos-width-change-inline-container-001.html**
* **/css/CSS2/positioning/detach-abspos-before-layout.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable-2.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable.html**
* **/css/CSS2/stacking-context/composite-change-after-scroll-preserves-stacking-order.html**
* **/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-change-twice-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html**
* **/css/css-animations/animation-base-response-002.html**
* **/css/css-animations/style-animation-parsing.html**
* **/css/css-backgrounds/background-clip-color-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-conic-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-linear-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-radial-repaint.html**
* **/css/css-backgrounds/background-image-none-gradient-repaint.html**
* **/css/css-backgrounds/border-radius-dynamic-from-no-radius.html**
* **/css/css-backgrounds/child-move-reveals-parent-background.html**
* **/css/css-color/filters-under-will-change-opacity.html**
* **/css/css-flexbox/anonymous-flex-item-001.html**
* **/css/css-flexbox/anonymous-flex-item-003.html**
* **/css/css-flexbox/dynamic-bsize-change.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-016.html**
* **/css/cssom/at-namespace.html**
* **/css/cssom/computed-style-002.html**
* **/css/cssom/getComputedStyle-display-none-002.html**
* **/css/cssom/getComputedStyle-display-none-003.html**
* **/css/cssom/preferred-stylesheet-reversed-order.html**
* **/css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html**
* **/css/cssom-view/pt-to-px-width.html**
* **/css/cssom-view/scroll-back-to-initial-position.html**
* **/css/css-text-decor/text-decoration-color-recalc-002.html**
* **/css/css-text-decor/text-decoration-line-grammar-error-color-dynamic-001.optional.html**
* **/css/css-text-decor/text-decoration-line-spelling-error-color-dynamic-001.optional.html**
* **/css/css-text/text-indent/percentage-value-intrinsic-size.html**
* **/css/css-text/white-space/display-contents-remove-whitespace-change.html**
* **/css/css-text/white-space/white-space-empty-text-sibling.html**
* **/css/css-transforms/change-perspective-property.html**
* **/css/css-transforms/change-scale-wide-range.html**
* **/css/css-transforms/change-transform-origin-property.html**
* **/css/css-transforms/dynamic-fixed-pos-cb-change.html**
* **/css/css-transforms/individual-transform/change-rotate-property.html**
* **/css/css-transforms/individual-transform/change-scale-property.html**
* **/css/css-transforms/paint-order-with-transform-change.html**
* **/css/css-transforms/size-change-under-backface-visibility-hidden.html**
* **/css/css-transforms/subpixel-transform-changes-001.html**
* **/css/css-transforms/subpixel-transform-changes-002.html**
* **/css/css-transforms/subpixel-transform-changes-003.html**
* **/css/css-transforms/subpixel-transform-changes-004.html**
* **/css/css-transitions/transition-reparented.html**
* **/css/css-ui/historical/moz-user-modify-01.html**
* **/css/css-ui/historical/user-modify-01.html**
* **/css/css-ui/historical/webkit-user-modify-01.html**
* **/css/css-ui/resize-change-margin.html**
* **/css/css-ui/text-overflow-change-color.html**
* **/css/css-ui/text-overflow-ellipsis-width-001.html**
* **/css/css-values/animations/line-height-lh-transition.html**
* **/css/css-values/calc-nesting.html**
* **/css/css-values/update-subpixel-rem-unit.html**
* **/css/css-values/viewport-units-modify.html**
* **/css/css-variables/css-variable-change-style-001.html**
* **/css/css-variables/css-variable-change-style-002.html**
* **/css/css-variables/variable-cycles.html**
* **/css/selectors/attribute-selectors/style-attribute-selector.html**
* **/css/selectors/i18n/lang-pseudo-class-disconnected.html**
* **/css/selectors/invalidation/attribute.html**
* **/css/selectors/invalidation/class-id-attr.html**
* **/css/selectors/invalidation/defined.html**
* **/css/selectors/invalidation/sheet-going-away-001.html**
* **/css/selectors/invalidation/sibling.html**
* **/css/selectors/missing-right-token.html**
* **/css/selectors/not-complex.html**
* **/css/selectors/not-specificity.html**
* **/css/selectors/nth-of-type-namespace.html**
* **/css/selectors/selectors-case-sensitive-001.html**
* **/css/selectors/visited-inheritance.html**
* **/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html**
* **/dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html**
* **/dom/nodes/remove-and-adopt-thcrash.html**
* **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html**
* **/html/browsers/history/the-history-interface/history_back_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_forward_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_go_cross_realm_method.html**
* **/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html**
* **/html/dom/elements/images/bypass-cache-revalidation.html**
* **/html/rendering/non-replaced-elements/tables/table-ua-stylesheet.html**
* **/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-alt-crash-001.html**
* **/html/rendering/replaced-elements/embedded-content/change-src-while-not-displayed.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html**
* **/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html**
* **/html/rendering/widgets/the-select-element/select-invalidation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html**
* **/html/semantics/embedded-content/the-iframe-element/iframe-network-error.sub.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-change.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-clip-path.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-subpixel-clip.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html**
* **/html/semantics/forms/form-submission-0/form-submit-iframe-then-location-navigate.html**
* **/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html**
* **/html/semantics/forms/the-button-element/button-willvalidate-readonly-attribute.html**
* **/html/semantics/forms/the-input-element/datetime-local-trailing-zeros.html**
* **/html/semantics/forms/the-input-element/radio-morphed.html**
* **/html/semantics/forms/the-progress-element/progress.html**
* **/html/semantics/forms/the-select-element/select-willvalidate-readonly-attribute.html**
* **/html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html**
* **/html/syntax/serializing-html-fragments/initial-linefeed-pre.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-errorevent.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-event.html**
* **/quirks/unitless-length/excluded-properties-001.html**
* **/quirks/unitless-length/excluded-properties-003.html**
* **/selection/caret/empty-elements.html**
* **/selection/contenteditable/cefalse-on-boundaries.html**
* **/selection/textcontrols/onselectionchange-content-attribute.html**
</details>

<details><summary>94× tests that improve but still fail in a way that’s clearly the subject of the test</summary>

* **/css/css-animations/animation-base-response-001.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-visited.html**
* **/css/css-backgrounds/inheritance.sub.html**
* **/css/css-backgrounds/local-attachment-content-box-scroll.html**
* **/css/css-color/canvas-change-opacity.html**
* **/css/css-color/color-initial-canvastext.html**
* **/css/css-flexbox/flex-aspect-ratio-img-column-010.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-004.html**
* **/css/css-fonts/parsing/font-face-src-format.html**
  getter works but insertRule does nothing
* **/css/css-fonts/parsing/font-face-src-list.html**
  as above
* **/css/css-fonts/parsing/font-face-src-local.html**
  as above, but also delayed length change?
* **/css/css-fonts/parsing/font-face-src-tech.html**
  as above
* **/css/css-text/white-space/trailing-space-before-br-001.html**
* **/css/css-transforms/3d-rendering-context-behavior.html**
  failures are subject of test, but also blank page?
* **/css/css-transforms/individual-transform/change-translate-property.html**
* **/css/css-transforms/preserve-3d-flat-grouping-properties.html**
* **/css/css-transforms/transforms-support-calc.html**
* **/css/css-transitions/inherit-height-transition.html**
* **/css/css-ui/inheritance.html**
* **/css/css-ui/parsing/outline-width-computed.html**
  failures are subject of test; https://drafts.csswg.org/css-values-4/#snap-a-length-as-a-border-width
* **/css/css-values/lh-unit-003.html**
* **/css/css-values/viewport-units-compute.html**
* **/css/css-values/viewport-units-keyframes.html**
* **/css/css-values/viewport-units-media-queries.html**
* **/css/css-values/viewport-units-writing-mode.html**
* **/css/cssom-view/elementsFromPoint-table.html**
* **/css/cssom-view/scroll-behavior-default-css.html**
* **/css/cssom-view/scroll-behavior-element.html**
* **/css/cssom-view/scroll-behavior-main-frame-root.html**
* **/css/cssom-view/scroll-behavior-main-frame-window.html**
* **/css/cssom-view/scroll-behavior-smooth-navigation.html**
* **/css/cssom-view/scroll-behavior-subframe-root.html**
* **/css/cssom/computed-style-003.html**
* **/css/cssom/computed-style-004.html**
* **/css/cssom/font-variant-shorthand-serialization.html**
* **/css/selectors/dir-selector-auto.html**
* **/css/selectors/has-argument-with-explicit-scope.html**
* **/css/selectors/has-basic.html**
* **/css/selectors/has-relative-argument.html**
* **/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html**
* **/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/dir-pseudo-class-in-has.html**
* **/css/selectors/invalidation/empty-pseudo-in-has.html**
* **/css/selectors/invalidation/has-in-adjacent-position.html**
* **/css/selectors/invalidation/has-in-ancestor-position.html**
* **/css/selectors/invalidation/has-in-parent-position.html**
* **/css/selectors/invalidation/has-in-sibling-position.html**
* **/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html**
* **/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html**
* **/css/selectors/invalidation/has-sibling.html**
* **/css/selectors/invalidation/has-with-not.html**
* **/css/selectors/invalidation/has-with-pseudo-class.html**
* **/css/selectors/invalidation/input-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/lang-pseudo-class-in-has.html**
* **/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/is-where-basic.html**
* **/css/selectors/is-where-not.html**
* **/html/rendering/non-replaced-elements/tables/form-in-tables.html**
* /html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html**
* **/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html**
* **/html/semantics/popovers/popover-stacking.html**
* **/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html**
* **/resource-timing/resource-reload-TAO.html**
* **/selection/bidi/modify.tentative.html**
* **/selection/contenteditable/modify.tentative.html**
* **/selection/textcontrols/selectionchange.html**
* **/css/CSS2/normal-flow/block-in-inline-client-rects-001.html**
* **/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html**
* **/css/css-animations/computed-style-animation-parsing.html**
* **/css/css-variables/variables-substitute-guaranteed-invalid.html**
* **/css/cssom-view/elementsFromPoint-simple.html**
* **/css/cssom/CSSStyleSheet-modify-after-removal.html**
* **/css/cssom/getComputedStyle-display-none-001.html**
* **/css/selectors/focus-visible-script-focus-001.html**
* **/css/selectors/has-specificity.html**
* **/css/selectors/invalidation/is.html**
* **/css/selectors/invalidation/not-002.html**
* **/dom/events/EventListener-handleEvent-cross-realm.html**
* **/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html**
* **/html/browsers/the-window-object/window-properties.https.html**
* **/html/browsers/the-window-object/window-prototype-chain.html**
* **/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html**
* **/html/dom/aria-element-reflection.html**
* **/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-with-border-object-fit.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-multiple-targets.html**
* **/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe.html**
* **/html/webappapis/scripting/events/compile-event-handler-lexical-scopes-form-owner.html**
* **/quirks/unitless-length/excluded-properties-002.html**
</details>

<details><summary>22× tests with failures that looked interesting</summary>

* 1× CRASH [expected ...]
    * **/css/css-fonts/crash-large-grapheme-cluster.html**
      crash is subject of test
* 6× FAIL [expected PASS] /... (reftest)
    * **/css/css-flexbox/anonymous-flex-item-005.html**
      old pass was spurious
    * **/css/css-flexbox/anonymous-flex-item-006.html**
      old pass was spurious
    * **/css/css-text-decor/text-decoration-line-recalc.html**
      old pass was spurious; ‘text-decoration’ shorthand unimplemented
    * **/css/css-ui/appearance-auto-non-html-namespace-001.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html**
      old pass was spurious
* 13× TIMEOUT [expected ...]
    * **/css/css-fonts/font-size-monospace-adjust.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/css/cssom-view/background-change-during-smooth-scroll.html**
      timeout is subject of test
    * **/css/selectors/invalidation/has-complexity.html**
      timeout is subject of test
    * **/css/selectors/invalidation/media-loading-pseudo-classes-in-has.html**
      timeout is subject of test; :has() unimplemented
    * **/fetch/stale-while-revalidate/stale-image.html**
      timeout is subject of test
    * **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigates-multiple-frames.html**
      timeout is subject of test
    * **/html/rendering/widgets/appearance/appearance-animation-001.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-animation-002.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-transition-001.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-002.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-003.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/resource-timing/opaque-origin.html**
      timeout is subject of test
    * **/selection/textcontrols/selectionchange-bubble.html**
      timeout is subject of test
* **/webidl/ecmascript-binding/invalid-this-value-cross-realm.html**
  ‘HTMLDocument’ unimplemented
</details>

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27949 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes (including but not limited to web-platform-tests/wpt#39211) OR
- [ ] These changes do not require tests because ___
bors-servo added a commit that referenced this pull request Mar 28, 2023
HTML #named-access-on-the-window-object

This patch implements [named access on the window object](https://html.spec.whatwg.org/#named-access-on-the-window-object) based on @pylbrecht’s and @yvt’s previous work (see also #27952, #25562, #21869, #19904).

That work makes 130 tests pass, and I’ve made some additional changes to make [the test for the feature itself](https://wpt.live/webidl/ecmascript-binding/window-named-properties-object.html) pass too, but I haven’t worked with mozjs before, so I have no idea if I’ve gone about my changes the Right Way.

In particular, this patch:

* [x] applies @pylbrecht’s patch (#27952)
* [x] resolves conflicts related to #29079 and #28546 (5ae0ca4)
* [x] applies @yvt’s patch to the segfault in getPrototypeIfOrdinary (1e24ffd)
* [x] reverts the change introducing Untransplantable (76dc35a), since #28534 was abandoned in favour of #28536
* [x] triages the unexpected WPT results, updating expectations as needed (see below)
* [x] fixes the failures in /webidl/ecmascript-binding/window-named-properties-object.html (3844f69)
    * [x] fixes the failures in the [[GetOwnProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[DefineOwnProperty]] subtest (e4e7a14)
    * [x] fixes the failures in the [[HasProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[Get]] subtest (4bafb27)
    * [x] fixes the failures in the [[Set]] (direct) subtest (e4e7a14)
    * [x] fixes the failures in the [[Delete]] subtest (4bafb27)
    * [x] fixes the failures in the [[OwnPropertyKeys]] subtest (afcd24a)
* [x] resolves the todos and fixmes
    * [x] Document: handle exposed objects ×3 (ed3e37b)
    * [x] Window::NamedGetter: document.get_elements_with_id() (618ef57)
    * [x] get_own_property_descriptor: check for interactions with indexed access (b906fae)
    * [x] create trap: pass proper classp (618ef57)

<details><summary>131× tests that now pass</summary>

* **/webidl/ecmascript-binding/window-named-properties-object.html**
  *directly relevant to this patch*
* **/FileAPI/Blob-methods-from-detached-frame.html**
  done #29450 #29451
* **/cors/script-304.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-in-inline-that-had-block.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-that-had-block.html**
* **/css/CSS2/floats-clear/remove-block-before-self-collapsing-sibling-with-clearance.html**
* **/css/CSS2/floats/computed-float-position-absolute.html**
* **/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html**
* **/css/CSS2/normal-flow/block-in-inline-insert-018.html**
* **/css/CSS2/normal-flow/margin-collapse-through-percentage-padding.html**
* **/css/CSS2/positioning/abspos-change-in-inline-block.html**
* **/css/CSS2/positioning/abspos-width-change-inline-container-001.html**
* **/css/CSS2/positioning/detach-abspos-before-layout.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable-2.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable.html**
* **/css/CSS2/stacking-context/composite-change-after-scroll-preserves-stacking-order.html**
* **/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-change-twice-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html**
* **/css/css-animations/animation-base-response-002.html**
* **/css/css-animations/style-animation-parsing.html**
* **/css/css-backgrounds/background-clip-color-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-conic-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-linear-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-radial-repaint.html**
* **/css/css-backgrounds/background-image-none-gradient-repaint.html**
* **/css/css-backgrounds/border-radius-dynamic-from-no-radius.html**
* **/css/css-backgrounds/child-move-reveals-parent-background.html**
* **/css/css-color/filters-under-will-change-opacity.html**
* **/css/css-flexbox/anonymous-flex-item-001.html**
* **/css/css-flexbox/anonymous-flex-item-003.html**
* **/css/css-flexbox/dynamic-bsize-change.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-016.html**
* **/css/cssom/at-namespace.html**
* **/css/cssom/computed-style-002.html**
* **/css/cssom/getComputedStyle-display-none-002.html**
* **/css/cssom/getComputedStyle-display-none-003.html**
* **/css/cssom/preferred-stylesheet-reversed-order.html**
* **/css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html**
* **/css/cssom-view/pt-to-px-width.html**
* **/css/cssom-view/scroll-back-to-initial-position.html**
* **/css/css-text-decor/text-decoration-color-recalc-002.html**
* **/css/css-text-decor/text-decoration-line-grammar-error-color-dynamic-001.optional.html**
* **/css/css-text-decor/text-decoration-line-spelling-error-color-dynamic-001.optional.html**
* **/css/css-text/text-indent/percentage-value-intrinsic-size.html**
* **/css/css-text/white-space/display-contents-remove-whitespace-change.html**
* **/css/css-text/white-space/white-space-empty-text-sibling.html**
* **/css/css-transforms/change-perspective-property.html**
* **/css/css-transforms/change-scale-wide-range.html**
* **/css/css-transforms/change-transform-origin-property.html**
* **/css/css-transforms/dynamic-fixed-pos-cb-change.html**
* **/css/css-transforms/individual-transform/change-rotate-property.html**
* **/css/css-transforms/individual-transform/change-scale-property.html**
* **/css/css-transforms/paint-order-with-transform-change.html**
* **/css/css-transforms/size-change-under-backface-visibility-hidden.html**
* **/css/css-transforms/subpixel-transform-changes-001.html**
* **/css/css-transforms/subpixel-transform-changes-002.html**
* **/css/css-transforms/subpixel-transform-changes-003.html**
* **/css/css-transforms/subpixel-transform-changes-004.html**
* **/css/css-transitions/transition-reparented.html**
* **/css/css-ui/historical/moz-user-modify-01.html**
* **/css/css-ui/historical/user-modify-01.html**
* **/css/css-ui/historical/webkit-user-modify-01.html**
* **/css/css-ui/resize-change-margin.html**
* **/css/css-ui/text-overflow-change-color.html**
* **/css/css-ui/text-overflow-ellipsis-width-001.html**
* **/css/css-values/animations/line-height-lh-transition.html**
* **/css/css-values/calc-nesting.html**
* **/css/css-values/update-subpixel-rem-unit.html**
* **/css/css-values/viewport-units-modify.html**
* **/css/css-variables/css-variable-change-style-001.html**
* **/css/css-variables/css-variable-change-style-002.html**
* **/css/css-variables/variable-cycles.html**
* **/css/selectors/attribute-selectors/style-attribute-selector.html**
* **/css/selectors/i18n/lang-pseudo-class-disconnected.html**
* **/css/selectors/invalidation/attribute.html**
* **/css/selectors/invalidation/class-id-attr.html**
* **/css/selectors/invalidation/defined.html**
* **/css/selectors/invalidation/sheet-going-away-001.html**
* **/css/selectors/invalidation/sibling.html**
* **/css/selectors/missing-right-token.html**
* **/css/selectors/not-complex.html**
* **/css/selectors/not-specificity.html**
* **/css/selectors/nth-of-type-namespace.html**
* **/css/selectors/selectors-case-sensitive-001.html**
* **/css/selectors/visited-inheritance.html**
* **/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html**
* **/dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html**
* **/dom/nodes/remove-and-adopt-thcrash.html**
* **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html**
* **/html/browsers/history/the-history-interface/history_back_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_forward_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_go_cross_realm_method.html**
* **/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html**
* **/html/dom/elements/images/bypass-cache-revalidation.html**
* **/html/rendering/non-replaced-elements/tables/table-ua-stylesheet.html**
* **/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-alt-crash-001.html**
* **/html/rendering/replaced-elements/embedded-content/change-src-while-not-displayed.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html**
* **/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html**
* **/html/rendering/widgets/the-select-element/select-invalidation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html**
* **/html/semantics/embedded-content/the-iframe-element/iframe-network-error.sub.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-change.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-clip-path.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-subpixel-clip.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html**
* **/html/semantics/forms/form-submission-0/form-submit-iframe-then-location-navigate.html**
* **/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html**
* **/html/semantics/forms/the-button-element/button-willvalidate-readonly-attribute.html**
* **/html/semantics/forms/the-input-element/datetime-local-trailing-zeros.html**
* **/html/semantics/forms/the-input-element/radio-morphed.html**
* **/html/semantics/forms/the-progress-element/progress.html**
* **/html/semantics/forms/the-select-element/select-willvalidate-readonly-attribute.html**
* **/html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html**
* **/html/syntax/serializing-html-fragments/initial-linefeed-pre.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-errorevent.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-event.html**
* **/quirks/unitless-length/excluded-properties-001.html**
* **/quirks/unitless-length/excluded-properties-003.html**
* **/selection/caret/empty-elements.html**
* **/selection/contenteditable/cefalse-on-boundaries.html**
* **/selection/textcontrols/onselectionchange-content-attribute.html**
</details>

<details><summary>94× tests that improve but still fail in a way that’s clearly the subject of the test</summary>

* **/css/css-animations/animation-base-response-001.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-visited.html**
* **/css/css-backgrounds/inheritance.sub.html**
* **/css/css-backgrounds/local-attachment-content-box-scroll.html**
* **/css/css-color/canvas-change-opacity.html**
* **/css/css-color/color-initial-canvastext.html**
* **/css/css-flexbox/flex-aspect-ratio-img-column-010.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-004.html**
* **/css/css-fonts/parsing/font-face-src-format.html**
  getter works but insertRule does nothing
* **/css/css-fonts/parsing/font-face-src-list.html**
  as above
* **/css/css-fonts/parsing/font-face-src-local.html**
  as above, but also delayed length change?
* **/css/css-fonts/parsing/font-face-src-tech.html**
  as above
* **/css/css-text/white-space/trailing-space-before-br-001.html**
* **/css/css-transforms/3d-rendering-context-behavior.html**
  failures are subject of test, but also blank page?
* **/css/css-transforms/individual-transform/change-translate-property.html**
* **/css/css-transforms/preserve-3d-flat-grouping-properties.html**
* **/css/css-transforms/transforms-support-calc.html**
* **/css/css-transitions/inherit-height-transition.html**
* **/css/css-ui/inheritance.html**
* **/css/css-ui/parsing/outline-width-computed.html**
  failures are subject of test; https://drafts.csswg.org/css-values-4/#snap-a-length-as-a-border-width
* **/css/css-values/lh-unit-003.html**
* **/css/css-values/viewport-units-compute.html**
* **/css/css-values/viewport-units-keyframes.html**
* **/css/css-values/viewport-units-media-queries.html**
* **/css/css-values/viewport-units-writing-mode.html**
* **/css/cssom-view/elementsFromPoint-table.html**
* **/css/cssom-view/scroll-behavior-default-css.html**
* **/css/cssom-view/scroll-behavior-element.html**
* **/css/cssom-view/scroll-behavior-main-frame-root.html**
* **/css/cssom-view/scroll-behavior-main-frame-window.html**
* **/css/cssom-view/scroll-behavior-smooth-navigation.html**
* **/css/cssom-view/scroll-behavior-subframe-root.html**
* **/css/cssom/computed-style-003.html**
* **/css/cssom/computed-style-004.html**
* **/css/cssom/font-variant-shorthand-serialization.html**
* **/css/selectors/dir-selector-auto.html**
* **/css/selectors/has-argument-with-explicit-scope.html**
* **/css/selectors/has-basic.html**
* **/css/selectors/has-relative-argument.html**
* **/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html**
* **/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/dir-pseudo-class-in-has.html**
* **/css/selectors/invalidation/empty-pseudo-in-has.html**
* **/css/selectors/invalidation/has-in-adjacent-position.html**
* **/css/selectors/invalidation/has-in-ancestor-position.html**
* **/css/selectors/invalidation/has-in-parent-position.html**
* **/css/selectors/invalidation/has-in-sibling-position.html**
* **/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html**
* **/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html**
* **/css/selectors/invalidation/has-sibling.html**
* **/css/selectors/invalidation/has-with-not.html**
* **/css/selectors/invalidation/has-with-pseudo-class.html**
* **/css/selectors/invalidation/input-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/lang-pseudo-class-in-has.html**
* **/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/is-where-basic.html**
* **/css/selectors/is-where-not.html**
* **/html/rendering/non-replaced-elements/tables/form-in-tables.html**
* /html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html**
* **/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html**
* **/html/semantics/popovers/popover-stacking.html**
* **/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html**
* **/resource-timing/resource-reload-TAO.html**
* **/selection/bidi/modify.tentative.html**
* **/selection/contenteditable/modify.tentative.html**
* **/selection/textcontrols/selectionchange.html**
* **/css/CSS2/normal-flow/block-in-inline-client-rects-001.html**
* **/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html**
* **/css/css-animations/computed-style-animation-parsing.html**
* **/css/css-variables/variables-substitute-guaranteed-invalid.html**
* **/css/cssom-view/elementsFromPoint-simple.html**
* **/css/cssom/CSSStyleSheet-modify-after-removal.html**
* **/css/cssom/getComputedStyle-display-none-001.html**
* **/css/selectors/focus-visible-script-focus-001.html**
* **/css/selectors/has-specificity.html**
* **/css/selectors/invalidation/is.html**
* **/css/selectors/invalidation/not-002.html**
* **/dom/events/EventListener-handleEvent-cross-realm.html**
* **/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html**
* **/html/browsers/the-window-object/window-properties.https.html**
* **/html/browsers/the-window-object/window-prototype-chain.html**
* **/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html**
* **/html/dom/aria-element-reflection.html**
* **/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-with-border-object-fit.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-multiple-targets.html**
* **/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe.html**
* **/html/webappapis/scripting/events/compile-event-handler-lexical-scopes-form-owner.html**
* **/quirks/unitless-length/excluded-properties-002.html**
</details>

<details><summary>22× tests with failures that looked interesting</summary>

* 1× CRASH [expected ...]
    * **/css/css-fonts/crash-large-grapheme-cluster.html**
      crash is subject of test
* 6× FAIL [expected PASS] /... (reftest)
    * **/css/css-flexbox/anonymous-flex-item-005.html**
      old pass was spurious
    * **/css/css-flexbox/anonymous-flex-item-006.html**
      old pass was spurious
    * **/css/css-text-decor/text-decoration-line-recalc.html**
      old pass was spurious; ‘text-decoration’ shorthand unimplemented
    * **/css/css-ui/appearance-auto-non-html-namespace-001.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html**
      old pass was spurious
* 13× TIMEOUT [expected ...]
    * **/css/css-fonts/font-size-monospace-adjust.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/css/cssom-view/background-change-during-smooth-scroll.html**
      timeout is subject of test
    * **/css/selectors/invalidation/has-complexity.html**
      timeout is subject of test
    * **/css/selectors/invalidation/media-loading-pseudo-classes-in-has.html**
      timeout is subject of test; :has() unimplemented
    * **/fetch/stale-while-revalidate/stale-image.html**
      timeout is subject of test
    * **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigates-multiple-frames.html**
      timeout is subject of test
    * **/html/rendering/widgets/appearance/appearance-animation-001.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-animation-002.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-transition-001.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-002.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-003.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/resource-timing/opaque-origin.html**
      timeout is subject of test
    * **/selection/textcontrols/selectionchange-bubble.html**
      timeout is subject of test
* **/webidl/ecmascript-binding/invalid-this-value-cross-realm.html**
  ‘HTMLDocument’ unimplemented
</details>

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27949 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes (including but not limited to web-platform-tests/wpt#39211) OR
- [ ] These changes do not require tests because ___
bors-servo added a commit that referenced this pull request Mar 28, 2023
HTML #named-access-on-the-window-object

This patch implements [named access on the window object](https://html.spec.whatwg.org/#named-access-on-the-window-object) based on @pylbrecht’s and @yvt’s previous work (see also #27952, #25562, #21869, #19904).

That work makes 130 tests pass, and I’ve made some additional changes to make [the test for the feature itself](https://wpt.live/webidl/ecmascript-binding/window-named-properties-object.html) pass too, but I haven’t worked with mozjs before, so I have no idea if I’ve gone about my changes the Right Way.

In particular, this patch:

* [x] applies @pylbrecht’s patch (#27952)
* [x] resolves conflicts related to #29079 and #28546 (5ae0ca4)
* [x] applies @yvt’s patch to the segfault in getPrototypeIfOrdinary (1e24ffd)
* [x] reverts the change introducing Untransplantable (76dc35a), since #28534 was abandoned in favour of #28536
* [x] triages the unexpected WPT results, updating expectations as needed (see below)
* [x] fixes the failures in /webidl/ecmascript-binding/window-named-properties-object.html (3844f69)
    * [x] fixes the failures in the [[GetOwnProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[DefineOwnProperty]] subtest (e4e7a14)
    * [x] fixes the failures in the [[HasProperty]] subtest (75c24e9)
    * [x] fixes the failures in the [[Get]] subtest (4bafb27)
    * [x] fixes the failures in the [[Set]] (direct) subtest (e4e7a14)
    * [x] fixes the failures in the [[Delete]] subtest (4bafb27)
    * [x] fixes the failures in the [[OwnPropertyKeys]] subtest (afcd24a)
* [x] resolves the todos and fixmes
    * [x] Document: handle exposed objects ×3 (ed3e37b)
    * [x] Window::NamedGetter: document.get_elements_with_id() (618ef57)
    * [x] get_own_property_descriptor: check for interactions with indexed access (b906fae)
    * [x] create trap: pass proper classp (618ef57)

<details><summary>131× tests that now pass</summary>

* **/webidl/ecmascript-binding/window-named-properties-object.html**
  *directly relevant to this patch*
* **/FileAPI/Blob-methods-from-detached-frame.html**
  done #29450 #29451
* **/cors/script-304.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-in-inline-that-had-block.html**
* **/css/CSS2/abspos/adjacent-to-relpos-inline-that-had-block.html**
* **/css/CSS2/floats-clear/remove-block-before-self-collapsing-sibling-with-clearance.html**
* **/css/CSS2/floats/computed-float-position-absolute.html**
* **/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html**
* **/css/CSS2/normal-flow/block-in-inline-insert-018.html**
* **/css/CSS2/normal-flow/margin-collapse-through-percentage-padding.html**
* **/css/CSS2/positioning/abspos-change-in-inline-block.html**
* **/css/CSS2/positioning/abspos-width-change-inline-container-001.html**
* **/css/CSS2/positioning/detach-abspos-before-layout.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable-2.html**
* **/css/CSS2/positioning/relpos-percentage-left-in-scrollable.html**
* **/css/CSS2/stacking-context/composite-change-after-scroll-preserves-stacking-order.html**
* **/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-change-twice-stacking-context.html**
* **/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html**
* **/css/css-animations/animation-base-response-002.html**
* **/css/css-animations/style-animation-parsing.html**
* **/css/css-backgrounds/background-clip-color-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-conic-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-linear-repaint.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-radial-repaint.html**
* **/css/css-backgrounds/background-image-none-gradient-repaint.html**
* **/css/css-backgrounds/border-radius-dynamic-from-no-radius.html**
* **/css/css-backgrounds/child-move-reveals-parent-background.html**
* **/css/css-color/filters-under-will-change-opacity.html**
* **/css/css-flexbox/anonymous-flex-item-001.html**
* **/css/css-flexbox/anonymous-flex-item-003.html**
* **/css/css-flexbox/dynamic-bsize-change.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-016.html**
* **/css/cssom/at-namespace.html**
* **/css/cssom/computed-style-002.html**
* **/css/cssom/getComputedStyle-display-none-002.html**
* **/css/cssom/getComputedStyle-display-none-003.html**
* **/css/cssom/preferred-stylesheet-reversed-order.html**
* **/css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html**
* **/css/cssom-view/pt-to-px-width.html**
* **/css/cssom-view/scroll-back-to-initial-position.html**
* **/css/css-text-decor/text-decoration-color-recalc-002.html**
* **/css/css-text-decor/text-decoration-line-grammar-error-color-dynamic-001.optional.html**
* **/css/css-text-decor/text-decoration-line-spelling-error-color-dynamic-001.optional.html**
* **/css/css-text/text-indent/percentage-value-intrinsic-size.html**
* **/css/css-text/white-space/display-contents-remove-whitespace-change.html**
* **/css/css-text/white-space/white-space-empty-text-sibling.html**
* **/css/css-transforms/change-perspective-property.html**
* **/css/css-transforms/change-scale-wide-range.html**
* **/css/css-transforms/change-transform-origin-property.html**
* **/css/css-transforms/dynamic-fixed-pos-cb-change.html**
* **/css/css-transforms/individual-transform/change-rotate-property.html**
* **/css/css-transforms/individual-transform/change-scale-property.html**
* **/css/css-transforms/paint-order-with-transform-change.html**
* **/css/css-transforms/size-change-under-backface-visibility-hidden.html**
* **/css/css-transforms/subpixel-transform-changes-001.html**
* **/css/css-transforms/subpixel-transform-changes-002.html**
* **/css/css-transforms/subpixel-transform-changes-003.html**
* **/css/css-transforms/subpixel-transform-changes-004.html**
* **/css/css-transitions/transition-reparented.html**
* **/css/css-ui/historical/moz-user-modify-01.html**
* **/css/css-ui/historical/user-modify-01.html**
* **/css/css-ui/historical/webkit-user-modify-01.html**
* **/css/css-ui/resize-change-margin.html**
* **/css/css-ui/text-overflow-change-color.html**
* **/css/css-ui/text-overflow-ellipsis-width-001.html**
* **/css/css-values/animations/line-height-lh-transition.html**
* **/css/css-values/calc-nesting.html**
* **/css/css-values/update-subpixel-rem-unit.html**
* **/css/css-values/viewport-units-modify.html**
* **/css/css-variables/css-variable-change-style-001.html**
* **/css/css-variables/css-variable-change-style-002.html**
* **/css/css-variables/variable-cycles.html**
* **/css/selectors/attribute-selectors/style-attribute-selector.html**
* **/css/selectors/i18n/lang-pseudo-class-disconnected.html**
* **/css/selectors/invalidation/attribute.html**
* **/css/selectors/invalidation/class-id-attr.html**
* **/css/selectors/invalidation/defined.html**
* **/css/selectors/invalidation/sheet-going-away-001.html**
* **/css/selectors/invalidation/sibling.html**
* **/css/selectors/missing-right-token.html**
* **/css/selectors/not-complex.html**
* **/css/selectors/not-specificity.html**
* **/css/selectors/nth-of-type-namespace.html**
* **/css/selectors/selectors-case-sensitive-001.html**
* **/css/selectors/visited-inheritance.html**
* **/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html**
* **/dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html**
* **/dom/nodes/remove-and-adopt-thcrash.html**
* **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html**
* **/html/browsers/history/the-history-interface/history_back_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_forward_cross_realm_method.html**
* **/html/browsers/history/the-history-interface/history_go_cross_realm_method.html**
* **/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html**
* **/html/dom/elements/images/bypass-cache-revalidation.html**
* **/html/rendering/non-replaced-elements/tables/table-ua-stylesheet.html**
* **/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-alt-crash-001.html**
* **/html/rendering/replaced-elements/embedded-content/change-src-while-not-displayed.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html**
* **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html**
* **/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html**
* **/html/rendering/widgets/the-select-element/select-invalidation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html**
* **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus.html**
* **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html**
* **/html/semantics/embedded-content/the-iframe-element/iframe-network-error.sub.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html**
* **/html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-change.html**
* **/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-clip-path.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-subpixel-clip.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html**
* **/html/semantics/forms/form-submission-0/form-submit-iframe-then-location-navigate.html**
* **/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html**
* **/html/semantics/forms/the-button-element/button-willvalidate-readonly-attribute.html**
* **/html/semantics/forms/the-input-element/datetime-local-trailing-zeros.html**
* **/html/semantics/forms/the-input-element/radio-morphed.html**
* **/html/semantics/forms/the-progress-element/progress.html**
* **/html/semantics/forms/the-select-element/select-willvalidate-readonly-attribute.html**
* **/html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html**
* **/html/syntax/serializing-html-fragments/initial-linefeed-pre.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-errorevent.html**
* **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-event.html**
* **/quirks/unitless-length/excluded-properties-001.html**
* **/quirks/unitless-length/excluded-properties-003.html**
* **/selection/caret/empty-elements.html**
* **/selection/contenteditable/cefalse-on-boundaries.html**
* **/selection/textcontrols/onselectionchange-content-attribute.html**
</details>

<details><summary>94× tests that improve but still fail in a way that’s clearly the subject of the test</summary>

* **/css/css-animations/animation-base-response-001.html**
* **/css/css-backgrounds/background-image-gradient-currentcolor-visited.html**
* **/css/css-backgrounds/inheritance.sub.html**
* **/css/css-backgrounds/local-attachment-content-box-scroll.html**
* **/css/css-color/canvas-change-opacity.html**
* **/css/css-color/color-initial-canvastext.html**
* **/css/css-flexbox/flex-aspect-ratio-img-column-010.html**
* **/css/css-flexbox/flex-aspect-ratio-img-row-004.html**
* **/css/css-fonts/parsing/font-face-src-format.html**
  getter works but insertRule does nothing
* **/css/css-fonts/parsing/font-face-src-list.html**
  as above
* **/css/css-fonts/parsing/font-face-src-local.html**
  as above, but also delayed length change?
* **/css/css-fonts/parsing/font-face-src-tech.html**
  as above
* **/css/css-text/white-space/trailing-space-before-br-001.html**
* **/css/css-transforms/3d-rendering-context-behavior.html**
  failures are subject of test, but also blank page?
* **/css/css-transforms/individual-transform/change-translate-property.html**
* **/css/css-transforms/preserve-3d-flat-grouping-properties.html**
* **/css/css-transforms/transforms-support-calc.html**
* **/css/css-transitions/inherit-height-transition.html**
* **/css/css-ui/inheritance.html**
* **/css/css-ui/parsing/outline-width-computed.html**
  failures are subject of test; https://drafts.csswg.org/css-values-4/#snap-a-length-as-a-border-width
* **/css/css-values/lh-unit-003.html**
* **/css/css-values/viewport-units-compute.html**
* **/css/css-values/viewport-units-keyframes.html**
* **/css/css-values/viewport-units-media-queries.html**
* **/css/css-values/viewport-units-writing-mode.html**
* **/css/cssom-view/elementsFromPoint-table.html**
* **/css/cssom-view/scroll-behavior-default-css.html**
* **/css/cssom-view/scroll-behavior-element.html**
* **/css/cssom-view/scroll-behavior-main-frame-root.html**
* **/css/cssom-view/scroll-behavior-main-frame-window.html**
* **/css/cssom-view/scroll-behavior-smooth-navigation.html**
* **/css/cssom-view/scroll-behavior-subframe-root.html**
* **/css/cssom/computed-style-003.html**
* **/css/cssom/computed-style-004.html**
* **/css/cssom/font-variant-shorthand-serialization.html**
* **/css/selectors/dir-selector-auto.html**
* **/css/selectors/has-argument-with-explicit-scope.html**
* **/css/selectors/has-basic.html**
* **/css/selectors/has-relative-argument.html**
* **/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html**
* **/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/dir-pseudo-class-in-has.html**
* **/css/selectors/invalidation/empty-pseudo-in-has.html**
* **/css/selectors/invalidation/has-in-adjacent-position.html**
* **/css/selectors/invalidation/has-in-ancestor-position.html**
* **/css/selectors/invalidation/has-in-parent-position.html**
* **/css/selectors/invalidation/has-in-sibling-position.html**
* **/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html**
* **/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html**
* **/css/selectors/invalidation/has-sibling.html**
* **/css/selectors/invalidation/has-with-not.html**
* **/css/selectors/invalidation/has-with-pseudo-class.html**
* **/css/selectors/invalidation/input-pseudo-classes-in-has.html**
* **/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/lang-pseudo-class-in-has.html**
* **/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html**
* **/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html**
* **/css/selectors/is-where-basic.html**
* **/css/selectors/is-where-not.html**
* **/html/rendering/non-replaced-elements/tables/form-in-tables.html**
* /html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html**
* **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html**
* **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html**
* **/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html**
* **/html/semantics/popovers/popover-stacking.html**
* **/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html**
* **/resource-timing/resource-reload-TAO.html**
* **/selection/bidi/modify.tentative.html**
* **/selection/contenteditable/modify.tentative.html**
* **/selection/textcontrols/selectionchange.html**
* **/css/CSS2/normal-flow/block-in-inline-client-rects-001.html**
* **/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html**
* **/css/css-animations/computed-style-animation-parsing.html**
* **/css/css-variables/variables-substitute-guaranteed-invalid.html**
* **/css/cssom-view/elementsFromPoint-simple.html**
* **/css/cssom/CSSStyleSheet-modify-after-removal.html**
* **/css/cssom/getComputedStyle-display-none-001.html**
* **/css/selectors/focus-visible-script-focus-001.html**
* **/css/selectors/has-specificity.html**
* **/css/selectors/invalidation/is.html**
* **/css/selectors/invalidation/not-002.html**
* **/dom/events/EventListener-handleEvent-cross-realm.html**
* **/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html**
* **/html/browsers/the-window-object/window-properties.https.html**
* **/html/browsers/the-window-object/window-prototype-chain.html**
* **/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html**
* **/html/dom/aria-element-reflection.html**
* **/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-with-border-object-fit.html**
* **/html/semantics/forms/form-submission-0/form-double-submit-multiple-targets.html**
* **/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe.html**
* **/html/webappapis/scripting/events/compile-event-handler-lexical-scopes-form-owner.html**
* **/quirks/unitless-length/excluded-properties-002.html**
</details>

<details><summary>22× tests with failures that looked interesting</summary>

* 1× CRASH [expected ...]
    * **/css/css-fonts/crash-large-grapheme-cluster.html**
      crash is subject of test
* 6× FAIL [expected PASS] /... (reftest)
    * **/css/css-flexbox/anonymous-flex-item-005.html**
      old pass was spurious
    * **/css/css-flexbox/anonymous-flex-item-006.html**
      old pass was spurious
    * **/css/css-text-decor/text-decoration-line-recalc.html**
      old pass was spurious; ‘text-decoration’ shorthand unimplemented
    * **/css/css-ui/appearance-auto-non-html-namespace-001.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html**
      old pass was spurious
    * **/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html**
      old pass was spurious
* 13× TIMEOUT [expected ...]
    * **/css/css-fonts/font-size-monospace-adjust.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/css/cssom-view/background-change-during-smooth-scroll.html**
      timeout is subject of test
    * **/css/selectors/invalidation/has-complexity.html**
      timeout is subject of test
    * **/css/selectors/invalidation/media-loading-pseudo-classes-in-has.html**
      timeout is subject of test; :has() unimplemented
    * **/fetch/stale-while-revalidate/stale-image.html**
      timeout is subject of test
    * **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigates-multiple-frames.html**
      timeout is subject of test
    * **/html/rendering/widgets/appearance/appearance-animation-001.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-animation-002.html**
      timeout is subject of test; reftest runner bug with 1e10s animation?
    * **/html/rendering/widgets/appearance/appearance-transition-001.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-002.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/html/rendering/widgets/appearance/appearance-transition-003.html**
      timeout is subject of test; reftest runner bug with 1e10s transition?
    * **/resource-timing/opaque-origin.html**
      timeout is subject of test
    * **/selection/textcontrols/selectionchange-bubble.html**
      timeout is subject of test
* **/webidl/ecmascript-binding/invalid-this-value-cross-realm.html**
  ‘HTMLDocument’ unimplemented
</details>

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27949 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes (including but not limited to web-platform-tests/wpt#39211) OR
- [ ] These changes do not require tests because ___
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-content/script Related to the script thread

Projects

None yet

Development

Successfully merging this pull request may close these issues.

(new Blob).slice(0,0).text() panics due to BorrowError in GlobalScope.blob_state

3 participants