mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Sync WPT with upstream (13-04-2025) (#36488)
Automated downstream sync of changes from upstream as of 13-04-2025 [no-wpt-sync] Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
This commit is contained in:
parent
85bd0918f2
commit
0c045fc247
296 changed files with 8510 additions and 3764 deletions
1802
tests/wpt/meta/MANIFEST.json
vendored
1802
tests/wpt/meta/MANIFEST.json
vendored
File diff suppressed because it is too large
Load diff
|
@ -1,2 +0,0 @@
|
|||
[mix-blend-mode-video-sibling.html]
|
||||
expected: FAIL
|
|
@ -79,3 +79,6 @@
|
|||
|
||||
[Property animation-trigger-exit-range-end value 'exit']
|
||||
expected: FAIL
|
||||
|
||||
[Property animation-trigger-exit-range-end value 'auto']
|
||||
expected: FAIL
|
||||
|
|
|
@ -70,3 +70,6 @@
|
|||
|
||||
[e.style['animation-trigger-exit-range-end'\] = "exit" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range-end'\] = "auto" should set the property value]
|
||||
expected: FAIL
|
||||
|
|
|
@ -316,3 +316,54 @@
|
|||
|
||||
[e.style['animation-trigger-exit-range'\] = "10%" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "auto" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "auto auto" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "cover auto" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "cover 10% auto" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "auto cover" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "auto cover 90%" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "normal auto" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "auto normal" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "auto" should set animation-trigger-exit-range-end]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "auto" should set animation-trigger-exit-range-start]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "auto" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "normal auto" should set animation-trigger-exit-range-end]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "normal auto" should set animation-trigger-exit-range-start]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "normal auto" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "auto normal" should set animation-trigger-exit-range-end]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "auto normal" should set animation-trigger-exit-range-start]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range'\] = "auto normal" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
|
|
@ -79,3 +79,6 @@
|
|||
|
||||
[Property animation-trigger-exit-range-start value 'exit']
|
||||
expected: FAIL
|
||||
|
||||
[Property animation-trigger-exit-range-start value 'auto']
|
||||
expected: FAIL
|
||||
|
|
|
@ -73,3 +73,6 @@
|
|||
|
||||
[e.style['animation-trigger-exit-range-start'\] = "cover calc(sign(100em - 1px) * 1%)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['animation-trigger-exit-range-start'\] = "auto" should set the property value]
|
||||
expected: FAIL
|
||||
|
|
2
tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-inset-shadow.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-inset-shadow.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[corner-shape-inset-shadow.html]
|
||||
expected: FAIL
|
|
@ -72,3 +72,9 @@
|
|||
|
||||
[corner-shape-render-fuzzy.html?corner-shape=superellipse(0.8)&border-radius=40px&border-width=10px&border-left-color=purple]
|
||||
expected: FAIL
|
||||
|
||||
[corner-shape-render-fuzzy.html?border-radius=50%&corner-top-left-shape=scoop&corner-bottom-right-shape=scoop&corner-top-right-shape=notch&corner-bottom-left-shape=notch&border-width=10px]
|
||||
expected: FAIL
|
||||
|
||||
[corner-shape-render-fuzzy.html?border-radius=50%&corner-top-right-shape=scoop&corner-bottom-left-shape=scoop&corner-top-left-shape=notch&corner-bottom-right-shape=notch&border-width=10px]
|
||||
expected: FAIL
|
||||
|
|
|
@ -87,3 +87,6 @@
|
|||
|
||||
[corner-shape-render-precise.html?border-top-left-radius=50%&corner-shape=superellipse(0.7)&border-left-width=30px&border-top-width=30px]
|
||||
expected: FAIL
|
||||
|
||||
[corner-shape-render-precise.html?corner-shape=superellipse(-2)&border-top-left-radius=40%&border-width=20px]
|
||||
expected: FAIL
|
||||
|
|
|
@ -16,3 +16,21 @@
|
|||
|
||||
[Property masonry-slack value 'calc(0.5em + 10px)']
|
||||
expected: FAIL
|
||||
|
||||
[Property item-tolerance value 'normal']
|
||||
expected: FAIL
|
||||
|
||||
[Property item-tolerance value '10px']
|
||||
expected: FAIL
|
||||
|
||||
[Property item-tolerance value '20%']
|
||||
expected: FAIL
|
||||
|
||||
[Property item-tolerance value 'calc(20% + 10px)']
|
||||
expected: FAIL
|
||||
|
||||
[Property item-tolerance value 'calc(-0.5em + 10px)']
|
||||
expected: FAIL
|
||||
|
||||
[Property item-tolerance value 'calc(0.5em + 10px)']
|
||||
expected: FAIL
|
||||
|
|
|
@ -16,3 +16,21 @@
|
|||
|
||||
[e.style['masonry-slack'\] = "5vmin" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['item-tolerance'\] = "normal" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['item-tolerance'\] = "0" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['item-tolerance'\] = "1px" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['item-tolerance'\] = "calc(2em + 3ex)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['item-tolerance'\] = "4%" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['item-tolerance'\] = "5vmin" should set the property value]
|
||||
expected: FAIL
|
||||
|
|
2
tests/wpt/meta/css/css-overflow/scroll-marker-contain-009.tentative.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-overflow/scroll-marker-contain-009.tentative.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[scroll-marker-contain-009.tentative.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-overflow/scroll-marker-contain-010.tentative.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-overflow/scroll-marker-contain-010.tentative.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[scroll-marker-contain-010.tentative.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-overflow/scroll-marker-contain-011.tentative.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-overflow/scroll-marker-contain-011.tentative.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[scroll-marker-contain-011.tentative.html]
|
||||
expected: FAIL
|
|
@ -4,3 +4,6 @@
|
|||
|
||||
[Comments are handled correctly when computing var(--t1)b using t1:a/* comment */.]
|
||||
expected: FAIL
|
||||
|
||||
[Comments are handled correctly when computing var(--t1)b using t1:'a " '/* comment */.]
|
||||
expected: FAIL
|
||||
|
|
3
tests/wpt/meta/css/cssom-view/getBoundingClientRect-newline.html.ini
vendored
Normal file
3
tests/wpt/meta/css/cssom-view/getBoundingClientRect-newline.html.ini
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[getBoundingClientRect-newline.html]
|
||||
[Range.getBoundingClientRect() should return the first position of the next line when the collapsed range is a newline character]
|
||||
expected: FAIL
|
|
@ -19,3 +19,12 @@
|
|||
|
||||
[initialize is no-op on a subtree with a non-null registry]
|
||||
expected: FAIL
|
||||
|
||||
[initialize sets element.customElementRegistry to the global registry]
|
||||
expected: FAIL
|
||||
|
||||
[initialize sets element.customElementRegistry to a scoped registry]
|
||||
expected: FAIL
|
||||
|
||||
[initialize sets element.customElementRegistry permantently]
|
||||
expected: FAIL
|
||||
|
|
12
tests/wpt/meta/custom-elements/revamped-scoped-registry/Document-customElementRegistry.html.ini
vendored
Normal file
12
tests/wpt/meta/custom-elements/revamped-scoped-registry/Document-customElementRegistry.html.ini
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
[Document-customElementRegistry.html]
|
||||
[customElementRegistry on a document should return window.customElements by default]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on a document without a browsing context should return null]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on a document of a connected iframe should return contentWindow.customElements]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on a document of a disconnected iframe should return contentWindow.customElements]
|
||||
expected: FAIL
|
|
@ -0,0 +1,6 @@
|
|||
[Element-customElementRegistry-exceptions.tentative.html]
|
||||
[customElementRegistry on a failed custom element created by calling createElement on CustomElementRegistry should return the registry]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on a failed custom element created by setting innerHTML should return the associated scoped registry]
|
||||
expected: FAIL
|
|
@ -0,0 +1,30 @@
|
|||
[Element-customElementRegistry.tentative.html]
|
||||
[customElementRegistry on a newly constrcuted element should return window.customElements by default]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on an element inside a declarative shadow DOM should return window.customElements by default]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on an element inside a declarative shadow DOM with shadowrootcustomelementregistry should return null]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on a clone of a declarative shadow tree with shadowrootcustomelementregistry should return null]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on a clone of a declarative shadow tree with shadowrootcustomelementregistry should return the global registry after getting inserted into a document]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on an element inside a declarative shadow DOM with shadowrootcustomelementregistry should return the scoped registry after calling initialize]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on a builtin element created by calling createElement on CustomElementRegistry should return the registry]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on an upgarde candidate created by calling createElement on CustomElementRegistry should return the registry]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on an unknown element created by calling createElement on CustomElementRegistry should return the registry]
|
||||
expected: FAIL
|
||||
|
||||
[customElementRegistry on a defined custom element created by calling createElement on CustomElementRegistry should return the registry]
|
||||
expected: FAIL
|
|
@ -1,6 +0,0 @@
|
|||
[Element-customElements-exceptions.tentative.html]
|
||||
[customElements on a failed custom element created by calling createElement on CustomElementRegistry should return the registry]
|
||||
expected: FAIL
|
||||
|
||||
[customElements on a failed custom element created by setting innerHTML should return the associated scoped registry]
|
||||
expected: FAIL
|
|
@ -1,30 +0,0 @@
|
|||
[Element-customElements.tentative.html]
|
||||
[customElements on a newly constrcuted element should return window.customElements by default]
|
||||
expected: FAIL
|
||||
|
||||
[customElements on an element inside a declarative shadow DOM should return window.customElements by default]
|
||||
expected: FAIL
|
||||
|
||||
[customElements on an element inside a declarative shadow DOM with shadowrootcustomelements should return null]
|
||||
expected: FAIL
|
||||
|
||||
[customElements on a clone of a declarative shadow tree with shadowrootcustomelements should return null]
|
||||
expected: FAIL
|
||||
|
||||
[customElements on a clone of a declarative shadow tree with shadowrootcustomelements should return the global registry after getting inserted into a document]
|
||||
expected: FAIL
|
||||
|
||||
[customElements on an element inside a declarative shadow DOM with shadowrootcustomelements should return the scoped registry after calling initialize]
|
||||
expected: FAIL
|
||||
|
||||
[customElements on a builtin element created by calling createElement on CustomElementRegistry should return the registry]
|
||||
expected: FAIL
|
||||
|
||||
[customElements on an upgarde candidate created by calling createElement on CustomElementRegistry should return the registry]
|
||||
expected: FAIL
|
||||
|
||||
[customElements on an unknown element created by calling createElement on CustomElementRegistry should return the registry]
|
||||
expected: FAIL
|
||||
|
||||
[customElements on a defined custom element created by calling createElement on CustomElementRegistry should return the registry]
|
||||
expected: FAIL
|
|
@ -1,4 +1,4 @@
|
|||
[ShadowRoot-init-customElements.tentative.html]
|
||||
[ShadowRoot-init-customElementRegistry.tentative.html]
|
||||
[A newly attached disconnected ShadowRoot should use the global registry by default]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -10,3 +10,6 @@
|
|||
|
||||
[A newly attached connected ShadowRoot should use the scoped registry if explicitly specified in attachShadow]
|
||||
expected: FAIL
|
||||
|
||||
[attachShadow() should throw for a null customElementRegistry value]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[initial-about-blank.tentative.window.html]
|
||||
[Each navigable document has its own registry]
|
||||
expected: FAIL
|
|
@ -7,3 +7,6 @@
|
|||
|
||||
[Serializing a ShadowRoot with a registry that differs from its host]
|
||||
expected: FAIL
|
||||
|
||||
[shadowRootCustomElementRegistry reflects as string]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[CustomElementRegistry-constructor.tentative.html]
|
||||
[Create non-global CustomElementRegistry and add definitions]
|
||||
expected: FAIL
|
|
@ -1,12 +0,0 @@
|
|||
[ShadowRoot-createElement.tentative.html]
|
||||
[ShadowRoot.createElement() for autonomous custom element]
|
||||
expected: FAIL
|
||||
|
||||
[ShadowRoot.createElementNS() for autonomous custom element]
|
||||
expected: FAIL
|
||||
|
||||
[ShadowRoot.createElement() for customized built-in element]
|
||||
expected: FAIL
|
||||
|
||||
[ShadowRoot.createElementNS() for customized built-in element]
|
||||
expected: FAIL
|
|
@ -1,9 +0,0 @@
|
|||
[ShadowRoot-importNode.tentative.html]
|
||||
[ShadowRoot.importNode: an upgrade candidate from document]
|
||||
expected: FAIL
|
||||
|
||||
[ShadowRoot.importNode: a custom element from another shadow tree]
|
||||
expected: FAIL
|
||||
|
||||
[ShadowRoot.importNode: a template content from document]
|
||||
expected: FAIL
|
|
@ -1,15 +0,0 @@
|
|||
[ShadowRoot-init-registry.tentative.html]
|
||||
[ShadowRoot.registry is null if not explicitly specified]
|
||||
expected: FAIL
|
||||
|
||||
[Attach the global registry to a shadow root]
|
||||
expected: FAIL
|
||||
|
||||
[Attach a non-global registry to a shadow root]
|
||||
expected: FAIL
|
||||
|
||||
[Attach the same registry to multiple shadow roots]
|
||||
expected: FAIL
|
||||
|
||||
[Attaching registry to shadow root can only be done during initialization]
|
||||
expected: FAIL
|
|
@ -1,15 +0,0 @@
|
|||
[ShadowRoot-innerHTML-upgrade.tentative.html]
|
||||
[Upgrade into autonomous custom element when inserted via innerHTML]
|
||||
expected: FAIL
|
||||
|
||||
[Upgrade into autonomous custom element when definition is added]
|
||||
expected: FAIL
|
||||
|
||||
[Upgrade into customized built-in element when inserted via innerHTML]
|
||||
expected: FAIL
|
||||
|
||||
[Upgrade into customized built-in element when definition is added]
|
||||
expected: FAIL
|
||||
|
||||
[Upgrade into autonomous custom element should not inherit from global registry for missing values]
|
||||
expected: FAIL
|
|
@ -1,15 +0,0 @@
|
|||
[ShadowRoot-innerHTML.tentative.html]
|
||||
[innerHTML on a shadow root should use scoped custom element registry]
|
||||
expected: FAIL
|
||||
|
||||
[innerHTML on a disconnected element should use the associated scoped custom element registry]
|
||||
expected: FAIL
|
||||
|
||||
[innerHTML on a connected shadow root should use its scoped custom element]
|
||||
expected: FAIL
|
||||
|
||||
[innerHTML on an inserted element should use the scoped custom element of the ancestor shadow root]
|
||||
expected: FAIL
|
||||
|
||||
[innerHTML should not upgrade a custom element inside a template element]
|
||||
expected: FAIL
|
|
@ -1,6 +0,0 @@
|
|||
[constructor-call.tentative.html]
|
||||
[Calling custom element constructor directly without global registration should fail]
|
||||
expected: FAIL
|
||||
|
||||
[Calling custom element constructor directly uses global registration only]
|
||||
expected: FAIL
|
|
@ -64,3 +64,6 @@
|
|||
|
||||
[Check children were included for void elements]
|
||||
expected: FAIL
|
||||
|
||||
[Check if a prefix bound to an empty namespace URI ("no namespace") serialize]
|
||||
expected: FAIL
|
||||
|
|
|
@ -26,3 +26,6 @@
|
|||
|
||||
[sec-fetch-user - no options - updating]
|
||||
expected: NOTRUN
|
||||
|
||||
[sec-fetch-site - Same origin, no options - registration]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
[fenced-frame-no-preflight-required.tentative.https.window.html]
|
||||
[local to local: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
[local to private: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
[local to public: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
[private to private: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
[private to public: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
[public to public: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public-address to public: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public-address to local: optional preflight]
|
||||
expected: FAIL
|
|
@ -1,120 +0,0 @@
|
|||
[fenced-frame-subresource-fetch.tentative.https.window.html?include=from-public]
|
||||
[public to local: failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: missing CORS headers on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: missing PNA header on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: missing CORS headers on final response.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: success.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: PUT success.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: no-CORS mode failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: no-CORS mode missing CORS headers on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: no-CORS mode missing PNA header on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: no-CORS mode success.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: missing CORS headers on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: missing PNA header on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: missing CORS headers on final response.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: success.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: PUT success.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: no-CORS mode failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: no-CORS mode missing CORS headers on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: no-CORS mode missing PNA header on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: no-CORS mode success.]
|
||||
expected: FAIL
|
||||
|
||||
[public to public: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[fenced-frame-subresource-fetch.tentative.https.window.html?include=baseline]
|
||||
[local to public: PUT preflight failure.]
|
||||
expected: FAIL
|
||||
|
||||
[local to public: PUT preflight success.]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[fenced-frame-subresource-fetch.tentative.https.window.html?include=from-private]
|
||||
[private to local: failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: missing CORS headers on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: missing PNA header on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: missing CORS headers on final response.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: success.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: PUT success.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: no-CORS mode failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: no-CORS mode missing CORS headers on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: no-CORS mode missing PNA header on preflight response.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: no-CORS mode success.]
|
||||
expected: FAIL
|
||||
|
||||
[private to private: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
[private to public: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[fenced-frame-subresource-fetch.tentative.https.window.html?include=from-local]
|
||||
[local to local: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
[local to private: no preflight required.]
|
||||
expected: FAIL
|
||||
|
||||
[local to public: no preflight required.]
|
||||
expected: FAIL
|
|
@ -1,63 +0,0 @@
|
|||
[fenced-frame.tentative.https.window.html]
|
||||
[private to local: failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: missing CORS headers.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: missing PNA header.]
|
||||
expected: FAIL
|
||||
|
||||
[private to local: failed because fenced frames are incompatible with PNA.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: missing CORS headers.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: missing PNA header.]
|
||||
expected: FAIL
|
||||
|
||||
[public to local: failed because fenced frames are incompatible with PNA.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: missing CORS headers.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: missing PNA header.]
|
||||
expected: FAIL
|
||||
|
||||
[public to private: failed because fenced frames are incompatible with PNA.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public-address to local: failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public-address to local: missing CORS headers.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public-address to local: missing PNA header.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public-address to local: failed because fenced frames are incompatible with PNA.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public-address to local (same-origin): fenced frame embedder initiated navigation has opaque origin.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public-address to private: failed preflight.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public-address to private: missing CORS headers.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public-address to private: missing PNA header.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public-address to private: failed because fenced frames are incompatible with PNA.]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[order-in-prerender-activation.html]
|
||||
expected: ERROR
|
|
@ -0,0 +1,2 @@
|
|||
[order-in-prerender-activation.https.html]
|
||||
expected: ERROR
|
|
@ -4,3 +4,6 @@
|
|||
|
||||
[link click]
|
||||
expected: FAIL
|
||||
|
||||
[form submission]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[navigation-unload-cross-origin.sub.window.html]
|
||||
[Cross-origin navigation started from unload handler must be ignored]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.canvas.host.size.large.html]
|
||||
expected: CRASH
|
|
@ -1,2 +0,0 @@
|
|||
[canvas.2d.disconnected.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.createImageBitmap.p3.rgba.unorm8.html]
|
||||
[Verify round-trip of 8-bit P3 data ImageData through ImageBitmap]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.createImageBitmap.srgb.rgba.float16.html]
|
||||
[Verify round-trip of 16-bit float sRGB data ImageData through ImageBitmap]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.createImageBitmap.srgb.rgba.unorm8.html]
|
||||
[Verify round-trip of 8-bit sRGB data ImageData through ImageBitmap]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.object.ctor.pixelFormat.html]
|
||||
[Testing ImageData constructor pixelFormat behaviors]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.object.properties.html]
|
||||
[ImageData objects have the right properties]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.put.basic.rgba.float16.html]
|
||||
[putImageData() puts 16-bit floating point image data from getImageData() onto the canvas]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.createImageBitmap.p3.rgba.unorm8.html]
|
||||
[Verify round-trip of 8-bit P3 data ImageData through ImageBitmap]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.createImageBitmap.p3.rgba.unorm8.worker.html]
|
||||
[Verify round-trip of 8-bit P3 data ImageData through ImageBitmap]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.createImageBitmap.srgb.rgba.float16.html]
|
||||
[Verify round-trip of 16-bit float sRGB data ImageData through ImageBitmap]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.createImageBitmap.srgb.rgba.float16.worker.html]
|
||||
[Verify round-trip of 16-bit float sRGB data ImageData through ImageBitmap]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.createImageBitmap.srgb.rgba.unorm8.html]
|
||||
[Verify round-trip of 8-bit sRGB data ImageData through ImageBitmap]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.createImageBitmap.srgb.rgba.unorm8.worker.html]
|
||||
[Verify round-trip of 8-bit sRGB data ImageData through ImageBitmap]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.object.properties.html]
|
||||
[ImageData objects have the right properties]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.object.properties.worker.html]
|
||||
[ImageData objects have the right properties]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.put.basic.rgba.float16.html]
|
||||
[putImageData() puts 16-bit floating point image data from getImageData() onto the canvas]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.imageData.put.basic.rgba.float16.worker.html]
|
||||
[putImageData() puts 16-bit floating point image data from getImageData() onto the canvas]
|
||||
expected: FAIL
|
|
@ -200,6 +200,9 @@
|
|||
[OffscreenCanvasRenderingContext2D interface: attribute lang]
|
||||
expected: FAIL
|
||||
|
||||
[ImageData interface: attribute pixelFormat]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[idlharness.any.shadowrealm-in-window.html]
|
||||
expected: ERROR
|
||||
|
|
|
@ -5807,6 +5807,12 @@
|
|||
[OffscreenCanvasRenderingContext2D interface: attribute lang]
|
||||
expected: FAIL
|
||||
|
||||
[ImageData interface: attribute pixelFormat]
|
||||
expected: FAIL
|
||||
|
||||
[ImageData interface: new ImageData(10, 10) must inherit property "pixelFormat" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[idlharness.https.html?include=HTML.+]
|
||||
[HTMLAllCollection interface: existence and properties of interface object]
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-1.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[form-submit-iframe-then-location-navigate.html]
|
||||
[Verifies that location navigations take precedence when following form submissions.]
|
||||
expected: FAIL
|
|
@ -1,4 +0,0 @@
|
|||
[jsurl-form-submit.tentative.html]
|
||||
[Verifies that form submissions scheduled inside javascript: urls take precedence over the javascript: url's return value.]
|
||||
expected: FAIL
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
[historical.html]
|
||||
[<input name=isindex> should not be supported]
|
||||
expected: FAIL
|
|
@ -196,3 +196,9 @@
|
|||
|
||||
[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
|
||||
|
|
|
@ -19,3 +19,12 @@
|
|||
|
||||
[Reload domContentLoadedEventEnd > Original domContentLoadedEventEnd]
|
||||
expected: FAIL
|
||||
|
||||
[Reload domComplete > Original domComplete]
|
||||
expected: FAIL
|
||||
|
||||
[Reload loadEventEnd > Original loadEventEnd]
|
||||
expected: FAIL
|
||||
|
||||
[Reload loadEventStart > Original loadEventStart]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[eventloop.html]
|
||||
[test0: multiple notifications inside same event loop]
|
||||
expected: FAIL
|
|
@ -108,6 +108,21 @@
|
|||
[Window interface: attribute caches]
|
||||
expected: FAIL
|
||||
|
||||
[ServiceWorkerContainer interface: operation register((TrustedScriptURL or USVString), optional RegistrationOptions)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[NavigationPreloadManager interface: operation enable()]
|
||||
expected: TIMEOUT
|
||||
|
||||
[NavigationPreloadManager interface: operation disable()]
|
||||
expected: TIMEOUT
|
||||
|
||||
[NavigationPreloadManager interface: operation setHeaderValue(ByteString)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[NavigationPreloadManager interface: operation getState()]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
||||
[idlharness.https.any.serviceworker.html]
|
||||
expected: ERROR
|
||||
|
|
3
tests/wpt/meta/shadow-dom/scroll-restore-shadow.html.ini
vendored
Normal file
3
tests/wpt/meta/shadow-dom/scroll-restore-shadow.html.ini
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[scroll-restore-shadow.html]
|
||||
[Scroll position restore on shadow tree]
|
||||
expected: FAIL
|
|
@ -32,3 +32,18 @@
|
|||
|
||||
[directive "require-trusted-types-for unquoted-invalid 'script' also-unquoted-invalid (unknown sink group)]
|
||||
expected: NOTRUN
|
||||
|
||||
[directive "require-trusted-types-for 'invalid'%09'script'" (required-ascii-whitespace)]
|
||||
expected: NOTRUN
|
||||
|
||||
[directive "require-trusted-types-for 'invalid'%0A%20'script'" (required-ascii-whitespace)]
|
||||
expected: NOTRUN
|
||||
|
||||
[directive "require-trusted-types-for 'invalid'%0C'script'" (required-ascii-whitespace)]
|
||||
expected: NOTRUN
|
||||
|
||||
[directive "require-trusted-types-for 'invalid'%0D'script'" (required-ascii-whitespace)]
|
||||
expected: NOTRUN
|
||||
|
||||
[directive "require-trusted-types-for 'invalid'%20'script'" (required-ascii-whitespace)]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -59,3 +59,9 @@
|
|||
|
||||
[invalid directive "trusted-type _TTP" (no ascii whitespace)]
|
||||
expected: NOTRUN
|
||||
|
||||
[non-ASCII trusted-types directives are discarded ("política")]
|
||||
expected: NOTRUN
|
||||
|
||||
[directive "trusted-type _TTP1_%09_TTP2_%0A%20_TTP3_%0C_TTP4_%0D_TTP5_%20_TTP6_" (required-ascii-whitespace)]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -730,3 +730,12 @@
|
|||
|
||||
[X SNR (-300.92641698386234 dB) is not greater than or equal to 65.737. Got -300.92641698386234.]
|
||||
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[14680\]\t-1.8981590822950617e-24\t2.0512369275093079e-1\t2.0512369275093079e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[14681\]\t1.1480505578219891e-2\t1.4340442419052124e-1\t1.3192391861230135e-1\t9.1994315626575540e-1\t3.8985999999999999e-3\n\tMax AbsError of 2.0512369275093079e-1 at index of 14680.\n\tMax RelError of 1.0000000000000000e+0 at index of 14680.\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[14680\]\t5.4363735735307728e-10\t2.0512369275093079e-1\t2.0512369220729343e-1\t9.9999999734970957e-1\t3.8985999999999999e-3\n\t[14681\]\t1.1480505578219891e-2\t1.4340442419052124e-1\t1.3192391861230135e-1\t9.1994315626575540e-1\t3.8985999999999999e-3\n\tMax AbsError of 2.0512369220729343e-1 at index of 14680.\n\tMax RelError of 9.9999999734970957e-1 at index of 14680.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X SNR (55.28431861174898 dB) is not greater than or equal to 65.737. Got 55.28431861174898.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -213,7 +213,7 @@ function run_test(algorithmNames) {
|
|||
allAlgorithmSpecifiersFor(name).forEach(function(algorithm) {
|
||||
getValidKeyData(algorithm).forEach(function(test) {
|
||||
if (test.format === "jwk") {
|
||||
var data = {crv: test.data.crv, kty: test.data.kty, d: test.data.d, x: test.data.x, d: test.data.d};
|
||||
var data = {crv: test.data.crv, kty: test.data.kty, d: test.data.d, x: test.data.x, y: test.data.y};
|
||||
data.kty = getMismatchedKtyField(algorithm);
|
||||
var usages = validUsages(vector, 'jwk', test.data);
|
||||
testError('jwk', algorithm, data, name, usages, true, "DataError", "Invalid 'kty' field");
|
||||
|
@ -228,7 +228,7 @@ function run_test(algorithmNames) {
|
|||
allAlgorithmSpecifiersFor(name).forEach(function(algorithm) {
|
||||
getValidKeyData(algorithm).forEach(function(test) {
|
||||
if (test.format === "jwk") {
|
||||
var data = {crv: test.data.crv, kty: test.data.kty, d: test.data.d, x: test.data.x, d: test.data.d};
|
||||
var data = {crv: test.data.crv, kty: test.data.kty, d: test.data.d, x: test.data.x, y: test.data.y};
|
||||
data.ext = false;
|
||||
var usages = validUsages(vector, 'jwk', test.data);
|
||||
testError('jwk', algorithm, data, name, usages, true, "DataError", "Import from a non-extractable");
|
||||
|
@ -259,7 +259,7 @@ function run_test(algorithmNames) {
|
|||
allAlgorithmSpecifiersFor(name).forEach(function(algorithm) {
|
||||
getValidKeyData(algorithm).forEach(function(test) {
|
||||
if (test.format === "jwk") {
|
||||
var data = {crv: test.data.crv, kty: test.data.kty, d: test.data.d, x: test.data.x, d: test.data.d};
|
||||
var data = {crv: test.data.crv, kty: test.data.kty, d: test.data.d, x: test.data.x, y: test.data.y};
|
||||
data.crv = getMismatchedCrvField(algorithm)
|
||||
var usages = validUsages(vector, 'jwk', test.data);
|
||||
testError('jwk', algorithm, data, name, usages, true, "DataError", "Invalid 'crv' field");
|
||||
|
|
39
tests/wpt/tests/ai/resources/util.js
vendored
39
tests/wpt/tests/ai/resources/util.js
vendored
|
@ -1,3 +1,5 @@
|
|||
const kTestPrompt = 'Please write a sentence in English.';
|
||||
|
||||
// The method should take the AbortSignal as an option and return a promise.
|
||||
const testAbortPromise = async (t, method) => {
|
||||
// Test abort signal without custom error.
|
||||
|
@ -26,6 +28,43 @@ const testAbortPromise = async (t, method) => {
|
|||
}
|
||||
};
|
||||
|
||||
// The method should take the AbortSignal as an option and return a ReadableStream.
|
||||
const testAbortReadableStream = async (t, method) => {
|
||||
// Test abort signal without custom error.
|
||||
{
|
||||
const controller = new AbortController();
|
||||
const stream = method(controller.signal);
|
||||
controller.abort();
|
||||
let writableStream = new WritableStream();
|
||||
await promise_rejects_dom(
|
||||
t, "AbortError", stream.pipeTo(writableStream)
|
||||
);
|
||||
|
||||
// Using the same aborted controller will get the `AbortError` as well.
|
||||
await promise_rejects_dom(
|
||||
t, "AbortError", new Promise(() => { method(controller.signal); })
|
||||
);
|
||||
}
|
||||
|
||||
// Test abort signal with custom error.
|
||||
{
|
||||
const error = new DOMException("test", "VersionError");
|
||||
const controller = new AbortController();
|
||||
const stream = method(controller.signal);
|
||||
controller.abort(error);
|
||||
let writableStream = new WritableStream();
|
||||
await promise_rejects_exactly(
|
||||
t, error,
|
||||
stream.pipeTo(writableStream)
|
||||
);
|
||||
|
||||
// Using the same aborted controller will get the same error.
|
||||
await promise_rejects_exactly(
|
||||
t, error, new Promise(() => { method(controller.signal); })
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
async function testMonitor(createFunc, options = {}) {
|
||||
let created = false;
|
||||
const progressEvents = [];
|
||||
|
|
25
tests/wpt/tests/ai/summarizer/summarizer-abort.tentative.https.any.js
vendored
Normal file
25
tests/wpt/tests/ai/summarizer/summarizer-abort.tentative.https.any.js
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
// META: title=Summarizer Abort
|
||||
// META: global=window,worker
|
||||
// META: script=../resources/util.js
|
||||
|
||||
'use strict';
|
||||
|
||||
promise_test(async t => {
|
||||
await testAbortPromise(t, signal => {
|
||||
return Summarizer.create({ signal: signal });
|
||||
});
|
||||
}, "Aborting Summarizer.create().");
|
||||
|
||||
promise_test(async t => {
|
||||
const session = await Summarizer.create();
|
||||
await testAbortPromise(t, signal => {
|
||||
return session.summarize(kTestPrompt, { signal: signal });
|
||||
});
|
||||
}, "Aborting Summarizer.summarize().");
|
||||
|
||||
promise_test(async t => {
|
||||
const session = await Summarizer.create();
|
||||
await testAbortReadableStream(t, signal => {
|
||||
return session.summarizeStreaming(kTestPrompt, { signal: signal });
|
||||
});
|
||||
}, "Aborting Summarizer.summarizeStreaming().");
|
36
tests/wpt/tests/ai/summarizer/summarizer-streaming.tentative.https.any.js
vendored
Normal file
36
tests/wpt/tests/ai/summarizer/summarizer-streaming.tentative.https.any.js
vendored
Normal file
|
@ -0,0 +1,36 @@
|
|||
// META: title=Summarizer Streaming
|
||||
// META: script=../resources/util.js
|
||||
// META: timeout=long
|
||||
|
||||
'use strict';
|
||||
|
||||
promise_test(async t => {
|
||||
const summarizer = await Summarizer.create();
|
||||
const streamingResponse = summarizer.summarizeStreaming(
|
||||
"The web-platform-tests Project is a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.");
|
||||
assert_equals(
|
||||
Object.prototype.toString.call(streamingResponse),
|
||||
"[object ReadableStream]"
|
||||
);
|
||||
const reader = streamingResponse.getReader();
|
||||
let result = "";
|
||||
while (true) {
|
||||
const { value, done } = await reader.read();
|
||||
if (done) {
|
||||
break;
|
||||
}
|
||||
result = value;
|
||||
}
|
||||
assert_greater_than(result.length, 0);
|
||||
}, 'Summarizer.summarizeStreaming returns ReadableStream with a non-empty text.');
|
||||
|
||||
promise_test(async t => {
|
||||
const summarizer = await Summarizer.create();
|
||||
const streamingResponse = summarizer.summarizeStreaming("");
|
||||
assert_equals(
|
||||
Object.prototype.toString.call(streamingResponse),
|
||||
"[object ReadableStream]"
|
||||
);
|
||||
const { result, done } = await streamingResponse.getReader().read();
|
||||
assert_true(done);
|
||||
}, 'Summarizer.summarizeStreaming returns a ReadableStream without any chunk on an empty input.');
|
108
tests/wpt/tests/ai/summarizer/summarizer.tentative.https.any.js
vendored
Normal file
108
tests/wpt/tests/ai/summarizer/summarizer.tentative.https.any.js
vendored
Normal file
|
@ -0,0 +1,108 @@
|
|||
// META: title=Summarizer
|
||||
// META: script=../resources/util.js
|
||||
// META: timeout=long
|
||||
|
||||
'use strict';
|
||||
|
||||
promise_test(async () => {
|
||||
assert_true(!!Summarizer);
|
||||
}, 'Summarizer must be defined.');
|
||||
|
||||
promise_test(async () => {
|
||||
const availability = await Summarizer.availability({
|
||||
type: "tl;dr",
|
||||
format: "plain-text",
|
||||
length: "medium",
|
||||
});
|
||||
assert_not_equals(availability, "unavailable");
|
||||
}, 'Summarizer.availability() is available');
|
||||
|
||||
promise_test(async () => {
|
||||
const availability = await Summarizer.availability({
|
||||
type: "tl;dr",
|
||||
format: "plain-text",
|
||||
length: "medium",
|
||||
expectedInputLanguages: ["en-GB"],
|
||||
expectedContextLanguages: ["en"],
|
||||
outputLanguage: "en",
|
||||
});
|
||||
assert_not_equals(availability, "unavailable");
|
||||
}, 'Summarizer.availability() is available for supported languages');
|
||||
|
||||
promise_test(async () => {
|
||||
const availability = await Summarizer.availability({
|
||||
type: "tl;dr",
|
||||
format: "plain-text",
|
||||
length: "medium",
|
||||
expectedInputLanguages: ["es"], // not supported
|
||||
expectedContextLanguages: ["en"],
|
||||
outputLanguage: "es", // not supported
|
||||
});
|
||||
assert_equals(availability, "unavailable");
|
||||
}, 'Summarizer.availability() returns no for unsupported languages');
|
||||
|
||||
promise_test(async () => {
|
||||
await testMonitor(Summarizer.create);
|
||||
}, 'Summarizer.create() notifies its monitor on downloadprogress');
|
||||
|
||||
promise_test(async () => {
|
||||
const summarizer = await Summarizer.create({});
|
||||
const result = await summarizer.summarize(kTestPrompt);
|
||||
assert_equals(typeof result, "string");
|
||||
assert_greater_than(result.length, 0);
|
||||
}, 'Summarizer.summarize() returns non-empty result');
|
||||
|
||||
promise_test(async () => {
|
||||
const summarizer = await Summarizer.create({});
|
||||
const result = await summarizer.measureInputUsage(kTestPrompt);
|
||||
assert_greater_than(result, 0);
|
||||
}, 'Summarizer.measureInputUsage() returns non-empty result');
|
||||
|
||||
promise_test(async () => {
|
||||
const sharedContext = 'This is a shared context string';
|
||||
const summarizer = await Summarizer.create({sharedContext: sharedContext});
|
||||
assert_equals(summarizer.sharedContext, sharedContext);
|
||||
}, 'Summarizer.sharedContext');
|
||||
|
||||
promise_test(async () => {
|
||||
const summarizer = await Summarizer.create({type: 'headline'});
|
||||
assert_equals(summarizer.type, 'headline');
|
||||
}, 'Summarizer.type');
|
||||
|
||||
promise_test(async () => {
|
||||
const summarizer = await Summarizer.create({format: 'markdown'});
|
||||
assert_equals(summarizer.format, 'markdown');
|
||||
}, 'Summarizer.format');
|
||||
|
||||
promise_test(async () => {
|
||||
const summarizer = await Summarizer.create({length: 'medium'});
|
||||
assert_equals(summarizer.length, 'medium');
|
||||
}, 'Summarizer.length');
|
||||
|
||||
promise_test(async () => {
|
||||
const summarizer = await Summarizer.create({
|
||||
expectedInputLanguages: ['en']
|
||||
});
|
||||
assert_array_equals(summarizer.expectedInputLanguages, ['en']);
|
||||
}, 'Summarizer.expectedInputLanguages');
|
||||
|
||||
promise_test(async () => {
|
||||
const summarizer = await Summarizer.create({
|
||||
expectedContextLanguages: ['en']
|
||||
});
|
||||
assert_array_equals(summarizer.expectedContextLanguages, ['en']);
|
||||
}, 'Summarizer.expectedContextLanguages');
|
||||
|
||||
promise_test(async () => {
|
||||
const summarizer = await Summarizer.create({
|
||||
outputLanguage: 'en'
|
||||
});
|
||||
assert_equals(summarizer.outputLanguage, 'en');
|
||||
}, 'Summarizer.outputLanguage');
|
||||
|
||||
promise_test(async () => {
|
||||
const summarizer = await Summarizer.create({});
|
||||
assert_equals(summarizer.expectedInputLanguages, null);
|
||||
assert_equals(summarizer.expectedContextLanguages, null);
|
||||
assert_equals(summarizer.outputLanguage, null);
|
||||
}, 'Summarizer optional attributes return null');
|
115
tests/wpt/tests/clear-site-data/clear-cache-bfcache.sub.https.html
vendored
Normal file
115
tests/wpt/tests/clear-site-data/clear-cache-bfcache.sub.https.html
vendored
Normal file
|
@ -0,0 +1,115 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<meta name="timeout" content="long">
|
||||
<title>Clear-Site-Data: cache for bfcache</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="support/clear-cache-helper.sub.js"></script>
|
||||
<script src="/common/dispatcher/dispatcher.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="/html/browsers/browsing-the-web/back-forward-cache/resources/helper.sub.js"></script>
|
||||
<script type="module">
|
||||
|
||||
const sameOrigin =
|
||||
'https://{{host}}:{{ports[https][0]}}';
|
||||
const subdomainOrigin =
|
||||
'https://{{hosts[][www2]}}:{{ports[https][0]}}';
|
||||
const crossSiteOrigin =
|
||||
'https://{{hosts[alt][]}}:{{ports[https][0]}}';
|
||||
|
||||
// The tests are built on top of the back-forward-cache test harness.
|
||||
// Here is the steps for the tests:
|
||||
// 1. Open a new window and navigate to a test URL.
|
||||
// 2. Navigate the window to a second page.
|
||||
// 3. Trigger the clear-site-data header either by window.open() or loading an
|
||||
// iframe from the second page.
|
||||
// 4. Navigate back to the first page.
|
||||
// 5. Assert that the first page is or is not cached.
|
||||
|
||||
function runBfCacheClearTest(params, description) {
|
||||
runBfcacheTest(
|
||||
{
|
||||
targetOrigin: sameOrigin,
|
||||
scripts: ["/clear-site-data/support/clear-cache-helper.sub.js"],
|
||||
funcBeforeBackNavigation: async (getUrlParams, mode) => {
|
||||
|
||||
const cacheHelper = self.crypto.randomUUID();
|
||||
const testUrl = getUrl(cacheHelper, getUrlParams);
|
||||
|
||||
let clearingPromise;
|
||||
if (mode === "window") {
|
||||
clearingPromise = new Promise(resolve => {
|
||||
window.addEventListener("message", resolve, {once: true});
|
||||
window.open(testUrl);
|
||||
});
|
||||
} else if (mode === "iframe") {
|
||||
clearingPromise = new Promise(resolve => {
|
||||
const iframe = document.createElement("iframe");
|
||||
iframe.src = testUrl;
|
||||
document.body.appendChild(iframe);
|
||||
iframe.onload = resolve;
|
||||
});
|
||||
} else {
|
||||
throw new Error("Unsupported mode");
|
||||
}
|
||||
|
||||
await clearingPromise;
|
||||
},
|
||||
argsBeforeBackNavigation: [params.getUrlParams, params.mode],
|
||||
...params,
|
||||
},
|
||||
description
|
||||
);
|
||||
}
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
getUrlParams: {
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "iframe",
|
||||
shouldBeCached: false,
|
||||
},
|
||||
"BfCached document shouldn't be cached after receiving clear-cache header from the same origin."
|
||||
);
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
targetOrigin: subdomainOrigin,
|
||||
getUrlParams: {
|
||||
subdomain: true,
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "iframe",
|
||||
shouldBeCached: true,
|
||||
},
|
||||
"BfCached document should be cached after receiving clear-cache header from a subdomain."
|
||||
);
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
targetOrigin: crossSiteOrigin,
|
||||
getUrlParams: {
|
||||
secondOrigin: true,
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "iframe",
|
||||
shouldBeCached: true,
|
||||
},
|
||||
"BfCached document should be cached after receiving clear-cache header from another site."
|
||||
);
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
getUrlParams: {
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "window",
|
||||
shouldBeCached: false,
|
||||
},
|
||||
"BfCached document shouldn't be cached after receiving clear-cache header from another window."
|
||||
);
|
||||
|
||||
</script>
|
|
@ -39,7 +39,7 @@ function getUrl(cacheHelper, {
|
|||
} else { // !second_origin && !subdomain
|
||||
url += "{{hosts[][]}}";
|
||||
}
|
||||
url += ":{{ports[https][1]}}";
|
||||
url += ":{{ports[https][0]}}";
|
||||
url += "/clear-site-data/support/clear-site-data-cache.py";
|
||||
url = new URL(url);
|
||||
let params = new URLSearchParams();
|
||||
|
@ -130,4 +130,3 @@ function testCacheClear(test, params, assert) {
|
|||
openTestPageHelper(test, null, testUrls, 0, assert, resolve)
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset=utf-8>
|
||||
<title>Container Timing: starting observation after image paint, with buffering, reports paint.</title>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
</style>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/container-timing/resources/container-timing-helpers.js"></script>
|
||||
<script src="/element-timing/resources/element-timing-helpers.js"></script>
|
||||
<script>
|
||||
let beforeRender;
|
||||
async_test(function (t) {
|
||||
assert_implements(window.PerformanceContainerTiming, "PerformanceContainerTiming is not implemented");
|
||||
t.step_timeout(() => {
|
||||
const observer = new PerformanceObserver(
|
||||
t.step_func_done(function(entryList) {
|
||||
assert_equals(entryList.getEntries().length, 1);
|
||||
const entry = entryList.getEntries()[0];
|
||||
checkContainerEntry(entry, 'image_ct', 'my_id', beforeRender);
|
||||
checkRect(entry, [0, 100, 0, 100])
|
||||
checkContainerSize(entry, 10000);
|
||||
})
|
||||
);
|
||||
observer.observe({type: 'container', buffered: true });
|
||||
}, 2000);
|
||||
// Add the image during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
// Add image of width equal to 100 and height equal to 100.
|
||||
const img = document.createElement('img');
|
||||
img.src = '/container-timing/resources/square100.png';
|
||||
img.setAttribute('containertiming', 'image_ct');
|
||||
img.setAttribute('id', 'my_id');
|
||||
document.body.appendChild(img);
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
}, 'Paint is reported when observation starts after image paint if buffering is enabled.');
|
||||
</script>
|
||||
|
||||
</body>
|
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset=utf-8>
|
||||
<title>Container Timing: observe after painting happened without buffering</title>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
</style>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/container-timing/resources/container-timing-helpers.js"></script>
|
||||
<script src="/element-timing/resources/element-timing-helpers.js"></script>
|
||||
<script>
|
||||
let beforeRender;
|
||||
async_test(function (t) {
|
||||
assert_implements(window.PerformanceContainerTiming, "PerformanceContainerTiming is not implemented");
|
||||
t.step_timeout(() => {
|
||||
const observer = new PerformanceObserver(
|
||||
t.step_func_done(function(entryList) {
|
||||
assert_unreached("Painting happened before observing, it should not create a containertiming entry");
|
||||
})
|
||||
);
|
||||
observer.observe({type: 'container', buffered: false });
|
||||
t.step_timeout(() => {
|
||||
t.done();
|
||||
}, 2000);
|
||||
}, 2000);
|
||||
// Add the image during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
// Add image of width equal to 100 and height equal to 100.
|
||||
const img = document.createElement('img');
|
||||
img.src = '/container-timing/resources/square100.png';
|
||||
img.setAttribute('containertiming', 'image_ct');
|
||||
img.setAttribute('id', 'my_id');
|
||||
document.body.appendChild(img);
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
}, 'containertiming does not report paints before observing if buffering is disabled.');
|
||||
</script>
|
||||
|
||||
</body>
|
32
tests/wpt/tests/css/css-anchor-position/anchor-center-visibility-change-ref.html
vendored
Normal file
32
tests/wpt/tests/css/css-anchor-position/anchor-center-visibility-change-ref.html
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
.container {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border: solid 3px;
|
||||
position: relative;
|
||||
margin: 50px;
|
||||
}
|
||||
|
||||
.anchor {
|
||||
position: relative;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
left: 40px;
|
||||
top: 5px;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
.target {
|
||||
position: fixed;
|
||||
background: cyan;
|
||||
left: 111px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container">
|
||||
<div class="anchor"></div>
|
||||
<div class="target">
|
||||
<div style="width:30px;height:20px;"></div>
|
||||
</div>
|
||||
</div>
|
54
tests/wpt/tests/css/css-anchor-position/anchor-center-visibility-change.html
vendored
Normal file
54
tests/wpt/tests/css/css-anchor-position/anchor-center-visibility-change.html
vendored
Normal file
|
@ -0,0 +1,54 @@
|
|||
<!DOCTYPE html>
|
||||
<html class=reftest-wait>
|
||||
<title>Tests 'anchor-center' value when target visibility changes</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#valdef-justify-self-anchor-center">
|
||||
<link rel="author" href="mailto:plampe@igalia.com">
|
||||
<link rel="match" href="anchor-center-visibility-change-ref.html">
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<script src="/common/rendering-utils.js"></script>
|
||||
<style>
|
||||
.container {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border: solid 3px;
|
||||
position: relative;
|
||||
margin: 50px;
|
||||
}
|
||||
|
||||
.anchor {
|
||||
anchor-name: --anchor;
|
||||
position: relative;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
left: 40px;
|
||||
top: 5px;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
.target {
|
||||
position-anchor: --anchor;
|
||||
position: fixed;
|
||||
background: cyan;
|
||||
justify-self: anchor-center;
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container">
|
||||
<div class="anchor"></div>
|
||||
<div id="target" class="target">
|
||||
<div style="width:30px;height:20px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// #target should be invisible initially.
|
||||
waitForAtLeastOneFrame().then(() => {
|
||||
// Change #target to be visible.
|
||||
document.getElementById('target').style.display = 'flow';
|
||||
waitForAtLeastOneFrame().then(() => {
|
||||
// #target should be visible and anchor-centered now.
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -93,6 +93,46 @@ test((t) => {
|
|||
assert_equals(cs.height, '43px');
|
||||
}, 'Element can use <length> fallback if present');
|
||||
|
||||
test((t) => {
|
||||
let target = createTarget(t, main);
|
||||
target.style = `
|
||||
/* No position-anchor here */
|
||||
left:anchor(right, 8.5%);
|
||||
top:calc(8.5% + anchor(top, 1px));
|
||||
width:anchor-size(width, 21%);
|
||||
height:calc(21% + anchor-size(height, 1px));
|
||||
`;
|
||||
let cs = getComputedStyle(target);
|
||||
assert_equals(cs.left, '17px');
|
||||
assert_equals(cs.top, '18px');
|
||||
assert_equals(cs.width, '42px');
|
||||
assert_equals(cs.height, '43px');
|
||||
}, 'Element can use <length> fallback with percentage');
|
||||
|
||||
test((t) => {
|
||||
let target = createTarget(t, main);
|
||||
target.style = `
|
||||
/* No position-anchor here */
|
||||
max-width:anchor-size(width, 28%);
|
||||
max-height:calc(28% + anchor-size(height, 1px));
|
||||
`;
|
||||
let cs = getComputedStyle(target);
|
||||
assert_equals(cs.maxWidth, '28%');
|
||||
assert_equals(cs.maxHeight, 'calc(28% + 1px)');
|
||||
}, 'Element can use <length> fallback for max size with percentage');
|
||||
|
||||
test((t) => {
|
||||
let target = createTarget(t, main);
|
||||
target.style = `
|
||||
/* No position-anchor here */
|
||||
margin-left:anchor-size(width, 6%);
|
||||
margin-top:calc(6% + anchor-size(height, 1px));
|
||||
`;
|
||||
let cs = getComputedStyle(target);
|
||||
assert_equals(cs.marginLeft, '12px');
|
||||
assert_equals(cs.marginTop, '13px');
|
||||
}, 'Element can use <length> fallback for margin with percentage');
|
||||
|
||||
// Now test that any invalid anchor*() behaves as invalid at computed-value
|
||||
// time if there's no fallback specified.
|
||||
|
||||
|
|
17
tests/wpt/tests/css/css-anchor-position/vertical-aligned-table-cell.html
vendored
Normal file
17
tests/wpt/tests/css/css-anchor-position/vertical-aligned-table-cell.html
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Anchor inside table cell with non-top alignment</title>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-anchor-position-1/#positioning">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-inline-3/#transverse-alignment">
|
||||
<link rel="help" href="https://issues.chromium.org/issues/406288652">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div style="width:100px; height:100px; position:relative; overflow:clip; background:red;">
|
||||
<div style="display:table-cell;">
|
||||
<div id="anchor" style="anchor-name:--a; width:50px; height:100px;"></div>
|
||||
</div>
|
||||
<div style="display:table-cell;">
|
||||
<div style="width:10px; height:200px;"></div>
|
||||
</div>
|
||||
<div style="position:absolute; position-anchor:--a; bottom:anchor(top); width:100px; height:100px; background:green;"></div>
|
||||
</div>
|
|
@ -1,12 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<!-- TODO(crbug.com/390314945): Replace with spec link when the spec lands. -->
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/8942 ">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations-2/#animation-trigger-exit-range">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/computed-testcommon.js"></script>
|
||||
<div id="target" style="font-size:10px;"></div>
|
||||
<script>
|
||||
test_computed_value("animation-trigger-exit-range-end", "initial", "normal");
|
||||
test_computed_value("animation-trigger-exit-range-end", "initial", "auto");
|
||||
test_computed_value("animation-trigger-exit-range-end", "auto");
|
||||
test_computed_value("animation-trigger-exit-range-end", "normal");
|
||||
test_computed_value("animation-trigger-exit-range-end", "cover 0%");
|
||||
test_computed_value("animation-trigger-exit-range-end", "cover 100%", "cover");
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<!-- TODO(crbug.com/390314945): Replace with spec link when the spec lands. -->
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/8942">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations-2/#animation-trigger-exit-range-end">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
|
@ -18,4 +17,5 @@ test_invalid_value("animation-trigger-exit-range-end", "50% exit");
|
|||
test_invalid_value("animation-trigger-exit-range-end", "contain contain");
|
||||
test_invalid_value("animation-trigger-exit-range-end", "none");
|
||||
test_invalid_value("animation-trigger-exit-range-end", "cover 50% enter 50%");
|
||||
test_invalid_value("animation-trigger-exit-range-end", "auto contain");
|
||||
</script>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<!DOCTYPE html>
|
||||
<!-- TODO(crbug.com/390314945): Replace with spec link when the spec lands. -->
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/8942">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations-2/#animation-trigger-exit-range-endß">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
<script>
|
||||
// https://drafts.csswg.org/scroll-animations-1/#view-timelines-ranges
|
||||
test_valid_value("animation-trigger-exit-range-end", "auto");
|
||||
test_valid_value("animation-trigger-exit-range-end", "normal");
|
||||
test_valid_value("animation-trigger-exit-range-end", "cover 0%");
|
||||
test_valid_value("animation-trigger-exit-range-end", "cover 100%", "cover");
|
||||
|
@ -30,4 +30,4 @@ test_valid_value("animation-trigger-exit-range-end", "cover");
|
|||
test_valid_value("animation-trigger-exit-range-end", "contain");
|
||||
test_valid_value("animation-trigger-exit-range-end", "entry");
|
||||
test_valid_value("animation-trigger-exit-range-end", "exit");
|
||||
</script>trigger-
|
||||
</script>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>animation-trigger-exit-range shorthand</title>
|
||||
<!-- TODO(crbug.com/390314945): Replace with spec link when the spec lands. -->
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/8942">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations-2/#animation-trigger-exit-range">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/shorthand-testcommon.js"></script>
|
||||
|
@ -18,6 +17,14 @@ test_valid_value("animation-trigger-exit-range", "entry-crossing");
|
|||
test_valid_value("animation-trigger-exit-range", "exit");
|
||||
test_valid_value("animation-trigger-exit-range", "exit-crossing");
|
||||
test_valid_value("animation-trigger-exit-range", "entry, exit");
|
||||
test_valid_value("animation-trigger-exit-range", "auto");
|
||||
test_valid_value("animation-trigger-exit-range", "auto auto", "auto");
|
||||
test_valid_value("animation-trigger-exit-range", "cover auto");
|
||||
test_valid_value("animation-trigger-exit-range", "cover 10% auto");
|
||||
test_valid_value("animation-trigger-exit-range", "auto cover");
|
||||
test_valid_value("animation-trigger-exit-range", "auto cover 90%");
|
||||
test_valid_value("animation-trigger-exit-range", "normal auto", "normal");
|
||||
test_valid_value("animation-trigger-exit-range", "auto normal", "auto");
|
||||
|
||||
test_valid_value("animation-trigger-exit-range", "entry 0% entry 100%", "entry");
|
||||
test_valid_value("animation-trigger-exit-range", "entry-crossing 0% entry-crossing 100%",
|
||||
|
@ -110,9 +117,14 @@ test_invalid_value("animation-trigger-exit-range", "thing 100%");
|
|||
test_invalid_value("animation-trigger-exit-range", "thing 100px");
|
||||
test_invalid_value("animation-trigger-exit-range", "100% thing");
|
||||
|
||||
test_shorthand_value('animation-trigger-exit-range', 'auto', {
|
||||
'animation-trigger-exit-range-start': 'auto',
|
||||
'animation-trigger-exit-range-end': 'auto',
|
||||
});
|
||||
|
||||
test_shorthand_value('animation-trigger-exit-range', 'normal', {
|
||||
'animation-trigger-exit-range-start': 'normal',
|
||||
'animation-trigger-exit-range-end': 'normal',
|
||||
'animation-trigger-exit-range-end': 'auto',
|
||||
});
|
||||
|
||||
test_shorthand_value('animation-trigger-exit-range', 'normal normal', {
|
||||
|
@ -120,6 +132,16 @@ test_shorthand_value('animation-trigger-exit-range', 'normal normal', {
|
|||
'animation-trigger-exit-range-end': 'normal',
|
||||
});
|
||||
|
||||
test_shorthand_value('animation-trigger-exit-range', 'normal auto', {
|
||||
'animation-trigger-exit-range-start': 'normal',
|
||||
'animation-trigger-exit-range-end': 'auto',
|
||||
});
|
||||
|
||||
test_shorthand_value('animation-trigger-exit-range', 'auto normal', {
|
||||
'animation-trigger-exit-range-start': 'auto',
|
||||
'animation-trigger-exit-range-end': 'normal',
|
||||
});
|
||||
|
||||
test_shorthand_value('animation-trigger-exit-range', 'normal entry 100%', {
|
||||
'animation-trigger-exit-range-start': 'normal',
|
||||
'animation-trigger-exit-range-end': 'entry',
|
||||
|
@ -171,10 +193,10 @@ test_shorthand_value('animation-trigger-exit-range', 'exit calc(10% + 50px)', {
|
|||
});
|
||||
test_shorthand_value('animation-trigger-exit-range', '100px', {
|
||||
'animation-trigger-exit-range-start': '100px',
|
||||
'animation-trigger-exit-range-end': 'normal',
|
||||
'animation-trigger-exit-range-end': 'auto',
|
||||
});
|
||||
test_shorthand_value('animation-trigger-exit-range', '10%', {
|
||||
'animation-trigger-exit-range-start': '10%',
|
||||
'animation-trigger-exit-range-end': 'normal',
|
||||
'animation-trigger-exit-range-end': 'auto',
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -6,7 +6,9 @@
|
|||
<script src="/css/support/computed-testcommon.js"></script>
|
||||
<div id="target" style="font-size:10px;"></div>
|
||||
<script>
|
||||
test_computed_value("animation-trigger-exit-range-start", "initial", "normal");
|
||||
// https://drafts.csswg.org/css-animations-2/#animation-trigger-exit-range-start
|
||||
test_computed_value("animation-trigger-exit-range-start", "initial", "auto");
|
||||
test_computed_value("animation-trigger-exit-range-start", "auto");
|
||||
test_computed_value("animation-trigger-exit-range-start", "normal");
|
||||
test_computed_value("animation-trigger-exit-range-start", "cover 0%", "cover");
|
||||
test_computed_value("animation-trigger-exit-range-start", "cover 100%");
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<!-- TODO(crbug.com/390314945): Replace with spec link when the spec lands. -->
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/8942 ">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations-2/#animation-trigger-exit-range-start">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
|
@ -14,4 +13,5 @@ test_invalid_value("animation-trigger-exit-range-start", "50% exit");
|
|||
test_invalid_value("animation-trigger-exit-range-start", "contain contain");
|
||||
test_invalid_value("animation-trigger-exit-range-start", "none");
|
||||
test_invalid_value("animation-trigger-exit-range-start", "cover 50% enter 50%");
|
||||
test_invalid_value("animation-trigger-exit-range-start", "auto contain");
|
||||
</script>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
<script>
|
||||
// https://drafts.csswg.org/scroll-animations-1/#view-timelines-ranges
|
||||
test_valid_value("animation-trigger-exit-range-start", "auto");
|
||||
test_valid_value("animation-trigger-exit-range-start", "normal");
|
||||
test_valid_value("animation-trigger-exit-range-start", "cover 0%", "cover");
|
||||
test_valid_value("animation-trigger-exit-range-start", "cover 100%");
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue