-
-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Named window getter is missing #27949
Comments
The most recent work on this was happening in https://github.com/servo/servo/tree/named-getter. |
Sign me up, please! |
Alright, I'm gonna dive into the provided information and probably come back with some questions. |
I think I had come very close in #25562, although my implementation was inelegant. The only thing I had outright wrong in it was the shape of the Window object's prototype chain, which requires some subtle Spidermonkey knowledge I didn't have and still don't have. |
Implement named access on the window object <!-- Please describe your changes on the following line: --> --- <!-- 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 <!-- Either: --> - [ ] There are tests for these changes <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
I ended up in the terrain of debugging code I did not write nor fully understand, which is quite frustrating and took out all the fun for me. I'd like to hand this over to someone else with more experience or more will to debug this. Besides https://servo.zulipchat.com/#narrow/stream/263398-general/topic/Debugging.20wpt.20tests hopefully giving some context on what I've tried so far, I'm of course available to answer any questions to anyone picking this up. @jdm, I'm not sure what to do about #27952. Feel free to close it, if that is the way to go. |
I'm continuing to poke at the failures in #27952, so I'll leave it open. |
Great! If any concrete tasks come out of that, let me know. Maybe I can be of help then. |
Implement named access on the window object <!-- Please describe your changes on the following line: --> --- <!-- 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 <!-- Either: --> - [ ] There are tests for these changes <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Implement named access on the window object <!-- Please describe your changes on the following line: --> --- <!-- 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 <!-- Either: --> - [ ] There are tests for these changes <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
HTML #named-access-on-the-window-object (see also #27952, #25562, #21869, #19904) * [x] updates #27952, resolving conflicts related to #29079 and #28546 * [ ] fixes “Servo exited with return value 11” --- <!-- 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 ___
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) --- <!-- 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 ___
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) --- <!-- 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 ___
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 ___
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 ___
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 ___
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 ___
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 ___
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 ___
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 ___
From https://html.spec.whatwg.org/multipage/window-object.html#the-window-object, we are currently missing this bit:
and
LegacyUnenumerableNamedProperties
Spec:
#25562 and #21869 are two previous WIPs to implement this feature.
The text was updated successfully, but these errors were encountered: