Sync WPT with upstream (06-07-2025) (#37901)

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

---------

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Co-authored-by: sagudev <16504129+sagudev@users.noreply.github.com>
This commit is contained in:
Servo WPT Sync 2025-07-06 10:33:30 +02:00 committed by GitHub
parent bd4e04774d
commit ee8bd14f3b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
683 changed files with 13108 additions and 9280 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
[__HostHttp.https.tentative.html]
[__HostHttp.https.html]
[__HostHttp: Does not set via DOM 'Secure; Path=/']
expected: FAIL

View file

@ -1,4 +1,4 @@
[__Http.https.tentative.html]
[__Http.https.html]
[__Http: Does not set via DOM 'Path=/']
expected: FAIL

View file

@ -79,3 +79,9 @@
[Property animation-range-end value '120px']
expected: FAIL
[Property animation-range-end value '0%']
expected: FAIL
[Property animation-range-end value '100%']
expected: FAIL

View file

@ -79,3 +79,9 @@
[Property animation-range-start value '120px']
expected: FAIL
[Property animation-range-start value '0%']
expected: FAIL
[Property animation-range-start value '100%']
expected: FAIL

View file

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

View file

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

View file

@ -0,0 +1,21 @@
[at-custom-media-parsing.html]
[@custom-media --query (max-width: 30em) is valid]
expected: FAIL
[@custom-media --query (color), (hover) is valid]
expected: FAIL
[@custom-media --query not all and (hover: hover) is valid]
expected: FAIL
[@custom-media --query true is valid]
expected: FAIL
[@custom-media --query false is valid]
expected: FAIL
[@custom-media -- true is valid]
expected: FAIL
[@custom-media --foo/* */(width > 42px) is valid]
expected: FAIL

View file

@ -0,0 +1,3 @@
[font-variation-settings-serialization-002.html]
[Check if font variation settings serialization is sorted.]
expected: FAIL

View file

@ -1,3 +1,6 @@
[font-style-valid.html]
[e.style['font-style'\] = "oblique calc(30deg + (sign(2cqw - 10px) * 5deg))" should set the property value]
expected: FAIL
[e.style['font-style'\] = "oblique 14deg" should set the property value]
expected: FAIL

View file

@ -0,0 +1,3 @@
[gap-decorations-width-neutral-keyframe-001.html]
[gap decorations row-rule-width supports neutral keyframe.]
expected: FAIL

View file

@ -0,0 +1,3 @@
[gap-decorations-width-neutral-keyframe-002.html]
[gap decorations row-rule-width value list supports neutral keyframe.]
expected: FAIL

View file

@ -0,0 +1,504 @@
[row-rule-width-interpolation.html]
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (0) should be [10px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (0) should be [10px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (0) should be [10px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (0) should be [10px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (1) should be [40px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [initial\] to [40px\] at (-0.3) should be [0px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [initial\] to [40px\] at (0) should be [3px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [initial\] to [40px\] at (0.3) should be [14px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [initial\] to [40px\] at (0.6) should be [25px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [initial\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [initial\] to [40px\] at (1.5) should be [58px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [initial\] to [40px\] at (-0.3) should be [0px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [initial\] to [40px\] at (0) should be [3px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [initial\] to [40px\] at (0.3) should be [14px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [initial\] to [40px\] at (0.6) should be [25px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [initial\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [initial\] to [40px\] at (1.5) should be [58px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [initial\] to [40px\] at (-0.3) should be [0px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [initial\] to [40px\] at (0) should be [3px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [initial\] to [40px\] at (0.3) should be [14px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [initial\] to [40px\] at (0.6) should be [25px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [initial\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [initial\] to [40px\] at (1.5) should be [58px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [initial\] to [40px\] at (-0.3) should be [0px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [initial\] to [40px\] at (0) should be [3px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [initial\] to [40px\] at (0.3) should be [14px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [initial\] to [40px\] at (0.6) should be [25px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [initial\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [initial\] to [40px\] at (1.5) should be [58px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [inherit\] to [40px\] at (-0.3) should be [105px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [inherit\] to [40px\] at (0) should be [90px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [inherit\] to [40px\] at (0.3) should be [75px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [inherit\] to [40px\] at (0.6) should be [60px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [inherit\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [inherit\] to [40px\] at (1.5) should be [15px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [inherit\] to [40px\] at (-0.3) should be [105px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [inherit\] to [40px\] at (0) should be [90px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [inherit\] to [40px\] at (0.3) should be [75px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [inherit\] to [40px\] at (0.6) should be [60px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [inherit\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [inherit\] to [40px\] at (1.5) should be [15px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [inherit\] to [40px\] at (-0.3) should be [105px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [inherit\] to [40px\] at (0) should be [90px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [inherit\] to [40px\] at (0.3) should be [75px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [inherit\] to [40px\] at (0.6) should be [60px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [inherit\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [inherit\] to [40px\] at (1.5) should be [15px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [inherit\] to [40px\] at (-0.3) should be [105px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [inherit\] to [40px\] at (0) should be [90px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [inherit\] to [40px\] at (0.3) should be [75px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [inherit\] to [40px\] at (0.6) should be [60px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [inherit\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [inherit\] to [40px\] at (1.5) should be [15px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [unset\] to [40px\] at (-0.3) should be [0px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [unset\] to [40px\] at (0) should be [3px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [unset\] to [40px\] at (0.3) should be [14px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [unset\] to [40px\] at (0.6) should be [25px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [unset\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [unset\] to [40px\] at (1.5) should be [58px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [unset\] to [40px\] at (-0.3) should be [0px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [unset\] to [40px\] at (0) should be [3px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [unset\] to [40px\] at (0.3) should be [14px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [unset\] to [40px\] at (0.6) should be [25px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [unset\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [unset\] to [40px\] at (1.5) should be [58px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [unset\] to [40px\] at (-0.3) should be [0px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [unset\] to [40px\] at (0) should be [3px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [unset\] to [40px\] at (0.3) should be [14px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [unset\] to [40px\] at (0.6) should be [25px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [unset\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [unset\] to [40px\] at (1.5) should be [58px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [unset\] to [40px\] at (-0.3) should be [0px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [unset\] to [40px\] at (0) should be [3px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [unset\] to [40px\] at (0.3) should be [14px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [unset\] to [40px\] at (0.6) should be [25px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [unset\] to [40px\] at (1) should be [40px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [unset\] to [40px\] at (1.5) should be [58px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [0px\] to [100px\] at (-0.3) should be [0\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [0px\] to [100px\] at (0) should be [0\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [0px\] to [100px\] at (0.3) should be [30px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [0px\] to [100px\] at (0.6) should be [60px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [0px\] to [100px\] at (1) should be [100px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [0px\] to [100px\] at (1.5) should be [150px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [0px\] to [100px\] at (-0.3) should be [0\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [0px\] to [100px\] at (0) should be [0\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [0px\] to [100px\] at (0.3) should be [30px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [0px\] to [100px\] at (0.6) should be [60px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [0px\] to [100px\] at (1) should be [100px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [0px\] to [100px\] at (1.5) should be [150px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [0px\] to [100px\] at (-0.3) should be [0\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [0px\] to [100px\] at (0) should be [0\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [0px\] to [100px\] at (0.3) should be [30px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [0px\] to [100px\] at (0.6) should be [60px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [0px\] to [100px\] at (1) should be [100px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [0px\] to [100px\] at (1.5) should be [150px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [0px\] to [100px\] at (-0.3) should be [0\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [0px\] to [100px\] at (0) should be [0\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [0px\] to [100px\] at (0.3) should be [30px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [0px\] to [100px\] at (0.6) should be [60px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [0px\] to [100px\] at (1) should be [100px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [0px\] to [100px\] at (1.5) should be [150px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thin\] to [11px\] at (-0.3) should be [0\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thin\] to [11px\] at (0) should be [1px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thin\] to [11px\] at (0.3) should be [4px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thin\] to [11px\] at (0.6) should be [7px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thin\] to [11px\] at (1) should be [11px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thin\] to [11px\] at (1.5) should be [16px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thin\] to [11px\] at (-0.3) should be [0\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thin\] to [11px\] at (0) should be [1px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thin\] to [11px\] at (0.3) should be [4px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thin\] to [11px\] at (0.6) should be [7px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thin\] to [11px\] at (1) should be [11px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thin\] to [11px\] at (1.5) should be [16px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thin\] to [11px\] at (-0.3) should be [0\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thin\] to [11px\] at (0) should be [1px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thin\] to [11px\] at (0.3) should be [4px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thin\] to [11px\] at (0.6) should be [7px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thin\] to [11px\] at (1) should be [11px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thin\] to [11px\] at (1.5) should be [16px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thin\] to [11px\] at (-0.3) should be [0\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thin\] to [11px\] at (0) should be [1px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thin\] to [11px\] at (0.3) should be [4px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thin\] to [11px\] at (0.6) should be [7px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thin\] to [11px\] at (1) should be [11px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thin\] to [11px\] at (1.5) should be [16px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thick\] to [15px\] at (0) should be [5px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thick\] to [15px\] at (1) should be [15px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thick\] to [15px\] at (0) should be [5px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thick\] to [15px\] at (1) should be [15px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thick\] to [15px\] at (0) should be [5px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thick\] to [15px\] at (1) should be [15px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thick\] to [15px\] at (0) should be [5px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thick\] to [15px\] at (1) should be [15px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
expected: FAIL

View file

@ -0,0 +1,144 @@
[rule-width-interpolation-multiple-values-001.html]
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (0) should be [10px 10px 10px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px 19px 19px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px 28px 28px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px 55px 55px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (0) should be [10px 10px 10px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px 19px 19px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px 28px 28px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px 55px 55px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (0) should be [10px 10px 10px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px 19px 19px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px 28px 28px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px 55px 55px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (0) should be [10px 10px 10px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px 19px 19px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px 28px 28px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px 55px 55px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (0) should be [10px 15px 20px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (0.3) should be [19px 22px 26px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (0.6) should be [28px 30px 32px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (1.5) should be [55px 52px 50px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (0) should be [10px 15px 20px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (0.3) should be [19px 22px 26px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (0.6) should be [28px 30px 32px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (1.5) should be [55px 52px 50px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (0) should be [10px 15px 20px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (0.3) should be [19px 22px 26px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (0.6) should be [28px 30px 32px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (1.5) should be [55px 52px 50px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (0) should be [10px 15px 20px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (0.3) should be [19px 22px 26px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (0.6) should be [28px 30px 32px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (1.5) should be [55px 52px 50px\]]
expected: FAIL

View file

@ -0,0 +1,144 @@
[rule-width-interpolation-multiple-values-002.html]
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (0) should be [10px 10px 10px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px 19px 19px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px 28px 28px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Transitions: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px 55px 55px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (0) should be [10px 10px 10px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px 19px 19px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px 28px 28px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px 55px 55px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (0) should be [10px 10px 10px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px 19px 19px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px 28px 28px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Animations: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px 55px 55px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (-0.3) should be [1px 1px 1px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (0) should be [10px 10px 10px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (0.3) should be [19px 19px 19px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (0.6) should be [28px 28px 28px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[Web Animations: property <row-rule-width> from neutral to [40px\] at (1.5) should be [55px 55px 55px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (0) should be [10px 15px 20px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (0.3) should be [19px 22px 26px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (0.6) should be [28px 30px 32px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Transitions: property <column-rule-width> from neutral to [40px\] at (1.5) should be [55px 52px 50px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (0) should be [10px 15px 20px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (0.3) should be [19px 22px 26px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (0.6) should be [28px 30px 32px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-width> from neutral to [40px\] at (1.5) should be [55px 52px 50px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (0) should be [10px 15px 20px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (0.3) should be [19px 22px 26px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (0.6) should be [28px 30px 32px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[CSS Animations: property <column-rule-width> from neutral to [40px\] at (1.5) should be [55px 52px 50px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (-0.3) should be [1px 7px 14px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (0) should be [10px 15px 20px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (0.3) should be [19px 22px 26px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (0.6) should be [28px 30px 32px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (1) should be [40px 40px 40px\]]
expected: FAIL
[Web Animations: property <column-rule-width> from neutral to [40px\] at (1.5) should be [55px 52px 50px\]]
expected: FAIL

View file

@ -0,0 +1,2 @@
[grid-max-content-size-with-max-content-item.html]
expected: FAIL

View file

@ -0,0 +1,3 @@
[basic.html]
[CSS Mixins: Basic test]
expected: FAIL

View file

@ -0,0 +1,15 @@
[contents-rule.html]
[Simple @contents with no fallback]
expected: FAIL
[Implicit semicolon after @contents, at end of block]
expected: FAIL
[Block in @apply overrides fallback]
expected: FAIL
[Fallback is used if @apply has no block]
expected: FAIL
[@contents is ignored if there is no @contents parameter]
expected: FAIL

View file

@ -0,0 +1,3 @@
[cross-stylesheet.html]
[CSS Mixins: Mixin from another stylesheet]
expected: FAIL

View file

@ -0,0 +1,3 @@
[declarations.html]
[CSS Mixins: Declarations directly in mixin]
expected: FAIL

View file

@ -0,0 +1,3 @@
[mixins-including-mixins.html]
[CSS Mixins: Mixins depending on other mixins]
expected: FAIL

View file

@ -0,0 +1,9 @@
[shadow-dom.html]
[Style in shadow DOM should have access to outside non-adopted mixins]
expected: FAIL
[Style in shadow DOM should have access to inside mixins]
expected: FAIL
[Style in shadow DOM should have access to mixins from adopted stylesheets]
expected: FAIL

View file

@ -0,0 +1,2 @@
[relative-box-order-of-pseudo-elements.html]
expected: FAIL

View file

@ -0,0 +1,6 @@
[keyword-sizes-for-intrinsic-contributions-002.html]
[.test 7]
expected: FAIL
[.test 8]
expected: FAIL

View file

@ -4,3 +4,9 @@
[table 6]
expected: FAIL
[rowspan can't be zero]
expected: FAIL
[table 7]
expected: FAIL

View file

@ -0,0 +1,3 @@
[if-initial-unregistered.html]
[if-testing the initial keyword without any property registrations]
expected: FAIL

View file

@ -1,3 +1,54 @@
[filter-computed.html]
[Property filter value 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)']
expected: FAIL
[Property filter value 'blur(calc(100px + (sign(2cqw - 10px) * 50px)))']
expected: FAIL
[Property filter value 'brightness(calc(10 + (sign(2cqw - 10px) * 5)))']
expected: FAIL
[Property filter value 'brightness(calc(100% + (sign(2cqw - 10px) * 50%)))']
expected: FAIL
[Property filter value 'contrast(calc(10 + (sign(2cqw - 10px) * 5)))']
expected: FAIL
[Property filter value 'contrast(calc(100% + (sign(2cqw - 10px) * 50%)))']
expected: FAIL
[Property filter value 'drop-shadow(rgb(4, 5, 6) calc(10px + (sign(2cqw - 10px) * 5px)) 2px 0px)']
expected: FAIL
[Property filter value 'grayscale(calc(10 + (sign(2cqw - 10px) * 5)))']
expected: FAIL
[Property filter value 'grayscale(calc(100% + (sign(2cqw - 10px) * 50%)))']
expected: FAIL
[Property filter value 'hue-rotate(calc(90deg + (sign(2cqw - 10px) * 45deg)))']
expected: FAIL
[Property filter value 'invert(calc(10 + (sign(2cqw - 10px) * 5)))']
expected: FAIL
[Property filter value 'invert(calc(100% + (sign(2cqw - 10px) * 50%)))']
expected: FAIL
[Property filter value 'opacity(calc(10 + (sign(2cqw - 10px) * 5)))']
expected: FAIL
[Property filter value 'opacity(calc(100% + (sign(2cqw - 10px) * 50%)))']
expected: FAIL
[Property filter value 'saturate(calc(10 + (sign(2cqw - 10px) * 5)))']
expected: FAIL
[Property filter value 'saturate(calc(100% + (sign(2cqw - 10px) * 50%)))']
expected: FAIL
[Property filter value 'sepia(calc(10 + (sign(2cqw - 10px) * 5)))']
expected: FAIL
[Property filter value 'sepia(calc(100% + (sign(2cqw - 10px) * 50%)))']
expected: FAIL

View file

@ -13,3 +13,75 @@
[e.style['filter'\] = "grayscale(calc(101% * sign(1em - 1px)))" should set the property value]
expected: FAIL
[e.style['filter'\] = "blur(calc(100px + (50px * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "brightness(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "brightness(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "contrast(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "contrast(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "drop-shadow(rgb(4, 5, 6) calc(10px + (5px * sign(2cqw - 10px))) 2px 0px)" should set the property value]
expected: FAIL
[e.style['filter'\] = "grayscale(calc(3))" should set the property value]
expected: FAIL
[e.style['filter'\] = "grayscale(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "grayscale(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "hue-rotate(calc(90deg + (45deg * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "invert(calc(3))" should set the property value]
expected: FAIL
[e.style['filter'\] = "invert(calc(300%))" should set the property value]
expected: FAIL
[e.style['filter'\] = "invert(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "invert(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "opacity(calc(3))" should set the property value]
expected: FAIL
[e.style['filter'\] = "opacity(calc(300%))" should set the property value]
expected: FAIL
[e.style['filter'\] = "opacity(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "opacity(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "saturate(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "saturate(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "sepia(calc(3))" should set the property value]
expected: FAIL
[e.style['filter'\] = "sepia(calc(300%))" should set the property value]
expected: FAIL
[e.style['filter'\] = "sepia(calc(10 + (5 * sign(2cqw - 10px))))" should set the property value]
expected: FAIL
[e.style['filter'\] = "sepia(calc(100% + (50% * sign(2cqw - 10px))))" should set the property value]
expected: FAIL

View file

@ -0,0 +1,12 @@
[has-invalidation-first-in-sibling-chain.html]
[#subject1 invalidated after adding first sibling]
expected: FAIL
[#subject2 invalidated after adding first sibling]
expected: FAIL
[#subject3 invalidated after adding first sibling]
expected: FAIL
[#subject4 invalidated after adding first sibling]
expected: FAIL

View file

@ -13,3 +13,12 @@
[attachShadow() should throw for a null customElementRegistry value]
expected: FAIL
[attachShadow() should use the global registry when customElementRegistry is null]
expected: FAIL
[attachShadow() should use the shadow host's registry when customElementRegistry is null]
expected: FAIL
[attachShadow() should use the null registry when the shadow host uses null registry and customElementRegistry is null]
expected: FAIL

View file

@ -1,5 +1,5 @@
[max-payload.tentative.https.window.html]
expected: ERROR
expected: TIMEOUT
[fetchLater() accepts max payload in a POST request body of String in same-origin iframe.]
expected: FAIL

View file

@ -49,3 +49,6 @@
[sec-fetch-storage-access - Not sent to non-trustworthy same-site destination]
expected: FAIL
[sec-fetch-storage-access - Not sent to non-trustworthy cross-site destination]
expected: FAIL

View file

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

View file

@ -2,9 +2,6 @@
[load & pageshow event do not fire on contentWindow of <iframe> element created with no src]
expected: FAIL
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='']
expected: FAIL
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank?foo']
expected: FAIL

View file

@ -1,3 +0,0 @@
[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

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

View file

@ -0,0 +1,3 @@
[2d.text.measure.width.nullCharacter.html]
[Null character does not take up space]
expected: FAIL

View file

@ -0,0 +1,3 @@
[2d.text.measure.width.nullCharacter.worker.html]
[Null character does not take up space]
expected: FAIL

View file

@ -0,0 +1,9 @@
[link-multiple-load-events.html]
[<link> cannot request the same resource twice by touching the 'href' attribute, if its value never changes]
expected: FAIL
[<link> cannot request the same resource twice by touching the 'type' attribute, if its value never changes]
expected: FAIL
[<link> load event can fire twice for the same href resource, based on 'rel' attribute mutations]
expected: FAIL

View file

@ -0,0 +1,3 @@
[iframe-loading-lazy-nav-location-assign.html]
[Navigating iframe loading='lazy' before it is loaded: location.assign]
expected: FAIL

View file

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

View file

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

View file

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

View file

@ -0,0 +1,3 @@
[prefetch-time-to-fetch.https.html]
[Changing a prefetch crossorigin attribute does not trigger a fetch]
expected: FAIL

View file

@ -79,3 +79,9 @@
[MIME-error (script): main]
expected: FAIL
[404 (style): main]
expected: FAIL
[CORS (script): main]
expected: FAIL

View file

@ -0,0 +1,3 @@
[navigate-to-javascript-url-001.html]
[Setting window.location to a javascript: URL without a default policy should report a CSP violation instead of executing the JavaScript code.]
expected: FAIL

View file

@ -0,0 +1,3 @@
[navigate-to-javascript-url-002.html]
[Setting window.location to a javascript: URL with a default policy should execute the JavaScript code modified by that policy.]
expected: FAIL

View file

@ -0,0 +1,3 @@
[navigate-to-javascript-url-003.html]
[Setting window.location to a javascript: URL with a default policy that throws should report a CSP violation without rethrowing the exception.]
expected: FAIL

View file

@ -0,0 +1,3 @@
[navigate-to-javascript-url-004.html]
[Setting window.location to a javascript: URL with a default policy that returns an invalid URL should report a CSP violation without rethrowing the exception.]
expected: FAIL

View file

@ -0,0 +1,3 @@
[navigate-to-javascript-url-005.html]
[A subframe navigating to a javascript: URL should use the CSP policy associated to its document for pre-navigation check and report a violation when it does not defined a default policy.]
expected: FAIL

View file

@ -0,0 +1,3 @@
[navigate-to-javascript-url-006.sub.html]
[A cross-origin subframe navigating to a javascript: URL should use the CSP policy associated to its document for pre-navigation check and execute the JavaScript code modified by its default policy.]
expected: FAIL

View file

@ -0,0 +1,40 @@
[navigate-to-javascript-url-csp-headers.html]
expected: TIMEOUT
[One enforce require-trusted-types-for 'script' directive: navigation is blocked, violation is reported.]
expected: FAIL
[One report-only require-trusted-types-for 'script' directive: navigation continues, violation is reported.]
expected: FAIL
[Multiple enforce require-trusted-types-for directives: one violation reported for each require-trusted-types-for 'script', invalid sink groups ignored.]
expected: FAIL
[Multiple report-only require-trusted-types-for directives: one violation reported for each require-trusted-types-for 'script', invalid sink groups ignored.]
expected: FAIL
[One violated report-only require-trusted-types-for directive followed by multiple enforce directives: behave like one enforced 'script']
expected: FAIL
[One violated enforce require-trusted-types-for directive followed by multiple report-only directives: behave like one enforced 'script']
expected: FAIL
[Mixing enforce and report-only require-trusted-types-for directives: behave like one enforced 'script'.]
expected: FAIL
[directive "require-trusted-types-for 'script'%09'script'%0A'script'%0C'script'%0D'script'%20'script'" (required-ascii-whitespace properly parsed)]
expected: TIMEOUT
[directive "require-trusted-types-for 'script''script'" (invalid since ascii-whitespace is required)]
expected: NOTRUN
[directive "require-trusted-types-for 'script' 'invalid'" (unknown sink group is ignored)]
expected: NOTRUN
[directive "require-trusted-types-for 'invalid' 'script'" (unknown sink group is ignored)]
expected: NOTRUN
[directive "require-trusted-types-for 'invalid' 'script' 'also-invalid" (unknown sink groups are ignored)]
expected: NOTRUN
[directive "require-trusted-types-for unquoted-invalid 'script' also-unquoted-invalid (unknown sink groups are ignored)]
expected: NOTRUN

View file

@ -47,3 +47,74 @@
[Navigate a frame via form-submission with javascript:-urls w/ default policy in report-only mode.]
expected: NOTRUN
[trusted-types-navigation.html?31-35]
expected: CRASH
[trusted-types-navigation.html?36-last]
[Navigate a window via form-submission with javascript:-urls w/ a default policy making the URL invalid in report-only mode.]
expected: FAIL
[trusted-types-navigation.html?26-30]
expected: CRASH
[trusted-types-navigation.html?06-10]
expected: TIMEOUT
[Navigate a frame via anchor with javascript:-urls w/ default policy in enforcing mode.]
expected: FAIL
[Navigate a frame via anchor with javascript:-urls in report-only mode.]
expected: FAIL
[Navigate a frame via anchor with javascript:-urls w/ default policy in report-only mode.]
expected: TIMEOUT
[Navigate a window via anchor with javascript:-urls w/ a default policy throwing an exception in enforcing mode.]
expected: NOTRUN
[Navigate a window via anchor with javascript:-urls w/ a default policy throwing an exception in report-only mode.]
expected: NOTRUN
[trusted-types-navigation.html?11-15]
expected: CRASH
[trusted-types-navigation.html?16-20]
expected: TIMEOUT
[Navigate a window via area with javascript:-urls w/ default policy in report-only mode.]
expected: TIMEOUT
[Navigate a frame via area with javascript:-urls in enforcing mode.]
expected: NOTRUN
[Navigate a frame via area with javascript:-urls w/ default policy in enforcing mode.]
expected: NOTRUN
[Navigate a frame via area with javascript:-urls in report-only mode.]
expected: NOTRUN
[Navigate a frame via area with javascript:-urls w/ default policy in report-only mode.]
expected: NOTRUN
[trusted-types-navigation.html?21-25]
[Navigate a window via area with javascript:-urls w/ a default policy throwing an exception in enforcing mode.]
expected: FAIL
[Navigate a window via area with javascript:-urls w/ a default policy throwing an exception in report-only mode.]
expected: FAIL
[Navigate a window via area with javascript:-urls w/ a default policy making the URL invalid in enforcing mode.]
expected: FAIL
[Navigate a window via area with javascript:-urls w/ a default policy making the URL invalid in report-only mode.]
expected: FAIL
[Navigate a window via form-submission with javascript:-urls in enforcing mode.]
expected: FAIL
[trusted-types-navigation.html?01-05]
expected: CRASH

View file

@ -2,3 +2,5 @@
[Executing "from-dictionary"]
expected: FAIL
[Verify connect() method chaining for common AudioNode types returns destination]
expected: FAIL

View file

@ -14,3 +14,8 @@
[< [playbackRate\] 1 out of 11 assertions were failed.]
expected: FAIL
[Verify k-rate AudioParam input works correctly for playbackRate]
expected: FAIL
[Verify k-rate AudioParam input works correctly for detune]
expected: FAIL

View file

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

View file

@ -1,6 +0,0 @@
[symbol-props.window.html]
[localStorage: defineProperty not configurable]
expected: FAIL
[sessionStorage: defineProperty not configurable]
expected: FAIL

View file

@ -118,3 +118,7 @@ index_get_all_values_with_options_test(
get_all_with_options_and_count_test(
'getAll', /*storeName=*/ 'out-of-line', /*indexName=*/ 'test_idx',
'Get all values with both options and count');
get_all_with_invalid_keys_test(
'getAll', /*storeName=*/ 'out-of-line', /*indexName=*/ 'test_idx',
/*shouldUseDictionary=*/ true, 'Get all values with invalid query keys');

View file

@ -84,3 +84,7 @@ index_get_all_values_test(
index_get_all_values_test(
/*storeName=*/ 'out-of-line-multi', /*options=*/ {query: 'vowel'},
'Retrieve one key multiple values');
get_all_with_invalid_keys_test(
'getAll', /*storeName=*/ 'out-of-line', /*indexName=*/ 'test_idx',
/*shouldUseDictionary=*/ false, 'Get all values with invalid query keys');

View file

@ -117,3 +117,7 @@ index_get_all_keys_with_options_test(
get_all_with_options_and_count_test(
'getAllKeys', /*storeName=*/ 'out-of-line', /*indexName=*/ 'test_idx',
'Get all keys with both options and count');
get_all_with_invalid_keys_test(
'getAllKeys', /*storeName=*/ 'out-of-line', /*indexName=*/ 'test_idx',
/*shouldUseDictionary=*/ true, 'Get all keys with invalid query keys');

View file

@ -83,3 +83,7 @@ index_get_all_keys_test(
index_get_all_keys_test(
/*storeName=*/ 'out-of-line-multi',
/*options=*/ {query: 'vowel'}, 'Retrieve one key multiple values');
get_all_with_invalid_keys_test(
'getAllKeys', /*storeName=*/ 'out-of-line', /*indexName=*/ 'test_idx',
/*shouldUseDictionary=*/ false, 'Get all keys with invalid query keys');

View file

@ -119,3 +119,7 @@ index_get_all_records_test(
count: 4
},
'Direction, query and count');
get_all_with_invalid_keys_test(
'getAllRecords', /*storeName=*/ 'out-of-line', /*indexName=*/ 'test_idx',
/*shouldUseDictionary=*/ true, 'Get all records with invalid query keys');

View file

@ -113,3 +113,7 @@ object_store_get_all_values_with_options_test(
get_all_with_options_and_count_test(
'getAll', /*storeName=*/ 'out-of-line', /*indexName=*/ undefined,
'Get all values with both options and count');
get_all_with_invalid_keys_test(
'getAll', /*storeName=*/ 'out-of-line', /*indexName=*/ undefined,
/*shouldUseDictionary=*/ true, 'Get all values with invalid query keys');

View file

@ -100,3 +100,7 @@ object_store_get_all_test_setup(
transaction.oncomplete = test.step_func_done();
});
}, 'Get all values with transaction.commit()');
get_all_with_invalid_keys_test(
'getAll', /*storeName=*/ 'out-of-line', /*indexName=*/ undefined,
/*shouldUseDictionary=*/ false, 'Get all values with invalid query keys');

View file

@ -109,3 +109,7 @@ object_store_get_all_keys_with_options_test(
get_all_with_options_and_count_test(
'getAllKeys', /*storeName=*/ 'out-of-line', /*indexName=*/ undefined,
'Get all keys with both options and count');
get_all_with_invalid_keys_test(
'getAllKeys', /*storeName=*/ 'out-of-line', /*indexName=*/ undefined,
/*shouldUseDictionary=*/ true, 'Get all keys with invalid query keys');

View file

@ -74,3 +74,7 @@ object_store_get_all_keys_test(
/*storeName=*/ 'out-of-line',
/*options=*/ {query: IDBKeyRange.lowerBound('zz')},
'Query with empty range where lowerBound < last key');
get_all_with_invalid_keys_test(
'getAllKeys', /*storeName=*/ 'out-of-line', /*indexName=*/ undefined,
/*shouldUseDictionary=*/ false, 'Get all keys with invalid query keys');

View file

@ -135,3 +135,7 @@ object_store_get_all_test_setup(
test.done();
});
}, 'Get all records with transaction.commit()');
get_all_with_invalid_keys_test(
'getAllRecords', /*storeName=*/ 'out-of-line', /*indexName=*/ undefined,
/*shouldUseDictionary=*/ true, 'Get all records with invalid query keys');

View file

@ -559,3 +559,47 @@ function get_all_with_options_and_count_test(
});
}, testDescription);
}
// Get all operations must throw a `DataError` exception for invalid query keys.
// See `get_all_test()` above for a description of the parameters.
function get_all_with_invalid_keys_test(
getAllFunctionName, storeName, optionalIndexName,
shouldUseDictionaryArgument, testDescription) {
// Set up the object store or index to query.
const setupFunction = optionalIndexName ? index_get_all_test_setup :
object_store_get_all_test_setup;
setupFunction(storeName, (test, connection, expectedRecords) => {
const transaction = connection.transaction(storeName, 'readonly');
let queryTarget = transaction.objectStore(storeName);
if (optionalIndexName) {
queryTarget = queryTarget.index(optionalIndexName);
}
const invalidKeys = [
{
description: 'Date(NaN)',
value: new Date(NaN),
},
{
description: 'Array',
value: [{}],
},
{
description: 'detached TypedArray',
value: createDetachedArrayBuffer(),
},
{
description: 'detached ArrayBuffer',
value: createDetachedArrayBuffer().buffer
},
];
invalidKeys.forEach(({description, value}) => {
const argument = shouldUseDictionaryArgument ? {query: value} : value;
assert_throws_dom('DataError', () => {
queryTarget[getAllFunctionName](argument);
}, `An invalid ${description} key must throw an exception.`);
});
test.done();
}, testDescription);
}

View file

@ -2,6 +2,7 @@
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'getAvailability() resolves with false if the system does ' +
'not have an adapter.';

View file

@ -2,6 +2,7 @@
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'getAvailability() resolves with true if the Bluetooth ' +
'radio is powered off, but the platform that supports Bluetooth LE.';

View file

@ -2,6 +2,7 @@
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'getAvailability() resolves with true if the Bluetooth ' +
'radio is powered on and the platform supports Bluetooth LE.';

View file

@ -2,6 +2,7 @@
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'getAvailability() resolves with false if called from a ' +
'unique origin';

View file

@ -1,11 +1,12 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'HeartRate device properties';
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {service} = await getHealthThermometerService()
const [temperature_measurement, measurement_interval] = await Promise.all([
service.getCharacteristic('temperature_measurement'),

View file

@ -0,0 +1,30 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
let fake_peripheral, characteristic, fake_characteristic;
bluetooth_bidi_test(
() =>
getMeasurementIntervalCharacteristic()
.then(
_ => (
{fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(
() => null,
(e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(
() => assert_promise_rejects_with_message(
characteristic.getDescriptor(user_description.name),
expected)),
test_desc);

View file

@ -0,0 +1,41 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
'use strict';
const test_desc = 'Calls to getDescriptor should return the same object.';
let characteristic;
bluetooth_bidi_test(
() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic} = _))
.then(() => Promise.all([
characteristic.getDescriptor(user_description.alias),
characteristic.getDescriptor(user_description.name),
characteristic.getDescriptor(user_description.uuid)
]))
.then(descriptors_arrays => {
assert_true(descriptors_arrays.length > 0)
// Convert to arrays if necessary.
for (let i = 0; i < descriptors_arrays.length; i++) {
descriptors_arrays[i] = [].concat(descriptors_arrays[i]);
}
for (let i = 1; i < descriptors_arrays.length; i++) {
assert_equals(
descriptors_arrays[0].length,
descriptors_arrays[i].length);
}
let base_set = new Set(descriptors_arrays[0]);
for (let descriptors of descriptors_arrays) {
descriptors.forEach(
descriptor => assert_true(base_set.has(descriptor)));
}
}),
test_desc);

View file

@ -0,0 +1,25 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
// TODO(https://crbug.com/672127) Use this test case to test the rest of
// characteristic functions.
'use strict';
const test_desc = 'Service is removed. Reject with InvalidStateError.';
const expected =
new DOMException('GATT Service no longer exists.', 'InvalidStateError');
let characteristic, fake_peripheral, fake_service;
bluetooth_bidi_test(
() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic, fake_peripheral, fake_service} = _))
.then(() => fake_service.remove())
.then(
() => assert_promise_rejects_with_message(
characteristic.getDescriptor(user_description.name),
expected, 'Service got removed.')),
test_desc);

View file

@ -0,0 +1,30 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
let fake_peripheral, characteristic, fake_characteristic;
bluetooth_bidi_test(
() =>
getMeasurementIntervalCharacteristic()
.then(
_ => (
{fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(
() => null,
(e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(
() => assert_promise_rejects_with_message(
characteristic.getDescriptors(user_description.name),
expected)),
test_desc);

View file

@ -0,0 +1,29 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
let fake_peripheral, characteristic, fake_characteristic;
bluetooth_bidi_test(
() =>
getMeasurementIntervalCharacteristic()
.then(
_ => (
{fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(
() => null,
(e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(
() => assert_promise_rejects_with_message(
characteristic.getDescriptors(), expected)),
test_desc);

View file

@ -0,0 +1,41 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
'use strict';
const test_desc = 'Calls to getDescriptors should return the same object.';
let characteristic;
bluetooth_bidi_test(
() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic} = _))
.then(() => Promise.all([
characteristic.getDescriptors(user_description.alias),
characteristic.getDescriptors(user_description.name),
characteristic.getDescriptors(user_description.uuid)
]))
.then(descriptors_arrays => {
assert_true(descriptors_arrays.length > 0)
// Convert to arrays if necessary.
for (let i = 0; i < descriptors_arrays.length; i++) {
descriptors_arrays[i] = [].concat(descriptors_arrays[i]);
}
for (let i = 1; i < descriptors_arrays.length; i++) {
assert_equals(
descriptors_arrays[0].length,
descriptors_arrays[i].length);
}
let base_set = new Set(descriptors_arrays[0]);
for (let descriptors of descriptors_arrays) {
descriptors.forEach(
descriptor => assert_true(base_set.has(descriptor)));
}
}),
test_desc);

View file

@ -0,0 +1,25 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
// TODO(https://crbug.com/672127) Use this test case to test the rest of
// characteristic functions.
'use strict';
const test_desc = 'Service is removed. Reject with InvalidStateError.';
const expected =
new DOMException('GATT Service no longer exists.', 'InvalidStateError');
let characteristic, fake_peripheral, fake_service;
bluetooth_bidi_test(
() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic, fake_peripheral, fake_service} = _))
.then(() => fake_service.remove())
.then(
() => assert_promise_rejects_with_message(
characteristic.getDescriptors(user_description.uuid),
expected, 'Service got removed.')),
test_desc);

View file

@ -0,0 +1,25 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
// TODO(https://crbug.com/672127) Use this test case to test the rest of
// characteristic functions.
'use strict';
const test_desc = 'Service is removed. Reject with InvalidStateError.';
const expected =
new DOMException('GATT Service no longer exists.', 'InvalidStateError');
let characteristic, fake_peripheral, fake_service;
bluetooth_bidi_test(
() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic, fake_peripheral, fake_service} = _))
.then(() => fake_service.remove())
.then(
() => assert_promise_rejects_with_message(
characteristic.getDescriptors(user_description.name),
expected, 'Service got removed.')),
test_desc);

View file

@ -1,13 +1,14 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'Characteristic is removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_characteristic} =
await getMeasurementIntervalCharacteristic();
await fake_characteristic.remove();

View file

@ -1,17 +1,17 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'Service is removed. Reject with InvalidStateError.';
const expected =
new DOMException('GATT Service no longer exists.', 'InvalidStateError');
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_peripheral, fake_service} =
await getMeasurementIntervalCharacteristic();
await fake_service.remove();
await fake_peripheral.simulateGATTServicesChanged();
await assert_promise_rejects_with_message(
characteristic.startNotifications(), expected, 'Service got removed.');
}, test_desc);

View file

@ -1,11 +1,12 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'Add multiple event listeners then readValue().';
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_characteristic} =
await getMeasurementIntervalCharacteristic();
await fake_characteristic.setNextReadResponse(GATT_SUCCESS, [0, 1, 2]);

View file

@ -1,17 +1,17 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_characteristic} =
await getMeasurementIntervalCharacteristic();
await fake_characteristic.remove();
await assert_promise_rejects_with_message(
characteristic.writeValue(new ArrayBuffer(1 /* length */)), expected,
'Characteristic got removed.');
characteristic.readValue(), expected, 'Characteristic got removed.');
}, test_desc);

View file

@ -1,11 +1,12 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'Reading a characteristic should fire an event.';
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_characteristic} =
await getMeasurementIntervalCharacteristic();
await fake_characteristic.setNextReadResponse(GATT_SUCCESS, [0, 1, 2]);

View file

@ -0,0 +1,29 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
let fake_peripheral, characteristic, fake_characteristic;
bluetooth_bidi_test(
() =>
getMeasurementIntervalCharacteristic()
.then(
_ => (
{fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(
() => null,
(e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(
() => assert_promise_rejects_with_message(
characteristic.readValue(), expected)),
test_desc);

View file

@ -1,13 +1,14 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'A read request succeeds and returns the characteristic\'s ' +
'value.';
const EXPECTED_VALUE = [0, 1, 2];
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_characteristic} =
await getMeasurementIntervalCharacteristic();
await fake_characteristic.setNextReadResponse(GATT_SUCCESS, EXPECTED_VALUE);

View file

@ -1,11 +1,12 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
const test_desc = 'Succesful read should update characteristic.value';
const EXPECTED_VALUE = [0, 1, 2];
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_characteristic} =
await getMeasurementIntervalCharacteristic();
assert_equals(characteristic.value, null);

View file

@ -1,17 +1,17 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'Service gets removed. Reject with InvalidStateError.';
const expected =
new DOMException('GATT Service no longer exists.', 'InvalidStateError');
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_peripheral, fake_service} =
await getMeasurementIntervalCharacteristic();
await fake_service.remove();
await fake_peripheral.simulateGATTServicesChanged();
await assert_promise_rejects_with_message(
characteristic.readValue(), expected, 'Service got removed.')
}, test_desc);

View file

@ -1,11 +1,12 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'Same parent service returned from multiple characteristics.';
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {service} = await getHealthThermometerService();
const characteristics = await Promise.all([
service.getCharacteristic('measurement_interval'),

View file

@ -1,12 +1,13 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = '[SameObject] test for BluetoothRemoteGATTCharacteristic ' +
'service.';
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic} = await getMeasurementIntervalCharacteristic();
assert_equals(characteristic.service, characteristic.service);
}, test_desc);

View file

@ -0,0 +1,29 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
let fake_peripheral, characteristic, fake_characteristic;
bluetooth_bidi_test(
() =>
getMeasurementIntervalCharacteristic()
.then(
_ => (
{fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(
() => null,
(e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(
() => assert_promise_rejects_with_message(
characteristic.startNotifications(), expected)),
test_desc);

View file

@ -0,0 +1,29 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
let fake_peripheral, characteristic, fake_characteristic;
bluetooth_bidi_test(
() =>
getMeasurementIntervalCharacteristic()
.then(
_ => (
{fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(
() => null,
(e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(
() => assert_promise_rejects_with_message(
characteristic.writeValue(new Uint8Array(1)), expected)),
test_desc);

View file

@ -1,13 +1,14 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_characteristic} =
await getMeasurementIntervalCharacteristic();
await fake_characteristic.remove();

View file

@ -0,0 +1,30 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
let fake_peripheral, characteristic, fake_characteristic;
bluetooth_bidi_test(
() =>
getMeasurementIntervalCharacteristic()
.then(
_ => (
{fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(
() => null,
(e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(
() => assert_promise_rejects_with_message(
characteristic.writeValueWithResponse(new Uint8Array(1)),
expected)),
test_desc);

View file

@ -1,17 +1,17 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'Service gets removed. Reject with InvalidStateError.';
const expected =
new DOMException('GATT Service no longer exists.', 'InvalidStateError');
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_peripheral, fake_service} =
await getMeasurementIntervalCharacteristic();
await fake_service.remove();
await fake_peripheral.simulateGATTServicesChanged();
await assert_promise_rejects_with_message(
characteristic.writeValueWithResponse(new ArrayBuffer(1 /* length */)),
expected, 'Service got removed.');

View file

@ -1,12 +1,13 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'A regular write request to a writable characteristic ' +
'should succeed.';
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_characteristic} =
await getMeasurementIntervalCharacteristic();
@ -19,29 +20,29 @@ bluetooth_test(async () => {
await fake_characteristic.setNextWriteResponse(GATT_SUCCESS);
const typed_array = Uint8Array.of(1, 2);
await characteristic.writeValue(typed_array);
await characteristic.writeValueWithResponse(typed_array);
({lastValue, lastWriteType} =
await fake_characteristic.getLastWrittenValue());
assert_array_equals(lastValue, [1, 2]);
assert_equals(lastWriteType, 'default-deprecated');
assert_equals(lastWriteType, 'write-with-response');
await fake_characteristic.setNextWriteResponse(GATT_SUCCESS);
const array_buffer = Uint8Array.of(3, 4).buffer;
await characteristic.writeValue(array_buffer);
await characteristic.writeValueWithResponse(array_buffer);
({lastValue, lastWriteType} =
await fake_characteristic.getLastWrittenValue());
assert_array_equals(lastValue, [3, 4]);
assert_equals(lastWriteType, 'default-deprecated');
assert_equals(lastWriteType, 'write-with-response');
await fake_characteristic.setNextWriteResponse(GATT_SUCCESS);
const data_view = new DataView(new ArrayBuffer(2));
data_view.setUint8(0, 5);
data_view.setUint8(1, 6);
await characteristic.writeValue(data_view);
await characteristic.writeValueWithResponse(data_view);
({lastValue, lastWriteType} =
await fake_characteristic.getLastWrittenValue());
assert_array_equals(lastValue, [5, 6]);
assert_equals(lastWriteType, 'default-deprecated');
assert_equals(lastWriteType, 'write-with-response');
}, test_desc);

View file

@ -1,13 +1,14 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
bluetooth_test(async () => {
bluetooth_bidi_test(async () => {
const {characteristic, fake_characteristic} =
await getMeasurementIntervalCharacteristic();
await fake_characteristic.remove();

View file

@ -0,0 +1,30 @@
// META: script=/resources/testdriver.js?feature=bidi
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// META: timeout=long
// Generated by
// //bluetooth/bidi/generate.py
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
let fake_peripheral, characteristic, fake_characteristic;
bluetooth_bidi_test(
() =>
getMeasurementIntervalCharacteristic()
.then(
_ => (
{fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(
() => null,
(e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(
() => assert_promise_rejects_with_message(
characteristic.writeValueWithoutResponse(new Uint8Array(1)),
expected)),
test_desc);

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