script: fix BorrowError in (new Blob).slice(0,0).text()#29451
script: fix BorrowError in (new Blob).slice(0,0).text()#29451bors-servo merged 2 commits intomasterfrom
Conversation
Loirooriol
left a comment
There was a problem hiding this comment.
get_blob_size and get_blob_url_id look quite similar (not just the code inlined in this PR), so maybe it would be good to try to refactor them to share the common logic, but for now I think it's fine as-is.
The description says "There are tests for these changes" but I don't know if that's the right option if the tests depend on #29396
|
Thanks! I guess we can refactor them the next time we need to change that logic in a way that affects both methods. @bors-servo r=Loirooriol |
|
📌 Commit 55203d7 has been approved by |
script: fix BorrowError in (new Blob).slice(0,0).text() When getting the text of a sliced Blob, we call GlobalScope.get_blob_url_id, which borrows the blob_state field mutably and calls the get_blob_size method (aka [Blob#size](https://w3c.github.io/FileAPI/#dfn-size)), which tries to borrow the same field immutably, causing a panic. This patch inlines the relevant parts of get_blob_size into get_blob_url_id, so we can reuse the mutable borrow. As a result, /FileAPI/Blob-methods-from-detached-frame.html will pass once #29396 also lands. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #29450 <!-- Either: --> - [ ] There are tests for these changes OR - [x] These changes do not require tests because there are already tests for this that are blocked by #29396
|
💡 This pull request was already approved, no need to approve it again.
|
|
📌 Commit 55203d7 has been approved by |
script: fix BorrowError in (new Blob).slice(0,0).text() When getting the text of a sliced Blob, we call GlobalScope.get_blob_url_id, which borrows the blob_state field mutably and calls the get_blob_size method (aka [Blob#size](https://w3c.github.io/FileAPI/#dfn-size)), which tries to borrow the same field immutably, causing a panic. This patch inlines the relevant parts of get_blob_size into get_blob_url_id, so we can reuse the mutable borrow. As a result, /FileAPI/Blob-methods-from-detached-frame.html will pass once #29396 also lands. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #29450 <!-- Either: --> - [ ] There are tests for these changes OR - [x] These changes do not require tests because there are already tests for this that are blocked by #29396
|
Results from try job (#4303762036): Flaky unexpected result (15)
Stable unexpected results that are known to be intermittent (24)
Stable unexpected results (2)
|
|
Results from try job (#4303783592): Flaky unexpected result (17)
Stable unexpected results that are known to be intermittent (21)
Stable unexpected results (2)
|
|
💔 Test failed - checks-github |
|
@Loirooriol i’ve updated expectations to include new passes, ok to merge? |
|
Sure, not crashing is good. |
|
@bors-servo r=Loirooriol |
|
📌 Commit 24812f1 has been approved by |
|
Results from try job (#4315894919): Flaky unexpected result (17)
Stable unexpected results that are known to be intermittent (13)
|
|
☀️ Test successful - checks-github |
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 ___
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 ___
When getting the text of a sliced Blob, we call GlobalScope.get_blob_url_id, which borrows the blob_state field mutably and calls the get_blob_size method (aka Blob#size), which tries to borrow the same field immutably, causing a panic.
This patch inlines the relevant parts of get_blob_size into get_blob_url_id, so we can reuse the mutable borrow.
./mach build -ddoes not report any errors./mach test-tidydoes not report any errors