Sync WPT with upstream (29-06-2025) (#37774)

Automated downstream sync of changes from upstream as of 29-06-2025
[no-wpt-sync]

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
This commit is contained in:
Servo WPT Sync 2025-06-29 03:47:33 +02:00 committed by GitHub
parent e1c037815c
commit 9a0f2be162
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
548 changed files with 15671 additions and 4682 deletions

View file

@ -14,6 +14,3 @@
[Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.]
expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in <script> tags.]
expected: TIMEOUT

View file

@ -1,2 +0,0 @@
[idb-binary-key-detached.htm]
expected: CRASH

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,55 @@
[invalid-bytes.html]
expected: TIMEOUT
[CSP: "img-src 'none'\\x01" should allow rendering (Invalid directive ignored).]
expected: TIMEOUT
[CSP: "img-src 'none' http:\\x01" should allow rendering (Invalid directive ignored).]
expected: NOTRUN
[CSP: "img-src 'self'\\x01" should allow rendering (Invalid directive ignored).]
expected: NOTRUN
[CSP: "img-src 'none'; media-src 'self'\\x01" should block rendering.]
expected: NOTRUN
[CSP: "img-src 'self'; media-src 'self'\\x01" should allow rendering.]
expected: NOTRUN
[CSP: "img-src 'self', img-src 'self'\\x01" should allow rendering.]
expected: NOTRUN
[CSP: "img-src 'none', img-src 'self'\\x01" should block rendering.]
expected: NOTRUN
[CSP: "img-src 'self', img-src\\x01" should allow rendering.]
expected: NOTRUN
[CSP: "img-src 'none', img-src\\x01" should block rendering.]
expected: NOTRUN
[CSP: "img-src 'none'\\x7f" should allow rendering (Invalid directive ignored).]
expected: NOTRUN
[CSP: "img-src 'none' http:\\x7f" should allow rendering (Invalid directive ignored).]
expected: NOTRUN
[CSP: "img-src 'self'\\x7f" should allow rendering (Invalid directive ignored).]
expected: NOTRUN
[CSP: "img-src 'none'; media-src 'self'\\x7f" should block rendering.]
expected: NOTRUN
[CSP: "img-src 'self'; media-src 'self'\\x7f" should allow rendering.]
expected: NOTRUN
[CSP: "img-src 'self', img-src 'self'\\x7f" should allow rendering.]
expected: NOTRUN
[CSP: "img-src 'none', img-src 'self'\\x7f" should block rendering.]
expected: NOTRUN
[CSP: "img-src 'self', img-src\\x7f" should allow rendering.]
expected: NOTRUN
[CSP: "img-src 'none', img-src\\x7f" should block rendering.]
expected: NOTRUN

View file

@ -0,0 +1,36 @@
[script-url-allowed-by-hash.https.html]
[script-src should allow script by its url hash - header]
expected: FAIL
[A parseable url-hash should ignore hostname allowlists - header]
expected: FAIL
[default-src should allow script by its url hash - header]
expected: FAIL
[script-src-elem should allow script by its url hash - header]
expected: FAIL
[url hashes should allow dynamically inserted script if allowlisted - header]
expected: FAIL
[url hashes should allow redirected scripts - header]
expected: FAIL
[script-src should allow script by its url hash - metatag]
expected: FAIL
[A parseable url-hash should ignore hostname allowlists - metatag]
expected: FAIL
[default-src should allow script by its url hash - metatag]
expected: FAIL
[script-src-elem should allow script by its url hash - metatag]
expected: FAIL
[url hashes should allow dynamically inserted script if allowlisted - metatag]
expected: FAIL
[url hashes should allow redirected scripts - metatag]
expected: FAIL

View file

@ -0,0 +1,6 @@
[url-hash-in-header-and-meta.https.html]
[more lax meta tag should still allow script]
expected: FAIL
[multiple meta tags should apply most strict policy - both lax]
expected: FAIL

View file

@ -0,0 +1,4 @@
[eval-allowed-by-hash.sub.html]
expected: ERROR
[Expecting alerts: ["PASS (1 of 2)","PASS (2 of 2)"\]]
expected: FAIL

View file

@ -0,0 +1,9 @@
[eval-hashes-override-unsafe-eval.sub.html]
[Expecting logs: ["PASS EvalError","PASS EvalError", "violated-directive=script-src"\]]
expected: FAIL
[eval-blocked]
expected: FAIL
[eval-blocked 1]
expected: FAIL

View file

@ -0,0 +1,18 @@
[__HostHttp.https.tentative.html]
[__HostHttp: Does not set via DOM 'Secure; Path=/']
expected: FAIL
[__HostHttp: Does not set via DOM with Domain attribute 'Secure; Path=/; Domain=web-platform.test']
expected: FAIL
[__HostHttp: Does not set via HTTP with 'Secure; Path=/']
expected: FAIL
[__HostHttp: Does not set via HTTP with 'Secure; Path=/cookies/; httponly']
expected: FAIL
[__HostHttp: Does not set via HTTP with 'Path=/;' (without Secure)]
expected: FAIL
[__HostHttp: Does not set via HTTP with Domain attribute 'Secure; Path=/; Domain=web-platform.test']
expected: FAIL

View file

@ -0,0 +1,12 @@
[__Http.https.tentative.html]
[__Http: Does not set via DOM 'Path=/']
expected: FAIL
[__Http: Does not set via DOM 'Secure; Path=/']
expected: FAIL
[__Http: Does not set via HTTP with 'Path=/;' (without Secure)]
expected: FAIL
[__Http: Does not set via HTTP with 'Secure; Path=/']
expected: FAIL

View file

@ -0,0 +1,3 @@
[animation-trigger-behavior-computed.tentative.html]
[Property animation-trigger-behavior value 'once, repeat, alternate, state']
expected: FAIL

View file

@ -0,0 +1,21 @@
[animation-trigger-behavior-valid.tentative.html]
[e.style['animation-trigger-behavior'\] = "once" should set the property value]
expected: FAIL
[e.style['animation-trigger-behavior'\] = "repeat" should set the property value]
expected: FAIL
[e.style['animation-trigger-behavior'\] = "alternate" should set the property value]
expected: FAIL
[e.style['animation-trigger-behavior'\] = "state" should set the property value]
expected: FAIL
[e.style['animation-trigger-behavior'\] = "once, repeat" should set the property value]
expected: FAIL
[e.style['animation-trigger-behavior'\] = "once, repeat, alternate" should set the property value]
expected: FAIL
[e.style['animation-trigger-behavior'\] = "once, repeat, alternate, state" should set the property value]
expected: FAIL

View file

@ -268,3 +268,39 @@
[Property animation-trigger value 'view() once']
expected: FAIL
[e.style['animation-trigger'\] = "view() once contain 0% contain 100% cover 0% cover 100%" should set animation-trigger-behavior]
expected: FAIL
[e.style['animation-trigger'\] = "view() once contain 20% contain 80% cover 10% cover 90%" should set animation-trigger-behavior]
expected: FAIL
[e.style['animation-trigger'\] = "view() once contain 0% contain 100% cover 0%" should set animation-trigger-behavior]
expected: FAIL
[e.style['animation-trigger'\] = "view() once contain 20% contain 80% cover 10%" should set animation-trigger-behavior]
expected: FAIL
[e.style['animation-trigger'\] = "view() once contain 0% contain 100% cover" should set animation-trigger-behavior]
expected: FAIL
[e.style['animation-trigger'\] = "view() alternate contain 0% contain 100%" should set animation-trigger-behavior]
expected: FAIL
[e.style['animation-trigger'\] = "view() alternate contain 20% contain 80%" should set animation-trigger-behavior]
expected: FAIL
[e.style['animation-trigger'\] = "view() alternate contain 0%" should set animation-trigger-behavior]
expected: FAIL
[e.style['animation-trigger'\] = "view() alternate contain 10%" should set animation-trigger-behavior]
expected: FAIL
[e.style['animation-trigger'\] = "view() alternate contain" should set animation-trigger-behavior]
expected: FAIL
[e.style['animation-trigger'\] = "view() alternate" should set animation-trigger-behavior]
expected: FAIL
[e.style['animation-trigger'\] = "repeat" should set animation-trigger-behavior]
expected: FAIL

View file

@ -1,3 +0,0 @@
[animation-trigger-type-computed.tentative.html]
[Property animation-trigger-type value 'once, repeat, alternate, state']
expected: FAIL

View file

@ -1,21 +0,0 @@
[animation-trigger-type-valid.tentative.html]
[e.style['animation-trigger-type'\] = "once" should set the property value]
expected: FAIL
[e.style['animation-trigger-type'\] = "repeat" should set the property value]
expected: FAIL
[e.style['animation-trigger-type'\] = "alternate" should set the property value]
expected: FAIL
[e.style['animation-trigger-type'\] = "state" should set the property value]
expected: FAIL
[e.style['animation-trigger-type'\] = "once, repeat" should set the property value]
expected: FAIL
[e.style['animation-trigger-type'\] = "once, repeat, alternate" should set the property value]
expected: FAIL
[e.style['animation-trigger-type'\] = "once, repeat, alternate, state" should set the property value]
expected: FAIL

View file

@ -0,0 +1,2 @@
[corner-shape-iframe-border.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[corner-shape-img-border.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[corner-shape-svg-border.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[corner-shape-video-border.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[border-shape-clips-background.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[border-shape-inner-outer.html]
expected: FAIL

View file

@ -0,0 +1,18 @@
[border-shape-computed.html]
[Property border-shape value 'none']
expected: FAIL
[Property border-shape value 'circle()']
expected: FAIL
[Property border-shape value 'polygon(10px 10px, 100px 10px, 10px 100px)']
expected: FAIL
[Property border-shape value 'shape(from 0px 0px, hline to 100px, vline to 100px, close)']
expected: FAIL
[Property border-shape value 'circle() circle()']
expected: FAIL
[Property border-shape value 'circle() polygon(10px 10px, 100px 10px, 10px 100px)']
expected: FAIL

View file

@ -0,0 +1,18 @@
[border-shape-valid.html]
[e.style['border-shape'\] = "none" should set the property value]
expected: FAIL
[e.style['border-shape'\] = "circle()" should set the property value]
expected: FAIL
[e.style['border-shape'\] = "polygon(10px 10px, 100px 10px, 10px 100px)" should set the property value]
expected: FAIL
[e.style['border-shape'\] = "shape(from 0px 0px, hline to 100px, vline to 100px, close)" should set the property value]
expected: FAIL
[e.style['border-shape'\] = "circle() circle()" should set the property value]
expected: FAIL
[e.style['border-shape'\] = "circle() polygon(10px 10px, 100px 10px, 10px 100px)" should set the property value]
expected: FAIL

View file

@ -661,3 +661,6 @@
[e.style['color'\] = "oklch(10% 20 -700)" should set the property value]
expected: FAIL
[e.style['color'\] = "light-dark(black, white)" should set the property value]
expected: FAIL

View file

@ -1,2 +1,12 @@
[align-items-baseline-column-horz.html]
expected: FAIL
[#target > div 1]
expected: FAIL
[#target > div 2]
expected: FAIL
[#target > div 3]
expected: FAIL
[#target > div 5]
expected: FAIL

View file

@ -1,2 +1,6 @@
[align-items-baseline-column-vert.html]
expected: FAIL
[#target > div 2]
expected: FAIL
[#target > div 3]
expected: FAIL

View file

@ -1,2 +0,0 @@
[align-items-baseline-row-horz.html]
expected: FAIL

View file

@ -1,2 +1,15 @@
[align-items-baseline-row-vert.html]
expected: FAIL
[#target > div 1]
expected: FAIL
[#target > div 2]
expected: FAIL
[#target > div 3]
expected: FAIL
[#target > div 4]
expected: FAIL
[#target > div 5]
expected: FAIL

View file

@ -1,2 +0,0 @@
[font-variant-caps-invalidation-container-sizing.html]
expected: FAIL

View file

@ -0,0 +1,33 @@
[grid-self-baseline-two-dimensional.html]
[.grid 1]
expected: FAIL
[.grid 2]
expected: FAIL
[.grid 3]
expected: FAIL
[.grid 4]
expected: FAIL
[.grid 5]
expected: FAIL
[.grid 6]
expected: FAIL
[.grid 7]
expected: FAIL
[.grid 8]
expected: FAIL
[.grid 9]
expected: FAIL
[.grid 11]
expected: FAIL
[.grid 12]
expected: FAIL

View file

@ -0,0 +1,2 @@
[masonry-item-placement-001.html]
expected: FAIL

View file

@ -0,0 +1,12 @@
[grid-template-columns-repeat-auto-valid.tentative.html]
[e.style['grid-template-columns'\] = "repeat(auto-fill, auto)" should set the property value]
expected: FAIL
[e.style['grid-template-columns'\] = "repeat(auto-fit, auto 100px auto)" should set the property value]
expected: FAIL
[e.style['grid-template-columns'\] = "repeat(auto-fill, minmax(30px, 5fr) [two\] auto)" should set the property value]
expected: FAIL
[e.style['grid-template-columns'\] = "repeat(auto-fit, [three\] auto [four\])" should set the property value]
expected: FAIL

View file

@ -0,0 +1,12 @@
[grid-template-rows-repeat-auto-valid.tentative.html]
[e.style['grid-template-rows'\] = "repeat(auto-fill, auto)" should set the property value]
expected: FAIL
[e.style['grid-template-rows'\] = "repeat(auto-fit, auto 100px auto)" should set the property value]
expected: FAIL
[e.style['grid-template-rows'\] = "repeat(auto-fill, minmax(30px, 5fr) [two\] auto)" should set the property value]
expected: FAIL
[e.style['grid-template-rows'\] = "repeat(auto-fit, [three\] auto [four\])" should set the property value]
expected: FAIL

View file

@ -40,3 +40,21 @@
[if() no cycle in overridden argument]
expected: FAIL
[CSS-wide keywords are interpreted locally (initial)]
expected: FAIL
[CSS-wide keywords are interpreted locally (inherit)]
expected: FAIL
[CSS-wide keywords are interpreted locally (guaranteed-invalid, initial)]
expected: FAIL
[CSS-wide keywords are interpreted locally (guaranteed-invalid, unset)]
expected: FAIL
[CSS-wide keywords are interpreted locally (revert)]
expected: FAIL
[CSS-wide keywords are interpreted locally (revert-layer)]
expected: FAIL

View file

@ -0,0 +1,21 @@
[parameter-types.tentative.html]
[A parameter retains its type]
expected: FAIL
[A parameter type acts as a local registration]
expected: FAIL
[A parameter retains its type (parent stack frame)]
expected: FAIL
[A parameter type acts as a local registration (parent stack frame)]
expected: FAIL
[Universally typed parameter can shadow other parameters]
expected: FAIL
[Invalid value for typed local becomes IACVT]
expected: FAIL
[if() within @function can query registered custom property]
expected: FAIL

View file

@ -0,0 +1,3 @@
[scroll-button-elementFromPoint.html]
[CSS Overflow: elementFromPoint for ::scroll-button is scroller]
expected: FAIL

View file

@ -85,3 +85,15 @@
[Property list-style-type value 'decimal' in ::marker]
expected: FAIL
[Property animation-range value 'contain 10px cover 20px' in ::marker]
expected: FAIL
[Property animation-range-start value 'contain 10px' in ::marker]
expected: FAIL
[Property animation-range-end value 'cover 20px' in ::marker]
expected: FAIL
[Property animation-timeline value 'scroll()' in ::marker]
expected: FAIL

View file

@ -958,3 +958,51 @@
[Web Animations: property <text-underline-offset> from [0%\] to [100%\] at (1) should be [100%\]]
expected: FAIL
[CSS Transitions: property <text-underline-offset> from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <text-underline-offset> from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]]
expected: FAIL
[CSS Animations: property <text-underline-offset> from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]]
expected: FAIL
[Web Animations: property <text-underline-offset> from [16px\] to [200%\] at (0.3) should be [calc(60% + 11.2px)\]]
expected: FAIL
[CSS Transitions: property <text-underline-offset> from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]]
expected: FAIL
[CSS Transitions: property <text-underline-offset> from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]]
expected: FAIL
[CSS Transitions: property <text-underline-offset> from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <text-underline-offset> from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <text-underline-offset> from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <text-underline-offset> from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]]
expected: FAIL
[CSS Animations: property <text-underline-offset> from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]]
expected: FAIL
[CSS Animations: property <text-underline-offset> from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]]
expected: FAIL
[CSS Animations: property <text-underline-offset> from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]]
expected: FAIL
[Web Animations: property <text-underline-offset> from [100%\] to [32px\] at (0.3) should be [calc(70% + 9.6px)\]]
expected: FAIL
[Web Animations: property <text-underline-offset> from [100%\] to [32px\] at (0.6) should be [calc(40% + 19.2px)\]]
expected: FAIL
[Web Animations: property <text-underline-offset> from [100%\] to [32px\] at (1) should be [calc(0% + 32px)\]]
expected: FAIL

View file

@ -0,0 +1,2 @@
[text-wrap-balance-line-clamp-002.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[text-wrap-balance-line-clamp-003.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[text-wrap-balance-line-clamp-004.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[caret-shape-block-color-001.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[caret-shape-block-color-002.tentative.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[caret-shape-block-color-003.tentative.html]
expected: FAIL

View file

@ -0,0 +1,9 @@
[var-ident-function.html]
[Referencing a custom property with ident()]
expected: FAIL
[ident() causing lookup of invalid custom property, fallback]
expected: FAIL
[ident() causing lookup of invalid custom property, fallback, CSS-wide keyword]
expected: FAIL

View file

@ -0,0 +1,12 @@
[scrollParent-shadow-tree.html]
[scrollParent skips intermediate closed shadow tree nodes]
expected: FAIL
[scrollParent skips intermediate open shadow tree nodes]
expected: FAIL
[scrollParent from inside closed shadow tree]
expected: FAIL
[scrollParent from inside open shadow tree]
expected: FAIL

View file

@ -0,0 +1,27 @@
[scrollParent.html]
[scrollParent returns the nearest scroll container.]
expected: FAIL
[hidden element is a scroll container.]
expected: FAIL
[Element with no box has null scrollParent.]
expected: FAIL
[scrollParent follows absolute positioned containing block chain.]
expected: FAIL
[scrollParent follows fixed positioned containing block chain.]
expected: FAIL
[scrollParent of element fixed to root is null.]
expected: FAIL
[scrollParent of child in root viewport returns document scrolling element.]
expected: FAIL
[scrollParent of fixed element contained within root is document scrolling element.]
expected: FAIL
[scrollParent of body is null.]
expected: FAIL

View file

@ -1,3 +1,6 @@
[ElementInternals-validation.html]
[Custom control affects :valid :invalid for FORM and FIELDSET]
expected: FAIL
["anchor" argument of setValidity(): passing self]
expected: FAIL

View file

@ -4,3 +4,9 @@
[innerHTML on an inserted element should continue to use the scoped registry it was created with]
expected: FAIL
[nested descendants in innerHTML on a disconnected element should use the scoped registry the element was created with]
expected: FAIL
[innerHTML on a disconnected element should use the scoped registry it was created with when parsing a simple HTML]
expected: FAIL

View file

@ -0,0 +1,3 @@
[Node-cloneNode-document-allow-declarative-shadow-roots.window.html]
[cloneNode() and document's allow declarative shadow roots]
expected: FAIL

View file

@ -47,8 +47,5 @@
[sec-fetch-storage-access - Not sent to non-trustworthy same-origin destination]
expected: FAIL
[sec-fetch-storage-access - Not sent to non-trustworthy cross-site destination]
expected: FAIL
[sec-fetch-storage-access - Not sent to non-trustworthy same-site destination]
expected: FAIL

View file

@ -0,0 +1,3 @@
[009.html]
[Link with onclick form submit to javascript url with document.write and href navigation ]
expected: FAIL

View file

@ -4,3 +4,6 @@
[link click]
expected: FAIL
[form submission]
expected: FAIL

View file

@ -13,6 +13,3 @@
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank']
expected: FAIL
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='']
expected: FAIL

View file

@ -0,0 +1,3 @@
[navigation-unload-same-origin-fragment.html]
[Tests that a fragment navigation in the unload handler will not block the initial navigation]
expected: FAIL

View file

@ -0,0 +1,3 @@
[a-click.html]
[aElement.click() before the load event must NOT replace]
expected: FAIL

View file

@ -1,3 +0,0 @@
[traverse_the_history_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -0,0 +1,2 @@
[canvas.2d.disconnected.html]
expected: FAIL

View file

@ -7,7 +7,7 @@
expected: NOTRUN
[Element with tabindex should support autofocus]
expected: TIMEOUT
expected: FAIL
[Area element should support autofocus]
expected: NOTRUN

View file

@ -1,4 +1,3 @@
[update-the-rendering.html]
expected: TIMEOUT
["Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks]
expected: TIMEOUT
expected: FAIL

View file

@ -1,4 +1,4 @@
[iframe_sandbox_popups_escaping-1.html]
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT

View file

@ -1,4 +1,4 @@
[iframe_sandbox_popups_nonescaping-1.html]
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN
expected: FAIL

View file

@ -1,4 +1,4 @@
[iframe_sandbox_popups_nonescaping-3.html]
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN
expected: FAIL

View file

@ -2,3 +2,6 @@
expected: TIMEOUT
[object's typemustmatch content attribute should not be supported]
expected: TIMEOUT
[object's codebase content attribute should not be supported]
expected: TIMEOUT

View file

@ -0,0 +1,3 @@
[form-submit-dialog-shadow.html]
[<form method=dialog> should not submit across shadow boundaries.]
expected: FAIL

View file

@ -7,3 +7,12 @@
[Checkable menuitems can still invoke menulist popovers]
expected: FAIL
[Menuitem with toggle-popover, show-popover, hide-popover commands can invoke menulist popover.]
expected: FAIL
[Menuitem with toggle-menu, show-menu, hide-menu commands can invoke menulist popover.]
expected: FAIL
[hidePopover() on menulist closes the popover.]
expected: FAIL

View file

@ -0,0 +1,4 @@
[display-values.tentative.html]
expected: TIMEOUT
[Permission element display style validation]
expected: TIMEOUT

View file

@ -0,0 +1,3 @@
[popovertarget-disabled-fieldset.html]
[Disabled fieldset ancestor should prevent popovertarget/command behavior.]
expected: FAIL

View file

@ -29,26 +29,26 @@
[InterestEvent interface: new InterestEvent("interest") must inherit property "source" with the proper type]
expected: FAIL
[HTMLAnchorElement interface: attribute interestTargetElement]
[HTMLAnchorElement interface: attribute interestForElement]
expected: FAIL
[HTMLAnchorElement interface: document.createElement("a") must inherit property "interestTargetElement" with the proper type]
[HTMLAnchorElement interface: document.createElement("a") must inherit property "interestForElement" with the proper type]
expected: FAIL
[HTMLAreaElement interface: attribute interestTargetElement]
[HTMLAreaElement interface: attribute interestForElement]
expected: FAIL
[HTMLAreaElement interface: document.createElement("area") must inherit property "interestTargetElement" with the proper type]
[HTMLAreaElement interface: document.createElement("area") must inherit property "interestForElement" with the proper type]
expected: FAIL
[HTMLButtonElement interface: attribute interestTargetElement]
[HTMLButtonElement interface: attribute interestForElement]
expected: FAIL
[HTMLButtonElement interface: document.createElement("button") must inherit property "interestTargetElement" with the proper type]
[HTMLButtonElement interface: document.createElement("button") must inherit property "interestForElement" with the proper type]
expected: FAIL
[SVGAElement interface: attribute interestTargetElement]
[SVGAElement interface: attribute interestForElement]
expected: FAIL
[SVGAElement interface: document.createElementNS("http://www.w3.org/2000/svg", "a") must inherit property "interestTargetElement" with the proper type]
[SVGAElement interface: document.createElementNS("http://www.w3.org/2000/svg", "a") must inherit property "interestForElement" with the proper type]
expected: FAIL

View file

@ -0,0 +1,18 @@
[interestelement-interface.tentative.html]
[interestForElement reflects interestee HTML element]
expected: FAIL
[interestForElement reflects set value]
expected: FAIL
[interestForElement reflects set value across shadow root into light dom]
expected: FAIL
[interestForElement does not reflect set value inside shadowroot]
expected: FAIL
[interestForElement does not reflect invalid value]
expected: FAIL
[interestForElement throws error on assignment of non Element]
expected: FAIL

View file

@ -0,0 +1,204 @@
[interestfor-css-properties.tentative.html]
[Property interest-show-delay value '0s']
expected: FAIL
[Property interest-show-delay value '0ms']
expected: FAIL
[Property interest-show-delay value '32s']
expected: FAIL
[Property interest-show-delay value '123ms']
expected: FAIL
[e.style['interest-show-delay'\] = "0s" should set the property value]
expected: FAIL
[e.style['interest-show-delay'\] = "0ms" should set the property value]
expected: FAIL
[e.style['interest-show-delay'\] = "32s" should set the property value]
expected: FAIL
[e.style['interest-show-delay'\] = "123ms" should set the property value]
expected: FAIL
[e.style['interest-show-delay'\] = "inherit" should set the property value]
expected: FAIL
[e.style['interest-show-delay'\] = "calc(2s * sibling-index())" should set the property value]
expected: FAIL
[CSS Transitions: property <interest-show-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Transitions: property <interest-show-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Transitions: property <interest-show-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Transitions: property <interest-show-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Transitions: property <interest-show-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Transitions: property <interest-show-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-show-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-show-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-show-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-show-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-show-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-show-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[CSS Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[Web Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[Web Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[Web Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[Web Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[Web Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[Web Animations: property <interest-show-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[Property interest-hide-delay value '0s']
expected: FAIL
[Property interest-hide-delay value '0ms']
expected: FAIL
[Property interest-hide-delay value '32s']
expected: FAIL
[Property interest-hide-delay value '123ms']
expected: FAIL
[e.style['interest-hide-delay'\] = "0s" should set the property value]
expected: FAIL
[e.style['interest-hide-delay'\] = "0ms" should set the property value]
expected: FAIL
[e.style['interest-hide-delay'\] = "32s" should set the property value]
expected: FAIL
[e.style['interest-hide-delay'\] = "123ms" should set the property value]
expected: FAIL
[e.style['interest-hide-delay'\] = "inherit" should set the property value]
expected: FAIL
[e.style['interest-hide-delay'\] = "calc(2s * sibling-index())" should set the property value]
expected: FAIL
[CSS Transitions: property <interest-hide-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Transitions: property <interest-hide-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Transitions: property <interest-hide-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Transitions: property <interest-hide-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Transitions: property <interest-hide-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Transitions: property <interest-hide-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-hide-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-hide-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-hide-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-hide-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-hide-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-hide-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[CSS Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[Web Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[Web Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[Web Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[Web Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[Web Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[Web Animations: property <interest-hide-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL

View file

@ -0,0 +1,27 @@
[interestfor-css-shorthands.tentative.html]
[e.style['interest-delay'\] = "0.23s 450ms" should set interest-hide-delay]
expected: FAIL
[e.style['interest-delay'\] = "0.23s 450ms" should set interest-show-delay]
expected: FAIL
[e.style['interest-delay'\] = "0.23s 450ms" should not set unrelated longhands]
expected: FAIL
[e.style['interest-delay'\] = "0.23s" should set interest-hide-delay]
expected: FAIL
[e.style['interest-delay'\] = "0.23s" should set interest-show-delay]
expected: FAIL
[e.style['interest-delay'\] = "0.23s" should not set unrelated longhands]
expected: FAIL
[e.style['interest-delay'\] = "450ms" should set interest-hide-delay]
expected: FAIL
[e.style['interest-delay'\] = "450ms" should set interest-show-delay]
expected: FAIL
[e.style['interest-delay'\] = "450ms" should not set unrelated longhands]
expected: FAIL

View file

@ -1,39 +0,0 @@
[interestelement-interface.tentative.html]
[interestTargetElement reflects interestee HTML element]
expected: FAIL
[interestTargetElement reflects set value]
expected: FAIL
[interestTargetElement reflects set value across shadow root into light dom]
expected: FAIL
[interestTargetElement does not reflect set value inside shadowroot]
expected: FAIL
[interestTargetElement does not reflect invalid value]
expected: FAIL
[interestTargetElement throws error on assignment of non Element]
expected: FAIL
[interestAction reflects '' when attribute not present]
expected: FAIL
[interestAction reflects '' when attribute empty, setAttribute version]
expected: FAIL
[interestAction reflects '' when attribute empty, IDL setter version]
expected: FAIL
[interestAction reflects same casing]
expected: FAIL
[interestAction reflects '' when attribute set to [\]]
expected: FAIL
[interestAction reflects tostring value]
expected: FAIL
[interestAction reflects tostring value 2]
expected: FAIL

View file

@ -1,204 +0,0 @@
[interesttarget-css-properties.tentative.html]
[Property interest-target-show-delay value '0s']
expected: FAIL
[Property interest-target-show-delay value '0ms']
expected: FAIL
[Property interest-target-show-delay value '32s']
expected: FAIL
[Property interest-target-show-delay value '123ms']
expected: FAIL
[e.style['interest-target-show-delay'\] = "0s" should set the property value]
expected: FAIL
[e.style['interest-target-show-delay'\] = "0ms" should set the property value]
expected: FAIL
[e.style['interest-target-show-delay'\] = "32s" should set the property value]
expected: FAIL
[e.style['interest-target-show-delay'\] = "123ms" should set the property value]
expected: FAIL
[e.style['interest-target-show-delay'\] = "inherit" should set the property value]
expected: FAIL
[CSS Transitions: property <interest-target-show-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Transitions: property <interest-target-show-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Transitions: property <interest-target-show-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Transitions: property <interest-target-show-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Transitions: property <interest-target-show-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Transitions: property <interest-target-show-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-show-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-show-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-show-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-show-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-show-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-show-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[CSS Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[Web Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[Web Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[Web Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[Web Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[Web Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[Web Animations: property <interest-target-show-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[Property interest-target-hide-delay value '0s']
expected: FAIL
[Property interest-target-hide-delay value '0ms']
expected: FAIL
[Property interest-target-hide-delay value '32s']
expected: FAIL
[Property interest-target-hide-delay value '123ms']
expected: FAIL
[e.style['interest-target-hide-delay'\] = "0s" should set the property value]
expected: FAIL
[e.style['interest-target-hide-delay'\] = "0ms" should set the property value]
expected: FAIL
[e.style['interest-target-hide-delay'\] = "32s" should set the property value]
expected: FAIL
[e.style['interest-target-hide-delay'\] = "123ms" should set the property value]
expected: FAIL
[e.style['interest-target-hide-delay'\] = "inherit" should set the property value]
expected: FAIL
[CSS Transitions: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Transitions: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Transitions: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Transitions: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Transitions: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Transitions: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Transitions with transition: all: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[CSS Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[CSS Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[CSS Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[CSS Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[CSS Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[CSS Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[Web Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (-1.5) should be [0s\]]
expected: FAIL
[Web Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (-0.3) should be [0.7s\]]
expected: FAIL
[Web Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (0) should be [1s\]]
expected: FAIL
[Web Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (0.5) should be [1.5s\]]
expected: FAIL
[Web Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (1) should be [2s\]]
expected: FAIL
[Web Animations: property <interest-target-hide-delay> from [1s\] to [2000ms\] at (1.5) should be [2.5s\]]
expected: FAIL
[e.style['interest-target-show-delay'\] = "calc(2s * sibling-index())" should set the property value]
expected: FAIL
[e.style['interest-target-hide-delay'\] = "calc(2s * sibling-index())" should set the property value]
expected: FAIL

View file

@ -1,27 +0,0 @@
[interesttarget-css-shorthands.tentative.html]
[e.style['interest-target-delay'\] = "0.23s 450ms" should set interest-target-hide-delay]
expected: FAIL
[e.style['interest-target-delay'\] = "0.23s 450ms" should set interest-target-show-delay]
expected: FAIL
[e.style['interest-target-delay'\] = "0.23s 450ms" should not set unrelated longhands]
expected: FAIL
[e.style['interest-target-delay'\] = "0.23s" should set interest-target-hide-delay]
expected: FAIL
[e.style['interest-target-delay'\] = "0.23s" should set interest-target-show-delay]
expected: FAIL
[e.style['interest-target-delay'\] = "0.23s" should not set unrelated longhands]
expected: FAIL
[e.style['interest-target-delay'\] = "450ms" should set interest-target-hide-delay]
expected: FAIL
[e.style['interest-target-delay'\] = "450ms" should set interest-target-show-delay]
expected: FAIL
[e.style['interest-target-delay'\] = "450ms" should not set unrelated longhands]
expected: FAIL

View file

@ -0,0 +1,30 @@
[promise-job-detached-iframe.html]
[Reaction job should be skipped if onFulfilled handler belongs to detached iframe]
expected: FAIL
[Reaction job should be skipped if onRejected handler belongs to detached iframe]
expected: FAIL
[Thenable job for fulfilled promise should be skipped if it belongs to detached iframe]
expected: FAIL
[Thenable job for rejected promise should be skipped if it belongs to detached iframe]
expected: FAIL
[Thenable job created by reaction job for fulfillment should be skipped if it belongs to detached iframe]
expected: FAIL
[Thenable job created by reaction job for rejection should be skipped if it belongs to detached iframe]
expected: FAIL
[Thenable job created by Promise.all should be skipped if it belongs to detached iframe]
expected: FAIL
[Thenable job created by Promise.allSettled should be skipped if it belongs to detached iframe]
expected: FAIL
[Thenable job created by Promise.any should be skipped if it belongs to detached iframe]
expected: FAIL
[Thenable job created by Promise.race should be skipped if it belongs to detached iframe]
expected: FAIL

View file

@ -19,3 +19,12 @@
[Reload fetchStart > Original fetchStart]
expected: FAIL
[Reload domComplete > Original domComplete]
expected: FAIL
[Reload loadEventEnd > Original loadEventEnd]
expected: FAIL
[Reload loadEventStart > Original loadEventStart]
expected: FAIL

View file

@ -59,9 +59,6 @@
[Decode-error (script): main]
expected: FAIL
[success (style): main]
expected: FAIL
[CORS (style): main]
expected: FAIL
@ -74,11 +71,11 @@
[404 (xhr): main]
expected: FAIL
[Decode-error (style): main]
expected: FAIL
[CORS (xhr): main]
expected: FAIL
[success (xhr): main]
expected: FAIL
[MIME-error (script): main]
expected: FAIL

View file

@ -1,3 +0,0 @@
[eventloop.html]
[test0: multiple notifications inside same event loop]
expected: FAIL

View file

@ -1,10 +1,10 @@
[document-initiated.html]
expected: ERROR
expected: TIMEOUT
[Ensure initiator Attribute matches with Document ResourceID]
expected: TIMEOUT
[initiatorUrl by main html file]
expected: TIMEOUT
expected: FAIL
[initiatorUrl for resource by document.write()]
expected: NOTRUN
expected: FAIL

View file

@ -97,3 +97,9 @@
[<area>: Setting <sc:space ?query#fragment>.hash = '']
expected: FAIL
[<a>: Setting <https://domain.com:3000>.port = '\n\n\t\t']
expected: FAIL
[<area>: Setting <https://domain.com:3000>.port = '\n\n\t\t']
expected: FAIL

View file

@ -47,6 +47,9 @@
[URL: Setting <sc:space ?query#fragment>.hash = '']
expected: FAIL
[URL: Setting <https://domain.com:3000>.port = '\n\n\t\t']
expected: FAIL
[url-setters.any.worker.html?include=javascript]
@ -117,6 +120,9 @@
[URL: Setting <sc:space ?query#fragment>.hash = '']
expected: FAIL
[URL: Setting <https://domain.com:3000>.port = '\n\n\t\t']
expected: FAIL
[url-setters.any.worker.html?include=mailto]

View file

@ -853,3 +853,12 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[14650\]\t-2.2120763400440616e-29\t8.6956524848937988e-1\t8.6956524848937988e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[14651\]\t3.0547976493835449e-1\t8.9879405498504639e-1\t5.9331429004669189e-1\t6.6012262403823208e-1\t3.8985999999999999e-3\n\tMax AbsError of 8.6956524848937988e-1 at index of 14650.\n\tMax RelError of 1.0000000000000000e+0 at index of 14650.\n]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[14650\]\t2.5623218861657151e-39\t8.6956524848937988e-1\t8.6956524848937988e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[14651\]\t3.0547976493835449e-1\t8.9879405498504639e-1\t5.9331429004669189e-1\t6.6012262403823208e-1\t3.8985999999999999e-3\n\tMax AbsError of 8.6956524848937988e-1 at index of 14650.\n\tMax RelError of 1.0000000000000000e+0 at index of 14650.\n]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[14650\]\t6.8471753038465977e-3\t8.6956524848937988e-1\t8.6271807318553329e-1\t9.9212574868218162e-1\t3.8985999999999999e-3\n\t[14651\]\t3.0547976493835449e-1\t8.9879405498504639e-1\t5.9331429004669189e-1\t6.6012262403823208e-1\t3.8985999999999999e-3\n\tMax AbsError of 8.6271807318553329e-1 at index of 14650.\n\tMax RelError of 9.9212574868218162e-1 at index of 14650.\n]
expected: FAIL
[X SNR (43.01174226188182 dB) is not greater than or equal to 65.737. Got 43.01174226188182.]
expected: FAIL

View file

@ -1,4 +1,5 @@
[audioparam-setValueCurveAtTime.html]
expected: ERROR
[X Discontinuity at index is not equal to 1323. Got 1325.]
expected: FAIL
@ -121,3 +122,6 @@
[# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
expected: FAIL
[AudioParam.setValueCurveAtTime() reproduces the expected waveform]
expected: TIMEOUT

View file

@ -10,3 +10,9 @@
[# AUDIT TASK RUNNER FINISHED: 1 out of 10 tasks were failed.]
expected: FAIL
[DelayNode]
expected: FAIL
[DynamicsCompressorNode]
expected: FAIL

View file

@ -0,0 +1,4 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -1,24 +1,12 @@
<!doctype html>
<meta charset=utf-8>
<title>IndexedDB: Detached buffers supplied as binary keys</title>
<meta name="help" href="http://w3c.github.io/IndexedDB/#convert-a-value-to-a-key">
<meta name="help" href="https://webidl.spec.whatwg.org/#dfn-get-buffer-source-copy">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/support.js"></script>
<script>
// META: title= IndexedDB: Detached buffers supplied as binary keys
// META: global=window,worker
// META: script=resources/support.js
function createDetachedArrayBuffer() {
const array = new Uint8Array([1,2,3,4]);
const buffer = array.buffer;
assert_equals(array.byteLength, 4);
// Specs:
// http://w3c.github.io/IndexedDB/#convert-a-value-to-a-key
// https://webidl.spec.whatwg.org/#dfn-get-buffer-source-copy
// Detach the ArrayBuffer by transferring it to a worker.
const worker = new Worker(URL.createObjectURL(new Blob([])));
worker.postMessage('', [buffer]);
assert_equals(array.byteLength, 0);
return array;
}
"use strict";
indexeddb_test(
(t, db) => { db.createObjectStore('store'); },
@ -48,5 +36,3 @@ indexeddb_test(
},
'Detached TypedArrays must throw DataError when used as a key'
);
</script>

View file

@ -5,23 +5,36 @@
'use strict';
async_test(t => {
const open_rq = createdb(t, undefined, 9);
const delete_rq = indexedDB.deleteDatabase('db-that-doesnt-exist');
delete_rq.onerror = fail(t, 'delete_rq.error');
delete_rq.onsuccess = t.step_func(e => {
assert_equals(e.oldVersion, 0, 'event.oldVersion');
assert_equals(e.target.source, null, 'event.target.source');
});
const open_rq = createdb(t, undefined, 9);
open_rq.onupgradeneeded = t.step_func(e => {});
open_rq.onsuccess = t.step_func(e => {
const db = e.target.result;
db.close();
const delete_rq = indexedDB.deleteDatabase(db.name);
delete_rq.onerror = t.step_func(e => {
assert_unreached('Unexpected delete_rq.error event');
});
delete_rq.onsuccess = t.step_func(e => {
const delete_rq1 = indexedDB.deleteDatabase(db.name);
delete_rq1.onerror = fail(t, 'delete_rq1.error');
delete_rq1.onsuccess = t.step_func(e => {
assert_equals(e.oldVersion, 9, 'event.oldVersion');
assert_equals(e.target.source, null, 'event.target.source');
});
const delete_rq2 = indexedDB.deleteDatabase(db.name);
delete_rq2.onerror = fail(t, 'delete_rq2.error');
delete_rq2.onsuccess = t.step_func_done(e => {
assert_equals(e.oldVersion, 0, 'event.oldVersion');
assert_equals(e.target.source, null, 'event.target.source');
t.done();
});
});
}, 'deleteDatabase() request should have no source');
}, 'deleteDatabase() request should have no source, and deleting a non-existent\
database should succeed with oldVersion of 0.');
async_test(t => {
const open_rq = createdb(t, undefined, 9);

View file

@ -46,6 +46,15 @@ async function run_test(testCase, transactionMode, direction) {
IDBKeyRange.bound(-11, 11), direction);
let results = await iterateAndReturnAllCursorResult(testCase, cursor);
assert_equals(results.length, 3);
// Verify count().
await new Promise((resolve, reject) => {
const countRequest = txn.objectStore('objectStore').index('index').count();
countRequest.onsuccess = testCase.step_func(event => {
assert_equals(event.target.result, 3);
resolve();
});
countRequest.onerror = reject;
});
db.close();
}

View file

@ -238,3 +238,15 @@ async function waitUntilIndexedDBOpenForTesting(rc, dbName, version) {
});
}, [dbName, version]);
}
// Returns a detached ArrayBuffer by transferring it to a message port.
function createDetachedArrayBuffer() {
const array = new Uint8Array([1, 2, 3, 4]);
const buffer = array.buffer;
assert_equals(array.byteLength, 4);
const channel = new MessageChannel();
channel.port1.postMessage('', [buffer]);
assert_equals(array.byteLength, 0);
return array;
}

View file

@ -17,7 +17,7 @@ runBfCacheClearTest(
{
getUrlParams: {
clear: "cache",
secondOrigin: true,
crossSite: true,
},
targetOrigin: crossSiteOrigin,
mode: "iframe",

View file

@ -40,7 +40,7 @@ runBfCacheClearTest(
{
targetOrigin: crossSiteOrigin,
getUrlParams: {
secondOrigin: true,
crossSite: true,
clear: "cache",
},
mode: "iframe",

View file

@ -25,7 +25,7 @@ promise_test(test => {
const TEST_SITE = {
iframe: {
cache: true,
secondOrigin: true,
crossSite: true,
}
}
return testCacheClear(test, [TEST_SITE, CLEAR_ORIGIN_CACHE, TEST_SITE], assert_equals);
@ -38,7 +38,7 @@ promise_test(test => {
const CLEAR_ORIGIN_CACHE = {
iframe: {
clear: "cache",
secondOrigin: true,
crossSite: true,
}
}
return testCacheClear(test, [TEST_SITE, CLEAR_ORIGIN_CACHE, TEST_SITE], assert_equals);
@ -55,13 +55,13 @@ promise_test(test => {
promise_test(test => {
const TEST_SITE = {
iframe: {
secondOrigin: true,
crossSite: true,
cache: true,
}
}
const TEST_SITE_CLEAR_IFRAME = {
iframe: {
secondOrigin: true,
crossSite: true,
clear: "all",
}
}
@ -73,7 +73,7 @@ promise_test(test => {
cache: true
};
const TEST_SITE_CLEAR_IFRAME = {
secondOrigin: true,
crossSite: true,
iframe: {
clear: "cache",
}
@ -83,7 +83,7 @@ promise_test(test => {
promise_test(test => {
const TEST_SITE = {
secondOrigin: true,
crossSite: true,
iframe: {
cache: true,
}
@ -98,7 +98,7 @@ promise_test(test => {
promise_test(test => {
const TEST_SITE = {
iframe: {
secondOrigin: true,
crossSite: true,
iframe: {
cache: true,
}
@ -114,7 +114,7 @@ promise_test(test => {
const TEST_CLEAR_IFRAME_IFRAME = {
iframe: {
secondOrigin: true,
crossSite: true,
iframe: {
clear: "cache",
}
@ -126,7 +126,7 @@ promise_test(test => {
promise_test(test => {
const TEST_SITE = {
iframe: {
secondOrigin: true,
crossSite: true,
iframe: {
cache: true,
}
@ -135,7 +135,7 @@ promise_test(test => {
const TEST_CLEAR_IFRAME_IFRAME = {
iframe: {
secondOrigin: true,
crossSite: true,
iframe: {
clear: "cache",
}

View file

@ -111,6 +111,38 @@ promise_test(test => {
return testCacheClear(test, [TEST_SITE, TEST_SITE_CLEAR, TEST_SITE], assert_not_equals);
}, "clear all: Clear document in intermediate load");
promise_test(test => {
const TEST_SITE = {
response: "html_embed_image",
};
const TEST_SITE_CLEAR = {
clear: "cache",
};
return testCacheClear(test, [TEST_SITE, TEST_SITE_CLEAR, TEST_SITE], assert_not_equals);
}, "clear cache: Image-Cache gets cleared");
promise_test(test => {
const TEST_SITE_INITAL = {
response: "html_embed_css",
};
const TEST_SITE_FINAL = {
response: "html_embed_css",
clear: "cache",
};
return testCacheClear(test, [TEST_SITE_INITAL, TEST_SITE_FINAL], assert_not_equals);
}, "clear cache: CSS-Cache gets cleared");
promise_test(test => {
const TEST_SITE_INITAL = {
response: "html_embed_js",
};
const TEST_SITE_FINAL = {
response: "html_embed_js",
clear: "cache",
};
return testCacheClear(test, [TEST_SITE_INITAL, TEST_SITE_FINAL], assert_not_equals);
}, "clear cache: JS-Cache gets cleared");
</script>
</body>
</html>

View file

@ -9,16 +9,16 @@ const subdomainOrigin =
'https://{{hosts[][www2]}}:{{ports[https][0]}}';
const crossSiteOrigin =
'https://{{hosts[alt][]}}:{{ports[https][0]}}';
const subomdainCrossSiteOrigin =
const subdomainCrossSiteOrigin =
'https://{{hosts[alt][www2]}}:{{ports[https][0]}}';
/**
* Constructs a url for an intermediate "bounce" hop which represents a tracker.
* @param {string} cacheHelper - Unique uuid for this test
* @param {*} options - URL generation options.
* @param {boolean} [options.second_origin = true] - whether domain should be a different origin
* @param {boolean} [options.crossSite = false] - whether domain should be a different site
* @param {boolean} [options.subdomain = false] - whether the domain should start with
* a different subdomain
* a different subdomain to make a request cross origin
* @param {boolean} [options.cache = false] - whether the resource should be cacheable
* @param {(null|'cache'|'all')} [options.clear] - whether to send the
* Clear-Site-Data header.
@ -31,24 +31,23 @@ const subomdainCrossSiteOrigin =
*/
function getUrl(cacheHelper, {
subdomain = false,
secondOrigin = false,
crossSite = false,
cache = false,
clear = null,
clearFirst = null,
response = "single_html",
iframe = null,
}) {
let url = "https://";
if (subdomain && secondOrigin) {
url += "{{hosts[alt][www2]}}";
} else if (subdomain) { // && !second_origin
url += "{{hosts[][www2]}}";
} else if (secondOrigin) { // && !subdomain
url += "{{hosts[alt][]}}";
} else { // !second_origin && !subdomain
url += "{{hosts[][]}}";
let url;
if (subdomain && crossSite) {
url = subdomainCrossSiteOrigin;
} else if (subdomain) { // && !crossSite
url = subdomainOrigin;
} else if (crossSite) { // && !subdomain
url = crossSiteOrigin;
} else { // !crossSite && !subdomain
url = sameOrigin;
}
url += ":{{ports[https][0]}}";
url += "/clear-site-data/support/clear-site-data-cache.py";
url = new URL(url);
let params = new URLSearchParams();

View file

@ -3,12 +3,50 @@ Loaded in Step 2/4/Optional 6 (/clear-site-data/clear-cache.https.html)
Sending Message for Step 3/5/Optional 7 (/clear-site-data/clear-cache.https.html)
"""
import uuid
import random
def generate_png(width, height, color=(0, 0, 0)):
import zlib
import struct
def chunk(chunk_type, data):
return (
struct.pack(">I", len(data)) +
chunk_type +
data +
struct.pack(">I", zlib.crc32(chunk_type + data) & 0xffffffff)
)
# PNG signature
png = b"\x89PNG\r\n\x1a\n"
# IHDR chunk
ihdr = struct.pack(">IIBBBBB", width, height, 8, 2, 0, 0, 0)
png += chunk(b'IHDR', ihdr)
# IDAT chunk: RGB pixels
row = b'\x00' + bytes(color * width)
raw = row * height
idat = zlib.compress(raw)
png += chunk(b'IDAT', idat)
# IEND chunk
png += chunk(b'IEND', b'')
return png
def main(request, response):
# type of response:
# - "single_html": Main page html file with a different postMessage uuid on each response
# - "json": Json that always responds with a different uuid in a single-element array
# - "html_embed_json": Main page html that embeds a cachable version of the above json
# - General purpose: returns random uuid or forwards uuid from iframe
# - "single_html": Main page html file with a different postMessage uuid on each response
# - Pages for simple testing normal http cache:
# - "json": Json that always responds with a different uuid in a single-element array
# - "html_embed_json": Main page html that embeds a cachable version of the above json
# - Pages for testing specialized caches
# - "image": Image that returns random dimensions up to 1024x1024 each time
# - "html_embed_image": Main page html that embeds a cachable version of the above image
# - "css": Style sheet with random uuid variable
# - "html_embed_css": Main page html that embeds a cachable version of the above css
# - "js": Script that returns a different uuid each time
# - "html_embed_js": Main page html that embeds a cachable version of the above js file
response_type = request.GET.first(b"response")
cache_helper = request.GET.first(b"cache_helper")
@ -26,6 +64,12 @@ def main(request, response):
headers = []
if response_type == b"json":
headers += [(b"Content-Type", b"application/json")]
elif response_type == b"image":
headers += [(b"Content-Type", b"image/png")]
elif response_type == b"css":
headers += [(b"Content-Type", b"text/css")]
elif response_type == b"js":
headers += [(b"Content-Type", b"text/javascript")]
else:
headers += [(b"Content-Type", b"text/html")]
@ -96,6 +140,63 @@ def main(request, response):
{request.url}<br>
{url}
</body>'''
elif response_type == b"image":
# send uniquely sized images, because that info can be retrived from html and definitly using the image cache
# helper for below "html_embed_image"
content = generate_png(random.randint(1, 1024), random.randint(1, 1024))
elif response_type == b"html_embed_image":
urls = [request.url_parts.path + "?response=image&cache&cache_helper=" + cache_helper.decode() + "&img=" + str(i) for i in range(2)]
content = f'''
<!DOCTYPE html>
<script>
addEventListener("load", () => {{
let img1 = document.getElementById("randomess1");
let img2 = document.getElementById("randomess2");
let id = img1.naturalWidth + "x" + img1.naturalHeight;
id += "-" + img2.naturalWidth + "x" + img2.naturalHeight
window.opener.postMessage(id, "*");
window.close();
}})
</script>
<body>
{request.url}<br>
<img id="randomess1" src="{urls[0]}"></img><br>
<img id="randomess2" src="{urls[1]}"></img><br>
</body>'''
elif response_type == b"css":
# send unique UUID. helper for below "html_embed_css"
content = f'''
:root {{
--uuid: "{uuid.uuid4()}"
}}'''
elif response_type == b"html_embed_css":
url = request.url_parts.path + "?response=css&cache&cache_helper=" + cache_helper.decode()
content = f'''
<!DOCTYPE html>
<link rel="stylesheet" href="{url}">
<script>
let computed = getComputedStyle(document.documentElement);
let uuid = computed.getPropertyValue("--uuid").trim().replaceAll('"', '');
window.opener.postMessage(uuid, "*");
window.close();
</script>
<body>
{request.url}<br>
{url}
</body>'''
elif response_type == b"js":
# send unique UUID. helper for below "html_embed_js"
content = f'''
window.opener.postMessage("{uuid.uuid4()}", "*");
window.close();
'''
elif response_type == b"html_embed_js":
url = request.url_parts.path + "?response=js&cache&cache_helper=" + cache_helper.decode()
content = f'''
<script src="{url}"></script>
<body>
{request.url}<br>
{url}
</body>'''
return 200, headers, content

View file

@ -0,0 +1,52 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Content-Security-Policy Invalid Bytes Parsing Tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="./support/helper.sub.js"></script>
<body>
<script>
"use strict";
// Original source: https://github.com/web-platform-tests/wpt/pull/48855
// \x01 - \x08, \x0e, \x0f, \x10 - \x1f, \x7f.
// In a source expression, non-whitespace characters outside ASCII 0x21-0x7E must be Punycode-encoded, as described in RFC 3492 (https://tools.ietf.org/html/rfc3492), if part of the hostname and percent-encoded, as described in RFC 3986, section 2.1 (http://tools.ietf.org/html/rfc3986#section-2.1), if part of the path.
var EXPECT_BLOCK = true;
var EXPECT_LOAD = false;
function csp_parsing_test(policy, expectBlock, message) {
promise_test(async t => {
let iframe = document.createElement("iframe");
iframe.src = "/content-security-policy/parsing/support/csp.py?policy=" + encodeURIComponent(policy);
document.body.appendChild(iframe);
let {data} = await new Promise(resolve => window.addEventListener("message", resolve, {once: true}));
assert_equals(data, expectBlock ? "error" : "load", "img state is correct");
}, message);
}
// \x01
csp_parsing_test("img-src 'none'\x01", EXPECT_LOAD, `CSP: "img-src 'none'\\x01" should allow rendering (Invalid directive ignored).`);
csp_parsing_test("img-src 'none' http\x01", EXPECT_LOAD, `CSP: "img-src 'none' http:\\x01" should allow rendering (Invalid directive ignored).`);
csp_parsing_test("img-src 'self'\x01", EXPECT_LOAD, `CSP: "img-src 'self'\\x01" should allow rendering (Invalid directive ignored).`);
csp_parsing_test("img-src 'none'; media-src 'self'\x01", EXPECT_BLOCK, `CSP: "img-src 'none'; media-src 'self'\\x01" should block rendering.`);
csp_parsing_test("img-src 'self'; media-src 'self'\x01", EXPECT_LOAD, `CSP: "img-src 'self'; media-src 'self'\\x01" should allow rendering.`);
csp_parsing_test("img-src 'self', img-src 'self'\x01", EXPECT_LOAD, `CSP: "img-src 'self', img-src 'self'\\x01" should allow rendering.`);
csp_parsing_test("img-src 'none', img-src 'self'\x01", EXPECT_BLOCK, `CSP: "img-src 'none', img-src 'self'\\x01" should block rendering.`);
csp_parsing_test("img-src 'self', img-src\x01", EXPECT_LOAD, `CSP: "img-src 'self', img-src\\x01" should allow rendering.`);
csp_parsing_test("img-src 'none', img-src\x01", EXPECT_BLOCK, `CSP: "img-src 'none', img-src\\x01" should block rendering.`);
// \x7f
csp_parsing_test("img-src 'none'\x7f", EXPECT_LOAD, `CSP: "img-src 'none'\\x7f" should allow rendering (Invalid directive ignored).`);
csp_parsing_test("img-src 'none' http\x7f", EXPECT_LOAD, `CSP: "img-src 'none' http:\\x7f" should allow rendering (Invalid directive ignored).`);
csp_parsing_test("img-src 'self'\x7f", EXPECT_LOAD, `CSP: "img-src 'self'\\x7f" should allow rendering (Invalid directive ignored).`);
csp_parsing_test("img-src 'none'; media-src 'self'\x7f", EXPECT_BLOCK, `CSP: "img-src 'none'; media-src 'self'\\x7f" should block rendering.`);
csp_parsing_test("img-src 'self'; media-src 'self'\x7f", EXPECT_LOAD, `CSP: "img-src 'self'; media-src 'self'\\x7f" should allow rendering.`);
csp_parsing_test("img-src 'self', img-src 'self'\x7f", EXPECT_LOAD, `CSP: "img-src 'self', img-src 'self'\\x7f" should allow rendering.`);
csp_parsing_test("img-src 'none', img-src 'self'\x7f", EXPECT_BLOCK, `CSP: "img-src 'none', img-src 'self'\\x7f" should block rendering.`);
csp_parsing_test("img-src 'self', img-src\x7f", EXPECT_LOAD, `CSP: "img-src 'self', img-src\\x7f" should allow rendering.`);
csp_parsing_test("img-src 'none', img-src\x7f", EXPECT_BLOCK, `CSP: "img-src 'none', img-src\\x7f" should block rendering.`);
</script>
</body>

View file

@ -0,0 +1,25 @@
def main(request, response):
csp = request.GET.first(b"policy")
headers = [
(b"Content-Type", b"text/html"),
(b"Content-Security-Policy", csp)
]
body = f"""<!DOCTYPE html>
<html>
<head>
<title>CSP</title>
</head>
<body>
<p>{csp}</p>
<img src="/content-security-policy/support/pass.png" />
<script>
let img = document.querySelector("img");
img.onload = img.onerror = (event) => {{
window.parent.postMessage(event.type, '*');
}};
</script>
</body>
</html>
"""
return (headers, body)

Some files were not shown because too many files have changed in this diff Show more