mirror of
https://github.com/servo/servo.git
synced 2025-10-04 02:29:12 +01:00
Update web-platform-tests to revision 9614def367ae8af8247142c34b00f755863d2fbb
This commit is contained in:
parent
6cb39fad47
commit
968ce5b5b3
48 changed files with 919 additions and 130 deletions
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-delay with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-delay">
|
||||
<meta name="assert" content="animation-delay supports only the grammar '<single-animation-play-state> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("animation-delay", "infinite");
|
||||
test_invalid_value("animation-delay", "0");
|
||||
test_invalid_value("animation-delay", "1s 2s");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-delay with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-delay">
|
||||
<meta name="assert" content="animation-delay supports the full grammar '<single-animation-play-state> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("animation-delay", "-5ms");
|
||||
test_valid_value("animation-delay", "0s");
|
||||
test_valid_value("animation-delay", "10s");
|
||||
test_valid_value("animation-delay", "20s, 10s");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-direction with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-direction">
|
||||
<meta name="assert" content="animation-direction supports only the grammar '<single-animation-direction> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("animation-direction", "auto");
|
||||
test_invalid_value("animation-direction", "normal reverse");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-direction with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-direction">
|
||||
<meta name="assert" content="animation-direction supports the full grammar '<single-animation-direction> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("animation-direction", "normal");
|
||||
test_valid_value("animation-direction", "reverse");
|
||||
test_valid_value("animation-direction", "alternate");
|
||||
test_valid_value("animation-direction", "alternate-reverse");
|
||||
test_valid_value("animation-direction", "normal, reverse, alternate, alternate-reverse");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-duration with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-duration">
|
||||
<meta name="assert" content="animation-duration supports only the grammar '<time> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("animation-duration", '-3s');
|
||||
test_invalid_value("animation-duration", '0');
|
||||
test_invalid_value("animation-duration", 'infinite');
|
||||
test_invalid_value("animation-duration", '1s 2s');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-duration with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-duration">
|
||||
<meta name="assert" content="animation-duration supports the full grammar '<time> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("animation-duration", '3s');
|
||||
test_valid_value("animation-duration", '500ms');
|
||||
test_valid_value("animation-duration", '1s, 2s, 3s');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-fill-mode with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-fill-mode">
|
||||
<meta name="assert" content="animation-fill-mode supports only the grammar '<single-animation-fill-mode> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("animation-fill-mode", "auto");
|
||||
test_invalid_value("animation-fill-mode", "forwards backwards");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-fill-mode with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-fill-mode">
|
||||
<meta name="assert" content="animation-fill-mode supports the full grammar '<single-animation-fill-mode> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("animation-fill-mode", "none");
|
||||
test_valid_value("animation-fill-mode", "forwards");
|
||||
test_valid_value("animation-fill-mode", "backwards");
|
||||
test_valid_value("animation-fill-mode", "both");
|
||||
test_valid_value("animation-fill-mode", "none, forwards, backwards, both");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-iteration-count with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-iteration-count">
|
||||
<meta name="assert" content="animation-iteration-count supports only the grammar '<single-animation-iteration-count> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("animation-iteration-count", "auto");
|
||||
test_invalid_value("animation-iteration-count", "-2");
|
||||
test_invalid_value("animation-iteration-count", "3 4");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-iteration-count with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-iteration-count">
|
||||
<meta name="assert" content="animation-iteration-count supports the full grammar '<single-animation-iteration-count> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("animation-iteration-count", "0");
|
||||
test_valid_value("animation-iteration-count", "3");
|
||||
test_valid_value("animation-iteration-count", "4.5");
|
||||
test_valid_value("animation-iteration-count", "infinite");
|
||||
|
||||
test_valid_value("animation-iteration-count", "0, infinite, 3");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-name with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-name">
|
||||
<meta name="assert" content="animation-name supports only the grammar '[ none | <keyframes-name> ]#'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("animation-name", '12');
|
||||
test_invalid_value("animation-name", 'one two');
|
||||
|
||||
test_invalid_value("animation-name", 'one, initial');
|
||||
test_invalid_value("animation-name", 'one, inherit');
|
||||
test_invalid_value("animation-name", 'one, unset');
|
||||
test_invalid_value("animation-name", 'default, two');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-name with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-name">
|
||||
<meta name="assert" content="animation-name supports the full grammar '[ none | <keyframes-name> ]#'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("animation-name", 'NONE', 'none');
|
||||
|
||||
test_valid_value("animation-name", 'foo');
|
||||
test_valid_value("animation-name", 'Both');
|
||||
test_valid_value("animation-name", 'ease-in');
|
||||
test_valid_value("animation-name", 'infinite');
|
||||
test_valid_value("animation-name", 'paused');
|
||||
test_valid_value("animation-name", 'first, second, third');
|
||||
|
||||
test_valid_value("animation-name", '"string"');
|
||||
test_valid_value("animation-name", '"multi word string"');
|
||||
test_valid_value("animation-name", '"initial"');
|
||||
test_valid_value("animation-name", '"---\\22---"', '\"---\\\"---\"');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-play-state with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-play-state">
|
||||
<meta name="assert" content="animation-play-state supports only the grammar '<single-animation-play-state> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("animation-play-state", "auto");
|
||||
test_invalid_value("animation-play-state", "paused running");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-play-state with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-play-state">
|
||||
<meta name="assert" content="animation-play-state supports the full grammar '<single-animation-play-state> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("animation-play-state", "running");
|
||||
test_valid_value("animation-play-state", "paused");
|
||||
test_valid_value("animation-play-state", "running, paused");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-timing-function with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-timing-function">
|
||||
<meta name="assert" content="animation-timing-function supports only the grammar '<timing-function> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("animation-timing-function", "auto");
|
||||
test_invalid_value("animation-timing-function", "ease-in ease-out");
|
||||
test_invalid_value("animation-timing-function", "cubic-bezier(1, 2, 3)");
|
||||
test_invalid_value("animation-timing-function", "cubic-bezier(1, 2, 3, infinite)");
|
||||
test_invalid_value("animation-timing-function", "cubic-bezier(1, 2, 3, 4, 5)");
|
||||
test_invalid_value("animation-timing-function", "cubic-bezier(-0.1, 0.1, 0.5, 0.9)");
|
||||
test_invalid_value("animation-timing-function", "cubic-bezier(0.5, 0.1, 1.1, 0.9)");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,31 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing animation-timing-function with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation-timing-function">
|
||||
<meta name="assert" content="animation-timing-function supports the full grammar '<timing-function> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("animation-timing-function", "linear");
|
||||
|
||||
test_valid_value("animation-timing-function", "ease");
|
||||
test_valid_value("animation-timing-function", "ease-in");
|
||||
test_valid_value("animation-timing-function", "ease-out");
|
||||
test_valid_value("animation-timing-function", "ease-in-out");
|
||||
test_valid_value("animation-timing-function", "cubic-bezier(0.1, 0.2, 0.8, 0.9)");
|
||||
test_valid_value("animation-timing-function", "cubic-bezier(0, -2, 1, 3)");
|
||||
test_valid_value("animation-timing-function", "cubic-bezier(0, 0.7, 1, 1.3)");
|
||||
|
||||
|
||||
test_valid_value("animation-timing-function", "steps(4, start)");
|
||||
test_valid_value("animation-timing-function", "steps(2, end)");
|
||||
|
||||
test_valid_value("animation-timing-function", "linear, ease, linear");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -26,8 +26,3 @@
|
|||
</style>
|
||||
<p>The test passes if there is a green square and no red below.</p>
|
||||
<div id="back"></div><div id="front"></div>
|
||||
<svg>
|
||||
<!-- mask-image doesn't block onload, so we use an empty g here to
|
||||
force mask.svg to load before onload. -->
|
||||
<use href="support/mask.svg#empty"/>
|
||||
</svg>
|
||||
|
|
|
@ -2,5 +2,4 @@
|
|||
<mask id="mask">
|
||||
<rect x="50" y="50" width="100" height="100" fill="white"/>
|
||||
</mask>
|
||||
<g id="empty"/>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 181 B After Width: | Height: | Size: 163 B |
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transitions: parsing transition-delay with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transitions/#propdef-transition-delay">
|
||||
<meta name="assert" content="transition-delay supports only the grammar '<time> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("transition-delay", 'infinite');
|
||||
test_invalid_value("transition-delay", '0');
|
||||
test_invalid_value("transition-delay", '500ms 0.5s');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transitions: parsing transition-delay with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transitions/#propdef-transition-delay">
|
||||
<meta name="assert" content="transition-delay supports the full grammar '<time> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("transition-delay", '0s');
|
||||
test_valid_value("transition-delay", '500ms');
|
||||
test_valid_value("transition-delay", '1s, 2s');
|
||||
test_valid_value("transition-delay", '-1s, -2s');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transitions: parsing transition-duration with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transitions/#propdef-transition-duration">
|
||||
<meta name="assert" content="transition-duration supports only the grammar '<time> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("transition-duration", 'infinite');
|
||||
test_invalid_value("transition-duration", '-500ms');
|
||||
test_invalid_value("transition-duration", '1s 2s');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transitions: parsing transition-duration with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transitions/#propdef-transition-duration">
|
||||
<meta name="assert" content="transition-duration supports the full grammar '<time> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("transition-duration", '0s');
|
||||
test_valid_value("transition-duration", '500ms');
|
||||
test_valid_value("transition-duration", '1s, 2s');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transitions: parsing transition-property with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transitions/#propdef-transition-property">
|
||||
<meta name="assert" content="transition-property supports only the grammar 'none | <single-transition-property> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("transition-property", 'one two three');
|
||||
test_invalid_value("transition-property", '1, 2, 3');
|
||||
test_invalid_value("transition-property", 'none, one');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transitions: parsing transition-property with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transitions/#propdef-transition-property">
|
||||
<meta name="assert" content="transition-property supports the full grammar 'none | <single-transition-property> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("transition-property", 'none');
|
||||
test_valid_value("transition-property", 'all');
|
||||
test_valid_value("transition-property", 'one');
|
||||
test_valid_value("transition-property", 'one-two-three');
|
||||
test_valid_value("transition-property", 'one, two, three');
|
||||
test_valid_value("transition-property", 'width, all');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Animations: parsing transition-timing-function with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transitions/#propdef-transition-timing-function">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-timing-1/#typedef-timing-function">
|
||||
<meta name="assert" content="transition-timing-function supports only the grammar '<timing-function> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("transition-timing-function", "auto");
|
||||
test_invalid_value("transition-timing-function", "ease-in ease-out");
|
||||
test_invalid_value("transition-timing-function", "cubic-bezier(1, 2, 3)");
|
||||
test_invalid_value("transition-timing-function", "cubic-bezier(1, 2, 3, infinite)");
|
||||
test_invalid_value("transition-timing-function", "cubic-bezier(1, 2, 3, 4, 5)");
|
||||
test_invalid_value("transition-timing-function", "cubic-bezier(-0.1, 0.1, 0.5, 0.9)");
|
||||
test_invalid_value("transition-timing-function", "cubic-bezier(0.5, 0.1, 1.1, 0.9)");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,31 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transitions: parsing transition-timing-function with valid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transitions/#propdef-transition-timing-function">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-timing-1/#typedef-timing-function">
|
||||
<meta name="assert" content="transition-timing-function supports the full grammar '<timing-function> #'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_valid_value("transition-timing-function", "linear");
|
||||
|
||||
test_valid_value("transition-timing-function", "ease");
|
||||
test_valid_value("transition-timing-function", "ease-in");
|
||||
test_valid_value("transition-timing-function", "ease-out");
|
||||
test_valid_value("transition-timing-function", "ease-in-out");
|
||||
test_valid_value("transition-timing-function", "cubic-bezier(0.1, 0.2, 0.8, 0.9)");
|
||||
test_valid_value("transition-timing-function", "cubic-bezier(0, -2, 1, 3)");
|
||||
test_valid_value("transition-timing-function", "cubic-bezier(0, 0.7, 1, 1.3)");
|
||||
|
||||
test_valid_value("transition-timing-function", "steps(4, start)");
|
||||
test_valid_value("transition-timing-function", "steps(2, end)");
|
||||
|
||||
test_valid_value("transition-timing-function", "linear, ease, linear");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -37,8 +37,9 @@ interface BackgroundFetchRegistration : EventTarget {
|
|||
readonly attribute unsigned long long uploaded;
|
||||
readonly attribute unsigned long long downloadTotal;
|
||||
readonly attribute unsigned long long downloaded;
|
||||
readonly attribute BackgroundFetchState state;
|
||||
readonly attribute BackgroundFetchResult result;
|
||||
readonly attribute BackgroundFetchFailureReason failureReason;
|
||||
readonly attribute boolean recordsAvailable;
|
||||
|
||||
attribute EventHandler onprogress;
|
||||
|
||||
|
@ -47,9 +48,10 @@ interface BackgroundFetchRegistration : EventTarget {
|
|||
Promise<sequence<BackgroundFetchRecord>> matchAll(optional RequestInfo request, optional CacheQueryOptions options);
|
||||
};
|
||||
|
||||
enum BackgroundFetchState { "pending", "success", "failure" };
|
||||
enum BackgroundFetchResult { "", "success", "failure" };
|
||||
|
||||
enum BackgroundFetchFailureReason {
|
||||
// The background fetch has not completed yet, or was successful.
|
||||
"",
|
||||
// The operation was aborted by the user, or abort() was called.
|
||||
"aborted",
|
||||
|
@ -61,7 +63,7 @@ enum BackgroundFetchFailureReason {
|
|||
// Storage quota was reached during the operation.
|
||||
"quota-exceeded",
|
||||
// The provided downloadTotal was exceeded.
|
||||
"total-download-exceeded"
|
||||
"download-total-exceeded"
|
||||
};
|
||||
|
||||
[Exposed=(Window,Worker)]
|
||||
|
|
|
@ -1,48 +1,31 @@
|
|||
// https://github.com/WICG/cookie-store/blob/gh-pages/explainer.md
|
||||
// GENERATED CONTENT - DO NOT EDIT
|
||||
// Content was automatically extracted by Reffy into reffy-reports
|
||||
// (https://github.com/tidoust/reffy-reports)
|
||||
// Source: Cookie Store API (https://wicg.github.io/cookie-store/)
|
||||
|
||||
enum CookieSameSite {
|
||||
"strict",
|
||||
"lax",
|
||||
"unrestricted"
|
||||
};
|
||||
[Exposed=(ServiceWorker,Window),
|
||||
SecureContext]
|
||||
interface CookieStore : EventTarget {
|
||||
Promise<CookieListItem?> get(USVString name);
|
||||
Promise<CookieListItem?> get(optional CookieStoreGetOptions options);
|
||||
|
||||
dictionary CookieListItem {
|
||||
required USVString name;
|
||||
USVString value;
|
||||
USVString? domain = null;
|
||||
USVString path = "/";
|
||||
DOMTimeStamp? expires = null;
|
||||
boolean secure = true;
|
||||
CookieSameSite sameSite = "strict";
|
||||
};
|
||||
Promise<CookieList> getAll(USVString name);
|
||||
Promise<CookieList> getAll(optional CookieStoreGetOptions options);
|
||||
|
||||
typedef sequence<CookieListItem> CookieList;
|
||||
Promise<void> set(USVString name, USVString value,
|
||||
optional CookieStoreSetOptions options);
|
||||
Promise<void> set(CookieStoreSetExtraOptions options);
|
||||
|
||||
dictionary CookieChangeEventInit : EventInit {
|
||||
CookieList changed;
|
||||
CookieList deleted;
|
||||
};
|
||||
Promise<void> delete(USVString name);
|
||||
Promise<void> delete(CookieStoreDeleteOptions options);
|
||||
|
||||
[
|
||||
Exposed=Window,
|
||||
SecureContext,
|
||||
Constructor(DOMString type, optional CookieChangeEventInit eventInitDict)
|
||||
] interface CookieChangeEvent : Event {
|
||||
readonly attribute CookieList changed;
|
||||
readonly attribute CookieList deleted;
|
||||
};
|
||||
[Exposed=ServiceWorker]
|
||||
Promise<void> subscribeToChanges(sequence<CookieStoreGetOptions> subscriptions);
|
||||
|
||||
dictionary ExtendableCookieChangeEventInit : ExtendableEventInit {
|
||||
CookieList changed;
|
||||
CookieList deleted;
|
||||
};
|
||||
[Exposed=ServiceWorker]
|
||||
Promise<sequence<CookieStoreGetOptions>> getChangeSubscriptions();
|
||||
|
||||
[
|
||||
Exposed=ServiceWorker,
|
||||
Constructor(DOMString type, optional ExtendableCookieChangeEventInit eventInitDict)
|
||||
] interface ExtendableCookieChangeEvent : ExtendableEvent {
|
||||
readonly attribute CookieList changed;
|
||||
readonly attribute CookieList deleted;
|
||||
attribute EventHandler onchange;
|
||||
};
|
||||
|
||||
enum CookieMatchType {
|
||||
|
@ -50,20 +33,18 @@ enum CookieMatchType {
|
|||
"starts-with"
|
||||
};
|
||||
|
||||
dictionary CookieStoreDeleteOptions {
|
||||
required USVString name;
|
||||
USVString? domain = null;
|
||||
USVString path = "/";
|
||||
boolean secure = true;
|
||||
CookieSameSite sameSite = "strict";
|
||||
};
|
||||
|
||||
dictionary CookieStoreGetOptions {
|
||||
USVString name;
|
||||
USVString url;
|
||||
CookieMatchType matchType = "equals";
|
||||
};
|
||||
|
||||
enum CookieSameSite {
|
||||
"strict",
|
||||
"lax",
|
||||
"unrestricted"
|
||||
};
|
||||
|
||||
dictionary CookieStoreSetOptions {
|
||||
DOMTimeStamp? expires = null;
|
||||
USVString? domain = null;
|
||||
|
@ -77,27 +58,35 @@ dictionary CookieStoreSetExtraOptions : CookieStoreSetOptions {
|
|||
required USVString value;
|
||||
};
|
||||
|
||||
[
|
||||
Exposed=(ServiceWorker,Window),
|
||||
SecureContext
|
||||
] interface CookieStore : EventTarget {
|
||||
Promise<CookieListItem?> get(USVString name);
|
||||
Promise<CookieListItem?> get(optional CookieStoreGetOptions options);
|
||||
dictionary CookieStoreDeleteOptions {
|
||||
required USVString name;
|
||||
USVString? domain = null;
|
||||
USVString path = "/";
|
||||
};
|
||||
|
||||
Promise<CookieList> getAll(USVString name);
|
||||
Promise<CookieList> getAll(optional CookieStoreGetOptions options);
|
||||
dictionary CookieListItem {
|
||||
required USVString name;
|
||||
USVString value;
|
||||
USVString? domain = null;
|
||||
USVString path = "/";
|
||||
DOMTimeStamp? expires = null;
|
||||
boolean secure = true;
|
||||
CookieSameSite sameSite = "strict";
|
||||
};
|
||||
|
||||
Promise<void> set(USVString name, USVString value, optional CookieStoreSetOptions options);
|
||||
Promise<void> set(CookieStoreSetExtraOptions options);
|
||||
typedef sequence<CookieListItem> CookieList;
|
||||
|
||||
Promise<void> delete(USVString name);
|
||||
Promise<void> delete(CookieStoreDeleteOptions options);
|
||||
[Exposed=(ServiceWorker,Window),
|
||||
SecureContext,
|
||||
Constructor(DOMString type, optional CookieChangeEventInit eventInitDict)]
|
||||
interface CookieChangeEvent : Event {
|
||||
readonly attribute CookieList changed;
|
||||
readonly attribute CookieList deleted;
|
||||
};
|
||||
|
||||
[Exposed=ServiceWorker] Promise<void> subscribeToChanges(sequence<CookieStoreGetOptions> subscriptions);
|
||||
|
||||
[Exposed=ServiceWorker] Promise<sequence<CookieStoreGetOptions>> getChangeSubscriptions();
|
||||
|
||||
[Exposed=Window] attribute EventHandler onchange;
|
||||
dictionary CookieChangeEventInit : EventInit {
|
||||
CookieList changed;
|
||||
CookieList deleted;
|
||||
};
|
||||
|
||||
[SecureContext]
|
||||
|
@ -107,5 +96,6 @@ partial interface Window {
|
|||
|
||||
partial interface ServiceWorkerGlobalScope {
|
||||
[Replaceable, SameObject] readonly attribute CookieStore cookieStore;
|
||||
|
||||
attribute EventHandler oncookiechange;
|
||||
};
|
||||
|
|
|
@ -20,7 +20,7 @@ interface IntersectionObserver {
|
|||
[Constructor(IntersectionObserverEntryInit intersectionObserverEntryInit)]
|
||||
interface IntersectionObserverEntry {
|
||||
readonly attribute DOMHighResTimeStamp time;
|
||||
readonly attribute DOMRectReadOnly rootBounds;
|
||||
readonly attribute DOMRectReadOnly? rootBounds;
|
||||
readonly attribute DOMRectReadOnly boundingClientRect;
|
||||
readonly attribute DOMRectReadOnly intersectionRect;
|
||||
readonly attribute boolean isIntersecting;
|
||||
|
@ -30,7 +30,7 @@ interface IntersectionObserverEntry {
|
|||
|
||||
dictionary IntersectionObserverEntryInit {
|
||||
required DOMHighResTimeStamp time;
|
||||
required DOMRectInit rootBounds;
|
||||
required DOMRectInit? rootBounds;
|
||||
required DOMRectInit boundingClientRect;
|
||||
required DOMRectInit intersectionRect;
|
||||
required boolean isIntersecting;
|
||||
|
|
|
@ -46,7 +46,6 @@ interface CanMakePaymentEvent : ExtendableEvent {
|
|||
readonly attribute USVString topOrigin;
|
||||
readonly attribute USVString paymentRequestOrigin;
|
||||
readonly attribute FrozenArray<PaymentMethodData> methodData;
|
||||
readonly attribute FrozenArray<PaymentDetailsModifier> modifiers;
|
||||
void respondWith(Promise<boolean> canMakePaymentResponse);
|
||||
};
|
||||
|
||||
|
@ -54,7 +53,6 @@ dictionary CanMakePaymentEventInit : ExtendableEventInit {
|
|||
USVString topOrigin;
|
||||
USVString paymentRequestOrigin;
|
||||
sequence<PaymentMethodData> methodData;
|
||||
sequence<PaymentDetailsModifier> modifiers;
|
||||
};
|
||||
|
||||
partial interface ServiceWorkerGlobalScope {
|
||||
|
|
|
@ -197,8 +197,8 @@ interface PaymentMethodChangeEvent : PaymentRequestUpdateEvent {
|
|||
};
|
||||
|
||||
dictionary PaymentMethodChangeEventInit : PaymentRequestUpdateEventInit {
|
||||
required DOMString methodName;
|
||||
object? methodDetails;
|
||||
DOMString methodName = "";
|
||||
object? methodDetails = null;
|
||||
};
|
||||
|
||||
[Constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict), SecureContext, Exposed=Window]
|
||||
|
|
|
@ -41,7 +41,6 @@ partial interface GlobalEventHandlers {
|
|||
attribute EventHandler onlostpointercapture;
|
||||
attribute EventHandler onpointerdown;
|
||||
attribute EventHandler onpointermove;
|
||||
[RuntimeEnabled=PointerRawMove] attribute EventHandler onpointerrawmove;
|
||||
attribute EventHandler onpointerup;
|
||||
attribute EventHandler onpointercancel;
|
||||
attribute EventHandler onpointerover;
|
||||
|
|
|
@ -41,9 +41,9 @@ dictionary ModuleImportDescriptor {
|
|||
|
||||
[LegacyNamespace=WebAssembly, Constructor(BufferSource bytes), Exposed=(Window,Worker,Worklet)]
|
||||
interface Module {
|
||||
static sequence<ModuleExportDescriptor> exports(Module module);
|
||||
static sequence<ModuleImportDescriptor> imports(Module module);
|
||||
static sequence<ArrayBuffer> customSections(Module module, USVString sectionName);
|
||||
static sequence<ModuleExportDescriptor> exports(Module moduleObject);
|
||||
static sequence<ModuleImportDescriptor> imports(Module moduleObject);
|
||||
static sequence<ArrayBuffer> customSections(Module moduleObject, USVString sectionName);
|
||||
};
|
||||
|
||||
[LegacyNamespace=WebAssembly, Constructor(Module module, optional object importObject), Exposed=(Window,Worker,Worklet)]
|
||||
|
@ -87,7 +87,7 @@ dictionary GlobalDescriptor {
|
|||
boolean mutable = false;
|
||||
};
|
||||
|
||||
[LegacyNamespace=WebAssembly, Constructor(GlobalDescriptor descriptor, optional any value), Exposed=(Window,Worker,Worklet)]
|
||||
[LegacyNamespace=WebAssembly, Constructor(GlobalDescriptor descriptor, optional any v), Exposed=(Window,Worker,Worklet)]
|
||||
interface Global {
|
||||
any valueOf();
|
||||
attribute any value;
|
||||
|
|
8
tests/wpt/web-platform-tests/interfaces/webrtc-dscp.idl
Normal file
8
tests/wpt/web-platform-tests/interfaces/webrtc-dscp.idl
Normal file
|
@ -0,0 +1,8 @@
|
|||
// GENERATED CONTENT - DO NOT EDIT
|
||||
// Content was automatically extracted by Reffy into reffy-reports
|
||||
// (https://github.com/tidoust/reffy-reports)
|
||||
// Source: DSCP Control API (https://w3c.github.io/webrtc-dscp-exp/)
|
||||
|
||||
partial dictionary RTCRtpEncodingParameters {
|
||||
RTCPriorityType networkPriority; // Note: No default
|
||||
};
|
|
@ -54,7 +54,7 @@ function testComposedEvent(mode) {
|
|||
|
||||
var expectedPath = ['A1a', 'A1-SR', 'A1', 'A-SR', 'A'];
|
||||
assert_array_equals(log.eventPath, expectedPath);
|
||||
assert_array_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_array_equals(log.pathAtTargets[0], expectedPath);
|
||||
assert_array_equals(log.pathAtTargets[1], expectedPath);
|
||||
assert_array_equals(log.pathAtTargets[2], mode == 'open' ? expectedPath : ['A1', 'A-SR', 'A'],
|
||||
|
@ -82,7 +82,7 @@ function testNonComposedEvent(mode) {
|
|||
|
||||
var expectedPath = ['A1a', 'A1-SR'];
|
||||
assert_array_equals(log.eventPath, expectedPath);
|
||||
assert_array_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_array_equals(log.pathAtTargets[0], expectedPath);
|
||||
assert_array_equals(log.pathAtTargets[1], expectedPath);
|
||||
}, 'The event must not propagate out of ' + mode + ' mode shadow boundaries when the composed flag is unset');
|
||||
|
@ -108,7 +108,7 @@ function testNonComposedEventWithRelatedTarget(mode) {
|
|||
|
||||
var expectedPath = ['A1a', 'A1-SR'];
|
||||
assert_array_equals(log.eventPath, expectedPath);
|
||||
assert_array_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_array_equals(log.pathAtTargets[0], expectedPath);
|
||||
assert_array_equals(log.pathAtTargets[1], expectedPath);
|
||||
assert_array_equals(log.relatedTargets, ['A2-S', 'A2-S']);
|
||||
|
@ -136,7 +136,7 @@ function testScopedEventWithUnscopedRelatedTargetThroughSlot(mode) {
|
|||
var expectedPath = ['B1a', 'B1c-S', 'B1-SR', 'B1', 'B-SR'];
|
||||
var pathExposedToB1a = ['B1a', 'B1', 'B-SR'];
|
||||
assert_array_equals(log.eventPath, expectedPath);
|
||||
assert_array_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_array_equals(log.pathAtTargets[0], mode == 'open' ? expectedPath : pathExposedToB1a);
|
||||
assert_array_equals(log.pathAtTargets[1], expectedPath);
|
||||
assert_array_equals(log.pathAtTargets[2], expectedPath);
|
||||
|
@ -167,7 +167,7 @@ function testComposedEventWithRelatedTarget(mode) {
|
|||
var expectedPath = ['A1a', 'A1-SR', 'A1', 'A-SR'];
|
||||
var pathExposedToA1 = ['A1', 'A-SR'];
|
||||
assert_array_equals(log.eventPath, expectedPath);
|
||||
assert_array_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_array_equals(log.pathAtTargets[0], expectedPath);
|
||||
assert_array_equals(log.pathAtTargets[1], expectedPath);
|
||||
assert_array_equals(log.pathAtTargets[2], mode == 'open' ? expectedPath : pathExposedToA1);
|
||||
|
@ -202,7 +202,7 @@ function testComposedEventThroughSlot(mode) {
|
|||
var pathExposedToA1 = [ 'B', 'A2-S', 'A-SR', 'A'];
|
||||
|
||||
assert_array_equals(log.eventPath, expectedPath);
|
||||
assert_array_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_equals(log.eventPath.length, log.pathAtTargets.length);
|
||||
assert_array_equals(log.pathAtTargets[0], mode == 'open' ? expectedPath : pathExposedToB1a);
|
||||
assert_array_equals(log.pathAtTargets[1], mode == 'open' ? expectedPath : pathExposedToB1cS);
|
||||
assert_array_equals(log.pathAtTargets[2], mode == 'open' ? expectedPath : pathExposedToB1cS);
|
||||
|
|
|
@ -85,12 +85,12 @@ test(function() {
|
|||
assert_equals(doc.querySelectorAll('.bar').length, 1);
|
||||
assert_equals(doc.getElementsByClassName('bar')[0].getAttribute('label'), 'doc-div');
|
||||
|
||||
assert_array_equals(hostOpen.querySelectorAll('.bar').length, 0);
|
||||
assert_equals(hostOpen.querySelectorAll('.bar').length, 0);
|
||||
|
||||
assert_equals(shadowOpen.querySelectorAll('.bar').length, 1);
|
||||
assert_equals(shadowOpen.querySelectorAll('.bar')[0].getAttribute('label'), 'shadow-open-div');
|
||||
|
||||
assert_array_equals(hostClosed.querySelectorAll('.bar').length, 0);
|
||||
assert_equals(hostClosed.querySelectorAll('.bar').length, 0);
|
||||
|
||||
assert_equals(shadowClosed.querySelectorAll('.bar').length, 1);
|
||||
assert_equals(shadowClosed.querySelectorAll('.bar')[0].getAttribute('label'), 'shadow-closed-div');
|
||||
|
@ -106,11 +106,11 @@ test(function() {
|
|||
|
||||
assert_equals(doc.querySelectorAll('[name=baz]').length, 1);
|
||||
|
||||
assert_array_equals(hostOpen.querySelectorAll('[name=baz]').length, 0);
|
||||
assert_equals(hostOpen.querySelectorAll('[name=baz]').length, 0);
|
||||
assert_equals(shadowOpen.querySelectorAll('[name=baz]').length, 1);
|
||||
assert_equals(shadowOpen.querySelectorAll('[name=baz]')[0].getAttribute('label'), 'shadow-open-form');
|
||||
|
||||
assert_array_equals(hostClosed.querySelectorAll('[name=baz]').length, 0);
|
||||
assert_equals(hostClosed.querySelectorAll('[name=baz]').length, 0);
|
||||
assert_equals(shadowClosed.querySelectorAll('[name=baz]').length, 1);
|
||||
assert_equals(shadowClosed.querySelectorAll('[name=baz]')[0].getAttribute('label'), 'shadow-closed-form');
|
||||
}, 'getElementsByName() should not leak nodes in shadow tree');
|
||||
|
@ -126,12 +126,12 @@ test(function() {
|
|||
assert_equals(doc.querySelectorAll('my-element').length, 1);
|
||||
assert_equals(doc.getElementsByTagName('my-element')[0].getAttribute('label'), 'doc-my-element');
|
||||
|
||||
assert_array_equals(hostOpen.querySelectorAll('my-element').length, 0);
|
||||
assert_equals(hostOpen.querySelectorAll('my-element').length, 0);
|
||||
// ShadowRoot isn't an Element, does not have getElementsByTagName().
|
||||
assert_equals(shadowOpen.querySelectorAll('my-element').length, 1);
|
||||
assert_equals(shadowOpen.querySelectorAll('my-element')[0].getAttribute('label'), 'shadow-open-my-element');
|
||||
|
||||
assert_array_equals(hostClosed.querySelectorAll('my-element').length, 0);
|
||||
assert_equals(hostClosed.querySelectorAll('my-element').length, 0);
|
||||
assert_equals(shadowClosed.querySelectorAll('my-element').length, 1);
|
||||
assert_equals(shadowClosed.querySelectorAll('my-element')[0].getAttribute('label'), 'shadow-closed-my-element');
|
||||
}, 'getElementsByTagName() should not leak nodes in shadow tree');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue